The Samba-Bugzilla – Bug 7580
smbd fails to start with more then 256 interfaces
Last modified: 2011-05-14 09:23:53 UTC
if more then 256 ip addresses are assigned to interfaces on the system smbd will fail to start on linux 2.6. The reason for that is that buff array in _get_interfaces (interfaces.c) is only 8192 bytes. Each ip address description occupies 32 bytes, so SIOCGIFCONF will return information on first 256 interfaces. smbd won't find the address it was asked to bind to and return with "can't determine netmask".
Our own fix just bumps up array size 8 times, but there might be smarter solution (call SIOCGIFCONF with buffer size 8126, if it fills up, ask again with double size, repeat).
Are you really using Samba 3.5 with a modern glibc? The way I understand the code is that we are using the getifaddrs() function if available. That function does not have any size restrictions. If that is not available, yes, we have that problem. My problem now however is that I don't know the error message the ioctl(..,SIOCGIFCONF,..) gives when the buffer was too small. Can you send us an strace of such a failure?
No feedback for half a year