diff options
author | John Lo <loj@cisco.com> | 2017-01-30 13:12:10 -0500 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2017-01-31 08:38:56 +0000 |
commit | 2b81eb830393fe88c8247cb9015bdaf4060f6ceb (patch) | |
tree | 1ff66d4856414902c71bb789e3d824d080790b57 /src/vnet/ip | |
parent | 61459c9be0f620f738cf049b1b33e1a2d13dc9a6 (diff) |
Add vxlan-bypass feature to IP6 forwarding path
Add vxlan-bypass feature which can be enabled on the IP6 underlay
interface which receive VXLAN packets to accelerate VXLAN decap
processing. The CLI to enable/disable it is:
set interface ip6 vxlan-bypass <interface> [del]
The vxlan-bypass feature is already supported on the IP4 underlay
interface. The CLI to enable/disable it is:
set interface ip vxlan-bypass <interface> [del]
Move vxlan-bypass API/CLI support code from decap.c to vxlan.c.
Also fixed two issues in the VXLAN decap path in the vxlan-input node:
1. Add verification of VXLAN packet FIB index with the encap-vrf-id
of the VXLAN tunnel.
2. Fix checking of VXLANoIPv6 packet mcast DIP against that of the
IP6 mcast VXLAN tunnel.
Change-Id: I2bad4074a468c48fbb8bb5ac64f6437190756ed2
Signed-off-by: John Lo <loj@cisco.com>
Diffstat (limited to 'src/vnet/ip')
-rw-r--r-- | src/vnet/ip/ip6.h | 4 | ||||
-rw-r--r-- | src/vnet/ip/ip6_forward.c | 9 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/vnet/ip/ip6.h b/src/vnet/ip/ip6.h index 6fecd42dc61..152698733e8 100644 --- a/src/vnet/ip/ip6.h +++ b/src/vnet/ip/ip6.h @@ -426,6 +426,10 @@ int vnet_ip6_nd_term (vlib_main_t * vm, ip6_header_t * ip, u32 sw_if_index, u16 bd_index, u8 shg); +u8 *format_ip6_forward_next_trace (u8 * s, va_list * args); + +u32 ip6_tcp_udp_icmp_validate_checksum (vlib_main_t * vm, vlib_buffer_t * p0); + int vnet_set_ip6_classify_intfc (vlib_main_t * vm, u32 sw_if_index, u32 table_index); extern vlib_node_registration_t ip6_lookup_node; diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index ac47b3ad1fb..50951c27495 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -588,6 +588,13 @@ VNET_FEATURE_INIT (ip6_vpath, static) = { .arc_name = "ip6-unicast", .node_name = "vpath-input-ip6", + .runs_before = VNET_FEATURES ("ip6-vxlan-bypass"), +}; + +VNET_FEATURE_INIT (ip6_vxlan_bypass, static) = +{ + .arc_name = "ip6-unicast", + .node_name = "ip6-vxlan-bypass", .runs_before = VNET_FEATURES ("ip6-lookup"), }; @@ -921,7 +928,7 @@ typedef struct } ip6_forward_next_trace_t; -static u8 * +u8 * format_ip6_forward_next_trace (u8 * s, va_list * args) { CLIB_UNUSED (vlib_main_t * vm) = va_arg (*args, vlib_main_t *); |