summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-05-14 21:26:25 +0200
committerChristian Poessinger <christian@poessinger.com>2021-05-14 21:39:46 +0200
commit3fc9b2fb79fd3e27a5034804e5243fe2e4ec40c3 (patch)
tree06bbf47d590425224c27594cdc50b5af5628e428
parentcd59f198366ce58a01887e4f900a746d5b10b161 (diff)
downloadvyos-1x-3fc9b2fb79fd3e27a5034804e5243fe2e4ec40c3.tar.gz
vyos-1x-3fc9b2fb79fd3e27a5034804e5243fe2e4ec40c3.zip
conntrack: T3535: check for VRRP group definition
-rw-r--r--interface-definitions/service_conntrack-sync.xml.in2
-rwxr-xr-xsrc/conf_mode/conntrack_sync.py10
2 files changed, 11 insertions, 1 deletions
diff --git a/interface-definitions/service_conntrack-sync.xml.in b/interface-definitions/service_conntrack-sync.xml.in
index 2953ae390..088cd78f6 100644
--- a/interface-definitions/service_conntrack-sync.xml.in
+++ b/interface-definitions/service_conntrack-sync.xml.in
@@ -78,7 +78,7 @@
<children>
<leafNode name="sync-group">
<properties>
- <help>VRRP sync group [REQUIRED]</help>
+ <help>VRRP sync group</help>
<completionHelp>
<path>high-availability vrrp sync-group</path>
</completionHelp>
diff --git a/src/conf_mode/conntrack_sync.py b/src/conf_mode/conntrack_sync.py
index c1c90d1fc..e0a414745 100755
--- a/src/conf_mode/conntrack_sync.py
+++ b/src/conf_mode/conntrack_sync.py
@@ -21,6 +21,7 @@ from vyos.config import Config
from vyos.configdict import dict_merge
from vyos.configverify import verify_interface_exists
from vyos.util import call
+from vyos.util import dict_search
from vyos.util import read_file
from vyos.template import render
from vyos.template import get_ipv4
@@ -51,6 +52,9 @@ def get_config(config=None):
conntrack['hash_size'] = read_file('/sys/module/nf_conntrack/parameters/hashsize')
conntrack['table_size'] = read_file('/proc/sys/net/netfilter/nf_conntrack_max')
+ conntrack['vrrp'] = conf.get_config_dict(['high-availability', 'vrrp', 'sync-group'],
+ get_first_key=True)
+
return conntrack
def verify(conntrack):
@@ -75,6 +79,12 @@ def verify(conntrack):
if not is_addr_assigned(address):
raise ConfigError(f'Specified listen-address {address} not assigned to any interface!')
+ vrrp_group = dict_search('failover_mechanism.vrrp.sync_group', conntrack)
+ if vrrp_group == None:
+ raise ConfigError(f'No VRRP sync-group defined!')
+ if vrrp_group not in conntrack['vrrp']:
+ raise ConfigError(f'VRRP sync-group {vrrp_group} not configured!')
+
return None
def generate(conntrack):