diff options
author | Jouke Witteveen <j.witteveen@gmail.com> | 2013-07-16 11:37:33 +0200 |
---|---|---|
committer | Jouke Witteveen <j.witteveen@gmail.com> | 2013-07-16 11:37:33 +0200 |
commit | bf493403983f75bd458adc9cc86856586bf25ae9 (patch) | |
tree | ca1d1fe4fc98b5ab1f56cd45e3cadd02eb40dbe0 | |
parent | e2ec97c077aba0f45cd09ca3110eae35dc46e07b (diff) | |
download | netctl-bf493403983f75bd458adc9cc86856586bf25ae9.tar.gz netctl-bf493403983f75bd458adc9cc86856586bf25ae9.tar.xz |
Don't release DHCP leases by default (FS#35760)
Regardless of the DHCP client, leases are not released by default.
This introduces a new configuration parameter: DHCPReleaseOnStop, which
can be used to change the default behavior.
-rw-r--r-- | docs/netctl.profile.5.txt | 4 | ||||
-rw-r--r-- | src/lib/ip | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/docs/netctl.profile.5.txt b/docs/netctl.profile.5.txt index a50dbed..fe0073e 100644 --- a/docs/netctl.profile.5.txt +++ b/docs/netctl.profile.5.txt @@ -139,6 +139,10 @@ network. In particular, these connection types are +ethernet+, The name of the preferred DHCP client. Supported options are `dhcpcd' and `dhclient'. Defaults to `dhcpcd'. +'DHCPReleaseOnStop=':: + Set to `++yes++' to release the DHCP lease when the profile is + stopped. + 'DhcpcdOptions=', 'DhclientOptions=', 'DhclientOptions6=':: Additional options to be passed to the DHCP client. Do not use this unless you know what you are doing. @@ -177,17 +177,19 @@ ip_set() { # $IP: type of IPv4 configuration # $IP6: type of IPv6 configuration ip_unset() { + local stop="-x" if [[ $IP == "dhcp" ]]; then case ${DHCPClient:-dhcpcd} in dhcpcd) if [[ -f "/run/dhcpcd-$Interface.pid" ]]; then - do_debug dhcpcd -qk "$Interface" >/dev/null + is_yes "${DHCPReleaseOnStop:-no}" && stop="-k" + do_debug dhcpcd -q $stop "$Interface" >/dev/null fi ;; dhclient) if [[ -f "/run/dhclient-$Interface.pid" ]]; then - # Alternatively, use -r instead of -x to also release the lease - do_debug dhclient -q -x "$Interface" -pf "/run/dhclient-$Interface.pid" >/dev/null + is_yes "${DHCPReleaseOnStop:-no}" && stop="-r" + do_debug dhclient -q $stop "$Interface" -pf "/run/dhclient-$Interface.pid" >/dev/null fi ;; esac |