/*        lac_machines.h   2.02.000 20JUN99 12:17   */
#ifndef   lac_machines_h__
#define   lac_machines_h__

#include "sys.h"
#include "lac_options.h"

/******************************************************************************
 * LAC : LINK AGGREGATION CONTROL PROTOCOL : STATE MACHINES
 ******************************************************************************
 */
typedef enum /* Lac_event */
{
   Lac_null = 0,
   Lac_lacp_disabled,       Lac_lacp_enabled,
   Lac_init,
   Lac_mgt,
   Lac_tick,
   Lac_port_enabled,        Lac_port_disabled,
   Lac_received,
   Lac_new_info,
   Lac_attach,              Lac_attached,
   Lac_detach,              Lac_detached,
   Lac_enable_collector,    Lac_collector_on,
   Lac_disable_collector,   Lac_collector_off,
   Lac_enable_distributor,  Lac_distributor_on,
   Lac_disable_distributor, Lac_distributor_off,
   Lac_ntt,                 Lac_txd,
   Lac_check_moved
} Lac_event;

extern void rx_machine(      Lac_port *port, Lac_event event, Lac_pdu *pdu);

extern void mux_control(     Lac_port *port, Lac_event event);

extern void hw_control(      Lac_port *port, Lac_event event);

extern void periodic_machine(Lac_port *port, Lac_event event);

extern void tx_machine(      Lac_port *port, Lac_event event);
extern void tx_opportunity(  Lac_port *port);

#endif /* lac_machines_h__ */
