164 lines
4.7 KiB
C
164 lines
4.7 KiB
C
|
/********************************************************************/
|
||
|
/** Copyright(c) 1989 Microsoft Corporation. **/
|
||
|
/********************************************************************/
|
||
|
|
||
|
//***
|
||
|
//
|
||
|
// Filename: lcp.h
|
||
|
//
|
||
|
// Description:
|
||
|
//
|
||
|
// History:
|
||
|
// Nov 11,1993. NarenG Created original version.
|
||
|
//
|
||
|
|
||
|
#ifndef _LCP_
|
||
|
#define _LCP_
|
||
|
|
||
|
//
|
||
|
// LCP option types
|
||
|
//
|
||
|
|
||
|
#define LCP_OPTION_MRU 0x01
|
||
|
#define LCP_OPTION_ACCM 0x02
|
||
|
#define LCP_OPTION_AUTHENT 0x03
|
||
|
#define LCP_OPTION_MAGIC 0x05
|
||
|
#define LCP_OPTION_PFC 0x07
|
||
|
#define LCP_OPTION_ACFC 0x08
|
||
|
#define LCP_OPTION_CALLBACK 0x0D
|
||
|
#define LCP_OPTION_MRRU 0x11
|
||
|
#define LCP_OPTION_SHORT_SEQ 0x12
|
||
|
#define LCP_OPTION_ENDPOINT 0x13
|
||
|
#define LCP_OPTION_LINK_DISCRIM 0x17
|
||
|
#define LCP_OPTION_LIMIT 0x17 // highest # we can handle
|
||
|
|
||
|
//
|
||
|
// Authentication protocols
|
||
|
//
|
||
|
|
||
|
#define LCP_AP_FIRST 0x00000001
|
||
|
#define LCP_AP_EAP 0x00000001
|
||
|
#define LCP_AP_CHAP_MS_NEW 0x00000002
|
||
|
#define LCP_AP_CHAP_MS 0x00000004
|
||
|
#define LCP_AP_CHAP_MD5 0x00000008
|
||
|
#define LCP_AP_SPAP_NEW 0x00000010
|
||
|
#define LCP_AP_SPAP_OLD 0x00000020
|
||
|
#define LCP_AP_PAP 0x00000040
|
||
|
#define LCP_AP_MAX 0x00000080
|
||
|
|
||
|
//
|
||
|
// Table for LCP configuration requests
|
||
|
//
|
||
|
|
||
|
typedef struct _LCP_OPTIONS
|
||
|
{
|
||
|
DWORD Negotiate; // negotiation flags
|
||
|
|
||
|
#define LCP_N_MRU (1 << LCP_OPTION_MRU)
|
||
|
#define LCP_N_ACCM (1 << LCP_OPTION_ACCM)
|
||
|
#define LCP_N_AUTHENT (1 << LCP_OPTION_AUTHENT)
|
||
|
#define LCP_N_MAGIC (1 << LCP_OPTION_MAGIC)
|
||
|
#define LCP_N_PFC (1 << LCP_OPTION_PFC)
|
||
|
#define LCP_N_ACFC (1 << LCP_OPTION_ACFC)
|
||
|
#define LCP_N_CALLBACK (1 << LCP_OPTION_CALLBACK)
|
||
|
#define LCP_N_MRRU (1 << LCP_OPTION_MRRU)
|
||
|
#define LCP_N_SHORT_SEQ (1 << LCP_OPTION_SHORT_SEQ)
|
||
|
#define LCP_N_ENDPOINT (1 << LCP_OPTION_ENDPOINT)
|
||
|
#define LCP_N_LINK_DISCRIM (1 << LCP_OPTION_LINK_DISCRIM)
|
||
|
|
||
|
DWORD MRU; // Maximum Receive Unit
|
||
|
DWORD ACCM; // Async Control Char Map
|
||
|
DWORD AP; // Authentication protocol
|
||
|
DWORD APDataSize; // Auth. protocol data size in bytes
|
||
|
PBYTE pAPData; // Pointer Auth. protocol data
|
||
|
DWORD MagicNumber; // Magic number value
|
||
|
DWORD PFC; // Protocol field compression.
|
||
|
DWORD ACFC; // Address and Control Field Compression.
|
||
|
DWORD Callback; // Callback
|
||
|
DWORD MRRU; // Maximum Reconstructed Receive Unit
|
||
|
DWORD ShortSequence; // Short Sequence Number Header Format
|
||
|
BYTE EndpointDiscr[21]; // Endpoint Discriminator.
|
||
|
DWORD dwEDLength; // Length of Endpoint Discriminator
|
||
|
DWORD dwLinkDiscriminator; // Link Discriminator (for BAP/BACP)
|
||
|
|
||
|
} LCP_OPTIONS, *PLCP_OPTIONS;
|
||
|
|
||
|
#define PPP_NEGOTIATE_CALLBACK 0x06
|
||
|
|
||
|
//
|
||
|
// Other configuration option values
|
||
|
//
|
||
|
|
||
|
#define LCP_ACCM_DEFAULT 0xFFFFFFFFL
|
||
|
#define LCP_MRU_HI 1500 // High MRU limit
|
||
|
#define LCP_MRU_LO 128 // Lower MRU limit
|
||
|
#define LCP_DEFAULT_MRU 1500
|
||
|
|
||
|
#define LCP_REQ_TRY 20 // REQ attempts
|
||
|
|
||
|
#define LCP_SPAP_VERSION 0x01000001
|
||
|
|
||
|
//
|
||
|
// Local.Want: Options to request.
|
||
|
// Contains desired value.
|
||
|
// Only non-default options need to be negotiated.
|
||
|
// Initially, all are default.
|
||
|
// Local.WillNegotiate: Options to accept in a NAK from remote.
|
||
|
// local.Work: Options currently being negotiated.
|
||
|
// Value is valid only when negotiate bit is set.
|
||
|
//
|
||
|
// Remote.Want: Options to suggest by NAK if not present in REQ.
|
||
|
// Contains desired value.
|
||
|
// Remote.WillNegotiate: Options to accept in a REQ from remote.
|
||
|
// Remote.Work: Options currently being negotiated.
|
||
|
// Value is valid only when negotiate bit is set.
|
||
|
//
|
||
|
|
||
|
typedef struct _LCP_SIDE
|
||
|
{
|
||
|
DWORD WillNegotiate;
|
||
|
|
||
|
DWORD fAPsAvailable;
|
||
|
|
||
|
DWORD fLastAPTried;
|
||
|
|
||
|
DWORD fOldLastAPTried;
|
||
|
|
||
|
LCP_OPTIONS Want;
|
||
|
|
||
|
LCP_OPTIONS Work;
|
||
|
|
||
|
} LCP_SIDE, *PLCP_SIDE;
|
||
|
|
||
|
//
|
||
|
// LCP control block
|
||
|
//
|
||
|
|
||
|
typedef struct _LCPCB
|
||
|
{
|
||
|
HPORT hPort;
|
||
|
|
||
|
BOOL fServer;
|
||
|
|
||
|
BOOL fRouter;
|
||
|
|
||
|
DWORD dwMRUFailureCount;
|
||
|
|
||
|
DWORD dwMagicNumberFailureCount;
|
||
|
|
||
|
PPP_CONFIG_INFO PppConfigInfo;
|
||
|
|
||
|
LCP_SIDE Local;
|
||
|
|
||
|
LCP_SIDE Remote;
|
||
|
|
||
|
}LCPCB, *PLCPCB;
|
||
|
|
||
|
DWORD
|
||
|
LcpGetInfo(
|
||
|
IN DWORD dwProtocolId,
|
||
|
OUT PPPCP_INFO* pCpInfo
|
||
|
);
|
||
|
|
||
|
#endif
|