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
10extern "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