summaryrefslogtreecommitdiff
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
parentbafa7b74c4b136f913d4d7b4d1a192bfd6ceb3ed (diff)
downloadisc-dhcp-700e3fca88a581091e2ea254b9f93bf5f87e1a42.tar.gz
[master] Moved delayed-ack fully to runtime
Merges in 42446fd.
-rw-r--r--RELNOTES5
-rwxr-xr-xconfigure4
-rw-r--r--configure.ac4
-rw-r--r--configure.ac+lt6
-rw-r--r--configure.ac-base6
-rw-r--r--configure.ac-lt6
-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
10 files changed, 24 insertions, 32 deletions
diff --git a/RELNOTES b/RELNOTES
index 22ac72b0..f0b04ca3 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -276,8 +276,9 @@ dhcp-users@lists.isc.org.
default value for delayed-ack, however, has been changed from 28 to 0
(i.e. disabled). This was done to minimize the impact on users not
currently using the feature. 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.
+ is not currently compatible with support for DHPCv4-over-DHCPv6 so
+ when a 4to6 port command line argument enables this in the server the
+ delayed-ack value is reset to 0.
[ISC-Bugs #42446]
- Corrected some minor coverity issues: CID 1426059, 1426058, and 1426057.
diff --git a/configure b/configure
index 618fb9ef..5d12223e 100755
--- a/configure
+++ b/configure
@@ -5479,10 +5479,6 @@ if test "$enable_dhcpv4o6" = "yes"; then
if test "$enable_dhcpv6" = "no"; then
as_fn_error $? "dhcpv4o6 requires dhcpv6" "$LINENO" 5
fi
- # DHCPv4o6 is not yet compatible with delayed-ack
- if test "$enable_delayed_ack" = "yes"; then
- as_fn_error $? "dhcpv4o6 is not compatible with delayed-ack" "$LINENO" 5
- fi
$as_echo "#define DHCP4o6 1" >>confdefs.h
diff --git a/configure.ac b/configure.ac
index 58af400e..52e7bb4e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -170,10 +170,6 @@ if test "$enable_dhcpv4o6" = "yes"; then
if test "$enable_dhcpv6" = "no"; then
AC_MSG_ERROR([dhcpv4o6 requires dhcpv6])
fi
- # DHCPv4o6 is not yet compatible with delayed-ack
- if test "$enable_delayed_ack" = "yes"; then
- AC_MSG_ERROR([dhcpv4o6 is not compatible with delayed-ack])
- fi
AC_DEFINE([DHCP4o6], [1],
[Define to 1 to include DHCPv4 over DHCPv6 support.])
else
diff --git a/configure.ac+lt b/configure.ac+lt
index 448b893a..6fa7edba 100644
--- a/configure.ac+lt
+++ b/configure.ac+lt
@@ -1,4 +1,4 @@
-AC_INIT([DHCP],[4.4.0-dev],[dhcp-users@isc.org])
+AC_INIT([DHCP],[4.4.0a1],[dhcp-users@isc.org])
# for libtool
AC_CONFIG_MACRO_DIR([m4])
@@ -171,10 +171,6 @@ if test "$enable_dhcpv4o6" = "yes"; then
if test "$enable_dhcpv6" = "no"; then
AC_MSG_ERROR([dhcpv4o6 requires dhcpv6])
fi
- # DHCPv4o6 is not yet compatible with delayed-ack
- if test "$enable_delayed_ack" = "yes"; then
- AC_MSG_ERROR([dhcpv4o6 is not compatible with delayed-ack])
- fi
AC_DEFINE([DHCP4o6], [1],
[Define to 1 to include DHCPv4 over DHCPv6 support.])
else
diff --git a/configure.ac-base b/configure.ac-base
index 03642813..8cf37969 100644
--- a/configure.ac-base
+++ b/configure.ac-base
@@ -1,4 +1,4 @@
-AC_INIT([DHCP],[4.4.0-dev],[dhcp-users@isc.org])
+AC_INIT([DHCP],[4.4.0a1],[dhcp-users@isc.org])
@BEGIN WITH LIBTOOL
# for libtool
@@ -176,10 +176,6 @@ if test "$enable_dhcpv4o6" = "yes"; then
if test "$enable_dhcpv6" = "no"; then
AC_MSG_ERROR([dhcpv4o6 requires dhcpv6])
fi
- # DHCPv4o6 is not yet compatible with delayed-ack
- if test "$enable_delayed_ack" = "yes"; then
- AC_MSG_ERROR([dhcpv4o6 is not compatible with delayed-ack])
- fi
AC_DEFINE([DHCP4o6], [1],
[Define to 1 to include DHCPv4 over DHCPv6 support.])
else
diff --git a/configure.ac-lt b/configure.ac-lt
index 16c255e2..52e7bb4e 100644
--- a/configure.ac-lt
+++ b/configure.ac-lt
@@ -1,4 +1,4 @@
-AC_INIT([DHCP],[4.4.0-dev],[dhcp-users@isc.org])
+AC_INIT([DHCP],[4.4.0a1],[dhcp-users@isc.org])
# we specify "foreign" to avoid having to have the GNU mandated files,
@@ -170,10 +170,6 @@ if test "$enable_dhcpv4o6" = "yes"; then
if test "$enable_dhcpv6" = "no"; then
AC_MSG_ERROR([dhcpv4o6 requires dhcpv6])
fi
- # DHCPv4o6 is not yet compatible with delayed-ack
- if test "$enable_delayed_ack" = "yes"; then
- AC_MSG_ERROR([dhcpv4o6 is not compatible with delayed-ack])
- fi
AC_DEFINE([DHCP4o6], [1],
[Define to 1 to include DHCPv4 over DHCPv6 support.])
else
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