Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 lines
4.7 KiB

/********************************************************************/
/** 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