lease->renewaltime = 0;
if (get_option_uint32(&lease->rebindtime, dhcp, DHO_REBINDTIME) != 0)
lease->rebindtime = 0;
+ if (get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0)
+ lease->server.s_addr = INADDR_ANY;
}
{
lease->frominfo = 0;
lease->addr.s_addr = dhcp->yiaddr;
- lease->server.s_addr = INADDR_ANY;
- if (type != 0)
- get_option_addr(&lease->server,
- dhcp, DHO_SERVERID);
+ if (type == 0 ||
+ get_option_addr(&lease->server, dhcp, DHO_SERVERID) != 0)
+ lease->server.s_addr = INADDR_ANY;
log_dhcp(LOG_INFO, "offered", iface, dhcp);
free(state->offer);
state->offer = dhcp;
}
lease->frominfo = 0;
- lease->addr.s_addr = dhcp->yiaddr;
- lease->server.s_addr = INADDR_ANY;
- if (type != 0)
- get_option_addr(&lease->server, dhcp, DHO_SERVERID);
-
delete_timeout(NULL, iface);
+
/* We now have an offer, so close the DHCP sockets.
* This allows us to safely ARP when broken DHCP servers send an ACK
* follows by an invalid NAK. */