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)