(type == DHCP_INFORM || type == DHCP_RELEASE ||
(type == DHCP_REQUEST &&
state->addr->mask.s_addr == lease->mask.s_addr &&
- (state->new == NULL || IS_DHCP(state->new)))))
+ (state->new == NULL || IS_DHCP(state->new)) &&
+ !(state->added & STATE_FAKE))))
bootp->ciaddr = state->addr->addr.s_addr;
bootp->op = BOOTREQUEST;
if (type == DHCP_DECLINE ||
(type == DHCP_REQUEST &&
(state->addr == NULL ||
+ state->added & STATE_FAKE ||
lease->addr.s_addr != state->addr->addr.s_addr)))
{
PUT_ADDR(DHO_IPADDRESS, &lease->addr);
ifp->name, lease->leasetime - lease->rebindtime);
state->state = DHS_REBIND;
eloop_timeout_delete(ifp->ctx->eloop, send_renew, ifp);
- state->lease.server.s_addr = 0;
+ state->lease.server.s_addr = INADDR_ANY;
state->interval = 0;
ifp->options->options &= ~(DHCPCD_CSR_WARNED |
DHCPCD_ROUTER_HOST_ROUTE_WARNED);
#endif
dhcp_new_xid(ifp);
- state->lease.server.s_addr = 0;
+ state->lease.server.s_addr = INADDR_ANY;
eloop_timeout_delete(ifp->ctx->eloop, NULL, ifp);
#ifdef IPV4LL