binding on IPv6

Alan DeKok aland at deployingradius.com
Fri Jan 11 10:50:01 CET 2008


Stefan Winter wrote:
> A colleague of mine played around with netcat and FR and straced both. There 
> is one difference in the socket() call:
> 
> netcat, IPv4, UDP:
>   socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP) = 3
>   setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0

  Ah.  SO_REUSEADDR  means "allow multiple programs to listen on the
same address"

> The difference being:   socket(..., IPPROTO_UDP <-> IPPROTO_IP) (the 
> setsockopt looks harmless, but not sure).

  I don't think that's it.

> Why that would be a difference is not clear to me. A wild guess is that 
> SOCK_DGRAM+IPPROTO_IP binds to all datagram-based IP payload protocols, which 
> may be more than UDP, and that one of those non-UDP bindings clashes when 
> trying to bind, even to an IPv6 address. Weird.

  If netcat is listening on IP sockets, there are less issues with
conflicts.

  Alan DeKok.



More information about the Freeradius-Devel mailing list