776 lines
22 KiB
C
776 lines
22 KiB
C
|
/* Copyright (c) 1993, Microsoft Corporation, all rights reserved
|
||
|
**
|
||
|
** rasppp.h
|
||
|
** Remote Access PPP
|
||
|
** Public PPP client API and server API header
|
||
|
*/
|
||
|
|
||
|
#ifndef _RASPPP_H_
|
||
|
#define _RASPPP_H_
|
||
|
|
||
|
#include <ras.h>
|
||
|
#include <mprapi.h> // For definitions of IPADDRESSLEN,IPXADDRESSLEN
|
||
|
// and ATADDRESSLEN
|
||
|
|
||
|
#define MAXPPPFRAMESIZE 1500
|
||
|
#define PARAMETERBUFLEN 500
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
** PPP Engine -> Client/DDM messages
|
||
|
**---------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
/* Client PPP configuration values set with RasPppStart.
|
||
|
*/
|
||
|
typedef struct _PPP_CONFIG_INFO
|
||
|
{
|
||
|
DWORD dwConfigMask;
|
||
|
DWORD dwCallbackDelay;
|
||
|
}
|
||
|
PPP_CONFIG_INFO;
|
||
|
|
||
|
/* dwConfigMask bit values.
|
||
|
**
|
||
|
** Note: Due to the implentation of compression and encryption in the drivers,
|
||
|
** 'UseSwCompression' and 'RequireMsChap' must be set, whenever
|
||
|
** 'RequireEncryption' is set.
|
||
|
*/
|
||
|
#define PPPCFG_UseCallbackDelay 0x00000001
|
||
|
#define PPPCFG_UseSwCompression 0x00000002
|
||
|
#define PPPCFG_ProjectNbf 0x00000004
|
||
|
#define PPPCFG_ProjectIp 0x00000008
|
||
|
#define PPPCFG_ProjectIpx 0x00000010
|
||
|
#define PPPCFG_ProjectAt 0x00000020
|
||
|
#define PPPCFG_NegotiateSPAP 0x00000040
|
||
|
#define PPPCFG_RequireEncryption 0x00000080
|
||
|
#define PPPCFG_NegotiateMSCHAP 0x00000100
|
||
|
#define PPPCFG_UseLcpExtensions 0x00000200
|
||
|
#define PPPCFG_NegotiateMultilink 0x00000400
|
||
|
#define PPPCFG_AuthenticatePeer 0x00000800
|
||
|
#define PPPCFG_RequireStrongEncryption 0x00001000
|
||
|
#define PPPCFG_NegotiateBacp 0x00002000
|
||
|
#define PPPCFG_AllowNoAuthentication 0x00004000
|
||
|
#define PPPCFG_NegotiateEAP 0x00008000
|
||
|
#define PPPCFG_NegotiatePAP 0x00010000
|
||
|
#define PPPCFG_NegotiateMD5CHAP 0x00020000
|
||
|
#define PPPCFG_RequireIPSEC 0x00040000
|
||
|
#define PPPCFG_DisableEncryption 0x00080000
|
||
|
#define PPPCFG_UseLmPassword 0x00200000
|
||
|
#define PPPCFG_AllowNoAuthOnDCPorts 0x00400000
|
||
|
#define PPPCFG_NegotiateStrongMSCHAP 0x00800000
|
||
|
#define PPPCFG_NoCallback 0x01000000
|
||
|
#define PPPCFG_MachineAuthentication 0x02000000
|
||
|
|
||
|
|
||
|
/*
|
||
|
**New config flag added for whistler. This is used
|
||
|
**for ras audio accelerator
|
||
|
*/
|
||
|
#define PPPCFG_AudioAccelerator 0x02000000
|
||
|
|
||
|
#define PPP_FAILURE_REMOTE_DISCONNECT 0x00000001
|
||
|
|
||
|
/* PPP stopped message sent by ppp to bring down the link
|
||
|
*/
|
||
|
typedef struct _PPP_STOPPED
|
||
|
{
|
||
|
DWORD dwFlags;
|
||
|
}
|
||
|
PPP_STOPPED;
|
||
|
|
||
|
/* PPP error notification returned by RasPppGetInfo.
|
||
|
*/
|
||
|
typedef struct _PPP_FAILURE
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
DWORD dwExtendedError; // 0 if none
|
||
|
}
|
||
|
PPP_FAILURE;
|
||
|
|
||
|
|
||
|
/* PPP control protocol results returned by RasPppGetInfo.
|
||
|
*/
|
||
|
typedef struct _PPP_NBFCP_RESULT
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
DWORD dwNetBiosError;
|
||
|
CHAR szName[ NETBIOS_NAME_LEN + 1 ];
|
||
|
WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ];
|
||
|
}
|
||
|
PPP_NBFCP_RESULT;
|
||
|
|
||
|
typedef struct _PPP_IPCP_RESULT
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
|
||
|
BOOL fSendVJHCompression;
|
||
|
BOOL fReceiveVJHCompression;
|
||
|
|
||
|
DWORD dwLocalAddress;
|
||
|
DWORD dwLocalWINSAddress;
|
||
|
DWORD dwLocalWINSBackupAddress;
|
||
|
DWORD dwLocalDNSAddress;
|
||
|
DWORD dwLocalDNSBackupAddress;
|
||
|
|
||
|
DWORD dwRemoteAddress;
|
||
|
DWORD dwRemoteWINSAddress;
|
||
|
DWORD dwRemoteWINSBackupAddress;
|
||
|
DWORD dwRemoteDNSAddress;
|
||
|
DWORD dwRemoteDNSBackupAddress;
|
||
|
}
|
||
|
PPP_IPCP_RESULT;
|
||
|
|
||
|
typedef struct _PPP_IPXCP_RESULT
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
BYTE bLocalAddress[10];
|
||
|
BYTE bRemoteAddress[10];
|
||
|
}
|
||
|
PPP_IPXCP_RESULT;
|
||
|
|
||
|
typedef struct _PPP_ATCP_RESULT
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
DWORD dwLocalAddress;
|
||
|
DWORD dwRemoteAddress;
|
||
|
}
|
||
|
PPP_ATCP_RESULT;
|
||
|
|
||
|
typedef struct _PPP_CCP_RESULT
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
DWORD dwSendProtocol;
|
||
|
DWORD dwSendProtocolData;
|
||
|
DWORD dwReceiveProtocol;
|
||
|
DWORD dwReceiveProtocolData;
|
||
|
}
|
||
|
PPP_CCP_RESULT;
|
||
|
|
||
|
#define PPPLCPO_PFC 0x00000001
|
||
|
#define PPPLCPO_ACFC 0x00000002
|
||
|
#define PPPLCPO_SSHF 0x00000004
|
||
|
#define PPPLCPO_DES_56 0x00000008
|
||
|
#define PPPLCPO_3_DES 0x00000010
|
||
|
|
||
|
typedef struct _PPP_LCP_RESULT
|
||
|
{
|
||
|
/* Valid handle indicates one of the possibly multiple connections to
|
||
|
** which this connection is bundled. INVALID_HANDLE_VALUE indicates the
|
||
|
** connection is not bundled.
|
||
|
*/
|
||
|
HPORT hportBundleMember;
|
||
|
|
||
|
DWORD dwLocalAuthProtocol;
|
||
|
DWORD dwLocalAuthProtocolData;
|
||
|
DWORD dwLocalEapTypeId;
|
||
|
DWORD dwLocalFramingType;
|
||
|
DWORD dwLocalOptions; // Look at PPPLCPO_*
|
||
|
DWORD dwRemoteAuthProtocol;
|
||
|
DWORD dwRemoteAuthProtocolData;
|
||
|
DWORD dwRemoteEapTypeId;
|
||
|
DWORD dwRemoteFramingType;
|
||
|
DWORD dwRemoteOptions; // Look at PPPLCPO_*
|
||
|
CHAR* szReplyMessage;
|
||
|
}
|
||
|
PPP_LCP_RESULT;
|
||
|
|
||
|
|
||
|
typedef struct _PPP_PROJECTION_RESULT
|
||
|
{
|
||
|
PPP_NBFCP_RESULT nbf;
|
||
|
PPP_IPCP_RESULT ip;
|
||
|
PPP_IPXCP_RESULT ipx;
|
||
|
PPP_ATCP_RESULT at;
|
||
|
PPP_CCP_RESULT ccp;
|
||
|
PPP_LCP_RESULT lcp;
|
||
|
}
|
||
|
PPP_PROJECTION_RESULT;
|
||
|
|
||
|
/* PPP error notification
|
||
|
*/
|
||
|
typedef struct _PPPDDM_FAILURE
|
||
|
{
|
||
|
DWORD dwError;
|
||
|
CHAR szUserName[ UNLEN + 1 ];
|
||
|
CHAR szLogonDomain[ DNLEN + 1 ];
|
||
|
}
|
||
|
PPPDDM_FAILURE;
|
||
|
|
||
|
|
||
|
/* Call back configuration information received by PPPDDMMSG routine.
|
||
|
*/
|
||
|
typedef struct _PPPDDM_CALLBACK_REQUEST
|
||
|
{
|
||
|
BOOL fUseCallbackDelay;
|
||
|
DWORD dwCallbackDelay;
|
||
|
CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
|
||
|
}
|
||
|
PPPDDM_CALLBACK_REQUEST;
|
||
|
|
||
|
/* BAP request to callback the remote peer
|
||
|
*/
|
||
|
typedef struct _PPPDDM_BAP_CALLBACK_REQUEST
|
||
|
{
|
||
|
HCONN hConnection;
|
||
|
CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
|
||
|
}
|
||
|
PPPDDM_BAP_CALLBACK_REQUEST;
|
||
|
|
||
|
/* Authentication information received by PPPDDMMSG routine.
|
||
|
*/
|
||
|
typedef struct _PPPDDM_AUTH_RESULT
|
||
|
{
|
||
|
CHAR szUserName[ UNLEN + 1 ];
|
||
|
CHAR szLogonDomain[ DNLEN + 1 ];
|
||
|
BOOL fAdvancedServer;
|
||
|
}
|
||
|
PPPDDM_AUTH_RESULT;
|
||
|
|
||
|
/* Notification of a new BAP link up
|
||
|
*/
|
||
|
typedef struct _PPPDDM_NEW_BAP_LINKUP
|
||
|
{
|
||
|
HRASCONN hRasConn;
|
||
|
|
||
|
}PPPDDM_NEW_BAP_LINKUP;
|
||
|
|
||
|
/* Notification of a new Bundle
|
||
|
*/
|
||
|
typedef struct _PPPDDM_NEW_BUNDLE
|
||
|
{
|
||
|
PBYTE pClientInterface;
|
||
|
|
||
|
} PPPDDM_NEW_BUNDLE;
|
||
|
|
||
|
/* Client should invoke EAP UI dialog
|
||
|
*/
|
||
|
typedef struct _PPP_INVOKE_EAP_UI
|
||
|
{
|
||
|
DWORD dwEapTypeId;
|
||
|
DWORD dwContextId;
|
||
|
PBYTE pUIContextData;
|
||
|
DWORD dwSizeOfUIContextData;
|
||
|
|
||
|
}PPP_INVOKE_EAP_UI;
|
||
|
|
||
|
/* Client should save per-connection data
|
||
|
*/
|
||
|
typedef struct _PPP_SET_CUSTOM_AUTH_DATA
|
||
|
{
|
||
|
BYTE* pConnectionData;
|
||
|
DWORD dwSizeOfConnectionData;
|
||
|
|
||
|
}PPP_SET_CUSTOM_AUTH_DATA;
|
||
|
|
||
|
/* Notification of port addition\removal\usage change
|
||
|
*/
|
||
|
typedef struct _PPPDDM_PNP_NOTIFICATION
|
||
|
{
|
||
|
PNP_EVENT_NOTIF PnPNotification;
|
||
|
|
||
|
} PPPDDM_PNP_NOTIFICATION;
|
||
|
|
||
|
/* Notification of PPP session termination
|
||
|
*/
|
||
|
typedef struct _PPPDDM_STOPPED
|
||
|
{
|
||
|
DWORD dwReason;
|
||
|
|
||
|
} PPPDDM_STOPPED;
|
||
|
|
||
|
typedef enum _PPP_MSG_ID
|
||
|
{
|
||
|
PPPMSG_PppDone = 0, // PPP negotiated all successfully.
|
||
|
PPPMSG_PppFailure, // PPP failure (fatal error including
|
||
|
// authentication failure with no
|
||
|
// retries), disconnect line.
|
||
|
PPPMSG_AuthRetry, // Authentication failed, have retries.
|
||
|
PPPMSG_Projecting, // Executing specified NCPs.
|
||
|
PPPMSG_ProjectionResult, // NCP completion status.
|
||
|
PPPMSG_CallbackRequest = 5, // Server needs "set-by-caller" number.
|
||
|
PPPMSG_Callback, // Server is about to call you back.
|
||
|
PPPMSG_ChangePwRequest, // Server needs new password (expired).
|
||
|
PPPMSG_LinkSpeed, // Calculating link speed.
|
||
|
PPPMSG_Progress, // A retry or other sub-state of
|
||
|
// progress has been reached in the
|
||
|
// current state.
|
||
|
PPPMSG_Stopped = 10, // Response to RasPppStop indicating
|
||
|
// PPP engine has stopped.
|
||
|
PPPMSG_InvokeEapUI, // Client should invoke EAP UI dialog
|
||
|
PPPMSG_SetCustomAuthData, // Save per-connection data
|
||
|
PPPDDMMSG_PppDone, // PPP negotiated successfully.
|
||
|
PPPDDMMSG_PppFailure, // PPP server failure (fatal error),
|
||
|
// disconnect line.
|
||
|
PPPDDMMSG_CallbackRequest = 15, // Callback client now.
|
||
|
PPPDDMMSG_BapCallbackRequest, // Callback remote BAP peer.
|
||
|
PPPDDMMSG_Authenticated, // Client has been authenticated.
|
||
|
PPPDDMMSG_Stopped, // Response to PppDdmStop indicating
|
||
|
// PPP engine has stopped.
|
||
|
PPPDDMMSG_NewLink, // Client is a new link in a bundle
|
||
|
PPPDDMMSG_NewBundle = 20, // Client is a new bundle
|
||
|
PPPDDMMSG_NewBapLinkUp, // Client is a new BAP link in a bundle
|
||
|
PPPDDMMSG_PnPNotification, // Port is being added or removed or usage
|
||
|
// is being changed, transport being added
|
||
|
// or removed etc.
|
||
|
PPPDDMMSG_PortCleanedUp // PPP port control block is now cleaned up
|
||
|
|
||
|
} PPP_MSG_ID;
|
||
|
|
||
|
/* Client/DDM notifications read with RasPppGetInfo.
|
||
|
*/
|
||
|
typedef struct _PPP_MESSAGE
|
||
|
{
|
||
|
struct _PPP_MESSAGE * pNext;
|
||
|
DWORD dwError;
|
||
|
PPP_MSG_ID dwMsgId;
|
||
|
HPORT hPort;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
/* dwMsgId is PPPMSG_ProjectionResult or PPPDDMMSG_Done.
|
||
|
*/
|
||
|
PPP_PROJECTION_RESULT ProjectionResult;
|
||
|
|
||
|
/* dwMsgId is PPPMSG_Failure.
|
||
|
*/
|
||
|
PPP_FAILURE Failure;
|
||
|
|
||
|
/*
|
||
|
*/
|
||
|
PPP_STOPPED Stopped;
|
||
|
|
||
|
/* dwMsgId is PPPMSG_InvokeEapUI
|
||
|
*/
|
||
|
PPP_INVOKE_EAP_UI InvokeEapUI;
|
||
|
|
||
|
/* dwMsgId is PPPMSG_SetCustomAuthData
|
||
|
*/
|
||
|
PPP_SET_CUSTOM_AUTH_DATA SetCustomAuthData;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_Failure.
|
||
|
*/
|
||
|
PPPDDM_FAILURE DdmFailure;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_Authenticated.
|
||
|
*/
|
||
|
PPPDDM_AUTH_RESULT AuthResult;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_CallbackRequest.
|
||
|
*/
|
||
|
PPPDDM_CALLBACK_REQUEST CallbackRequest;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_BapCallbackRequest.
|
||
|
*/
|
||
|
PPPDDM_BAP_CALLBACK_REQUEST BapCallbackRequest;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_NewBapLinkUp
|
||
|
*/
|
||
|
PPPDDM_NEW_BAP_LINKUP BapNewLinkUp;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_NewBundle
|
||
|
*/
|
||
|
PPPDDM_NEW_BUNDLE DdmNewBundle;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_PnPNotification
|
||
|
*/
|
||
|
PPPDDM_PNP_NOTIFICATION DdmPnPNotification;
|
||
|
|
||
|
/* dwMsgId is PPPDDMMSG_Stopped
|
||
|
*/
|
||
|
PPPDDM_STOPPED DdmStopped;
|
||
|
}
|
||
|
ExtraInfo;
|
||
|
}
|
||
|
PPP_MESSAGE;
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
** Client/DDM -> Engine messages
|
||
|
**---------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
/* Set of interface handles passed from DIM to PPP
|
||
|
*/
|
||
|
typedef struct _PPP_INTERFACE_INFO
|
||
|
{
|
||
|
ROUTER_INTERFACE_TYPE IfType;
|
||
|
HANDLE hIPInterface;
|
||
|
HANDLE hIPXInterface;
|
||
|
CHAR szzParameters[ PARAMETERBUFLEN ];
|
||
|
}
|
||
|
PPP_INTERFACE_INFO;
|
||
|
|
||
|
typedef struct _PPP_BAPPARAMS
|
||
|
{
|
||
|
DWORD dwDialMode;
|
||
|
DWORD dwDialExtraPercent;
|
||
|
DWORD dwDialExtraSampleSeconds;
|
||
|
DWORD dwHangUpExtraPercent;
|
||
|
DWORD dwHangUpExtraSampleSeconds;
|
||
|
}
|
||
|
PPP_BAPPARAMS;
|
||
|
|
||
|
typedef struct _PPP_EAP_UI_DATA
|
||
|
{
|
||
|
DWORD dwContextId;
|
||
|
PBYTE pEapUIData;
|
||
|
DWORD dwSizeOfEapUIData;
|
||
|
}
|
||
|
PPP_EAP_UI_DATA;
|
||
|
|
||
|
#define PPPFLAGS_DisableNetbt 0x00000001
|
||
|
|
||
|
/* Parameters to start client PPP on a port.
|
||
|
*/
|
||
|
typedef struct _PPP_START
|
||
|
{
|
||
|
CHAR szPortName[ MAX_PORT_NAME +1 ];
|
||
|
CHAR szUserName[ UNLEN + 1 ];
|
||
|
CHAR szPassword[ PWLEN + 1 ];
|
||
|
CHAR szDomain[ DNLEN + 1 ];
|
||
|
LUID Luid;
|
||
|
PPP_CONFIG_INFO ConfigInfo;
|
||
|
CHAR szzParameters[ PARAMETERBUFLEN ];
|
||
|
BOOL fThisIsACallback;
|
||
|
BOOL fRedialOnLinkFailure;
|
||
|
HANDLE hEvent;
|
||
|
DWORD dwPid;
|
||
|
PPP_INTERFACE_INFO PppInterfaceInfo;
|
||
|
DWORD dwAutoDisconnectTime;
|
||
|
PPP_BAPPARAMS BapParams;
|
||
|
CHAR * pszPhonebookPath;
|
||
|
CHAR * pszEntryName;
|
||
|
CHAR * pszPhoneNumber;
|
||
|
HANDLE hToken;
|
||
|
PRAS_CUSTOM_AUTH_DATA pCustomAuthConnData;
|
||
|
DWORD dwEapTypeId;
|
||
|
BOOL fLogon;
|
||
|
BOOL fNonInteractive;
|
||
|
DWORD dwFlags;
|
||
|
PRAS_CUSTOM_AUTH_DATA pCustomAuthUserData;
|
||
|
PPP_EAP_UI_DATA EapUIData;
|
||
|
CHAR chSeed; //Seed used to encode the password
|
||
|
}
|
||
|
PPP_START;
|
||
|
|
||
|
/* Parameters to stop client/server PPP on a port.
|
||
|
*/
|
||
|
typedef struct _PPP_STOP
|
||
|
{
|
||
|
DWORD dwStopReason;
|
||
|
}
|
||
|
PPP_STOP;
|
||
|
|
||
|
/* Parameters to start server PPP on a port.
|
||
|
*/
|
||
|
typedef struct _PPPDDM_START
|
||
|
{
|
||
|
DWORD dwAuthRetries;
|
||
|
CHAR szPortName[MAX_PORT_NAME+1];
|
||
|
CHAR achFirstFrame[ MAXPPPFRAMESIZE ];
|
||
|
DWORD cbFirstFrame;
|
||
|
}
|
||
|
PPPDDM_START;
|
||
|
|
||
|
/* Parameters to notify PPP that callback is complete.
|
||
|
*/
|
||
|
typedef struct _PPP_CALLBACK_DONE
|
||
|
{
|
||
|
CHAR szCallbackNumber[ MAX_PHONE_NUMBER_LEN + 1 ];
|
||
|
}
|
||
|
PPP_CALLBACK_DONE;
|
||
|
|
||
|
/* Parameters to notify server of "set-by-caller" callback options.
|
||
|
*/
|
||
|
typedef struct _PPP_CALLBACK
|
||
|
{
|
||
|
CHAR szCallbackNumber[ RAS_MaxCallbackNumber + 1 ];
|
||
|
}
|
||
|
PPP_CALLBACK;
|
||
|
|
||
|
|
||
|
/* Parameters to notify server of new password after it's told client the
|
||
|
** password has expired. The user name and old password are also provided
|
||
|
** since they are required to support the auto-logon case.
|
||
|
*/
|
||
|
typedef struct _PPP_CHANGEPW
|
||
|
{
|
||
|
CHAR szUserName[ UNLEN + 1 ];
|
||
|
CHAR szOldPassword[ PWLEN + 1 ];
|
||
|
CHAR szNewPassword[ PWLEN + 1 ];
|
||
|
CHAR chSeed; //Seed used to encode the password
|
||
|
}
|
||
|
PPP_CHANGEPW;
|
||
|
|
||
|
|
||
|
/* Parameters to notify server of new authentication credentials after it's
|
||
|
** told client the original credentials are invalid but a retry is allowed.
|
||
|
*/
|
||
|
typedef struct _PPP_RETRY
|
||
|
{
|
||
|
CHAR szUserName[ UNLEN + 1 ];
|
||
|
CHAR szPassword[ PWLEN + 1 ];
|
||
|
CHAR szDomain[ DNLEN + 1 ];
|
||
|
CHAR chSeed; //Seed used to encode the password
|
||
|
}
|
||
|
PPP_RETRY;
|
||
|
|
||
|
/*
|
||
|
** Parameters to notify PPP that a packet has arrived from the peer
|
||
|
*/
|
||
|
typedef struct _PPP_RECEIVE
|
||
|
{
|
||
|
DWORD dwNumBytes; // The number of bytes in the buffer
|
||
|
BYTE* pbBuffer; // The data sent by the peer
|
||
|
}
|
||
|
PPP_RECEIVE;
|
||
|
|
||
|
/*
|
||
|
** Parameters to notify PPP that a BAP event (add/drop link) has fired
|
||
|
*/
|
||
|
typedef struct _PPP_BAP_EVENT
|
||
|
{
|
||
|
BOOL fAdd; // Add a link iff TRUE
|
||
|
BOOL fTransmit; // Send threshold iff TRUE
|
||
|
DWORD dwSendPercent; // Send bandwidth utilization
|
||
|
DWORD dwRecvPercent; // Recv bandwidth utilization
|
||
|
}
|
||
|
PPP_BAP_EVENT;
|
||
|
|
||
|
typedef struct _PPP_BAP_CALLBACK_RESULT
|
||
|
{
|
||
|
DWORD dwCallbackResultCode;
|
||
|
}
|
||
|
PPP_BAP_CALLBACK_RESULT;
|
||
|
|
||
|
typedef struct _PPP_DHCP_INFORM
|
||
|
{
|
||
|
WCHAR* wszDevice;
|
||
|
DWORD dwNumDNSAddresses;
|
||
|
DWORD* pdwDNSAddresses;
|
||
|
DWORD dwWINSAddress1;
|
||
|
DWORD dwWINSAddress2;
|
||
|
DWORD dwSubnetMask;
|
||
|
CHAR* szDomainName;
|
||
|
PBYTE pbDhcpRoutes;
|
||
|
}
|
||
|
PPP_DHCP_INFORM;
|
||
|
|
||
|
typedef struct _PPP_PROTOCOL_EVENT
|
||
|
{
|
||
|
USHORT usProtocolType;
|
||
|
ULONG ulFlags;
|
||
|
}
|
||
|
PPP_PROTOCOL_EVENT;
|
||
|
|
||
|
typedef struct _PPP_IP_ADDRESS_LEASE_EXPIRED
|
||
|
{
|
||
|
ULONG nboIpAddr;
|
||
|
}
|
||
|
PPP_IP_ADDRESS_LEASE_EXPIRED;
|
||
|
|
||
|
typedef struct _PPP_POST_LINEDOWN
|
||
|
{
|
||
|
VOID * pPcb; //This is required because PCB has been already removed from the
|
||
|
//table
|
||
|
}PPP_POST_LINE_DOWN;
|
||
|
/* Client/DDM->Engine messages.
|
||
|
*/
|
||
|
typedef struct _PPPE_MESSAGE
|
||
|
{
|
||
|
DWORD dwMsgId;
|
||
|
HPORT hPort;
|
||
|
HCONN hConnection;
|
||
|
|
||
|
union
|
||
|
{
|
||
|
PPP_START Start; // PPPEMSG_Start
|
||
|
PPP_STOP Stop; // PPPEMSG_Stop
|
||
|
PPP_CALLBACK Callback; // PPPEMSG_Callback
|
||
|
PPP_CHANGEPW ChangePw; // PPPEMSG_ChangePw
|
||
|
PPP_RETRY Retry; // PPPEMSG_Retry
|
||
|
PPP_RECEIVE Receive; // PPPEMSG_Receive
|
||
|
PPP_BAP_EVENT BapEvent; // PPPEMSG_BapEvent
|
||
|
PPPDDM_START DdmStart; // PPPEMSG_DdmStart
|
||
|
PPP_CALLBACK_DONE CallbackDone; // PPPEMSG_DdmCallbackDone
|
||
|
PPP_INTERFACE_INFO InterfaceInfo; // PPPEMSG_DdmInterfaceInfo
|
||
|
PPP_BAP_CALLBACK_RESULT
|
||
|
BapCallbackResult; // PPPEMSG_DdmBapCallbackResult
|
||
|
PPP_DHCP_INFORM DhcpInform; // PPPEMSG_DhcpInform
|
||
|
PPP_EAP_UI_DATA EapUIData; // PPPEMSG_EapUIData
|
||
|
PPP_PROTOCOL_EVENT ProtocolEvent; // PPPEMSG_ProtocolEvent
|
||
|
PPP_IP_ADDRESS_LEASE_EXPIRED // PPPEMSG_IpAddressLeaseExpired
|
||
|
IpAddressLeaseExpired;
|
||
|
PPP_POST_LINE_DOWN PostLineDown; //PPPEMSG_PostLineDown
|
||
|
|
||
|
}
|
||
|
ExtraInfo;
|
||
|
}
|
||
|
PPPE_MESSAGE;
|
||
|
|
||
|
/* PPPE_MESSAGE dwMsgId codes for client and DDM sessions.
|
||
|
*/
|
||
|
typedef enum _PPPE_MSG_ID
|
||
|
{
|
||
|
PPPEMSG_Start, // Starts client PPP on a port.
|
||
|
PPPEMSG_Stop, // Stops PPP on a port.
|
||
|
PPPEMSG_Callback, // Provides "set-by-caller" number to server.
|
||
|
PPPEMSG_ChangePw, // Provides new password (expired) to server.
|
||
|
PPPEMSG_Retry, // Provides new credentials for authentication.
|
||
|
PPPEMSG_Receive, // A packet has arrived.
|
||
|
PPPEMSG_LineDown, // The line has gone down.
|
||
|
PPPEMSG_ListenResult, // The result of a call to RasPortListen
|
||
|
PPPEMSG_BapEvent, // A BAP event (add/drop link) has fired.
|
||
|
PPPEMSG_DdmStart, // Starts server PPP on a port.
|
||
|
PPPEMSG_DdmCallbackDone, // Notify PPP that callback is complete.
|
||
|
PPPEMSG_DdmInterfaceInfo, // Interface handles from DDM
|
||
|
PPPEMSG_DdmBapCallbackResult,// Result of a BAP callback request.
|
||
|
PPPEMSG_DhcpInform, // The result of a DHCPINFORM
|
||
|
PPPEMSG_EapUIData, // Data from EAP interactive UI
|
||
|
PPPEMSG_DdmChangeNotification, // Change notification in DDM
|
||
|
PPPEMSG_ProtocolEvent, // Protocol added/removed notification
|
||
|
PPPEMSG_IpAddressLeaseExpired, // IP address lease expired. Used by rasiphlp
|
||
|
PPPEMSG_PostLineDown //Accounting completed after linedown
|
||
|
} PPPE_MSG_ID;
|
||
|
|
||
|
//
|
||
|
// Prototypes of function exported by RASPPP.DLL for use by RASMAN
|
||
|
//
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
StartPPP(
|
||
|
DWORD NumPorts
|
||
|
/*,DWORD (*SendPPPMessageToRasman)( PPP_MESSAGE * PppMsg )*/
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
StopPPP(
|
||
|
HANDLE hEventStopPPP
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
SendPPPMessageToEngine(
|
||
|
IN PPPE_MESSAGE* pMessage
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// PPP client side Apis
|
||
|
//
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppStop(
|
||
|
IN HPORT hPort
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppCallback(
|
||
|
IN HPORT hPort,
|
||
|
IN CHAR* pszCallbackNumber
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppChangePassword(
|
||
|
IN HPORT hPort,
|
||
|
IN CHAR* pszUserName,
|
||
|
IN CHAR* pszOldPassword,
|
||
|
IN CHAR* pszNewPassword
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppGetInfo(
|
||
|
IN HPORT hPort,
|
||
|
OUT PPP_MESSAGE* pMsg
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppRetry(
|
||
|
IN HPORT hPort,
|
||
|
IN CHAR* pszUserName,
|
||
|
IN CHAR* pszPassword,
|
||
|
IN CHAR* pszDomain
|
||
|
);
|
||
|
|
||
|
DWORD APIENTRY
|
||
|
RasPppStart(
|
||
|
IN HPORT hPort,
|
||
|
IN CHAR* pszPortName,
|
||
|
IN CHAR* pszUserName,
|
||
|
IN CHAR* pszPassword,
|
||
|
IN CHAR* pszDomain,
|
||
|
IN LUID* pLuid,
|
||
|
IN PPP_CONFIG_INFO* pConfigInfo,
|
||
|
IN LPVOID pPppInterfaceInfo,
|
||
|
IN CHAR* pszzParameters,
|
||
|
IN BOOL fThisIsACallback,
|
||
|
IN HANDLE hEvent,
|
||
|
IN DWORD dwAutoDisconnectTime,
|
||
|
IN BOOL fRedialOnLinkFailure,
|
||
|
IN PPP_BAPPARAMS* pBapParams,
|
||
|
IN BOOL fNonInteractive,
|
||
|
IN DWORD dwEapTypeId,
|
||
|
IN DWORD dwFlags
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// DDM API prototypes
|
||
|
//
|
||
|
DWORD
|
||
|
PppDdmInit(
|
||
|
IN VOID (*SendPPPMessageToDdm)( PPP_MESSAGE * PppMsg ),
|
||
|
IN DWORD dwServerFlags,
|
||
|
IN DWORD dwLoggingLevel,
|
||
|
IN DWORD dwNASIpAddress,
|
||
|
IN BOOL fRadiusAuthentication,
|
||
|
IN LPVOID lpfnRasAuthProviderAuthenticateUser,
|
||
|
IN LPVOID lpfnRasAuthProviderFreeAttributes,
|
||
|
IN LPVOID lpfnRasAcctProviderStartAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderInterimAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderStopAccounting,
|
||
|
IN LPVOID lpfnRasAcctProviderFreeAttributes,
|
||
|
IN LPVOID lpfnGetNextAccountingSessionId
|
||
|
);
|
||
|
|
||
|
VOID
|
||
|
PppDdmDeInit(
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmCallbackDone(
|
||
|
IN HPORT hPort,
|
||
|
IN WCHAR* pwszCallbackNumber
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmStart(
|
||
|
IN HPORT hPort,
|
||
|
IN WCHAR* wszPortName,
|
||
|
IN CHAR* pchFirstFrame,
|
||
|
IN DWORD cbFirstFrame,
|
||
|
IN DWORD dwAuthRetries
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmStop(
|
||
|
IN HPORT hPort,
|
||
|
IN DWORD dwStopReason
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmChangeNotification(
|
||
|
IN DWORD dwServerFlags,
|
||
|
IN DWORD dwLoggingLevel
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmSendInterfaceInfo(
|
||
|
IN HCONN hConnection,
|
||
|
IN PPP_INTERFACE_INFO * pInterfaceInfo
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
PppDdmBapCallbackResult(
|
||
|
IN HCONN hConnection,
|
||
|
IN DWORD dwBapCallbackResultCode
|
||
|
);
|
||
|
|
||
|
#endif // _RASPPP_H_
|