summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2025-03-03 15:41:27 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2025-03-12 13:54:38 +0200
commit877166b8aef1132f5bad208aee00444819264501 (patch)
treec4074aea2889cb1c543095b68b87cf36ca7f0030 /src
parent7de0ab73af90d4d39519f3ba0dec80fb6b9badf5 (diff)
downloadvyos-1x-877166b8aef1132f5bad208aee00444819264501.tar.gz
vyos-1x-877166b8aef1132f5bad208aee00444819264501.zip
T7189: VPP source of the tunnel interface should be checked and configured
Changed priority for VPP interfaces: all VPP interfaces must be configured after Ethernet interfaces
Diffstat (limited to 'src')
-rw-r--r--src/conf_mode/vpp_interfaces_gre.py11
-rw-r--r--src/conf_mode/vpp_interfaces_ipip.py11
-rw-r--r--src/conf_mode/vpp_interfaces_vxlan.py11
3 files changed, 30 insertions, 3 deletions
diff --git a/src/conf_mode/vpp_interfaces_gre.py b/src/conf_mode/vpp_interfaces_gre.py
index de7398248..823f3ff4d 100644
--- a/src/conf_mode/vpp_interfaces_gre.py
+++ b/src/conf_mode/vpp_interfaces_gre.py
@@ -32,8 +32,9 @@ from vyos.vpp.config_verify import (
verify_vpp_change_kernel_interface,
verify_vpp_remove_xconnect_interface,
verify_vpp_exists_kernel_interface,
+ verify_vpp_tunnel_source_address,
)
-from vyos.vpp.utils import cli_ifaces_lcp_kernel_list
+from vyos.vpp.utils import cli_ifaces_lcp_kernel_list, cli_ethernet_with_vifs_ifaces
def get_config(config=None) -> dict:
@@ -94,6 +95,9 @@ def get_config(config=None) -> dict:
# list of all kernel interfaces `vpp interface xxx kernel-interface xxx`
config['candidate_kernel_interfaces'] = cli_ifaces_lcp_kernel_list(conf)
+ # list of all Ethernet interfaces with vifs
+ config['vpp_ether_vif_ifaces'] = cli_ethernet_with_vifs_ifaces(conf)
+
# Dependency
config['xconn_members'] = deps_xconnect_dict(conf)
if ifname in config['xconn_members']:
@@ -130,6 +134,11 @@ def verify(config):
f"Required options are missing: {', '.join(missing_keys).replace('_', '-')}"
)
+ # verify source address and remote address
+ verify_vpp_tunnel_source_address(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
diff --git a/src/conf_mode/vpp_interfaces_ipip.py b/src/conf_mode/vpp_interfaces_ipip.py
index 2428a9850..c52e7c997 100644
--- a/src/conf_mode/vpp_interfaces_ipip.py
+++ b/src/conf_mode/vpp_interfaces_ipip.py
@@ -31,8 +31,9 @@ from vyos.vpp.config_verify import (
verify_vpp_change_kernel_interface,
verify_vpp_remove_xconnect_interface,
verify_vpp_exists_kernel_interface,
+ verify_vpp_tunnel_source_address,
)
-from vyos.vpp.utils import cli_ifaces_lcp_kernel_list
+from vyos.vpp.utils import cli_ifaces_lcp_kernel_list, cli_ethernet_with_vifs_ifaces
def get_config(config=None) -> dict:
@@ -93,6 +94,9 @@ def get_config(config=None) -> dict:
# list of all kernel interfaces `vpp interface xxx kernel-interface xxx`
config['candidate_kernel_interfaces'] = cli_ifaces_lcp_kernel_list(conf)
+ # list of all Ethernet interfaces with vifs
+ config['vpp_ether_vif_ifaces'] = cli_ethernet_with_vifs_ifaces(conf)
+
# Dependency
config['xconn_members'] = deps_xconnect_dict(conf)
if ifname in config['xconn_members']:
@@ -130,6 +134,11 @@ def verify(config):
f"Required options are missing: {', '.join(missing_keys).replace('_', '-')}"
)
+ # verify source address and remote address
+ verify_vpp_tunnel_source_address(config)
+ if config.get('source_address') == config.get('remote'):
+ raise ConfigError('Remote address must not be the same as source address')
+
# Change 'vpp interfaces ipip ipipX kernel-interface vpp-tunX'
# => 'vpp interfaces ipip ipipX kernel-interface vpp-tunY'
# check if we have kernel interface config 'vpp kernel-interface vpp-tunX'
diff --git a/src/conf_mode/vpp_interfaces_vxlan.py b/src/conf_mode/vpp_interfaces_vxlan.py
index b94b39d6d..963cd90ec 100644
--- a/src/conf_mode/vpp_interfaces_vxlan.py
+++ b/src/conf_mode/vpp_interfaces_vxlan.py
@@ -33,8 +33,9 @@ from vyos.vpp.config_verify import (
verify_vpp_change_kernel_interface,
verify_vpp_remove_xconnect_interface,
verify_vpp_exists_kernel_interface,
+ verify_vpp_tunnel_source_address,
)
-from vyos.vpp.utils import cli_ifaces_lcp_kernel_list
+from vyos.vpp.utils import cli_ifaces_lcp_kernel_list, cli_ethernet_with_vifs_ifaces
def get_config(config=None) -> dict:
@@ -95,6 +96,9 @@ def get_config(config=None) -> dict:
# list of all kernel interfaces `vpp interface xxx kernel-interface xxx`
config['candidate_kernel_interfaces'] = cli_ifaces_lcp_kernel_list(conf)
+ # list of all Ethernet interfaces with vifs
+ config['vpp_ether_vif_ifaces'] = cli_ethernet_with_vifs_ifaces(conf)
+
# Dependency
config['xconn_members'] = deps_xconnect_dict(conf)
if ifname in config['xconn_members']:
@@ -134,6 +138,11 @@ def verify(config):
f"Required options are missing: {', '.join(missing_keys).replace('_', '-')}"
)
+ # verify source address and remote address
+ verify_vpp_tunnel_source_address(config)
+ if config.get('source_address') == config.get('remote'):
+ raise ConfigError('Remote address must not be the same as source address')
+
# Change 'vpp interfaces vxlan greX kernel-interface vpp-tunX'
# => 'vpp interfaces gre vxlanX kernel-interface vpp-tunY'
# check if we have kernel interface config 'vpp kernel-interface vpp-tunX'