www.pudn.com > PPPOE.rar > pppoefsm.h
//********************************************************************
// ÈÕÆÚ: 2004/08/25 - 25:8:2004 15:29
// Ãûǰ: tiamo
// ÃèÊö: pppoe fsm
//*********************************************************************
#pragma once
// FSM state
#define FSM_IDLE 0x0
#define FSM_CLIENT_SEND_PADI 0x1
#define FSM_CLIENT_WAIT_FOR_PADO 0x2
#define FSM_CLIENT_SEND_PADR 0x3
#define FSM_CLIENT_WAIT_FOR_PADS 0x4
#define FSM_SERVER_SEND_PADS 0x5
#define FSM_SERVER_WAIT_FOR_ANSWER 0x6
#define FSM_SERVER_ANSWER_OK 0x7
#define FSM_SESSION 0x8
#define FSM_DEAD 0x9
extern "C"
{
// indicate recved packets DISPATCH_LEVEL
VOID IndicateRecvedPackets(PTIMER_ITEM pItem,PVOID pContext,PVOID pCancelContext);
// schedule indicate recved packets DISPATCH_LEVEL
VOID ScheduleIndicateRecvedPacketTimer(PCHANNEL pChannel);
// process recved packets DISPATCH_LEVEL
VOID ProcessRecvedPacket(PBIND_CONTEXT pBind,PPACKET pPacket);
// process ctrl packets DISPATCH_LEVEL
VOID ProcessCtrlPacket(PBIND_CONTEXT pBind,PPACKET pPacket);
// client send PADI DISPATCH_LEVEL
VOID ClientSendPADI(PCHANNEL pChannel,PBIND_CONTEXT pBind,PPACKET pRecvedPacket);
// wait for PADO DISPATCH_LEVEL
VOID ClientWaitForPADO(PCHANNEL pChannel,PBIND_CONTEXT pBind,PPACKET pRecvedPacket);
// wait for PADS DISPATCH_LEVEL
VOID ClientWaitForPADS(PCHANNEL pChannel,PBIND_CONTEXT pBind,PPACKET pRecvedPacket);
// fsm run DISPATCH_LEVEL
VOID FsmRun(PCHANNEL pChannel,PBIND_CONTEXT pBind,PPACKET pRecvedPacket);
// create host unique <= DISPATCH_LEVEL
VOID CreateUniqueValue(PCHANNEL pChannel,PLARGE_INTEGER pUnique,PUSHORT pusLen);
// send PADR time out DISPATCH_LEVEL
VOID FsmSendPADRTimeOut(PTIMER_ITEM pItem,PVOID pContext,PVOID pCancelContext);
// send PADI time out DISPATCH_LEVEL
VOID FsmSendPADITimeOut(PTIMER_ITEM pItem,PVOID pContext,PVOID pCancelContext);
}