/* File mprapip.h Declarations for private mprapi.dll functions. 6/24/98 */ #ifndef __ROUTING_MPRADMINP_H__ #define __ROUTING_MPRADMINP_H__ #include #ifdef __cplusplus extern "C" { #endif // // Definitions of flags to be used with // MprAdminUserReadProfFlags/MprAdminUserWriteProfFlags // #define MPR_USER_PROF_FLAG_SECURE 0x1 #define MPR_USER_PROF_FLAG_UNDETERMINED 0x2 // // Only valid for MprAdminUserWriteProfFlags // #define MPR_USER_PROF_FLAG_FORCE_STRONG_ENCRYPTION 0x4 #define MPR_USER_PROF_FLAG_FORCE_ENCRYPTION 0x8 // // Definition for new information to be reported // through user parms // #define RASPRIV_DialinPolicy 0x10 // // Defines the type of access a domain can give // // See MprDomainSetAccess, MprDomainQueryAccess // #define MPRFLAG_DOMAIN_NT4_SERVERS 0x1 #define MPRFLAG_DOMAIN_W2K_IN_NT4_DOMAINS 0x2 #define MPRFLAG_PORT_Dialin 0x1 // set ports to dialin usage #define MPRFLAG_PORT_Router 0x2 // set ports to router usage #define MPRFLAG_PORT_NonVpnDialin 0x4 // set non-vpn ports to dialin // // Flags that govern the behavior of MprPortSetUsage // #define MPRFLAG_PORT_Dialin 0x1 #define MPRFLAG_PORT_Router 0x2 // // Connects to a user server // DWORD WINAPI MprAdminUserServerConnect ( IN PWCHAR pszMachine, IN BOOL bLocal, OUT PHANDLE phUserServer); // // Disconnects from a user server // DWORD WINAPI MprAdminUserServerDisconnect ( IN HANDLE hUserServer); // // Opens the given user on the given user server // DWORD WINAPI MprAdminUserOpen ( IN HANDLE hUserServer, IN PWCHAR pszUser, OUT PHANDLE phUser); // // Closes the given user // DWORD WINAPI MprAdminUserClose ( IN HANDLE hUser); // // Reads in user ras-specific values // DWORD WINAPI MprAdminUserRead ( IN HANDLE hUser, IN DWORD dwLevel, IN const LPBYTE pRasUser); // // Writes out user ras-specific values // DWORD WINAPI MprAdminUserWrite ( IN HANDLE hUser, IN DWORD dwLevel, IN const LPBYTE pRasUser); // // Reads default profile flags // DWORD WINAPI MprAdminUserReadProfFlags( IN HANDLE hUserServer, OUT LPDWORD lpdwFlags); // // Writes default profile flags // DWORD WINAPI MprAdminUserWriteProfFlags( IN HANDLE hUserServer, IN DWORD dwFlags); // // Upgrades users from previous OS version to current. // DWORD APIENTRY MprAdminUpgradeUsers( IN PWCHAR pszServer, IN BOOL bLocal); // // Registers/Unregisters a ras server in a domain. // Must be called from context of a domain admin. // DWORD WINAPI MprDomainRegisterRasServer ( IN PWCHAR pszDomain, IN PWCHAR pszMachine, IN BOOL bEnable); DWORD WINAPI MprAdminEstablishDomainRasServer ( IN PWCHAR pszDomain, IN PWCHAR pszMachine, IN BOOL bEnable); DWORD WINAPI MprAdminIsDomainRasServer ( IN PWCHAR pszDomain, IN PWCHAR pszMachine, OUT PBOOL pbIsRasServer); // // Determines whether the given machine is registered // in the given domain. // DWORD WINAPI MprDomainQueryRasServer ( IN PWCHAR pszDomain, IN PWCHAR pszMachine, OUT PBOOL pbIsRasServer); // // Modifies the given domain with so that it yeilds the given access. // // See MPR_DOMAIN_ACCESS_* values for the flags // DWORD WINAPI MprDomainSetAccess( IN PWCHAR pszDomain, IN DWORD dwAccessFlags); // // Discovers what if any access is yeilded by the given domain. // // See MPR_DOMAIN_ACCESS_* values for the flags // DWORD WINAPI MprDomainQueryAccess( IN PWCHAR pszDomain, IN LPDWORD lpdwAccessFlags); // // Sets all port usages to the given mode. See MPRFLAG_PORT_*. // The naming convention here is intentionally private. Eventually, // there should be MprAdmin and MprConfig api's to set port usage. // DWORD APIENTRY MprPortSetUsage( IN DWORD dwModes); // // Internal credentials functions shared by mprapi.dll and rasppp.dll // DWORD APIENTRY MprAdminInterfaceSetCredentialsInternal( IN LPWSTR lpwsServer OPTIONAL, IN LPWSTR lpwsInterfaceName, IN LPWSTR lpwsUserName OPTIONAL, IN LPWSTR lpwsDomainName OPTIONAL, IN LPWSTR lpwsPassword OPTIONAL ); DWORD APIENTRY MprAdminInterfaceGetCredentialsInternal( IN LPWSTR lpwsServer OPTIONAL, IN LPWSTR lpwsInterfaceName, IN LPWSTR lpwsUserName OPTIONAL, IN LPWSTR lpwsPassword OPTIONAL, IN LPWSTR lpwsDomainName OPTIONAL ); // // Utilities // DWORD MprUtilGetSizeOfMultiSz( IN LPWSTR lpwsMultiSz); // // Internal on-the-wire representations of the structures exposed // in mprapi.h // typedef struct _MPRI_INTERFACE_0 { IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; OUT DWORD dwInterface; IN OUT BOOL fEnabled; IN OUT ROUTER_INTERFACE_TYPE dwIfType; OUT ROUTER_CONNECTION_STATE dwConnectionState; OUT DWORD fUnReachabilityReasons; OUT DWORD dwLastError; } MPRI_INTERFACE_0, *PMPRI_INTERFACE_0; typedef struct _MPRI_INTERFACE_1 { IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; OUT DWORD dwInterface; IN OUT BOOL fEnabled; IN OUT ROUTER_INTERFACE_TYPE dwIfType; OUT ROUTER_CONNECTION_STATE dwConnectionState; OUT DWORD fUnReachabilityReasons; OUT DWORD dwLastError; OUT DWORD dwDialoutHoursRestrictionOffset; } MPRI_INTERFACE_1, *PMPRI_INTERFACE_1; typedef struct _MPRI_INTERFACE_2 { IN OUT WCHAR wszInterfaceName[MAX_INTERFACE_NAME_LEN+1]; OUT DWORD dwInterface; IN OUT BOOL fEnabled; IN OUT ROUTER_INTERFACE_TYPE dwIfType; OUT ROUTER_CONNECTION_STATE dwConnectionState; OUT DWORD fUnReachabilityReasons; OUT DWORD dwLastError; // // Demand dial-specific properties // DWORD dwfOptions; // // Location/phone number // WCHAR szLocalPhoneNumber[ RAS_MaxPhoneNumber + 1 ]; DWORD dwAlternatesOffset; // // PPP/Ip // DWORD ipaddr; DWORD ipaddrDns; DWORD ipaddrDnsAlt; DWORD ipaddrWins; DWORD ipaddrWinsAlt; // // NetProtocols // DWORD dwfNetProtocols; // // Device // WCHAR szDeviceType[ MPR_MaxDeviceType + 1 ]; WCHAR szDeviceName[ MPR_MaxDeviceName + 1 ]; // // X.25 // WCHAR szX25PadType[ MPR_MaxPadType + 1 ]; WCHAR szX25Address[ MPR_MaxX25Address + 1 ]; WCHAR szX25Facilities[ MPR_MaxFacilities + 1 ]; WCHAR szX25UserData[ MPR_MaxUserData + 1 ]; DWORD dwChannels; // // Multilink // DWORD dwSubEntries; DWORD dwDialMode; DWORD dwDialExtraPercent; DWORD dwDialExtraSampleSeconds; DWORD dwHangUpExtraPercent; DWORD dwHangUpExtraSampleSeconds; // // Idle timeout // DWORD dwIdleDisconnectSeconds; // // Entry Type // DWORD dwType; // // EncryptionType // DWORD dwEncryptionType; // // EAP information // DWORD dwCustomAuthKey; DWORD dwCustomAuthDataSize; DWORD dwCustomAuthDataOffset; // // Guid of the connection // GUID guidId; // // Vpn Strategy // DWORD dwVpnStrategy; } MPRI_INTERFACE_2, *PMPRI_INTERFACE_2; typedef struct _RASI_PORT_0 { OUT DWORD dwPort; OUT DWORD dwConnection; OUT RAS_PORT_CONDITION dwPortCondition; OUT DWORD dwTotalNumberOfCalls; OUT DWORD dwConnectDuration; // In seconds OUT WCHAR wszPortName[ MAX_PORT_NAME + 1 ]; OUT WCHAR wszMediaName[ MAX_MEDIA_NAME + 1 ]; OUT WCHAR wszDeviceName[ MAX_DEVICE_NAME + 1 ]; OUT WCHAR wszDeviceType[ MAX_DEVICETYPE_NAME + 1 ]; } RASI_PORT_0, *PRASI_PORT_0; typedef struct _RASI_PORT_1 { OUT DWORD dwPort; OUT DWORD dwConnection; OUT RAS_HARDWARE_CONDITION dwHardwareCondition; OUT DWORD dwLineSpeed; // in bits/second OUT DWORD dwBytesXmited; OUT DWORD dwBytesRcved; OUT DWORD dwFramesXmited; OUT DWORD dwFramesRcved; OUT DWORD dwCrcErr; OUT DWORD dwTimeoutErr; OUT DWORD dwAlignmentErr; OUT DWORD dwHardwareOverrunErr; OUT DWORD dwFramingErr; OUT DWORD dwBufferOverrunErr; OUT DWORD dwCompressionRatioIn; OUT DWORD dwCompressionRatioOut; } RASI_PORT_1, *PRASI_PORT_1; typedef struct _RASI_CONNECTION_0 { OUT DWORD dwConnection; OUT DWORD dwInterface; OUT DWORD dwConnectDuration; OUT ROUTER_INTERFACE_TYPE dwInterfaceType; OUT DWORD dwConnectionFlags; OUT WCHAR wszInterfaceName[ MAX_INTERFACE_NAME_LEN + 1 ]; OUT WCHAR wszUserName[ UNLEN + 1 ]; OUT WCHAR wszLogonDomain[ DNLEN + 1 ]; OUT WCHAR wszRemoteComputer[ NETBIOS_NAME_LEN + 1 ]; } RASI_CONNECTION_0, *PRASI_CONNECTION_0; typedef struct _RASI_CONNECTION_1 { OUT DWORD dwConnection; OUT DWORD dwInterface; OUT PPP_INFO PppInfo; OUT DWORD dwBytesXmited; OUT DWORD dwBytesRcved; OUT DWORD dwFramesXmited; OUT DWORD dwFramesRcved; OUT DWORD dwCrcErr; OUT DWORD dwTimeoutErr; OUT DWORD dwAlignmentErr; OUT DWORD dwHardwareOverrunErr; OUT DWORD dwFramingErr; OUT DWORD dwBufferOverrunErr; OUT DWORD dwCompressionRatioIn; OUT DWORD dwCompressionRatioOut; } RASI_CONNECTION_1, *PRASI_CONNECTION_1; typedef struct _RASI_CONNECTION_2 { OUT DWORD dwConnection; OUT WCHAR wszUserName[ UNLEN + 1 ]; OUT ROUTER_INTERFACE_TYPE dwInterfaceType; OUT GUID guid; OUT PPP_INFO_2 PppInfo2; } RASI_CONNECTION_2, *PRASI_CONNECTION_2; typedef struct _MPR_CREDENTIALSEXI { DWORD dwSize; DWORD dwOffset; BYTE bData[1]; } MPR_CREDENTIALSEXI, *PMPR_CREDENTIALSEXI; // // Thunking api's // typedef VOID (* MprThunk_Free_Func)( IN PVOID pvData); typedef PVOID (* MprThunk_Allocation_Func)( IN DWORD dwSize); DWORD MprThunkInterfaceFree( IN PVOID pvData, IN DWORD dwLevel); DWORD MprThunkInterface_WtoH( IN DWORD dwLevel, IN LPBYTE lpbBuffer, IN DWORD dwBufferSize, IN DWORD dwCount, IN MprThunk_Allocation_Func pAlloc, IN MprThunk_Free_Func pFree, OUT LPBYTE* lplpbBuffer); DWORD MprThunkInterface_HtoW( IN DWORD dwLevel, IN LPBYTE lpbBuffer, OUT LPBYTE* lplpbBuffer, OUT LPDWORD lpdwSize); DWORD MprThunkPort_WtoH( IN DWORD dwLevel, IN LPBYTE lpbBuffer, IN DWORD dwBufferSize, IN DWORD dwCount, IN MprThunk_Allocation_Func pAlloc, IN MprThunk_Free_Func pFree, OUT LPBYTE* lplpbBuffer); DWORD MprThunkConnection_WtoH( IN DWORD dwLevel, IN LPBYTE lpbBuffer, IN DWORD dwBufferSize, IN DWORD dwCount, IN MprThunk_Allocation_Func pAlloc, IN MprThunk_Free_Func pFree, OUT LPBYTE* lplpbBuffer); DWORD MprThunkCredentials_HtoW( IN DWORD dwLevel, IN BYTE *pBuffer, IN MprThunk_Allocation_Func pAlloc, OUT DWORD *pdwSize, OUT PBYTE *lplpbBuffer); DWORD MprThunkCredentials_WtoH( IN DWORD dwLevel, IN MPR_CREDENTIALSEXI *pBuffer, IN MprThunk_Allocation_Func pAlloc, OUT PBYTE *lplpbBuffer); PVOID MprThunkAlloc( IN DWORD dwSize); VOID MprThunkFree( IN PVOID pvData); #ifdef __cplusplus } // extern "C" #endif #endif