Package: ifupdown
Tags: patch

Attached is a patch providing an option to keep the lease. A new 
optional parameter is created in the /etc/network/interfaces file. The 
default is set so the current behavior is not changed, thus there is no 
impact on existing systems.

Please apply this patch to ifupdown.


--- ifupdown-0.8.35/inet.defn.orig	2019-01-28 14:09:58.000000000 -0600
+++ ifupdown-0.8.35/inet.defn	2019-02-05 16:25:21.742343309 -0600
@@ -92,6 +92,7 @@
     vendor vendor           -- Vendor class identifier (dhcpcd)
     client client           -- Client identifier (dhcpcd)
     hwaddress address       -- Hardware address.
+    dhcprelease int         -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -113,7 +114,9 @@
 
   down
     /sbin/dhclient -4 -v -i -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -4 -v -i -x -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
+        elsif (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     /sbin/pump -i %iface% -r \
         elsif (execable("/sbin/pump"))
     if test -f /run/udhcpc.%iface%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface%.pid); fi \
@@ -278,6 +281,7 @@
     vendor vendor           -- Vendor class identifier (dhcpcd)
     client client           -- Client identifier (dhcpcd, udhcpc)
     hwaddress address       -- Hardware Address.
+    dhcprelease int         -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -298,7 +302,9 @@
 
   down
     /sbin/dhclient -4 -v -i -r -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -4 -v -i -x -pf /run/dhclient.%iface%.pid -lf /var/lib/dhcp/dhclient.%iface%.leases -I -df /var/lib/dhcp/dhclient6.%iface%.leases %iface% \
+        elsif (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     if test -f /run/udhcpc.%iface%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface%.pid); fi \
         elsif (execable("/sbin/udhcpc"))
     /sbin/dhcpcd -k %iface% \
@@ -430,6 +436,7 @@
     vendor vendor           -- Vendor class identifier (dhcpcd)
     client client           -- Client identifier (dhcpcd, udhcpc)
     hwaddress address       -- Hardware Address (Not yet supported)
+    dhcprelease int         -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -449,7 +456,9 @@
 
   down
     /sbin/dhclient -4 -v -i -r -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -4 -v -i -x -pf /run/dhclient.%iface///.%.pid -lf /var/lib/dhcp/dhclient.%iface///.%.leases -I -df /var/lib/dhcp/dhclient6.%iface///.%.leases %iface% \
+        if (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     if test -f /run/udhcpc.%iface///.%.pid; then kill -USR2 $(/bin/cat /run/udhcpc.%iface///.%.pid); kill -TERM $(/bin/cat /run/udhcpc.%iface///.%.pid); fi \
         elsif (execable("/sbin/udhcpc"))
     /sbin/dhcpcd -k %iface% \
--- ifupdown-0.8.35/inet6.defn.orig	2019-01-28 14:14:20.000000000 -0600
+++ ifupdown-0.8.35/inet6.defn	2019-02-05 16:27:44.092401408 -0600
@@ -142,6 +142,7 @@
     request_prefix int     -- Request a prefix through DHCPv6 Prefix Delegation (0=off, 1=on) [0]
     ll-attempts            -- Number of attempts to wait for a link-local address [60]
     ll-interval            -- Link-local address polling interval in seconds [0.1]
+    dhcprelease int        -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -163,7 +164,9 @@
 
   down
     /sbin/dhclient -6 -v -r -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases -I -df /var/lib/dhcp/dhclient.%iface%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -6 -v -x -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases -I -df /var/lib/dhcp/dhclient.%iface%.leases %iface% \
+        elsif (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (1)
 
@@ -319,6 +322,7 @@
 
   options
     hwaddress address      -- Hardware address or "random"
+    dhcprelease int        -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -332,7 +336,9 @@
 
   down
     /sbin/dhclient -6 -r -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases -I -df /var/lib/dhcp/dhclient.%iface%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -6 -x -pf /run/dhclient6.%iface%.pid -lf /var/lib/dhcp/dhclient6.%iface%.leases -I -df /var/lib/dhcp/dhclient.%iface%.leases %iface% \
+        if (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (1)
 
@@ -390,6 +396,7 @@
 
   options
     hwaddress address      -- Hardware address (Not yet supported)
+    dhcprelease int        -- Release address when finished (0=off, 1=on) (dhclient) [1]
 
   conversion
     hwaddress cleanup_hwaddress
@@ -404,7 +411,9 @@
 
   down
     /sbin/dhclient -6 -r -pf /run/dhclient6.%iface///.%.pid -lf /var/lib/dhcp/dhclient6.%iface///.%.leases -I -df /var/lib/dhcp/dhclient.%iface///.%.leases %iface% \
-        if (execable("/sbin/dhclient"))
+        if (var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
+    /sbin/dhclient -6 -x -pf /run/dhclient6.%iface///.%.pid -lf /var/lib/dhcp/dhclient6.%iface///.%.leases -I -df /var/lib/dhcp/dhclient.%iface///.%.leases %iface% \
+        if (!var_true("dhcprelease",ifd) && execable("/sbin/dhclient"))
     echo 'No DHCPv6 client software found!' >&2; false \
         elsif (1)
 

Reply via email to