diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2025-03-03 15:41:27 +0200 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2025-03-12 13:54:38 +0200 |
| commit | 877166b8aef1132f5bad208aee00444819264501 (patch) | |
| tree | c4074aea2889cb1c543095b68b87cf36ca7f0030 /src | |
| parent | 7de0ab73af90d4d39519f3ba0dec80fb6b9badf5 (diff) | |
| download | vyos-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.py | 11 | ||||
| -rw-r--r-- | src/conf_mode/vpp_interfaces_ipip.py | 11 | ||||
| -rw-r--r-- | src/conf_mode/vpp_interfaces_vxlan.py | 11 |
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' |
