This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Linux: Implement opensock using Netlink sockets



On 18/06/2018 11:25, Florian Weimer wrote:
> On 06/18/2018 03:56 PM, Adhemerval Zanella wrote:
>>
>>
>> On 18/06/2018 07:50, Florian Weimer wrote:
>>> inet/tst-inet6_scopeid_pton uses __opensock indirectly, to call ioctl
>>> with SIOCGIFINDEX, and it still works after this change.
>>>
>>> 2018-06-18  Florian Weimer  <fweimer@redhat.com>
>>>
>>>     * sysdeps/unix/sysv/linux/opensock.c (__opensock): Unconditionally
>>>     return a Netlink socket.
>>>     * sysdeps/unix/sysv/linux/s390/opensock.c: Remove file.
>>
>> Similar to a previous attempt to use AF_NETLINK sockets as default [1],
>> I am seeing some regression on testcases with Linux 4.4.0-116-generic:
>>
>> FAIL: inet/bug-if1
>> FAIL: inet/test_ifindex
>> FAIL: inet/tst-inet6_scopeid_pton
>>
>> $ ./testrun.sh inet/bug-if1
>> errno = 95 (Operation not supported), expected 6 (No such device or address)
>>
>> $ strace -f ./testrun.sh inet/bug-if1 --direct
>> [...]
>> socket(AF_NETLINK, SOCK_DGRAM|SOCK_CLOEXEC, NETLINK_ROUTE) = 3
>> ioctl(3, SIOCGIFNAME, {ifr_index=0})    = -1 EOPNOTSUPP (Operation not supported)
>> [...]
> 
> Huh.  Any idea why this happens?  I don't see how this is possible based on the kernel sources.
> 
> Ahh, it's been fixed since then.  Netlink sockets were one of the few which did not perform ENOIOCTLCMD fallback.  This was changed in kernel 4.6:
> 
> commit 025c68186e07afaededa84143f1a22f273cd3f67
> Author: David Decotigny <decot@googlers.com>
> Date:   Mon Mar 21 10:15:35 2016 -0700
> 
>     netlink: add support for NIC driver ioctls
> 
>     By returning -ENOIOCTLCMD, sock_do_ioctl() falls back to calling
>     dev_ioctl(), which provides support for NIC driver ioctls, which
>     includes ethtool support. This is similar to the way ioctls are
>     handled in udp.c or tcp.c.
> 
>     This removes the requirement that ethtool for example be tied to the
>     support of a specific L3 protocol (ethtool uses an AF_INET socket
>     today).
> 
> It's unfortunate that it took that long to make this change.
> 
> Thanks,
> Florian

Indeed, so I think we will need the fallback options (maybe we can restrict
to some options).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]