xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/rassapi.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_rassapi.d)
9  */
10 module core.sys.windows.rassapi;
11 version (Windows):
12 @system:
13 
14 import core.sys.windows.lmcons, core.sys.windows.windef;
15 
16 // FIXME: check types of constants
17 
18 enum size_t
19     RASSAPI_MAX_PHONENUMBER_SIZE = 128,
20     RASSAPI_MAX_MEDIA_NAME       =  16,
21     RASSAPI_MAX_PORT_NAME        =  16,
22     RASSAPI_MAX_DEVICE_NAME      = 128,
23     RASSAPI_MAX_DEVICETYPE_NAME  =  16,
24     RASSAPI_MAX_PARAM_KEY_SIZE   =  32;
25 
26 enum RASPRIV_NoCallback        = 0x01;
27 enum RASPRIV_AdminSetCallback  = 0x02;
28 enum RASPRIV_CallerSetCallback = 0x04;
29 enum RASPRIV_DialinPrivilege   = 0x08;
30 enum RASPRIV_CallbackType      = 0x07;
31 
32 enum {
33     RAS_MODEM_OPERATIONAL = 1,
34     RAS_MODEM_NOT_RESPONDING,
35     RAS_MODEM_HARDWARE_FAILURE,
36     RAS_MODEM_INCORRECT_RESPONSE,
37     RAS_MODEM_UNKNOWN  // = 5
38 }
39 
40 enum {
41     RAS_PORT_NON_OPERATIONAL = 1,
42     RAS_PORT_DISCONNECTED,
43     RAS_PORT_CALLING_BACK,
44     RAS_PORT_LISTENING,
45     RAS_PORT_AUTHENTICATING,
46     RAS_PORT_AUTHENTICATED,
47     RAS_PORT_INITIALIZING // = 7
48 }
49 
50 enum {
51     MEDIA_UNKNOWN,
52     MEDIA_SERIAL,
53     MEDIA_RAS10_SERIAL,
54     MEDIA_X25,
55     MEDIA_ISDN
56 }
57 
58 enum USER_AUTHENTICATED = 0x0001;
59 enum MESSENGER_PRESENT  = 0x0002;
60 enum PPP_CLIENT         = 0x0004;
61 enum GATEWAY_ACTIVE     = 0x0008;
62 enum REMOTE_LISTEN      = 0x0010;
63 enum PORT_MULTILINKED   = 0x0020;
64 
65 enum size_t
66     RAS_IPADDRESSLEN  = 15,
67     RAS_IPXADDRESSLEN = 22,
68     RAS_ATADDRESSLEN  = 32;
69 
70 // FIXME: should these be grouped together?
71 enum {
72     RASDOWNLEVEL     = 10,
73     RASADMIN_35      = 35,
74     RASADMIN_CURRENT = 40
75 }
76 
77 alias ULONG IPADDR;
78 
79 enum RAS_PARAMS_FORMAT {
80     ParamNumber = 0,
81     ParamString
82 }
83 
84 union RAS_PARAMS_VALUE {
85     DWORD Number;
86     struct _String {
87         DWORD Length;
88         PCHAR Data;
89     }
90     _String String;
91 }
92 
93 struct RAS_PARAMETERS {
94     CHAR[RASSAPI_MAX_PARAM_KEY_SIZE] P_Key = 0;
95     RAS_PARAMS_FORMAT                P_Type;
96     BYTE                             P_Attributes;
97     RAS_PARAMS_VALUE                 P_Value;
98 }
99 
100 struct RAS_USER_0 {
101     BYTE                                    bfPrivilege;
102     WCHAR[RASSAPI_MAX_PHONENUMBER_SIZE + 1] szPhoneNumber = 0;
103 }
104 alias RAS_USER_0* PRAS_USER_0;
105 
106 struct RAS_PORT_0 {
107     WCHAR[RASSAPI_MAX_PORT_NAME]       wszPortName = 0;
108     WCHAR[RASSAPI_MAX_DEVICETYPE_NAME] wszDeviceType = 0;
109     WCHAR[RASSAPI_MAX_DEVICE_NAME]     wszDeviceName = 0;
110     WCHAR[RASSAPI_MAX_MEDIA_NAME]      wszMediaName = 0;
111     DWORD                              reserved;
112     DWORD                              Flags;
113     WCHAR[UNLEN + 1]                   wszUserName = 0;
114     WCHAR[NETBIOS_NAME_LEN]            wszComputer = 0;
115     DWORD                              dwStartSessionTime; // seconds from 1/1/1970
116     WCHAR[DNLEN + 1]                   wszLogonDomain = 0;
117     BOOL                               fAdvancedServer;
118 }
119 alias RAS_PORT_0* PRAS_PORT_0;
120 
121 struct RAS_PPP_NBFCP_RESULT {
122     DWORD dwError;
123     DWORD dwNetBiosError;
124     CHAR[NETBIOS_NAME_LEN + 1]  szName = 0;
125     WCHAR[NETBIOS_NAME_LEN + 1] wszWksta = 0;
126 }
127 
128 struct RAS_PPP_IPCP_RESULT {
129     DWORD dwError;
130     WCHAR[RAS_IPADDRESSLEN + 1] wszAddress = 0;
131 }
132 
133 struct RAS_PPP_IPXCP_RESULT {
134     DWORD dwError;
135     WCHAR[RAS_IPXADDRESSLEN + 1] wszAddress = 0;
136 }
137 
138 struct RAS_PPP_ATCP_RESULT {
139     DWORD dwError;
140     WCHAR[RAS_ATADDRESSLEN + 1] wszAddress = 0;
141 }
142 
143 struct RAS_PPP_PROJECTION_RESULT {
144     RAS_PPP_NBFCP_RESULT nbf;
145     RAS_PPP_IPCP_RESULT  ip;
146     RAS_PPP_IPXCP_RESULT ipx;
147     RAS_PPP_ATCP_RESULT  at;
148 }
149 
150 struct RAS_PORT_1 {
151     RAS_PORT_0 rasport0;
152     DWORD      LineCondition;
153     DWORD      HardwareCondition;
154     DWORD      LineSpeed;
155     WORD       NumStatistics;
156     WORD       NumMediaParms;
157     DWORD      SizeMediaParms;
158     RAS_PPP_PROJECTION_RESULT ProjResult;
159 }
160 alias RAS_PORT_1* PRAS_PORT_1;
161 
162 struct RAS_PORT_STATISTICS {
163     DWORD dwBytesXmited;
164     DWORD dwBytesRcved;
165     DWORD dwFramesXmited;
166     DWORD dwFramesRcved;
167     DWORD dwCrcErr;
168     DWORD dwTimeoutErr;
169     DWORD dwAlignmentErr;
170     DWORD dwHardwareOverrunErr;
171     DWORD dwFramingErr;
172     DWORD dwBufferOverrunErr;
173     DWORD dwBytesXmitedUncompressed;
174     DWORD dwBytesRcvedUncompressed;
175     DWORD dwBytesXmitedCompressed;
176     DWORD dwBytesRcvedCompressed;
177     DWORD dwPortBytesXmited;
178     DWORD dwPortBytesRcved;
179     DWORD dwPortFramesXmited;
180     DWORD dwPortFramesRcved;
181     DWORD dwPortCrcErr;
182     DWORD dwPortTimeoutErr;
183     DWORD dwPortAlignmentErr;
184     DWORD dwPortHardwareOverrunErr;
185     DWORD dwPortFramingErr;
186     DWORD dwPortBufferOverrunErr;
187     DWORD dwPortBytesXmitedUncompressed;
188     DWORD dwPortBytesRcvedUncompressed;
189     DWORD dwPortBytesXmitedCompressed;
190     DWORD dwPortBytesRcvedCompressed;
191 }
192 alias RAS_PORT_STATISTICS* PRAS_PORT_STATISTICS;
193 
194 struct RAS_SERVER_0 {
195     WORD TotalPorts;
196     WORD PortsInUse;
197     DWORD RasVersion;
198 }
199 alias RAS_SERVER_0* PRAS_SERVER_0;
200 
201 extern (Windows) {
202     DWORD RasAdminServerGetInfo(const(WCHAR)*, PRAS_SERVER_0);
203     DWORD RasAdminGetUserAccountServer(const(WCHAR)*, const(WCHAR)*, LPWSTR);
204     DWORD RasAdminUserGetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0);
205     DWORD RasAdminUserSetInfo(const(WCHAR)*, const(WCHAR)*, PRAS_USER_0);
206     DWORD RasAdminPortEnum(WCHAR*, PRAS_PORT_0*, WORD*);
207     DWORD RasAdminPortGetInfo(const(WCHAR)*, const(WCHAR)*, RAS_PORT_1*,
208      RAS_PORT_STATISTICS*, RAS_PARAMETERS**);
209     DWORD RasAdminPortClearStatistics(const(WCHAR)*, const(WCHAR)*);
210     DWORD RasAdminPortDisconnect(const(WCHAR)*, const(WCHAR)*);
211     DWORD RasAdminFreeBuffer(PVOID);
212     DWORD RasAdminGetErrorString(UINT, WCHAR*, DWORD);
213     BOOL RasAdminAcceptNewConnection(RAS_PORT_1*, RAS_PORT_STATISTICS*,
214      RAS_PARAMETERS*);
215     VOID RasAdminConnectionHangupNotification(RAS_PORT_1*,
216       RAS_PORT_STATISTICS*, RAS_PARAMETERS*);
217     DWORD RasAdminGetIpAddressForUser (WCHAR*, WCHAR*, IPADDR*, BOOL*);
218     VOID RasAdminReleaseIpAddress (WCHAR*, WCHAR*,IPADDR*);
219     DWORD RasAdminGetUserParms(WCHAR*, PRAS_USER_0);
220     DWORD RasAdminSetUserParms(WCHAR*, DWORD, PRAS_USER_0);
221 }
222