diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2025-10-07 18:21:06 +0300 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2025-10-14 15:41:37 +0300 |
| commit | 888eec975ff765216e4c65ba15ed9176d7dee7ea (patch) | |
| tree | 650d0f2ed8edd656e00bb8c8c4d583b5c9e90213 /smoketest/scripts/cli/test_vpp.py | |
| parent | fc178aaf00f7a9dc4589567ae3e17cb9718d9ad3 (diff) | |
| download | vyos-1x-888eec975ff765216e4c65ba15ed9176d7dee7ea.tar.gz vyos-1x-888eec975ff765216e4c65ba15ed9176d7dee7ea.zip | |
T7750: VPP: CGNAT commit failure with vpptunX interface
Allow using bond interfaces in CGNAT. Improve interface cleanup to rely
on VPP API queries, as VPP config changes may modify interface indexes
Diffstat (limited to 'smoketest/scripts/cli/test_vpp.py')
| -rwxr-xr-x | smoketest/scripts/cli/test_vpp.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/smoketest/scripts/cli/test_vpp.py b/smoketest/scripts/cli/test_vpp.py index 37485bd0d..5a42538c6 100755 --- a/smoketest/scripts/cli/test_vpp.py +++ b/smoketest/scripts/cli/test_vpp.py @@ -1256,7 +1256,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): config = read_file(VPP_CONF) self.assertIn('interface ipip', config) - def test_15_vpp_cgnat(self): + def test_15_1_vpp_cgnat(self): base_cgnat = base_path + ['nat', 'cgnat'] iface_out = 'eth0' iface_inside = 'eth1' @@ -1295,6 +1295,50 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): self.assertIn(f'tcp transitory timeout: {timeout_tcp_trans}sec', out) self.assertIn(f'icmp timeout: {timeout_icmp}sec', out) + def test_15_2_vpp_cgnat_bond_with_vifs(self): + base_cgnat = base_path + ['nat', 'cgnat'] + base_kernel = base_path + ['kernel-interfaces'] + base_bond = base_path + ['interfaces', 'bonding'] + iface_kernel = 'vpptun0' + iface_bond = 'bond0' + vif_1 = '23' + vif_2 = '24' + iface_out = f'{iface_bond}.{vif_1}' + iface_inside = f'{iface_bond}.{vif_2}' + address_1 = '100.64.0.23/32' + address_2 = '192.0.2.1/32' + + self.cli_set(base_bond + [iface_bond, 'kernel-interface', iface_kernel]) + self.cli_set(base_bond + [iface_bond, 'member', 'interface', interface]) + + self.cli_set(base_kernel + [iface_kernel, 'vif', vif_1, 'address', address_1]) + self.cli_set(base_kernel + [iface_kernel, 'vif', vif_2, 'address', address_2]) + + self.cli_set(base_cgnat + ['interface', 'inside', iface_inside]) + self.cli_set(base_cgnat + ['interface', 'outside', iface_out]) + self.cli_set(base_cgnat + ['rule', '100', 'inside-prefix', address_1]) + self.cli_set(base_cgnat + ['rule', '100', 'outside-prefix', address_2]) + self.cli_commit() + + # Check interfaces + _, out = rc_cmd('sudo vppctl show det44 interfaces') + self.assertIn(f'BondEthernet0.{vif_2} in', out) + self.assertIn(f'BondEthernet0.{vif_1} out', out) + + # Change bonding interface configuration + self.cli_set(base_bond + [iface_bond, 'mode', '802.3ad']) + self.cli_commit() + + # Check interfaces + _, out = rc_cmd('sudo vppctl show det44 interfaces') + self.assertIn(f'BondEthernet0.{vif_2} in', out) + self.assertIn(f'BondEthernet0.{vif_1} out', out) + + # Verify only expected interfaces are shown: + # header + inside + outside = 3 lines total + lines = out.split('\n') + self.assertTrue(len(lines) == 3) + def test_16_vpp_nat(self): base_nat = base_path + ['nat44'] base_nat_settings = base_path + ['settings', 'nat44'] |
