//**************************************************************************** // // Microsoft NT Remote Access Service // // Copyright 1992-93 // // // Revision History // // // 5/26/92 Gurdeep Singh Pall Created // // // Description: This file contains all structure and constant definitions for // RAS Manager Component. // //**************************************************************************** #ifndef _RASMAN_ #define _RASMAN_ #define RASMERGE #include #include // defines for MAX_MEDIA_NAME, MAX_DEVICE_NAME // MAX_PORT_NAME #include #include // for RPC_BIND_HANDLE #include // for RASEVENT #define WM_RASAPICOMPLETE 0xCCCC // From the "user" window msg range #define RASMAN_SERVICE_NAME "RASMAN" #define MAX_USERKEY_SIZE 132 #define MAX_PARAM_KEY_SIZE 32 #define MAX_XPORT_NAME 128 #define MAX_IDENTIFIER_SIZE 32 #define MAX_STAT_NAME 32 #define MAX_CHALLENGE_SIZE 8 #define MAX_RESPONSE_SIZE 24 #define MAX_USERNAME_SIZE UNLEN #define MAX_DOMAIN_SIZE DNLEN #define MAX_PASSWORD_SIZE PWLEN #define MAX_LAN_NETS 16 #define MAX_PROTOCOLS_PER_PORT 4 #define MAX_DLL_NAME_SIZE 8 #define MAX_ENTRYPOINT_NAME_SIZE 32 #define MAX_ARG_STRING_SIZE 128 #define MAX_ENTRYNAME_SIZE 256 #define MAX_PHONENUMBER_SIZE 128 #define MAX_CALLBACKNUMBER_SIZE MAX_PHONENUMBER_SIZE #define MAX_PHONEENTRY_SIZE (MAX_PHONENUMBER_SIZE < MAX_ENTRYNAME_SIZE \ ? MAX_ENTRYNAME_SIZE \ : MAX_PHONENUMBER_SIZE) #define RASMAN_MAX_PROTOCOLS 32 // matches MAX_PROTOCOLS defined in wanpub.h #define RASMAN_PROTOCOL_ADDED 1 #define RASMAN_PROTOCOL_REMOVED 2 #define INVALID_TAPI_ID 0xffffffff // // Defines for Ndiswan DriverCaps // #define RAS_NDISWAN_40BIT_ENABLED 0x00000000 #define RAS_NDISWAN_128BIT_ENABLED 0x00000001 typedef HANDLE HPORT ; typedef HANDLE HBUNDLE ; typedef HANDLE HCONN; #define INVALID_HPORT ((HPORT) -1) enum RASMAN_STATUS { OPEN = 0, CLOSED = 1, UNAVAILABLE = 2, REMOVED = 3 } ; typedef enum RASMAN_STATUS RASMAN_STATUS ; #define CALL_NONE 0x00 #define CALL_IN 0x01 #define CALL_OUT 0x02 #define CALL_ROUTER 0x04 #define CALL_LOGON 0x08 #define CALL_OUT_ONLY 0x10 #define CALL_IN_ONLY 0x20 #define CALL_OUTBOUND_ROUTER 0x40 #define CALL_DEVICE_NOT_FOUND 0x10000000 typedef DWORD RASMAN_USAGE ; #define RASMAN_ALIGN8(_x) ((_x + 7) & (~7)) #define RASMAN_ALIGN(_x) ((_x + sizeof(ULONG_PTR) - 1) & (~(sizeof(ULONG_PTR) - 1))) enum RAS_FORMAT { Number = 0, String = 1 } ; typedef enum RAS_FORMAT RAS_FORMAT ; union RAS_VALUE { DWORD Number ; struct { DWORD Length ; DWORD dwAlign; PCHAR Data ; } String ; struct { DWORD Length; DWORD dwAlign1; DWORD dwOffset; DWORD dwAlign2; } String_OffSet; } ; typedef union RAS_VALUE RAS_VALUE ; enum RASMAN_STATE { CONNECTING = 0, LISTENING = 1, CONNECTED = 2, DISCONNECTING = 3, DISCONNECTED = 4, LISTENCOMPLETED = 5, } ; typedef enum RASMAN_STATE RASMAN_STATE ; enum RASMAN_CONNECTION_STATE { RCS_NOT_CONNECTED = 0, RCS_CONNECTING, RCS_CONNECTED }; typedef enum RASMAN_CONNECTION_STATE RASMAN_CONNECTION_STATE; enum RASMAN_DISCONNECT_REASON { USER_REQUESTED = 0, REMOTE_DISCONNECTION = 1, HARDWARE_FAILURE = 2, NOT_DISCONNECTED = 3 } ; typedef enum RASMAN_DISCONNECT_REASON RASMAN_DISCONNECT_REASON ; struct RAS_PARAMS { CHAR P_Key [MAX_PARAM_KEY_SIZE] ; RAS_FORMAT P_Type ; BYTE P_Attributes ; BYTE balign[3]; RAS_VALUE P_Value ; } ; typedef struct RAS_PARAMS RAS_PARAMS ; struct RASMAN_PORT { HPORT P_Handle ; CHAR P_PortName [MAX_PORT_NAME] ; RASMAN_STATUS P_Status ; RASDEVICETYPE P_rdtDeviceType; RASMAN_USAGE P_ConfiguredUsage ; RASMAN_USAGE P_CurrentUsage ; CHAR P_MediaName [MAX_MEDIA_NAME] ; CHAR P_DeviceType[MAX_DEVICETYPE_NAME] ; CHAR P_DeviceName[MAX_DEVICE_NAME+1] ; DWORD P_LineDeviceId ; DWORD P_AddressId ; } ; typedef struct RASMAN_PORT RASMAN_PORT ; struct RASMAN_PORT_32 { DWORD P_Port ; CHAR P_PortName [MAX_PORT_NAME] ; RASMAN_STATUS P_Status ; RASDEVICETYPE P_rdtDeviceType; RASMAN_USAGE P_ConfiguredUsage ; RASMAN_USAGE P_CurrentUsage ; CHAR P_MediaName [MAX_MEDIA_NAME] ; CHAR P_DeviceType[MAX_DEVICETYPE_NAME] ; CHAR P_DeviceName[MAX_DEVICE_NAME+1] ; DWORD P_LineDeviceId ; DWORD P_AddressId ; }; typedef struct RASMAN_PORT_32 RASMAN_PORT_32; struct RASMAN_PORT_400 { HPORT P_Handle ; CHAR P_PortName [MAX_PORT_NAME] ; RASMAN_STATUS P_Status ; RASMAN_USAGE P_ConfiguredUsage ; RASMAN_USAGE P_CurrentUsage ; CHAR P_MediaName [MAX_MEDIA_NAME] ; CHAR P_DeviceType[MAX_DEVICETYPE_NAME] ; CHAR P_DeviceName[MAX_DEVICE_NAME+1] ; DWORD P_LineDeviceId ; // only valid for TAPI devices DWORD P_AddressId ; // only valid for TAPI devices } ; typedef struct RASMAN_PORT_400 RASMAN_PORT_400 ; struct RASMAN_PORTINFO { DWORD PI_NumOfParams ; DWORD dwAlign; RAS_PARAMS PI_Params[1] ; } ; typedef struct RASMAN_PORTINFO RASMAN_PORTINFO ; struct RASMAN_DEVICE { CHAR D_Name [MAX_DEVICE_NAME+1] ; } ; typedef struct RASMAN_DEVICE RASMAN_DEVICE ; struct RASMAN_DEVICEINFO { DWORD DI_NumOfParams ; DWORD dwAlign; RAS_PARAMS DI_Params[1] ; } ; typedef struct RASMAN_DEVICEINFO RASMAN_DEVICEINFO ; enum RAS_PROTOCOLTYPE { ASYBEUI = 0x80D5, IPX = 0x8137, IP = 0x0800, ARP = 0x0806, APPLETALK = 0x80F3, XNS = 0x0600, RASAUTH = 0x8FFF, INVALID_TYPE= 0x2222 } ; typedef enum RAS_PROTOCOLTYPE RAS_PROTOCOLTYPE ; struct RASMAN_PROTOCOLINFO { CHAR PI_XportName [MAX_XPORT_NAME] ; RAS_PROTOCOLTYPE PI_Type ; } ; typedef struct RASMAN_PROTOCOLINFO RASMAN_PROTOCOLINFO ; struct RASMAN_ROUTEINFO { RAS_PROTOCOLTYPE RI_Type ; BYTE RI_LanaNum ; WCHAR RI_XportName [MAX_XPORT_NAME] ; WCHAR RI_AdapterName [MAX_XPORT_NAME] ; } ; typedef struct RASMAN_ROUTEINFO RASMAN_ROUTEINFO ; struct RAS_PROTOCOLS { RASMAN_ROUTEINFO RP_ProtocolInfo[MAX_PROTOCOLS_PER_PORT] ; } ; typedef struct RAS_PROTOCOLS RAS_PROTOCOLS ; typedef struct _RAS_CALLEDID_INFO { DWORD dwSize; BYTE bCalledId[1]; } RAS_CALLEDID_INFO, *PRAS_CALLEDID_INFO; typedef struct _RAS_DEVICE_INFO { DWORD dwVersion; BOOL fWrite; BOOL fRasEnabled; BOOL fRouterEnabled; BOOL fRouterOutboundEnabled; DWORD dwTapiLineId; DWORD dwError; DWORD dwNumEndPoints; DWORD dwMaxOutCalls; DWORD dwMaxInCalls; DWORD dwMinWanEndPoints; DWORD dwMaxWanEndPoints; RASDEVICETYPE eDeviceType; GUID guidDevice; CHAR szPortName[MAX_PORT_NAME + 1]; CHAR szDeviceName[MAX_DEVICE_NAME + 1]; WCHAR wszDeviceName[MAX_DEVICE_NAME + 1]; } RAS_DEVICE_INFO, *PRAS_DEVICE_INFO; #define RASMAN_DEFAULT_CREDS 0x00000001 #define RASMAN_OPEN_CALLOUT 0x00000002 struct RASMAN_INFO { RASMAN_STATUS RI_PortStatus ; RASMAN_STATE RI_ConnState ; DWORD RI_LinkSpeed ; DWORD RI_LastError ; RASMAN_USAGE RI_CurrentUsage ; CHAR RI_DeviceTypeConnecting [MAX_DEVICETYPE_NAME] ; CHAR RI_DeviceConnecting [MAX_DEVICE_NAME + 1] ; CHAR RI_szDeviceType[MAX_DEVICETYPE_NAME]; CHAR RI_szDeviceName[MAX_DEVICE_NAME + 1]; CHAR RI_szPortName[MAX_PORT_NAME + 1]; RASMAN_DISCONNECT_REASON RI_DisconnectReason ; DWORD RI_OwnershipFlag ; DWORD RI_ConnectDuration ; DWORD RI_BytesReceived ; // // If this port belongs to a connection, then // the following fields are filled in. // CHAR RI_Phonebook[MAX_PATH+1]; CHAR RI_PhoneEntry[MAX_PHONEENTRY_SIZE+1]; HCONN RI_ConnectionHandle; DWORD RI_SubEntry; RASDEVICETYPE RI_rdtDeviceType; GUID RI_GuidEntry; DWORD RI_dwSessionId; DWORD RI_dwFlags; } ; typedef struct RASMAN_INFO RASMAN_INFO ; struct RASMAN_INFO_400 { RASMAN_STATUS RI_PortStatus ; RASMAN_STATE RI_ConnState ; DWORD RI_LinkSpeed ; DWORD RI_LastError ; RASMAN_USAGE RI_CurrentUsage ; CHAR RI_DeviceTypeConnecting [MAX_DEVICETYPE_NAME] ; CHAR RI_DeviceConnecting [MAX_DEVICE_NAME+1] ; RASMAN_DISCONNECT_REASON RI_DisconnectReason ; DWORD RI_OwnershipFlag ; DWORD RI_ConnectDuration ; DWORD RI_BytesReceived ; // // If this port belongs to a connection, then // the following fields are filled in. // CHAR RI_Phonebook[MAX_PATH+1]; CHAR RI_PhoneEntry[MAX_PHONEENTRY_SIZE+1]; HCONN RI_ConnectionHandle; DWORD RI_SubEntry; } ; typedef struct RASMAN_INFO_400 RASMAN_INFO_400 ; struct RAS_STATISTICS { WORD S_NumOfStatistics ; ULONG S_Statistics[1] ; } ; typedef struct RAS_STATISTICS RAS_STATISTICS ; #define MAX_STATISTICS 14 #define MAX_STATISTICS_EX (MAX_STATISTICS * 2) #define MAX_STATISTICS_EXT 12 struct RAS_DEVCONFIG { DWORD dwOffsetofModemSettings; DWORD dwSizeofModemSettings; DWORD dwOffsetofExtendedCaps; DWORD dwSizeofExtendedCaps; BYTE abInfo[1]; }; typedef struct RAS_DEVCONFIG RAS_DEVCONFIG; #ifdef RASMERGE // // These structures have been added temporarily // to rasman.h when the RAS ui was moved over. // They are necessary to get the UI to compile, // but are not used internally. These structures // should be removed when the UI is converted to // mpradmin APIs. (adiscolo 16-Sep-1996) // typedef struct _RAS_PORT_STATISTICS { // The connection statistics are followed by port statistics // A connection is across multiple ports. DWORD dwBytesXmited; DWORD dwBytesRcved; DWORD dwFramesXmited; DWORD dwFramesRcved; DWORD dwCrcErr; DWORD dwTimeoutErr; DWORD dwAlignmentErr; DWORD dwHardwareOverrunErr; DWORD dwFramingErr; DWORD dwBufferOverrunErr; DWORD dwBytesXmitedUncompressed; DWORD dwBytesRcvedUncompressed; DWORD dwBytesXmitedCompressed; DWORD dwBytesRcvedCompressed; // the following are the port statistics DWORD dwPortBytesXmited; DWORD dwPortBytesRcved; DWORD dwPortFramesXmited; DWORD dwPortFramesRcved; DWORD dwPortCrcErr; DWORD dwPortTimeoutErr; DWORD dwPortAlignmentErr; DWORD dwPortHardwareOverrunErr; DWORD dwPortFramingErr; DWORD dwPortBufferOverrunErr; DWORD dwPortBytesXmitedUncompressed; DWORD dwPortBytesRcvedUncompressed; DWORD dwPortBytesXmitedCompressed; DWORD dwPortBytesRcvedCompressed; } RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS; #define RASSAPI_MAX_PARAM_KEY_SIZE 32 enum RAS_PARAMS_FORMAT { ParamNumber = 0, ParamString = 1 } ; typedef enum RAS_PARAMS_FORMAT RAS_PARAMS_FORMAT ; union RAS_PARAMS_VALUE { DWORD Number ; struct { DWORD Length ; PCHAR Data ; } String ; } ; typedef union RAS_PARAMS_VALUE RAS_PARAMS_VALUE ; struct RAS_PARAMETERS { CHAR P_Key [RASSAPI_MAX_PARAM_KEY_SIZE] ; RAS_PARAMS_FORMAT P_Type ; BYTE P_Attributes ; RAS_PARAMS_VALUE P_Value ; } ; typedef struct RAS_PARAMETERS RAS_PARAMETERS ; #endif // RASMERGE #define BYTES_XMITED 0 // Generic Stats #define BYTES_RCVED 1 #define FRAMES_XMITED 2 #define FRAMES_RCVED 3 #define CRC_ERR 4 // Hardware Stats #define TIMEOUT_ERR 5 #define ALIGNMENT_ERR 6 #define HARDWARE_OVERRUN_ERR 7 #define FRAMING_ERR 8 #define BUFFER_OVERRUN_ERR 9 #define BYTES_XMITED_UNCOMPRESSED 10 // Compression Stats #define BYTES_RCVED_UNCOMPRESSED 11 #define BYTES_XMITED_COMPRESSED 12 #define BYTES_RCVED_COMPRESSED 13 #define COMPRESSION_RATIO_IN 10 #define COMPRESSION_RATIO_OUT 11 #define MSTYPE_COMPRESSION 0x00000001 #define MSTYPE_ENCRYPTION_40 0x00000010 #define MSTYPE_ENCRYPTION_40F 0x00000020 #define MSTYPE_ENCRYPTION_128 0x00000040 #define MSTYPE_ENCRYPTION_56 0x00000080 #define MSTYPE_HISTORYLESS 0x01000000 #define MACTYPE_NT31RAS 254 #define MAX_SESSIONKEY_SIZE 8 #define MAX_USERSESSIONKEY_SIZE 16 #define MAX_NT_RESPONSE_SIZE 24 #define MAX_COMPVALUE_SIZE 32 #define MAX_COMPOUI_SIZE 3 #define MAX_EAPKEY_SIZE 256 #define VERSION_40 4 #define VERSION_50 5 #define VERSION_501 6 // // Information stored in rasman per-connection. // #define CONNECTION_PPPMODE_INDEX 0 #define CONNECTION_PPPRESULT_INDEX 1 #define CONNECTION_AMBRESULT_INDEX 2 #define CONNECTION_SLIPRESULT_INDEX 3 #define CONNECTION_PPPREPLYMESSAGE_INDEX 4 #define CONNECTION_IPSEC_INFO_INDEX 5 #define CONNECTION_CREDENTIALS_INDEX 6 #define CONNECTION_CUSTOMAUTHINTERACTIVEDATA_INDEX 7 #define CONNECTION_TCPWINDOWSIZE_INDEX 8 #define CONNECTION_LUID_INDEX 9 #define CONNECTION_REFINTERFACEGUID_INDEX 10 #define CONNECTION_REFDEVICEGUID_INDEX 11 #define CONNECTION_DEVICEGUID_INDEX 12 // // Information stored in rasman per-port. // #define PORT_PHONENUMBER_INDEX 0 #define PORT_DEVICENAME_INDEX 1 #define PORT_DEVICETYPE_INDEX 2 #define PORT_CONNSTATE_INDEX 3 #define PORT_CONNERROR_INDEX 4 #define PORT_CONNRESPONSE_INDEX 5 #define PORT_CUSTOMAUTHDATA_INDEX 6 #define PORT_CUSTOMAUTHINTERACTIVEDATA_INDEX 7 #define PORT_IPSEC_INFO_INDEX 8 #define PORT_USERSID_INDEX 9 #define PORT_DIALPARAMSUID_INDEX 10 #define PORT_OLDPASSWORD_INDEX 11 #define PORT_CREDENTIALS_INDEX 12 // // IPSEC DOI ESP algorithms // #define RASMAN_IPSEC_ESP_DES 0x00000001 #define RASMAN_IPSEC_ESP_DES_40 0x00000002 #define RASMAN_IPSEC_ESP_3_DES 0x00000004 #define RASMAN_IPSEC_ESP_MAX 0x00000008 // // Defines for COMPRESS_INFO AuthType field // #define AUTH_USE_MSCHAPV1 0x00000001 #define AUTH_USE_MSCHAPV2 0x00000002 #define AUTH_USE_EAP 0x00000003 // // Defines for COMPRESS_INFO flags // #define CCP_PAUSE_DATA 0x00000001 // this bit is set if the bundle // should pause data transfer. // the bit is cleared if the bundle // should resume data transfer #define CCP_IS_SERVER 0x00000002 // this bit is set if the bundle // is the server // the bit is cleared if the bundle // is the client #define CCP_SET_KEYS 0x00000004 // indicates that the key // information is valid #define CCP_SET_COMPTYPE 0x00000008 // indicates that the comptype enum RAS_L2TP_ENCRYPTION { RAS_L2TP_NO_ENCRYPTION = 0, // Request no encryption RAS_L2TP_OPTIONAL_ENCRYPTION, // Request encryption but none OK RAS_L2TP_REQUIRE_ENCRYPTION, // Require encryption of any strength RAS_L2TP_REQUIRE_MAX_ENCRYPTION // Require maximum strength encryption }; typedef enum RAS_L2TP_ENCRYPTION RAS_L2TP_ENCRYPTION; struct RAS_COMPRESSION_INFO { // // May be used for encryption, non-zero if supported. // UCHAR RCI_LMSessionKey[MAX_SESSIONKEY_SIZE]; // // Used for 128Bit encryption, non-zero if supported. // UCHAR RCI_UserSessionKey[MAX_USERSESSIONKEY_SIZE]; // // Used for 128Bit encryption, only valid if RCI_UserSessionKey is valid. // UCHAR RCI_Challenge[MAX_CHALLENGE_SIZE]; UCHAR RCI_NTResponse[MAX_NT_RESPONSE_SIZE]; // // bit 0 = MPPPC, bit 5 = encryption // ULONG RCI_MSCompressionType; ULONG RCI_AuthType; // // 0=OUI, 1-253 = Public, 254 = NT31 RAS, 255=Not supported // UCHAR RCI_MacCompressionType; WORD RCI_MacCompressionValueLength ; union { struct { // Proprietary: used for comp type 0 UCHAR RCI_CompOUI[MAX_COMPOUI_SIZE]; UCHAR RCI_CompSubType; UCHAR RCI_CompValues[MAX_COMPVALUE_SIZE]; } RCI_Proprietary; struct { // Public: used for comp type 1-254 UCHAR RCI_CompValues[MAX_COMPVALUE_SIZE]; } RCI_Public; } RCI_Info ; ULONG RCI_Flags; ULONG RCI_EapKeyLength; UCHAR RCI_EapKey[MAX_EAPKEY_SIZE]; }; typedef struct RAS_COMPRESSION_INFO RAS_COMPRESSION_INFO; struct PROTOCOL_CONFIG_INFO { DWORD P_Length ; BYTE P_Info[1] ; } ; typedef struct PROTOCOL_CONFIG_INFO PROTOCOL_CONFIG_INFO ; struct RASMAN_PPPFEATURES { DWORD MRU; DWORD ACCM; DWORD AuthProtocol; DWORD MagicNumber; BOOL PFC; BOOL ACFC; } ; typedef struct RASMAN_PPPFEATURES RASMAN_PPPFEATURES ; enum RAS_FRAMING {PPP, RAS, AUTODETECT, SLIP, SLIPCOMP, SLIPCOMPAUTO} ; typedef enum RAS_FRAMING RAS_FRAMING ; struct RAS_FRAMING_CAPABILITIES { DWORD RFC_MaxFrameSize; DWORD RFC_MaxReconstructedFrameSize; DWORD RFC_FramingBits; DWORD RFC_DesiredACCM; } ; typedef struct RAS_FRAMING_CAPABILITIES RAS_FRAMING_CAPABILITIES ; struct RAS_FRAMING_INFO { DWORD RFI_MaxSendFrameSize; DWORD RFI_MaxRecvFrameSize; DWORD RFI_MaxRSendFrameSize; DWORD RFI_MaxRRecvFrameSize; DWORD RFI_HeaderPadding; DWORD RFI_TailPadding; DWORD RFI_SendFramingBits; DWORD RFI_RecvFramingBits; DWORD RFI_SendCompressionBits; DWORD RFI_RecvCompressionBits; DWORD RFI_SendACCM; DWORD RFI_RecvACCM; } ; typedef struct RAS_FRAMING_INFO RAS_FRAMING_INFO ; // NDIS WAN Framing bits: used with RasPortGetFramingEx and RasPortSetFramingEx // APIs. // #define OLD_RAS_FRAMING 0x00000001 #define RAS_COMPRESSION 0x00000002 #define PPP_MULTILINK_FRAMING 0x00000010 #define PPP_SHORT_SEQUENCE_HDR_FORMAT 0x00000020 #define PPP_FRAMING 0x00000100 #define PPP_COMPRESS_ADDRESS_CONTROL 0x00000200 #define PPP_COMPRESS_PROTOCOL_FIELD 0x00000400 #define PPP_ACCM_SUPPORTED 0x00000800 #define SLIP_FRAMING 0x00001000 #define SLIP_VJ_COMPRESSION 0x00002000 #define SLIP_VJ_AUTODETECT 0x00004000 #define MEDIA_NRZ_ENCODING 0x00010000 #define MEDIA_NRZI_ENCODING 0x00020000 #define MEDIA_NLPID 0x00040000 #define RFC_1356_FRAMING 0x00100000 #define RFC_1483_FRAMING 0x00200000 #define RFC_1490_FRAMING 0x00400000 #define SHIVA_FRAMING 0x01000000 // Defines for RAS_PROTOCOLCOMPRESSION // #define VJ_IP_COMPRESSION 0x002d #define NO_PROTOCOL_COMPRESSION 0x0000 struct RAS_PROTOCOLCOMPRESSION { union { struct { WORD RP_IPCompressionProtocol; BYTE RP_MaxSlotID; // How many slots to allocate BYTE RP_CompSlotID; // 1 = Slot ID was negotiated } RP_IP ; struct { WORD RP_IPXCompressionProtocol; } RP_IPX ; } RP_ProtocolType ; } ; typedef struct RAS_PROTOCOLCOMPRESSION RAS_PROTOCOLCOMPRESSION ; #define RAS_VERSION 5 #define PT_WORKSTATION 1 #define PT_SERVER 2 #define PS_PERSONAL 1 #define PS_PROFESSIONAL 2 #define GUIDSTRLEN 39 typedef DWORD PRODUCT_TYPE; typedef DWORD PRODUCT_SKU; enum _DEVICE_STATUS { DS_Enabled = 0, DS_Disabled, DS_Unavailable, DS_Removed }; typedef enum _DEVICE_STATUS DEVICE_STATUS; typedef struct DeviceInfo { // // Private fields which are used // internally in rastapi/rasman // struct DeviceInfo *Next; BOOL fValid; // Is this information valid DWORD dwCurrentEndPoints; // Current number of ports on this adapter DWORD dwCurrentDialedInClients; // Number of clients dialed in currently DWORD dwInstanceNumber; // Instance Number DWORD dwNextPortNumber; // The number assigned next to distinguish rasman DEVICE_STATUS eDeviceStatus; // Status of the device DWORD dwUsage; RAS_CALLEDID_INFO *pCalledID; // Called id information read from registry RAS_DEVICE_INFO rdiDeviceInfo; // Device info structure } DeviceInfo, *pDeviceInfo; // // Definitions for Ras{Get,Set}DialParams // // The dwMask values control/specify which fields // of the RAS_DIALPARAMS are stored/retrieved. // // NOTE: these values have to match the RASCF_* // values in ras.h. // #define DLPARAMS_MASK_USERNAME 0x00000001 #define DLPARAMS_MASK_PASSWORD 0x00000002 #define DLPARAMS_MASK_DOMAIN 0x00000004 #define DLPARAMS_MASK_PHONENUMBER 0x00000008 #define DLPARAMS_MASK_CALLBACKNUMBER 0x00000010 #define DLPARAMS_MASK_SUBENTRY 0x00000020 #define DLPARAMS_MASK_DEFAULT_CREDS 0x00000040 #define DLPARAMS_MASK_PRESHAREDKEY 0x00000080 #define DLPARAMS_MASK_SERVER_PRESHAREDKEY 0x00000100 #define DLPARAMS_MASK_DDM_PRESHAREDKEY 0x00000200 // // The following are flags used internall and // don't really map to external apis. So we are // defining the bits from MSB. // #define DLPARAMS_MASK_OLDSTYLE 0x80000000 #define DLPARAMS_MASK_DELETE 0x40000000 #define DLPARAMS_MASK_DELETEALL 0x20000000 typedef struct _RAS_DIALPARAMS { DWORD DP_Uid; WCHAR DP_PhoneNumber[MAX_PHONENUMBER_SIZE + 1]; WCHAR DP_CallbackNumber[MAX_CALLBACKNUMBER_SIZE + 1]; WCHAR DP_UserName[MAX_USERNAME_SIZE + 1]; WCHAR DP_Password[MAX_PASSWORD_SIZE + 1]; WCHAR DP_Domain[MAX_DOMAIN_SIZE + 1]; DWORD DP_SubEntry; } RAS_DIALPARAMS, *PRAS_DIALPARAMS; // // Connection Flags // #define CONNECTION_REDIALONLINKFAILURE 0x00000001 #define CONNECTION_SHAREFILEANDPRINT 0x00000002 #define CONNECTION_BINDMSNETCLIENT 0x00000004 #define CONNECTION_USERASCREDENTIALS 0x00000008 #define CONNECTION_USEPRESHAREDKEY 0x00000010 // // Definitions for Ras{Get,Set}ConnectionParams // typedef struct _RAS_CONNECTIONPARAMS { // // Phonebook and entry name. // CHAR CP_Phonebook[MAX_PATH + 1]; CHAR CP_PhoneEntry[MAX_PHONEENTRY_SIZE + 1]; // // Idle disconnect parameters // DWORD CP_IdleDisconnectSeconds; // // Connection Flags // DWORD CP_ConnectionFlags; } RAS_CONNECTIONPARAMS, *PRAS_CONNECTIONPARAMS; // // Flags for RasAddNotification. // // Note: the NOTIF_* values must match the // RASCN_* values in ras.h // #define NOTIF_CONNECT 0x00000001 #define NOTIF_DISCONNECT 0x00000002 #define NOTIF_BANDWIDTHADDED 0x00000004 #define NOTIF_BANDWIDTHREMOVED 0x00000008 // // Overlapped I/O structure // used by the device and media DLLs. // // This structure is used with the I/O // completion port associated with each // of the port handles. // // This structure is also used by the // rasapi32 dialing machine and PPP event // mechanism. // typedef struct _RAS_OVERLAPPED { OVERLAPPED RO_Overlapped; // the I/O overlapped structure DWORD RO_EventType; // OVEVT_* flags below PVOID RO_Info; // optional HANDLE RO_hInfo; // optional } RAS_OVERLAPPED, *PRAS_OVERLAPPED; typedef struct _NEW_PORT_NOTIF { PVOID *NPN_pmiNewPort; CHAR NPN_MediaName[MAX_MEDIA_NAME]; } NEW_PORT_NOTIF, *PNEW_PORT_NOTIF; typedef struct _REMOVE_LINE_NOTIF { DWORD dwLineId; } REMOVE_LINE_NOTIF, *PREMOVE_LINE_NOTIF; typedef struct _PORT_USAGE_NOTIF { PVOID *PUN_pmiPort; CHAR PUN_MediaName[MAX_MEDIA_NAME]; } PORT_USAGE_NOTIF, *PPORT_USAGE_NOTIF; typedef struct _PNP_EVENT_NOTIF { DWORD dwEvent; RASMAN_PORT RasPort; } PNP_EVENT_NOTIF, *PPNP_EVENT_NOTIF; #define PNP_NOTIFCALLBACK 0x00000001 #define PNP_NOTIFEVENT 0x00000002 #define PNPNOTIFEVENT_CREATE 0x00000001 #define PNPNOTIFEVENT_REMOVE 0x00000002 #define PNPNOTIFEVENT_USAGE 0x00000004 #define LEGACY_PPTP 0 #define LEGACY_L2TP 1 #define LEGACY_MAX 2 // // RAS_OVERLAPPED.RO_EventTypes for device // and medial DLLs. // #define OVEVT_DEV_IGNORED 0 // ignored #define OVEVT_DEV_STATECHANGE 1 // disconnect event #define OVEVT_DEV_ASYNCOP 2 // async operation event #define OVEVT_DEV_SHUTDOWN 4 // shutdown event #define OVEVT_RASMAN_TIMER 6 // timer #define OVEVT_RASMAN_CLOSE 7 // close event posted by a client to rasman #define OVEVT_RASMAN_FINAL_CLOSE 8 // event posted by ppp engine when it has shut down #define OVEVT_RASMAN_RECV_PACKET 9 // event posted by tapi/... #define OVEVT_RASMAN_THRESHOLD 10 // event notifying setting of a threshold event #define OVEVT_DEV_CREATE 11 // new port event (PnP) #define OVEVT_DEV_REMOVE 12 // device remove event (PnP) #define OVEVT_DEV_CONFIGCHANGE 13 // pptp config changed (PnP) #define OVEVT_DEV_RASCONFIGCHANGE 14 // Configuration of some device changed (PnP) #define OVEVT_RASMAN_ADJUST_TIMER 15 // someone added a timer element.. #define OVEVT_RASMAN_HIBERNATE 16 // ndiswan is asking rasman to hibernate #define OVEVT_RASMAN_PROTOCOL_EVENT 17 // ndiswan indicates a protocol event #define OVEVT_RASMAN_POST_RECV_PKT 18 // post receive packet in rasmans thread #define OVEVT_RASMAN_DEREFERENCE_CONNECTION 19 // post event to disconnect #define OVEVT_RASMAN_POST_STARTRASAUTO 20 // start rasauto service #define OVEVT_RASMAN_DEFERRED_CLOSE_CONNECTION 21 // Close deferred connections // // RAS_OVERLAPPED.RO_EventTypes for rasapi32 // dialing machine and PPP. // #define OVEVT_DIAL_IGNORED 0 // ignored #define OVEVT_DIAL_DROP 1 // port disconnected #define OVEVT_DIAL_STATECHANGE 2 // rasdial state change #define OVEVT_DIAL_PPP 3 // PPP event received #define OVEVT_DIAL_LAST 4 // no more events on this port #define OVEVT_DIAL_SHUTDOWN 5 // shutdown event #define REQUEST_BUFFER_SIZE 2500 #define RECEIVE_OUTOF_PROCESS 0x00000001 #define RECEIVE_WAITING 0x00000002 #define RECEIVE_PPPSTARTED 0x00000004 #define RECEIVE_PPPLISTEN 0x00000008 #define RECEIVE_PPPSTOPPED 0x00000010 #define RECEIVE_PPPSTART 0x00000020 #define RASMANFLAG_PPPSTOPPENDING 0x00000001 typedef struct _RAS_RPC { RPC_BINDING_HANDLE hRpcBinding; BOOL fLocal; DWORD dwVersion; TCHAR szServer[MAX_COMPUTERNAME_LENGTH + 1]; } RAS_RPC, *PRAS_RPC; typedef struct _RAS_CUSTOM_AUTH_DATA { DWORD cbCustomAuthData; BYTE abCustomAuthData[1]; } RAS_CUSTOM_AUTH_DATA, *PRAS_CUSTOM_AUTH_DATA; typedef struct _RAS_CONNECT_INFO { DWORD dwCallerIdSize; CHAR *pszCallerId; DWORD dwCalledIdSize; CHAR *pszCalledId; DWORD dwConnectResponseSize; CHAR *pszConnectResponse; DWORD dwAltCalledIdSize; CHAR *pszAltCalledId; BYTE abdata[1]; } RAS_CONNECT_INFO, *PRAS_CONNECT_INFO; typedef struct _RASTAPI_CONNECT_INFO { DWORD dwCallerIdSize; DWORD dwCallerIdOffset; DWORD dwCalledIdSize; DWORD dwCalledIdOffset; DWORD dwConnectResponseSize; DWORD dwConnectResponseOffset; DWORD dwAltCalledIdSize; DWORD dwAltCalledIdOffset; BYTE abdata[1]; } RASTAPI_CONNECT_INFO, *PRASTAPI_CONNECT_INFO; typedef struct _EAPLOGONINFO { DWORD dwSize; DWORD dwLogonInfoSize; DWORD dwOffsetLogonInfo; DWORD dwPINInfoSize; DWORD dwOffsetPINInfo; BYTE abdata[1]; } EAPLOGONINFO, *PEAPLOGONINFO; // // Structure used in IOCTL_NDISWAN_GET_DRIVER_INFO // typedef struct _RAS_NDISWAN_DRIVER_INFO { OUT ULONG DriverCaps; OUT ULONG Reserved; } RAS_NDISWAN_DRIVER_INFO, *P_NDISWAN_DRIVER_INFO; // // Structure used in IOCTL_NDISWAN_GET_BANDWIDTH_UTILIZATION // typedef struct _RAS_GET_BANDWIDTH_UTILIZATION { OUT ULONG ulUpperXmitUtil; OUT ULONG ulLowerXmitUtil; OUT ULONG ulUpperRecvUtil; OUT ULONG ulLowerRecvUtil; } RAS_GET_BANDWIDTH_UTILIZATION, *PRAS_GET_BANDWIDTH_UTILIZATION; // // This structure should match the WAN_PROTOCOL_INFO in wanpub.h // typedef struct _RASMAN_PROTOCOL_INFO { USHORT ProtocolType; // protocol's Ethertype USHORT PPPId; // protocol's PPP ID ULONG MTU; // MTU being used ULONG TunnelMTU; // MTU used for tunnels ULONG PacketQueueDepth; // max depth of packet queue (in seconds) } RASMAN_PROTOCOL_INFO, *PRASMAN_PROTOCOL_INFO; // // Structure used in IOCTL_NDISWAN_GET_PROTOCOL_INFO // typedef struct _RASMAN_GET_PROTOCOL_INFO { OUT ULONG ulNumProtocols; OUT RASMAN_PROTOCOL_INFO ProtocolInfo[RASMAN_MAX_PROTOCOLS]; } RASMAN_GET_PROTOCOL_INFO, *PRASMAN_GET_PROTOCOL_INFO; typedef struct _RASMANCOMMSETTINGS { DWORD dwSize; BYTE bParity; BYTE bStop; BYTE bByteSize; BYTE bAlign; } RASMANCOMMSETTINGS, *PRASMANCOMMSETTINGS; #define RASCRED_LOGON 0x00000001 #define RASCRED_EAP 0x00000002 typedef struct _RASMAN_CREDENTIALS { DWORD dwFlags; USHORT usLength; USHORT usMaximumLength; CHAR szUserName[UNLEN + 8]; CHAR szDomain[DNLEN + 1]; WCHAR wszPassword[PWLEN]; UCHAR ucSeed; } RASMAN_CREDENTIALS, *PRASMAN_CREDENTIALS; // // RAS Manager entrypoint Prototypes // DWORD RasStartRasAutoIfRequired(void); DWORD APIENTRY RasPortOpen(PCHAR, HPORT*, HANDLE); DWORD APIENTRY RasPortClose(HPORT); DWORD APIENTRY RasPortEnum(HANDLE, PBYTE, PDWORD, PDWORD); DWORD APIENTRY RasPortGetInfo(HANDLE, HPORT, PBYTE, PDWORD); DWORD APIENTRY RasPortSetInfo(HPORT, RASMAN_PORTINFO*); DWORD APIENTRY RasPortDisconnect(HPORT, HANDLE); DWORD APIENTRY RasPortSend(HPORT, PBYTE, DWORD); DWORD APIENTRY RasPortReceive(HPORT, PBYTE, PDWORD, DWORD, HANDLE); DWORD APIENTRY RasPortListen(HPORT, DWORD, HANDLE); DWORD APIENTRY RasPortConnectComplete(HPORT); DWORD APIENTRY RasPortGetStatistics(HANDLE, HPORT, PBYTE, PDWORD); DWORD APIENTRY RasPortClearStatistics(HANDLE, HPORT); DWORD APIENTRY RasPortGetStatisticsEx(HANDLE, HPORT, PBYTE, PDWORD); DWORD APIENTRY RasDeviceEnum(HANDLE, PCHAR, PBYTE, PDWORD, PDWORD); DWORD APIENTRY RasDeviceGetInfo(HANDLE, HPORT, PCHAR, PCHAR, PBYTE, PDWORD); DWORD APIENTRY RasDeviceSetInfo(HPORT, PCHAR, PCHAR, RASMAN_DEVICEINFO*); DWORD APIENTRY RasDeviceConnect(HPORT, PCHAR, PCHAR, DWORD, HANDLE); DWORD APIENTRY RasGetInfo( HANDLE, HPORT, RASMAN_INFO*); DWORD APIENTRY RasGetInfoEx( HANDLE, RASMAN_INFO*, PWORD); DWORD APIENTRY RasGetBuffer( PBYTE*, PDWORD); DWORD APIENTRY RasFreeBuffer(PBYTE); DWORD APIENTRY RasProtocolEnum( PBYTE, PDWORD, PDWORD); DWORD APIENTRY RasAllocateRoute( HPORT, RAS_PROTOCOLTYPE, BOOL, RASMAN_ROUTEINFO*); DWORD APIENTRY RasActivateRoute( HPORT, RAS_PROTOCOLTYPE, RASMAN_ROUTEINFO*, PROTOCOL_CONFIG_INFO*); DWORD APIENTRY RasActivateRouteEx( HPORT, RAS_PROTOCOLTYPE, DWORD, RASMAN_ROUTEINFO*, PROTOCOL_CONFIG_INFO*); DWORD APIENTRY RasDeAllocateRoute( HBUNDLE, RAS_PROTOCOLTYPE); DWORD APIENTRY RasCompressionGetInfo( HPORT, RAS_COMPRESSION_INFO* Send, RAS_COMPRESSION_INFO* Recv); DWORD APIENTRY RasCompressionSetInfo( HPORT, RAS_COMPRESSION_INFO* Send, RAS_COMPRESSION_INFO* Recv); DWORD APIENTRY RasGetUserCredentials( PBYTE, PLUID, PWCHAR, PBYTE, PBYTE, PBYTE, PBYTE) ; DWORD APIENTRY RasSetCachedCredentials( PCHAR, PCHAR, PCHAR ) ; DWORD APIENTRY RasRequestNotification ( HPORT, HANDLE) ; DWORD APIENTRY RasPortCancelReceive (HPORT) ; DWORD APIENTRY RasPortEnumProtocols ( HANDLE, HPORT, RAS_PROTOCOLS*, PDWORD) ; DWORD APIENTRY RasEnumLanNets ( DWORD *, UCHAR *) ; DWORD APIENTRY RasPortSetFraming ( HPORT, RAS_FRAMING, RASMAN_PPPFEATURES*, RASMAN_PPPFEATURES*) ; DWORD APIENTRY RasPortRegisterSlip ( HPORT, DWORD, DWORD, BOOL, WCHAR*, WCHAR*, WCHAR*, WCHAR*) ; DWORD APIENTRY RasPortStoreUserData ( HPORT, PBYTE, DWORD) ; DWORD APIENTRY RasPortRetrieveUserData ( HPORT, PBYTE, DWORD *) ; DWORD APIENTRY RasPortGetFramingEx ( HANDLE, HPORT, RAS_FRAMING_INFO *) ; DWORD APIENTRY RasPortSetFramingEx ( HPORT, RAS_FRAMING_INFO *) ; DWORD APIENTRY RasPortGetProtocolCompression ( HPORT, RAS_PROTOCOLTYPE, RAS_PROTOCOLCOMPRESSION *, RAS_PROTOCOLCOMPRESSION *) ; DWORD APIENTRY RasPortSetProtocolCompression ( HPORT, RAS_PROTOCOLTYPE, RAS_PROTOCOLCOMPRESSION *, RAS_PROTOCOLCOMPRESSION *) ; DWORD APIENTRY RasGetFramingCapabilities ( HPORT, RAS_FRAMING_CAPABILITIES*) ; //DWORD APIENTRY RasInitialize () ; DWORD APIENTRY RasPortReserve ( PCHAR, HPORT*) ; DWORD APIENTRY RasPortFree (HPORT) ; DWORD APIENTRY RasPortBundle( HPORT, HPORT ); DWORD APIENTRY RasPortGetBundledPort ( HPORT oldport, HPORT *pnewport) ; DWORD APIENTRY RasBundleGetPort ( HANDLE hConnection, HBUNDLE hbundle, HPORT *phport) ; DWORD APIENTRY RasPortGetBundle ( HANDLE hConnection, HPORT hport, HBUNDLE *phbundle) ; DWORD APIENTRY RasReferenceRasman (BOOL fAttach); DWORD APIENTRY RasGetAttachedCount ( DWORD *pdwAttachedCount ); DWORD APIENTRY RasGetDialParams ( DWORD dwUID, LPDWORD lpdwMask, PRAS_DIALPARAMS pDialParams); DWORD APIENTRY RasSetDialParams ( DWORD dwOldUID, DWORD dwMask, PRAS_DIALPARAMS pDialParams, BOOL fDelete); DWORD APIENTRY RasCreateConnection( HCONN *lphconn, DWORD dwSubEntries, DWORD *lpdwEntryAlreadyConnected, DWORD *lpdwSubEntryInfo, DWORD dwDialMode, GUID *pGuidEntry, CHAR *lpszPhonebookPath, CHAR *lpszEntryName, CHAR *lpszRefPbkPath, CHAR *lpszRefEntryName); DWORD APIENTRY RasDestroyConnection (HCONN hconn); DWORD APIENTRY RasConnectionEnum (HANDLE hConnection, HCONN *lphconn, LPDWORD lpdwcbConnections, LPDWORD lpdwcConnections); DWORD APIENTRY RasAddConnectionPort ( HCONN hconn, HPORT hport, DWORD dwSubEntry); DWORD APIENTRY RasEnumConnectionPorts ( HANDLE hConnection, HCONN hconn, RASMAN_PORT *pPorts, LPDWORD lpdwcbPorts, LPDWORD lpdwcPorts); DWORD APIENTRY RasGetConnectionParams ( HCONN hconn, PRAS_CONNECTIONPARAMS pConnectionParams); DWORD APIENTRY RasSetConnectionParams ( HCONN hconn, PRAS_CONNECTIONPARAMS pConnectionParams); DWORD APIENTRY RasGetConnectionUserData ( HPORT hconn, DWORD dwTag, PBYTE pBuf, LPDWORD lpdwcbBuf); DWORD APIENTRY RasSetConnectionUserData ( HPORT hconn, DWORD dwTag, PBYTE pBuf, DWORD dwcbBuf); DWORD APIENTRY RasGetPortUserData ( HPORT hport, DWORD dwTag, PBYTE pBuf, LPDWORD lpdwcbBuf); DWORD APIENTRY RasSetPortUserData ( HPORT hport, DWORD dwTag, PBYTE pBuf, DWORD dwcbBuf); DWORD APIENTRY RasAddNotification ( HCONN hconn, HANDLE hevent, DWORD dwfFlags); DWORD APIENTRY RasSignalNewConnection( HCONN hconn); DWORD APIENTRY RasSetDevConfig( HPORT hport, PCHAR devicetype, PBYTE config, DWORD size); DWORD APIENTRY RasGetDevConfig( HANDLE hConnection, HPORT hport, PCHAR devicetype, PBYTE config, DWORD* size); DWORD APIENTRY RasGetTimeSinceLastActivity( HPORT hport, LPDWORD lpdwTimeSinceLastActivity ); DWORD APIENTRY RasBundleGetStatistics( HANDLE, HPORT, PBYTE, PDWORD); DWORD APIENTRY RasBundleGetStatisticsEx( HANDLE, HPORT, PBYTE, PDWORD); DWORD APIENTRY RasBundleClearStatistics(HANDLE, HPORT); DWORD APIENTRY RasBundleClearStatisticsEx(HANDLE, HCONN); DWORD APIENTRY RasPnPControl( DWORD, HPORT); DWORD APIENTRY RasSetIoCompletionPort( HPORT, HANDLE, PRAS_OVERLAPPED, PRAS_OVERLAPPED, PRAS_OVERLAPPED, PRAS_OVERLAPPED); DWORD APIENTRY RasSetRouterUsage( HPORT, BOOL); DWORD APIENTRY RasServerPortClose( HPORT ); DWORD APIENTRY RasSetRasdialInfo( HPORT, CHAR *, CHAR *, CHAR *, DWORD, PBYTE); DWORD APIENTRY RasSendPppMessageToRasman( HPORT, LPBYTE); DWORD APIENTRY RasGetNumPortOpen (); // DWORD APIENTRY RasNotifyConfigChange(); DWORD _RasmanInit( LPDWORD pNumPorts); VOID _RasmanEngine(); DWORD APIENTRY RasRegisterPnPEvent ( HANDLE, BOOL ); DWORD APIENTRY RasRegisterPnPHandler ( PAPCFUNC, HANDLE, BOOL); DWORD APIENTRY RasRpcConnect ( LPWSTR, HANDLE *); DWORD APIENTRY RasRpcDisconnect( HANDLE *); DWORD APIENTRY RasRpcConnectServer(LPTSTR lpszServer, HANDLE *pHConnection); DWORD APIENTRY RasRpcDisconnectServer(HANDLE hConnection); DWORD APIENTRY RasSetBapPolicy ( HCONN, DWORD, DWORD, DWORD, DWORD ); DWORD APIENTRY RasPppStarted ( HPORT hPort ); DWORD APIENTRY RasRefConnection ( HCONN hConn, BOOL AddRef, DWORD *pdwRefCount ); DWORD APIENTRY RasPppGetEapInfo ( HCONN hConn, DWORD dwSubEntry, PDWORD pdwContextId, PDWORD pdwEapTypeId, PDWORD pdwSizeofEapUIData, PBYTE pbdata ); DWORD APIENTRY RasPppSetEapInfo ( HPORT hPort, DWORD dwSizeOfEapUIdata, DWORD dwContextId, PBYTE pbdata); DWORD APIENTRY RasSetDeviceConfigInfo( HANDLE hConnection, DWORD cDevices, DWORD cbBuffer, BYTE *pbBuffer); DWORD APIENTRY RasGetDeviceConfigInfo( HANDLE hConnection, DWORD *dwVersion, DWORD *pcDevices, DWORD *pcbdata, BYTE *pbBuffer); DWORD APIENTRY RasFindPrerequisiteEntry( HCONN hConn, HCONN *phConnPrerequisiteEntry); DWORD APIENTRY RasPortOpenEx(CHAR *pszDeviceName, DWORD dwDeviceLineCounter, HPORT *phport, HANDLE hnotifier, DWORD *pdwFlags); DWORD APIENTRY RasLinkGetStatistics( HANDLE hConnection, HCONN hConn, DWORD dwSubEntry, PBYTE pbStats); DWORD APIENTRY RasConnectionGetStatistics(HANDLE hConnection, HCONN hConn, PBYTE pbStats); DWORD APIENTRY RasGetHportFromConnection(HANDLE hConnection, HCONN hConn, HPORT *phport); DWORD APIENTRY RasReferenceCustomCount(HCONN hConn, BOOL fAddref, CHAR* pszPhonebookPath, CHAR* pszEntryName, DWORD* pdwCount); DWORD APIENTRY RasGetHConnFromEntry(HCONN *phConn, CHAR *pszPhonebookPath, CHAR *pszEntryName); DWORD APIENTRY RasGetConnectInfo( HPORT hPort, DWORD *pdwSize, RAS_CONNECT_INFO *pConnectInfo ); DWORD APIENTRY RasGetDeviceName( RASDEVICETYPE eDeviceType, CHAR *pszDeviceName ); DWORD APIENTRY RasGetCalledIdInfo( HANDLE hConneciton, RAS_DEVICE_INFO *pDeviceInfo, DWORD *pdwSize, RAS_CALLEDID_INFO *pCalledIdInfo ); DWORD APIENTRY RasSetCalledIdInfo( HANDLE hConnection, RAS_DEVICE_INFO *pDeviceInfo, RAS_CALLEDID_INFO *pCalledIdInfo, BOOL fWrite ); DWORD APIENTRY RasEnableIpSec(HPORT hPort, BOOL fEnable, BOOL fServer, RAS_L2TP_ENCRYPTION eDataEncryption ); DWORD APIENTRY RasIsIpSecEnabled(HPORT hPort, BOOL *pfIsIpSecEnabled); DWORD APIENTRY RasGetEapUserInfo(HANDLE hToken, PBYTE pbEapInfo, DWORD *pdwInfoSize, GUID *pGuid, BOOL fRouter, DWORD dwEapTypeId ); DWORD APIENTRY RasSetEapUserInfo(HANDLE hToken, GUID *pGuid, PBYTE pbUserInfo, DWORD dwInfoSize, BOOL fClear, BOOL fRouter, DWORD dwEapTypeId ); DWORD APIENTRY RasSetEapLogonInfo(HPORT hPort, BOOL fLogon, RASEAPINFO *pEapInfo); DWORD APIENTRY RasSendNotification(RASEVENT *pRasEvent); DWORD APIENTRY RasGetNdiswanDriverCaps( HANDLE hConnection, RAS_NDISWAN_DRIVER_INFO *pInfo); DWORD APIENTRY RasGetBandwidthUtilization( HPORT hPort, RAS_GET_BANDWIDTH_UTILIZATION *pUtilization); DWORD APIENTRY RasGetProtocolInfo( HANDLE hConnection, RASMAN_GET_PROTOCOL_INFO *pInfo); BOOL IsRasmanProcess(); DWORD APIENTRY RasGetCustomScriptDll(CHAR *pszCustomDll); DWORD DwRasGetHostByName(CHAR *pszHostName, DWORD **ppdwAddress, DWORD *pcAddresses); DWORD RasIsTrustedCustomDll( HANDLE hConnection, WCHAR *pwszCustomDll, BOOL *pfResult); DWORD RasDoIke( HANDLE hConnection, HPORT hPort, DWORD *pdwStatus); #if (WINVER >= 0x501) DWORD RasSetCommSettings( HPORT hPort, RASCOMMSETTINGS *pRasCommSettings, PVOID pv); #endif DWORD RasEnableRasAudio( HANDLE hConnection, BOOL fEnable); DWORD RasSetKey( HANDLE hConnection, GUID *pGuid, DWORD dwMask, DWORD cbkey, PBYTE pbkey); DWORD RasGetKey( HANDLE hConnection, GUID *pGuid, DWORD dwMask, DWORD *pcbkey, PBYTE pbkey); DWORD RasSetAddressDisable( WCHAR *pszAddress, BOOL fDisable); DWORD RasGetDevConfigEx( HANDLE hConnection, HPORT hport, PCHAR devicetype, PBYTE config, DWORD* size); DWORD APIENTRY RasSendCreds(IN HPORT hport, IN CHAR controlchar); DWORD APIENTRY RasGetUnicodeDeviceName(IN HPORT hport, IN WCHAR *wszDeviceName); DWORD APIENTRY RasmanUninitialize(); DWORD APIENTRY RasGetDeviceNameW(IN RASDEVICETYPE eDeviceType, OUT WCHAR *wszDeviceName); #endif