Comment 0 for bug 1184099

Revision history for this message
ruff (rufferson) wrote :

In ubuntu saucy x86_64 dhclient for IPv6 is broken for lowlatency kernel from raring

Holen: 1 http://mirror.switch.ch/ftp/mirror/ubuntu/ saucy/main isc-dhcp-client amd64 4.2.4-6ubuntu2 [782 kB]
isc-dhcp-client (4.2.4-6ubuntu2) wird eingerichtet ...
# dhclient -6 -d -v --no-pid -lf /var/lib/dhcp/dhclient6.wlan0.leases -cf /etc/dhcp/dhclient.conf wlan0
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Can't set SO_REUSEPORT option on dhcp socket: Protocol not available
unmap(0x7f44fde4e000, 4096) = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP) = 5
setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(5, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0
setsockopt(5, SOL_SOCKET, 0xf /* SO_??? */, [1], 4) = -1 ENOPROTOOPT (Protocol not available)
sendto(3, "<27>May 25 10:58:15 dhclient: Ca"..., 98, MSG_NOSIGNAL, NULL, 0) = 98
write(2, "Can't set SO_REUSEPORT option on"..., 68Can't set SO_REUSEPORT option on dhcp socket: Protocol not available) = 68
write(2, "\n", 1
) = 1
exit_group(1) = ?
version 4.2.4-5ubuntu2 from raring working fine
Per strace otput problem is in ignoring the fact that non-ipv4 sockets could be used and blindly setting SO_REUSEPORT to ipv6 socket. This option is not applied to ipv4 socket though

socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(6, {sa_family=AF_INET, sin_port=htons(68), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
sendto(3, "<30>May 25 11:08:14 dhclient: Se"..., 58, MSG_NOSIGNAL, NULL, 0) = 58

This option is not covered by POSIX
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_10_16
even though introduced to linux kernel in v 3.9 while ll kernel used on the system is still 3.8
Linux box.ruff.mobi 3.8.0-22-lowlatency #15-Ubuntu SMP PREEMPT Sat May 18 20:09:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

Workaround would be to downgrade isc-dhcp or move to kernel 3.9
Not sure if reuseport is so vital to dhclient package - it was working fine without it.