fib: walk over adj glean per table
Type: fix Signed-off-by: Stanislav Zaikin <stanislav.zaikin@46labs.com> Change-Id: I07f54bb643c24b1839a2d0e93acc593d13a43fed
This commit is contained in:

committed by
Neale Ranns

parent
6052f4b9d8
commit
601972bb20
@ -186,21 +186,18 @@ adj_glean_update_rewrite_walk (adj_index_t ai,
|
||||
return (ADJ_WALK_RC_CONTINUE);
|
||||
}
|
||||
|
||||
void
|
||||
adj_glean_walk (u32 sw_if_index,
|
||||
static void
|
||||
adj_glean_walk_proto (fib_protocol_t proto,
|
||||
u32 sw_if_index,
|
||||
adj_walk_cb_t cb,
|
||||
void *data)
|
||||
{
|
||||
fib_protocol_t proto;
|
||||
|
||||
FOR_EACH_FIB_IP_PROTOCOL(proto)
|
||||
{
|
||||
adj_index_t ai, *aip, *ais = NULL;
|
||||
ip46_address_t *conn;
|
||||
|
||||
if (vec_len(adj_gleans[proto]) <= sw_if_index ||
|
||||
NULL == adj_gleans[proto][sw_if_index])
|
||||
continue;
|
||||
return;
|
||||
|
||||
/*
|
||||
* Walk first to collect the indices
|
||||
@ -215,9 +212,21 @@ adj_glean_walk (u32 sw_if_index,
|
||||
vec_foreach(aip, ais)
|
||||
{
|
||||
if (ADJ_WALK_RC_STOP == cb(*aip, data))
|
||||
break;
|
||||
return;
|
||||
}
|
||||
vec_free(ais);
|
||||
}
|
||||
|
||||
void
|
||||
adj_glean_walk (u32 sw_if_index,
|
||||
adj_walk_cb_t cb,
|
||||
void *data)
|
||||
{
|
||||
fib_protocol_t proto;
|
||||
|
||||
FOR_EACH_FIB_IP_PROTOCOL(proto)
|
||||
{
|
||||
adj_glean_walk_proto (proto, sw_if_index, cb, data);
|
||||
}
|
||||
}
|
||||
|
||||
@ -445,7 +454,7 @@ adj_glean_table_bind (fib_protocol_t fproto,
|
||||
},
|
||||
};
|
||||
|
||||
adj_glean_walk (sw_if_index, adj_glean_start_backwalk, &bw_ctx);
|
||||
adj_glean_walk_proto (fproto, sw_if_index, adj_glean_start_backwalk, &bw_ctx);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user