Skip to content

Commit 869b5cd

Browse files
authored
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)
2 parents 551dfa5 + e88c3f9 commit 869b5cd

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

op-mode-definitions/dhcp.xml.in

+39
Original file line numberDiff line numberDiff line change
@@ -315,4 +315,43 @@
315315
</node>
316316
</children>
317317
</node>
318+
<node name="release">
319+
<properties>
320+
<help>Release specified variable</help>
321+
</properties>
322+
<children>
323+
<node name="dhcp">
324+
<properties>
325+
<help>Release DHCP client lease</help>
326+
</properties>
327+
<children>
328+
<tagNode name="interface">
329+
<properties>
330+
<help>Release DHCP client lease for specified interface</help>
331+
<completionHelp>
332+
<script>${vyos_completion_dir}/list_interfaces</script>
333+
</completionHelp>
334+
</properties>
335+
<command>sudo ${vyos_op_scripts_dir}/dhcp.py release_client_lease --family inet --interface "$4"</command>
336+
</tagNode>
337+
</children>
338+
</node>
339+
<node name="dhcpv6">
340+
<properties>
341+
<help>Release DHCPv6 client lease</help>
342+
</properties>
343+
<children>
344+
<tagNode name="interface">
345+
<properties>
346+
<help>Release DHCPv6 client lease for specified interface</help>
347+
<completionHelp>
348+
<script>${vyos_completion_dir}/list_interfaces</script>
349+
</completionHelp>
350+
</properties>
351+
<command>sudo ${vyos_op_scripts_dir}/dhcp.py release_client_lease --family inet6 --interface "$4"</command>
352+
</tagNode>
353+
</children>
354+
</node>
355+
</children>
356+
</node>
318357
</interfaceDefinition>

src/op_mode/dhcp.py

+10
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,16 @@ def renew_client_lease(raw: bool, family: ArgFamily, interface: str):
510510
else:
511511
call(f'systemctl restart dhclient@{interface}.service')
512512

513+
@_verify_client
514+
def release_client_lease(raw: bool, family: ArgFamily, interface: str):
515+
if not raw:
516+
v = 'v6' if family == 'inet6' else ''
517+
print(f'Release DHCP{v} client on interface {interface}...')
518+
if family == 'inet6':
519+
call(f'systemctl stop dhcp6c@{interface}.service')
520+
else:
521+
call(f'systemctl stop dhclient@{interface}.service')
522+
513523
if __name__ == '__main__':
514524
try:
515525
res = vyos.opmode.run(sys.modules[__name__])

0 commit comments

Comments
 (0)