1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef __ROUTING_MPRADMIN_H__ 7 #define __ROUTING_MPRADMIN_H__ 8 9 #include <winapifamily.h> 10 11 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) 12 13 #include <lmcons.h> 14 #include <ras.h> 15 #include <in6addr.h> 16 #include <wincrypt.h> 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 #ifndef CALLBACK 23 #define CALLBACK WINAPI 24 #endif 25 26 #define RRAS_SERVICE_NAME TEXT("RemoteAccess") 27 28 #define PID_IPX 0x0000002B 29 #define PID_IP 0x00000021 30 #define PID_NBF 0x0000003F 31 #define PID_ATALK 0x00000029 32 33 #define MAX_INTERFACE_NAME_LEN 256 34 #define MAX_TRANSPORT_NAME_LEN 40 35 #define MAX_MEDIA_NAME 16 36 #define MAX_PORT_NAME 16 37 #define MAX_DEVICE_NAME 128 38 #define MAX_PHONE_NUMBER_LEN 128 39 #define MAX_DEVICETYPE_NAME 16 40 41 typedef enum _ROUTER_INTERFACE_TYPE { 42 ROUTER_IF_TYPE_CLIENT,ROUTER_IF_TYPE_HOME_ROUTER,ROUTER_IF_TYPE_FULL_ROUTER,ROUTER_IF_TYPE_DEDICATED,ROUTER_IF_TYPE_INTERNAL, 43 ROUTER_IF_TYPE_LOOPBACK,ROUTER_IF_TYPE_TUNNEL1,ROUTER_IF_TYPE_DIALOUT 44 } ROUTER_INTERFACE_TYPE; 45 46 typedef enum _ROUTER_CONNECTION_STATE { 47 ROUTER_IF_STATE_UNREACHABLE,ROUTER_IF_STATE_DISCONNECTED,ROUTER_IF_STATE_CONNECTING,ROUTER_IF_STATE_CONNECTED 48 } ROUTER_CONNECTION_STATE; 49 50 #define MPR_INTERFACE_OUT_OF_RESOURCES 0x00000001 51 #define MPR_INTERFACE_ADMIN_DISABLED 0x00000002 52 #define MPR_INTERFACE_CONNECTION_FAILURE 0x00000004 53 #define MPR_INTERFACE_SERVICE_PAUSED 0x00000008 54 #define MPR_INTERFACE_DIALOUT_HOURS_RESTRICTION 0x00000010 55 #define MPR_INTERFACE_NO_MEDIA_SENSE 0x00000020 56 #define MPR_INTERFACE_NO_DEVICE 0x00000040 57 58 typedef struct _MPR_INTERFACE_0 { 59 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; 60 HANDLE hInterface; 61 WINBOOL fEnabled; 62 ROUTER_INTERFACE_TYPE dwIfType; 63 ROUTER_CONNECTION_STATE dwConnectionState; 64 DWORD fUnReachabilityReasons; 65 DWORD dwLastError; 66 } MPR_INTERFACE_0,*PMPR_INTERFACE_0; 67 68 typedef struct _MPR_IPINIP_INTERFACE_0 { 69 WCHAR wszFriendlyName[MAX_INTERFACE_NAME_LEN+1]; 70 GUID Guid; 71 } MPR_IPINIP_INTERFACE_0,*PMPR_IPINIP_INTERFACE_0; 72 73 typedef struct _MPR_INTERFACE_1 { 74 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; 75 HANDLE hInterface; 76 WINBOOL fEnabled; 77 ROUTER_INTERFACE_TYPE dwIfType; 78 ROUTER_CONNECTION_STATE dwConnectionState; 79 DWORD fUnReachabilityReasons; 80 DWORD dwLastError; 81 LPWSTR lpwsDialoutHoursRestriction; 82 83 } MPR_INTERFACE_1,*PMPR_INTERFACE_1; 84 85 #define MPR_MaxDeviceType RAS_MaxDeviceType 86 #define MPR_MaxPhoneNumber RAS_MaxPhoneNumber 87 #define MPR_MaxIpAddress RAS_MaxIpAddress 88 #define MPR_MaxIpxAddress RAS_MaxIpxAddress 89 90 #define MPR_MaxEntryName RAS_MaxEntryName 91 #define MPR_MaxDeviceName RAS_MaxDeviceName 92 #define MPR_MaxCallbackNumber RAS_MaxCallbackNumber 93 94 #define MPR_MaxAreaCode RAS_MaxAreaCode 95 #define MPR_MaxPadType RAS_MaxPadType 96 #define MPR_MaxX25Address RAS_MaxX25Address 97 #define MPR_MaxFacilities RAS_MaxFacilities 98 #define MPR_MaxUserData RAS_MaxUserData 99 100 #define MPRIO_SpecificIpAddr RASEO_SpecificIpAddr 101 #define MPRIO_SpecificNameServers RASEO_SpecificNameServers 102 #define MPRIO_IpHeaderCompression RASEO_IpHeaderCompression 103 #define MPRIO_RemoteDefaultGateway RASEO_RemoteDefaultGateway 104 #define MPRIO_DisableLcpExtensions RASEO_DisableLcpExtensions 105 #define MPRIO_SwCompression RASEO_SwCompression 106 #define MPRIO_RequireEncryptedPw RASEO_RequireEncryptedPw 107 #define MPRIO_RequireMsEncryptedPw RASEO_RequireMsEncryptedPw 108 #define MPRIO_RequireDataEncryption RASEO_RequireDataEncryption 109 #define MPRIO_NetworkLogon RASEO_NetworkLogon 110 #define MPRIO_PromoteAlternates RASEO_PromoteAlternates 111 #define MPRIO_SecureLocalFiles RASEO_SecureLocalFiles 112 #define MPRIO_RequireEAP RASEO_RequireEAP 113 #define MPRIO_RequirePAP RASEO_RequirePAP 114 #define MPRIO_RequireSPAP RASEO_RequireSPAP 115 #define MPRIO_SharedPhoneNumbers RASEO_SharedPhoneNumbers 116 #define MPRIO_RequireCHAP RASEO_RequireCHAP 117 #define MPRIO_RequireMsCHAP RASEO_RequireMsCHAP 118 #define MPRIO_RequireMsCHAP2 RASEO_RequireMsCHAP2 119 #define MPRIO_IpSecPreSharedKey 0x80000000 120 121 #define MPRNP_Ipx RASNP_Ipx 122 #define MPRNP_Ip RASNP_Ip 123 124 #define MPRDT_Modem RASDT_Modem 125 #define MPRDT_Isdn RASDT_Isdn 126 #define MPRDT_X25 RASDT_X25 127 #define MPRDT_Vpn RASDT_Vpn 128 #define MPRDT_Pad RASDT_Pad 129 #define MPRDT_Generic RASDT_Generic 130 #define MPRDT_Serial RASDT_Serial 131 #define MPRDT_FrameRelay RASDT_FrameRelay 132 #define MPRDT_Atm RASDT_Atm 133 #define MPRDT_Sonet RASDT_Sonet 134 #define MPRDT_SW56 RASDT_SW56 135 #define MPRDT_Irda RASDT_Irda 136 #define MPRDT_Parallel RASDT_Parallel 137 138 #define MPRET_Phone RASET_Phone 139 #define MPRET_Vpn RASET_Vpn 140 #define MPRET_Direct RASET_Direct 141 142 #define MPRDM_DialFirst 0 143 #define MPRDM_DialAll RASEDM_DialAll 144 #define MPRDM_DialAsNeeded RASEDM_DialAsNeeded 145 146 #define MPRIDS_Disabled RASIDS_Disabled 147 #define MPRIDS_UseGlobalValue RASIDS_UseGlobalValue 148 149 #define MPR_ET_None ET_None 150 #define MPR_ET_Require ET_Require 151 #define MPR_ET_RequireMax ET_RequireMax 152 #define MPR_ET_Optional ET_Optional 153 154 #define MPR_VS_Default VS_Default 155 #define MPR_VS_PptpOnly VS_PptpOnly 156 #define MPR_VS_PptpFirst VS_PptpFirst 157 #define MPR_VS_L2tpOnly VS_L2tpOnly 158 #define MPR_VS_L2tpFirst VS_L2tpFirst 159 160 typedef struct _MPR_INTERFACE_2 { 161 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; 162 HANDLE hInterface; 163 WINBOOL fEnabled; 164 ROUTER_INTERFACE_TYPE dwIfType; 165 ROUTER_CONNECTION_STATE dwConnectionState; 166 DWORD fUnReachabilityReasons; 167 DWORD dwLastError; 168 DWORD dwfOptions; 169 WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1 ]; 170 PWCHAR szAlternates; 171 DWORD ipaddr; 172 DWORD ipaddrDns; 173 DWORD ipaddrDnsAlt; 174 DWORD ipaddrWins; 175 DWORD ipaddrWinsAlt; 176 DWORD dwfNetProtocols; 177 WCHAR szDeviceType[MPR_MaxDeviceType + 1 ]; 178 WCHAR szDeviceName[MPR_MaxDeviceName + 1 ]; 179 WCHAR szX25PadType[MPR_MaxPadType + 1 ]; 180 WCHAR szX25Address[MPR_MaxX25Address + 1 ]; 181 WCHAR szX25Facilities[MPR_MaxFacilities + 1 ]; 182 WCHAR szX25UserData[MPR_MaxUserData + 1 ]; 183 DWORD dwChannels; 184 DWORD dwSubEntries; 185 DWORD dwDialMode; 186 DWORD dwDialExtraPercent; 187 DWORD dwDialExtraSampleSeconds; 188 DWORD dwHangUpExtraPercent; 189 DWORD dwHangUpExtraSampleSeconds; 190 DWORD dwIdleDisconnectSeconds; 191 DWORD dwType; 192 DWORD dwEncryptionType; 193 DWORD dwCustomAuthKey; 194 DWORD dwCustomAuthDataSize; 195 LPBYTE lpbCustomAuthData; 196 GUID guidId; 197 DWORD dwVpnStrategy; 198 } MPR_INTERFACE_2,*PMPR_INTERFACE_2; 199 200 #if (_WIN32_WINNT >= 0x0600) 201 typedef struct _MPR_INTERFACE_3 { 202 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; 203 HANDLE hInterface; 204 WINBOOL fEnabled; 205 ROUTER_INTERFACE_TYPE dwIfType; 206 ROUTER_CONNECTION_STATE dwConnectionState; 207 DWORD fUnReachabilityReasons; 208 DWORD dwLastError; 209 DWORD dwfOptions; 210 WCHAR szLocalPhoneNumber[RAS_MaxPhoneNumber + 1]; 211 PWCHAR szAlternates; 212 DWORD ipaddr; 213 DWORD ipaddrDns; 214 DWORD ipaddrDnsAlt; 215 DWORD ipaddrWins; 216 DWORD ipaddrWinsAlt; 217 DWORD dwfNetProtocols; 218 WCHAR szDeviceType[MPR_MaxDeviceType + 1]; 219 WCHAR szDeviceName[MPR_MaxDeviceName + 1]; 220 WCHAR szX25PadType[MPR_MaxPadType + 1]; 221 WCHAR szX25Address[MPR_MaxX25Address + 1]; 222 WCHAR szX25Facilities[MPR_MaxFacilities + 1]; 223 WCHAR szX25UserData[MPR_MaxUserData + 1]; 224 DWORD dwChannels; 225 DWORD dwSubEntries; 226 DWORD dwDialMode; 227 DWORD dwDialExtraPercent; 228 DWORD dwDialExtraSampleSeconds; 229 DWORD dwHangUpExtraPercent; 230 DWORD dwHangUpExtraSampleSeconds; 231 DWORD dwIdleDisconnectSeconds; 232 DWORD dwType; 233 DWORD dwEncryptionType; 234 DWORD dwCustomAuthKey; 235 DWORD dwCustomAuthDataSize; 236 LPBYTE lpbCustomAuthData; 237 GUID guidId; 238 DWORD dwVpnStrategy; 239 ULONG AddressCount; 240 IN6_ADDR ipv6addrDns; 241 IN6_ADDR ipv6addrDnsAlt; 242 IN6_ADDR * ipv6addr; 243 } MPR_INTERFACE_3, *PMPR_INTERFACE_3; 244 #endif 245 246 typedef struct _MPR_DEVICE_0 { 247 WCHAR szDeviceType[MPR_MaxDeviceType + 1 ]; 248 WCHAR szDeviceName[MPR_MaxDeviceName + 1 ]; 249 } MPR_DEVICE_0,*PMPR_DEVICE_0; 250 251 typedef struct _MPR_DEVICE_1 { 252 WCHAR szDeviceType[MPR_MaxDeviceType + 1 ]; 253 WCHAR szDeviceName[MPR_MaxDeviceName + 1 ]; 254 WCHAR szLocalPhoneNumber[MPR_MaxPhoneNumber + 1 ]; 255 PWCHAR szAlternates; 256 } MPR_DEVICE_1,*PMPR_DEVICE_1; 257 258 typedef struct _MPR_CREDENTIALSEX_0 { 259 DWORD dwSize; 260 LPBYTE lpbCredentialsInfo; 261 } MPR_CREDENTIALSEX_0,*PMPR_CREDENTIALSEX_0; 262 263 typedef struct _MPR_CREDENTIALSEX_1 { 264 DWORD dwSize; 265 LPBYTE lpbCredentialsInfo; 266 } MPR_CREDENTIALSEX_1,*PMPR_CREDENTIALSEX_1; 267 268 typedef struct _MPR_TRANSPORT_0 { 269 DWORD dwTransportId; 270 HANDLE hTransport; 271 WCHAR wszTransportName[MAX_TRANSPORT_NAME_LEN+1]; 272 } MPR_TRANSPORT_0,*PMPR_TRANSPORT_0; 273 274 typedef struct _MPR_IFTRANSPORT_0 275 { 276 DWORD dwTransportId; 277 HANDLE hIfTransport; 278 WCHAR wszIfTransportName[MAX_TRANSPORT_NAME_LEN+1]; 279 280 } 281 MPR_IFTRANSPORT_0,*PMPR_IFTRANSPORT_0; 282 283 typedef struct _MPR_SERVER_0 284 { 285 WINBOOL fLanOnlyMode; 286 DWORD dwUpTime; 287 DWORD dwTotalPorts; 288 DWORD dwPortsInUse; 289 290 } 291 MPR_SERVER_0,*PMPR_SERVER_0; 292 293 #define MPR_ENABLE_RAS_ON_DEVICE 0x00000001 294 #define MPR_ENABLE_ROUTING_ON_DEVICE 0x00000002 295 296 typedef struct _MPR_SERVER_1 { 297 DWORD dwNumPptpPorts; 298 DWORD dwPptpPortFlags; 299 DWORD dwNumL2tpPorts; 300 DWORD dwL2tpPortFlags; 301 } MPR_SERVER_1,*PMPR_SERVER_1; 302 303 typedef enum _RAS_PORT_CONDITION { 304 RAS_PORT_NON_OPERATIONAL,RAS_PORT_DISCONNECTED,RAS_PORT_CALLING_BACK,RAS_PORT_LISTENING,RAS_PORT_AUTHENTICATING,RAS_PORT_AUTHENTICATED, 305 RAS_PORT_INITIALIZING 306 } RAS_PORT_CONDITION; 307 308 typedef enum _RAS_HARDWARE_CONDITION { 309 RAS_HARDWARE_OPERATIONAL,RAS_HARDWARE_FAILURE 310 } RAS_HARDWARE_CONDITION; 311 312 typedef struct _RAS_PORT_0 { 313 HANDLE hPort; 314 HANDLE hConnection; 315 RAS_PORT_CONDITION dwPortCondition; 316 DWORD dwTotalNumberOfCalls; 317 DWORD dwConnectDuration; 318 WCHAR wszPortName[MAX_PORT_NAME + 1 ]; 319 WCHAR wszMediaName[MAX_MEDIA_NAME + 1 ]; 320 WCHAR wszDeviceName[MAX_DEVICE_NAME + 1 ]; 321 WCHAR wszDeviceType[MAX_DEVICETYPE_NAME + 1 ]; 322 } RAS_PORT_0,*PRAS_PORT_0; 323 324 typedef struct _RAS_PORT_1 { 325 HANDLE hPort; 326 HANDLE hConnection; 327 RAS_HARDWARE_CONDITION dwHardwareCondition; 328 DWORD dwLineSpeed; 329 DWORD dwBytesXmited; 330 DWORD dwBytesRcved; 331 DWORD dwFramesXmited; 332 DWORD dwFramesRcved; 333 DWORD dwCrcErr; 334 DWORD dwTimeoutErr; 335 DWORD dwAlignmentErr; 336 DWORD dwHardwareOverrunErr; 337 DWORD dwFramingErr; 338 DWORD dwBufferOverrunErr; 339 DWORD dwCompressionRatioIn; 340 DWORD dwCompressionRatioOut; 341 } RAS_PORT_1,*PRAS_PORT_1; 342 343 #define IPADDRESSLEN 15 344 #define IPXADDRESSLEN 22 345 #define ATADDRESSLEN 32 346 #define MAXIPADRESSLEN 64 347 348 typedef struct _PPP_NBFCP_INFO { 349 DWORD dwError; 350 WCHAR wszWksta[NETBIOS_NAME_LEN + 1 ]; 351 } PPP_NBFCP_INFO; 352 353 typedef struct _PPP_IPCP_INFO { 354 DWORD dwError; 355 WCHAR wszAddress[IPADDRESSLEN + 1 ]; 356 WCHAR wszRemoteAddress[IPADDRESSLEN + 1 ]; 357 } PPP_IPCP_INFO; 358 359 #define PPP_IPCP_VJ 0x00000001 360 361 typedef struct _PPP_IPCP_INFO2 { 362 DWORD dwError; 363 WCHAR wszAddress[IPADDRESSLEN + 1 ]; 364 WCHAR wszRemoteAddress[IPADDRESSLEN + 1 ]; 365 DWORD dwOptions; 366 DWORD dwRemoteOptions; 367 } PPP_IPCP_INFO2; 368 369 typedef struct _PPP_IPXCP_INFO { 370 DWORD dwError; 371 WCHAR wszAddress[IPXADDRESSLEN + 1 ]; 372 } PPP_IPXCP_INFO; 373 374 typedef struct _PPP_ATCP_INFO { 375 DWORD dwError; 376 WCHAR wszAddress[ATADDRESSLEN + 1 ]; 377 } PPP_ATCP_INFO; 378 379 typedef struct _PPP_INFO { 380 PPP_NBFCP_INFO nbf; 381 PPP_IPCP_INFO ip; 382 PPP_IPXCP_INFO ipx; 383 PPP_ATCP_INFO at; 384 } PPP_INFO; 385 386 #define RASCCPCA_MPPC 0x00000006 387 #define RASCCPCA_STAC 0x00000005 388 389 #define PPP_CCP_COMPRESSION 0x00000001 390 #define PPP_CCP_ENCRYPTION40BITOLD 0x00000010 391 #define PPP_CCP_ENCRYPTION40BIT 0x00000020 392 #define PPP_CCP_ENCRYPTION128BIT 0x00000040 393 #define PPP_CCP_ENCRYPTION56BIT 0x00000080 394 #define PPP_CCP_HISTORYLESS 0x01000000 395 396 typedef struct _PPP_CCP_INFO { 397 DWORD dwError; 398 DWORD dwCompressionAlgorithm; 399 DWORD dwOptions; 400 DWORD dwRemoteCompressionAlgorithm; 401 DWORD dwRemoteOptions; 402 } PPP_CCP_INFO; 403 404 #define PPP_LCP_PAP 0xC023 405 #define PPP_LCP_SPAP 0xC027 406 #define PPP_LCP_CHAP 0xC223 407 #define PPP_LCP_EAP 0xC227 408 409 #define PPP_LCP_CHAP_MD5 0x05 410 #define PPP_LCP_CHAP_MS 0x80 411 #define PPP_LCP_CHAP_MSV2 0x81 412 413 #define PPP_LCP_MULTILINK_FRAMING 0x00000001 414 #define PPP_LCP_PFC 0x00000002 415 #define PPP_LCP_ACFC 0x00000004 416 #define PPP_LCP_SSHF 0x00000008 417 #define PPP_LCP_DES_56 0x00000010 418 #define PPP_LCP_3_DES 0x00000020 419 420 typedef struct _PPP_LCP_INFO { 421 DWORD dwError; 422 DWORD dwAuthenticationProtocol; 423 DWORD dwAuthenticationData; 424 DWORD dwRemoteAuthenticationProtocol; 425 DWORD dwRemoteAuthenticationData; 426 DWORD dwTerminateReason; 427 DWORD dwRemoteTerminateReason; 428 DWORD dwOptions; 429 DWORD dwRemoteOptions; 430 DWORD dwEapTypeId; 431 DWORD dwRemoteEapTypeId; 432 } PPP_LCP_INFO; 433 434 typedef struct _PPP_INFO_2 { 435 PPP_NBFCP_INFO nbf; 436 PPP_IPCP_INFO2 ip; 437 PPP_IPXCP_INFO ipx; 438 PPP_ATCP_INFO at; 439 PPP_CCP_INFO ccp; 440 PPP_LCP_INFO lcp; 441 } PPP_INFO_2; 442 443 #define RAS_FLAGS_PPP_CONNECTION 0x00000001 444 #define RAS_FLAGS_MESSENGER_PRESENT 0x00000002 445 #define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008 446 447 typedef struct _RAS_CONNECTION_0 { 448 HANDLE hConnection; 449 HANDLE hInterface; 450 DWORD dwConnectDuration; 451 ROUTER_INTERFACE_TYPE dwInterfaceType; 452 DWORD dwConnectionFlags; 453 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1 ]; 454 WCHAR wszUserName[UNLEN + 1 ]; 455 WCHAR wszLogonDomain[DNLEN + 1 ]; 456 WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1 ]; 457 } RAS_CONNECTION_0,*PRAS_CONNECTION_0; 458 459 typedef struct _RAS_CONNECTION_1 { 460 HANDLE hConnection; 461 HANDLE hInterface; 462 PPP_INFO PppInfo; 463 DWORD dwBytesXmited; 464 DWORD dwBytesRcved; 465 DWORD dwFramesXmited; 466 DWORD dwFramesRcved; 467 DWORD dwCrcErr; 468 DWORD dwTimeoutErr; 469 DWORD dwAlignmentErr; 470 DWORD dwHardwareOverrunErr; 471 DWORD dwFramingErr; 472 DWORD dwBufferOverrunErr; 473 DWORD dwCompressionRatioIn; 474 DWORD dwCompressionRatioOut; 475 } RAS_CONNECTION_1,*PRAS_CONNECTION_1; 476 477 typedef struct _RAS_CONNECTION_2 { 478 HANDLE hConnection; 479 WCHAR wszUserName[UNLEN + 1 ]; 480 ROUTER_INTERFACE_TYPE dwInterfaceType; 481 GUID guid; 482 PPP_INFO_2 PppInfo2; 483 } RAS_CONNECTION_2,*PRAS_CONNECTION_2; 484 485 #define RASPRIV_NoCallback 0x01 486 #define RASPRIV_AdminSetCallback 0x02 487 #define RASPRIV_CallerSetCallback 0x04 488 #define RASPRIV_DialinPrivilege 0x08 489 490 #define RASPRIV2_DialinPolicy 0x1 491 492 #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback) 493 494 typedef struct _RAS_USER_0 { 495 BYTE bfPrivilege; 496 WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1]; 497 } RAS_USER_0,*PRAS_USER_0; 498 499 typedef struct _RAS_USER_1 { 500 BYTE bfPrivilege; 501 WCHAR wszPhoneNumber[MAX_PHONE_NUMBER_LEN + 1]; 502 BYTE bfPrivilege2; 503 } RAS_USER_1,*PRAS_USER_1; 504 505 typedef HANDLE RAS_SERVER_HANDLE; 506 typedef HANDLE MPR_SERVER_HANDLE; 507 typedef HANDLE MIB_SERVER_HANDLE; 508 509 DWORD WINAPI MprAdminConnectionEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 510 DWORD WINAPI MprAdminPortEnum(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 511 DWORD WINAPI MprAdminConnectionGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hConnection,LPBYTE *lplpbBuffer); 512 DWORD WINAPI MprAdminPortGetInfo(RAS_SERVER_HANDLE hRasServer,DWORD dwLevel,HANDLE hPort,LPBYTE *lplpbBuffer); 513 DWORD WINAPI MprAdminConnectionClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hConnection); 514 DWORD WINAPI MprAdminPortClearStats(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); 515 DWORD WINAPI MprAdminPortReset(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); 516 DWORD WINAPI MprAdminPortDisconnect(RAS_SERVER_HANDLE hRasServer,HANDLE hPort); 517 WINBOOL WINAPI MprAdminAcceptNewConnection(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1); 518 WINBOOL WINAPI MprAdminAcceptNewConnection2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2); 519 WINBOOL WINAPI MprAdminAcceptNewLink (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1); 520 VOID WINAPI MprAdminConnectionHangupNotification(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1); 521 VOID WINAPI MprAdminConnectionHangupNotification2(RAS_CONNECTION_0 *pRasConnection0,RAS_CONNECTION_1 *pRasConnection1,RAS_CONNECTION_2 *pRasConnection2); 522 DWORD WINAPI MprAdminConnectionRemoveQuarantine(HANDLE hRasServer,HANDLE hRasConnection,WINBOOL fIsIpAddress); 523 VOID WINAPI MprAdminLinkHangupNotification (RAS_PORT_0 *pRasPort0,RAS_PORT_1 *pRasPort1); 524 DWORD WINAPI MprAdminGetIpAddressForUser (WCHAR *lpwszUserName,WCHAR *lpwszPortName,DWORD *lpdwIpAddress,WINBOOL *bNotifyRelease); 525 VOID WINAPI MprAdminReleaseIpAddress (WCHAR *lpszUserName,WCHAR *lpszPortName,DWORD *lpdwIpAddress); 526 DWORD WINAPI MprAdminInitializeDll(VOID); 527 DWORD WINAPI MprAdminTerminateDll(VOID); 528 DWORD WINAPI MprAdminUserGetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,LPBYTE lpbBuffer); 529 DWORD WINAPI MprAdminUserSetInfo(const WCHAR *lpszServer,const WCHAR *lpszUser,DWORD dwLevel,const LPBYTE lpbBuffer); 530 DWORD WINAPI MprAdminSendUserMessage(MPR_SERVER_HANDLE hMprServer,HANDLE hConnection,LPWSTR lpwszMessage); 531 DWORD WINAPI MprAdminGetPDCServer(const WCHAR *lpszDomain,const WCHAR *lpszServer,LPWSTR lpszPDCServer); 532 WINBOOL WINAPI MprAdminIsServiceRunning(LPWSTR lpwsServerName); 533 DWORD WINAPI MprAdminServerConnect(LPWSTR lpwsServerName,MPR_SERVER_HANDLE *phMprServer); 534 VOID WINAPI MprAdminServerDisconnect(MPR_SERVER_HANDLE hMprServer); 535 DWORD WINAPI MprAdminServerGetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer); 536 DWORD WINAPI MprAdminServerSetCredentials(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); 537 DWORD WINAPI MprAdminBufferFree(LPVOID pBuffer); 538 DWORD WINAPI MprAdminGetErrorString(DWORD dwError,LPWSTR *lpwsErrorString); 539 DWORD WINAPI MprAdminServerGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer); 540 DWORD WINAPI MprAdminServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); 541 DWORD WINAPI MprAdminEstablishDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,WINBOOL bEnable); 542 DWORD WINAPI MprAdminIsDomainRasServer (PWCHAR pszDomain,PWCHAR pszMachine,PBOOL pbIsRasServer); 543 DWORD WINAPI MprAdminTransportCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath); 544 DWORD WINAPI MprAdminTransportSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize); 545 DWORD WINAPI MprAdminTransportGetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwTransportId,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize); 546 DWORD WINAPI MprAdminDeviceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,LPDWORD lpdwTotalEntries); 547 DWORD WINAPI MprAdminInterfaceGetHandle(MPR_SERVER_HANDLE hMprServer,LPWSTR lpwsInterfaceName,HANDLE *phInterface,WINBOOL fIncludeClientInterfaces); 548 DWORD WINAPI MprAdminInterfaceCreate(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phInterface); 549 DWORD WINAPI MprAdminInterfaceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer); 550 DWORD WINAPI MprAdminInterfaceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer); 551 DWORD WINAPI MprAdminInterfaceDelete(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); 552 DWORD WINAPI MprAdminInterfaceDeviceGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE *lplpBuffer); 553 DWORD WINAPI MprAdminInterfaceDeviceSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwIndex,DWORD dwLevel,LPBYTE lplpBuffer); 554 DWORD WINAPI MprAdminInterfaceTransportRemove(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId); 555 DWORD WINAPI MprAdminInterfaceTransportAdd(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); 556 DWORD WINAPI MprAdminInterfaceTransportGetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE *ppInterfaceInfo,LPDWORD lpdwpInterfaceInfoSize); 557 DWORD WINAPI MprAdminInterfaceTransportSetInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwTransportId,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); 558 DWORD WINAPI MprAdminInterfaceEnum(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE *lplpbBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 559 DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameEnum(PWCHAR pwszMachineName,LPBYTE *lplpBuffer,LPDWORD lpdwEntriesRead); 560 DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameFree(LPVOID lpBuffer); 561 DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameCreate(PWCHAR pwszMachineName,PMPR_IPINIP_INTERFACE_0 pNameInformation); 562 DWORD WINAPI MprSetupIpInIpInterfaceFriendlyNameDelete(PWCHAR pwszMachineName,GUID *pGuid); 563 DWORD WINAPI MprAdminInterfaceSetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsDomainName,LPWSTR lpwsPassword); 564 DWORD WINAPI MprAdminInterfaceGetCredentials(LPWSTR lpwsServer,LPWSTR lpwsInterfaceName,LPWSTR lpwsUserName,LPWSTR lpwsPassword,LPWSTR lpwsDomainName); 565 DWORD WINAPI MprAdminInterfaceSetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE lpbBuffer); 566 DWORD WINAPI MprAdminInterfaceGetCredentialsEx(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwLevel,LPBYTE *lplpbBuffer); 567 DWORD WINAPI MprAdminInterfaceConnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,HANDLE hEvent,WINBOOL fSynchronous); 568 DWORD WINAPI MprAdminInterfaceDisconnect(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); 569 DWORD WINAPI MprAdminInterfaceUpdateRoutes(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,HANDLE hEvent); 570 DWORD WINAPI MprAdminInterfaceQueryUpdateResult(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface,DWORD dwProtocolId,LPDWORD lpdwUpdateResult); 571 DWORD WINAPI MprAdminInterfaceUpdatePhonebookInfo(MPR_SERVER_HANDLE hMprServer,HANDLE hInterface); 572 DWORD WINAPI MprAdminRegisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification); 573 DWORD WINAPI MprAdminDeregisterConnectionNotification(MPR_SERVER_HANDLE hMprServer,HANDLE hEventNotification); 574 DWORD WINAPI MprAdminMIBServerConnect(LPWSTR lpwsServerName,MIB_SERVER_HANDLE *phMibServer); 575 VOID WINAPI MprAdminMIBServerDisconnect(MIB_SERVER_HANDLE hMibServer); 576 DWORD WINAPI MprAdminMIBEntryCreate(MIB_SERVER_HANDLE hMibServer,DWORD dwPid,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); 577 DWORD WINAPI MprAdminMIBEntryDelete(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); 578 DWORD WINAPI MprAdminMIBEntrySet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpEntry,DWORD dwEntrySize); 579 DWORD WINAPI MprAdminMIBEntryGet(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); 580 DWORD WINAPI MprAdminMIBEntryGetFirst(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); 581 DWORD WINAPI MprAdminMIBEntryGetNext(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInEntry,DWORD dwInEntrySize,LPVOID *lplpOutEntry,LPDWORD lpOutEntrySize); 582 DWORD WINAPI MprAdminMIBGetTrapInfo(MIB_SERVER_HANDLE hMibServer,DWORD dwProtocolId,DWORD dwRoutingPid,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize); 583 DWORD WINAPI MprAdminMIBSetTrapInfo(DWORD dwProtocolId,DWORD dwRoutingPid,HANDLE hEvent,LPVOID lpInData,DWORD dwInDataSize,LPVOID *lplpOutData,LPDWORD lpOutDataSize); 584 DWORD WINAPI MprAdminMIBBufferFree(LPVOID pBuffer); 585 DWORD WINAPI MprConfigServerInstall(DWORD dwLevel,PVOID pBuffer); 586 DWORD WINAPI MprConfigServerConnect(LPWSTR lpwsServerName,HANDLE *phMprConfig); 587 VOID WINAPI MprConfigServerDisconnect(HANDLE hMprConfig); 588 DWORD WINAPI MprConfigServerRefresh(HANDLE hMprConfig); 589 DWORD WINAPI MprConfigBufferFree(LPVOID pBuffer); 590 DWORD WINAPI MprConfigServerGetInfo(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpbBuffer); 591 DWORD WINAPI MprConfigServerSetInfo(MPR_SERVER_HANDLE hMprServer,DWORD dwLevel,LPBYTE lpbBuffer); 592 DWORD WINAPI MprConfigServerBackup(HANDLE hMprConfig,LPWSTR lpwsPath); 593 DWORD WINAPI MprConfigServerRestore(HANDLE hMprConfig,LPWSTR lpwsPath); 594 DWORD WINAPI MprConfigTransportCreate(HANDLE hMprConfig,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath,HANDLE *phRouterTransport); 595 DWORD WINAPI MprConfigTransportDelete(HANDLE hMprConfig,HANDLE hRouterTransport); 596 DWORD WINAPI MprConfigTransportGetHandle(HANDLE hMprConfig,DWORD dwTransportId,HANDLE *phRouterTransport); 597 DWORD WINAPI MprConfigTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE pGlobalInfo,DWORD dwGlobalInfoSize,LPBYTE pClientInterfaceInfo,DWORD dwClientInterfaceInfoSize,LPWSTR lpwsDLLPath); 598 DWORD WINAPI MprConfigTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterTransport,LPBYTE *ppGlobalInfo,LPDWORD lpdwGlobalInfoSize,LPBYTE *ppClientInterfaceInfo,LPDWORD lpdwClientInterfaceInfoSize,LPWSTR *lplpwsDLLPath); 599 DWORD WINAPI MprConfigTransportEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 600 DWORD WINAPI MprConfigInterfaceCreate(HANDLE hMprConfig,DWORD dwLevel,LPBYTE lpbBuffer,HANDLE *phRouterInterface); 601 DWORD WINAPI MprConfigInterfaceDelete(HANDLE hMprConfig,HANDLE hRouterInterface); 602 DWORD WINAPI MprConfigInterfaceGetHandle(HANDLE hMprConfig,LPWSTR lpwsInterfaceName,HANDLE *phRouterInterface); 603 DWORD WINAPI MprConfigInterfaceGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,LPDWORD lpdwBufferSize); 604 DWORD WINAPI MprConfigInterfaceSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE lpbBuffer); 605 DWORD WINAPI MprConfigInterfaceEnum(HANDLE hMprConfig,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 606 DWORD WINAPI MprConfigInterfaceTransportAdd(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,LPWSTR lpwsTransportName,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize,HANDLE *phRouterIfTransport); 607 DWORD WINAPI MprConfigInterfaceTransportRemove(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport); 608 DWORD WINAPI MprConfigInterfaceTransportGetHandle(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwTransportId,HANDLE *phRouterIfTransport); 609 DWORD WINAPI MprConfigInterfaceTransportGetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE *ppInterfaceInfo,LPDWORD lpdwInterfaceInfoSize); 610 DWORD WINAPI MprConfigInterfaceTransportSetInfo(HANDLE hMprConfig,HANDLE hRouterInterface,HANDLE hRouterIfTransport,LPBYTE pInterfaceInfo,DWORD dwInterfaceInfoSize); 611 DWORD WINAPI MprConfigInterfaceTransportEnum(HANDLE hMprConfig,HANDLE hRouterInterface,DWORD dwLevel,LPBYTE *lplpBuffer,DWORD dwPrefMaxLen,LPDWORD lpdwEntriesRead,LPDWORD lpdwTotalEntries,LPDWORD lpdwResumeHandle); 612 DWORD WINAPI MprConfigGetFriendlyName(HANDLE hMprConfig,PWCHAR pszGuidName,PWCHAR pszBuffer,DWORD dwBufferSize); 613 DWORD WINAPI MprConfigGetGuidName(HANDLE hMprConfig,PWCHAR pszFriendlyName,PWCHAR pszBuffer,DWORD dwBufferSize); 614 DWORD WINAPI MprInfoCreate(DWORD dwVersion,LPVOID *lplpNewHeader); 615 DWORD WINAPI MprInfoDelete(LPVOID lpHeader); 616 DWORD WINAPI MprInfoRemoveAll(LPVOID lpHeader,LPVOID *lplpNewHeader); 617 DWORD WINAPI MprInfoDuplicate(LPVOID lpHeader,LPVOID *lplpNewHeader); 618 DWORD WINAPI MprInfoBlockAdd(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader); 619 DWORD WINAPI MprInfoBlockRemove(LPVOID lpHeader,DWORD dwInfoType,LPVOID *lplpNewHeader); 620 DWORD WINAPI MprInfoBlockSet(LPVOID lpHeader,DWORD dwInfoType,DWORD dwItemSize,DWORD dwItemCount,LPBYTE lpItemData,LPVOID *lplpNewHeader); 621 DWORD WINAPI MprInfoBlockFind(LPVOID lpHeader,DWORD dwInfoType,LPDWORD lpdwItemSize,LPDWORD lpdwItemCount,LPBYTE *lplpItemData); 622 DWORD WINAPI MprInfoBlockQuerySize(LPVOID lpHeader); 623 624 #define MprInfoBlockExists(h,t) (MprInfoBlockFind((h),(t),NULL,NULL,NULL)==NO_ERROR) 625 626 #if (_WIN32_WINNT >= 0x0600) 627 typedef enum _RAS_QUARANTINE_STATE { 628 RAS_QUAR_STATE_NORMAL, 629 RAS_QUAR_STATE_QUARANTINE, 630 RAS_QUAR_STATE_PROBATION, 631 RAS_QUAR_STATE_NOT_CAPABLE 632 } RAS_QUARANTINE_STATE; 633 634 typedef struct _MPR_FILTER_0 { 635 WINBOOL fEnabled; 636 } MPR_FILTER_0, *PMPR_FILTER_0; 637 638 typedef struct _MPR_SERVER_2 { 639 DWORD dwNumPptpPorts; 640 DWORD dwPptpPortFlags; 641 DWORD dwNumL2tpPorts; 642 DWORD dwL2tpPortFlags; 643 DWORD dwNumSstpPorts; 644 DWORD dwSstpPortFlags; 645 } MPR_SERVER_2, *PMPR_SERVER_2; 646 647 typedef struct _PPP_IPV6CP_INFO { 648 DWORD dwVersion; 649 DWORD dwSize; 650 DWORD dwError; 651 BYTE bInterfaceIdentifier[8]; 652 BYTE bRemoteInterfaceIdentifier[8]; 653 DWORD dwOptions; 654 DWORD dwRemoteOptions; 655 BYTE bPrefix[8]; 656 DWORD dwPrefixLength; 657 } PPP_IPV6_CP_INFO, *PPPP_IPV6_CP_INFO; 658 659 typedef struct _PPP_INFO_3 { 660 PPP_NBFCP_INFO nbf; 661 PPP_IPCP_INFO2 ip; 662 PPP_IPV6_CP_INFO ipv6; 663 PPP_CCP_INFO ccp; 664 PPP_LCP_INFO lcp; 665 } PPP_INFO_3; 666 667 typedef struct _RAS_CONNECTION_3 { 668 DWORD dwVersion; 669 DWORD dwSize; 670 HANDLE hConnection; 671 WCHAR wszUserName[UNLEN + 1]; 672 ROUTER_INTERFACE_TYPE dwInterfaceType; 673 GUID guid; 674 PPP_INFO_3 PppInfo3; 675 RAS_QUARANTINE_STATE rasQuarState; 676 FILETIME timer; 677 } RAS_CONNECTION_3, *PRAS_CONNECTION_3; 678 679 WINBOOL CALLBACK MprAdminAcceptNewConnection3( 680 RAS_CONNECTION_0 *pRasConnection0, 681 RAS_CONNECTION_1 *pRasConnection1, 682 RAS_CONNECTION_2 *pRasConnection2, 683 RAS_CONNECTION_3 *pRasConnection3 684 ); 685 686 WINBOOL CALLBACK MprAdminAcceptReauthentication( 687 RAS_CONNECTION_0 *pRasConnection0, 688 RAS_CONNECTION_1 *pRasConnection1, 689 RAS_CONNECTION_2 *pRasConnection2, 690 RAS_CONNECTION_3 *pRasConnection3 691 ); 692 693 void CALLBACK MprAdminConnectionHangupNotification3( 694 RAS_CONNECTION_0 *pRasConnection0, 695 RAS_CONNECTION_1 *pRasConnection1, 696 RAS_CONNECTION_2 *pRasConnection2, 697 RAS_CONNECTION_3 *pRasConnection3 698 ); 699 700 DWORD CALLBACK MprAdminGetIpv6AddressForUser( 701 WCHAR *lpwszUserName, 702 WCHAR *lpwszPortName, 703 IN6_ADDR *lpdwIpv6Address, 704 WINBOOL *bNotifyRelease 705 ); 706 707 DWORD CALLBACK MprAdminReleaseIpv6AddressForUser( 708 WCHAR *lpwszUserName, 709 WCHAR *lpwszPortName, 710 IN6_ADDR *lpdwIpv6Address 711 ); 712 713 DWORD WINAPI MprConfigFilterGetInfo( 714 HANDLE hMprConfig, 715 DWORD dwLevel, 716 DWORD dwTransportId, 717 LPBYTE lpBuffer 718 ); 719 720 DWORD WINAPI MprConfigFilterSetInfo( 721 HANDLE hMprConfig, 722 DWORD dwLevel, 723 DWORD dwTransportId, 724 LPBYTE lpBuffer 725 ); 726 727 #endif /*(_WIN32_WINNT >= 0x0600)*/ 728 729 #if (_WIN32_WINNT >= 0x0601) 730 #define MPRAPI_RAS_CONNECTION_OBJECT_REVISION_1 0x01 731 #define MPRAPI_MPR_SERVER_OBJECT_REVISION_1 0x01 732 #define MPRAPI_MPR_SERVER_SET_CONFIG_OBJECT_REVISION_1 0x01 733 734 typedef enum { 735 MPRAPI_OBJECT_TYPE_RAS_CONNECTION_OBJECT = 0x1, 736 MPRAPI_OBJECT_TYPE_MPR_SERVER_OBJECT = 0x2, 737 MPRAPI_OBJECT_TYPE_MPR_SERVER_SET_CONFIG_OBJECT = 0x3, 738 MPRAPI_OBJECT_TYPE_AUTH_VALIDATION_OBJECT = 0x4, 739 MPRAPI_OBJECT_TYPE_UPDATE_CONNECTION_OBJECT = 0x5 740 } MPRAPI_OBJECT_TYPE; 741 742 typedef struct _MPRAPI_OBJECT_HEADER { 743 UCHAR revision; 744 UCHAR type; 745 USHORT size; 746 } MPRAPI_OBJECT_HEADER, *PMPRAPI_OBJECT_HEADER; 747 748 typedef struct _AUTH_VALIDATION_EX { 749 MPRAPI_OBJECT_HEADER Header; 750 HANDLE hRasConnection; 751 WCHAR wszUserName[UNLEN + 1 ]; 752 WCHAR wszLogonDomain[DNLEN + 1 ]; 753 DWORD AuthInfoSize; 754 BYTE AuthInfo[1]; 755 } AUTH_VALIDATION_EX, *PAUTH_VALIDATION_EX; 756 757 #define RAS_FLAGS_PPP_CONNECTION 0x00000001 758 #define RAS_FLAGS_MESSENGER_PRESENT 0x00000002 759 #define RAS_FLAGS_QUARANTINE_PRESENT 0x00000008 760 #define RAS_FLAGS_ARAP_CONNECTION 0x00000010 761 #define RAS_FLAGS_IKEV2_CONNECTION 0x00000010 762 #define RAS_FLAGS_DORMANT 0x00000020 763 764 #define IPADDRESSLEN 15 765 766 typedef struct _PPP_PROJECTION_INFO { 767 DWORD dwIPv4NegotiationError; 768 WCHAR wszAddress[IPADDRESSLEN + 1]; 769 WCHAR wszRemoteAddress[IPADDRESSLEN + 1]; 770 DWORD dwIPv4Options; 771 DWORD dwIPv4RemoteOptions; 772 ULONG64 IPv4SubInterfaceIndex; 773 DWORD dwIPv6NegotiationError; 774 BYTE bInterfaceIdentifier[8]; 775 BYTE bRemoteInterfaceIdentifier[8]; 776 BYTE bPrefix[8]; 777 DWORD dwPrefixLength; 778 ULONG64 IPv6SubInterfaceIndex; 779 DWORD dwLcpError; 780 DWORD dwAuthenticationProtocol; 781 DWORD dwAuthenticationData; 782 DWORD dwRemoteAuthenticationProtocol; 783 DWORD dwRemoteAuthenticationData; 784 DWORD dwLcpTerminateReason; 785 DWORD dwLcpRemoteTerminateReason; 786 DWORD dwLcpOptions; 787 DWORD dwLcpRemoteOptions; 788 DWORD dwEapTypeId; 789 DWORD dwRemoteEapTypeId; 790 DWORD dwCcpError; 791 DWORD dwCompressionAlgorithm; 792 DWORD dwCcpOptions; 793 DWORD dwRemoteCompressionAlgorithm; 794 DWORD dwCcpRemoteOptions; 795 } PPP_PROJECTION_INFO, *PPPP_PROJECTION_INFO; 796 797 typedef struct _IKEV2_PROJECTION_INFO { 798 DWORD dwIPv4NegotiationError; 799 WCHAR wszAddress[IPADDRESSLEN + 1]; 800 WCHAR wszRemoteAddress[IPADDRESSLEN + 1]; 801 ULONG64 IPv4SubInterfaceIndex; 802 DWORD dwIPv6NegotiationError; 803 BYTE bInterfaceIdentifier[8]; 804 BYTE bRemoteInterfaceIdentifier[8]; 805 BYTE bPrefix[8]; 806 DWORD dwPrefixLength; 807 ULONG64 IPv6SubInterfaceIndex; 808 DWORD dwOptions; 809 DWORD dwAuthenticationProtocol; 810 DWORD dwEapTypeId; 811 DWORD dwCompressionAlgorithm; 812 DWORD dwEncryptionMethod; 813 } IKEV2_PROJECTION_INFO, *PIKEV2_PROJECTION_INFO; 814 815 typedef struct _PROJECTION_INFO { 816 UCHAR projectionInfoType; 817 __C89_NAMELESS union { 818 IKEV2_PROJECTION_INFO Ikev2ProjectionInfo; 819 PPP_PROJECTION_INFO PppProjectionInfo; 820 } DUMMYUNIONNAME; 821 } PROJECTION_INFO, *PPROJECTION_INFO; 822 823 typedef struct _RAS_CONNECTION_EX { 824 MPRAPI_OBJECT_HEADER Header; 825 DWORD dwConnectDuration; 826 ROUTER_INTERFACE_TYPE dwInterfaceType; 827 DWORD dwConnectionFlags; 828 WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN + 1]; 829 WCHAR wszUserName[UNLEN + 1]; 830 WCHAR wszLogonDomain[DNLEN + 1]; 831 WCHAR wszRemoteComputer[NETBIOS_NAME_LEN + 1]; 832 GUID guid; 833 RAS_QUARANTINE_STATE rasQuarState; 834 FILETIME probationTime; 835 DWORD dwBytesXmited; 836 DWORD dwBytesRcved; 837 DWORD dwFramesXmited; 838 DWORD dwFramesRcved; 839 DWORD dwCrcErr; 840 DWORD dwTimeoutErr; 841 DWORD dwAlignmentErr; 842 DWORD dwHardwareOverrunErr; 843 DWORD dwFramingErr; 844 DWORD dwBufferOverrunErr; 845 DWORD dwCompressionRatioIn; 846 DWORD dwCompressionRatioOut; 847 DWORD dwNumSwitchOvers; 848 WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN+1]; 849 WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN+1]; 850 PROJECTION_INFO ProjectionInfo; 851 HANDLE hConnection; 852 HANDLE hInterface; 853 } RAS_CONNECTION_EX, *PRAS_CONNECTION_EX; 854 855 typedef struct _RAS_UPDATE_CONNECTION { 856 MPRAPI_OBJECT_HEADER Header; 857 DWORD dwIfIndex; 858 WCHAR wszLocalEndpointAddress[MAXIPADRESSLEN+1]; 859 WCHAR wszRemoteEndpointAddress[MAXIPADRESSLEN+1]; 860 } RAS_UPDATE_CONNECTION, *PRAS_UPDATE_CONNECTION; 861 862 #define MPRAPI_IKEV2_SET_TUNNEL_CONFIG_PARAMS 0x01 863 864 typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS { 865 DWORD dwIdleTimeout; 866 DWORD dwNetworkBlackoutTime; 867 DWORD dwSaLifeTime; 868 DWORD dwSaDataSizeForRenegotiation; 869 DWORD dwConfigOptions; 870 DWORD dwTotalCertificates; 871 CERT_NAME_BLOB *certificateNames; 872 } IKEV2_TUNNEL_CONFIG_PARAMS, *PIKEV2_TUNNEL_CONFIG_PARAMS; 873 874 typedef struct _IKEV2_CONFIG_PARAMS { 875 DWORD dwNumPorts; 876 DWORD dwPortFlags; 877 DWORD dwTunnelConfigParamFlags; 878 IKEV2_TUNNEL_CONFIG_PARAMS TunnelConfigParams; 879 } IKEV2_CONFIG_PARAMS, *PIKEV2_CONFIG_PARAMS; 880 881 typedef struct _PPTP_CONFIG_PARAMS { 882 DWORD dwNumPorts; 883 DWORD dwPortFlags; 884 } PPTP_CONFIG_PARAMS, *PPPTP_CONFIG_PARAMS; 885 886 typedef struct _L2TP_CONFIG_PARAMS { 887 DWORD dwNumPorts; 888 DWORD dwPortFlags; 889 } L2TP_CONFIG_PARAMS, *PL2TP_CONFIG_PARAMS; 890 891 typedef struct _SSTP_CERT_INFO { 892 BOOL isDefault; 893 CRYPT_HASH_BLOB certBlob; 894 } SSTP_CERT_INFO, *PSSTP_CERT_INFO; 895 896 typedef struct _SSTP_CONFIG_PARAMS { 897 DWORD dwNumPorts; 898 DWORD dwPortFlags; 899 BOOL isUseHttps; 900 DWORD certAlgorithm; 901 SSTP_CERT_INFO sstpCertDetails; 902 } SSTP_CONFIG_PARAMS, *PSSTP_CONFIG_PARAMS; 903 904 typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS { 905 IKEV2_CONFIG_PARAMS IkeConfigParams; 906 PPTP_CONFIG_PARAMS PptpConfigParams; 907 L2TP_CONFIG_PARAMS L2tpConfigParams; 908 SSTP_CONFIG_PARAMS SstpConfigParams; 909 } MPRAPI_TUNNEL_CONFIG_PARAMS, *PMPRAPI_TUNNEL_CONFIG_PARAMS; 910 911 typedef struct _MPR_SERVER_SET_CONFIG_EX { 912 MPRAPI_OBJECT_HEADER Header; 913 DWORD setConfigForProtocols; 914 MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams; 915 } MPR_SERVER_SET_CONFIG_EX, *PMPR_SERVER_SET_CONFIG_EX; 916 917 typedef struct _MPR_SERVER_EX { 918 MPRAPI_OBJECT_HEADER Header; 919 DWORD fLanOnlyMode; 920 DWORD dwUpTime; 921 DWORD dwTotalPorts; 922 DWORD dwPortsInUse; 923 DWORD Reserved; 924 MPRAPI_TUNNEL_CONFIG_PARAMS ConfigParams; 925 } MPR_SERVER_EX, *PMPR_SERVER_EX; 926 927 typedef DWORD (APIENTRY * PMPRADMINGETIPADDRESSFORUSER)(WCHAR *, WCHAR *, DWORD *, WINBOOL *); 928 typedef VOID (APIENTRY * PMPRADMINRELEASEIPADRESS)(WCHAR *, WCHAR *, DWORD *); 929 typedef DWORD (APIENTRY * PMPRADMINGETIPV6ADDRESSFORUSER)(WCHAR *, WCHAR *, IN6_ADDR *, WINBOOL *); 930 typedef VOID (APIENTRY * PMPRADMINRELEASEIPV6ADDRESSFORUSER)(WCHAR *, WCHAR *, IN6_ADDR *); 931 typedef WINBOOL (APIENTRY * PMPRADMINACCEPTNEWLINK)(RAS_PORT_0 *, RAS_PORT_1 *); 932 typedef VOID (APIENTRY * PMPRADMINLINKHANGUPNOTIFICATION)(RAS_PORT_0 *, RAS_PORT_1 *); 933 typedef DWORD (APIENTRY * PMPRADMINTERMINATEDLL)(); 934 typedef BOOL (APIENTRY * PMPRADMINACCEPTNEWCONNECTIONEX)(RAS_CONNECTION_EX *); 935 typedef BOOL (APIENTRY * PMPRADMINACCEPTREAUTHENTICATIONEX)(RAS_CONNECTION_EX *); 936 typedef VOID (APIENTRY * PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX)(RAS_CONNECTION_EX *); 937 938 typedef struct _MPRAPI_ADMIN_DLL_CALLBACKS { 939 UCHAR revision; 940 PMPRADMINGETIPADDRESSFORUSER lpfnMprAdminGetIpAddressForUser; 941 PMPRADMINRELEASEIPADRESS lpfnMprAdminReleaseIpAddress; 942 PMPRADMINGETIPV6ADDRESSFORUSER lpfnMprAdminGetIpv6AddressForUser; 943 PMPRADMINRELEASEIPV6ADDRESSFORUSER lpfnMprAdminReleaseIpV6AddressForUser; 944 PMPRADMINACCEPTNEWLINK lpfnRasAdminAcceptNewLink; 945 PMPRADMINLINKHANGUPNOTIFICATION lpfnRasAdminLinkHangupNotification; 946 PMPRADMINTERMINATEDLL lpfnRasAdminTerminateDll; 947 PMPRADMINACCEPTNEWCONNECTIONEX lpfnRasAdminAcceptNewConnectionEx; 948 PMPRADMINACCEPTREAUTHENTICATIONEX lpfnRasAdminAcceptReauthenticationEx; 949 PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX lpfnRasAdminConnectionHangupNotificationEx; 950 } MPRAPI_ADMIN_DLL_CALLBACKS, *PMPRAPI_ADMIN_DLL_CALLBACKS; 951 952 DWORD APIENTRY MprConfigServerSetInfoEx(HANDLE hMprConfig,MPR_SERVER_SET_CONFIG_EX *pSetServerConfig); 953 954 DWORD APIENTRY MprConfigServerGetInfoEx( 955 HANDLE hMprConfig, 956 MPR_SERVER_EX *pServerInfo 957 ); 958 959 DWORD APIENTRY MprAdminConnectionEnumEx( 960 RAS_SERVER_HANDLE hRasServer, 961 PMPRAPI_OBJECT_HEADER pObjectHeader, 962 DWORD dwPreferedMaxLen, 963 LPDWORD lpdwEntriesRead, 964 LPDWORD lpdwTotalEntries, 965 PRAS_CONNECTION_EX *ppRasConn, 966 LPDWORD lpdwResumeHandle 967 ); 968 969 DWORD APIENTRY MprAdminConnectionGetInfoEx( 970 RAS_SERVER_HANDLE hRasServer, 971 HANDLE hConnection, 972 PRAS_CONNECTION_EX pRasConnection 973 ); 974 975 DWORD APIENTRY MprAdminInitializeDllEx( 976 PMPRAPI_ADMIN_DLL_CALLBACKS pAdminCallbacks 977 ); 978 979 DWORD APIENTRY MprAdminIsServiceInitialized( 980 LPWSTR lpwsServerName, 981 WINBOOL *fIsServiceInitialized 982 ); 983 984 DWORD APIENTRY MprAdminServerGetInfoEx( 985 MPR_SERVER_HANDLE hMprServer, 986 MPR_SERVER_EX *pServerInfo 987 ); 988 989 DWORD APIENTRY MprAdminServerSetInfoEx( 990 MPR_SERVER_HANDLE hMprServer, 991 MPR_SERVER_SET_CONFIG_EX *pServerInfo 992 ); 993 994 #endif /*(_WIN32_WINNT >= 0x0601)*/ 995 996 #ifdef __cplusplus 997 } 998 #endif 999 1000 #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */ 1001 1002 #endif /* __ROUTING_MPRADMIN_H__ */ 1003