[IPV4]: Calculate default broadcast even when using SIOCSIGNETMASK.
While getting hands-on with netkit (www.netkit.org), a networking simulation environment based on UML, it struck me that ifconfig wasn't capable of calculating the proper broadcast address for a subnetted interface. Some browsing through newsgroups and on the Debian package site (nettools), showed that this leads to misconfigured interfaces and a couple of bugreports on ifconfig. Digging a bit deeper revealed that it actually is an issue with SIOIFNETMASK. Once you bring up an interface with SIOIFADDR, a classfull netmask and broadcast address is set (if applicable for the type of interface), in order to get a properly configured interface. But if you subnet the network using SIOIFNETMASK no proper broadcast address is set. So you always have to calculate it yourself, obviously leading to configuration errors. This patch takes care of this. First of all it doesn't change existing functionality, eg. a command like 'ifconfig eth0 192.168.1.1 netmask 255.255.255.240 broadcast 192.168.1.0' still works. But if you omit the broadcast address, a proper 'all ones' broadcast address for the subnet is set. 'ifconfig eth0 192.168.1.1 netmask 255.255.255.240' gives you 'eth0 inet addr:192.168.1.1 Bcast:192.168.1.15 Mask:255.255.255.240' and this should solve some real life problems. Signed-off-by: Jaap Keuter <jaap.keuter@xs4all.nl> Signed-off-by: David S. Miller <davem@redhat.com>
Showing
Please register or sign in to comment