1 /** 2 * @file rassapi.h 3 * Copyright 2012, 2013 MinGW.org project 4 * 5 * Permission is hereby granted, free of charge, to any person obtaining a 6 * copy of this software and associated documentation files (the "Software"), 7 * to deal in the Software without restriction, including without limitation 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 9 * and/or sell copies of the Software, and to permit persons to whom the 10 * Software is furnished to do so, subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice (including the next 13 * paragraph) shall be included in all copies or substantial portions of the 14 * Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22 * DEALINGS IN THE SOFTWARE. 23 */ 24 #ifndef _RASSAPI_H 25 #define _RASSAPI_H 26 #pragma GCC system_header 27 #include <_mingw.h> 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #ifndef UNLEN 34 #include <lmcons.h> 35 #endif 36 37 #define RASSAPI_MAX_PHONENUMBER_SIZE 128 38 #define RASSAPI_MAX_MEDIA_NAME 16 39 #define RASSAPI_MAX_PORT_NAME 16 40 #define RASSAPI_MAX_DEVICE_NAME 128 41 #define RASSAPI_MAX_DEVICETYPE_NAME 16 42 #define RASSAPI_MAX_PARAM_KEY_SIZE 32 43 #define RASPRIV_NoCallback 0x01 44 #define RASPRIV_AdminSetCallback 0x02 45 #define RASPRIV_CallerSetCallback 0x04 46 #define RASPRIV_DialinPrivilege 0x08 47 #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback \ 48 | RASPRIV_CallerSetCallback \ 49 | RASPRIV_NoCallback) 50 #define RAS_MODEM_OPERATIONAL 1 51 #define RAS_MODEM_NOT_RESPONDING 2 52 #define RAS_MODEM_HARDWARE_FAILURE 3 53 #define RAS_MODEM_INCORRECT_RESPONSE 4 54 #define RAS_MODEM_UNKNOWN 5 55 #define RAS_PORT_NON_OPERATIONAL 1 56 #define RAS_PORT_DISCONNECTED 2 57 #define RAS_PORT_CALLING_BACK 3 58 #define RAS_PORT_LISTENING 4 59 #define RAS_PORT_AUTHENTICATING 5 60 #define RAS_PORT_AUTHENTICATED 6 61 #define RAS_PORT_INITIALIZING 7 62 #define MEDIA_UNKNOWN 0 63 #define MEDIA_SERIAL 1 64 #define MEDIA_RAS10_SERIAL 2 65 #define MEDIA_X25 3 66 #define MEDIA_ISDN 4 67 #define USER_AUTHENTICATED 0x0001 68 #define MESSENGER_PRESENT 0x0002 69 #define PPP_CLIENT 0x0004 70 #define GATEWAY_ACTIVE 0x0008 71 #define REMOTE_LISTEN 0x0010 72 #define PORT_MULTILINKED 0x0020 73 #define RAS_IPADDRESSLEN 15 74 #define RAS_IPXADDRESSLEN 22 75 #define RAS_ATADDRESSLEN 32 76 #define RASDOWNLEVEL 10 77 #define RASADMIN_35 35 78 #define RASADMIN_CURRENT 40 79 80 typedef ULONG IPADDR; 81 typedef enum _RAS_PARAMS_FORMAT { 82 ParamNumber = 0, 83 ParamString = 1 84 } RAS_PARAMS_FORMAT; 85 typedef union RAS_PARAMS_VALUE { 86 DWORD Number; 87 struct { 88 DWORD Length; 89 PCHAR Data; 90 } String; 91 } RAS_PARAMS_VALUE; 92 typedef struct RAS_PARAMETERS { 93 CHAR P_Key [RASSAPI_MAX_PARAM_KEY_SIZE]; 94 RAS_PARAMS_FORMAT P_Type; 95 BYTE P_Attributes; 96 RAS_PARAMS_VALUE P_Value; 97 } RAS_PARAMETERS; 98 typedef struct _RAS_USER_0 { 99 BYTE bfPrivilege; 100 WCHAR szPhoneNumber[RASSAPI_MAX_PHONENUMBER_SIZE + 1]; 101 } RAS_USER_0, *PRAS_USER_0; 102 typedef struct _RAS_PORT_0 { 103 WCHAR wszPortName[RASSAPI_MAX_PORT_NAME]; 104 WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME]; 105 WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME]; 106 WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME]; 107 DWORD reserved; 108 DWORD Flags; 109 WCHAR wszUserName[UNLEN + 1]; 110 WCHAR wszComputer[NETBIOS_NAME_LEN]; 111 DWORD dwStartSessionTime; /* seconds from 1/1/1970 */ 112 WCHAR wszLogonDomain[DNLEN + 1]; 113 BOOL fAdvancedServer; 114 } RAS_PORT_0, *PRAS_PORT_0; 115 typedef struct _RAS_PPP_NBFCP_RESULT { 116 DWORD dwError; 117 DWORD dwNetBiosError; 118 CHAR szName[ NETBIOS_NAME_LEN + 1 ]; 119 WCHAR wszWksta[ NETBIOS_NAME_LEN + 1 ]; 120 } RAS_PPP_NBFCP_RESULT; 121 typedef struct _RAS_PPP_IPCP_RESULT{ 122 DWORD dwError; 123 WCHAR wszAddress[ RAS_IPADDRESSLEN + 1 ]; 124 } RAS_PPP_IPCP_RESULT; 125 typedef struct _RAS_PPP_IPXCP_RESULT { 126 DWORD dwError; 127 WCHAR wszAddress[ RAS_IPXADDRESSLEN + 1 ]; 128 } RAS_PPP_IPXCP_RESULT; 129 typedef struct _RAS_PPP_ATCP_RESULT { 130 DWORD dwError; 131 WCHAR wszAddress[ RAS_ATADDRESSLEN + 1 ]; 132 } RAS_PPP_ATCP_RESULT; 133 typedef struct _RAS_PPP_PROJECTION_RESULT { 134 RAS_PPP_NBFCP_RESULT nbf; 135 RAS_PPP_IPCP_RESULT ip; 136 RAS_PPP_IPXCP_RESULT ipx; 137 RAS_PPP_ATCP_RESULT at; 138 } RAS_PPP_PROJECTION_RESULT; 139 typedef struct _RAS_PORT_1{ 140 RAS_PORT_0 rasport0; 141 DWORD LineCondition; 142 DWORD HardwareCondition; 143 DWORD LineSpeed; 144 WORD NumStatistics; 145 WORD NumMediaParms; 146 DWORD SizeMediaParms; 147 RAS_PPP_PROJECTION_RESULT ProjResult; 148 } RAS_PORT_1, *PRAS_PORT_1; 149 typedef struct _RAS_PORT_STATISTICS { 150 DWORD dwBytesXmited; 151 DWORD dwBytesRcved; 152 DWORD dwFramesXmited; 153 DWORD dwFramesRcved; 154 DWORD dwCrcErr; 155 DWORD dwTimeoutErr; 156 DWORD dwAlignmentErr; 157 DWORD dwHardwareOverrunErr; 158 DWORD dwFramingErr; 159 DWORD dwBufferOverrunErr; 160 DWORD dwBytesXmitedUncompressed; 161 DWORD dwBytesRcvedUncompressed; 162 DWORD dwBytesXmitedCompressed; 163 DWORD dwBytesRcvedCompressed; 164 DWORD dwPortBytesXmited; 165 DWORD dwPortBytesRcved; 166 DWORD dwPortFramesXmited; 167 DWORD dwPortFramesRcved; 168 DWORD dwPortCrcErr; 169 DWORD dwPortTimeoutErr; 170 DWORD dwPortAlignmentErr; 171 DWORD dwPortHardwareOverrunErr; 172 DWORD dwPortFramingErr; 173 DWORD dwPortBufferOverrunErr; 174 DWORD dwPortBytesXmitedUncompressed; 175 DWORD dwPortBytesRcvedUncompressed; 176 DWORD dwPortBytesXmitedCompressed; 177 DWORD dwPortBytesRcvedCompressed; 178 } RAS_PORT_STATISTICS, *PRAS_PORT_STATISTICS; 179 typedef struct _RAS_SERVER_0 { 180 WORD TotalPorts; 181 WORD PortsInUse; 182 DWORD RasVersion; 183 } RAS_SERVER_0, *PRAS_SERVER_0; 184 185 DWORD APIENTRY RasAdminServerGetInfo( const WCHAR*, PRAS_SERVER_0 ); 186 DWORD APIENTRY RasAdminGetUserAccountServer( const WCHAR*, const WCHAR*, LPWSTR ); 187 DWORD APIENTRY RasAdminUserGetInfo( const WCHAR*, const WCHAR*, PRAS_USER_0 ); 188 DWORD APIENTRY RasAdminUserSetInfo( const WCHAR*, const WCHAR*, const PRAS_USER_0 ); 189 DWORD APIENTRY RasAdminPortEnum( const WCHAR*, PRAS_PORT_0*, WORD*); 190 DWORD APIENTRY RasAdminPortGetInfo( const WCHAR*, const WCHAR*, RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS** ); 191 DWORD APIENTRY RasAdminPortClearStatistics( const WCHAR*, const WCHAR* ); 192 DWORD APIENTRY RasAdminPortDisconnect( const WCHAR*, const WCHAR* ); 193 DWORD APIENTRY RasAdminFreeBuffer(PVOID); 194 DWORD APIENTRY RasAdminGetErrorString( UINT, WCHAR*, DWORD ); 195 BOOL APIENTRY RasAdminAcceptNewConnection( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* ); 196 VOID APIENTRY RasAdminConnectionHangupNotification ( RAS_PORT_1*, RAS_PORT_STATISTICS*, RAS_PARAMETERS* ); 197 DWORD APIENTRY RasAdminGetIpAddressForUser ( WCHAR*, WCHAR*, IPADDR*, BOOL*); 198 VOID APIENTRY RasAdminReleaseIpAddress ( WCHAR*, WCHAR*,IPADDR* ); 199 DWORD APIENTRY RasAdminGetUserParms( WCHAR*, PRAS_USER_0 ); 200 DWORD APIENTRY RasAdminSetUserParms( WCHAR*, DWORD, PRAS_USER_0 ); 201 202 #ifdef __cplusplus 203 } 204 #endif 205 206 #endif /* _RASSAPI_H */ 207