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); 
}