Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Dec 2012 04:11:48 -0800
From:      Garrett Cooper <yanegomi@gmail.com>
To:        Kevin Lo <kevlo@freebsd.org>
Cc:        src-committers@freebsd.org, freebsd-net@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org, Rick Macklem <rmacklem@uoguelph.ca>
Subject:   Broken error handling with AF_* and socket(2) [was Re: svn commit: r243965 - in head/sys: kern sys]
Message-ID:  <CAGH67wQhapDDqGjKGgdBwNR7GsJBwTk7Fh7tCuCV4zh7B-Yduw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--e89a8ff2535c7d472104d15bc0b0
Content-Type: text/plain; charset=ISO-8859-1

On Thu, Dec 6, 2012 at 6:22 PM, Kevin Lo <kevlo@freebsd.org> wrote:
> Author: kevlo
> Date: Fri Dec  7 02:22:48 2012
> New Revision: 243965
> URL: http://svnweb.freebsd.org/changeset/base/243965
>
> Log:
>   - according to POSIX, make socket(2) return EAFNOSUPPORT rather than
>     EPROTONOSUPPORT if the address family is not supported.
>   - introduce pffinddomain() to find a domain by family and use it as
>     appropriate.
>
>   Reviewed by:  glebius

This commit broke netgraph (and potentially more things). I fixed
netgraph locally like so:

