63 {lacp_ptx_state_no_periodic},
64 {lacp_ptx_state_fast_periodic},
65 {lacp_ptx_state_slow_periodic},
66 {lacp_ptx_state_periodic_tx},
92 if (!(mif->
partner.state & LACP_STATE_LACP_ACTIVITY) &&
93 !(mif->
actor.state & LACP_STATE_LACP_ACTIVITY))
95 LACP_PTX_EVENT_NO_PERIODIC, &mif->
ptx_state);
106 if (timer_expired || (mif->
partner.state & LACP_STATE_LACP_TIMEOUT))
108 LACP_PTX_EVENT_TIMER_EXPIRED, &mif->
ptx_state);
121 if (!(mif->
partner.state & LACP_STATE_LACP_ACTIVITY) &&
122 !(mif->
actor.state & LACP_STATE_LACP_ACTIVITY))
124 LACP_PTX_EVENT_NO_PERIODIC, &mif->
ptx_state);
137 LACP_PTX_EVENT_TIMER_EXPIRED, &mif->
ptx_state);
139 if (!(mif->
partner.state & LACP_STATE_LACP_TIMEOUT))
141 LACP_PTX_EVENT_LONG_TIMEOUT, &mif->
ptx_state);
153 if (!(mif->
partner.state & LACP_STATE_LACP_ACTIVITY) &&
154 !(mif->
actor.state & LACP_STATE_LACP_ACTIVITY))
156 LACP_PTX_EVENT_NO_PERIODIC, &mif->
ptx_state);
162 if (mif->
partner.state & LACP_STATE_LACP_TIMEOUT)
164 LACP_PTX_EVENT_SHORT_TIMEOUT, &mif->
ptx_state);
167 LACP_PTX_EVENT_LONG_TIMEOUT, &mif->
ptx_state);
177 #define _(b, s, n) {.bit = b, .str = #s, }, 182 int e = va_arg (*args,
int);
185 if (e >= (
sizeof (lacp_ptx_event_array) /
sizeof (*event_entry)))
186 s =
format (s,
"Bad event %d", e);
188 s =
format (s,
"%s", event_entry[e].str);
223 LACP_PTX_EVENT_NO_PERIODIC, &mif->
ptx_state);
static u8 * format_ptx_event(u8 *s, va_list *args)
vlib_main_t vlib_global_main
vnet_main_t * vnet_get_main(void)
int lacp_ptx_action_no_periodic(void *p1, void *p2)
int lacp_ptx_action_fast_periodic(void *p1, void *p2)
#define LACP_FAST_PERIODIC_TIMER
format_function_t format_vnet_sw_if_index_name
static void lacp_ptx_post_short_timeout_event(vlib_main_t *vm, member_if_t *mif)
static u8 lacp_timer_is_running(f64 timer)
#define LACP_ACTION_SLOW_PERIODIC
static u8 lacp_timer_is_expired(vlib_main_t *vm, f64 timer)
void lacp_init_ptx_machine(vlib_main_t *vm, member_if_t *mif)
#define LACP_ACTION_TIMER_EXPIRED
vlib_worker_thread_t * vlib_worker_threads
static void lacp_stop_timer(f64 *timer)
static void lacp_start_periodic_timer(vlib_main_t *vm, member_if_t *mif, u8 expiration)
static lacp_fsm_machine_t lacp_ptx_fsm_table[]
#define ELOG_TYPE_DECLARE(f)
#define ELOG_TRACK_DATA(em, f, track)
int lacp_ptx_action_slow_periodic(void *p1, void *p2)
static u8 * format_ptx_sm_state(u8 *s, va_list *args)
int lacp_ptx_action_timer_expired(void *p1, void *p2)
u32 elog_string(elog_main_t *em, char *fmt,...)
add a string to the event-log string table
void lacp_ptx_debug_func(member_if_t *mif, int event, int state, lacp_fsm_state_t *transition)
static_always_inline uword os_get_thread_index(void)
#define LACP_ACTION_NO_PERIODIC
static void lacp_schedule_periodic_timer(vlib_main_t *vm, member_if_t *mif)
int lacp_machine_dispatch(lacp_machine_t *machine, vlib_main_t *vm, member_if_t *mif, int event, int *state)
vl_api_dhcp_client_state_t state
lacp_machine_t lacp_tx_machine
#define LACP_ACTION_FAST_PERIODIC