Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Dec 2012 23:52:01 +0800
From:      Kevin Lo <kevlo@FreeBSD.org>
To:        Garrett Cooper <yanegomi@gmail.com>
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:   Re: Broken error handling with AF_* and socket(2) [was Re: svn commit: r243965 - in head/sys: kern sys]
Message-ID:  <50D485A1.8040006@FreeBSD.org>
In-Reply-To: <CAGH67wQhapDDqGjKGgdBwNR7GsJBwTk7Fh7tCuCV4zh7B-Yduw@mail.gmail.com>
References:  <CAGH67wQhapDDqGjKGgdBwNR7GsJBwTk7Fh7tCuCV4zh7B-Yduw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2012/12/21 20:11, Garrett Cooper wrote:
> 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.

Ah, seems I forgot to commit the change. Thanks for the patch, Garrett,
I'll fix it right away.

> Thanks,
> -Garrett

     Kevin



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