• Jaap Keuter's avatar
    [IPV4]: Calculate default broadcast even when using SIOCSIGNETMASK. · f8f1f469
    Jaap Keuter authored
    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: default avatarJaap Keuter <jaap.keuter@xs4all.nl>
    Signed-off-by: default avatarDavid S. Miller <davem@redhat.com>
    f8f1f469
devinet.c 35.9 KB