diff options
author | Filip Varga <fivarga@cisco.com> | 2021-09-17 14:11:59 +0200 |
---|---|---|
committer | Ole Tr�an <otroan@employees.org> | 2021-10-20 10:46:13 +0000 |
commit | 27775f0b903f4ea088514153e27354d5094cbf0c (patch) | |
tree | f755a427ef21875dfddeffbde58616747de6e3c9 /src/plugins/nat/nat44-ed/nat44_ed_api.c | |
parent | 4c3c60daf7bccffc0f1fe59d8d09557bc62d00b0 (diff) |
nat: NAT44-ED api fix and improvement
This patch fixes issue with NAT_API_IS_TWICE_NAT and
NAT_API_IS_ADDR_ONLY flags. Because of control plane
code change - move from boolean parameters to flags
in https://gerrit.fd.io/r/c/vpp/+/32796 patch these
api flags weren't correctly set.
Type: fix
Change-Id: Ieec5fe6bdcca314da027f2d23e3a24f174391a6f
Signed-off-by: Filip Varga <fivarga@cisco.com>
Diffstat (limited to 'src/plugins/nat/nat44-ed/nat44_ed_api.c')
-rw-r--r-- | src/plugins/nat/nat44-ed/nat44_ed_api.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/plugins/nat/nat44-ed/nat44_ed_api.c b/src/plugins/nat/nat44-ed/nat44_ed_api.c index 759cfd37e26..15059752ee7 100644 --- a/src/plugins/nat/nat44-ed/nat44_ed_api.c +++ b/src/plugins/nat/nat44-ed/nat44_ed_api.c @@ -840,10 +840,12 @@ send_nat44_static_map_resolve_details (snat_static_map_resolve_t * m, rmp->vrf_id = htonl (m->vrf_id); rmp->context = context; - if (m->twice_nat) - rmp->flags |= NAT_API_IS_TWICE_NAT; + if (is_sm_twice_nat (m->flags)) + { + rmp->flags |= NAT_API_IS_TWICE_NAT; + } - if (m->addr_only) + if (is_sm_addr_only (m->flags)) { rmp->flags |= NAT_API_IS_ADDR_ONLY; } @@ -853,6 +855,7 @@ send_nat44_static_map_resolve_details (snat_static_map_resolve_t * m, rmp->external_port = m->e_port; rmp->local_port = m->l_port; } + if (m->tag) strncpy ((char *) rmp->tag, (char *) m->tag, vec_len (m->tag)); @@ -882,7 +885,7 @@ vl_api_nat44_static_mapping_dump_t_handler (vl_api_nat44_static_mapping_dump_t for (j = 0; j < vec_len (sm->to_resolve); j++) { rp = sm->to_resolve + j; - if (!rp->identity_nat) + if (!is_sm_identity_nat (rp->flags)) send_nat44_static_map_resolve_details (rp, reg, mp->context); } } @@ -985,7 +988,7 @@ send_nat44_identity_map_resolve_details (snat_static_map_resolve_t * m, rmp->_vl_msg_id = ntohs (VL_API_NAT44_IDENTITY_MAPPING_DETAILS + sm->msg_id_base); - if (m->addr_only) + if (is_sm_addr_only (m->flags)) rmp->flags = (vl_api_nat_config_flags_t) NAT_API_IS_ADDR_ONLY; rmp->port = m->l_port; @@ -1027,7 +1030,7 @@ static void for (j = 0; j < vec_len (sm->to_resolve); j++) { rp = sm->to_resolve + j; - if (rp->identity_nat) + if (is_sm_identity_nat (rp->flags)) send_nat44_identity_map_resolve_details (rp, reg, mp->context); } } |