📄 ppp.h
字号:
//--------------------------------------------------------------------------
// Ip Stack
//--------------------------------------------------------------------------
// PPP.H
//
// Basic includes for PPP
//
// Author: Michael A. Denio
// Copyright 2000 by Texas Instruments Inc.
//-------------------------------------------------------------------------
// Special Read MACRO (is processor independent)
#define RdNet16s(x) ((UINT16)((*(UINT8 *)(x)))<<8 | (UINT16)(*(((UINT8 *)(x))+1)))
//-----------------------------------------------
// Network Headers
//-----------------------------------------------
//--------------------
// LCP Protocol Header
typedef struct {
UINT8 Code;
UINT8 Id;
UINT16 Length;
UINT8 TagData[1];
} LCPHDR;
#define SIZE_LCPHDR 4
//-----------------------------------------------
// PPP Protocols
#define PPPPROT_IP 0x0021
#define PPPPROT_IPCP 0x8021
#define PPPPROT_LCP 0xc021
#define PPPPROT_PAP 0xc023
#define PPPPROT_CHAP 0xc223
//-----------------------------------------------
// State Codes for LCP and IPCP
#define PROT_STATE_CLOSED 0 // Layer Closed
#define PROT_STATE_OPEN 1 // Layer Open
#define PROT_STATE_CONNECTED 2 // Negotiation completed
#define PROT_STATE_STOPPED 3 // Layer Stopped
//-----------------------------------------------
// State Code for each half of a LCP/IPCP negotiation
#define PROT_CFG_IDLE 0 // No connection
#define PROT_CFG_PENDING 1 // CFG pending
#define PROT_CFG_AUTH 2 // CFG authentication
#define PROT_CFG_OK 3 // CFG established
//-----------------------------------------------
// LCP Instance Structure
typedef struct {
uint State; // State of LCP session
uint StateCFG; // LCP CFG State machine
uint StateACK; // LCP ACK State machine
UINT8 LastId; // Id of last CFG sent
int Timer; // Restart timer
int Count; // Restart event count
UINT32 PeerMagic; // Peer's Magic Number
UINT32 OurMagic; // Our Magic Number
UINT32 OptMask; // Available Options
UINT32 UseMask; // Options in use
} LCP_SESSION;
//-----------------------------------------------
// AUTH Instance Structure
typedef struct {
uint State; // State of LCP session
UINT8 LastId; // Id of last CFG sent
int Timer; // Restart timer
int Count; // Restart event count
UINT16 Protocol; // Authentication protocol
UINT8 SeedLen; // MD5 Data seed length
UINT8 SeedData[16];// MD5 Data seed data
} AUTH_SESSION;
//-----------------------------------------------
// IPCP Instance Structure
typedef struct {
uint State; // State of IPCP session
uint StateCFG; // IPCP CFG State machine
uint StateACK; // IPCP ACK State machine
UINT8 LastId; // Id of last CFG sent
int Timer; // Restart timer
int Count; // Restart event count
UINT32 OptMask; // Available Options
UINT32 UseMask; // Options in use
} IPCP_SESSION;
//-----------------------------------------------
// PPP Instance Structure
typedef struct {
//---[ These fields match IF structure ]---
uint Type; // Set to HTYPE_PPP
uint llIndex; // Low-level Device Index
uint ProtMTU; // MTU of payload
//-----------------------------------------
uint InUse; // Non-standard Reference count
#define INUSE_IDLE 1
#define INUSE_LOCKED 65535
HANDLE hSI; // Handle to serial interface driver
HANDLE hRoute; // Route when connected as SERVER
HANDLE hNet; // Handle to network address in CFG
HANDLE hClient; // Handle to client record in CFG
uint Flags; // Mode flags
UINT32 CMap; // Our desired CMap
LCP_SESSION lcp; // LCP Session
AUTH_SESSION auth; // AUTH Session
IPCP_SESSION ipcp; // LCP Session
uint MTU_Phys; // Physical MTU
uint MTU_Rx; // MTU of peer
uint MTU_Tx; // Our negotiated MTU
IPN IPServer; // Server IP (us in server mode)
IPN IPMask; // Server IP Mask (when in server mode)
IPN IPClient; // Client IP (us in client mode)
IPN IPDNS1; // DNS Server 1
IPN IPDNS2; // DNS Server 2
IPN IPNBNS1; // NBNS Server 1
IPN IPNBNS2; // NBNS Server 2
char UserId[PPPNAMELEN]; // Username
char Password[PPPNAMELEN]; // Password
void (*SICtrl)( HANDLE, uint, UINT32, HANDLE );
} PPP_SESSION;
//-----------------------------------------------
// PPP Events
#define PPP_EVENT_LCP_CONNECT 1
#define PPP_EVENT_LCP_STOPPED 2
#define PPP_EVENT_AUTH_CONNECT 3
#define PPP_EVENT_AUTH_STOPPED 4
#define PPP_EVENT_IPCP_CONNECT 5
#define PPP_EVENT_IPCP_STOPPED 6
//-----------------------------------------------
// Private PPP Functions
void pppEvent( HANDLE hPPP, uint Event );
//-----------------------------------------------
// Private LCP Functions
void lcpInit( PPP_SESSION *p ); // Init LCP instance
void lcpOpen( PPP_SESSION *p, uint fStart ); // Open and/or Start LCP
void lcpClose( PPP_SESSION *p ); // Stop the CFG process
void lcpInput( PPP_SESSION *p, HANDLE hPkt ); // Rx a Packet
void lcpTimer( PPP_SESSION *p ); // Timer Tick
//-----------------------------------------------
// Private AUTH Functions
void authInit( PPP_SESSION *p ); // Init AUTH instance
void authStart( PPP_SESSION *p ); // Start AUTH
void authTimer( PPP_SESSION *p ); // Timer Tick
void papInput( PPP_SESSION *p, HANDLE hPkt ); // Rx a Packet
void chapInput( PPP_SESSION *p, HANDLE hPkt ); // Rx a Packet
//-----------------------------------------------
// Private IPCP Functions
void ipcpInit( PPP_SESSION *p ); // Init IPCP instance
void ipcpStart( PPP_SESSION *p ); // Start IPCP
void ipcpInput( PPP_SESSION *p, HANDLE hPkt ); // Rx a Packet
void ipcpTimer( PPP_SESSION *p ); // Timer Tick
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -