FIB: recusrive paths must lock the table to prevent its deletion
Change-Id: I958bf057be751dc7b3a0d93080021b3addc405b7 Signed-off-by: Neale Ranns <neale.ranns@cisco.com>
This commit is contained in:

committed by
Damjan Marion

parent
b474380f82
commit
6fff24aaf8
@@ -879,6 +879,9 @@ fib_path_unresolve (fib_path_t *path)
|
||||
fib_table_entry_special_remove(path->recursive.fp_tbl_id,
|
||||
fib_entry_get_prefix(path->fp_via_fib),
|
||||
FIB_SOURCE_RR);
|
||||
fib_table_unlock(path->recursive.fp_tbl_id,
|
||||
dpo_proto_to_fib(path->fp_nh_proto),
|
||||
FIB_SOURCE_RR);
|
||||
path->fp_via_fib = FIB_NODE_INDEX_INVALID;
|
||||
}
|
||||
break;
|
||||
@@ -1897,6 +1900,9 @@ fib_path_resolve (fib_node_index_t path_index)
|
||||
fib_prefix_from_ip46_addr(&path->recursive.fp_nh.fp_ip, &pfx);
|
||||
}
|
||||
|
||||
fib_table_lock(path->recursive.fp_tbl_id,
|
||||
dpo_proto_to_fib(path->fp_nh_proto),
|
||||
FIB_SOURCE_RR);
|
||||
fei = fib_table_entry_special_add(path->recursive.fp_tbl_id,
|
||||
&pfx,
|
||||
FIB_SOURCE_RR,
|
||||
|
@@ -1269,6 +1269,9 @@ fib_table_lock (u32 fib_index,
|
||||
fib_table_t *fib_table;
|
||||
|
||||
fib_table = fib_table_get(fib_index, proto);
|
||||
|
||||
ASSERT(fib_table->ft_locks[source] < (0xffff - 1));
|
||||
|
||||
fib_table->ft_locks[source]++;
|
||||
fib_table->ft_locks[FIB_TABLE_TOTAL_LOCKS]++;
|
||||
}
|
||||
|
Reference in New Issue
Block a user