diff options
Diffstat (limited to 'server/dhcpd.c')
-rw-r--r-- | server/dhcpd.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/server/dhcpd.c b/server/dhcpd.c index 68e74b54..ea62d1a0 100644 --- a/server/dhcpd.c +++ b/server/dhcpd.c @@ -1150,6 +1150,29 @@ void postconf_initialization (int quiet) data_string_forget(&db, MDL); path_dhcpd_pid = s; } + + oc = lookup_option(&server_universe, options, + SV_LOCAL_ADDRESS6); + if (oc && + evaluate_option_cache(&db, NULL, NULL, NULL, options, NULL, + &global_scope, oc, MDL)) { + if (db.len == 16) { + memcpy(&local_address6, db.data, 16); + } else + log_fatal("invalid local address " + "data length"); + data_string_forget(&db, MDL); + } + + oc = lookup_option(&server_universe, options, + SV_BIND_LOCAL_ADDRESS6); + if (oc && + evaluate_boolean_option_cache(NULL, NULL, NULL, + NULL, options, NULL, + &global_scope, oc, MDL)) { + bind_local_address6 = 1; + } + } #endif /* DHCPv6 */ |