From: Milan Lenco Date: Wed, 2 May 2018 12:22:22 +0000 (+0200) Subject: NAT: fix bin API dump of static mappings. X-Git-Tag: v18.07-rc1~386 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F30%2F12330%2F2;p=vpp.git NAT: fix bin API dump of static mappings. Static mappings with equal local and external IPs but different ports were dumped as identity mappings. Change-Id: Ifea7cef5b78aea4c2eb31cf1620185eeef2681e5 Signed-off-by: Milan Lenco --- diff --git a/src/plugins/nat/nat_api.c b/src/plugins/nat/nat_api.c index 417d2984011..4c815f0bc13 100644 --- a/src/plugins/nat/nat_api.c +++ b/src/plugins/nat/nat_api.c @@ -876,7 +876,9 @@ vl_api_nat44_static_mapping_dump_t_handler (vl_api_nat44_static_mapping_dump_t /* *INDENT-OFF* */ pool_foreach (m, sm->static_mappings, ({ - if (!vec_len(m->locals) && (m->local_addr.as_u32 != m->external_addr.as_u32)) + if (!vec_len (m->locals) && + ((m->local_port != m->external_port) + || (m->local_addr.as_u32 != m->external_addr.as_u32))) send_nat44_static_mapping_details (m, reg, mp->context); })); /* *INDENT-ON* */ @@ -1034,7 +1036,8 @@ static void /* *INDENT-OFF* */ pool_foreach (m, sm->static_mappings, ({ - if (!vec_len(m->locals) && (m->local_addr.as_u32 == m->external_addr.as_u32)) + if (!vec_len (m->locals) && (m->local_port == m->external_port) + && (m->local_addr.as_u32 == m->external_addr.as_u32)) send_nat44_identity_mapping_details (m, reg, mp->context); })); /* *INDENT-ON* */