9

If I bind a socket to INADDR_ANY I know that it will accept incoming connections on any of IPs configured on the server. Lets say I have 1 IP configured when I make the bind() call and then a new IP gets configured. Will be bind() accept connections initiated to the newly configured IP also or does it work only for the IPs that were existing when bind() was called ?

Manohar
  • 3,865
  • 11
  • 41
  • 56
  • You can check with `netstat -l` - it should print 0.0.0.0:n (or :::n for ipv6) for your listening socket on Port n. If you see multiple listening sockets for each IP it might not work. – Stephan B Sep 30 '11 at 08:01

2 Answers2

12

On Linux when you bind to INADDR_ANY then the socket stays bound to 0.0.0.0 and will accept connection to any local IP address no matter how that changes. Only when a TCP connection is established then the single connection is bound to the IP address it was received on. Other connections may still be received on any address.

gaganso
  • 2,914
  • 2
  • 26
  • 43
Jacek Konieczny
  • 8,283
  • 2
  • 23
  • 35
3

Yes it will accept connections on newly created or newly configured interfaces.

You can try it yourself, by creating a dummy interface:

/sbin/ifconfig dummy0 172.17.42.99 netmask 255.255.255.255

Or something; then try to connect to that IP.

MarkR
  • 62,604
  • 14
  • 116
  • 151