diff options
author | Jon Loeliger <jdl@netgate.com> | 2018-12-20 11:47:30 -0600 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2018-12-21 17:06:40 +0000 |
commit | fc7344f9beffe506085730e8e03f7c8771deb3a6 (patch) | |
tree | c4c6cb47f30e3bc4ea0b884c31a2f8af0777abde /src/plugins/map/ip6_map.c | |
parent | a45dc07c153c4dd350b02fd30de471bbdb838ac9 (diff) |
MAP: Convert from DPO to input feature.
Change-Id: I25c86aea23dff19656449b23133db27b1f062ac0
Signed-off-by: Jon Loeliger <jdl@netgate.com>
Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/plugins/map/ip6_map.c')
-rw-r--r-- | src/plugins/map/ip6_map.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/plugins/map/ip6_map.c b/src/plugins/map/ip6_map.c index 35b58110876..d9db602bad8 100644 --- a/src/plugins/map/ip6_map.c +++ b/src/plugins/map/ip6_map.c @@ -244,8 +244,7 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) && clib_net_to_host_u16 (ip60->payload_length) > 20)) { d0 = - ip6_map_get_domain (vnet_buffer (p0)->ip.adj_index[VLIB_TX], - (ip4_address_t *) & ip40-> + ip4_map_get_domain ((ip4_address_t *) & ip40-> src_address.as_u32, &map_domain_index0, &error0); } @@ -272,8 +271,7 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) && clib_net_to_host_u16 (ip61->payload_length) > 20)) { d1 = - ip6_map_get_domain (vnet_buffer (p1)->ip.adj_index[VLIB_TX], - (ip4_address_t *) & ip41-> + ip4_map_get_domain ((ip4_address_t *) & ip41-> src_address.as_u32, &map_domain_index1, &error1); } @@ -455,8 +453,7 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) && clib_net_to_host_u16 (ip60->payload_length) > 20)) { d0 = - ip6_map_get_domain (vnet_buffer (p0)->ip.adj_index[VLIB_TX], - (ip4_address_t *) & ip40-> + ip4_map_get_domain ((ip4_address_t *) & ip40-> src_address.as_u32, &map_domain_index0, &error0); } @@ -478,7 +475,10 @@ ip6_map (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) } else { - error0 = MAP_ERROR_BAD_PROTOCOL; + /* XXX: Move get_domain to ip6_get_domain lookup on source */ + //error0 = MAP_ERROR_BAD_PROTOCOL; + vlib_buffer_advance (p0, -sizeof (ip6_header_t)); + vnet_feature_next (&next0, p0); } if (d0) @@ -811,7 +811,7 @@ ip6_map_ip6_reass (vlib_main_t * vm, } /* - * ip6_ip4_virt_reass + * ip6_map_ip4_reass */ static uword ip6_map_ip4_reass (vlib_main_t * vm, @@ -858,8 +858,7 @@ ip6_map_ip4_reass (vlib_main_t * vm, ip60 = ((ip6_header_t *) ip40) - 1; d0 = - ip6_map_get_domain (vnet_buffer (p0)->ip.adj_index[VLIB_TX], - (ip4_address_t *) & ip40->src_address.as_u32, + ip4_map_get_domain ((ip4_address_t *) & ip40->src_address.as_u32, &map_domain_index0, &error0); map_ip4_reass_lock (); @@ -1172,6 +1171,13 @@ static char *map_error_strings[] = { }; /* *INDENT-OFF* */ +VNET_FEATURE_INIT (ip6_map_feature, static) = +{ + .arc_name = "ip6-unicast", + .node_name = "ip6-map", + .runs_before = VNET_FEATURES ("ip6-flow-classify"), +}; + VLIB_REGISTER_NODE(ip6_map_node) = { .function = ip6_map, .name = "ip6-map", |