aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/nat/nat.c
diff options
context:
space:
mode:
authorFilip Varga <fivarga@cisco.com>2019-06-11 10:45:21 +0200
committerOle Trøan <otroan@employees.org>2019-06-12 07:42:59 +0000
commit16ad61735efbf3f9933fdb9ef7987606ef060cfc (patch)
tree2bf2b939b0eeaeef768d7bd8473e4b35b1202f15 /src/plugins/nat/nat.c
parentcab4733a7fceb4ead38fe442ffe682ad533dfa28 (diff)
NAT: interface fib fix (VPP-1691)
Change-Id: I2d1e2addb2e440c23c255ac7709169f7909cb0be Signed-off-by: Filip Varga <fivarga@cisco.com>
Diffstat (limited to 'src/plugins/nat/nat.c')
-rwxr-xr-xsrc/plugins/nat/nat.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/plugins/nat/nat.c b/src/plugins/nat/nat.c
index 9eb0384a95b..363c1c02c45 100755
--- a/src/plugins/nat/nat.c
+++ b/src/plugins/nat/nat.c
@@ -2178,6 +2178,7 @@ snat_update_outside_fib (u32 sw_if_index, u32 new_fib_index,
nat_outside_fib_t *outside_fib;
snat_interface_t *i;
u8 is_add = 1;
+ u8 match = 0;
if (new_fib_index == old_fib_index)
return;
@@ -2185,14 +2186,21 @@ snat_update_outside_fib (u32 sw_if_index, u32 new_fib_index,
if (!vec_len (sm->outside_fibs))
return;
- pool_foreach (i, sm->interfaces, (
- {
- if (i->sw_if_index == sw_if_index)
- {
- if (!(nat_interface_is_outside (i)))
- return;}
- }
- ));
+ /* *INDENT-OFF* */
+ pool_foreach (i, sm->interfaces,
+ ({
+ if (i->sw_if_index == sw_if_index)
+ {
+ if (!(nat_interface_is_outside (i)))
+ return;
+ match = 1;
+ }
+ }));
+ /* *INDENT-ON* */
+
+ if (!match)
+ return;
+
vec_foreach (outside_fib, sm->outside_fibs)
{
if (outside_fib->fib_index == old_fib_index)