Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
BUG: multiple registrations of 'vl_api_ip6nd_proxy_details_t_handler
[vpp.git]
/
src
/
vnet
/
fib
/
fib_entry_src.c
diff --git
a/src/vnet/fib/fib_entry_src.c
b/src/vnet/fib/fib_entry_src.c
index
1fb0406
..
feb232d
100644
(file)
--- a/
src/vnet/fib/fib_entry_src.c
+++ b/
src/vnet/fib/fib_entry_src.c
@@
-266,6
+266,7
@@
fib_entry_src_collect_forwarding (fib_node_index_t pl_index,
{
fib_entry_src_collect_forwarding_ctx_t *ctx;
fib_path_ext_t *path_ext;
{
fib_entry_src_collect_forwarding_ctx_t *ctx;
fib_path_ext_t *path_ext;
+ int have_path_ext;
ctx = arg;
ctx = arg;
@@
-285,14
+286,17
@@
fib_entry_src_collect_forwarding (fib_node_index_t pl_index,
/*
* get the matching path-extension for the path being visited.
*/
/*
* get the matching path-extension for the path being visited.
*/
+ have_path_ext = 0;
vec_foreach(path_ext, ctx->esrc->fes_path_exts)
{
if (path_ext->fpe_path_index == path_index)
vec_foreach(path_ext, ctx->esrc->fes_path_exts)
{
if (path_ext->fpe_path_index == path_index)
+ {
+ have_path_ext = 1;
break;
break;
+ }
}
}
- if (NULL != path_ext &&
- path_ext->fpe_path_index == path_index &&
+ if (have_path_ext &&
fib_entry_src_valid_out_label(path_ext->fpe_label_stack[0]))
{
/*
fib_entry_src_valid_out_label(path_ext->fpe_label_stack[0]))
{
/*
@@
-313,6
+317,8
@@
fib_entry_src_collect_forwarding (fib_node_index_t pl_index,
{
case FIB_FORW_CHAIN_TYPE_UNICAST_IP4:
case FIB_FORW_CHAIN_TYPE_UNICAST_IP6:
{
case FIB_FORW_CHAIN_TYPE_UNICAST_IP4:
case FIB_FORW_CHAIN_TYPE_UNICAST_IP6:
+ case FIB_FORW_CHAIN_TYPE_MCAST_IP4:
+ case FIB_FORW_CHAIN_TYPE_MCAST_IP6:
/*
* EOS traffic with no label to stack, we need the IP Adj
*/
/*
* EOS traffic with no label to stack, we need the IP Adj
*/
@@
-353,6
+359,7
@@
fib_entry_src_collect_forwarding (fib_node_index_t pl_index,
break;
}
case FIB_FORW_CHAIN_TYPE_ETHERNET:
break;
}
case FIB_FORW_CHAIN_TYPE_ETHERNET:
+ case FIB_FORW_CHAIN_TYPE_NSH:
ASSERT(0);
break;
}
ASSERT(0);
break;
}
@@
-439,8
+446,9
@@
fib_entry_src_mk_lb (fib_entry_t *fib_entry,
*/
index_t ui = fib_path_list_get_urpf(esrc->fes_pl);
*/
index_t ui = fib_path_list_get_urpf(esrc->fes_pl);
- if (fib_entry_is_sourced(fib_entry_get_index(fib_entry),
- FIB_SOURCE_URPF_EXEMPT) &&
+ if ((fib_entry_is_sourced(fib_entry_get_index(fib_entry),
+ FIB_SOURCE_URPF_EXEMPT) ||
+ (esrc->fes_entry_flags & FIB_ENTRY_FLAG_LOOSE_URPF_EXEMPT))&&
(0 == fib_urpf_check_size(ui)))
{
/*
(0 == fib_urpf_check_size(ui)))
{
/*
@@
-458,6
+466,8
@@
fib_entry_src_mk_lb (fib_entry_t *fib_entry,
{
load_balance_set_urpf(dpo_lb->dpoi_index, ui);
}
{
load_balance_set_urpf(dpo_lb->dpoi_index, ui);
}
+ load_balance_set_fib_entry_flags(dpo_lb->dpoi_index,
+ fib_entry_get_flags_i(fib_entry));
}
void
}
void