summaryrefslogtreecommitdiffstats
path: root/src/vnet/ip
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2018-01-03 04:18:48 -0800
committerOle Trøan <otroan@employees.org>2018-01-09 16:38:19 +0000
commitf068c3ed296c49dfbfe17677fc1ad2428fb4e3e4 (patch)
treeeef3c7c502b68ccdff9c5d80d04850465e25ef01 /src/vnet/ip
parent0e8cb6c475b616a3296b08d25bcaa1eed3ab0084 (diff)
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 <nranns@cisco.com>
Diffstat (limited to 'src/vnet/ip')
-rw-r--r--src/vnet/ip/ip.api3
-rwxr-xr-xsrc/vnet/ip/ip4_forward.c2
-rw-r--r--src/vnet/ip/ip6_forward.c2
-rw-r--r--src/vnet/ip/ip_api.c10
4 files changed, 9 insertions, 8 deletions
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,