diff options
author | 2017-07-22 15:28:56 +0000 | |
---|---|---|
committer | 2017-07-22 15:28:56 +0000 | |
commit | 9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210 (patch) | |
tree | 690600434a634194cb550325379cdd35191335e0 | |
parent | Fix the various SIGSEGV and SIGBUS scenarios to match what we do on (diff) | |
download | wireguard-openbsd-9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210.tar.xz wireguard-openbsd-9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210.zip |
Oops. Missed chunk keeping /32 netmask magic.
-rw-r--r-- | sbin/dhclient/dhclient.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c index 56d2c2539d3..12384d88d6d 100644 --- a/sbin/dhclient/dhclient.c +++ b/sbin/dhclient/dhclient.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dhclient.c,v 1.475 2017/07/22 14:56:27 krw Exp $ */ +/* $OpenBSD: dhclient.c,v 1.476 2017/07/22 15:28:56 krw Exp $ */ /* * Copyright 2004 Henning Brauer <henning@openbsd.org> @@ -959,9 +959,14 @@ bind_lease(struct interface_info *ifi) * we were given a /32 IP assignment, then add a /32 * direct route for the gateway to make it routable. */ - if (mask.s_addr == INADDR_BROADCAST) { - add_direct_route(gateway, mask, + opt = &options[DHO_SUBNET_MASK]; + if (opt->len == sizeof(mask)) { + mask.s_addr = ((struct in_addr *) + opt->data)->s_addr; + if (mask.s_addr == INADDR_BROADCAST) { + add_direct_route(gateway, mask, ifi->active->address); + } } add_default_route(ifi->active->address, gateway); |