summaryrefslogtreecommitdiffstats
path: root/src/plugins/map/map.h
diff options
context:
space:
mode:
authorAlexander Chernavin <achernavin@netgate.com>2020-02-11 09:57:09 -0500
committerOle Trøan <otroan@employees.org>2020-02-20 09:04:26 +0000
commitf145c15631ba62e798395499f83a2f8a91ae83c7 (patch)
treead1f80a1f23ced8de9100f17730cc28918d050cf /src/plugins/map/map.h
parentb728a3c8b74127e9a7decd8ecb7dc6cbefb0ab84 (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.h28
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
*