82fe58f network: add netmask to dhcp range of dnsmasq conf file for IPv4

Authored and Committed by Laine Stump 5 years ago
    network: add netmask to dhcp range of dnsmasq conf file for IPv4
    
    dnsmasq documentation says that the *IPv4* prefix/network
    address/broadcast address sent to dhcp clients will be automatically
    determined by dnsmasq by looking at the interface it's listening on,
    so the original libvirt code did not add a netmask to the dnsmasq
    commandline (or later, the dnsmasq conf file).
    
    For *IPv6* however, dnsmasq apparently cannot automatically determine
    the prefix (functionally the same as a netmask), and it must be
    explicitly provided in the conf file (as a part of the dhcp-range
    option). So many years after IPv4 DHCP support had been added, when
    IPv6 dhcp support was added the prefix was included at the end of the
    dhcp-range setting, but only for IPv6.
    
    A user had reported a bug on a host where one of the interfaces was a
    superset of the libvirt network where dhcp is needed (e.g., the host's
    ethernet is 10.0.0.20/8, and the libvirt network is 10.10.0.1/24). For
    some reason dnsmasq was supplying the netmask for the /8 network to
    clients requesting an address on the /24 interface.
    
    This seems like a bug in dnsmasq, but even if/when it gets fixed
    there, it looks like there is no harm in just always adding the
    netmask to all IPv4 dhcp-range options similar to how prefix is added
    to all IPv6 dhcp-range options.
    
    Signed-off-by: Laine Stump <laine@laine.org>
    Reviewed-by: John Ferlan <jferlan@redhat.com>
    
        
file modified
+21 -5