From f068c3ed296c49dfbfe17677fc1ad2428fb4e3e4 Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Wed, 3 Jan 2018 04:18:48 -0800 Subject: DVR: run L3 output features - rename l2_bridged to is_dvr. Including on the ip.api this was new in the 18.01 release so no compatability issues. - steal the free space in vnet_buffer_opaque_t for use with flags. - run the ipX-output feature arc from the DVR DPO Change-Id: I040e5976d1dbe076fcdda3a40a7804f56337ce3f Signed-off-by: Neale Ranns --- src/vnet/ip/ip.api | 3 ++- src/vnet/ip/ip4_forward.c | 2 +- src/vnet/ip/ip6_forward.c | 2 +- src/vnet/ip/ip_api.c | 10 +++++----- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src/vnet/ip') diff --git a/src/vnet/ip/ip.api b/src/vnet/ip/ip.api index b22c4d999fa..54047b6ae93 100644 --- a/src/vnet/ip/ip.api +++ b/src/vnet/ip/ip.api @@ -374,6 +374,7 @@ autoreply define sw_interface_ip6_set_link_local_address @param is_udp_encap - The path describes a UDP-o-IP encapsulation. @param is_classify - @param is_multipath - Set to 1 if this is a multipath route, else 0 + @param is_dvr - Does the route resolve via a DVR interface. @param is_source_lookup - The the path is a deaggregate path (i.e. a lookup in another table) is the lookup on the packet's source address or destination. @@ -408,7 +409,7 @@ autoreply define ip_add_del_route u8 is_multipath; u8 is_resolve_host; u8 is_resolve_attached; - u8 is_l2_bridged; + u8 is_dvr; u8 is_source_lookup; u8 is_udp_encap; u8 next_hop_weight; diff --git a/src/vnet/ip/ip4_forward.c b/src/vnet/ip/ip4_forward.c index 9c5775792b0..201d391a77e 100755 --- a/src/vnet/ip/ip4_forward.c +++ b/src/vnet/ip/ip4_forward.c @@ -1113,7 +1113,7 @@ VNET_FEATURE_INIT (ip4_lookup_mc, static) = VNET_FEATURE_ARC_INIT (ip4_output, static) = { .arc_name = "ip4-output", - .start_nodes = VNET_FEATURES ("ip4-rewrite", "ip4-midchain"), + .start_nodes = VNET_FEATURES ("ip4-rewrite", "ip4-midchain", "ip4-dvr-dpo"), .arc_index_ptr = &ip4_main.lookup_main.output_feature_arc_index, }; diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index 29cd3ca8239..a7e7930a69f 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -666,7 +666,7 @@ VNET_FEATURE_INIT (ip6_mc_lookup, static) = { VNET_FEATURE_ARC_INIT (ip6_output, static) = { .arc_name = "ip6-output", - .start_nodes = VNET_FEATURES ("ip6-rewrite", "ip6-midchain"), + .start_nodes = VNET_FEATURES ("ip6-rewrite", "ip6-midchain", "ip6-dvr-dpo"), .arc_index_ptr = &ip6_main.lookup_main.output_feature_arc_index, }; diff --git a/src/vnet/ip/ip_api.c b/src/vnet/ip/ip_api.c index db88d7b0161..599a66b3672 100644 --- a/src/vnet/ip/ip_api.c +++ b/src/vnet/ip/ip_api.c @@ -851,7 +851,7 @@ add_del_route_t_handler (u8 is_multipath, u8 is_resolve_attached, u8 is_interface_rx, u8 is_rpf_id, - u8 is_l2_bridged, + u8 is_dvr, u8 is_source_lookup, u8 is_udp_encap, u32 fib_index, @@ -892,8 +892,8 @@ add_del_route_t_handler (u8 is_multipath, path.frp_local_label = next_hop_via_label; path.frp_eos = MPLS_NON_EOS; } - if (is_l2_bridged) - path.frp_proto = DPO_PROTO_ETHERNET; + if (is_dvr) + path_flags |= FIB_ROUTE_PATH_DVR; if (is_resolve_host) path_flags |= FIB_ROUTE_PATH_RESOLVE_VIA_HOST; if (is_resolve_attached) @@ -1143,7 +1143,7 @@ ip4_add_del_route_t_handler (vl_api_ip_add_del_route_t * mp) mp->classify_table_index, mp->is_resolve_host, mp->is_resolve_attached, 0, 0, - mp->is_l2_bridged, + mp->is_dvr, mp->is_source_lookup, mp->is_udp_encap, fib_index, &pfx, DPO_PROTO_IP4, @@ -1206,7 +1206,7 @@ ip6_add_del_route_t_handler (vl_api_ip_add_del_route_t * mp) mp->classify_table_index, mp->is_resolve_host, mp->is_resolve_attached, 0, 0, - mp->is_l2_bridged, + mp->is_dvr, mp->is_source_lookup, mp->is_udp_encap, fib_index, &pfx, DPO_PROTO_IP6, -- cgit 1.2.3-korg