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

Reply via email to