summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorThomas Markwalder <tmark@isc.org>2017-12-19 06:25:12 -0500
committerThomas Markwalder <tmark@isc.org>2017-12-19 06:25:12 -0500
commit700e3fca88a581091e2ea254b9f93bf5f87e1a42 (patch)
tree2991504d15c10a0e0d8541c6cbfb559444c29180 /server
parentbafa7b74c4b136f913d4d7b4d1a192bfd6ceb3ed (diff)
downloadisc-dhcp-700e3fca88a581091e2ea254b9f93bf5f87e1a42.tar.gz
[master] Moved delayed-ack fully to runtime
Merges in 42446fd.
Diffstat (limited to 'server')
-rw-r--r--server/dhcp.c8
-rw-r--r--server/dhcpd.c11
-rw-r--r--server/dhcpd.conf.54
-rw-r--r--server/stables.c2
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