DHCPv6 on Linux with 4.3.0

Peter Rathlev peter at rathlev.dk
Tue Mar 18 08:01:17 UTC 2014

On Tue, 2014-03-18 at 07:46 +0100, Carsten Strotmann wrote:
> > The executable should only enter that part of the code if SO_REUSEPORT
> > is defined. Are you sure you compiled the binary on the kernel 3.9
> > machine that you're executing it on?
> Yes. I've seen the error on Gentoo and CentOS 6.x. Both times the
> software was compiled on the very same machine. Maybe "SO_REUSEPORT" is
> defined somewhere when it shouldn't.

It seems SO_REUSEPORT is defined in 2.6.32-431 but not in 2.6.32-358:

$ locate socket.h | xargs fgrep "SO_REUSEPORT"
/usr/include/asm-generic/socket.h:#define SO_REUSEPORT	15
/usr/src/kernels/2.6.32-358.18.1.el6.x86_64/include/asm-generic/socket.h:/* To add :#define SO_REUSEPORT 15 */
/usr/src/kernels/2.6.32-358.23.2.el6.x86_64/include/asm-generic/socket.h:/* To add :#define SO_REUSEPORT 15 */
/usr/src/kernels/2.6.32-431. SO_REUSEPORT	15
/usr/src/kernels/2.6.32-431.3.1.el6.x86_64/include/asm-generic/socket.h:#define SO_REUSEPORT	15
/usr/src/kernels/2.6.32-431.5.1.el6.x86_64/include/asm-generic/socket.h:#define SO_REUSEPORT	15

Maybe the implementation isn't complete yet. You could possibly as a
work-around just uncomment the whole section in ./common/socket.c.

> I see that other software that uses "SO_REUSEPORT" uses a
> "probe-at-runtime" approach (example: Unbound DNS Server): if it works,
> use it, if not, keep going without it.

Probably not a bad idea, though the code in socket.c doesn't look like
something easy to hack. :-)


More information about the dhcp-users mailing list