Some users have recently seen dhcpagent abandon an interface with
the following message:
checkaddr: expected netmask 0.0.0.0 on bge0, have 255.0.0.0
Some digging around revealed the source of the problem: if we go
through canonize_lif() with an IFF_UP address (e.g., server NAK
-> dhcp_restart() -> deprecate_leases -> remove_lease() ->
unplumb_lif() -> canonize_lif()), then when we try to set the
netmask to 0.0.0.0, the kernel will actually set it to 255.0.0.0.
When we next validate that the netmask is 0.0.0.0 and find that
it's 255.0.0.0, we assume something else has changed it and
abandon management of the interface.
Pre-6691647, this wasn't a problem because canonize_lif() always
cleared IFF_UP prior to setting the netmask and thus sidestepped
this issue by accident.