summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2025-10-21 12:38:20 +0100
committerGitHub <noreply@github.com>2025-10-21 12:38:20 +0100
commitfd8794f36b487ba2102cc50437056e93eb62f7f3 (patch)
tree8e9ef01c346a89f2310cf495c8c6fbbc2131756b
parentad0ad372dc8e00cd12ccf024257dcb130329982e (diff)
parentccd60aa1f45763da550c0f5d796ab0798b6645a7 (diff)
downloadvyos-1x-fd8794f36b487ba2102cc50437056e93eb62f7f3.tar.gz
vyos-1x-fd8794f36b487ba2102cc50437056e93eb62f7f3.zip
Merge pull request #4795 from natali-rs1985/T7930
T7930: VPP: Changing NAT44 settings resets `forwarding_enabled` to False
-rw-r--r--python/vyos/vpp/control_vpp.py9
-rw-r--r--python/vyos/vpp/nat/nat44.py4
-rwxr-xr-xsrc/conf_mode/vpp.py5
-rw-r--r--src/conf_mode/vpp_nat.py20
4 files changed, 17 insertions, 21 deletions
diff --git a/python/vyos/vpp/control_vpp.py b/python/vyos/vpp/control_vpp.py
index 41b4573a5..cb8da50a6 100644
--- a/python/vyos/vpp/control_vpp.py
+++ b/python/vyos/vpp/control_vpp.py
@@ -440,15 +440,6 @@ class VPPControl:
return None
@_Decorators.api_call
- def enable_disable_nat44_forwarding(self, enable: bool) -> None:
- """Enable/disable NAT44 forwarding
-
- Args:
- enable (bool): True if enable, False if disable
- """
- self.__vpp_api_client.api.nat44_forwarding_enable_disable(enable=enable)
-
- @_Decorators.api_call
def set_nat44_session_limit(self, session_limit: int) -> None:
"""Set NAT44 session limit
diff --git a/python/vyos/vpp/nat/nat44.py b/python/vyos/vpp/nat/nat44.py
index b7e2d7744..d90193088 100644
--- a/python/vyos/vpp/nat/nat44.py
+++ b/python/vyos/vpp/nat/nat44.py
@@ -224,6 +224,10 @@ class Nat44:
tcp_transitory=tcp_transitory,
)
+ def enable_disable_nat44_forwarding(self, enable):
+ """Enable/disable NAT44 forwarding"""
+ self.vpp.api.nat44_forwarding_enable_disable(enable=enable)
+
def enable_ipfix(self):
"""Enable NAT44 IPFIX logging"""
self.vpp.api.nat44_ei_ipfix_enable_disable(enable=True)
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index 7124c738a..f16711901 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -749,11 +749,6 @@ def apply(config):
# NAT44 settings
nat44_settings = config['settings'].get('nat44', {})
- enable_forwarding = True
- if 'no_forwarding' in nat44_settings:
- enable_forwarding = False
- vpp_control.enable_disable_nat44_forwarding(enable_forwarding)
-
vpp_control.set_nat44_session_limit(
int(nat44_settings.get('session_limit'))
)
diff --git a/src/conf_mode/vpp_nat.py b/src/conf_mode/vpp_nat.py
index 28edbdf19..0425159b4 100644
--- a/src/conf_mode/vpp_nat.py
+++ b/src/conf_mode/vpp_nat.py
@@ -108,13 +108,12 @@ def get_config(config=None) -> dict:
}
)
- if conf.exists(['vpp', 'settings', 'nat44', 'timeout']):
- timeouts = conf.get_config_dict(
- ['vpp', 'settings', 'nat44', 'timeout'],
- key_mangling=('-', '_'),
- with_defaults=True,
- )
- config.update(timeouts)
+ settings = conf.get_config_dict(
+ ['vpp', 'settings', 'nat44'],
+ key_mangling=('-', '_'),
+ with_recursive_defaults=True,
+ )
+ config.update(settings.get('nat44'))
if effective_config:
config.update({'effective': effective_config})
@@ -437,6 +436,13 @@ def apply(config):
# Add NAT44
n.enable_nat44_ed()
+
+ # Enable/disable forwarding
+ enable_forwarding = True
+ if 'no_forwarding' in config:
+ enable_forwarding = False
+ n.enable_disable_nat44_forwarding(enable_forwarding)
+
# Add inside interfaces
for interface in config['interface']['inside']:
n.add_nat44_interface_inside(interface)