diff options
author | Thomas Markwalder <tmark@isc.org> | 2017-12-19 06:25:12 -0500 |
---|---|---|
committer | Thomas Markwalder <tmark@isc.org> | 2017-12-19 06:25:12 -0500 |
commit | 700e3fca88a581091e2ea254b9f93bf5f87e1a42 (patch) | |
tree | 2991504d15c10a0e0d8541c6cbfb559444c29180 /server | |
parent | bafa7b74c4b136f913d4d7b4d1a192bfd6ceb3ed (diff) | |
download | isc-dhcp-700e3fca88a581091e2ea254b9f93bf5f87e1a42.tar.gz |
[master] Moved delayed-ack fully to runtime
Merges in 42446fd.
Diffstat (limited to 'server')
-rw-r--r-- | server/dhcp.c | 8 | ||||
-rw-r--r-- | server/dhcpd.c | 11 | ||||
-rw-r--r-- | server/dhcpd.conf.5 | 4 | ||||
-rw-r--r-- | server/stables.c | 2 |
4 files changed, 18 insertions, 7 deletions
diff --git a/server/dhcp.c b/server/dhcp.c index 3396ebad..f16d001d 100644 --- a/server/dhcp.c +++ b/server/dhcp.c @@ -2149,7 +2149,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) struct in_addr from; TIME remaining_time; struct iaddr cip; -#if defined(DELAYED_ACK) && !defined(DHCP4o6) +#if defined(DELAYED_ACK) /* By default we don't do the enqueue */ isc_boolean_t enqueue = ISC_FALSE; #endif @@ -3163,7 +3163,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) commit = 0; } -#if !defined(DELAYED_ACK) || defined(DHCP4o6) +#if !defined(DELAYED_ACK) /* Install the new information on 'lt' onto the lease at * 'lease'. If this is a DHCPOFFER, it is a 'soft' promise, * if it is a DHCPACK, it is a 'hard' binding, so it needs @@ -3175,7 +3175,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) if ((use_old_lease == 0) && !supersede_lease(lease, lt, commit, offer == DHCPACK, offer == DHCPACK, 0)) { -#else /* defined(DELAYED_ACK) && !defined(DHCP4o6) */ +#else /* defined(DELAYED_ACK) */ /* * If there already isn't a need for a lease commit, and we * can just answer right away, set a flag to indicate this. @@ -3573,7 +3573,7 @@ void ack_lease (packet, lease, offer, when, msg, ms_nulltp, hp) ++outstanding_pings; } else { lease->cltt = cur_time; -#if defined(DELAYED_ACK) && !defined(DHCP4o6) +#if defined(DELAYED_ACK) if (enqueue && max_outstanding_acks != 0) delayed_ack_enqueue(lease); else diff --git a/server/dhcpd.c b/server/dhcpd.c index c5b9d092..68e74b54 100644 --- a/server/dhcpd.c +++ b/server/dhcpd.c @@ -1335,6 +1335,17 @@ void postconf_initialization (int quiet) } data_string_forget(&db, MDL); } +#if defined(DHCP4o6) + /* Delayed acks and DHCPv4-over-DHCPv6 are incompatible */ + if (dhcpv4_over_dhcpv6) { + if (max_outstanding_acks > 0) { + log_debug("DHCP4o6 enabled, " + "setting delayed-ack to zero (incompatible)"); + } + + max_outstanding_acks = 0; + } +#endif oc = lookup_option(&server_universe, options, SV_MAX_ACK_DELAY); if (oc && diff --git a/server/dhcpd.conf.5 b/server/dhcpd.conf.5 index 7244fa7c..cfedf63e 100644 --- a/server/dhcpd.conf.5 +++ b/server/dhcpd.conf.5 @@ -2287,8 +2287,8 @@ a second). The delayed-ack feature is compiled in by default, but can be disabled at compile time with \'./configure --disable-delayed-ack\'. Please note that the delayed-ack feature is not currently compatible with support for -DHPCv4o6 (compiled out by default). You must compile with one or the -other but not both. +DHPCv4-over-DHCPv6 so when a 4to6 port ommand line argument enables this +in the server the delayed-ack value is reset to 0. .RE .PP The diff --git a/server/stables.c b/server/stables.c index e85696e1..cea24bc3 100644 --- a/server/stables.c +++ b/server/stables.c @@ -234,7 +234,7 @@ static struct option server_options[] = { { "limit-addrs-per-ia", "L", &server_universe, 56, 1 }, { "limit-prefs-per-ia", "L", &server_universe, 57, 1 }, /* Assert a configuration parsing error if delayed-ack isn't compiled in. */ -#if defined(DELAYED_ACK) && !defined(DHCP4o6) +#if defined(DELAYED_ACK) { "delayed-ack", "S", &server_universe, 58, 1 }, { "max-ack-delay", "L", &server_universe, 59, 1 }, #endif |