summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViacheslav <v.gletenko@vyos.io>2025-08-23 10:54:04 +0000
committerViacheslav <v.gletenko@vyos.io>2025-08-23 11:02:05 +0000
commit40b50f2aae9c54dae037c0190d60ec850dbf0862 (patch)
tree3a085031d0e5b3461293dbd9f656f1e0335e61d6
parent968409218f914d180b2f9781edf3423ddb8ac738 (diff)
downloadvyos-1x-40b50f2aae9c54dae037c0190d60ec850dbf0862.tar.gz
vyos-1x-40b50f2aae9c54dae037c0190d60ec850dbf0862.zip
T7743: PPPoE-server add option for VPP control plane
Enable PPPoE control-plane integration with VPP, add configurable option: - set service pppoe-server interface eth1 vpp-cp ``` interface=eth1,vpp-cp=true ```
-rw-r--r--data/templates/accel-ppp/pppoe.config.j25
-rw-r--r--interface-definitions/service_pppoe-server.xml.in6
-rwxr-xr-xsmoketest/scripts/cli/test_service_pppoe-server.py14
3 files changed, 23 insertions, 2 deletions
diff --git a/data/templates/accel-ppp/pppoe.config.j2 b/data/templates/accel-ppp/pppoe.config.j2
index 2c4871a6b..8884fb87f 100644
--- a/data/templates/accel-ppp/pppoe.config.j2
+++ b/data/templates/accel-ppp/pppoe.config.j2
@@ -55,14 +55,15 @@ verbose=1
ac-name={{ access_concentrator }}
{% if interface is vyos_defined %}
{% for iface, iface_config in interface.items() %}
+{% set vpp_cp_opt = ',vpp-cp=true' if iface_config.vpp_cp is vyos_defined else '' %}
{% if iface_config.vlan is not vyos_defined %}
-interface={{ iface }}
+interface={{ iface }}{{ vpp_cp_opt }}
{% else %}
{% for vlan in iface_config.vlan %}
interface=re:^{{ iface }}\.{{ vlan | range_to_regex }}$
{% endfor %}
{% if iface_config.combined is vyos_defined %}
-interface={{ iface }}
+interface={{ iface }}{{ vpp_cp_opt }}
{% endif %}
{% if iface_config.vlan_mon is vyos_defined %}
vlan-mon={{ iface }},{{ iface_config.vlan | join(',') }}
diff --git a/interface-definitions/service_pppoe-server.xml.in b/interface-definitions/service_pppoe-server.xml.in
index 81a4a95e3..955c774e2 100644
--- a/interface-definitions/service_pppoe-server.xml.in
+++ b/interface-definitions/service_pppoe-server.xml.in
@@ -71,6 +71,12 @@
</leafNode>
#include <include/accel-ppp/vlan.xml.i>
#include <include/accel-ppp/vlan-mon.xml.i>
+ <leafNode name="vpp-cp">
+ <properties>
+ <help>Enable PPPoE control-plane integration with VPP</help>
+ <valueless/>
+ </properties>
+ </leafNode>
</children>
</tagNode>
<leafNode name="service-name">
diff --git a/smoketest/scripts/cli/test_service_pppoe-server.py b/smoketest/scripts/cli/test_service_pppoe-server.py
index 7a43acfca..609fb7aaa 100755
--- a/smoketest/scripts/cli/test_service_pppoe-server.py
+++ b/smoketest/scripts/cli/test_service_pppoe-server.py
@@ -211,6 +211,20 @@ class TestServicePPPoEServer(BasicAccelPPPTest.TestCase):
self.assertIn('accept-any-service=1', config)
self.assertIn('accept-blank-service=1', config)
+ def test_accel_vpp_cp(self):
+ interface_vpp = f'{interface},vpp-cp=true'
+
+ self.basic_config()
+ self.set(['interface', interface, 'vpp-cp'])
+ self.cli_commit()
+
+ # Validate configuration values
+ conf = ConfigParser(allow_no_value=True, delimiters='=')
+ conf.read(self._config_file)
+
+ # Validate configuration
+ self.assertEqual(conf['pppoe']['interface'], interface_vpp)
+
if __name__ == '__main__':
unittest.main(verbosity=2)