diff options
author | Christian Breunig <christian@breunig.cc> | 2024-06-29 17:52:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-29 17:52:35 +0200 |
commit | 869b5cdebe73f5dc0fe2b6d2b718291bfe2fb99f (patch) | |
tree | 1cb26763aba2ed12c9d86db347e1837f08e2543a | |
parent | 551dfa5c47d19b62fbfba5e26e357f93546ff4d8 (diff) | |
parent | e88c3f9e618212f97a61fa82948caf4b431cd6eb (diff) | |
download | vyos-1x-869b5cdebe73f5dc0fe2b6d2b718291bfe2fb99f.tar.gz vyos-1x-869b5cdebe73f5dc0fe2b6d2b718291bfe2fb99f.zip |
Merge pull request #3742 from vyos/mergify/bp/circinus/pr-3733
op-mode: T6524: rewrite "release dhcp(v6) interface" to new op-mode format (backport #3733)
-rw-r--r-- | op-mode-definitions/dhcp.xml.in | 39 | ||||
-rwxr-xr-x | src/op_mode/dhcp.py | 10 |
2 files changed, 49 insertions, 0 deletions
diff --git a/op-mode-definitions/dhcp.xml.in b/op-mode-definitions/dhcp.xml.in index 0b4a05ffe..eee6937d6 100644 --- a/op-mode-definitions/dhcp.xml.in +++ b/op-mode-definitions/dhcp.xml.in @@ -315,4 +315,43 @@ </node> </children> </node> + <node name="release"> + <properties> + <help>Release specified variable</help> + </properties> + <children> + <node name="dhcp"> + <properties> + <help>Release DHCP client lease</help> + </properties> + <children> + <tagNode name="interface"> + <properties> + <help>Release DHCP client lease for specified interface</help> + <completionHelp> + <script>${vyos_completion_dir}/list_interfaces</script> + </completionHelp> + </properties> + <command>sudo ${vyos_op_scripts_dir}/dhcp.py release_client_lease --family inet --interface "$4"</command> + </tagNode> + </children> + </node> + <node name="dhcpv6"> + <properties> + <help>Release DHCPv6 client lease</help> + </properties> + <children> + <tagNode name="interface"> + <properties> + <help>Release DHCPv6 client lease for specified interface</help> + <completionHelp> + <script>${vyos_completion_dir}/list_interfaces</script> + </completionHelp> + </properties> + <command>sudo ${vyos_op_scripts_dir}/dhcp.py release_client_lease --family inet6 --interface "$4"</command> + </tagNode> + </children> + </node> + </children> + </node> </interfaceDefinition> diff --git a/src/op_mode/dhcp.py b/src/op_mode/dhcp.py index f6029c748..6f57f22a5 100755 --- a/src/op_mode/dhcp.py +++ b/src/op_mode/dhcp.py @@ -510,6 +510,16 @@ def renew_client_lease(raw: bool, family: ArgFamily, interface: str): else: call(f'systemctl restart dhclient@{interface}.service') +@_verify_client +def release_client_lease(raw: bool, family: ArgFamily, interface: str): + if not raw: + v = 'v6' if family == 'inet6' else '' + print(f'Release DHCP{v} client on interface {interface}...') + if family == 'inet6': + call(f'systemctl stop dhcp6c@{interface}.service') + else: + call(f'systemctl stop dhclient@{interface}.service') + if __name__ == '__main__': try: res = vyos.opmode.run(sys.modules[__name__]) |