summaryrefslogtreecommitdiffstats
path: root/src/vnet/map/ip6_map.c
diff options
context:
space:
mode:
authorMatus Fabian <matfabia@cisco.com>2017-05-02 03:15:22 -0700
committerOle Trøan <otroan@employees.org>2017-05-05 09:04:44 +0000
commita774b53623f60b5e8ea8ed634d6a41e847743715 (patch)
tree308dd4afd17f9d40cff8526a30f23a6eb5474c29 /src/vnet/map/ip6_map.c
parentda7567c022676374e7e50ff44c12ba0825e0cb38 (diff)
NAT64: Move IPv6-IPv4 virtual reassembly code from MAP-T to common library (VPP-708)
Change-Id: I9ad636f80bf109ffac9ca1b6d80d5f2c31f2076a Signed-off-by: Matus Fabian <matfabia@cisco.com>
Diffstat (limited to 'src/vnet/map/ip6_map.c')
-rw-r--r--src/vnet/map/ip6_map.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/src/vnet/map/ip6_map.c b/src/vnet/map/ip6_map.c
index 63ada962c7e..720d13c2879 100644
--- a/src/vnet/map/ip6_map.c
+++ b/src/vnet/map/ip6_map.c
@@ -15,6 +15,8 @@
#include "map.h"
#include "../ip/ip_frag.h"
+#include <vnet/ip/ip4_to_ip6.h>
+#include <vnet/ip/ip6_to_ip4.h>
enum ip6_map_next_e
{
@@ -125,7 +127,7 @@ ip6_map_security_check (map_domain_t * d, ip4_header_t * ip4,
{
if (!ip4_is_fragment (ip4))
{
- u16 port = ip4_map_get_port (ip4, MAP_SENDER);
+ u16 port = ip4_get_port (ip4, 1);
if (port)
{
if (mm->sec_check)
@@ -243,8 +245,9 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
d0 =
ip6_map_get_domain (vnet_buffer (p0)->ip.adj_index[VLIB_TX],
- (ip4_address_t *) & ip40->src_address.
- as_u32, &map_domain_index0, &error0);
+ (ip4_address_t *) & ip40->
+ src_address.as_u32, &map_domain_index0,
+ &error0);
}
else if (ip60->protocol == IP_PROTOCOL_ICMP6 &&
clib_net_to_host_u16 (ip60->payload_length) >
@@ -270,8 +273,9 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
d1 =
ip6_map_get_domain (vnet_buffer (p1)->ip.adj_index[VLIB_TX],
- (ip4_address_t *) & ip41->src_address.
- as_u32, &map_domain_index1, &error1);
+ (ip4_address_t *) & ip41->
+ src_address.as_u32, &map_domain_index1,
+ &error1);
}
else if (ip61->protocol == IP_PROTOCOL_ICMP6 &&
clib_net_to_host_u16 (ip61->payload_length) >
@@ -454,8 +458,9 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame)
{
d0 =
ip6_map_get_domain (vnet_buffer (p0)->ip.adj_index[VLIB_TX],
- (ip4_address_t *) & ip40->src_address.
- as_u32, &map_domain_index0, &error0);
+ (ip4_address_t *) & ip40->
+ src_address.as_u32, &map_domain_index0,
+ &error0);
}
else if (ip60->protocol == IP_PROTOCOL_ICMP6 &&
clib_net_to_host_u16 (ip60->payload_length) >
@@ -891,9 +896,7 @@ ip6_map_ip4_reass (vlib_main_t * vm,
cached = 1;
}
}
- else
- if ((port0 =
- ip4_get_port (ip40, MAP_SENDER, p0->current_length)) < 0)
+ else if ((port0 = ip4_get_port (ip40, 1)) == 0)
{
// Could not find port from first fragment. Stop reassembling.
error0 = MAP_ERROR_BAD_PROTOCOL;