diff --git a/server/dhcp/actions.py b/server/dhcp/actions.py
index 9ef28f7b1a..76b4de1abc 100644
--- a/server/dhcp/actions.py
+++ b/server/dhcp/actions.py
@@ -41,7 +41,7 @@ def setup():
--with-ldapcrypto")
def build():
- autotools.make()
+ autotools.make("-j1")
def install():
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
diff --git a/server/dhcp/files/0001-dhcp-honor-expired.patch b/server/dhcp/files/0001-dhcp-honor-expired.patch
new file mode 100644
index 0000000000..bd892975be
--- /dev/null
+++ b/server/dhcp/files/0001-dhcp-honor-expired.patch
@@ -0,0 +1,49 @@
+diff -up dhcp-4.3.0a1/client/dhc6.c.honor-expired dhcp-4.3.0a1/client/dhc6.c
+--- dhcp-4.3.0a1/client/dhc6.c.honor-expired 2013-12-19 16:00:28.062183037 +0100
++++ dhcp-4.3.0a1/client/dhc6.c 2013-12-19 16:00:28.076182842 +0100
+@@ -1351,6 +1351,32 @@ start_info_request6(struct client_state
+ go_daemon();
+ }
+
++/* Run through the addresses in lease and return true if there's any unexpired.
++ * Return false otherwise.
++ */
++isc_boolean_t
++unexpired_address_in_lease(struct dhc6_lease *lease)
++{
++ struct dhc6_ia *ia;
++ struct dhc6_addr *addr;
++
++ for (ia = lease->bindings ; ia != NULL ; ia = ia->next) {
++ for (addr = ia->addrs ; addr != NULL ; addr = addr->next) {
++ if (addr->flags & DHC6_ADDR_EXPIRED)
++ continue;
++
++ if (addr->starts + addr->max_life > cur_time) {
++ return ISC_TRUE;
++ }
++ }
++ }
++
++ log_info("PRC: Previous lease is devoid of active addresses."
++ " Re-initializing.");
++
++ return ISC_FALSE;
++}
++
+ /*
+ * start_confirm6() kicks off an "init-reboot" version of the process, at
+ * startup to find out if old bindings are 'fair' and at runtime whenever
+@@ -1363,8 +1389,10 @@ start_confirm6(struct client_state *clie
+
+ /* If there is no active lease, there is nothing to check. */
+ if ((client->active_lease == NULL) ||
+- !active_prefix(client) ||
+- client->active_lease->released) {
++ !active_prefix(client) ||
++ client->active_lease->released ||
++ !unexpired_address_in_lease(client->active_lease)) {
++ dhc6_lease_destroy(&client->active_lease, MDL);
+ start_init6(client);
+ return;
+ }
diff --git a/server/dhcp/pspec.xml b/server/dhcp/pspec.xml
index 1903a45329..30e766e404 100644
--- a/server/dhcp/pspec.xml
+++ b/server/dhcp/pspec.xml
@@ -14,44 +14,14 @@
service
Dynamic host configuration protocol software
DHCP (Dynamic Host Configuration Protocol) is a protocol which allows individual devices on an IP network to get their own network configuration information (IP address, subnetmask, broadcast address, etc.) from a DHCP server.
- http://ftp.isc.org/isc/dhcp/4.3.0/dhcp-4.3.0.tar.gz
+ http://ftp.isc.org/isc/dhcp/4.3.6/dhcp-4.3.6.tar.gz
groff
openldap-client
- bind-devel
+
-
-
-
- dhcp-4.2.0-release-by-ifup.patch
- dhcp-4.2.0-dhclient-decline-backoff.patch
- dhcp-4.2.0-unicast-bootp.patch
-
- dhcp-4.2.0-default-requested-options.patch
-
- dhcp-4.2.0-paths.patch
-
- dhcp-4.2.0-inherit-leases.patch
- dhcp-4.2.0-garbage-chars.patch
-
- dhcp-4.2.0-IFNAMSIZ.patch
- dhcp-4.2.0-add_timeout_when_NULL.patch
-
- dhcp-4.2.0-logpid.patch
- dhcp-4.2.0-sendDecline.patch
- dhcp-4.2.1-retransmission.patch
-
- dhcp-4.2.0-honor-expired.patch
-
-
- dhcp-4.3.0a1-PPP.patch
- dhcp-4.2.0-P2-omapi.patch
-
+ 0001-dhcp-honor-expired.patch
@@ -59,7 +29,7 @@
dhcp
openldap-client
- bind-libs
+
/etc
@@ -89,10 +59,11 @@
dhclient
app:console
+ network.connection
Provides the dhclient ISC DHCP client daemon
- dhcp
- bind-libs
+
+
@@ -126,6 +97,13 @@
+
+ 2017-10-25
+ 4.3.6
+ Version bump,fix #2943
+ Ertuğrul Erata
+ ertugrulerata@gmail.com
+
2017-05-09
4.3.0
@@ -148,4 +126,4 @@
vedat@pisilinux.org
-
\ No newline at end of file
+