X-Git-Url: https://gerrit.fd.io/r/gitweb?p=vpp.git;a=blobdiff_plain;f=src%2Fplugins%2Flacp%2Frx_machine.c;h=60edc80d86308c74834a1b8c55654c87a8c8c6a6;hp=605cccba08c8fd2a248dc470e7013072a2afd140;hb=4c4223edf;hpb=4d1423c5ace249f6609a41fadec9e4b9c4b323de diff --git a/src/plugins/lacp/rx_machine.c b/src/plugins/lacp/rx_machine.c index 605cccba08c..60edc80d863 100644 --- a/src/plugins/lacp/rx_machine.c +++ b/src/plugins/lacp/rx_machine.c @@ -111,11 +111,11 @@ lacp_machine_t lacp_rx_machine = { }; static void -lacp_set_port_unselected (vlib_main_t * vm, slave_if_t * sif) +lacp_set_port_unselected (vlib_main_t * vm, member_if_t * mif) { - sif->selected = LACP_PORT_UNSELECTED; + mif->selected = LACP_PORT_UNSELECTED; - switch (sif->mux_state) + switch (mif->mux_state) { case LACP_MUX_STATE_DETACHED: break; @@ -125,78 +125,78 @@ lacp_set_port_unselected (vlib_main_t * vm, slave_if_t * sif) return; break; case LACP_MUX_STATE_COLLECTING_DISTRIBUTING: - if (sif->partner.state & LACP_STATE_SYNCHRONIZATION) + if (mif->partner.state & LACP_STATE_SYNCHRONIZATION) return; break; default: break; } - lacp_machine_dispatch (&lacp_mux_machine, vm, sif, - LACP_MUX_EVENT_UNSELECTED, &sif->mux_state); + lacp_machine_dispatch (&lacp_mux_machine, vm, mif, + LACP_MUX_EVENT_UNSELECTED, &mif->mux_state); } static void -lacp_update_default_selected (vlib_main_t * vm, slave_if_t * sif) +lacp_update_default_selected (vlib_main_t * vm, member_if_t * mif) { - if ((sif->partner_admin.state & LACP_STATE_AGGREGATION) != - (sif->partner.state & LACP_STATE_AGGREGATION) || - memcmp (&sif->partner, &sif->partner_admin, - sizeof (sif->partner) - sizeof (sif->partner.state))) + if ((mif->partner_admin.state & LACP_STATE_AGGREGATION) != + (mif->partner.state & LACP_STATE_AGGREGATION) || + memcmp (&mif->partner, &mif->partner_admin, + sizeof (mif->partner) - sizeof (mif->partner.state))) { - lacp_set_port_unselected (vm, sif); + lacp_set_port_unselected (vm, mif); } } static void -lacp_record_default (slave_if_t * sif) +lacp_record_default (member_if_t * mif) { - sif->partner = sif->partner_admin; - sif->actor.state |= LACP_STATE_DEFAULTED; + mif->partner = mif->partner_admin; + mif->actor.state |= LACP_STATE_DEFAULTED; } static void -lacp_update_selected (vlib_main_t * vm, slave_if_t * sif) +lacp_update_selected (vlib_main_t * vm, member_if_t * mif) { - lacp_pdu_t *lacpdu = (lacp_pdu_t *) sif->last_rx_pkt; + lacp_pdu_t *lacpdu = (lacp_pdu_t *) mif->last_rx_pkt; if ((lacpdu->actor.port_info.state & LACP_STATE_AGGREGATION) != - (sif->partner.state & LACP_STATE_AGGREGATION) || - memcmp (&sif->partner, &lacpdu->actor.port_info, - sizeof (sif->partner) - sizeof (sif->partner.state))) + (mif->partner.state & LACP_STATE_AGGREGATION) || + memcmp (&mif->partner, &lacpdu->actor.port_info, + sizeof (mif->partner) - sizeof (mif->partner.state))) { - lacp_set_port_unselected (vm, sif); + lacp_set_port_unselected (vm, mif); } } static void -lacp_update_ntt (vlib_main_t * vm, slave_if_t * sif) +lacp_update_ntt (vlib_main_t * vm, member_if_t * mif) { - lacp_pdu_t *lacpdu = (lacp_pdu_t *) sif->last_rx_pkt; + lacp_pdu_t *lacpdu = (lacp_pdu_t *) mif->last_rx_pkt; u8 states = LACP_STATE_LACP_ACTIVITY | LACP_STATE_LACP_TIMEOUT | LACP_STATE_SYNCHRONIZATION | LACP_STATE_AGGREGATION; if ((states & lacpdu->partner.port_info.state) != - (states & sif->actor.state) - || memcmp (&sif->actor, &lacpdu->partner.port_info, - sizeof (sif->actor) - sizeof (sif->actor.state))) + (states & mif->actor.state) + || memcmp (&mif->actor, &lacpdu->partner.port_info, + sizeof (mif->actor) - sizeof (mif->actor.state))) { - sif->ntt = 1; - lacp_start_periodic_timer (vm, sif, 0); + mif->ntt = 1; + lacp_start_periodic_timer (vm, mif, 0); } } /* - * compare lacpdu partner info against sif->partner. Return 1 if they match, 0 + * compare lacpdu partner info against mif->partner. Return 1 if they match, 0 * otherwise. */ static u8 -lacp_compare_partner (slave_if_t * sif) +lacp_compare_partner (member_if_t * mif) { - lacp_pdu_t *lacpdu = (lacp_pdu_t *) sif->last_rx_pkt; + lacp_pdu_t *lacpdu = (lacp_pdu_t *) mif->last_rx_pkt; - if ((!memcmp (&sif->partner, &lacpdu->actor.port_info, - sizeof (sif->partner) - sizeof (sif->partner.state)) && - ((sif->actor.state & LACP_STATE_AGGREGATION) == + if ((!memcmp (&mif->partner, &lacpdu->actor.port_info, + sizeof (mif->partner) - sizeof (mif->partner.state)) && + ((mif->actor.state & LACP_STATE_AGGREGATION) == (lacpdu->partner.port_info.state & LACP_STATE_AGGREGATION))) || ((lacpdu->actor.port_info.state & LACP_STATE_AGGREGATION) == 0)) return 1; @@ -205,50 +205,50 @@ lacp_compare_partner (slave_if_t * sif) } static void -lacp_record_pdu (vlib_main_t * vm, slave_if_t * sif) +lacp_record_pdu (vlib_main_t * vm, member_if_t * mif) { - lacp_pdu_t *lacpdu = (lacp_pdu_t *) sif->last_rx_pkt; + lacp_pdu_t *lacpdu = (lacp_pdu_t *) mif->last_rx_pkt; u8 match; /* Transition PTX out of NO_PERIODIC if needed */ - if (!(sif->partner.state & LACP_STATE_LACP_ACTIVITY) && + if (!(mif->partner.state & LACP_STATE_LACP_ACTIVITY) && (lacpdu->actor.port_info.state & LACP_STATE_LACP_ACTIVITY)) - lacp_ptx_post_short_timeout_event (vm, sif); - match = lacp_compare_partner (sif); - sif->partner = lacpdu->actor.port_info; - sif->actor.state &= ~LACP_STATE_DEFAULTED; + lacp_ptx_post_short_timeout_event (vm, mif); + match = lacp_compare_partner (mif); + mif->partner = lacpdu->actor.port_info; + mif->actor.state &= ~LACP_STATE_DEFAULTED; if (match && (lacpdu->actor.port_info.state & LACP_STATE_SYNCHRONIZATION)) - sif->partner.state |= LACP_STATE_SYNCHRONIZATION; + mif->partner.state |= LACP_STATE_SYNCHRONIZATION; else - sif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; + mif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; } static void -lacp_set_port_moved (vlib_main_t * vm, slave_if_t * sif, u8 val) +lacp_set_port_moved (vlib_main_t * vm, member_if_t * mif, u8 val) { - sif->port_moved = val; - - if (sif->port_moved) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_PORT_MOVED, &sif->rx_state); - else if (!sif->port_enabled) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_PORT_DISABLED, &sif->rx_state); + mif->port_moved = val; + + if (mif->port_moved) + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_PORT_MOVED, &mif->rx_state); + else if (!mif->port_enabled) + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_PORT_DISABLED, &mif->rx_state); } int lacp_rx_action_initialize (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; - lacp_set_port_unselected (vm, sif); - lacp_record_default (sif); - sif->actor.state &= ~LACP_STATE_EXPIRED; - lacp_set_port_moved (vm, sif, 0); + lacp_set_port_unselected (vm, mif); + lacp_record_default (mif); + mif->actor.state &= ~LACP_STATE_EXPIRED; + lacp_set_port_moved (vm, mif, 0); /* UCT */ - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_BEGIN, &sif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_BEGIN, &mif->rx_state); return 0; } @@ -257,22 +257,22 @@ int lacp_rx_action_port_disabled (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; - sif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; - if (sif->port_moved) + mif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; + if (mif->port_moved) { - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_PORT_MOVED, &sif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_PORT_MOVED, &mif->rx_state); } - if (sif->port_enabled) + if (mif->port_enabled) { - if (sif->lacp_enabled) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_LACP_ENABLED, &sif->rx_state); + if (mif->lacp_enabled) + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_LACP_ENABLED, &mif->rx_state); else - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_LACP_DISABLED, &sif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_LACP_DISABLED, &mif->rx_state); } return 0; @@ -282,25 +282,25 @@ int lacp_rx_action_expired (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; u8 timer_expired; - sif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; - sif->partner.state |= LACP_STATE_LACP_TIMEOUT; - lacp_ptx_post_short_timeout_event (vm, sif); - if (lacp_timer_is_running (sif->current_while_timer) && - lacp_timer_is_expired (vm, sif->current_while_timer)) + mif->partner.state &= ~LACP_STATE_SYNCHRONIZATION; + mif->partner.state |= LACP_STATE_LACP_TIMEOUT; + lacp_ptx_post_short_timeout_event (vm, mif); + if (lacp_timer_is_running (mif->current_while_timer) && + lacp_timer_is_expired (vm, mif->current_while_timer)) timer_expired = 1; else timer_expired = 0; - lacp_start_current_while_timer (vm, sif, sif->ttl_in_seconds); - sif->actor.state |= LACP_STATE_EXPIRED; + lacp_start_current_while_timer (vm, mif, mif->ttl_in_seconds); + mif->actor.state |= LACP_STATE_EXPIRED; if (timer_expired) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_TIMER_EXPIRED, &sif->rx_state); - if (sif->last_rx_pkt && vec_len (sif->last_rx_pkt)) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_PDU_RECEIVED, &sif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_TIMER_EXPIRED, &mif->rx_state); + if (mif->last_rx_pkt && vec_len (mif->last_rx_pkt)) + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_PDU_RECEIVED, &mif->rx_state); return 0; } @@ -309,12 +309,12 @@ int lacp_rx_action_lacp_disabled (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; - lacp_set_port_unselected (vm, sif); - lacp_record_default (sif); - sif->partner.state &= ~LACP_STATE_AGGREGATION; - sif->actor.state &= ~LACP_STATE_EXPIRED; + lacp_set_port_unselected (vm, mif); + lacp_record_default (mif); + mif->partner.state &= ~LACP_STATE_AGGREGATION; + mif->actor.state &= ~LACP_STATE_EXPIRED; return 0; } @@ -323,33 +323,33 @@ int lacp_rx_action_defaulted (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; - lacp_stop_timer (&sif->current_while_timer); - lacp_update_default_selected (vm, sif); - lacp_record_default (sif); - sif->actor.state &= ~LACP_STATE_EXPIRED; - if (sif->last_rx_pkt && vec_len (sif->last_rx_pkt)) - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_PDU_RECEIVED, &sif->rx_state); + lacp_stop_timer (&mif->current_while_timer); + lacp_update_default_selected (vm, mif); + lacp_record_default (mif); + mif->actor.state &= ~LACP_STATE_EXPIRED; + if (mif->last_rx_pkt && vec_len (mif->last_rx_pkt)) + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_PDU_RECEIVED, &mif->rx_state); return 0; } static int -lacp_port_is_moved (vlib_main_t * vm, slave_if_t * sif) +lacp_port_is_moved (vlib_main_t * vm, member_if_t * mif) { bond_main_t *bm = &bond_main; - slave_if_t *sif2; - lacp_pdu_t *lacpdu = (lacp_pdu_t *) sif->last_rx_pkt; + member_if_t *mif2; + lacp_pdu_t *lacpdu = (lacp_pdu_t *) mif->last_rx_pkt; /* *INDENT-OFF* */ - pool_foreach (sif2, bm->neighbors, { + pool_foreach (mif2, bm->neighbors, { { - if ((sif != sif2) && (sif2->rx_state == LACP_RX_STATE_PORT_DISABLED) && - !memcmp (sif2->partner.system, + if ((mif != mif2) && (mif2->rx_state == LACP_RX_STATE_PORT_DISABLED) && + !memcmp (mif2->partner.system, lacpdu->partner.port_info.system, 6) && - (sif2->partner.port_number == lacpdu->partner.port_info.port_number)) + (mif2->partner.port_number == lacpdu->partner.port_info.port_number)) return 1; } }); @@ -362,16 +362,16 @@ int lacp_rx_action_current (void *p1, void *p2) { vlib_main_t *vm = p1; - slave_if_t *sif = p2; + member_if_t *mif = p2; - lacp_update_selected (vm, sif); - lacp_update_ntt (vm, sif); - lacp_record_pdu (vm, sif); - lacp_start_current_while_timer (vm, sif, sif->ttl_in_seconds); - sif->actor.state &= ~LACP_STATE_EXPIRED; - if (lacp_port_is_moved (vm, sif)) - lacp_set_port_moved (vm, sif, 1); - lacp_selection_logic (vm, sif); + lacp_update_selected (vm, mif); + lacp_update_ntt (vm, mif); + lacp_record_pdu (vm, mif); + lacp_start_current_while_timer (vm, mif, mif->ttl_in_seconds); + mif->actor.state &= ~LACP_STATE_EXPIRED; + if (lacp_port_is_moved (vm, mif)) + lacp_set_port_moved (vm, mif, 1); + lacp_selection_logic (vm, mif); return 0; } @@ -397,7 +397,7 @@ format_rx_event (u8 * s, va_list * args) } void -lacp_rx_debug_func (slave_if_t * sif, int event, int state, +lacp_rx_debug_func (member_if_t * mif, int event, int state, lacp_fsm_state_t * transition) { vlib_worker_thread_t *w = vlib_worker_threads + os_get_thread_index (); @@ -416,18 +416,18 @@ lacp_rx_debug_func (slave_if_t * sif, int event, int state, ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e, w->elog_track); ed->event = elog_string (&vlib_global_main.elog_main, "%U-RX: %U, %U->%U%c", format_vnet_sw_if_index_name, vnet_get_main (), - sif->sw_if_index, format_rx_event, event, + mif->sw_if_index, format_rx_event, event, format_rx_sm_state, state, format_rx_sm_state, transition->next_state, 0); } void -lacp_init_rx_machine (vlib_main_t * vm, slave_if_t * sif) +lacp_init_rx_machine (vlib_main_t * vm, member_if_t * mif) { - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, LACP_RX_EVENT_BEGIN, - &sif->rx_state); - lacp_machine_dispatch (&lacp_rx_machine, vm, sif, - LACP_RX_EVENT_LACP_ENABLED, &sif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, LACP_RX_EVENT_BEGIN, + &mif->rx_state); + lacp_machine_dispatch (&lacp_rx_machine, vm, mif, + LACP_RX_EVENT_LACP_ENABLED, &mif->rx_state); } /*