summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/protocols_ospf.py7
-rwxr-xr-xsrc/conf_mode/vpp.py19
2 files changed, 18 insertions, 8 deletions
diff --git a/src/conf_mode/protocols_ospf.py b/src/conf_mode/protocols_ospf.py
index b73483470..460c9f1a4 100755
--- a/src/conf_mode/protocols_ospf.py
+++ b/src/conf_mode/protocols_ospf.py
@@ -250,6 +250,13 @@ def verify(ospf):
raise ConfigError(f'Segment routing prefix {prefix} cannot have both explicit-null '\
f'and no-php-flag configured at the same time.')
+ # Check route summarisation
+ if 'summary_address' in ospf:
+ for prefix, prefix_options in ospf['summary_address'].items():
+ if {'tag', 'no_advertise'} <= set(prefix_options):
+ raise ConfigError(f'Can not set both "tag" and "no-advertise" for Type-5 '\
+ f'and Type-7 route summarisation of "{prefix}"!')
+
return None
def generate(ospf):
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index 62ec4c162..dc13f4e60 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -21,13 +21,11 @@ from pathlib import Path
from re import search as re_search, MULTILINE as re_M
from vyos.config import Config
+from vyos.configdep import set_dependents, call_dependents
from vyos.configdict import dict_merge
from vyos.configdict import node_changed
from vyos.ifconfig import Section
-from vyos.ifconfig import EthernetIf
-from vyos.ifconfig import interface
-from vyos.util import call
-from vyos.util import rc_cmd
+from vyos.util import call, rc_cmd, boot_configuration_complete
from vyos.template import render
from vyos.xml import defaults
@@ -48,7 +46,6 @@ MIN_TOTAL_MEMORY = 6
def _get_pci_address_by_interface(iface) -> str:
- from vyos.util import rc_cmd
rc, out = rc_cmd(f'ethtool -i {iface}')
# if ethtool command was successful
if rc == 0 and out:
@@ -87,6 +84,9 @@ def get_config(config=None):
'iface_name': removed_iface,
'iface_pci_addr': pci_address
})
+ # add an interface to a list of interfaces that need
+ # to be reinitialized after the commit
+ set_dependents('ethernet', conf, removed_iface)
if not conf.exists(base):
return {'removed_ifaces': removed_ifaces}
@@ -107,6 +107,9 @@ def get_config(config=None):
for iface, iface_config in config['interface'].items():
default_values_iface = defaults(base + ['interface'])
config['interface'][iface] = dict_merge(default_values_iface, config['interface'][iface])
+ # add an interface to a list of interfaces that need
+ # to be reinitialized after the commit
+ set_dependents('ethernet', conf, iface)
# Get PCI address auto
for iface, iface_config in config['interface'].items():
@@ -186,9 +189,9 @@ def apply(config):
if iface not in Section.interfaces():
vpp_control.lcp_pair_add(iface, iface)
- # update interface config
- #e = EthernetIf(iface)
- #e.update(config['other_interfaces'][iface])
+ # reinitialize interfaces, but not during the first boot
+ if boot_configuration_complete():
+ call_dependents()
if __name__ == '__main__':