summaryrefslogtreecommitdiff
path: root/server/dhcpd.c
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2015-04-15 19:32:26 -0700
committerShawn Routhier <sar@isc.org>2015-04-15 19:32:26 -0700
commit90a062fb20c4573922c92daee7a535c6ffa30caa (patch)
tree53c41e125a84a982fa7acd58445364fb9c606a47 /server/dhcpd.c
parente6e72c5101df3e498afd1b8e980adc00b9d5b080 (diff)
downloadisc-dhcp-90a062fb20c4573922c92daee7a535c6ffa30caa.tar.gz
[master] Always write the DUID to the lease file during startup
Diffstat (limited to 'server/dhcpd.c')
-rw-r--r--server/dhcpd.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/server/dhcpd.c b/server/dhcpd.c
index 8b24b641..3d2aa09a 100644
--- a/server/dhcpd.c
+++ b/server/dhcpd.c
@@ -705,19 +705,21 @@ main(int argc, char **argv) {
#ifdef DHCPv6
/*
- * Set server DHCPv6 identifier.
+ * Set server DHCPv6 identifier - we go in order:
+ * dhcp6.server-id in the config file
+ * server-duid from the lease file
+ * server-duid from the config file (the config file is read first
+ * and the lease file overwrites the config file information)
+ * genrate a new one
+ * In all cases we write it out to the lease file.
* See dhcpv6.c for discussion of setting DUID.
*/
- if (set_server_duid_from_option() == ISC_R_SUCCESS) {
- write_server_duid();
- } else {
- if (!server_duid_isset()) {
- if (generate_new_server_duid() != ISC_R_SUCCESS) {
- log_fatal("Unable to set server identifier.");
- }
- write_server_duid();
- }
+ if ((set_server_duid_from_option() != ISC_R_SUCCESS) &&
+ (!server_duid_isset()) &&
+ (generate_new_server_duid() != ISC_R_SUCCESS)) {
+ log_fatal("Unable to set server identifier.");
}
+ write_server_duid();
#endif /* DHCPv6 */
#ifndef DEBUG