int
lacp_ptx_action_no_periodic (void *p1, void *p2)
{
- vlib_main_t *vm = (vlib_main_t *) p1;
- slave_if_t *sif = (slave_if_t *) p2;
+ vlib_main_t *vm = p1;
+ member_if_t *mif = p2;
- lacp_stop_timer (&sif->periodic_timer);
- lacp_ptx_post_short_timeout_event (vm, sif);
+ lacp_stop_timer (&mif->periodic_timer);
+ lacp_ptx_post_short_timeout_event (vm, mif);
return 0;
}
int
lacp_ptx_action_slow_periodic (void *p1, void *p2)
{
- vlib_main_t *vm = (vlib_main_t *) p1;
- slave_if_t *sif = (slave_if_t *) p2;
+ vlib_main_t *vm = p1;
+ member_if_t *mif = p2;
u8 timer_expired;
- lacp_main_t *lm = &lacp_main;
- if (!(sif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
- !(sif->actor.state & LACP_STATE_LACP_ACTIVITY))
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_NO_PERIODIC, &sif->ptx_state);
+ if (!(mif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
+ !(mif->actor.state & LACP_STATE_LACP_ACTIVITY))
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_NO_PERIODIC, &mif->ptx_state);
else
{
- if (lacp_timer_is_running (sif->periodic_timer) &&
- lacp_timer_is_expired (lm->vlib_main, sif->periodic_timer))
+ if (lacp_timer_is_running (mif->periodic_timer) &&
+ lacp_timer_is_expired (vm, mif->periodic_timer))
timer_expired = 1;
else
timer_expired = 0;
- lacp_schedule_periodic_timer (lm->vlib_main, sif);
+ lacp_schedule_periodic_timer (vm, mif);
- if (timer_expired || (sif->partner.state & LACP_STATE_LACP_TIMEOUT))
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_TIMER_EXPIRED, &sif->ptx_state);
+ if (timer_expired || (mif->partner.state & LACP_STATE_LACP_TIMEOUT))
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_TIMER_EXPIRED, &mif->ptx_state);
}
return 0;
int
lacp_ptx_action_fast_periodic (void *p1, void *p2)
{
- vlib_main_t *vm = (vlib_main_t *) p1;
- slave_if_t *sif = (slave_if_t *) p2;
+ vlib_main_t *vm = p1;
+ member_if_t *mif = p2;
u8 timer_expired;
- lacp_main_t *lm = &lacp_main;
- if (!(sif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
- !(sif->actor.state & LACP_STATE_LACP_ACTIVITY))
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_NO_PERIODIC, &sif->ptx_state);
+ if (!(mif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
+ !(mif->actor.state & LACP_STATE_LACP_ACTIVITY))
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_NO_PERIODIC, &mif->ptx_state);
else
{
- if (lacp_timer_is_running (sif->periodic_timer) &&
- lacp_timer_is_expired (lm->vlib_main, sif->periodic_timer))
+ if (lacp_timer_is_running (mif->periodic_timer) &&
+ lacp_timer_is_expired (vm, mif->periodic_timer))
timer_expired = 1;
else
timer_expired = 0;
- lacp_start_periodic_timer (lm->vlib_main, sif,
- LACP_FAST_PERIODIC_TIMER);
+ lacp_start_periodic_timer (vm, mif, LACP_FAST_PERIODIC_TIMER);
if (timer_expired)
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_TIMER_EXPIRED, &sif->ptx_state);
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_TIMER_EXPIRED, &mif->ptx_state);
- if (!(sif->partner.state & LACP_STATE_LACP_TIMEOUT))
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_LONG_TIMEOUT, &sif->ptx_state);
+ if (!(mif->partner.state & LACP_STATE_LACP_TIMEOUT))
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_LONG_TIMEOUT, &mif->ptx_state);
}
return 0;
int
lacp_ptx_action_timer_expired (void *p1, void *p2)
{
- vlib_main_t *vm = (vlib_main_t *) p1;
- slave_if_t *sif = (slave_if_t *) p2;
+ vlib_main_t *vm = p1;
+ member_if_t *mif = p2;
- if (!(sif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
- !(sif->actor.state & LACP_STATE_LACP_ACTIVITY))
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_NO_PERIODIC, &sif->ptx_state);
+ if (!(mif->partner.state & LACP_STATE_LACP_ACTIVITY) &&
+ !(mif->actor.state & LACP_STATE_LACP_ACTIVITY))
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_NO_PERIODIC, &mif->ptx_state);
else
{
- sif->ntt = 1;
- lacp_machine_dispatch (&lacp_tx_machine, vm, sif, LACP_TX_EVENT_NTT,
- &sif->tx_state);
- if (sif->partner.state & LACP_STATE_LACP_TIMEOUT)
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_SHORT_TIMEOUT, &sif->ptx_state);
+ mif->ntt = 1;
+ lacp_machine_dispatch (&lacp_tx_machine, vm, mif, LACP_TX_EVENT_NTT,
+ &mif->tx_state);
+ if (mif->partner.state & LACP_STATE_LACP_TIMEOUT)
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_SHORT_TIMEOUT, &mif->ptx_state);
else
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_LONG_TIMEOUT, &sif->ptx_state);
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_LONG_TIMEOUT, &mif->ptx_state);
}
return 0;
{.str = NULL}
};
int e = va_arg (*args, int);
- lacp_event_struct *event_entry =
- (lacp_event_struct *) & lacp_ptx_event_array;
+ lacp_event_struct *event_entry = lacp_ptx_event_array;
if (e >= (sizeof (lacp_ptx_event_array) / sizeof (*event_entry)))
s = format (s, "Bad event %d", e);
}
void
-lacp_ptx_debug_func (slave_if_t * sif, int event, int state,
+lacp_ptx_debug_func (member_if_t * mif, int event, int state,
lacp_fsm_state_t * transition)
{
- clib_warning ("%U-PTX: event %U, old state %U, new state %U",
- format_vnet_sw_if_index_name, vnet_get_main (),
- sif->sw_if_index, format_ptx_event,
- event, format_ptx_sm_state, state, format_ptx_sm_state,
- transition->next_state);
+ vlib_worker_thread_t *w = vlib_worker_threads + os_get_thread_index ();
+ /* *INDENT-OFF* */
+ ELOG_TYPE_DECLARE (e) =
+ {
+ .format = "%s",
+ .format_args = "T4",
+ };
+ /* *INDENT-ON* */
+ struct
+ {
+ u32 event;
+ } *ed = 0;
+
+ ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e, w->elog_track);
+ ed->event =
+ elog_string (&vlib_global_main.elog_main, "%U-PTX: %U, %U->%U%c",
+ format_vnet_sw_if_index_name, vnet_get_main (),
+ mif->sw_if_index, format_ptx_event, event,
+ format_ptx_sm_state, state, format_ptx_sm_state,
+ transition->next_state, 0);
}
void
-lacp_init_ptx_machine (vlib_main_t * vm, slave_if_t * sif)
+lacp_init_ptx_machine (vlib_main_t * vm, member_if_t * mif)
{
- lacp_machine_dispatch (&lacp_ptx_machine, vm, sif,
- LACP_PTX_EVENT_NO_PERIODIC, &sif->ptx_state);
+ lacp_machine_dispatch (&lacp_ptx_machine, vm, mif,
+ LACP_PTX_EVENT_NO_PERIODIC, &mif->ptx_state);
}
/*