diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/service_pppoe-server.py | 12 | ||||
| -rwxr-xr-x | src/conf_mode/vpp.py | 11 |
2 files changed, 20 insertions, 3 deletions
diff --git a/src/conf_mode/service_pppoe-server.py b/src/conf_mode/service_pppoe-server.py index 3d1fcab98..dbcbbabf2 100755 --- a/src/conf_mode/service_pppoe-server.py +++ b/src/conf_mode/service_pppoe-server.py @@ -23,6 +23,7 @@ from vyos.configdict import get_accel_dict from vyos.configdict import is_node_changed, node_changed from vyos.configdiff import Diff from vyos.configverify import verify_interface_exists +from vyos.configverify import verify_virtual_interface_exists from vyos.template import render from vyos.utils.process import call from vyos.utils.process import is_systemd_service_active @@ -172,7 +173,11 @@ def verify(pppoe): for interface, interface_config in pppoe['interface'].items(): # Interfaces integrated with the control-plane in VPP must exist in the system warning_only = 'vpp_cp' not in interface_config - verify_interface_exists(pppoe, interface, warning_only=warning_only) + if '.' in interface: + verify_interface_func = verify_virtual_interface_exists + else: + verify_interface_func = verify_interface_exists + verify_interface_func(pppoe, interface, warning_only=warning_only) if 'vlan_mon' in interface_config and base_ifname(interface) in pppoe.get( 'vpp_ifaces', {} @@ -206,8 +211,11 @@ def apply(pppoe): vpp_cp_ifaces_delete = pppoe.get('vpp_cp_interfaces', {}).get('delete', []) if 'vpp_ifaces' in pppoe and vpp_cp_ifaces_delete: vpp = VPPControl() + # Make sure that the mapping really exists + mapping = vpp.get_pppoe_interface_mapping() for iface in vpp_cp_ifaces_delete: - vpp.map_pppoe_interface(iface, is_add=False) + if iface in mapping: + vpp.map_pppoe_interface(iface, is_add=False) if 'remove' in pppoe: call(f'systemctl stop {systemd_service}') diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index d39eadac1..e6b739179 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -29,8 +29,11 @@ from vyos import ConfigError from vyos import airbag from vyos.base import Warning from vyos.config import Config, config_dict_merge -from vyos.configdep import set_dependents, call_dependents +from vyos.configdep import set_dependents +from vyos.configdep import call_dependents from vyos.configdict import node_changed +from vyos.configverify import verify_interface_exists +from vyos.configverify import verify_virtual_interface_exists from vyos.ifconfig import Section from vyos.logger import getLogger from vyos.template import render @@ -480,6 +483,7 @@ def get_config(config=None): changed_pppoe_ifaces.extend(added_pppoe_ifaces) if changed_pppoe_ifaces: set_dependents('pppoe_server', conf) + config['changed_pppoe_ifaces'] = changed_pppoe_ifaces return config @@ -610,6 +614,11 @@ def verify(config): verify_routes_count(config['settings']) + for pppoe_iface in config.get('changed_pppoe_ifaces', []): + if '.' in pppoe_iface: + verify_virtual_interface_exists(config, pppoe_iface) + else: + verify_interface_exists(config, pppoe_iface) def generate(config): if not config or 'remove' in config: |
