summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-07-14 20:48:05 +0200
committerGitHub <noreply@github.com>2023-07-14 20:48:05 +0200
commit36ce4167538db89c9c3a822de1218faf7397c9bd (patch)
tree0d20a5c1ee7f590e8d98cb5d80abd43fe10da0f8 /src
parent0a248d50560772d84e32fe696b569087bd8586d4 (diff)
parent63f75ddbd948852f911239d672021bd5473bb16d (diff)
downloadvyos-1x-36ce4167538db89c9c3a822de1218faf7397c9bd.tar.gz
vyos-1x-36ce4167538db89c9c3a822de1218faf7397c9bd.zip
Merge pull request #2089 from nicolas-fort/T5059
T5059: relay: add disable options for dhcp-relay and dhcpv6-relay
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/dhcp_relay.py6
-rwxr-xr-xsrc/conf_mode/dhcpv6_relay.py9
2 files changed, 8 insertions, 7 deletions
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):