Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
For ease of implementation, the full IDL is provided, where "ms-dtyp.idl" refers to the IDL found in [MS-DTYP] Appendix A. The syntax uses the IDL syntax extensions defined in [MS-RPCE] section 2.2.4. For example, as noted in [MS-RPCE] section 2.2.4.9, a pointer_default declaration is not required, and pointer_default (unique) is assumed.
-
import "ms-oaut.idl"; #define IN #define OUT typedef enum _ROUTER_INTERFACE_TYPE { ROUTER_IF_TYPE_CLIENT, ROUTER_IF_TYPE_HOME_ROUTER, ROUTER_IF_TYPE_FULL_ROUTER, ROUTER_IF_TYPE_DEDICATED, ROUTER_IF_TYPE_INTERNAL, ROUTER_IF_TYPE_LOOPBACK, ROUTER_IF_TYPE_TUNNEL1, ROUTER_IF_TYPE_DIALOUT } ROUTER_INTERFACE_TYPE; typedef enum { ROUTER_IF_STATE_UNREACHABLE, ROUTER_IF_STATE_DISCONNECTED, ROUTER_IF_STATE_CONNECTING, ROUTER_IF_STATE_CONNECTED } ROUTER_CONNECTION_STATE; typedef enum _RAS_QUARANTINE_STATE { RAS_QUAR_STATE_NORMAL, RAS_QUAR_STATE_QUARANTINE, RAS_QUAR_STATE_PROBATION, RAS_QUAR_STATE_UNKNOWN } RAS_QUARANTINE_STATE; typedef enum _RAS_PORT_CONDITION { RAS_PORT_NON_OPERATIONAL, RAS_PORT_DISCONNECTED, RAS_PORT_CALLING_BACK, RAS_PORT_LISTENING, RAS_PORT_AUTHENTICATING, RAS_PORT_AUTHENTICATED, RAS_PORT_INITIALIZING } RAS_PORT_CONDITION; typedef enum _RAS_HARDWARE_CONDITION { RAS_HARDWARE_OPERATIONAL, RAS_HARDWARE_FAILURE } RAS_HARDWARE_CONDITION; typedef handle_t DIM_HANDLE; typedef enum _FORWARD_ACTION { FORWARD = 0, DROP = 1, } FORWARD_ACTION; typedef enum { MIB_IPROUTE_TYPE_OTHER = 1, MIB_IPROUTE_TYPE_INVALID = 2, MIB_IPROUTE_TYPE_DIRECT = 3, MIB_IPROUTE_TYPE_INDIRECT = 4, } MIB_IPFORWARD_TYPE; typedef enum { MIB_IPPROTO_OTHER = 1, MIB_IPPROTO_LOCAL = 2, MIB_IPPROTO_NETMGMT = 3, MIB_IPPROTO_ICMP = 4, MIB_IPPROTO_EGP = 5, MIB_IPPROTO_GGP = 6, MIB_IPPROTO_HELLO = 7, MIB_IPPROTO_RIP = 8 , MIB_IPPROTO_IS_IS = 9, MIB_IPPROTO_ES_IS = 10, MIB_IPPROTO_CISCO = 11, MIB_IPPROTO_BBN = 12, MIB_IPPROTO_OSPF = 13, MIB_IPPROTO_BGP = 14, MIB_IPPROTO_NT_AUTOSTATIC = 10002, MIB_IPPROTO_NT_STATIC = 10006, MIB_IPPROTO_NT_STATIC_NON_DOD = 10007, } MIB_IPFORWARD_PROTO; typedef enum { MIB_IP_FORWARDING = 1, MIB_IP_NOT_FORWARDING = 2, } MIB_IPSTATS_FORWARDING, *PMIB_IPSTATS_FORWARDING; typedef enum { MIB_TCP_STATE_CLOSED = 1, MIB_TCP_STATE_LISTEN = 2, MIB_TCP_STATE_SYN_SENT = 3, MIB_TCP_STATE_SYN_RCVD = 4, MIB_TCP_STATE_ESTAB = 5, MIB_TCP_STATE_FIN_WAIT1 = 6, MIB_TCP_STATE_FIN_WAIT2 = 7, MIB_TCP_STATE_CLOSE_WAIT = 8, MIB_TCP_STATE_CLOSING = 9, MIB_TCP_STATE_LAST_ACK = 10, MIB_TCP_STATE_TIME_WAIT = 11, MIB_TCP_STATE_DELETE_TCB = 12, } MIB_TCP_STATE; typedef enum { MIB_TCP_RTO_OTHER = 1, MIB_TCP_RTO_CONSTANT = 2, MIB_TCP_RTO_RSRE = 3, MIB_TCP_RTO_VANJ = 4, } TCP_RTO_ALGORITHM, *PTCP_RTO_ALGORITHM; // // IPv6 Internet address (RFC 2553) // This is an 'on-wire' format structure. // typedef struct in6_addr { union { UCHAR Byte[16]; USHORT Word[8]; } u; } IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR; typedef struct _DIM_INFORMATION_CONTAINER { DWORD dwBufferSize; [size_is(dwBufferSize)] LPBYTE pBuffer; } DIM_INFORMATION_CONTAINER, *PDIM_INFORMATION_CONTAINER; // RAS_CONNECTION_EX structure are redefined in this IDL to make use of versioning: // All the Versions of RAS_CONNECTION_EX will be defined here in RPC usable format: typedef struct _MPRAPI_OBJECT_HEADER_IDL { UCHAR revision; UCHAR type; USHORT size; }MPRAPI_OBJECT_HEADER_IDL, *PMPRAPI_OBJECT_HEADER_IDL; typedef struct _PPP_PROJECTION_INFO_1 { // IPv4 Projection Parameters DWORD dwIPv4NegotiationError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; DWORD dwIPv4Options; DWORD dwIPv4RemoteOptions; ULONG64 IPv4SubInterfaceIndex; // IPv6 Projection Parameters DWORD dwIPv6NegotiationError; UCHAR bInterfaceIdentifier[8]; UCHAR bRemoteInterfaceIdentifier[8]; UCHAR bPrefix[8]; DWORD dwPrefixLength; ULONG64 IPv6SubInterfaceIndex; // LCP Options DWORD dwLcpError; DWORD dwAuthenticationProtocol; DWORD dwAuthenticationData; DWORD dwRemoteAuthenticationProtocol; DWORD dwRemoteAuthenticationData; DWORD dwLcpTerminateReason; DWORD dwLcpRemoteTerminateReason; DWORD dwLcpOptions; DWORD dwLcpRemoteOptions; DWORD dwEapTypeId; DWORD dwRemoteEapTypeId; // CCP options: DWORD dwCcpError; DWORD dwCompressionAlgorithm; DWORD dwCcpOptions; DWORD dwRemoteCompressionAlgorithm; DWORD dwCcpRemoteOptions; }PPP_PROJECTION_INFO_1, *PPPP_PROJECTION_INFO_1; typedef struct _PPP_PROJECTION_INFO_2 { // IPv4 Projection Parameters DWORD dwIPv4NegotiationError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; DWORD dwIPv4Options; DWORD dwIPv4RemoteOptions; ULONG64 IPv4SubInterfaceIndex; // IPv6 Projection Parameters DWORD dwIPv6NegotiationError; UCHAR bInterfaceIdentifier[8]; UCHAR bRemoteInterfaceIdentifier[8]; UCHAR bPrefix[8]; DWORD dwPrefixLength; ULONG64 IPv6SubInterfaceIndex; // LCP Options DWORD dwLcpError; DWORD dwAuthenticationProtocol; DWORD dwAuthenticationData; DWORD dwRemoteAuthenticationProtocol; DWORD dwRemoteAuthenticationData; DWORD dwLcpTerminateReason; DWORD dwLcpRemoteTerminateReason; DWORD dwLcpOptions; DWORD dwLcpRemoteOptions; DWORD dwEapTypeId; DWORD dwEmbeddedEAPTypeId; DWORD dwRemoteEapTypeId; // CCP options: DWORD dwCcpError; DWORD dwCompressionAlgorithm; DWORD dwCcpOptions; DWORD dwRemoteCompressionAlgorithm; DWORD dwCcpRemoteOptions; } PPP_PROJECTION_INFO_2, *PPPP_PROJECTION_INFO_2; typedef struct IKEV2_PROJECTION_INFO_1 { DWORD dwIPv4NegotiationError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; ULONG64 IPv4SubInterfaceIndex; DWORD dwIPv6NegotiationError; UCHAR bInterfaceIdentifier[8]; UCHAR bRemoteInterfaceIdentifier[8]; UCHAR bPrefix[8]; DWORD dwPrefixLength; ULONG64 IPv6SubInterfaceIndex; DWORD dwOptions; DWORD dwAuthenticationProtocol; DWORD dwEapTypeId; DWORD dwCompressionAlgorithm; DWORD dwEncryptionMethod; }IKEV2_PROJECTION_INFO_1, *PIKEV2_PROJECTION_INFO_1; typedef struct IKEV2_PROJECTION_INFO_2 { DWORD dwIPv4NegotiationError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; ULONG64 IPv4SubInterfaceIndex; DWORD dwIPv6NegotiationError; UCHAR bInterfaceIdentifier[8]; UCHAR bRemoteInterfaceIdentifier[8]; UCHAR bPrefix[8]; DWORD dwPrefixLength; ULONG64 IPv6SubInterfaceIndex; DWORD dwOptions; DWORD dwAuthenticationProtocol; DWORD dwEapTypeId; DWORD dwEmbeddedEAPTypeId; DWORD dwCompressionAlgorithm; DWORD dwEncryptionMethod; } IKEV2_PROJECTION_INFO_2, *PIKEV2_PROJECTION_INFO_2; typedef union _PROJECTION_INFO_IDL_1 switch (UCHAR projectionInfoType) ProjectionInfoObject { case 1: PPP_PROJECTION_INFO_1 PppProjectionInfo; case 2: IKEV2_PROJECTION_INFO_1 Ikev2ProjectionInfo; }PROJECTION_INFO_IDL_1; typedef struct _PROJECTION_INFO_IDL_1 *PPROJECTION_INFO_IDL_1; typedef union _PROJECTION_INFO_IDL_2 switch (UCHAR projectionInfoType) ProjectionInfoObject { case 1: PPP_PROJECTION_INFO_2 PppProjectionInfo; case 2: IKEV2_PROJECTION_INFO_2 Ikev2ProjectionInfo; }PROJECTION_INFO_IDL_2, *PPROJECTION_INFO_IDL_2; typedef struct _RAS_CONNECTION_EX_1_IDL{ MPRAPI_OBJECT_HEADER_IDL Header; DWORD dwConnectDuration; ROUTER_INTERFACE_TYPE dwInterfaceType; DWORD dwConnectionFlags; WCHAR wszInterfaceName[257]; WCHAR wszUserName[257]; WCHAR wszLogonDomain[16]; WCHAR wszRemoteComputer[17]; GUID guid; RAS_QUARANTINE_STATE rasQuarState; // Probation time FILETIME probationTime; DWORD dwBytesXmited; DWORD dwBytesRcved; DWORD dwFramesXmited; DWORD dwFramesRcved; DWORD dwCrcErr; DWORD dwTimeoutErr; DWORD dwAlignmentErr; DWORD dwHardwareOverrunErr; DWORD dwFramingErr; DWORD dwBufferOverrunErr; DWORD dwCompressionRatioIn; DWORD dwCompressionRatioOut; // Currently valid only for IKEV2: DWORD dwNumSwitchOvers; // Endpoint Information WCHAR wszRemoteEndpointAddress[65]; WCHAR wszLocalEndpointAddress[65]; PROJECTION_INFO_IDL_1 ProjectionInfo; ULONG hConnection; ULONG hInterface; } RAS_CONNECTION_EX_1_IDL, *PRAS_CONNECTION_EX_1_IDL; typedef union _RAS_CONNECTION_EX_IDL switch (UCHAR revision) ConnObject { case 1: // RAS_CONNECTION_EX with version 1: (MPRAPI_RAS_CONNECTION_OBJECT_REVISION_1) RAS_CONNECTION_EX_1_IDL RasConnection1; }RAS_CONNECTION_EX_IDL; typedef struct _RAS_CONNECTION_EX_IDL *PRAS_CONNECTION_EX_IDL; typedef struct _RAS_CONNECTION_4_IDL { DWORD dwConnectDuration; ROUTER_INTERFACE_TYPE dwInterfaceType; DWORD dwConnectionFlags; WCHAR wszInterfaceName[257]; WCHAR wszUserName[257]; WCHAR wszLogonDomain[16]; WCHAR wszRemoteComputer[17]; GUID guid; RAS_QUARANTINE_STATE rasQuarState; // Probation time FILETIME probationTime; // Connection start time FILETIME connectionStartTime; DWORD dwBytesXmited; DWORD dwBytesRcved; DWORD dwFramesXmited; DWORD dwFramesRcved; DWORD dwCrcErr; DWORD dwTimeoutErr; DWORD dwAlignmentErr; DWORD dwHardwareOverrunErr; DWORD dwFramingErr; DWORD dwBufferOverrunErr; DWORD dwCompressionRatioIn; DWORD dwCompressionRatioOut; // Currently valid only for IKEV2: DWORD dwNumSwitchOvers; // Endpoint Information WCHAR wszRemoteEndpointAddress[65]; WCHAR wszLocalEndpointAddress[65]; PROJECTION_INFO_IDL_2 ProjectionInfo; ULONG hConnection; ULONG hInterface; // VPN Device type DWORD dwDeviceType; } RAS_CONNECTION_4_IDL, *PRAS_CONNECTION_4_IDL; typedef struct _CERT_BLOB_1 { DWORD cbData; [size_is(cbData)] BYTE * pbData; }CERT_BLOB_1,*PCERT_BLOB_1; typedef struct _CERT_EKU_1 { DWORD dwSize; BOOL IsEKUOID; [size_is(dwSize)] WCHAR *pwszEKU; }CERT_EKU_1,*PCERT_EKU_1; typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS_1 { DWORD dwIdleTimeout; DWORD dwNetworkBlackoutTime; DWORD dwSaLifeTime; DWORD dwSaDataSizeForRenegotiation; DWORD dwConfigOptions; DWORD dwTotalCertificates; [size_is(dwTotalCertificates)] CERT_BLOB_1* certificateNames; }IKEV2_TUNNEL_CONFIG_PARAMS_1, *PIKEV2_TUNNEL_CONFIG_PARAMS_1; typedef struct _ROUTER_CUSTOM_IKEv2_POLICY_0 { // Integrity method plumbed in IKE policy DWORD dwIntegrityMethod; // Encryption method plumbed in IKE policy DWORD dwEncryptionMethod; // ESP cipher plumbed in Ipsec policy DWORD dwCipherTransformConstant; // AH Auth transform plumbed in Ipsec policy DWORD dwAuthTransformConstant; // PFS group plumbed in Ipsec policy DWORD dwPfsGroup; // DH group plumbed in IKE policy DWORD dwDhGroup; }ROUTER_CUSTOM_IKEv2_POLICY_0, *PROUTER_CUSTOM_IKEv2_POLICY_0, ROUTER_CUSTOM_L2TP_POLICY_0, *PROUTER_CUSTOM_L2TP_POLICY_0; typedef struct _ROUTER_IKEv2_IF_CUSTOM_CONFIG_0 { // Lifetime of a security association (SA), in seconds, // after which the SA is no longer valid [RFC 4306]. DWORD dwSaLifeTime; // Number of kilobytes that are allowed to transfer using an SA. // After that, the SA will be renegotiated [RFC 4306]. DWORD dwSaDataSize; // SubjecName of the certificate to be used in default store // for machine certificate authentication. CERT_BLOB_1 certificateName; // Custom IKEv2 Policy PROUTER_CUSTOM_IKEv2_POLICY_0 customPolicy; }ROUTER_IKEv2_IF_CUSTOM_CONFIG_0, *PROUTER_IKEv2_IF_CUSTOM_CONFIG_0; typedef struct _ROUTER_IKEv2_IF_CUSTOM_CONFIG_1 { DWORD dwSaLifeTime; DWORD dwSaDataSize; CERT_BLOB_1 certificateName; PROUTER_CUSTOM_IKEv2_POLICY_0 customPolicy; CERT_BLOB_1 certificateHash; } ROUTER_IKEv2_IF_CUSTOM_CONFIG_1, *PROUTER_IKEv2_IF_CUSTOM_CONFIG_1; typedef struct _MPR_IF_CUSTOMINFOEX_0 { MPRAPI_OBJECT_HEADER_IDL Header; DWORD dwFlags; ROUTER_IKEv2_IF_CUSTOM_CONFIG_0 customIkev2Config; }MPR_IF_CUSTOMINFOEX_0, *PMPR_IF_CUSTOMINFOEX_0; typedef struct _MPR_IF_CUSTOMINFOEX_1 { MPRAPI_OBJECT_HEADER_IDL Header; DWORD dwFlags; ROUTER_IKEv2_IF_CUSTOM_CONFIG_1 customIkev2Config; } MPR_IF_CUSTOMINFOEX_1, *PMPR_IF_CUSTOMINFOEX_1; typedef union _MPR_IF_CUSTOMINFOEX_IDL switch (UCHAR revision) IfCustomConfigObject { case 1: MPR_IF_CUSTOMINFOEX_0 IfConfigObj1; case 2: MPR_IF_CUSTOMINFOEX_1 IfConfigObj2; }MPR_IF_CUSTOMINFOEX_IDL,*PMPR_IF_CUSTOMINFOEX_IDL; typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS_2 { DWORD dwIdleTimeout; DWORD dwNetworkBlackoutTime; DWORD dwSaLifeTime; DWORD dwSaDataSizeForRenegotiation; DWORD dwConfigOptions; DWORD dwTotalCertificates; [size_is(dwTotalCertificates)] CERT_BLOB_1* certificateNames; // SubjecName of the certificate to be used in default store // for machine certificate authentication. CERT_BLOB_1 machineCertificateName; DWORD dwEncryptionType; ROUTER_CUSTOM_IKEv2_POLICY_0* customPolicy; } IKEV2_TUNNEL_CONFIG_PARAMS_2, *PIKEV2_TUNNEL_CONFIG_PARAMS_2; typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS_3 { DWORD dwIdleTimeout; DWORD dwNetworkBlackoutTime; DWORD dwSaLifeTime; DWORD dwSaDataSizeForRenegotiation; DWORD dwConfigOptions; DWORD dwTotalCertificates; [size_is(dwTotalCertificates)] CERT_BLOB_1* certificateNames; // SubjectName of the certificate to be used in default store // for machine certificate authentication. CERT_BLOB_1 machineCertificateName; DWORD dwEncryptionType; ROUTER_CUSTOM_IKEv2_POLICY_0* customPolicy; DWORD dwTotalEkus; [size_is(dwTotalEkus)] CERT_EKU_1* certificateEKUs; CERT_BLOB_1 machineCertificateHash; } IKEV2_TUNNEL_CONFIG_PARAMS_3, *PIKEV2_TUNNEL_CONFIG_PARAMS_3; typedef struct _L2TP_TUNNEL_CONFIG_PARAMS_1 { DWORD dwIdleTimeout; // encryption type to be used for L2TP DWORD dwEncryptionType; DWORD dwSaLifeTime; DWORD dwSaDataSizeForRenegotiation; PROUTER_CUSTOM_L2TP_POLICY_0 customPolicy; }L2TP_TUNNEL_CONFIG_PARAMS_1, *PL2TP_TUNNEL_CONFIG_PARAMS_1; typedef struct _IKEV2_CONFIG_PARAMS_1 { DWORD dwNumPorts; DWORD dwPortFlags; DWORD dwTunnelConfigParamFlags; IKEV2_TUNNEL_CONFIG_PARAMS_1 TunnelConfigParams; }IKEV2_CONFIG_PARAMS_1, *PIKEV2_CONFIG_PARAMS_1; typedef struct _IKEV2_CONFIG_PARAMS_2 { DWORD dwNumPorts; DWORD dwPortFlags; DWORD dwTunnelConfigParamFlags; IKEV2_TUNNEL_CONFIG_PARAMS_2 TunnelConfigParams; } IKEV2_CONFIG_PARAMS_2, *PIKEV2_CONFIG_PARAMS_2; typedef struct _IKEV2_CONFIG_PARAMS_3 { DWORD dwNumPorts; DWORD dwPortFlags; DWORD dwTunnelConfigParamFlags; IKEV2_TUNNEL_CONFIG_PARAMS_3 TunnelConfigParams; } IKEV2_CONFIG_PARAMS_3, *PIKEV2_CONFIG_PARAMS_3; typedef struct _PPTP_CONFIG_PARAMS_1 { DWORD dwNumPorts; DWORD dwPortFlags; }PPTP_CONFIG_PARAMS_1, *PPPTP_CONFIG_PARAMS_1; typedef struct _L2TP_CONFIG_PARAMS_1 { DWORD dwNumPorts; DWORD dwPortFlags; }L2TP_CONFIG_PARAMS_1, *PL2TP_CONFIG_PARAMS_1; typedef struct _L2TP_CONFIG_PARAMS_2 { DWORD dwNumPorts; DWORD dwPortFlags; DWORD dwTunnelConfigParamFlags; L2TP_TUNNEL_CONFIG_PARAMS_1 TunnelConfigParams; }L2TP_CONFIG_PARAMS_2, *PL2TP_CONFIG_PARAMS_2; #define MAX_SSTP_HASH_SIZE 32 typedef struct _SSTP_CERT_INFO_1 { BOOL isDefault; CERT_BLOB_1 certBlob; }SSTP_CERT_INFO_1, *PSSTP_CERT_INFO_1; typedef struct _SSTP_CONFIG_PARAMS_1 { DWORD dwNumPorts; DWORD dwPortFlags; BOOL isUseHttps; DWORD certAlgorithm; // Always CALG_SHA_256 SSTP_CERT_INFO_1 sstpCertDetails; }SSTP_CONFIG_PARAMS_1, *PSSTP_CONFIG_PARAMS_1; typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS_1 { IKEV2_CONFIG_PARAMS_1 IkeConfigParams; PPTP_CONFIG_PARAMS_1 PptpConfigParams; L2TP_CONFIG_PARAMS_1 L2tpConfigParams; SSTP_CONFIG_PARAMS_1 SstpConfigParams; }MPRAPI_TUNNEL_CONFIG_PARAMS_1, *PMPRAPI_TUNNEL_CONFIG_PARAMS_1; typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS_2 { IKEV2_CONFIG_PARAMS_2 IkeConfigParams; PPTP_CONFIG_PARAMS_1 PptpConfigParams; L2TP_CONFIG_PARAMS_1 L2tpConfigParams; SSTP_CONFIG_PARAMS_1 SstpConfigParams; }MPRAPI_TUNNEL_CONFIG_PARAMS_2, *PMPRAPI_TUNNEL_CONFIG_PARAMS_2; typedef struct _MPRAPI_TUNNEL_CONFIG_PARAMS_3 { IKEV2_CONFIG_PARAMS_3 IkeConfigParams; PPTP_CONFIG_PARAMS_1 PptpConfigParams; L2TP_CONFIG_PARAMS_2 L2tpConfigParams; SSTP_CONFIG_PARAMS_1 SstpConfigParams; }MPRAPI_TUNNEL_CONFIG_PARAMS_3, *PMPRAPI_TUNNEL_CONFIG_PARAMS_3; // MPR_SERVER_EX structure are redified in this IDL to make use of versioning: // All the Versions of MPR_SERVER_EX will be defined here in RPC usable format: typedef struct _MPR_SERVER_EX_1 { MPRAPI_OBJECT_HEADER_IDL Header; BOOL fLanOnlyMode; DWORD dwUpTime; DWORD dwTotalPorts; DWORD dwPortsInUse; DWORD Reserved; // Added so that the structure is 8 byte aligned MPRAPI_TUNNEL_CONFIG_PARAMS_1 ConfigParams; }MPR_SERVER_EX_1, *PMPR_SERVER_EX_1; typedef struct _MPR_SERVER_EX_2 { MPRAPI_OBJECT_HEADER_IDL Header; BOOL fLanOnlyMode; DWORD dwUpTime; DWORD dwTotalPorts; DWORD dwPortsInUse; DWORD Reserved; // Added so that the structure is 8 byte aligned MPRAPI_TUNNEL_CONFIG_PARAMS_2 ConfigParams; }MPR_SERVER_EX_2, *PMPR_SERVER_EX_2; typedef struct _MPR_SERVER_EX_3 { MPRAPI_OBJECT_HEADER_IDL Header; BOOL fLanOnlyMode; DWORD dwUpTime; DWORD dwTotalPorts; DWORD dwPortsInUse; DWORD Reserved; // Added so that the structure is 8 byte aligned MPRAPI_TUNNEL_CONFIG_PARAMS_3 ConfigParams; }MPR_SERVER_EX_3, *PMPR_SERVER_EX_3; typedef union _MPR_SERVER_EX_IDL switch (UCHAR revision) ServerConfigObject { case 1: MPR_SERVER_EX_1 ServerConfig1; case 2: MPR_SERVER_EX_2 ServerConfig2; case 3: MPR_SERVER_EX_3 ServerConfig3; }MPR_SERVER_EX_IDL; typedef struct _MPR_SERVER_EX_IDL *PMPR_SERVER_EX_IDL; typedef struct _MPR_SERVER_SET_CONFIG_EX_1 { MPRAPI_OBJECT_HEADER_IDL Header; DWORD setConfigForProtocols; MPRAPI_TUNNEL_CONFIG_PARAMS_1 ConfigParams; }MPR_SERVER_SET_CONFIG_EX_1, *PMPR_SERVER_SET_CONFIG_EX_1; typedef struct _MPR_SERVER_SET_CONFIG_EX_2 { MPRAPI_OBJECT_HEADER_IDL Header; DWORD setConfigForProtocols; MPRAPI_TUNNEL_CONFIG_PARAMS_2 ConfigParams; }MPR_SERVER_SET_CONFIG_EX_2, *PMPR_SERVER_SET_CONFIG_EX_2; typedef struct _MPR_SERVER_SET_CONFIG_EX_3 { MPRAPI_OBJECT_HEADER_IDL Header; DWORD setConfigForProtocols; MPRAPI_TUNNEL_CONFIG_PARAMS_3 ConfigParams; }MPR_SERVER_SET_CONFIG_EX_3, *PMPR_SERVER_SET_CONFIG_EX_3; typedef union _MPR_SERVER_SET_CONFIG_EX_IDL switch (UCHAR revision) ServerSetConfigObject { case 1: MPR_SERVER_SET_CONFIG_EX_1 ServerSetConfig1; case 2: MPR_SERVER_SET_CONFIG_EX_2 ServerSetConfig2; case 3: MPR_SERVER_SET_CONFIG_EX_3 ServerSetConfig3; }MPR_SERVER_SET_CONFIG_EX_IDL; typedef struct _MPR_SERVER_SET_CONFIG_EX_IDL *PMPR_SERVER_SET_CONFIG_EX_IDL; typedef struct _RAS_UPDATE_CONNECTION_1_IDL { MPRAPI_OBJECT_HEADER_IDL Header; DWORD dwIfIndex; WCHAR wszRemoteEndpointAddress[ 65 ]; } RAS_UPDATE_CONNECTION_1_IDL; typedef struct _RAS_UPDATE_CONNECTION_1_IDL *PRAS_UPDATE_CONNECTION_1_IDL; typedef union _RAS_UPDATE_CONNECTION_IDL switch (UCHAR revision) UpdateConnection { case 1: // MPR_SERVER_UPDATE_CONNECTION_EX with version 1: //(MPRAPI_RAS_UPDATE_CONNECTION_OBJECT_REVISION_1) RAS_UPDATE_CONNECTION_1_IDL UpdateConnection1; // New ones update here }RAS_UPDATE_CONNECTION_IDL; typedef struct _RAS_UPDATE_CONNECTION_IDL *PRAS_UPDATE_CONNECTION_IDL; typedef struct _DIM_INTERFACE_CONTAINER { DWORD fGetInterfaceInfo; DWORD dwInterfaceInfoSize; [size_is(dwInterfaceInfoSize)] LPBYTE pInterfaceInfo; DWORD fGetGlobalInfo; DWORD dwGlobalInfoSize; [size_is(dwGlobalInfoSize)] LPBYTE pGlobalInfo; } DIM_INTERFACE_CONTAINER, *PDIM_INTERFACE_CONTAINER; typedef struct _RTR_TOC_ENTRY { ULONG InfoType; ULONG InfoSize; ULONG Count; ULONG Offset; } RTR_TOC_ENTRY, *PRTR_TOC_ENTRY; typedef struct _RTR_INFO_BLOCK_HEADER { ULONG Version; ULONG Size; ULONG TocEntriesCount; RTR_TOC_ENTRY TocEntry[1]; //1 is a placeholder for TocEntriesCount } RTR_INFO_BLOCK_HEADER, *PRTR_INFO_BLOCK_HEADER; typedef struct _FILTER_INFO { DWORD dwSrcAddr; DWORD dwSrcMask; DWORD dwDstAddr; DWORD dwDstMask; DWORD dwProtocol; DWORD fLateBound; WORD wSrcPort; WORD wDstPort; } FILTER_INFO, *PFILTER_INFO; typedef struct _FILTER_DESCRIPTOR { DWORD dwVersion; DWORD dwNumFilters; FORWARD_ACTION faDefaultAction; FILTER_INFO fiFilter[1]; //1 is a placeholder for dwNumFilters } FILTER_DESCRIPTOR, *PFILTER_DESCRIPTOR; typedef struct _FILTER_INFO_V6 { BYTE ipv6SrcAddr[16]; DWORD dwSrcPrefixLength; BYTE ipv6DstAddr[16]; DWORD dwDstPrefixLength; DWORD dwProtocol; DWORD fLateBound; WORD wSrcPort; WORD wDstPort; } FILTER_INFO_V6, *PFILTER_INFO_V6; typedef struct _FILTER_DESCRIPTOR_V6 { DWORD dwVersion; DWORD dwNumFilters; FORWARD_ACTION faDefaultAction; FILTER_INFO_V6 fiFilter[1]; //1 is a placeholder for dwNumFilters } FILTER_DESCRIPTOR_V6, *PFILTER_DESCRIPTOR_V6; typedef struct _GLOBAL_INFO { IN OUT BOOL bFilteringOn; IN OUT DWORD dwLoggingLevel; } GLOBAL_INFO, *PGLOBAL_INFO; typedef struct _INTERFACE_ROUTE_INFO { union { struct { // IPv4 specific DWORD dwRtInfoDest; DWORD dwRtInfoMask; DWORD dwRtInfoPolicy; DWORD dwRtInfoNextHop; DWORD dwRtInfoAge; DWORD dwRtInfoNextHopAS; DWORD dwRtInfoMetric1; DWORD dwRtInfoMetric2; DWORD dwRtInfoMetric3; }; struct { // IPv6 specific IN6_ADDR DestinationPrefix; DWORD DestPrefixLength; IN6_ADDR NextHopAddress; ULONG ValidLifeTime; DWORD Flags; ULONG Metric; }; }; DWORD dwRtInfoIfIndex; DWORD dwRtInfoType; DWORD dwRtInfoProto; DWORD dwRtInfoPreference; DWORD dwRtInfoViewSet; BOOL bV4; } INTERFACE_ROUTE_INFO, *PINTERFACE_ROUTE_INFO; typedef struct _PROTOCOL_METRIC { IN OUT DWORD dwProtocolId; IN OUT DWORD dwMetric; } PROTOCOL_METRIC, *PPROTOCOL_METRIC; typedef struct _PRIORITY_INFO { IN OUT DWORD dwNumProtocols; IN OUT PROTOCOL_METRIC ppmProtocolMetric[1]; } PRIORITY_INFO, *PPRIORITY_INFO; typedef struct _PROTOCOL_METRIC_EX { IN OUT DWORD dwProtocolId; IN OUT DWORD dwSubProtocolId; IN OUT DWORD dwMetric; }PROTOCOL_METRIC_EX, *PPROTOCOL_METRIC_EX; typedef struct _PRIORITY_INFO_EX { IN OUT DWORD dwNumProtocols; IN OUT PROTOCOL_METRIC_EX ppmProtocolMetric[1]; }PRIORITY_INFO_EX, *PPRIORITY_INFO_EX; typedef struct _RTR_DISC_INFO { IN OUT WORD wMaxAdvtInterval; IN OUT WORD wMinAdvtInterval; IN OUT WORD wAdvtLifetime; IN OUT BOOL bAdvertise; IN OUT LONG lPrefLevel; } RTR_DISC_INFO, *PRTR_DISC_INFO; #define MAX_GROUP_LEN 64 typedef struct _MCAST_HBEAT_INFO { WCHAR pwszGroup[MAX_GROUP_LEN]; BOOL bActive; ULONG ulDeadInterval; BYTE byProtocol; WORD wPort; } MCAST_HBEAT_INFO, *PMCAST_HBEAT_INFO; typedef struct { DWORD dwTtl; DWORD dwRateLimit; } MIB_MCAST_LIMIT_ROW,*PMIB_MCAST_LIMIT_ROW; typedef struct _IPINIP_CONFIG_INFO { DWORD dwRemoteAddress; DWORD dwLocalAddress; BYTE byTtl; } IPINIP_CONFIG_INFO, *PIPINIP_CONFIG_INFO; typedef struct _INTERFACE_STATUS_INFO { IN OUT DWORD dwAdminStatus; } INTERFACE_STATUS_INFO, *PINTERFACE_STATUS_INFO; typedef struct _DIM_MIB_ENTRY_CONTAINER { DWORD dwMibInEntrySize; [size_is(dwMibInEntrySize)] LPBYTE pMibInEntry; DWORD dwMibOutEntrySize; [size_is(dwMibOutEntrySize)] LPBYTE pMibOutEntry; } DIM_MIB_ENTRY_CONTAINER, *PDIM_MIB_ENTRY_CONTAINER; typedef struct _MIB_IPFORWARDROW { DWORD dwForwardDest; DWORD dwForwardMask; DWORD dwForwardPolicy; DWORD dwForwardNextHop; DWORD dwForwardIfIndex; union { DWORD dwForwardType; MIB_IPFORWARD_TYPE ForwardType; }; union { DWORD dwForwardProto; MIB_IPFORWARD_PROTO ForwardProto; }; DWORD dwForwardAge; DWORD dwForwardNextHopAS; DWORD dwForwardMetric1; DWORD dwForwardMetric2; DWORD dwForwardMetric3; DWORD dwForwardMetric4; DWORD dwForwardMetric5; } MIB_IPFORWARDROW, *PMIB_IPFORWARDROW; typedef struct _MIB_IPDESTROW { MIB_IPFORWARDROW ForwardRow; DWORD dwForwardPreference; DWORD dwForwardViewSet; }MIB_IPDESTROW, *PMIB_IPDESTROW; typedef struct _MIB_IPDESTTABLE { DWORD dwNumEntries; MIB_IPDESTROW table[1]; //1, placeholder for dwNumEntries }MIB_IPDESTTABLE, *PMIB_IPDESTTABLE; typedef struct _MIB_ROUTESTATE { BOOL bRoutesSetToStack; }MIB_ROUTESTATE, *PMIB_ROUTESTATE; typedef struct _MIB_BEST_IF { DWORD dwDestAddr; DWORD dwIfIndex; } MIB_BEST_IF, *PMIB_BEST_IF; typedef struct { DWORD dwGroupAddress; DWORD dwGroupMask; } MIB_BOUNDARYROW, *PMIB_BOUNDARYROW; typedef struct _MIBICMPSTATS { DWORD dwMsgs; DWORD dwErrors; DWORD dwDestUnreachs; DWORD dwTimeExcds; DWORD dwParmProbs; DWORD dwSrcQuenchs; DWORD dwRedirects; DWORD dwEchos; DWORD dwEchoReps; DWORD dwTimestamps; DWORD dwTimestampReps; DWORD dwAddrMasks; DWORD dwAddrMaskReps; } MIBICMPSTATS; typedef struct _MIBICMPINFO { MIBICMPSTATS icmpInStats; MIBICMPSTATS icmpOutStats; } MIBICMPINFO; typedef struct _MIB_ICMP { MIBICMPINFO stats; } MIB_ICMP, *PMIB_ICMP; typedef struct _MIB_IFNUMBER { DWORD dwValue; } MIB_IFNUMBER, *PMIB_IFNUMBER; typedef struct _MIB_IFROW { WCHAR wszName[256]; DWORD dwIndex; DWORD dwType; DWORD dwMtu; DWORD dwSpeed; DWORD dwPhysAddrLen; BYTE bPhysAddr[8]; DWORD dwAdminStatus; DWORD dwOperStatus; DWORD dwLastChange; DWORD dwInOctets; DWORD dwInUcastPkts; DWORD dwInNUcastPkts; DWORD dwInDiscards; DWORD dwInErrors; DWORD dwInUnknownProtos; DWORD dwOutOctets; DWORD dwOutUcastPkts; DWORD dwOutNUcastPkts; DWORD dwOutDiscards; DWORD dwOutErrors; DWORD dwOutQLen; DWORD dwDescrLen; BYTE bDescr[256]; // 256, placeholder for dwDescrLen } MIB_IFROW; typedef struct _MIB_IFSTATUS { DWORD dwIfIndex; DWORD dwAdminStatus; DWORD dwOperationalStatus; BOOL bMHbeatActive; BOOL bMHbeatAlive; } MIB_IFSTATUS, *PMIB_IFSTATUS; typedef struct _MIB_IFTABLE { DWORD dwNumEntries; MIB_IFROW table[1]; //1, placeholder for dwNumEntries } MIB_IFTABLE, *PMIB_IFTABLE; typedef struct _MIB_IPADDRROW { DWORD dwAddr; DWORD dwIndex; DWORD dwMask; DWORD dwBCastAddr; DWORD dwReasmSize; unsigned short unused1; unsigned short wType; } MIB_IPADDRROW, *PMIB_IPADDRROW; typedef struct _MIB_IPADDRTABLE { DWORD dwNumEntries; MIB_IPADDRROW table[1]; //1, placeholder for dwNumEntries } MIB_IPADDRTABLE, *PMIB_IPADDRTABLE; typedef struct _MIB_IPFORWARDNUMBER { DWORD dwValue; } MIB_IPFORWARDNUMBER, *PMIB_IPFORWARDNUMBER; typedef struct _MIB_IPFORWARDTABLE { DWORD dwNumEntries; MIB_IPFORWARDROW table[1]; //1, placeholder for dwNumEntries BYTE reserved[8]; } MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE; typedef struct { DWORD dwIfIndex; DWORD dwGroupAddress; DWORD dwGroupMask; DWORD dwStatus; } MIB_IPMCAST_BOUNDARY, *PMIB_IPMCAST_BOUNDARY; typedef struct { DWORD dwNumEntries; MIB_IPMCAST_BOUNDARY table[1]; //1, placeholder for dwNumEntries } MIB_IPMCAST_BOUNDARY_TABLE, *PMIB_IPMCAST_BOUNDARY_TABLE; typedef struct _MIB_IPMCAST_GLOBAL { DWORD dwEnable; } MIB_IPMCAST_GLOBAL, *PMIB_IPMCAST_GLOBAL; typedef struct _MIB_IPMCAST_IF_ENTRY { DWORD dwIfIndex; DWORD dwTtl; DWORD dwProtocol; DWORD dwRateLimit; ULONG ulInMcastOctets; ULONG ulOutMcastOctets; } MIB_IPMCAST_IF_ENTRY, *PMIB_IPMCAST_IF_ENTRY; typedef struct _MIB_IPMCAST_IF_TABLE { DWORD dwNumEntries; MIB_IPMCAST_IF_ENTRY table[1]; //1, placeholder for dwNumEntries } MIB_IPMCAST_IF_TABLE, *PMIB_IPMCAST_IF_TABLE; typedef struct _MIB_IPMCAST_OIF { DWORD dwOutIfIndex; DWORD dwNextHopAddr; PVOID pvReserved; DWORD dwReserved; } MIB_IPMCAST_OIF, *PMIB_IPMCAST_OIF; typedef struct _MIB_IPMCAST_MFE { DWORD dwGroup; DWORD dwSource; DWORD dwSrcMask; DWORD dwUpStrmNgbr; DWORD dwInIfIndex; DWORD dwInIfProtocol; DWORD dwRouteProtocol; DWORD dwRouteNetwork; DWORD dwRouteMask; ULONG ulUpTime; ULONG ulExpiryTime; ULONG ulTimeOut; ULONG ulNumOutIf; DWORD fFlags; DWORD dwReserved; MIB_IPMCAST_OIF rgmioOutInfo[1]; //1, placeholder for ulNumOutIf } MIB_IPMCAST_MFE, *PMIB_IPMCAST_MFE; typedef struct _MIB_IPMCAST_OIF_STATS { DWORD dwOutIfIndex; DWORD dwNextHopAddr; PVOID pvDialContext; ULONG ulTtlTooLow; ULONG ulFragNeeded; ULONG ulOutPackets; ULONG ulOutDiscards; } MIB_IPMCAST_OIF_STATS, *PMIB_IPMCAST_OIF_STATS; typedef struct _MIB_IPMCAST_MFE_STATS { DWORD dwGroup; DWORD dwSource; DWORD dwSrcMask; DWORD dwUpStrmNgbr; DWORD dwInIfIndex; DWORD dwInIfProtocol; DWORD dwRouteProtocol; DWORD dwRouteNetwork; DWORD dwRouteMask; ULONG ulUpTime; ULONG ulExpiryTime; ULONG ulNumOutIf; ULONG ulInPkts; ULONG ulInOctets; ULONG ulPktsDifferentIf; ULONG ulQueueOverflow; MIB_IPMCAST_OIF_STATS rgmiosOutStats[1]; //1, placeholder for ulNumOutIf } MIB_IPMCAST_MFE_STATS, *PMIB_IPMCAST_MFE_STATS; typedef struct { DWORD dwGroupAddress; DWORD dwGroupMask; WCHAR snNameBuffer[256]; DWORD dwStatus; BYTE reserved[492]; } MIB_IPMCAST_SCOPE, *PMIB_IPMCAST_SCOPE; typedef struct _MIB_IPNETROW { DWORD dwIndex; DWORD dwPhysAddrLen; BYTE bPhysAddr[8]; DWORD dwAddr; DWORD dwType; } MIB_IPNETROW, *PMIB_IPNETROW; typedef struct _MIB_IPNETTABLE { DWORD dwNumEntries; MIB_IPNETROW table[1]; //1, placeholder for dwNumEntries BYTE reserved[8]; } MIB_IPNETTABLE, *PMIB_IPNETTABLE; typedef struct _MIB_IPSTATS { union { DWORD dwForwarding; MIB_IPSTATS_FORWARDING Forwarding ; }; DWORD dwDefaultTTL; DWORD dwInReceives; DWORD dwInHdrErrors; DWORD dwInAddrErrors; DWORD dwForwDatagrams; DWORD dwInUnknownProtos; DWORD dwInDiscards; DWORD dwInDelivers; DWORD dwOutRequests; DWORD dwRoutingDiscards; DWORD dwOutDiscards; DWORD dwOutNoRoutes; DWORD dwReasmTimeout; DWORD dwReasmReqds; DWORD dwReasmOks; DWORD dwReasmFails; DWORD dwFragOks; DWORD dwFragFails; DWORD dwFragCreates; DWORD dwNumIf; DWORD dwNumAddr; DWORD dwNumRoutes; } MIB_IPSTATS, *PMIB_IPSTATS; typedef struct _MIB_MFE_STATS_TABLE { DWORD dwNumEntries; MIB_IPMCAST_MFE_STATS table[1]; //1, placeholder for dwNumEntries } MIB_MFE_STATS_TABLE, *PMIB_MFE_STATS_TABLE; typedef struct _MIB_MFE_TABLE { DWORD dwNumEntries; MIB_IPMCAST_MFE table[1]; //1, placeholder for dwNumEntries } MIB_MFE_TABLE, *PMIB_MFE_TABLE; typedef struct _MIB_OPAQUE_INFO { DWORD dwId; union { ULONGLONG ullAlign; BYTE rgbyData[1]; }; } MIB_OPAQUE_INFO, *PMIB_OPAQUE_INFO; typedef struct _MIB_OPAQUE_QUERY { DWORD dwVarId; DWORD rgdwVarIndex[1]; } MIB_OPAQUE_QUERY, *PMIB_OPAQUE_QUERY; typedef struct _MIB_PROXYARP { DWORD dwAddress; DWORD dwMask; DWORD dwIfIndex; } MIB_PROXYARP, *PMIB_PROXYARP; typedef struct _MIB_TCPROW { union { DWORD dwState; MIB_TCP_STATE State; }; DWORD dwLocalAddr; DWORD dwLocalPort; DWORD dwRemoteAddr; DWORD dwRemotePort; } MIB_TCPROW, *PMIB_TCPROW; typedef struct _MIB_TCPSTATS { union { DWORD dwRtoAlgorithm; TCP_RTO_ALGORITHM RtoAlgorithm; }; DWORD dwRtoMin; DWORD dwRtoMax; DWORD dwMaxConn; DWORD dwActiveOpens; DWORD dwPassiveOpens; DWORD dwAttemptFails; DWORD dwEstabResets; DWORD dwCurrEstab; DWORD dwInSegs; DWORD dwOutSegs; DWORD dwRetransSegs; DWORD dwInErrs; DWORD dwOutRsts; DWORD dwNumConns; } MIB_TCPSTATS, *PMIB_TCPSTATS; typedef struct _MIB_TCPTABLE { DWORD dwNumEntries; MIB_TCPROW table[1]; //1, placeholder for dwNumEntries BYTE reserved[8]; } MIB_TCPTABLE, *PMIB_TCPTABLE; typedef struct _MIB_UDPROW { DWORD dwLocalAddr; DWORD dwLocalPort; } MIB_UDPROW, *PMIB_UDPROW; typedef struct _MIB_UDPSTATS { DWORD dwInDatagrams; DWORD dwNoPorts; DWORD dwInErrors; DWORD dwOutDatagrams; DWORD dwNumAddrs; } MIB_UDPSTATS, *PMIB_UDPSTATS; typedef struct _MIB_UDPTABLE { DWORD dwNumEntries; MIB_UDPROW table[1]; //1, placeholder for dwNumEntries BYTE reserved[8]; } MIB_UDPTABLE, *PMIB_UDPTABLE; typedef struct MPR_SERVER_0 { BOOL fLanOnlyMode; DWORD dwUpTime; DWORD dwTotalPorts; DWORD dwPortsInUse; } MPR_SERVER_0,*PMPR_SERVER_0; typedef struct MPR_SERVER_1 { DWORD dwNumPptpPorts; DWORD dwPptpPortFlags; DWORD dwNumL2tpPorts; DWORD dwL2tpPortFlags; } MPR_SERVER_1,*PMPR_SERVER_1; typedef struct MPR_SERVER_2 { DWORD dwNumPptpPorts; DWORD dwPptpPortFlags; DWORD dwNumL2tpPorts; DWORD dwL2tpPortFlags; DWORD dwNumSstpPorts; DWORD dwSstpPortFlags; } MPR_SERVER_2,*PMPR_SERVER_2; typedef struct _PPP_NBFCP_INFO { DWORD dwError; WCHAR wszWksta[17]; } PPP_NBFCP_INFO; typedef struct _PPP_IPCP_INFO { DWORD dwError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; } PPP_IPCP_INFO; typedef struct _PPP_IPCP_INFO2 { DWORD dwError; WCHAR wszAddress[16]; WCHAR wszRemoteAddress[16]; DWORD dwOptions; DWORD dwRemoteOptons; } PPP_IPCP_INFO2; typedef struct _PPP_IPXCP_INFO { DWORD dwError; WCHAR wszAddress[16]; } PPP_IPXCP_INFO; typedef struct _PPP_IPV6CP_INFO { DWORD dwVersion; DWORD dwSize; DWORD dwError; BYTE bInterfaceIdentifier[8]; BYTE bRemoteInterfaceIdentifier[8]; DWORD dwOptions; DWORD dwRemoteOptions; BYTE bPrefix[8]; DWORD dwPrefixLength; } PPP_IPV6_CP_INFO,*PPPP_IPV6_CP_INFO; typedef struct _PPP_ATCP_INFO { DWORD dwError; WCHAR wszAddress[33]; } PPP_ATCP_INFO; typedef struct _PPP_CCP_INFO { DWORD dwError; DWORD dwCompressionAlgorithm; DWORD dwOptions; DWORD dwRemoteCompressionAlgorithm; DWORD dwRemoteOptions; } PPP_CCP_INFO; typedef struct _PPP_LCP_INFO { DWORD dwError; DWORD dwAuthenticationProtocol; DWORD dwAuthenticationData; DWORD dwRemoteAuthenticationProtocol; DWORD dwRemoteAuthenticationData; DWORD dwTerminateReason; DWORD dwRemoteTerminateReason; DWORD dwOptions; DWORD dwRemoteOptions; DWORD dwEapTypeId; DWORD dwRemoteEapTypeId; } PPP_LCP_INFO; typedef struct _PPP_INFO { PPP_NBFCP_INFO nbf; PPP_IPCP_INFO ip; PPP_IPXCP_INFO ipx; PPP_ATCP_INFO at; } PPP_INFO; typedef struct _PPP_INFO_2 { PPP_NBFCP_INFO nbf; PPP_IPCP_INFO2 ip; PPP_IPXCP_INFO ipx; PPP_ATCP_INFO at; PPP_CCP_INFO ccp; PPP_LCP_INFO lcp; } PPP_INFO_2; typedef struct _PPP_INFO_3 { PPP_NBFCP_INFO nbf; PPP_IPCP_INFO2 ip; PPP_IPV6_CP_INFO ipv6; PPP_CCP_INFO ccp; PPP_LCP_INFO lcp; } PPP_INFO_3; typedef struct _RASI_PORT_0 { DWORD dwPort; DWORD dwConnection; RAS_PORT_CONDITION dwPortCondition; DWORD dwTotalNumberOfCalls; DWORD dwConnectDuration; WCHAR wszPortName[17]; WCHAR wszMediaName[17]; WCHAR wszDeviceName[129]; WCHAR wszDeviceType[17]; } RASI_PORT_0,*PRASI_PORT_0; typedef struct _RASI_PORT_1 { DWORD dwPort; DWORD dwConnection; RAS_HARDWARE_CONDITION dwHardwareCondition; DWORD dwLineSpeed; DWORD dwBytesXmited; DWORD dwBytesRcved; DWORD dwFramesXmited; DWORD dwFramesRcved; DWORD dwCrcErr; DWORD dwTimeoutErr; DWORD dwAlignmentErr; DWORD dwHardwareOverrunErr; DWORD dwFramingErr; DWORD dwBufferOverrunErr; DWORD dwCompressionRatioIn; DWORD dwCompressionRatioOut; } RASI_PORT_1,*PRASI_PORT_1; typedef struct _RASI_CONNECTION_0 { DWORD dwConnection; DWORD dwInterface; DWORD dwConnectDuration; ROUTER_INTERFACE_TYPE dwInterfaceType; DWORD dwConnectionFlags; WCHAR wszInterfaceName[257]; WCHAR wszUserName[257]; WCHAR wszLogonDomain[16]; WCHAR wszRemoteComputer[17]; } RASI_CONNECTION_0,*PRASI_CONNECTION_0; typedef struct RASI_CONNECTION_1 { DWORD dwConnection; DWORD dwInterface; PPP_INFO PppInfo; DWORD dwBytesXmited; DWORD dwBytesRcved; DWORD dwFramesXmited; DWORD dwFramesRcved; DWORD dwCrcErr; DWORD dwTimeoutErr; DWORD dwAlignmentErr; DWORD dwHardwareOverrunErr; DWORD dwFramingErr; DWORD dwBufferOverrunErr; DWORD dwCompressionRatioIn; DWORD dwCompressionRatioOut; } RASI_CONNECTION_1,*PRASI_CONNECTION_1; typedef struct _RASI_CONNECTION_2 { DWORD dwConnection; WCHAR wszUserName[257]; ROUTER_INTERFACE_TYPE dwInterfaceType; GUID guid; PPP_INFO_2 PppInfo2; } RASI_CONNECTION_2,*PRASI_CONNECTION_2; typedef struct _RASI_CONNECTION_3 { DWORD dwVersion; DWORD dwSize; DWORD dwConnection; WCHAR wszUserName[257]; ROUTER_INTERFACE_TYPE dwInterfaceType; GUID guid; PPP_INFO_3 PppInfo3; RAS_QUARANTINE_STATE rasQuarState; FILETIME timer; } RASI_CONNECTION_3,*PRASI_CONNECTION_3; typedef struct _MPRI_INTERFACE_0 { WCHAR wszInterfaceName[257]; DWORD dwInterface; BOOL fEnabled; ROUTER_INTERFACE_TYPE dwIfType; ROUTER_CONNECTION_STATE dwConnectionState; DWORD fUnReachabilityReasons; DWORD dwLastError; } MPRI_INTERFACE_0,*PMPRI_INTERFACE_0; typedef struct _MPRI_INTERFACE_1 { WCHAR wszInterfaceName[257]; DWORD dwInterface; BOOL fEnabled; ROUTER_INTERFACE_TYPE dwIfType; ROUTER_CONNECTION_STATE dwConnectionState; DWORD fUnReachabilityReasons; DWORD dwLastError; LPWSTR lpwsDialoutHoursRestriction; } MPRI_INTERFACE_1, *PMPRI_INTERFACE_1; typedef struct _MPRI_INTERFACE_2 { WCHAR wszInterfaceName[257]; DWORD dwInterface; BOOL fEnabled; ROUTER_INTERFACE_TYPE dwIfType; ROUTER_CONNECTION_STATE dwConnectionState; DWORD fUnReachabilityReasons; DWORD dwLastError; DWORD dwfOptions; WCHAR szLocalPhoneNumber[129]; PWCHAR szAlternates; DWORD ipaddr; DWORD ipaddrDns; DWORD ipaddrDnsAlt; DWORD ipaddrWins; DWORD ipaddrWinsAlt; DWORD dwfNetProtocols; WCHAR szDeviceType[17]; WCHAR szDeviceName[129]; WCHAR szX25PadType[33]; WCHAR szX25Address[201]; WCHAR szX25Facilities[201]; WCHAR szX25UserData[201]; DWORD dwChannels; DWORD dwSubEntries; DWORD dwDialMode; DWORD dwDialExtraPercent; DWORD dwDialExtraSampleSeconds; DWORD dwHangUpExtraPercent; DWORD dwHangUpExtraSampleSeconds; DWORD dwIdleDisconnectSeconds; DWORD dwType; DWORD dwEncryptionType; DWORD dwCustomAuthKey; DWORD dwCustomAuthDataSize; LPBYTE lpbCustomAuthData; GUID guidId; DWORD dwVpnStrategy; } MPRI_INTERFACE_2, *PMPRI_INTERFACE_2; typedef struct _MPR_INTERFACE_3 { WCHAR wszInterfaceName[257]; DWORD dwInterface; BOOL fEnabled; ROUTER_INTERFACE_TYPE dwIfType; ROUTER_CONNECTION_STATE dwConnectionState; DWORD fUnReachabilityReasons; DWORD dwLastError; DWORD dwfOptions; WCHAR szLocalPhoneNumber[129]; PWCHAR szAlternates; DWORD ipaddr; DWORD ipaddrDns; DWORD ipaddrDnsAlt; DWORD ipaddrWins; DWORD ipaddrWinsAlt; DWORD dwfNetProtocols; WCHAR szDeviceType[17]; WCHAR szDeviceName[129]; WCHAR szX25PadType[33]; WCHAR szX25Address[201]; WCHAR szX25Facilities[201]; WCHAR szX25UserData[201]; DWORD dwChannels; DWORD dwSubEntries; DWORD dwDialMode; DWORD dwDialExtraPercent; DWORD dwDialExtraSampleSeconds; DWORD dwHangUpExtraPercent; DWORD dwHangUpExtraSampleSeconds; DWORD dwIdleDisconnectSeconds; DWORD dwType; DWORD dwEncryptionType; DWORD dwCustomAuthKey; DWORD dwCustomAuthDataSize; LPBYTE lpbCustomAuthData; GUID guidId; DWORD dwVpnStrategy; ULONG AddressCount; IN6_ADDR ipv6addrDns; IN6_ADDR ipv6addrDnsAlt; IN6_ADDR* ipv6addr; } MPRI_INTERFACE_3,*PMPRI_INTERFACE_3; typedef struct _MPR_DEVICE_0 { WCHAR szDeviceType[17]; WCHAR szDeviceName[129]; } MPR_DEVICE_0,*PMPR_DEVICE_0; typedef struct _MPR_DEVICE_1 { WCHAR szDeviceType[17]; WCHAR szDeviceName[129]; WCHAR szLocalPhoneNumber[129]; PWCHAR szAlternates; } MPR_DEVICE_1,*PMPR_DEVICE_1; typedef struct _MPR_CREDENTIALSEX_1 { DWORD dwSize; DWORD dwOffset; BYTE bData[1]; } MPR_CREDENTIALSEX_1, *PMPR_CREDENTIALSEX_1; typedef struct _IFFILTER_INFO { BOOL bEnableFragChk; }IFFILTER_INFO, *PIFFILTER_INFO; typedef struct _MPR_FILTER_0 { IN BOOL fEnable; } MPR_FILTER_0, *PMPR_FILTER_0; typedef struct _IPX_GLOBAL_INFO { ULONG RoutingTableHashSize; ULONG EventLogMask; } IPX_GLOBAL_INFO, *PIPX_GLOBAL_INFO; typedef struct _IPX_IF_INFO { ULONG AdministratorState; ULONG NetbiosAccept; // ULONG NetbiosDeliver; // Deliver Netbios broadcast packets } IPX_IF_INFO, *PIPX_IF_INFO; typedef struct _IPXWAN_IF_INFO { ULONG Adminstate; } IPXWAN_IF_INFO, *PIPXWAN_IF_INFO; typedef struct _IPX_STATIC_ROUTE_INFO { union { ULONG DwordAlign; UCHAR Network[4]; }; USHORT TickCount; USHORT HopCount; UCHAR NextHopMacAddress[6]; } IPX_STATIC_ROUTE_INFO, *PIPX_STATIC_ROUTE_INFO; typedef IPX_SERVER_ENTRY IPX_STATIC_SERVICE_INFO, *PIPX_STATIC_SERVICE_INFO; typedef struct _IPX_SERVER_ENTRY { USHORT Type; UCHAR Name[48]; UCHAR Network[4]; UCHAR Node[6]; UCHAR Socket[2]; USHORT HopCount; } IPX_SERVER_ENTRY, *PIPX_SERVER_ENTRY; typedef struct _IPX_STATIC_NETBIOS_NAME_INFO { union { ULONG DwordAlign; UCHAR Name[16]; }; } IPX_STATIC_NETBIOS_NAME_INFO, *PIPX_STATIC_NETBIOS_NAME_INFO; #define MAX_ADAPTOR_NAME_LEN 48 typedef struct _IPX_ADAPTER_INFO { ULONG PacketType; WCHAR AdapterName[MAX_ADAPTOR_NAME_LEN]; } IPX_ADAPTER_INFO, *PIPX_ADAPTER_INFO; typedef struct _IPX_TRAFFIC_FILTER_GLOBAL_INFO { ULONG FilterAction; } IPX_TRAFFIC_FILTER_GLOBAL_INFO, *PIPX_TRAFFIC_FILTER_GLOBAL_INFO; typedef struct _IPX_TRAFFIC_FILTER_INFO { ULONG FilterDefinition; UCHAR DestinationNetwork[4]; UCHAR DestinationNetworkMask[4]; UCHAR DestinationNode[6]; UCHAR DestinationSocket[2]; UCHAR SourceNetwork[4]; UCHAR SourceNetworkMask[4]; UCHAR SourceNode[6]; UCHAR SourceSocket[2]; UCHAR PacketType; } IPX_TRAFFIC_FILTER_INFO, *PIPX_TRAFFIC_FILTER_INFO; typedef struct _IF_TABLE_INDEX { ULONG InterfaceIndex; } IF_TABLE_INDEX, *PIF_TABLE_INDEX; typedef struct _ROUTING_TABLE_INDEX { UCHAR Network[4]; } ROUTING_TABLE_INDEX, *PROUTING_TABLE_INDEX; typedef struct _STATIC_ROUTES_TABLE_INDEX { ULONG InterfaceIndex; UCHAR Network[4]; } STATIC_ROUTES_TABLE_INDEX, *PSTATIC_ROUTES_TABLE_INDEX; typedef struct _SERVICES_TABLE_INDEX { USHORT ServiceType; UCHAR ServiceName[48]; } SERVICES_TABLE_INDEX, *PSERVICES_TABLE_INDEX; typedef struct _STATIC_SERVICES_TABLE_INDEX { ULONG InterfaceIndex; USHORT ServiceType; UCHAR ServiceName[48]; } STATIC_SERVICES_TABLE_INDEX, *PSTATIC_SERVICES_TABLE_INDEX; typedef union _IPX_MIB_INDEX { IF_TABLE_INDEX InterfaceTableIndex; ROUTING_TABLE_INDEX RoutingTableIndex; STATIC_ROUTES_TABLE_INDEX StaticRoutesTableIndex; SERVICES_TABLE_INDEX ServicesTableIndex; STATIC_SERVICES_TABLE_INDEX StaticServicesTableIndex; } IPX_MIB_INDEX, *PIPX_MIB_INDEX; typedef struct _IPX_MIB_GET_INPUT_DATA { ULONG TableId; IPX_MIB_INDEX MibIndex; } IPX_MIB_GET_INPUT_DATA, *PIPX_MIB_GET_INPUT_DATA; typedef struct _IPXMIB_BASE { ULONG OperState; UCHAR PrimaryNetNumber[4]; UCHAR Node[6]; UCHAR SysName[48]; ULONG MaxPathSplits; ULONG IfCount; ULONG DestCount; ULONG ServCount; } IPXMIB_BASE, *PIPXMIB_BASE; typedef struct _IPX_IF_STATS { ULONG IfOperState; ULONG MaxPacketSize; ULONG InHdrErrors; ULONG InFiltered; ULONG InNoRoutes; ULONG InDiscards; ULONG InDelivers; ULONG OutFiltered; ULONG OutDiscards; ULONG OutDelivers; ULONG NetbiosReceived; ULONG NetbiosSent; } IPX_IF_STATS, *PIPX_IF_STATS; typedef struct _IPX_INTERFACE { ULONG InterfaceIndex; ULONG AdministratorState; ULONG AdapterIndex; UCHAR InterfaceName[48]; ULONG InterfaceType; ULONG MediaType; UCHAR NetNumber[4]; UCHAR MacAddress[6]; ULONG Delay; ULONG Throughput; ULONG NetbiosAccept; ULONG NetbiosDeliver; ULONG EnableIpxWanNegotiation; IPX_IF_STATS IfStats; } IPX_INTERFACE, *PIPX_INTERFACE; typedef struct _IPX_ROUTE { ULONG InterfaceIndex; ULONG Protocol; UCHAR Network[4]; USHORT TickCount; USHORT HopCount; UCHAR NextHopMacAddress[6]; ULONG Flags; } IPX_ROUTE, *PIPX_ROUTE; typedef struct _IPX_SERVICE { ULONG InterfaceIndex; ULONG Protocol; IPX_SERVER_ENTRY Server; } IPX_SERVICE, *PIPX_SERVICE; typedef union _IPX_MIB_ROW { IPX_INTERFACE Interface; IPX_ROUTE Route; IPX_SERVICE Service; } IPX_MIB_ROW, *PIPX_MIB_ROW; typedef struct _IPX_MIB_SET_INPUT_DATA { ULONG TableId; IPX_MIB_ROW MibRow; } IPX_MIB_SET_INPUT_DATA, *PIPX_MIB_SET_INPUT_DATA; typedef struct _SAP_SERVICE_FILTER_INFO { union { USHORT ServiceType; ULONG ServiceType_align; // Ensures alignment }; UCHAR ServiceName[48]; } SAP_SERVICE_FILTER_INFO, *PSAP_SERVICE_FILTER_INFO; typedef struct _SAP_IF_FILTERS { ULONG SupplyFilterAction; ULONG SupplyFilterCount; ULONG ListenFilterAction; ULONG ListenFilterCount; SAP_SERVICE_FILTER_INFO ServiceFilter[1]; } SAP_IF_FILTERS, *PSAP_IF_FILTERS; typedef struct _SAP_IF_INFO { ULONG AdminState; ULONG UpdateMode; ULONG PacketType; ULONG Supply; ULONG Listen; ULONG GetNearestServerReply; ULONG PeriodicUpdateInterval; ULONG AgeIntervalMultiplier; } SAP_IF_INFO, *PSAP_IF_INFO; typedef struct _SAP_IF_CONFIG { SAP_IF_INFO SapIfInfo; SAP_IF_FILTERS SapIfFilters; } SAP_IF_CONFIG, *PSAP_IF_CONFIG; typedef struct _SAP_MIB_BASE { ULONG SapOperState; } SAP_MIB_BASE, *PSAP_MIB_BASE; typedef struct _SAP_IF_STATS { ULONG SapIfOperState; ULONG SapIfInputPackets; ULONG SapIfOutputPackets; } SAP_IF_STATS, *PSAP_IF_STATS; typedef struct _SAP_INTERFACE { ULONG InterfaceIndex; SAP_IF_INFO SapIfInfo; SAP_IF_STATS SapIfStats; } SAP_INTERFACE, *PSAP_INTERFACE; typedef struct _SAP_MIB_GET_INPUT_DATA { ULONG TableId; ULONG InterfaceIndex; } SAP_MIB_GET_INPUT_DATA, *PSAP_MIB_GET_INPUT_DATA; typedef struct _SAP_MIB_SET_INPUT_DATA { ULONG TableId; SAP_INTERFACE SapInterface; } SAP_MIB_SET_INPUT_DATA, *PSAP_MIB_SET_INPUT_DATA; typedef struct _RIPMIB_BASE { ULONG RIPOperState; } RIPMIB_BASE, *PRIPMIB_BASE; typedef struct _RIP_IF_STATS { ULONG RipIfOperState; ULONG RipIfInputPackets; ULONG RipIfOutputPackets; } RIP_IF_STATS, *PRIP_IF_STATS; typedef struct _RIP_IF_INFO { ULONG AdminState; ULONG UpdateMode; ULONG PacketType; ULONG Supply; ULONG Listen; ULONG PeriodicUpdateInterval; ULONG AgeIntervalMultiplier; } RIP_IF_INFO, *PRIP_IF_INFO; typedef struct _RIP_INTERFACE { ULONG InterfaceIndex; RIP_IF_INFO RipIfInfo; RIP_IF_STATS RipIfStats; } RIP_INTERFACE, *PRIP_INTERFACE; typedef struct _RIP_MIB_GET_INPUT_DATA { ULONG TableId; ULONG InterfaceIndex; } RIP_MIB_GET_INPUT_DATA, *PRIP_MIB_GET_INPUT_DATA; typedef struct _RIP_MIB_SET_INPUT_DATA { ULONG TableId; RIP_INTERFACE RipInterface; } RIP_MIB_SET_INPUT_DATA, *PRIP_MIB_SET_INPUT_DATA; typedef struct _EAPTLS_HASH { DWORD cbHash; BYTE pbHash[20]; } EAPTLS_HASH; typedef struct _EAPTLS_USER_PROPERTIES { DWORD reserved; DWORD dwVersion; DWORD dwSize; DWORD fFlags; EAPTLS_HASH Hash; WCHAR* pwszDiffUser; DWORD dwPinOffset; WCHAR* pwszPin; USHORT usLength; USHORT usMaximumLength; UCHAR ucSeed; WCHAR awszString[1]; } EAPTLS_USER_PROPERTIES; typedef struct _IPBOOTP_GLOBAL_CONFIG { DWORD GC_LoggingLevel; DWORD GC_MaxRecvQueueSize; DWORD GC_ServerCount; } IPBOOTP_GLOBAL_CONFIG, *PIPBOOTP_GLOBAL_CONFIG; typedef struct _IPBOOTP_IF_CONFIG { DWORD IC_State; DWORD IC_RelayMode; DWORD IC_MaxHopCount; DWORD IC_MinSecondsSinceBoot; } IPBOOTP_IF_CONFIG, *PIPBOOTP_IF_CONFIG; typedef struct _IPBOOTP_MIB_GET_INPUT_DATA { DWORD IMGID_TypeID; DWORD IMGID_IfIndex; } IPBOOTP_MIB_GET_INPUT_DATA, *PIPBOOTP_MIB_GET_INPUT_DATA; typedef struct _IPBOOTP_MIB_GET_OUTPUT_DATA { DWORD IMGOD_TypeID; DWORD IMGOD_IfIndex; BYTE IMGOD_Buffer[1]; } IPBOOTP_MIB_GET_OUTPUT_DATA, *PIPBOOTP_MIB_GET_OUTPUT_DATA; typedef struct _IPBOOTP_IF_STATS { DWORD IS_State; DWORD IS_SendFailures; DWORD IS_ReceiveFailures; DWORD IS_ArpUpdateFailures; DWORD IS_RequestsReceived; DWORD IS_RequestsDiscarded; DWORD IS_RepliesReceived; DWORD IS_RepliesDiscarded; } IPBOOTP_IF_STATS, *PIPBOOTP_IF_STATS; typedef struct _IPBOOTP_IF_BINDING { DWORD IB_State; DWORD IB_AddrCount; } IPBOOTP_IF_BINDING, *PIPBOOTP_IF_BINDING; typedef struct _IPBOOTP_IP_ADDRESS { DWORD IA_Address; DWORD IA_Netmask; } IPBOOTP_IP_ADDRESS, *PIPBOOTP_IP_ADDRESS; typedef struct _DHCPV6R_MIB_GET_OUTPUT_DATA { DWORD IMGOD_TypeID; // Type of the data received DWORD IMGOD_IfIndex; BYTE IMGOD_Buffer[1]; } DHCPV6R_MIB_GET_OUTPUT_DATA, *PDHCPV6R_MIB_GET_OUTPUT_DATA; typedef struct _DHCPV6R_IF_STATS { DWORD IS_State; DWORD IS_SendFailures; DWORD IS_ReceiveFailures; DWORD IS_RequestsReceived; DWORD IS_RequestsDiscarded; DWORD IS_RepliesReceived; DWORD IS_RepliesDiscarded; } DHCPV6R_IF_STATS, *PDHCPV6R_IF_STATS; typedef struct _DHCPV6R_MIB_GET_INPUT_DATA { DWORD IMGID_TypeID; // Type of the data to get DWORD IMGID_IfIndex; } DHCPV6R_MIB_GET_INPUT_DATA, *PDHCPV6R_MIB_GET_INPUT_DATA; typedef struct _DHCPV6R_GLOBAL_CONFIG { DWORD GC_LoggingLevel; DWORD GC_MaxRecvQueueSize; DWORD GC_ServerCount; } DHCPV6R_GLOBAL_CONFIG, *PDHCPV6R_GLOBAL_CONFIG; typedef struct _DHCPV6R_IF_CONFIG { DWORD IC_State; DWORD IC_RelayMode; DWORD IC_MaxHopCount; DWORD IC_MinElapsedTime; } DHCPV6R_IF_CONFIG, *PDHCPV6R_IF_CONFIG; typedef struct _IPRIP_MIB_GET_INPUT_DATA { DWORD IMGID_TypeID; union { DWORD IMGID_IfIndex; DWORD IMGID_PeerAddress; }; } IPRIP_MIB_GET_INPUT_DATA, *PIPRIP_MIB_GET_INPUT_DATA; typedef struct _IPRIP_MIB_GET_OUTPUT_DATA { DWORD IMGOD_TypeID; union { DWORD IMGOD_IfIndex; DWORD IMGOD_PeerAddress; }; BYTE IMGOD_Buffer[1]; } IPRIP_MIB_GET_OUTPUT_DATA, *PIPRIP_MIB_GET_OUTPUT_DATA; typedef struct _IPRIP_GLOBAL_STATS { DWORD GS_SystemRouteChanges; DWORD GS_TotalResponsesSent; } IPRIP_GLOBAL_STATS, *PIPRIP_GLOBAL_STATS; typedef struct _IPRIP_GLOBAL_CONFIG { DWORD GC_LoggingLevel; DWORD GC_MaxRecvQueueSize; DWORD GC_MaxSendQueueSize; DWORD GC_MinTriggeredUpdateInterval; DWORD GC_PeerFilterMode; DWORD GC_PeerFilterCount; } IPRIP_GLOBAL_CONFIG, *PIPRIP_GLOBAL_CONFIG; typedef struct _IPRIP_IF_STATS { DWORD IS_State; DWORD IS_SendFailures; DWORD IS_ReceiveFailures; DWORD IS_RequestsSent; DWORD IS_RequestsReceived; DWORD IS_ResponsesSent; DWORD IS_ResponsesReceived; DWORD IS_BadResponsePacketsReceived; DWORD IS_BadResponseEntriesReceived; DWORD IS_TriggeredUpdatesSent; } IPRIP_IF_STATS, *PIPRIP_IF_STATS; typedef struct _IPRIP_IF_CONFIG { DWORD IC_State; DWORD IC_Metric; DWORD IC_UpdateMode; DWORD IC_AcceptMode; DWORD IC_AnnounceMode; DWORD IC_ProtocolFlags; DWORD IC_RouteExpirationInterval; DWORD IC_RouteRemovalInterval; DWORD IC_FullUpdateInterval; DWORD IC_AuthenticationType; BYTE IC_AuthenticationKey[ 16]; WORD IC_RouteTag; DWORD IC_UnicastPeerMode; DWORD IC_AcceptFilterMode; DWORD IC_AnnounceFilterMode; DWORD IC_UnicastPeerCount; DWORD IC_AcceptFilterCount; DWORD IC_AnnounceFilterCount; } IPRIP_IF_CONFIG, *PIPRIP_IF_CONFIG; typedef struct _IPRIP_ROUTE_FILTER { DWORD RF_LoAddress; DWORD RF_HiAddress; } IPRIP_ROUTE_FILTER, *PIPRIP_ROUTE_FILTER; typedef struct _IPRIP_IF_BINDING { DWORD IB_State; DWORD IB_AddrCount; } IPRIP_IF_BINDING, *PIPRIP_IF_BINDING; typedef struct _IPRIP_IP_ADDRESS { DWORD IA_Address; DWORD IA_Netmask; } IPRIP_IP_ADDRESS, *PIPRIP_IP_ADDRESS; typedef struct _IPRIP_PEER_STATS { DWORD PS_LastPeerRouteTag; DWORD PS_LastPeerUpdateTickCount; DWORD PS_LastPeerUpdateVersion; DWORD PS_BadResponsePacketsFromPeer; DWORD PS_BadResponseEntriesFromPeer; } IPRIP_PEER_STATS, *PIPRIP_PEER_STATS; typedef struct _IGMP_MIB_GET_INPUT_DATA { DWORD TypeId; USHORT Flags; USHORT Signature; DWORD IfIndex; DWORD RasClientAddr; DWORD GroupAddr; DWORD Count; } IGMP_MIB_GET_INPUT_DATA, *PIGMP_MIB_GET_INPUT_DATA; typedef struct _IGMP_MIB_GET_OUTPUT_DATA { DWORD TypeId; DWORD Flags; //IGMP_ENUM_FORMAT_IGMPV3 set if v3 struct DWORD Count; BYTE Buffer[1]; } IGMP_MIB_GET_OUTPUT_DATA, *PIGMP_MIB_GET_OUTPUT_DATA; typedef struct _IGMP_MIB_GLOBAL_CONFIG { DWORD Version; DWORD LoggingLevel; DWORD RasClientStats; } IGMP_MIB_GLOBAL_CONFIG, *PIGMP_MIB_GLOBAL_CONFIG; typedef struct _IGMP_MIB_GLOBAL_STATS { DWORD CurrentGroupMemberships; DWORD GroupMembershipsAdded; } IGMP_MIB_GLOBAL_STATS, *PIGMP_MIB_GLOBAL_STATS; typedef struct _IGMP_MIB_IF_BINDING { DWORD IfIndex; DWORD IfType; DWORD State; DWORD AddrCount; } IGMP_MIB_IF_BINDING, *PIGMP_MIB_IF_BINDING; typedef struct _IGMP_MIB_IF_CONFIG { DWORD Version; DWORD IfIndex; //read only:index DWORD IpAddr; //read only DWORD IfType; //read only DWORD Flags; DWORD IgmpProtocolType; DWORD RobustnessVariable; DWORD StartupQueryInterval; DWORD StartupQueryCount; DWORD GenQueryInterval; DWORD GenQueryMaxResponseTime; DWORD LastMemQueryInterval; DWORD LastMemQueryCount; DWORD OtherQuerierPresentInterval;//read only DWORD GroupMembershipTimeout; //read only DWORD NumStaticGroups; } IGMP_MIB_IF_CONFIG, *PIGMP_MIB_IF_CONFIG; typedef struct _IGMP_MIB_IF_GROUPS_LIST { DWORD IfIndex; DWORD IpAddr; DWORD IfType; DWORD NumGroups; BYTE Buffer[1]; } IGMP_MIB_IF_GROUPS_LIST, *PIGMP_MIB_IF_GROUPS_LIST; typedef struct _IGMP_MIB_GROUP_INFO { union { DWORD IfIndex; DWORD GroupAddr; }; DWORD IpAddr; DWORD GroupUpTime; DWORD GroupExpiryTime; DWORD LastReporter; DWORD V1HostPresentTimeLeft; DWORD Flags; } IGMP_MIB_GROUP_INFO, *PIGMP_MIB_GROUP_INFO; typedef struct _IGMP_MIB_IF_STATS { DWORD IfIndex; // same as in MIB_IF_CONFIG DWORD IpAddr; // same as in MIB_IF_CONFIG DWORD IfType; // same as in MIB_IF_CONFIG BYTE State; // bound/enabled BYTE QuerierState; // (not)querier DWORD IgmpProtocolType; // router/proxy, and ver(1/2/3) DWORD QuerierIpAddr; DWORD ProxyIfIndex; // IfIndex of proxy(req by mib) DWORD QuerierPresentTimeLeft; DWORD LastQuerierChangeTime; DWORD V1QuerierPresentTimeLeft; //obsolete DWORD Uptime; // seconds it has been activated DWORD TotalIgmpPacketsReceived; DWORD TotalIgmpPacketsForRouter; DWORD GeneralQueriesReceived; DWORD WrongVersionQueries; DWORD JoinsReceived; DWORD LeavesReceived; DWORD CurrentGroupMemberships; DWORD GroupMembershipsAdded; DWORD WrongChecksumPackets; DWORD ShortPacketsReceived; DWORD LongPacketsReceived; DWORD PacketsWithoutRtrAlert; } IGMP_MIB_IF_STATS, *PIGMP_MIB_IF_STATS; typedef struct _IGMP_MIB_GROUP_IFS_LIST { DWORD GroupAddr; DWORD NumInterfaces; BYTE Buffer[1]; } IGMP_MIB_GROUP_IFS_LIST, *PIGMP_MIB_GROUP_IFS_LIST; typedef struct _IGMP_MIB_GROUP_SOURCE_INFO_V3 { DWORD Source; DWORD SourceExpiryTime; //not valid for exclusion mode DWORD SourceUpTime; DWORD Flags; } IGMP_MIB_GROUP_SOURCE_INFO_V3, *PIGMP_MIB_GROUP_SOURCE_INFO_V3; typedef struct _IGMP_MIB_GROUP_INFO_V3 { union { DWORD IfIndex; DWORD GroupAddr; }; DWORD IpAddr; DWORD GroupUpTime; DWORD GroupExpiryTime; DWORD LastReporter; DWORD V1HostPresentTimeLeft; DWORD Flags; //v3 additions DWORD Version; //1/2/3 DWORD Size; //size of this struct DWORD FilterType;//EXCLUSION/INCLUSION DWORD V2HostPresentTimeLeft; DWORD NumSources; //IGMP_MIB_GROUP_SOURCE_INFO_V3 Sources[0]; } IGMP_MIB_GROUP_INFO_V3, *PIGMP_MIB_GROUP_INFO_V3; typedef struct _INTERFACE_ROUTE_ENTRY { DWORD dwIndex; INTERFACE_ROUTE_INFO routeInfo; }INTERFACE_ROUTE_ENTRY, *PINTERFACE_ROUTE_ENTRY; typedef struct _IP_NAT_MIB_QUERY { ULONG Oid; union { ULONG Index; UCHAR Data; }; } IP_NAT_MIB_QUERY, *PIP_NAT_MIB_QUERY; typedef enum _IP_NAT_DIRECTION { NatInboundDirection = 0, NatOutboundDirection } IP_NAT_DIRECTION, *PIP_NAT_DIRECTION; typedef struct _IP_NAT_SESSION_MAPPING { UCHAR Protocol; // see NAT_PROTOCOL_* above ULONG PrivateAddress; USHORT PrivatePort; ULONG PublicAddress; USHORT PublicPort; ULONG RemoteAddress; USHORT RemotePort; IP_NAT_DIRECTION Direction; ULONG IdleTime; // in seconds } IP_NAT_SESSION_MAPPING, *PIP_NAT_SESSION_MAPPING; typedef struct _IP_NAT_ENUMERATE_SESSION_MAPPINGS { IN ULONG Index; IN OUT ULONG EnumerateContext[4]; OUT ULONG EnumerateCount; OUT ULONG EnumerateTotalHint; OUT IP_NAT_SESSION_MAPPING EnumerateTable[1]; } IP_NAT_ENUMERATE_SESSION_MAPPINGS, *PIP_NAT_ENUMERATE_SESSION_MAPPINGS; typedef struct _IP_NAT_INTERFACE_STATISTICS { OUT ULONG TotalMappings; OUT ULONG InboundMappings; OUT ULONG64 BytesForward; OUT ULONG64 BytesReverse; OUT ULONG64 PacketsForward; OUT ULONG64 PacketsReverse; OUT ULONG64 RejectsForward; OUT ULONG64 RejectsReverse; } IP_NAT_INTERFACE_STATISTICS, *PIP_NAT_INTERFACE_STATISTICS; typedef struct _IP_DNS_PROXY_MIB_QUERY { ULONG Oid; union { ULONG Index; UCHAR Data; }; } IP_DNS_PROXY_MIB_QUERY, *PIP_DNS_PROXY_MIB_QUERY; typedef struct _IP_DNS_PROXY_STATISTICS { ULONG MessagesIgnored; ULONG QueriesReceived; ULONG ResponsesReceived; ULONG QueriesSent; ULONG ResponsesSent; } IP_DNS_PROXY_STATISTICS, *PIP_DNS_PROXY_STATISTICS; typedef struct _IP_AUTO_DHCP_MIB_QUERY { ULONG Oid; union { ULONG Index; UCHAR Data; }; ULONG Reserved; } IP_AUTO_DHCP_MIB_QUERY, *PIP_AUTO_DHCP_MIB_QUERY; typedef struct _IP_AUTO_DHCP_STATISTICS { ULONG MessagesIgnored; ULONG BootpOffersSent; ULONG DiscoversReceived; ULONG InformsReceived; ULONG OffersSent; ULONG RequestsReceived; ULONG AcksSent; ULONG NaksSent; ULONG DeclinesReceived; ULONG ReleasesReceived; } IP_AUTO_DHCP_STATISTICS, *PIP_AUTO_DHCP_STATISTICS; typedef struct _MIB_DA_MSG { UINT32 op_code; /* IN: MIB manager operation code */ UINT32 ret_code; /* OUT: MIB manager return code */ UINT32 in_snmp_id[44]; /* IN: SNMP ID array (get_next) */ UINT32 obj_id[17]; /* IN: object ID array (get, set) */ UINT32 attr_id; /* IN: attribute ID (set) */ UINT32 inst_id[23]; /* IN: instance ID array (get, set) */ UINT32 next_snmp_id[44]; /* OUT: SNMP ID array (get_next) */ UINT32 creator; /* OUT: creator of instance (get, get_next) */ UINT32 attr_type; /* OUT: for resolveVarBind */ UINT32 inst_cnt; /* OUT: # of insts for caching (get_next) */ UINT32 map_flag; /* IN: flag - is this request mapped? */ ULONG_PTR data[32]; /* IN: attribute value (set) */ /* OUT: entire record (get, get_next) */ } MIB_DA_MSG; typedef struct _IP_AUTO_DHCP_GLOBAL_INFO { ULONG LoggingLevel; ULONG Flags; ULONG LeaseTime; ULONG ScopeNetwork; ULONG ScopeMask; ULONG ExclusionCount; ULONG ExclusionArray; } IP_AUTO_DHCP_GLOBAL_INFO, *PIP_AUTO_DHCP_GLOBAL_INFO; typedef struct _IP_AUTO_DHCP_INTERFACE_INFO { ULONG Flags; } IP_AUTO_DHCP_INTERFACE_INFO, *PIP_AUTO_DHCP_INTERFACE_INFO; typedef struct _IP_DNS_PROXY_GLOBAL_INFO { ULONG LoggingLevel; ULONG Flags; ULONG TimeoutSeconds; } IP_DNS_PROXY_GLOBAL_INFO, *PIP_DNS_PROXY_GLOBAL_INFO; typedef struct _IP_DNS_PROXY_INTERFACE_INFO { ULONG Flags; } IP_DNS_PROXY_INTERFACE_INFO, *PIP_DNS_PROXY_INTERFACE_INFO; typedef struct _IP_NAT_GLOBAL_INFO { ULONG LoggingLevel; // see IPNATHLP.H (IPNATHLP_LOGGING_*). ULONG Flags; RTR_INFO_BLOCK_HEADER Header; } IP_NAT_GLOBAL_INFO, *PIP_NAT_GLOBAL_INFO; typedef struct _IP_NAT_TIMEOUT { ULONG TCPTimeoutSeconds; ULONG UDPTimeoutSeconds; } IP_NAT_TIMEOUT, *PIP_NAT_TIMEOUT; typedef struct _IP_NAT_INTERFACE_INFO { ULONG Index; ULONG Flags; RTR_INFO_BLOCK_HEADER Header; } IP_NAT_INTERFACE_INFO, *PIP_NAT_INTERFACE_INFO; typedef struct _IP_NAT_ADDRESS_RANGE { ULONG StartAddress; ULONG EndAddress; ULONG SubnetMask; } IP_NAT_ADDRESS_RANGE, *PIP_NAT_ADDRESS_RANGE; typedef struct _IP_NAT_PORT_MAPPING { UCHAR Protocol; USHORT PublicPort; ULONG PublicAddress; // OPTIONAL - see IP_NAT_ADDRESS_UNSPECIFIED USHORT PrivatePort; ULONG PrivateAddress; } IP_NAT_PORT_MAPPING, *PIP_NAT_PORT_MAPPING; typedef struct _IP_NAT_ADDRESS_MAPPING { ULONG PrivateAddress; ULONG PublicAddress; BOOLEAN AllowInboundSessions; } IP_NAT_ADDRESS_MAPPING, *PIP_NAT_ADDRESS_MAPPING; typedef struct IP_ALG_GLOBAL_INFO { ULONG LoggingLevel; ULONG Flags; } IP_ALG_GLOBAL_INFO, *PIP_ALG_GLOBAL_INFO; typedef struct _RIP_GLOBAL_INFO { DWORD EventLogMask; } RIP_GLOBAL_INFO, *PRIP_GLOBAL_INFO; typedef struct _RIP_ROUTE_FILTER_INFO { UCHAR Network[4]; UCHAR Mask[4]; } RIP_ROUTE_FILTER_INFO, *PRIP_ROUTE_FILTER_INFO; typedef struct _RIP_IF_FILTERS { ULONG SupplyFilterAction; ULONG SupplyFilterCount; ULONG ListenFilterAction; ULONG ListenFilterCount; RIP_ROUTE_FILTER_INFO RouteFilter[1]; } RIP_IF_FILTERS, *PRIP_IF_FILTERS; typedef struct _RIP_IF_CONFIG { RIP_IF_INFO RipIfInfo; RIP_IF_FILTERS RipIfFilters; } RIP_IF_CONFIG, *PRIP_IF_CONFIG; typedef struct _SAP_GLOBAL_INFO { DWORD EventLogMask; } SAP_GLOBAL_INFO, *PSAP_GLOBAL_INFO; typedef struct _OSPF_ROUTE_FILTER { DWORD dwAddress; DWORD dwMask; }OSPF_ROUTE_FILTER, *POSPF_ROUTE_FILTER; typedef enum _OSPF_FILTER_ACTION { ACTION_DROP = 0, ACTION_ACCEPT = 1 }OSPF_FILTER_ACTION, *POSPF_FILTER_ACTION; typedef struct _OSPF_ROUTE_FILTER_INFO { DWORD type; OSPF_FILTER_ACTION ofaActionOnMatch; DWORD dwNumFilters; OSPF_ROUTE_FILTER pFilters[1]; }OSPF_ROUTE_FILTER_INFO, *POSPF_ROUTE_FILTER_INFO; typedef struct _OSPF_PROTO_FILTER_INFO { DWORD type; OSPF_FILTER_ACTION ofaActionOnMatch; DWORD dwNumProtoIds; DWORD pdwProtoId[1]; }OSPF_PROTO_FILTER_INFO, *POSPF_PROTO_FILTER_INFO; typedef struct _OSPF_GLOBAL_PARAM { DWORD type; DWORD create; DWORD enable; DWORD routerId; DWORD ASBrdrRtr; DWORD logLevel; }OSPF_GLOBAL_PARAM, *POSPF_GLOBAL_PARAM; typedef struct _OSPF_AREA_PARAM { DWORD type; DWORD create; DWORD enable; DWORD areaId; DWORD authType; DWORD importASExtern; DWORD stubMetric; DWORD importSumAdv; }OSPF_AREA_PARAM, *POSPF_AREA_PARAM; typedef struct _OSPF_AREA_RANGE_PARAM { DWORD type; DWORD create; DWORD enable; DWORD areaId; DWORD rangeNet; DWORD rangeMask; }OSPF_AREA_RANGE_PARAM, *POSPF_AREA_RANGE_PARAM; typedef struct _OSPF_VIRT_INTERFACE_PARAM { DWORD type; DWORD create; DWORD enable; DWORD transitAreaId; DWORD virtNeighborRouterId; DWORD transitDelay; DWORD retransInterval; DWORD helloInterval; DWORD deadInterval; BYTE password[8]; }OSPF_VIRT_INTERFACE_PARAM, *POSPF_VIRT_INTERFACE_PARAM; typedef struct _OSPF_INTERFACE_PARAM { DWORD type; DWORD create; DWORD enable; DWORD intfIpAddr; DWORD intfSubnetMask; DWORD areaId; DWORD intfType; DWORD routerPriority; DWORD transitDelay; DWORD retransInterval; DWORD helloInterval; DWORD deadInterval; DWORD pollInterval; DWORD metricCost; BYTE password[8]; DWORD mtuSize; }OSPF_INTERFACE_PARAM, *POSPF_INTERFACE_PARAM; typedef struct _OSPF_NBMA_NEIGHBOR_PARAM { DWORD type; DWORD create; DWORD enable; DWORD neighborIpAddr; DWORD intfIpAddr; DWORD neighborPriority; }OSPF_NBMA_NEIGHBOR_PARAM, *POSPF_NBMA_NEIGHBOR_PARAM; typedef enum _RASDEVICETYPE { RDT_Modem = 0, RDT_X25, RDT_Isdn, RDT_Serial, RDT_FrameRelay, RDT_Atm, RDT_Sonet, RDT_Sw56, RDT_Tunnel_Pptp, RDT_Tunnel_L2tp, RDT_Irda, RDT_Parallel, RDT_Other, RDT_PPPoE, RDT_Tunnel_Sstp, RDT_Tunnel_Ikev2, RDT_Tunnel = 0x00010000, RDT_Direct = 0x00020000, RDT_Null_Modem = 0x00040000, RDT_Broadband = 0x00080000 } RASDEVICETYPE; typedef enum _RASMAN_STATUS { OPEN = 0, CLOSED = 1, UNAVAILABLE = 2, REMOVED = 3 } RASMAN_STATUS; typedef enum _ReqTypes { REQTYPE_PORTENUM= 21, REQTYPE_GETINFO= 22, REQTYPE_GETDEVCONFIG= 73, REQTYPE_SETDEVICECONFIGINFO= 94, REQTYPE_GETDEVICECONFIGINFO= 95, REQTYPE_GETCALLEDID= 105, REQTYPE_SETCALLEDID= 106, REQTYPE_GETNDISWANDRIVERCAPS= 111 } ReqTypes; typedef enum _RASMAN_STATE { CONNECTING = 0, LISTENING = 1, CONNECTED = 2, DISCONNECTING = 3, DISCONNECTED = 4, LISTENCOMPLETED = 5, } RASMAN_STATE; typedef enum _RASMAN_DISCONNECT_TYPE { USER_REQUESTED = 0, REMOTE_DISCONNECTION = 1, HARDWARE_FAILURE = 2, NOT_DISCONNECTED = 3 } RASMAN_DISCONNECT_TYPE; typedef enum _RASMAN_USAGE { CALL_NONE = 0x00, CALL_IN = 0x01, CALL_OUT = 0x02, CALL_ROUTER = 0x04, CALL_LOGON = 0x08, CALL_OUT_ONLY = 0x10, CALL_IN_ONLY = 0x20, CALL_OUTBOUND_ROUTER = 0x40 } RASMAN_USAGE; typedef struct _RequestBuffer { DWORD RB_PCBIndex; ReqTypes RB_Reqtype; DWORD RB_Dummy; DWORD RB_Done; LONGLONG Alignment; BYTE RB_Buffer[1]; } RequestBuffer; typedef struct DeviceConfigInfo { DWORD retcode; DWORD dwVersion; DWORD cbBuffer; DWORD cEntries; BYTE abdata[1]; } DeviceConfigInfo; 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[17]; CHAR szDeviceName[129]; WCHAR wszDeviceName[129]; } RAS_DEVICE_INFO, *PRAS_DEVICE_INFO; typedef struct _RAS_CALLEDID_INFO { DWORD dwSize; BYTE bCalledId[1]; } RAS_CALLEDID_INFO, *PRAS_CALLEDID_INFO; typedef struct GetSetCalledId { DWORD retcode; BOOL fWrite; DWORD dwSize; GUID guidDevice; RAS_DEVICE_INFO rdi; RAS_CALLEDID_INFO rciInfo; } GetSetCalledId; typedef struct _RAS_NDISWAN_DRIVER_INFO { ULONG DriverCaps; ULONG Reserved; } RAS_NDISWAN_DRIVER_INFO, *P_NDISWAN_DRIVER_INFO; typedef struct GetNdiswanDriverCapsStruct { DWORD retcode; RAS_NDISWAN_DRIVER_INFO NdiswanDriverInfo; } GetNdiswanDriverCapsStruct; typedef struct GetDevConfigStruct { DWORD retcode; CHAR devicetype[17]; DWORD size; BYTE config[1]; } GetDevConfigStruct; typedef struct Enum { DWORD retcode; DWORD size; DWORD entries; BYTE buffer[1]; } Enum; typedef struct _RASMAN_PORT_32 { DWORD P_Port; CHAR P_PortName[16]; RASMAN_STATUS P_Status; RASDEVICETYPE P_rdtDeviceType; RASMAN_USAGE P_ConfiguredUsage; RASMAN_USAGE P_CurrentUsage; CHAR P_MediaName[16]; CHAR P_DeviceType[16]; CHAR P_DeviceName[129]; DWORD P_LineDeviceId; DWORD P_AddressId; } RASMAN_PORT_32; typedef struct _RASMAN_INFO { RASMAN_STATUS RI_PortStatus; RASMAN_STATE RI_ConnState; DWORD RI_LinkSpeed; DWORD RI_LastError; RASMAN_USAGE RI_CurrentUsage; CHAR RI_DeviceTypeConnecting [16]; CHAR RI_DeviceConnecting [129]; CHAR RI_szDeviceType[16]; CHAR RI_szDeviceName[129]; CHAR RI_szPortName[17]; RASMAN_DISCONNECT_TYPE RI_DisconnectType; DWORD RI_OwnershipFlag; DWORD RI_ConnectDuration; DWORD RI_BytesReceived; CHAR RI_Phonebook[261]; CHAR RI_PhoneEntry[257]; HANDLE RI_ConnectionHandle; DWORD RI_SubEntry; RASDEVICETYPE RI_rdtDeviceType; GUID RI_GuidEntry; DWORD RI_dwSessionId; DWORD RI_dwFlags; GUID RI_CorrelationGuid; }RASMAN_INFO; typedef struct Info { union { DWORD retcode; HANDLE paddingField; }; RASMAN_INFO info; } Info; #define RASRPC_MaxEntryName 256 #define RASRPC_MaxPortName 16 #define RASRPC_MaxDeviceName 128 #define RASRPC_MaxPhoneNumber 128 #define RASRPC_MAX_PATH 260 typedef struct _RASRPC_CALLBACKLIST { WCHAR pszPortName[RASRPC_MaxPortName + 1]; WCHAR pszDeviceName[RASRPC_MaxDeviceName + 1]; WCHAR pszNumber[RASRPC_MaxPhoneNumber + 1]; DWORD dwDeviceType; [unique] struct _RASRPC_CALLBACKLIST *pNext; } RASRPC_CALLBACKLIST, *LPRASRPC_CALLBACKLIST; typedef struct _RASRPC_STRINGLIST { WCHAR psz[256]; [unique] struct _RASRPC_STRINGLIST *pNext; } RASRPC_STRINGLIST, *LPRASRPC_STRINGLIST; typedef struct _RASRPC_LOCATIONLIST { DWORD dwLocationId; DWORD iPrefix; DWORD iSuffix; [unique] struct _RASRPC_LOCATIONLIST *pNext; } RASRPC_LOCATIONLIST, *LPRASRPC_LOCATIONLIST; typedef struct _RASRPC_PBUSER { BOOL fOperatorDial; BOOL fPreviewPhoneNumber; BOOL fUseLocation; BOOL fShowLights; BOOL fShowConnectStatus; BOOL fCloseOnDial; BOOL fAllowLogonPhonebookEdits; BOOL fAllowLogonLocationEdits; BOOL fSkipConnectComplete; BOOL fNewEntryWizard; DWORD dwRedialAttempts; DWORD dwRedialSeconds; DWORD dwIdleDisconnectSeconds; BOOL fRedialOnLinkFailure; BOOL fPopupOnTopWhenRedialing; BOOL fExpandAutoDialQuery; DWORD dwCallbackMode; [unique] LPRASRPC_CALLBACKLIST pCallbacks; WCHAR pszLastCallbackByCaller[129]; DWORD dwPhonebookMode; WCHAR pszPersonalFile[260]; WCHAR pszAlternatePath[260]; [unique] LPRASRPC_STRINGLIST pPhonebooks; [unique] LPRASRPC_STRINGLIST pAreaCodes; BOOL fUseAreaAndCountry; [unique] LPRASRPC_STRINGLIST pPrefixes; [unique] LPRASRPC_STRINGLIST pSuffixes; [unique] LPRASRPC_LOCATIONLIST pLocations; DWORD dwXPhonebook; DWORD dwYPhonebook; WCHAR pszDefaultEntry[257]; BOOL fInitialized; BOOL fDirty; } RASRPC_PBUSER, *LPRASRPC_PBUSER; [ uuid(8f09f000-b7ed-11ce-bbd2-00001a181cad), version(0.0), pointer_default(unique) ] interface dimsvc { DWORD RMprAdminServerGetInfo ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [out] PDIM_INFORMATION_CONTAINER pInfoStruct ); DWORD RRasAdminConnectionEnum ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in,out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD dwPreferedMaximumLength, [out] LPDWORD lpdwEntriesRead, [out] LPDWORD lpdwTotalEntries, [in,out,unique] LPDWORD lpdwResumeHandle ); DWORD RRasAdminConnectionGetInfo ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] DWORD hDimConnection, [out] PDIM_INFORMATION_CONTAINER pInfoStruct ); DWORD RRasAdminConnectionClearStats ( [in] DIM_HANDLE hDimServer, [in] DWORD hDimConnection ); DWORD RRasAdminPortEnum ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] DWORD hRasConnection, [in,out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD dwPreferedMaximumLength, [out] LPDWORD lpdwEntriesRead, [out] LPDWORD lpdwTotalEntries, [in,out,unique] LPDWORD lpdwResumeHandle ); DWORD RRasAdminPortGetInfo ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] DWORD hPort, [out] PDIM_INFORMATION_CONTAINER pInfoStruct ); DWORD RRasAdminPortClearStats ( [in] DIM_HANDLE hDimServer, [in] DWORD hPort ); DWORD RRasAdminPortReset ( [in] DIM_HANDLE hDimServer, [in] DWORD hPort ); DWORD RRasAdminPortDisconnect ( [in] DIM_HANDLE hDimServer, [in] DWORD hPort ); DWORD RRouterInterfaceTransportSetGlobalInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwTransportId, [in] PDIM_INTERFACE_CONTAINER pInfoStruct ); DWORD RRouterInterfaceTransportGetGlobalInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwTransportId, [in,out] PDIM_INTERFACE_CONTAINER pInfoStruct ); DWORD RRouterInterfaceGetHandle( [in] DIM_HANDLE hDimServer, [in,string] LPWSTR lpwsInterfaceName, [in,out] LPDWORD phInterface, [in] DWORD fIncludeClientInterfaces ); DWORD RRouterInterfaceCreate( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] PDIM_INFORMATION_CONTAINER pInfoStruct, [in,out] LPDWORD phInterface ); DWORD RRouterInterfaceGetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in,out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD hInterface ); DWORD RRouterInterfaceSetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD hInterface ); DWORD RRouterInterfaceDelete( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface ); DWORD RRouterInterfaceTransportRemove( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId ); DWORD RRouterInterfaceTransportAdd( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId, [in] PDIM_INTERFACE_CONTAINER pInfoStruct ); DWORD RRouterInterfaceTransportGetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId, [in,out] PDIM_INTERFACE_CONTAINER pInfoStruct ); DWORD RRouterInterfaceTransportSetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId, [in] PDIM_INTERFACE_CONTAINER pInfoStruct ); DWORD RRouterInterfaceEnum ( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in,out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD dwPreferedMaximumLength, [out] LPDWORD lpdwEntriesRead, [out] LPDWORD lpdwTotalEntries, [in,out,unique] LPDWORD lpdwResumeHandle ); DWORD RRouterInterfaceConnect( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] ULONG_PTR hEvent, [in] DWORD fBlocking, [in] DWORD dwCallersProcessId ); DWORD RRouterInterfaceDisconnect( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface ); DWORD RRouterInterfaceUpdateRoutes( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId, [in] ULONG_PTR hEvent, [in] DWORD dwClientProcessId ); DWORD RRouterInterfaceQueryUpdateResult( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in] DWORD dwTransportId, [out] LPDWORD pUpdateResult ); DWORD RRouterInterfaceUpdatePhonebookInfo( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface ); DWORD RMIBEntryCreate( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBEntryDelete( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBEntrySet( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBEntryGet( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in,out] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBEntryGetFirst( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in,out] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBEntryGetNext( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in,out] PDIM_MIB_ENTRY_CONTAINER pInfoStuct ); DWORD RMIBGetTrapInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in, out] PDIM_MIB_ENTRY_CONTAINER pInfoStruct ); DWORD RMIBSetTrapInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwPid, [in] DWORD dwRoutingPid, [in] ULONG_PTR hEvent, [in] DWORD dwClientProcessId, [in, out] PDIM_MIB_ENTRY_CONTAINER pInfoStruct ); DWORD RRasAdminConnectionNotification( [in] DIM_HANDLE hDimServer, [in] DWORD fRegister, [in] DWORD dwClientProcessId, [in] ULONG_PTR hEventNotification ); DWORD RRasAdminSendUserMessage( [in] DIM_HANDLE hDimServer, [in] DWORD hDimConnection, [in,string] LPWSTR lpwszMessage ); DWORD RRouterDeviceEnum( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in, out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in, out] LPDWORD lpdwTotalEntries ); DWORD RRouterInterfaceTransportCreate( [in] DIM_HANDLE hDimServer, [in] DWORD dwTransportId, [in, string] LPWSTR lpwsTransportName, [in] PDIM_INTERFACE_CONTAINER pInfoStruct, [in, string] LPWSTR lpwsDLLPath ); DWORD RRouterInterfaceDeviceGetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in, out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD dwIndex, [in] DWORD hInterface ); DWORD RRouterInterfaceDeviceSetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD dwIndex, [in] DWORD hInterface ); DWORD RRouterInterfaceSetCredentialsEx( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD hInterface ); DWORD RRouterInterfaceGetCredentialsEx( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in,out] PDIM_INFORMATION_CONTAINER pInfoStruct, [in] DWORD hInterface ); DWORD RRasAdminConnectionRemoveQuarantine( [in] DIM_HANDLE hDimServer, [in] DWORD hRasConnection, [in] BOOL fIsIpAddress ); DWORD RMprAdminServerSetInfo( [in] DIM_HANDLE hDimServer, [in] DWORD dwLevel, [in] PDIM_INFORMATION_CONTAINER pInfoStruct ); DWORD RMprAdminServerGetInfoEx( [in] DIM_HANDLE hDimServer, [in, out] PMPR_SERVER_EX_IDL pServerConfig ); DWORD RRasAdminConnectionEnumEx ( [in] DIM_HANDLE hDimServer, [in] PMPRAPI_OBJECT_HEADER_IDL objectHeader, [in] DWORD dwPreferedMaxLen, [out] LPDWORD lpdwEntriesRead, [out] LPDWORD lpdNumTotalElements, [out, size_is(,*lpdwEntriesRead)] PRAS_CONNECTION_EX_IDL *pRasConections, [in,out,unique] LPDWORD lpdwResumeHandle); DWORD RRasAdminConnectionGetInfoEx ( [in] DIM_HANDLE hDimServer, [in] DWORD hDimConnection, [in] PMPRAPI_OBJECT_HEADER_IDL objectHeader, [out] PRAS_CONNECTION_EX_IDL pRasConnection ); DWORD RMprAdminServerSetInfoEx ( [in] DIM_HANDLE hDimServer, [in] PMPR_SERVER_SET_CONFIG_EX_IDL pServerConfig); DWORD RRasAdminUpdateConnection( [in] DIM_HANDLE hDimServer, [in] DWORD hDimConnection, [in] PRAS_UPDATE_CONNECTION_IDL pServerConfig); DWORD RRouterInterfaceSetCredentialsLocal( [in] DIM_HANDLE hDimServer, [in,string] LPWSTR lpwsInterfaceName, [in,string] LPWSTR lpwsUserName, [in,string] LPWSTR lpwsDomainName, [in,string] LPWSTR lpwsPassword); DWORD RRouterInterfaceGetCredentialsLocal( [in] DIM_HANDLE hDimServer, [in,string] LPWSTR lpwsInterfaceName, [out] [string] LPWSTR *lpwsUserName, [out] [string] LPWSTR *lpwsDomainName, [out] [string] LPWSTR *lpwsPassword); DWORD RRouterInterfaceGetCustomInfoEx( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in,out] PMPR_IF_CUSTOMINFOEX_IDL pIfCustomConfig ); DWORD RRouterInterfaceSetCustomInfoEx( [in] DIM_HANDLE hDimServer, [in] DWORD hInterface, [in,out] PMPR_IF_CUSTOMINFOEX_IDL pIfCustomConfig ); } [ uuid(20610036-fa22-11cf-9823-00a0c911e5df), version(1.0) ] interface rasrpc { void Opnum0NotUsedOnWire(void); void Opnum1NotUsedOnWire(void); void Opnum2NotUsedOnWire(void); void Opnum3NotUsedOnWire(void); void Opnum4NotUsedOnWire(void); DWORD RasRpcDeleteEntry( [in] handle_t h, [in, string] LPWSTR lpszPhonebook, [in, string] LPWSTR lpszEntry ); void Opnum6NotUsedOnWire(void); void Opnum7NotUsedOnWire(void); void Opnum8NotUsedOnWire(void); DWORD RasRpcGetUserPreferences( [in] handle_t h, [in, out] LPRASRPC_PBUSER pUser, [in] DWORD dwMode ); DWORD RasRpcSetUserPreferences( [in] handle_t h, [in] LPRASRPC_PBUSER pUser, [in] DWORD dwMode ); UINT RasRpcGetSystemDirectory( [in] handle_t h, [in, out, string, size_is(uSize)] LPWSTR lpBuffer, [in, range(0, RASRPC_MAX_PATH)] UINT uSize ); DWORD RasRpcSubmitRequest ( [in] handle_t h, [in, out, unique, size_is(dwcbBufSize)] PBYTE pReqBuffer, [in] DWORD dwcbBufSize ); void Opnum13NotUsedOnWire(void); DWORD RasRpcGetInstalledProtocolsEx( [in] handle_t h, [in] BOOL fRouter, [in] BOOL fRasCli, [in] BOOL fRasSrv ); DWORD RasRpcGetVersion( [in] handle_t h, [in, out, ref] LPDWORD pdwVersion ); void Opnum16NotUsedOnWire(void); } [ uuid(66a2db1b-d706-11d0-a37b-00c04fc9da04), helpstring("IRemoteNetworkConfig Interface"), pointer_default(unique) ] interface IRemoteNetworkConfig : IUnknown { HRESULT UpgradeRouterConfig(); HRESULT SetUserConfig( [in] LPCOLESTR pszService, [in] LPCOLESTR pszNewGroup ); }; [ uuid(66a2db20-d706-11d0-a37b-00c04fc9da04), helpstring("IRemoteRouterRestart Interface"), pointer_default(unique) ] interface IRemoteRouterRestart : IUnknown { HRESULT RestartRouter( [in] DWORD dwFlags ); }; [ uuid(66a2db21-d706-11d0-a37b-00c04fc9da04), helpstring("IRemoteSetDnsConfig Interface"), pointer_default(unique) ] interface IRemoteSetDnsConfig : IUnknown { HRESULT SetDnsConfig( [in] DWORD dwConfigId, [in] DWORD dwNewValue ); }; [ uuid(66a2db22-d706-11d0-a37b-00c04fc9da04), helpstring("IRemoteICFICSConfig Interface"), pointer_default(unique) ] interface IRemoteICFICSConfig : IUnknown { //The following methods are for determining if // ICF/ICS is enabled on any connection HRESULT GetIcfEnabled( [out] BOOL * status ); HRESULT GetIcsEnabled( [out] BOOL * status ); }; [ uuid(67e08fc2-2984-4b62-b92e-fc1aae64bbbb), helpstring("IRemoteStringIdConfig Interface"), pointer_default(unique) ] interface IRemoteStringIdConfig : IUnknown { HRESULT GetStringFromId([in] UINT stringId, [out] BSTR * pBstrName); }; [ uuid(6139d8a4-e508-4ebb-bac7-d7f275145897), helpstring("IRemoteIPV6Config Interface"), pointer_default(unique) ] interface IRemoteIPV6Config : IUnknown { typedef struct tagIPV6Address { unsigned char bytes[16]; }IPV6Address; HRESULT GetAddressList( [in, string] wchar_t *pszInterfaceName, [out] DWORD *pdwNumAddresses, [out, size_is(, *pdwNumAddresses)] IPV6Address **ppIPV6AddressList, [in] DWORD dwIfIndex ); }; [ uuid(5ff9bdf6-bd91-4d8b-a614-d6317acc8dd8), helpstring("IRemoteSstpCertCheck Interface"), pointer_default(unique) ] interface IRemoteSstpCertCheck : IUnknown { #define PCWSTR [string] const wchar_t* HRESULT CheckIfCertificateAllowedRR( [in] PCWSTR adminCertName, [in, out] PSSTP_CERT_INFO_1 certSha1, [in, out] PSSTP_CERT_INFO_1 certSha256 ); };