Thread (7 messages) flat view 7 messages, 3 authors, 2012-08-21

Re: binding UDP port 0 with SO_REUSEADDR

From: Jan Engelhardt <hidden>
Date: 2012-08-21 09:09:57

On Thursday 2012-08-02 18:57, Eric Dumazet wrote:
quoted
SO_REUSEADDR
      Indicates  that  the rules used in validating addresses supplied
      in a bind(2) call should allow reuse of  local  addresses.   For
      AF_INET  sockets  this means that a socket may bind, except when
      there is an active listening socket bound to the address.   When
      the listening socket is bound to INADDR_ANY with a specific port
      then it is not possible to bind  to  this  port  for  any  local
      address.  Argument is an integer boolean flag.

I think the surprise-factor of the bind-0-behaviour even increased for
me. Is there a specific reason for handing out used ports when binding
port 0 with REUSEADDR?
There is no concept of listening sockets for UDP.
This documentation applies for TCP, and makes no sense for UDP.
There is no value using 'port 0' and REUSEADDR on UDP, really.
Setting REUSEADDR on one UDP socket currently has the added effect
that bind(2) on another UDP socket for the same tuple will never
complain with -EADDRINUSE.

This behavior - willingly or not - is used in practice by socat(1)'s
udp-listen mode.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help