diff options
author | Alexander Chernavin <achernavin@netgate.com> | 2020-02-11 09:57:09 -0500 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2020-02-20 09:04:26 +0000 |
commit | f145c15631ba62e798395499f83a2f8a91ae83c7 (patch) | |
tree | ad1f80a1f23ced8de9100f17730cc28918d050cf /src/plugins/map/map.h | |
parent | b728a3c8b74127e9a7decd8ecb7dc6cbefb0ab84 (diff) |
map: honor pre-resolve param in map-t
With this commit, forward the translated packet directly to the
specified next-hop if pre-resolve param is enabled in MAP-T.
Type: fix
Change-Id: Ie26080c7820318c7982599577a4af6e4d01a0574
Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
Diffstat (limited to 'src/plugins/map/map.h')
-rw-r--r-- | src/plugins/map/map.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/plugins/map/map.h b/src/plugins/map/map.h index 1f51a59aa2e..16fc60478b5 100644 --- a/src/plugins/map/map.h +++ b/src/plugins/map/map.h @@ -494,6 +494,34 @@ map_mss_clamping (tcp_header_t * tcp, ip_csum_t * sum, u16 mss_clamping) } } +static_always_inline bool +ip4_map_ip6_lookup_bypass (vlib_buffer_t * p0, ip4_header_t * ip) +{ +#ifdef MAP_SKIP_IP6_LOOKUP + if (FIB_NODE_INDEX_INVALID != pre_resolved[FIB_PROTOCOL_IP6].fei) + { + vnet_buffer (p0)->ip.adj_index[VLIB_TX] = + pre_resolved[FIB_PROTOCOL_IP6].dpo.dpoi_index; + return (true); + } +#endif + return (false); +} + +static_always_inline bool +ip6_map_ip4_lookup_bypass (vlib_buffer_t * p0, ip4_header_t * ip) +{ +#ifdef MAP_SKIP_IP6_LOOKUP + if (FIB_NODE_INDEX_INVALID != pre_resolved[FIB_PROTOCOL_IP4].fei) + { + vnet_buffer (p0)->ip.adj_index[VLIB_TX] = + pre_resolved[FIB_PROTOCOL_IP4].dpo.dpoi_index; + return (true); + } +#endif + return (false); +} + /* * fd.io coding-style-patch-verification: ON * |