summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2025-10-07 18:21:06 +0300
committerNataliia Solomko <natalirs1985@gmail.com>2025-10-14 15:41:37 +0300
commit888eec975ff765216e4c65ba15ed9176d7dee7ea (patch)
tree650d0f2ed8edd656e00bb8c8c4d583b5c9e90213 /python
parentfc178aaf00f7a9dc4589567ae3e17cb9718d9ad3 (diff)
downloadvyos-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 'python')
-rw-r--r--python/vyos/vpp/nat/det44.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/python/vyos/vpp/nat/det44.py b/python/vyos/vpp/nat/det44.py
index 70f903086..51ad41dc8 100644
--- a/python/vyos/vpp/nat/det44.py
+++ b/python/vyos/vpp/nat/det44.py
@@ -44,10 +44,10 @@ class Det44:
is_add=True,
)
- def delete_det44_interface_outside(self, interface_out):
+ def delete_det44_interface_outside(self, interface_out_index):
"""Delete DET44 outside interface"""
self.vpp.api.det44_interface_add_del_feature(
- sw_if_index=self.vpp.get_sw_if_index(interface_out),
+ sw_if_index=interface_out_index,
is_inside=False,
is_add=False,
)
@@ -60,10 +60,10 @@ class Det44:
is_add=True,
)
- def delete_det44_interface_inside(self, interface_in):
+ def delete_det44_interface_inside(self, interface_in_index):
"""Delete DET44 inside interface"""
self.vpp.api.det44_interface_add_del_feature(
- sw_if_index=self.vpp.get_sw_if_index(interface_in),
+ sw_if_index=interface_in_index,
is_inside=True,
is_add=False,
)
@@ -104,3 +104,17 @@ class Det44:
tcp_established=tcp_established,
tcp_transitory=tcp_transitory,
)
+
+ def get_det44_interfaces_outside(self):
+ ifaces_outside = []
+ for iface in self.vpp.api.det44_interface_dump():
+ if iface.is_outside:
+ ifaces_outside.append(iface.sw_if_index)
+ return ifaces_outside
+
+ def get_det44_interfaces_inside(self):
+ ifaces_inside = []
+ for iface in self.vpp.api.det44_interface_dump():
+ if iface.is_inside:
+ ifaces_inside.append(iface.sw_if_index)
+ return ifaces_inside