Go to the source code of this file.
|
static ip4_fib_t * | ip4_fib_get (u32 index) |
| Get the FIB at the given index. More...
|
|
static u32 | ip4_fib_lookup (ip4_main_t *im, u32 sw_if_index, ip4_address_t *dst) |
|
u32 | ip4_fib_table_find_or_create_and_lock (u32 table_id, fib_source_t src) |
| Get or create an IPv4 fib. More...
|
|
u32 | ip4_fib_table_create_and_lock (fib_source_t src) |
|
void | ip4_fib_table_destroy (u32 fib_index) |
|
u8 * | format_ip4_fib_table_memory (u8 *s, va_list *args) |
|
static u32 | ip4_fib_index_from_table_id (u32 table_id) |
|
u32 | ip4_fib_table_get_index_for_sw_if_index (u32 sw_if_index) |
|
static index_t | ip4_fib_forwarding_lookup (u32 fib_index, const ip4_address_t *addr) |
|
static_always_inline void | ip4_fib_forwarding_lookup_x2 (u32 fib_index0, u32 fib_index1, const ip4_address_t *addr0, const ip4_address_t *addr1, index_t *lb0, index_t *lb1) |
|
static_always_inline void | ip4_fib_forwarding_lookup_x4 (u32 fib_index0, u32 fib_index1, u32 fib_index2, u32 fib_index3, const ip4_address_t *addr0, const ip4_address_t *addr1, const ip4_address_t *addr2, const ip4_address_t *addr3, index_t *lb0, index_t *lb1, index_t *lb2, index_t *lb3) |
|
◆ format_ip4_mtrie
◆ ip4_fib_table_entry_insert
◆ ip4_fib_table_entry_remove
◆ ip4_fib_table_free
◆ ip4_fib_table_fwding_dpo_remove
◆ ip4_fib_table_fwding_dpo_update
◆ ip4_fib_table_init
◆ ip4_fib_table_lookup
◆ ip4_fib_table_lookup_exact_match
◆ ip4_fib_table_lookup_lb
◆ ip4_fib_table_sub_tree_walk
◆ ip4_fib_table_walk
◆ ip4_fibs
◆ ip4_mtrie_memory_usage
◆ ip4_fib_t
The IPv4 FIB.
FIBs are composed of two prefix data-bases (akak tables). The non-forwarding table contains all the routes that the control plane has programmed, the forwarding table contains the sub-set of those routes that can be used to forward packets. In the IPv4 FIB the non-forwarding table is an array of hash tables indexed by mask length, the forwarding table is an mtrie
This IPv4 FIB is used by the protocol independent FIB. So directly using this APIs in client code is not encouraged. However, this IPv4 FIB can be used if all the client wants is an IPv4 prefix data-base the FIB module uses the 16-8-8 stride trie
Definition at line 65 of file ip4_fib.h.
◆ format_ip4_fib_table_memory()
u8* format_ip4_fib_table_memory |
( |
u8 * |
s, |
|
|
va_list * |
args |
|
) |
| |
◆ ip4_fib_forwarding_lookup()
◆ ip4_fib_forwarding_lookup_x2()
◆ ip4_fib_forwarding_lookup_x4()
static_always_inline void ip4_fib_forwarding_lookup_x4 |
( |
u32 |
fib_index0, |
|
|
u32 |
fib_index1, |
|
|
u32 |
fib_index2, |
|
|
u32 |
fib_index3, |
|
|
const ip4_address_t * |
addr0, |
|
|
const ip4_address_t * |
addr1, |
|
|
const ip4_address_t * |
addr2, |
|
|
const ip4_address_t * |
addr3, |
|
|
index_t * |
lb0, |
|
|
index_t * |
lb1, |
|
|
index_t * |
lb2, |
|
|
index_t * |
lb3 |
|
) |
| |
◆ ip4_fib_get()
Get the FIB at the given index.
Definition at line 88 of file ip4_fib.h.
◆ ip4_fib_index_from_table_id()
static u32 ip4_fib_index_from_table_id |
( |
u32 |
table_id | ) |
|
|
inlinestatic |
◆ ip4_fib_lookup()
◆ ip4_fib_table_create_and_lock()
◆ ip4_fib_table_destroy()
void ip4_fib_table_destroy |
( |
u32 |
fib_index | ) |
|
◆ ip4_fib_table_find_or_create_and_lock()
Get or create an IPv4 fib.
Get or create an IPv4 fib with the provided table ID.
- Parameters
-
table_id | When set to ~0 , an arbitrary and unused fib ID is picked and can be retrieved with ret->table_id . Otherwise, the fib ID to be used to retrieve or create the desired fib. |
- Returns
- A pointer to the retrieved or created fib.
Definition at line 228 of file ip4_fib.c.
◆ ip4_fib_table_get_index_for_sw_if_index()
u32 ip4_fib_table_get_index_for_sw_if_index |
( |
u32 |
sw_if_index | ) |
|