diff options
author | 2013-12-14 05:07:09 +0000 | |
---|---|---|
committer | 2013-12-14 05:07:09 +0000 | |
commit | 45a41b0381f3ef9f967afda2cda9bad9b166ff47 (patch) | |
tree | 2bf949522bda86dde57e960f5bd2a3af8d5c154b | |
parent | Zero out dirent structures that will be copied out to avoid leaking garbage (diff) | |
download | wireguard-openbsd-45a41b0381f3ef9f967afda2cda9bad9b166ff47.tar.xz wireguard-openbsd-45a41b0381f3ef9f967afda2cda9bad9b166ff47.zip |
When cloning leases remember to clone address, next_server and
resolv_conf fields. Makes 'effective' lease written by '-L' a bit
more useful.
-rw-r--r-- | sbin/dhclient/dhclient.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sbin/dhclient/dhclient.c b/sbin/dhclient/dhclient.c index 706c84a672e..17c50bbaecd 100644 --- a/sbin/dhclient/dhclient.c +++ b/sbin/dhclient/dhclient.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dhclient.c,v 1.277 2013/12/10 17:01:27 krw Exp $ */ +/* $OpenBSD: dhclient.c,v 1.278 2013/12/14 05:07:09 krw Exp $ */ /* * Copyright 2004 Henning Brauer <henning@openbsd.org> @@ -2251,6 +2251,8 @@ clone_lease(struct client_lease *oldlease) newlease->rebind = oldlease->rebind; newlease->is_static = oldlease->is_static; newlease->is_bootp = oldlease->is_bootp; + newlease->address = oldlease->address; + newlease->next_server = oldlease->next_server; if (oldlease->server_name) { newlease->server_name = strdup(oldlease->server_name); @@ -2262,6 +2264,11 @@ clone_lease(struct client_lease *oldlease) if (newlease->filename == NULL) goto cleanup; } + if (oldlease->resolv_conf) { + newlease->resolv_conf = strdup(oldlease->resolv_conf); + if (newlease->resolv_conf == NULL) + goto cleanup; + } for (i = 0; i < 256; i++) { newlease->options[i].len = oldlease->options[i].len; |