summaryrefslogtreecommitdiff
path: root/src/conf_mode
diff options
context:
space:
mode:
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-xsrc/conf_mode/service_pppoe-server.py12
-rwxr-xr-xsrc/conf_mode/vpp.py11
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: