aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/ip
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2017-10-13 05:15:07 -0700
committerDamjan Marion <dmarion.lists@gmail.com>2017-10-14 09:11:42 +0000
commit054c03ac9c20a5e38121590b83f01fd91f82acf0 (patch)
tree93ec5f8d85defb3e58d12fdca917a68000dbe6d3 /src/vnet/ip
parentd77275307b6ad6459ecba01912a302fb7dbf0f02 (diff)
Source Lookup progammable via API
Change-Id: I5d5d4f22b6369d504455a644f73076d772fbcfb4 Signed-off-by: Neale Ranns <nranns@cisco.com>
Diffstat (limited to 'src/vnet/ip')
-rw-r--r--src/vnet/ip/ip.api4
-rw-r--r--src/vnet/ip/ip_api.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/vnet/ip/ip.api b/src/vnet/ip/ip.api
index df9ce6e615a..f5341667892 100644
--- a/src/vnet/ip/ip.api
+++ b/src/vnet/ip/ip.api
@@ -370,6 +370,9 @@ autoreply define sw_interface_ip6_set_link_local_address
@param is_local -
@param is_classify -
@param is_multipath - Set to 1 if this is a multipath route, else 0
+ @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.
@param not_last - Is last or not last msg in group of multiple add/del msgs
@param next_hop_weight -
@param dst_address_length -
@@ -398,6 +401,7 @@ autoreply define ip_add_del_route
u8 is_resolve_host;
u8 is_resolve_attached;
u8 is_l2_bridged;
+ u8 is_source_lookup;
/* Is last/not-last message in group of multiple add/del messages. */
u8 not_last;
u8 next_hop_weight;
diff --git a/src/vnet/ip/ip_api.c b/src/vnet/ip/ip_api.c
index f3712d3fd29..8a3ceb2a4e9 100644
--- a/src/vnet/ip/ip_api.c
+++ b/src/vnet/ip/ip_api.c
@@ -830,6 +830,7 @@ add_del_route_t_handler (u8 is_multipath,
u8 is_interface_rx,
u8 is_rpf_id,
u8 is_l2_bridged,
+ u8 is_source_lookup,
u32 fib_index,
const fib_prefix_t * prefix,
dpo_proto_t next_hop_proto,
@@ -877,6 +878,8 @@ add_del_route_t_handler (u8 is_multipath,
path_flags |= FIB_ROUTE_PATH_INTF_RX;
if (is_rpf_id)
path_flags |= FIB_ROUTE_PATH_RPF_ID;
+ if (is_source_lookup)
+ path_flags |= FIB_ROUTE_PATH_SOURCE_LOOKUP;
if (is_multicast)
entry_flags |= FIB_ENTRY_FLAG_MULTICAST;
@@ -1076,6 +1079,7 @@ ip4_add_del_route_t_handler (vl_api_ip_add_del_route_t * mp)
mp->is_resolve_host,
mp->is_resolve_attached, 0, 0,
mp->is_l2_bridged,
+ mp->is_source_lookup,
fib_index, &pfx, DPO_PROTO_IP4,
&nh,
ntohl (mp->next_hop_sw_if_index),
@@ -1136,6 +1140,7 @@ ip6_add_del_route_t_handler (vl_api_ip_add_del_route_t * mp)
mp->is_resolve_host,
mp->is_resolve_attached, 0, 0,
mp->is_l2_bridged,
+ mp->is_source_lookup,
fib_index, &pfx, DPO_PROTO_IP6,
&nh, ntohl (mp->next_hop_sw_if_index),
next_hop_fib_index,