VPP nat44 and cgnat should be mutually exclusive (or do not use the same interfaces)
To reproduce:
set interfaces ethernet eth1 address '100.64.0.1/24' set vpp settings interface eth1 set vpp settings interface eth3 set vpp nat cgnat interface inside 'eth1' set vpp nat cgnat interface outside 'eth3' set vpp nat cgnat rule 100 inside-prefix '100.64.0.0/24' set vpp nat cgnat rule 100 outside-prefix '192.0.2.0/30' commit set vpp nat nat44 address-pool translation address 192.0.2.0-1.8.2.1 set vpp nat nat44 interface inside eth1 set vpp nat nat44 interface outside eth3 commit
After the second commit:
vyos@r14# commit
[ vpp nat nat44 ]
Traceback (most recent call last):
File "/usr/libexec/vyos/services/vyos-configd", line 157, in run_script
script.apply(c)
File "/usr/libexec/vyos/conf_mode/vpp_nat_nat44.py", line 456, in apply
n.add_nat44_address_range(address, twice_nat=False)
File "/usr/lib/python3/dist-packages/vyos/vpp/nat/nat44.py", line 98, in add_nat44_address_range
self.vpp.api.nat44_add_del_address_range(
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 130, in __call__
return self._func(**kwargs)
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 565, in f
return self._call_vpp(i, msg, multipart, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 854, in _call_vpp
raise VPPIOError(2, "VPP API client: read failed")
vpp_papi.vpp_papi.VPPIOError: [Errno 2] VPP API client: read failed
[[vpp nat nat44]] failed
Commit failed
[edit]
vyos@r14#Logs:
Mar 09 15:00:08 r14 vyos-configd[800]: Received message: {"type": "node", "last": true, "data": "/usr/libexec/vyos/conf_mode/vpp_nat_nat44.py"}
Mar 09 15:00:08 r14 netplugd[2681]: eth3: state INNING pid 3784 exited status 0
Mar 09 15:00:13 r14 vyos-configd[800]: Traceback (most recent call last):
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/libexec/vyos/services/vyos-configd", line 157, in run_script
Mar 09 15:00:13 r14 vyos-configd[800]: script.apply(c)
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/libexec/vyos/conf_mode/vpp_nat_nat44.py", line 456, in apply
Mar 09 15:00:13 r14 vyos-configd[800]: n.add_nat44_address_range(address, twice_nat=False)
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vyos/vpp/nat/nat44.py", line 98, in add_nat44_address_range
Mar 09 15:00:13 r14 vyos-configd[800]: self.vpp.api.nat44_add_del_address_range(
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 130, in __call__
Mar 09 15:00:13 r14 vyos-configd[800]: return self._func(**kwargs)
Mar 09 15:00:13 r14 vyos-configd[800]: ^^^^^^^^^^^^^^^^^^^^
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 565, in f
Mar 09 15:00:13 r14 vyos-configd[800]: return self._call_vpp(i, msg, multipart, **kwargs)
Mar 09 15:00:13 r14 vyos-configd[800]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 09 15:00:13 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 854, in _call_vpp
Mar 09 15:00:13 r14 vyos-configd[800]: raise VPPIOError(2, "VPP API client: read failed")
Mar 09 15:00:13 r14 vyos-configd[800]: vpp_papi.vpp_papi.VPPIOError: [Errno 2] VPP API client: read failed
Mar 09 15:00:18 r14 vyos-configd[800]: [vpp_nat_nat44] Traceback (most recent call last):
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/libexec/vyos/services/vyos-configd", line 157, in run_script
Mar 09 15:00:18 r14 vyos-configd[800]: script.apply(c)
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/libexec/vyos/conf_mode/vpp_nat_nat44.py", line 456, in apply
Mar 09 15:00:18 r14 vyos-configd[800]: n.add_nat44_address_range(address, twice_nat=False)
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vyos/vpp/nat/nat44.py", line 98, in add_nat44_address_range
Mar 09 15:00:18 r14 vyos-configd[800]: self.vpp.api.nat44_add_del_address_range(
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 130, in __call__
Mar 09 15:00:18 r14 vyos-configd[800]: return self._func(**kwargs)
Mar 09 15:00:18 r14 vyos-configd[800]: ^^^^^^^^^^^^^^^^^^^^
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 565, in f
Mar 09 15:00:18 r14 vyos-configd[800]: return self._call_vpp(i, msg, multipart, **kwargs)
Mar 09 15:00:18 r14 vyos-configd[800]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Mar 09 15:00:18 r14 vyos-configd[800]: File "/usr/lib/python3/dist-packages/vpp_papi/vpp_papi.py", line 854, in _call_vpp
Mar 09 15:00:18 r14 vyos-configd[800]: raise VPPIOError(2, "VPP API client: read failed")
Mar 09 15:00:18 r14 vyos-configd[800]: vpp_papi.vpp_papi.VPPIOError: [Errno 2] VPP API client: read failed
Mar 09 15:00:18 r14 vyos-configd[800]: scripts_called: ['vpp_nat_nat44']
Mar 09 15:00:18 r14 vyos-configd[800]: Sending reply: ERROR_COMMIT_APPLY with output