|
| STATIC_ASSERT_SIZEOF (l2fib_entry_key_t, 8) |
|
static_always_inline l2fib_seq_num_t | l2_fib_mk_seq_num (u8 bd_sn, u8 if_sn) |
|
static_always_inline l2fib_seq_num_t | l2_fib_update_seq_num (l2fib_seq_num_t sn, u8 if_sn) |
|
void | l2_fib_extract_seq_num (l2fib_seq_num_t sn, u8 *bd_sn, u8 *if_sn) |
|
u8 * | format_l2_fib_seq_num (u8 *s, va_list *a) |
|
| STATIC_ASSERT_SIZEOF (l2fib_entry_result_flags_t, 1) |
|
u8 * | format_l2fib_entry_result_flags (u8 *s, va_list *args) |
|
| STATIC_ASSERT_SIZEOF (l2fib_entry_result_t, 8) |
|
static foreach_l2fib_entry_result_attr void | l2fib_entry_result_set_bits (l2fib_entry_result_t *r, l2fib_entry_result_flags_t bits) |
|
static void | l2fib_entry_result_clear_bits (l2fib_entry_result_t *r, l2fib_entry_result_flags_t bits) |
|
static u32 | l2fib_compute_hash_bucket (l2fib_entry_key_t *key) |
| Compute the hash for the given key and return the corresponding bucket index. More...
|
|
static u64 | l2fib_make_key (const u8 *mac_address, u16 bd_index) |
|
static_always_inline void | l2fib_lookup_1 (BVT(clib_bihash) *mac_table, l2fib_entry_key_t *cached_key, l2fib_entry_result_t *cached_result, u8 *mac0, u16 bd_index0, l2fib_entry_key_t *key0, l2fib_entry_result_t *result0) |
| Lookup the entry for mac and bd_index in the mac table for 1 packet. More...
|
|
static_always_inline void | l2fib_lookup_2 (BVT(clib_bihash) *mac_table, l2fib_entry_key_t *cached_key, l2fib_entry_result_t *cached_result, u8 *mac0, u8 *mac1, u16 bd_index0, u16 bd_index1, l2fib_entry_key_t *key0, l2fib_entry_key_t *key1, l2fib_entry_result_t *result0, l2fib_entry_result_t *result1) |
| Lookup the entry for mac and bd_index in the mac table for 2 packets. More...
|
|
static_always_inline void | l2fib_lookup_4 (BVT(clib_bihash) *mac_table, l2fib_entry_key_t *cached_key, l2fib_entry_result_t *cached_result, const u8 *mac0, const u8 *mac1, const u8 *mac2, const u8 *mac3, u16 bd_index0, u16 bd_index1, u16 bd_index2, u16 bd_index3, l2fib_entry_key_t *key0, l2fib_entry_key_t *key1, l2fib_entry_key_t *key2, l2fib_entry_key_t *key3, l2fib_entry_result_t *result0, l2fib_entry_result_t *result1, l2fib_entry_result_t *result2, l2fib_entry_result_t *result3) |
|
void | l2fib_clear_table (void) |
|
void | l2fib_table_init (void) |
|
void | l2fib_add_entry (const u8 *mac, u32 bd_index, u32 sw_if_index, l2fib_entry_result_flags_t flags) |
| Add an entry to the l2fib. More...
|
|
static void | l2fib_add_filter_entry (const u8 *mac, u32 bd_index) |
|
u32 | l2fib_del_entry (const u8 *mac, u32 bd_index, u32 sw_if_index) |
| Delete an entry from the l2fib. More...
|
|
void | l2fib_start_ager_scan (vlib_main_t *vm) |
| Kick off ager to scan MACs to age/delete MAC entries. More...
|
|
void | l2fib_flush_int_mac (vlib_main_t *vm, u32 sw_if_index) |
| Flush all non static MACs from an interface. More...
|
|
void | l2fib_flush_bd_mac (vlib_main_t *vm, u32 bd_index) |
| Flush all non static MACs in a bridge domain. More...
|
|
void | l2fib_flush_all_mac (vlib_main_t *vm) |
| Flush all non static MACs - flushes all valid BDs. More...
|
|
void | l2fib_table_dump (u32 bd_index, l2fib_entry_key_t **l2fe_key, l2fib_entry_result_t **l2fe_res) |
|
u8 * | format_vnet_sw_if_index_name_with_NA (u8 *s, va_list *args) |
| Format sw_if_index. More...
|
|
| BVT (clib_bihash) *get_mac_table(void) |
|
A combined representation of the sequence number associated with the interface and the BD.
The BD is in higher bits, the interface in the lower bits, but the order is not important.
It's convenient to represent this as an union of two u8s, but then in the DP one is forced to do short writes, followed by long reads, which is a sure thing for a stall
Definition at line 107 of file l2_fib.h.
Lookup the entry for mac and bd_index in the mac table for 1 packet.
Cached_key and cached_result are used as a one-entry cache. The function reads and updates them as needed.
mac0 and bd_index0 are the keys. The entry is written to result0. If the entry was not found, result0 is set to ~0.
key0 return with the computed key, convenient if the entry needs, to be updated afterward.
Definition at line 283 of file l2_fib.h.
static_always_inline void l2fib_lookup_2 |
( |
BVT(clib_bihash) * |
mac_table, |
|
|
l2fib_entry_key_t * |
cached_key, |
|
|
l2fib_entry_result_t * |
cached_result, |
|
|
u8 * |
mac0, |
|
|
u8 * |
mac1, |
|
|
u16 |
bd_index0, |
|
|
u16 |
bd_index1, |
|
|
l2fib_entry_key_t * |
key0, |
|
|
l2fib_entry_key_t * |
key1, |
|
|
l2fib_entry_result_t * |
result0, |
|
|
l2fib_entry_result_t * |
result1 |
|
) |
| |
Lookup the entry for mac and bd_index in the mac table for 2 packets.
The lookups for the two packets are interleaved.
Cached_key and cached_result are used as a one-entry cache. The function reads and updates them as needed.
mac0 and bd_index0 are the keys. The entry is written to result0. If the entry was not found, result0 is set to ~0. The same holds for mac1/bd_index1/result1.
Definition at line 327 of file l2_fib.h.