diff options
| author | Roy Marples <roy@marples.name> | 2016-05-19 20:50:15 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2016-05-19 20:50:15 +0000 |
| commit | 95feb3bfd0f56bab61968a29d80ddc2eeb4780a7 (patch) | |
| tree | ce8f7aee7044b42bd20c086b8584fea60d166426 | |
| parent | 197c2bd1dde1edb3519db8f68295c007ec09594f (diff) | |
| download | dhcpcd-95feb3bfd0f56bab61968a29d80ddc2eeb4780a7.tar.xz | |
Fix adding static address masks.
| -rw-r--r-- | dhcp.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -1434,8 +1434,12 @@ get_lease(struct interface *ifp, /* BOOTP does not set yiaddr for replies when ciaddr is set. */ lease->addr.s_addr = bootp->yiaddr ? bootp->yiaddr : bootp->ciaddr; ctx = ifp->ctx; - if (ifp->options->options & DHCPCD_INFORM) { - lease->mask = ifp->options->req_mask; + if (ifp->options->options & (DHCPCD_STATIC | DHCPCD_INFORM)) { + if (ifp->options->req_mask.s_addr == INADDR_ANY) + lease->mask.s_addr = + ipv4_getnetmask(lease->addr.s_addr); + else + lease->mask = ifp->options->req_mask; lease->brd.s_addr = lease->addr.s_addr | ~lease->mask.s_addr; } else { if (get_option_addr(ctx, &lease->mask, bootp, len, |
