1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef _RASSAPI_H_
7 #define _RASSAPI_H_
8 
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12 
13 #if 1
14 
15 #ifndef UNLEN
16 #include <lmcons.h>
17 #endif
18 
19 #define RASSAPI_MAX_PHONENUMBER_SIZE 128
20 #define RASSAPI_MAX_MEDIA_NAME 16
21 #define RASSAPI_MAX_PORT_NAME 16
22 #define RASSAPI_MAX_DEVICE_NAME 128
23 #define RASSAPI_MAX_DEVICETYPE_NAME 16
24 #define RASSAPI_MAX_PARAM_KEY_SIZE 32
25 
26 #define RASPRIV_NoCallback 0x01
27 #define RASPRIV_AdminSetCallback 0x02
28 #define RASPRIV_CallerSetCallback 0x04
29 #define RASPRIV_DialinPrivilege 0x08
30 
31 #define RASPRIV_CallbackType (RASPRIV_AdminSetCallback | RASPRIV_CallerSetCallback | RASPRIV_NoCallback)
32 
33 #define RAS_MODEM_OPERATIONAL 1
34 #define RAS_MODEM_NOT_RESPONDING 2
35 #define RAS_MODEM_HARDWARE_FAILURE 3
36 #define RAS_MODEM_INCORRECT_RESPONSE 4
37 #define RAS_MODEM_UNKNOWN 5
38 
39 #define RAS_PORT_NON_OPERATIONAL 1
40 #define RAS_PORT_DISCONNECTED 2
41 #define RAS_PORT_CALLING_BACK 3
42 #define RAS_PORT_LISTENING 4
43 #define RAS_PORT_AUTHENTICATING 5
44 #define RAS_PORT_AUTHENTICATED 6
45 #define RAS_PORT_INITIALIZING 7
46 
47   enum RAS_PARAMS_FORMAT {
48     ParamNumber = 0,ParamString = 1
49   };
50   typedef enum RAS_PARAMS_FORMAT RAS_PARAMS_FORMAT;
51 
52   union RAS_PARAMS_VALUE {
53     DWORD Number;
54     struct {
55       DWORD Length;
56       PCHAR Data;
57     } String;
58   };
59   typedef union RAS_PARAMS_VALUE RAS_PARAMS_VALUE;
60 
61   struct RAS_PARAMETERS {
62     CHAR P_Key[RASSAPI_MAX_PARAM_KEY_SIZE];
63     RAS_PARAMS_FORMAT P_Type;
64     BYTE P_Attributes;
65     RAS_PARAMS_VALUE P_Value;
66   };
67   typedef struct RAS_PARAMETERS RAS_PARAMETERS;
68 
69   typedef struct _RAS_USER_0 {
70     BYTE bfPrivilege;
71     WCHAR szPhoneNumber[RASSAPI_MAX_PHONENUMBER_SIZE + 1];
72   } RAS_USER_0,*PRAS_USER_0;
73 
74   typedef struct _RAS_PORT_0 {
75     WCHAR wszPortName[RASSAPI_MAX_PORT_NAME];
76     WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME];
77     WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME];
78     WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME];
79     DWORD reserved;
80     DWORD Flags;
81     WCHAR wszUserName[UNLEN + 1];
82     WCHAR wszComputer[NETBIOS_NAME_LEN];
83     DWORD dwStartSessionTime;
84     WCHAR wszLogonDomain[DNLEN + 1];
85     WINBOOL fAdvancedServer;
86   } RAS_PORT_0,*PRAS_PORT_0;
87 
88 #define MEDIA_UNKNOWN 0
89 #define MEDIA_SERIAL 1
90 #define MEDIA_RAS10_SERIAL 2
91 #define MEDIA_X25 3
92 #define MEDIA_ISDN 4
93 
94 #define USER_AUTHENTICATED 0x0001
95 #define MESSENGER_PRESENT 0x0002
96 #define PPP_CLIENT 0x0004
97 #define GATEWAY_ACTIVE 0x0008
98 #define REMOTE_LISTEN 0x0010
99 #define PORT_MULTILINKED 0x0020
100 
101   typedef ULONG IPADDR;
102 
103 #define RAS_IPADDRESSLEN 15
104 #define RAS_IPXADDRESSLEN 22
105 #define RAS_ATADDRESSLEN 32
106 
107   typedef struct _RAS_PPP_NBFCP_RESULT {
108     DWORD dwError;
109     DWORD dwNetBiosError;
110     CHAR szName[NETBIOS_NAME_LEN + 1];
111     WCHAR wszWksta[NETBIOS_NAME_LEN + 1];
112   } RAS_PPP_NBFCP_RESULT;
113 
114   typedef struct _RAS_PPP_IPCP_RESULT {
115     DWORD dwError;
116     WCHAR wszAddress[RAS_IPADDRESSLEN + 1];
117   } RAS_PPP_IPCP_RESULT;
118 
119   typedef struct _RAS_PPP_IPXCP_RESULT {
120     DWORD dwError;
121     WCHAR wszAddress[RAS_IPXADDRESSLEN + 1];
122   } RAS_PPP_IPXCP_RESULT;
123 
124   typedef struct _RAS_PPP_ATCP_RESULT {
125     DWORD dwError;
126     WCHAR wszAddress[RAS_ATADDRESSLEN + 1];
127   } RAS_PPP_ATCP_RESULT;
128 
129   typedef struct _RAS_PPP_PROJECTION_RESULT {
130     RAS_PPP_NBFCP_RESULT nbf;
131     RAS_PPP_IPCP_RESULT ip;
132     RAS_PPP_IPXCP_RESULT ipx;
133     RAS_PPP_ATCP_RESULT at;
134   } RAS_PPP_PROJECTION_RESULT;
135 
136   typedef struct _RAS_PORT_1 {
137     RAS_PORT_0 rasport0;
138     DWORD LineCondition;
139     DWORD HardwareCondition;
140     DWORD LineSpeed;
141     WORD NumStatistics;
142     WORD NumMediaParms;
143     DWORD SizeMediaParms;
144     RAS_PPP_PROJECTION_RESULT ProjResult;
145   } RAS_PORT_1,*PRAS_PORT_1;
146 
147   typedef struct _RAS_PORT_STATISTICS {
148     DWORD dwBytesXmited;
149     DWORD dwBytesRcved;
150     DWORD dwFramesXmited;
151     DWORD dwFramesRcved;
152     DWORD dwCrcErr;
153     DWORD dwTimeoutErr;
154     DWORD dwAlignmentErr;
155     DWORD dwHardwareOverrunErr;
156     DWORD dwFramingErr;
157     DWORD dwBufferOverrunErr;
158     DWORD dwBytesXmitedUncompressed;
159     DWORD dwBytesRcvedUncompressed;
160     DWORD dwBytesXmitedCompressed;
161     DWORD dwBytesRcvedCompressed;
162     DWORD dwPortBytesXmited;
163     DWORD dwPortBytesRcved;
164     DWORD dwPortFramesXmited;
165     DWORD dwPortFramesRcved;
166     DWORD dwPortCrcErr;
167     DWORD dwPortTimeoutErr;
168     DWORD dwPortAlignmentErr;
169     DWORD dwPortHardwareOverrunErr;
170     DWORD dwPortFramingErr;
171     DWORD dwPortBufferOverrunErr;
172     DWORD dwPortBytesXmitedUncompressed;
173     DWORD dwPortBytesRcvedUncompressed;
174     DWORD dwPortBytesXmitedCompressed;
175     DWORD dwPortBytesRcvedCompressed;
176   } RAS_PORT_STATISTICS,*PRAS_PORT_STATISTICS;
177 
178 #define RASDOWNLEVEL 10
179 #define RASADMIN_35 35
180 #define RASADMIN_CURRENT 40
181 
182   typedef struct _RAS_SERVER_0 {
183     WORD TotalPorts;
184     WORD PortsInUse;
185     DWORD RasVersion;
186   } RAS_SERVER_0,*PRAS_SERVER_0;
187 
188   DWORD WINAPI RasAdminServerGetInfo(const WCHAR *lpszServer,PRAS_SERVER_0 pRasServer0);
189   DWORD WINAPI RasAdminGetUserAccountServer(const WCHAR *lpszDomain,const WCHAR *lpszServer,LPWSTR lpszUserAccountServer);
190   DWORD WINAPI RasAdminUserGetInfo(const WCHAR *lpszUserAccountServer,const WCHAR *lpszUser,PRAS_USER_0 pRasUser0);
191   DWORD WINAPI RasAdminUserSetInfo(const WCHAR *lpszUserAccountServer,const WCHAR *lpszUser,const PRAS_USER_0 pRasUser0);
192   DWORD WINAPI RasAdminPortEnum(const WCHAR *lpszServer,PRAS_PORT_0 *ppRasPort0,WORD *pcEntriesRead);
193   DWORD WINAPI RasAdminPortGetInfo(const WCHAR *lpszServer,const WCHAR *lpszPort,RAS_PORT_1 *pRasPort1,RAS_PORT_STATISTICS *pRasStats,RAS_PARAMETERS **ppRasParams);
194   DWORD WINAPI RasAdminPortClearStatistics(const WCHAR *lpszServer,const WCHAR *lpszPort);
195   DWORD WINAPI RasAdminPortDisconnect(const WCHAR *lpszServer,const WCHAR *lpszPort);
196   DWORD WINAPI RasAdminFreeBuffer(PVOID Pointer);
197   WINBOOL WINAPI RasAdminAcceptNewConnection (RAS_PORT_1 *pRasPort1,RAS_PORT_STATISTICS *pRasStats,RAS_PARAMETERS *pRasParams);
198   VOID WINAPI RasAdminConnectionHangupNotification (RAS_PORT_1 *pRasPort1,RAS_PORT_STATISTICS *pRasStats,RAS_PARAMETERS *pRasParams);
199   DWORD WINAPI RasAdminGetIpAddressForUser (WCHAR *lpszUserName,WCHAR *lpszPortName,IPADDR *pipAddress,WINBOOL *bNotifyRelease);
200   VOID WINAPI RasAdminReleaseIpAddress (WCHAR *lpszUserName,WCHAR *lpszPortName,IPADDR *pipAddress);
201 
202 #endif
203 
204 #ifdef __cplusplus
205 }
206 #endif
207 #endif
208