From: Roy Marples Date: Thu, 19 Nov 2009 21:53:25 +0000 (+0000) Subject: Re-apply lease info if different - fixes occasional release being broadcast. X-Git-Tag: v5.1.4~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9aca71710cbcdf571d0122be6dcd12b724a1dce2;p=thirdparty%2Fdhcpcd.git Re-apply lease info if different - fixes occasional release being broadcast. Ensure we use a new xid when releasing. --- diff --git a/dhcpcd.c b/dhcpcd.c index 20caf86c..7d052399 100644 --- a/dhcpcd.c +++ b/dhcpcd.c @@ -572,7 +572,12 @@ handle_dhcp(struct interface *iface, struct dhcp_message **dhcpp) state->offer = dhcp; *dhcpp = NULL; } + 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. @@ -710,6 +715,7 @@ send_release(struct interface *iface) syslog(LOG_INFO, "%s: releasing lease of %s", iface->name, inet_ntoa(iface->state->lease.addr)); open_sockets(iface); + iface->state->xid = arc4random(); send_message(iface, DHCP_RELEASE, NULL); drop_config(iface, "RELEASE"); }