|
FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the documentation of this file.
84 #define MFIB_SIGNAL_CRITICAL_SECTION(_body) \
86 mfib_signal_lock_aquire(); \
90 mfib_signal_lock_release(); \
static u32 clib_dlist_remove_head(dlist_elt_t *pool, u32 head_index)
static void clib_dlist_init(dlist_elt_t *pool, u32 index)
int mfib_signal_send_one(struct vl_api_registration_ *reg, u32 context)
static mfib_signal_t * mfib_signal_pool
Pool of signals.
#define pool_elt_at_index(p, i)
Returns pointer to element at given index.
u32 mfi_si
The index of the signal in the pending list.
int mip_lock
Spin lock to protect the list.
struct mfib_signal_q_t_ mfib_signal_q_t
the list/set of interfaces with signals pending
mfib_itf_flags_t mfi_flags
Forwarding Flags on the entry - checked in the data-path.
#define pool_put(P, E)
Free an object E in pool P.
static fib_node_index_t mfib_entry_get_index(const mfib_entry_t *mfe)
void mfib_signal_remove_itf(const mfib_itf_t *mfi)
#define pool_put_index(p, i)
Free pool element with given index.
#define clib_atomic_release(a)
static void mfib_signal_lock_release(void)
A pair of indicies, for the entry and interface resp.
void mfib_signal_push(const mfib_entry_t *mfe, mfib_itf_t *mfi, vlib_buffer_t *b0)
static mfib_signal_q_t mfib_signal_pending
The pending queue of signals to deliver to the control plane.
An API client registration, only in vpp/vlib.
#define clib_atomic_test_and_set(a)
static void mfib_signal_lock_aquire(void)
static void clib_dlist_remove(dlist_elt_t *pool, u32 index)
#define pool_get(P, E)
Allocate an object E from a pool P (unspecified alignment).
u16 current_length
Nbytes between current data and the end of this buffer.
u32 mip_head
the dlist indext that is the head of the list
static mfib_itf_t * mfib_itf_get(index_t mi)
Get the MFIB interface representation.
void mfib_signal_module_init(void)
static void mfib_signal_list_init(void)
@ MFIB_ITF_FLAG_SIGNAL_PRESENT
An interface associated with a particular MFIB entry.
#define clib_atomic_fetch_and(a, b)
static void * vlib_buffer_get_current(vlib_buffer_t *b)
Get pointer to current data to process.
#define MFIB_SIGNAL_CRITICAL_SECTION(_body)
static void clib_dlist_addhead(dlist_elt_t *pool, u32 head_index, u32 new_index)
static index_t mfib_itf_get_index(const mfib_itf_t *mfi)
static dlist_elt_t * mfib_signal_dlist_pool
pool of dlist elements
fib_node_index_t mfs_entry
u8 mfs_buffer[MFIB_SIGNAL_BUFFER_SIZE]
A buffer copied from the DP plane that triggered the signal.
#define INDEX_INVALID
Invalid index - used when no index is known blazoned capitals INVALID speak volumes where ~0 does not...
#define MFIB_SIGNAL_BUFFER_SIZE
the list/set of interfaces with signals pending
VLIB buffer representation.
void vl_mfib_signal_send_one(vl_api_registration_t *reg, u32 context, const mfib_signal_t *mfs)