summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2026-03-02 11:42:17 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2026-03-02 19:27:55 +0200
commit99f617c88e57453315ee97cba88d3de1a24a5f01 (patch)
tree9101e996fd134a83cb2708e104bcdd7a85caa197
parentc5c5021aed8ac1baaaf0896193e1c89f125c2103 (diff)
downloadvyos-1x-99f617c88e57453315ee97cba88d3de1a24a5f01.tar.gz
vyos-1x-99f617c88e57453315ee97cba88d3de1a24a5f01.zip
vpp: T8327: Remove support for GRE "point-to-multipoint" mode
Disabled "point-to-multipoint" mode for GRE interfaces, along with related "mode" node. This mode relies on the 'teib' feature, which is not implemented yet.
-rw-r--r--interface-definitions/vpp_interface_gre.xml.in4
-rw-r--r--python/vyos/ifconfig/vpp/gre.py4
-rw-r--r--smoketest/configs/assert/vpp23
-rw-r--r--src/conf_mode/vpp_interfaces_gre.py47
-rw-r--r--src/migration-scripts/vpp/5-to-68
5 files changed, 47 insertions, 39 deletions
diff --git a/interface-definitions/vpp_interface_gre.xml.in b/interface-definitions/vpp_interface_gre.xml.in
index 7b145ffdc..7636c6e2f 100644
--- a/interface-definitions/vpp_interface_gre.xml.in
+++ b/interface-definitions/vpp_interface_gre.xml.in
@@ -20,6 +20,8 @@
<children>
#include <include/generic-description.xml.i>
#include <include/interface/disable.xml.i>
+ <!-- Disable as point-to-multipoint mode does not work without 'teib' feature that is not implemented yet -->
+ <!-- <leafNode name="mode">
<leafNode name="mode">
<properties>
<help>GRE tunnel mode</help>
@@ -40,7 +42,7 @@
<constraintErrorMessage>Invalid mode, must be one of: point-to-point or point-to-multipoint</constraintErrorMessage>
</properties>
<defaultValue>point-to-point</defaultValue>
- </leafNode>
+ </leafNode> -->
<leafNode name="tunnel-type">
<properties>
<help>GRE tunnel type</help>
diff --git a/python/vyos/ifconfig/vpp/gre.py b/python/vyos/ifconfig/vpp/gre.py
index e281574a2..7ab600998 100644
--- a/python/vyos/ifconfig/vpp/gre.py
+++ b/python/vyos/ifconfig/vpp/gre.py
@@ -34,7 +34,7 @@ class VPPGREInterface(Interface, VPPInterface):
MODE_MAP = {
'point-to-point': 0,
- 'point-to-multipoint': 1,
+ # 'point-to-multipoint': 1,
}
def __init__(self, ifname, config):
@@ -51,7 +51,7 @@ class VPPGREInterface(Interface, VPPInterface):
self.src_address = config.get('source_address')
self.dst_address = config.get('remote')
self.tunnel_type = self.TUNNEL_TYPE_MAP.get(config.get('tunnel_type'), 0)
- self.mode = self.MODE_MAP.get(config.get('mode'), 0)
+ self.mode = self.MODE_MAP['point-to-point']
def _create(self):
pass
diff --git a/smoketest/configs/assert/vpp b/smoketest/configs/assert/vpp
index 152ffd111..1e89dc324 100644
--- a/smoketest/configs/assert/vpp
+++ b/smoketest/configs/assert/vpp
@@ -22,18 +22,17 @@ set system syslog local facility local7 level 'debug'
set interfaces vpp bonding vppbond0 hash-policy 'layer2+3'
set interfaces vpp bonding vppbond0 member interface 'eth4'
set interfaces vpp bonding vppbond0 mode '802.3ad'
-set vpp interfaces gre gre10 description 'Layer-3'
-set vpp interfaces gre gre10 mode 'point-to-point'
-set vpp interfaces gre gre10 remote '192.0.2.2'
-set vpp interfaces gre gre10 source-address '192.0.2.1'
-set vpp interfaces gre gre10 tunnel-type 'l3'
-set vpp interfaces gre gre11 description 'L2-bridge-to-eth2'
-set vpp interfaces gre gre11 remote '192.0.2.123'
-set vpp interfaces gre gre11 source-address '192.0.2.1'
-set vpp interfaces gre gre11 tunnel-type 'teb'
-set vpp interfaces ipip ipip20 remote '192.0.2.2'
-set vpp interfaces ipip ipip20 source-address '192.0.2.1'
-set vpp interfaces loopback lo12 description 'Loop12'
+set interfaces vpp gre vppgre10 description 'Layer-3'
+set interfaces vpp gre vppgre10 remote '192.0.2.2'
+set interfaces vpp gre vppgre10 source-address '192.0.2.1'
+set interfaces vpp gre vppgre10 tunnel-type 'l3'
+set interfaces vpp gre vppgre11 description 'L2-bridge-to-eth2'
+set interfaces vpp gre vppgre11 remote '192.0.2.123'
+set interfaces vpp gre vppgre11 source-address '192.0.2.1'
+set interfaces vpp gre vppgre11 tunnel-type 'teb'
+set interfaces vpp ipip vppipip20 remote '192.0.2.2'
+set interfaces vpp ipip vppipip20 source-address '192.0.2.1'
+set interfaces vpp loopback vpplo12 description 'Loop12'
set interfaces vpp vxlan vppvxlan10 remote '192.0.2.2'
set interfaces vpp vxlan vppvxlan10 source-address '192.0.2.1'
set interfaces vpp vxlan vppvxlan10 vni '10'
diff --git a/src/conf_mode/vpp_interfaces_gre.py b/src/conf_mode/vpp_interfaces_gre.py
index de3ab2d39..453845bcf 100644
--- a/src/conf_mode/vpp_interfaces_gre.py
+++ b/src/conf_mode/vpp_interfaces_gre.py
@@ -106,11 +106,11 @@ def verify(config):
if not is_systemd_service_active('vpp.service'):
raise ConfigError(
- 'Cannot configure VPP bonding interface: vpp.service is not running'
+ 'Cannot configure VPP GRE interface: vpp.service is not running'
)
# source-address and remote are mandatory options
- required_keys = {'source_address', 'remote', 'mode', 'tunnel_type'}
+ required_keys = {'source_address', 'remote', 'tunnel_type'}
if not all(key in config for key in required_keys):
missing_keys = required_keys - set(config.keys())
raise ConfigError(
@@ -122,27 +122,28 @@ def verify(config):
if config.get('source_address') == config.get('remote'):
raise ConfigError('Remote address must not be the same as source address')
- # check multipoint mode
- if config.get('mode') == 'point-to-multipoint':
- # For multipoint mode, remote IP must be 0.0.0.0
- if config.get('remote') != '0.0.0.0':
- raise ConfigError('For point-to-multipoint mode, remote must be 0.0.0.0')
-
- # Only one multipoint GRE tunnel is allowed from the same source address
- # set interfaces vpp gre vppgre0 mode 'point-to-multipoint'
- # set interfaces vpp gre vppgre0 remote '0.0.0.0'
- # set interfaces vpp gre vppgre0 source-address '192.0.2.1'
- # set interfaces vpp gre vppgre1 mode 'point-to-multipoint'
- # set interfaces vpp gre vppgre1 remote '0.0.0.0'
- # set interfaces vpp gre vppgre1 source-address '192.0.2.1'
- for other_iface, other_iface_config in config['gre_interfaces'].items():
- if other_iface == config['ifname']:
- continue
- if other_iface_config['mode'] == 'point-to-multipoint':
- if config['source_address'] == other_iface_config.get('source_address'):
- raise ConfigError(
- 'Only one multipoint GRE tunnel is allowed from the same source address'
- )
+ # Disable checks as point-to-multipoint mode does not work without 'teib' feature that is not implemented yet
+ # # check multipoint mode
+ # if config.get('mode') == 'point-to-multipoint':
+ # # For multipoint mode, remote IP must be 0.0.0.0
+ # if config.get('remote') != '0.0.0.0':
+ # raise ConfigError('For point-to-multipoint mode, remote must be 0.0.0.0')
+ #
+ # # Only one multipoint GRE tunnel is allowed from the same source address
+ # # set interfaces vpp gre vppgre0 mode 'point-to-multipoint'
+ # # set interfaces vpp gre vppgre0 remote '0.0.0.0'
+ # # set interfaces vpp gre vppgre0 source-address '192.0.2.1'
+ # # set interfaces vpp gre vppgre1 mode 'point-to-multipoint'
+ # # set interfaces vpp gre vppgre1 remote '0.0.0.0'
+ # # set interfaces vpp gre vppgre1 source-address '192.0.2.1'
+ # for other_iface, other_iface_config in config['gre_interfaces'].items():
+ # if other_iface == config['ifname']:
+ # continue
+ # if other_iface_config['mode'] == 'point-to-multipoint':
+ # if config['source_address'] == other_iface_config.get('source_address'):
+ # raise ConfigError(
+ # 'Only one multipoint GRE tunnel is allowed from the same source address'
+ # )
def generate(config):
diff --git a/src/migration-scripts/vpp/5-to-6 b/src/migration-scripts/vpp/5-to-6
index ed043de03..03c20d970 100644
--- a/src/migration-scripts/vpp/5-to-6
+++ b/src/migration-scripts/vpp/5-to-6
@@ -45,7 +45,7 @@
#
# Migrate loopback interface from vpp section to 'interfaces vpp loopback' (T8324)
#
-# Migrate gre interface to 'interfaces vpp gre' (T8325)
+# Migrate gre interface to 'interfaces vpp gre', remove interfaces with mode "point-to-multipoint" (T8325)
#
from vyos.configtree import ConfigTree
@@ -476,6 +476,12 @@ def _migrate_vpp_gre_interface(config: ConfigTree) -> None:
config.set(new_base)
for ifname in config.list_nodes(base):
+ if config.exists(base + [ifname, 'mode']):
+ if config.return_value(base + [ifname, 'mode']) == 'point-to-multipoint':
+ config.delete(base + [ifname])
+ continue
+ config.delete(base + [ifname, 'mode'])
+
_migrate_interface(config, 'gre', ifname)
_migrate_members_bridge(config, ifname)