summaryrefslogtreecommitdiffstats
path: root/dhcp.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-12-16 13:28:42 +0000
committerRoy Marples <roy@marples.name>2008-12-16 13:28:42 +0000
commit9c30ffcfd671fd822c970d2d5c3d6de7442aa9c1 (patch)
tree9a2247eec27d3e33f986a810ae8a35f671a5b4d5 /dhcp.c
parente346dd7ccc9fff2c6d5e3e187601cb9eac696b21 (diff)
downloaddhcpcd-9c30ffcfd671fd822c970d2d5c3d6de7442aa9c1.tar.xz
Re work the route management so we deal with a changed route table in a renewal/rebind correctly.
Diffstat (limited to 'dhcp.c')
-rw-r--r--dhcp.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/dhcp.c b/dhcp.c
index c8b12a1f..8ea32e4a 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -1292,7 +1292,9 @@ get_lease(struct dhcp_lease *lease, const struct dhcp_message *dhcp)
else
lease->addr.s_addr = dhcp->ciaddr;
if (get_option_addr(&lease->net.s_addr, dhcp, DHO_SUBNETMASK) == -1)
- lease->net.s_addr = get_netmask(dhcp->yiaddr);
+ lease->net.s_addr = get_netmask(lease->addr.s_addr);
+ if (get_option_addr(&lease->brd.s_addr, dhcp, DHO_BROADCAST) == -1)
+ lease->brd.s_addr = lease->addr.s_addr | ~lease->net.s_addr;
if (get_option_uint32(&lease->leasetime, dhcp, DHO_LEASETIME) == 0) {
/* Ensure that we can use the lease */
get_monotonic(&now);