diff options
| author | Daniil Baturin <daniil@vyos.io> | 2025-10-21 12:38:20 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-21 12:38:20 +0100 |
| commit | fd8794f36b487ba2102cc50437056e93eb62f7f3 (patch) | |
| tree | 8e9ef01c346a89f2310cf495c8c6fbbc2131756b | |
| parent | ad0ad372dc8e00cd12ccf024257dcb130329982e (diff) | |
| parent | ccd60aa1f45763da550c0f5d796ab0798b6645a7 (diff) | |
| download | vyos-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.py | 9 | ||||
| -rw-r--r-- | python/vyos/vpp/nat/nat44.py | 4 | ||||
| -rwxr-xr-x | src/conf_mode/vpp.py | 5 | ||||
| -rw-r--r-- | src/conf_mode/vpp_nat.py | 20 |
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) |
