diff options
author | Nicolas Fort <nicolasfort1988@gmail.com> | 2023-07-13 11:01:34 +0000 |
---|---|---|
committer | Nicolas Fort <nicolasfort1988@gmail.com> | 2023-07-13 11:01:34 +0000 |
commit | 63f75ddbd948852f911239d672021bd5473bb16d (patch) | |
tree | 4dc4dd5f5f19801f743312c4a60a5da70a3bcf4e | |
parent | ac60fe7d1840b8768542ee4b3f28f46544c290f2 (diff) | |
download | vyos-1x-63f75ddbd948852f911239d672021bd5473bb16d.tar.gz vyos-1x-63f75ddbd948852f911239d672021bd5473bb16d.zip |
T5059: relay: add disable options for dhcp-relay and dhcpv6-relay. Also add validor for dhcpv6-relay which was missing.
-rw-r--r-- | interface-definitions/dhcp-relay.xml.in | 1 | ||||
-rw-r--r-- | interface-definitions/dhcpv6-relay.xml.in | 1 | ||||
-rwxr-xr-x | src/conf_mode/dhcp_relay.py | 6 | ||||
-rwxr-xr-x | src/conf_mode/dhcpv6_relay.py | 9 |
4 files changed, 10 insertions, 7 deletions
diff --git a/interface-definitions/dhcp-relay.xml.in b/interface-definitions/dhcp-relay.xml.in index 2a2597dd5..42715c9bb 100644 --- a/interface-definitions/dhcp-relay.xml.in +++ b/interface-definitions/dhcp-relay.xml.in @@ -9,6 +9,7 @@ <priority>910</priority> </properties> <children> + #include <include/generic-disable-node.xml.i> #include <include/generic-interface-multi-broadcast.xml.i> <leafNode name="listen-interface"> <properties> diff --git a/interface-definitions/dhcpv6-relay.xml.in b/interface-definitions/dhcpv6-relay.xml.in index 947adef75..a80317609 100644 --- a/interface-definitions/dhcpv6-relay.xml.in +++ b/interface-definitions/dhcpv6-relay.xml.in @@ -9,6 +9,7 @@ <priority>900</priority> </properties> <children> + #include <include/generic-disable-node.xml.i> <tagNode name="listen-interface"> <properties> <help>Interface for DHCPv6 Relay Agent to listen for requests</help> diff --git a/src/conf_mode/dhcp_relay.py b/src/conf_mode/dhcp_relay.py index 7e702a446..7322cc571 100755 --- a/src/conf_mode/dhcp_relay.py +++ b/src/conf_mode/dhcp_relay.py @@ -51,7 +51,7 @@ def get_config(config=None): def verify(relay): # bail out early - looks like removal from running config - if not relay: + if not relay or 'disable' in relay: return None if 'lo' in (dict_search('interface', relay) or []): @@ -78,7 +78,7 @@ def verify(relay): def generate(relay): # bail out early - looks like removal from running config - if not relay: + if not relay or 'disable' in relay: return None render(config_file, 'dhcp-relay/dhcrelay.conf.j2', relay) @@ -87,7 +87,7 @@ def generate(relay): def apply(relay): # bail out early - looks like removal from running config service_name = 'isc-dhcp-relay.service' - if not relay: + if not relay or 'disable' in relay: call(f'systemctl stop {service_name}') if os.path.exists(config_file): os.unlink(config_file) diff --git a/src/conf_mode/dhcpv6_relay.py b/src/conf_mode/dhcpv6_relay.py index c1bd51f62..9d6597455 100755 --- a/src/conf_mode/dhcpv6_relay.py +++ b/src/conf_mode/dhcpv6_relay.py @@ -22,6 +22,7 @@ from vyos.config import Config from vyos.configdict import dict_merge from vyos.ifconfig import Interface from vyos.template import render +from vyos.template import is_ipv6 from vyos.util import call from vyos.util import dict_search from vyos.validate import is_ipv6_link_local @@ -51,7 +52,7 @@ def get_config(config=None): def verify(relay): # bail out early - looks like removal from running config - if not relay: + if not relay or 'disable' in relay: return None if 'upstream_interface' not in relay: @@ -69,7 +70,7 @@ def verify(relay): for interface in relay['listen_interface']: has_global = False for addr in Interface(interface).get_addr(): - if not is_ipv6_link_local(addr): + if is_ipv6(addr) and not is_ipv6_link_local(addr): has_global = True if not has_global: raise ConfigError(f'Interface {interface} does not have global '\ @@ -79,7 +80,7 @@ def verify(relay): def generate(relay): # bail out early - looks like removal from running config - if not relay: + if not relay or 'disable' in relay: return None render(config_file, 'dhcp-relay/dhcrelay6.conf.j2', relay) @@ -88,7 +89,7 @@ def generate(relay): def apply(relay): # bail out early - looks like removal from running config service_name = 'isc-dhcp-relay6.service' - if not relay: + if not relay or 'disable' in relay: # DHCPv6 relay support is removed in the commit call(f'systemctl stop {service_name}') if os.path.exists(config_file): |