$ git diff lib/libnetgraph/
diff --git a/lib/libnetgraph/sock.c b/lib/libnetgraph/sock.c
index fca3900..5f9f563 100644
--- a/lib/libnetgraph/sock.c
+++ b/lib/libnetgraph/sock.c
@@ -71,10 +71,10 @@ NgMkSockNode(const char *name, int *csp, int *dsp)
                name = NULL;

        /* Create control socket; this also creates the netgraph node.
-          If we get an EPROTONOSUPPORT then the socket node type is
+          If we get an EAFNOSUPPORT then the socket node type is
           not loaded, so load it and try again. */
        if ((cs = socket(AF_NETGRAPH, SOCK_DGRAM, NG_CONTROL)) < 0) {
-               if (errno == EPROTONOSUPPORT) {
+               if (errno == EAFNOSUPPORT) {
                        if (kldload(NG_SOCKET_KLD) < 0) {
                                errnosv = errno;
                                if (_gNgDebugLevel >= 1)

    Reproing the issue was trivial using the ether.bridge example
script setup with appropriate interfaces.
    I have the patch with the netgraph fix attached, along with other
potential fixes that needs to be more properly tested.
Thanks,
-Garrett

--e89a8ff2535c7d472104d15bc0b0
Content-Type: application/octet-stream; 
	name="0001-Fix-socket-calls-on-error-post-r243965.patch"
Content-Disposition: attachment; 
	filename="0001-Fix-socket-calls-on-error-post-r243965.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_haza2zk10

RnJvbSBjYzZmNzRiMmIyMTlkMjgzZjM0NWViMzE5NjY5NDE0NWMzM2EzODVlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHYXJyZXR0IENvb3BlciA8eWFuZWdvbWlAZ21haWwuY29tPgpE
YXRlOiBGcmksIDIxIERlYyAyMDEyIDA0OjEwOjA3IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gRml4
IHNvY2tldCBjYWxscyBvbiBlcnJvciBwb3N0LXIyNDM5NjUKClNpZ25lZC1vZmYtYnk6IEdhcnJl
dHQgQ29vcGVyIDx5YW5lZ29taUBnbWFpbC5jb20+Ci0tLQogYmluL2RhdGUvbmV0ZGF0ZS5jICAg
ICAgIHwgMiArLQogbGliL2xpYm5ldGdyYXBoL3NvY2suYyAgIHwgNCArKy0tCiBzYmluL2hhc3Rk
L3BhcnNlLnkgICAgICAgfCAyICstCiBzYmluL2lmY29uZmlnL2FmX25kNi5jICAgfCAyICstCiBz
YmluL2lmY29uZmlnL2lmY29uZmlnLmMgfCAyICstCiB1c3Iuc2Jpbi9tdGVzdC9tdGVzdC5jICAg
fCA0ICsrLS0KIHVzci5zYmluL25mc2QvbmZzZC5jICAgICB8IDIgKy0KIDcgZmlsZXMgY2hhbmdl
ZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Jpbi9kYXRl
L25ldGRhdGUuYyBiL2Jpbi9kYXRlL25ldGRhdGUuYwppbmRleCBiMDg1YmU0Li5lNTA2ZTZkIDEw
MDY0NAotLS0gYS9iaW4vZGF0ZS9uZXRkYXRlLmMKKysrIGIvYmluL2RhdGUvbmV0ZGF0ZS5jCkBA
IC04NSw3ICs4NSw3IEBAIG5ldHNldHRpbWUodGltZV90IHR2YWwpCiAJZGVzdC5zaW5fYWRkci5z
X2FkZHIgPSBodG9ubCgodV9sb25nKUlOQUREUl9BTlkpOwogCXMgPSBzb2NrZXQoQUZfSU5FVCwg
U09DS19ER1JBTSwgMCk7CiAJaWYgKHMgPCAwKSB7Ci0JCWlmIChlcnJubyAhPSBFUFJPVE9OT1NV
UFBPUlQpCisJCWlmIChlcnJubyAhPSBFQUZOT1NVUFBPUlQpCiAJCQl3YXJuKCJ0aW1lZCIpOwog
CQlyZXR1cm4gKHJldHZhbCA9IDIpOwogCX0KZGlmZiAtLWdpdCBhL2xpYi9saWJuZXRncmFwaC9z
b2NrLmMgYi9saWIvbGlibmV0Z3JhcGgvc29jay5jCmluZGV4IGZjYTM5MDAuLjVmOWY1NjMgMTAw
NjQ0Ci0tLSBhL2xpYi9saWJuZXRncmFwaC9zb2NrLmMKKysrIGIvbGliL2xpYm5ldGdyYXBoL3Nv
Y2suYwpAQCAtNzEsMTAgKzcxLDEwIEBAIE5nTWtTb2NrTm9kZShjb25zdCBjaGFyICpuYW1lLCBp
bnQgKmNzcCwgaW50ICpkc3ApCiAJCW5hbWUgPSBOVUxMOwogCiAJLyogQ3JlYXRlIGNvbnRyb2wg
c29ja2V0OyB0aGlzIGFsc28gY3JlYXRlcyB0aGUgbmV0Z3JhcGggbm9kZS4KLQkgICBJZiB3ZSBn
ZXQgYW4gRVBST1RPTk9TVVBQT1JUIHRoZW4gdGhlIHNvY2tldCBub2RlIHR5cGUgaXMKKwkgICBJ
ZiB3ZSBnZXQgYW4gRUFGTk9TVVBQT1JUIHRoZW4gdGhlIHNvY2tldCBub2RlIHR5cGUgaXMKIAkg
ICBub3QgbG9hZGVkLCBzbyBsb2FkIGl0IGFuZCB0cnkgYWdhaW4uICovCiAJaWYgKChjcyA9IHNv
Y2tldChBRl9ORVRHUkFQSCwgU09DS19ER1JBTSwgTkdfQ09OVFJPTCkpIDwgMCkgewotCQlpZiAo
ZXJybm8gPT0gRVBST1RPTk9TVVBQT1JUKSB7CisJCWlmIChlcnJubyA9PSBFQUZOT1NVUFBPUlQp
IHsKIAkJCWlmIChrbGRsb2FkKE5HX1NPQ0tFVF9LTEQpIDwgMCkgewogCQkJCWVycm5vc3YgPSBl
cnJubzsKIAkJCQlpZiAoX2dOZ0RlYnVnTGV2ZWwgPj0gMSkKZGlmZiAtLWdpdCBhL3NiaW4vaGFz
dGQvcGFyc2UueSBiL3NiaW4vaGFzdGQvcGFyc2UueQppbmRleCBhMjBiNjFhLi4wNGVhN2FiIDEw
MDY0NAotLS0gYS9zYmluL2hhc3RkL3BhcnNlLnkKKysrIGIvc2Jpbi9oYXN0ZC9wYXJzZS55CkBA
IC03NjksNyArNzY5LDcgQEAgZmFtaWx5X3N1cHBvcnRlZChpbnQgZmFtaWx5KQogCWludCBzb2Nr
OwogCiAJc29jayA9IHNvY2tldChmYW1pbHksIFNPQ0tfU1RSRUFNLCAwKTsKLQlpZiAoc29jayA9
PSAtMSAmJiBlcnJubyA9PSBFUFJPVE9OT1NVUFBPUlQpCisJaWYgKHNvY2sgPT0gLTEgJiYgZXJy
bm8gPT0gRUFGTk9TVVBQT1JUKQogCQlyZXR1cm4gKGZhbHNlKTsKIAlpZiAoc29jayA+PSAwKQog
CQkodm9pZCljbG9zZShzb2NrKTsKZGlmZiAtLWdpdCBhL3NiaW4vaWZjb25maWcvYWZfbmQ2LmMg
Yi9zYmluL2lmY29uZmlnL2FmX25kNi5jCmluZGV4IDY1NGUyZDkuLjgwMDY1ZjYgMTAwNjQ0Ci0t
LSBhL3NiaW4vaWZjb25maWcvYWZfbmQ2LmMKKysrIGIvc2Jpbi9pZmNvbmZpZy9hZl9uZDYuYwpA
QCAtMTQ4LDcgKzE0OCw3IEBAIG5kNl9zdGF0dXMoaW50IHMpCiAJbWVtc2V0KCZuZCwgMCwgc2l6
ZW9mKG5kKSk7CiAJc3RybmNweShuZC5pZm5hbWUsIGlmci5pZnJfbmFtZSwgc2l6ZW9mKG5kLmlm
bmFtZSkpOwogCWlmICgoczYgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApKSA8IDAp
IHsKLQkJaWYgKGVycm5vICE9IEVQUk9UT05PU1VQUE9SVCkKKwkJaWYgKGVycm5vICE9IEVBRk5P
U1VQUE9SVCkKIAkJCXdhcm4oInNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSkiKTsKIAkJcmV0
dXJuOwogCX0KZGlmZiAtLWdpdCBhL3NiaW4vaWZjb25maWcvaWZjb25maWcuYyBiL3NiaW4vaWZj
b25maWcvaWZjb25maWcuYwppbmRleCA4NzBhY2RkLi45ODNlMjFmIDEwMDY0NAotLS0gYS9zYmlu
L2lmY29uZmlnL2lmY29uZmlnLmMKKysrIGIvc2Jpbi9pZmNvbmZpZy9pZmNvbmZpZy5jCkBAIC01
MjAsNyArNTIwLDcgQEAgdG9wOgogCQlBRl9MT0NBTCA6IGFmcC0+YWZfYWY7CiAKIAlpZiAoKHMg
PSBzb2NrZXQoaWZyLmlmcl9hZGRyLnNhX2ZhbWlseSwgU09DS19ER1JBTSwgMCkpIDwgMCAmJgot
CSAgICAodWFmcCAhPSBOVUxMIHx8IGVycm5vICE9IEVQUk9UT05PU1VQUE9SVCB8fAorCSAgICAo
dWFmcCAhPSBOVUxMIHx8IGVycm5vICE9IEVBRk5PU1VQUE9SVCB8fAogCSAgICAgKHMgPSBzb2Nr
ZXQoQUZfTE9DQUwsIFNPQ0tfREdSQU0sIDApKSA8IDApKQogCQllcnIoMSwgInNvY2tldChmYW1p
bHkgJXUsU09DS19ER1JBTSIsIGlmci5pZnJfYWRkci5zYV9mYW1pbHkpOwogCmRpZmYgLS1naXQg
YS91c3Iuc2Jpbi9tdGVzdC9tdGVzdC5jIGIvdXNyLnNiaW4vbXRlc3QvbXRlc3QuYwppbmRleCA2
MGY3ZTA5Li5hMjhmYWI3IDEwMDY0NAotLS0gYS91c3Iuc2Jpbi9tdGVzdC9tdGVzdC5jCisrKyBi
L3Vzci5zYmluL210ZXN0L210ZXN0LmMKQEAgLTIwNCwxMiArMjA0LDEyIEBAIG1haW4oaW50IGFy
Z2MsIGNoYXIgKiphcmd2KQogCXM2ID0gLTE7CiAjaWZkZWYgSU5FVAogCXMgPSBzb2NrZXQoQUZf
SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApOwotCWlmIChzID09IC0xICYmIGVycm5vICE9
IEVQUk9UT05PU1VQUE9SVCkKKwlpZiAocyA9PSAtMSAmJiBlcnJubyAhPSBFQUZOT1NVUFBPUlQp
CiAJCWVycigxLCAiY2FuJ3Qgb3BlbiBJUHY0IHNvY2tldCIpOwogI2VuZGlmCiAjaWZkZWYgSU5F
VDYKIAlzNiA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApOwotCWlm
IChzNiA9PSAtMSAmJiBlcnJubyAhPSBFUFJPVE9OT1NVUFBPUlQpCisJaWYgKHM2ID09IC0xICYm
IGVycm5vICE9IEVBRk5PU1VQUE9SVCkKIAkJZXJyKDEsICJjYW4ndCBvcGVuIElQdjYgc29ja2V0
Iik7CiAjZW5kaWYKIAlpZiAocyA9PSAtMSAmJiBzNiA9PSAtMSkKZGlmZiAtLWdpdCBhL3Vzci5z
YmluL25mc2QvbmZzZC5jIGIvdXNyLnNiaW4vbmZzZC9uZnNkLmMKaW5kZXggNmEyZjc4NS4uMmZl
ZjdmNSAxMDA2NDQKLS0tIGEvdXNyLnNiaW4vbmZzZC9uZnNkLmMKKysrIGIvdXNyLnNiaW4vbmZz
ZC9uZnNkLmMKQEAgLTI2NCw3ICsyNjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK
IAlpcDZmbGFnID0gMTsKIAlzID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCBJUFBST1RP
X1VEUCk7CiAJaWYgKHMgPT0gLTEpIHsKLQkJaWYgKGVycm5vICE9IEVQUk9UT05PU1VQUE9SVCkK
KwkJaWYgKGVycm5vICE9IEVBRk5PU1VQUE9SVCkKIAkJCWVycigxLCAic29ja2V0Iik7CiAJCWlw
NmZsYWcgPSAwOwogCX0gZWxzZSBpZiAoZ2V0bmV0Y29uZmlnZW50KCJ1ZHA2IikgPT0gTlVMTCB8
fAotLSAKMS44LjAKCg==
--e89a8ff2535c7d472104d15bc0b0--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGH67wQhapDDqGjKGgdBwNR7GsJBwTk7Fh7tCuCV4zh7B-Yduw>