Hi,
If the DHCP-server doesn't provide the option DHO_DHCP_SERVER_IDENTIFIER, the
broadcast address is used as fallback (see state_bound).
However, things are different when sending DHCP-release. If the option
DHO_DHCP_SERVER_IDENTIFIER is missing, INADDR_ANY is used resulting in an error
ENETUNREACH.
Suggestion: use broadcast address instead (like the isc does)
Code excerpt:
sbin/dhclient/dhclient.c
void
release_lease(struct interface_info *ifi)
{
...
opt = &ifi->active->options[DHO_DHCP_SERVER_IDENTIFIER];
if (opt->len == sizeof(in_addr_t))
ifi->destination.s_addr = *(in_addr_t *)opt->data;
else
ifi->destination.s_addr = INADDR_ANY; /* INADDR_BROADCAST??? */
Best,
Alex