summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2017-07-22 15:28:56 +0000
committerkrw <krw@openbsd.org>2017-07-22 15:28:56 +0000
commit9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210 (patch)
tree690600434a634194cb550325379cdd35191335e0
parentFix the various SIGSEGV and SIGBUS scenarios to match what we do on (diff)
downloadwireguard-openbsd-9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210.tar.xz
wireguard-openbsd-9e8ba445bf6ff0dcc8b7e3f4b400dcd87bdec210.zip
Oops. Missed chunk keeping /32 netmask magic.
-rw-r--r--sbin/dhclient/dhclient.c11
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);