17 #ifndef __included_vppjni_bridge_domain_h__ 18 #define __included_vppjni_bridge_domain_h__ 27 #define MAC_ADDRESS_SIZE 6 79 #define BD_OPER_REFRESH_INTERVAL 2.0 80 #define BD_OPER_L2FIB_REFRESH_INTERVAL 5.0 104 #if CLIB_ARCH_IS_LITTLE_ENDIAN 107 temp = *((
u64 *)(mac_address - 2));
108 temp = (temp & ~0xffff);
112 temp = *((
u64 *)(mac_address)) >> 16;
128 return ((bd_id != 0) && (bd_id != ~0) && (bd_id <= bdm->next_bd_id));
137 ((bd_id == 0) || (bd_id == ~0)));
211 return format(0,
"BridgeDomainOper%d", bd_id);
226 vppjni_vpe_api_msg_main_t *ovam = ovam_get_main ();
233 ovam_bridge_domain_dump (bd_id);
245 ovam_bridge_domain_dump (bd_id);
263 bd_id = bd_sw_if_oper->
bd_id;
314 for (i = 0; i < end; i++)
317 if ((curr_bd_id != ~0) && (curr_bd_id > bd_id) &&
318 ((next_bd_id == 0) || (curr_bd_id < next_bd_id)))
319 next_bd_id = curr_bd_id;
331 for (i = start; i < end; i++)
342 vppjni_vpe_api_msg_main_t *ovam = ovam_get_main ();
346 ovam_l2fib_table_dump ();
388 for (; bd_index < end; bd_index++)
395 (si != ~0) && (si < len);
401 bd_sw_if_oper->
bd_id = ~0;
423 bd_sw_if_oper->
bd_id = bd_id;
424 bd_sw_if_oper->
shg = shg;
429 bd_sw_if_oper->
bd_id = 0;
430 bd_sw_if_oper->
shg = 0;
441 for (count =
i = 0;
i < end;
i++)
453 uword mhash_val_bd_id;
469 bd_local_cfg->
bd_id = bd_id;
496 bd_local_cfg->
bd_id = ~0;
#define vec_validate(V, I)
Make sure vector is long enough for given index (no header, unspecified alignment) ...
#define hash_set(h, key, value)
sll srl srl sll sra u16x4 i
#define vec_c_string_is_terminated(V)
Test whether a vector is a NULL terminated c-string.
#define hash_unset(h, key)
always_inline void mhash_init_vec_string(mhash_t *h, uword n_value_bytes)
static_always_inline u32 vjbd_oper_l2fib_index_from_mac(vjbd_oper_t *bd_oper, u8 *mac)
uword * bd_id_by_sw_if_index
uword mhash_unset(mhash_t *h, void *key, uword *old_value)
#define vec_reset_length(v)
Reset vector length to zero NULL-pointer tolerant.
static_always_inline u32 vjbd_local_cfg_next_id(vjbd_main_t *bdm, u32 bd_id)
static_always_inline void vjbd_delete_bd(vjbd_main_t *bdm, u32 bd_id)
static_always_inline void vjbd_l2fib_oper_reset(vjbd_main_t *bdm)
#define static_always_inline
static_always_inline u32 vjbd_id_sw_if_count(vjbd_main_t *bdm, u32 bd_id)
static_always_inline u32 vjbd_index_from_id(vjbd_main_t *bdm, u32 bd_id)
bd_sw_if_oper_t * sw_if_oper
#define vec_elt_at_index(v, i)
Get vector value at index i checking that i is in bounds.
static_always_inline u32 vjbd_index_is_free(vjbd_main_t *bdm, u16 bd_index)
static_always_inline u32 vjbd_id_from_index(vjbd_main_t *bdm, u16 bd_index)
static_always_inline u8 * vjbd_name_from_id(vjbd_main_t *bdm, u32 bd_id)
static_always_inline void vjbd_main_init(vjbd_main_t *bdm)
#define BD_OPER_L2FIB_REFRESH_INTERVAL
static_always_inline void vjbd_oper_maybe_sync_from_vpp(vjbd_main_t *bdm, u32 bd_id)
f64 bd_oper_last_sync_all_time
always_inline uword clib_bitmap_first_clear(uword *ai)
uword mhash_set_mem(mhash_t *h, void *key, uword *new_value, uword *old_value)
always_inline uword * clib_bitmap_set(uword *ai, uword i, uword value)
static_always_inline u32 vjbd_id_from_name(vjbd_main_t *bdm, const u8 *bd_name)
always_inline uword clib_bitmap_get(uword *ai, uword i)
static_always_inline u8 * vjbd_name_from_sw_if_index(vjbd_main_t *bdm, u32 sw_if_index)
bd_sw_if_oper_t * bd_sw_if_oper
void mhash_init(mhash_t *h, uword n_value_bytes, uword n_key_bytes)
static_always_inline void vjbd_oper_l2fib_maybe_sync_from_vpp(vjbd_main_t *bdm)
static_always_inline void vjbd_oper_reset(vjbd_main_t *bdm, u32 bd_id)
static_always_inline u32 vjbd_id_is_valid(vjbd_main_t *bdm, u32 bd_id)
static_always_inline u32 vjbd_find_or_add_bd(vjbd_main_t *bdm, u8 *bd_name)
static_always_inline u8 * vjbd_oper_name_from_id(vjbd_main_t *bdm, u32 bd_id)
f64 l2fib_oper_last_sync_time
static_always_inline u32 vjbd_id_from_sw_if_index(vjbd_main_t *bdm, u32 sw_if_index)
#define vec_validate_init_c_string(V, S, L)
Make a vector containing a NULL terminated c-string.
#define hash_create(elts, value_bytes)
uword * oper_bd_index_by_bd_id
static_always_inline u32 vjbd_sw_if_oper_next_index(vjbd_main_t *bdm, u32 start, u32 bd_id)
always_inline uword clib_bitmap_is_zero(uword *ai)
mhash_t l2fib_index_by_mac
#define vec_len(v)
Number of elements in vector (rvalue-only, NULL tolerant)
always_inline u64 l2fib_mac_to_u64(u8 *mac_address)
static_always_inline void vjbd_sw_if_add_del(u32 sw_if_index, u32 bd_id, u8 bvi, u8 shg, u8 is_add)
static_always_inline u32 vjbd_index_is_valid(vjbd_main_t *bdm, u16 bd_index)
#define vec_foreach(var, vec)
Vector iterator.
bd_local_cfg_t * local_cfg
bd_l2fib_oper_t * l2fib_oper
static_always_inline vjbd_oper_t * vjbd_oper_from_id(vjbd_main_t *bdm, u32 bd_id)
#define BD_OPER_REFRESH_INTERVAL
always_inline uword * mhash_get(mhash_t *h, void *key)