preparing for release of 2.2.3a
[Samba.git] / source / include / rap.h
blob24b70251b77369391d7a21fa24ce7f6dc9f6a094
1 /*
2 Samba Unix/Linux SMB client library
3 Version 3.0
4 RAP (SMB Remote Procedure Calls) defines and structures
5 Copyright (C) Steve French 2001 (sfrench@us.ibm.com)
6 Copyright (C) Jim McDonough 2001 (jmcd@us.ibm.com)
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 #ifndef _RAP_H_
24 #define _RAP_H_
26 /*****************************************************/
27 /* */
28 /* Additional RAP functionality */
29 /* */
30 /* RAP is the original SMB RPC, documented */
31 /* by Microsoft and X/Open in the 1990s and */
32 /* supported by most SMB/CIFS servers although */
33 /* it is unlikely that any one implementation */
34 /* supports all RAP command codes since some */
35 /* are quite obsolete and a few are specific */
36 /* to a particular network operating system */
37 /* */
38 /* Although it has largely been replaced */
39 /* for complex remote admistration and management */
40 /* (of servers) by the relatively newer */
41 /* DCE/RPC based remote API (which better handles */
42 /* large >64K data structures), there are many */
43 /* important administrative and resource location */
44 /* tasks and user tasks (e.g. password change) */
45 /* that are performed via RAP. */
46 /* */
47 /* Although a few of the RAP calls are implemented */
48 /* in the Samba client library already (clirap.c) */
49 /* the new ones are in clirap2.c for easy patching */
50 /* and integration and a corresponding header */
51 /* file, rap.h, has been created. */
52 /* */
53 /* This is based on data from the CIFS spec */
54 /* and the LAN Server and LAN Manager */
55 /* Programming Reference books and published */
56 /* RAP document and CIFS forum postings and */
57 /* lots of trial and error. Additional */
58 /* background information is available from the */
59 /* X/Open reference book in their PC Interworking */
60 /* series "IPC for SMB" and also from the */
61 /* interoperability documentation in */
62 /* ftp://ftp.microsoft.com/developr/drg/cifs */
63 /* */
64 /* Function names changed from API_ (as they are */
65 /* in the CIFS specification to RAP_ in order */
66 /* to avoid confusion with other API calls */
67 /* sent via DCE RPC */
68 /* */
69 /*****************************************************/
71 /*****************************************************/
72 /* */
73 /* Although without pound defines (of this header) */
74 /* cifsrap.c already includes support for: */
75 /* */
76 /* WshareEnum (API number 0, level 1) */
77 /* NetServerEnum2 (API num 104, level 1) */
78 /* WWkstaUserLogon (132) */
79 /* SamOEMchgPasswordUser2_P (214) */
80 /* */
81 /* and cifsprint.c already includes support for: */
82 /* */
83 /* WPrintJobEnum (API num 76, level 2) */
84 /* WPrintJobDel (API num 81) */
85 /* */
86 /*****************************************************/
88 #define RAP_WshareEnum 0
89 #define RAP_WshareGetInfo 1
90 #define RAP_WshareSetInfo 2
91 #define RAP_WshareAdd 3
92 #define RAP_WshareDel 4
93 #define RAP_NetShareCheck 5
94 #define RAP_WsessionEnum 6
95 #define RAP_WsessionGetInfo 7
96 #define RAP_WsessionDel 8
97 #define RAP_WconnectionEnum 9
98 #define RAP_WfileEnum 10
99 #define RAP_WfileGetInfo 11
100 #define RAP_WfileClose 12
101 #define RAP_WserverGetInfo 13
102 #define RAP_WserverSetInfo 14
103 #define RAP_WserverDiskEnum 15
104 #define RAP_WserverAdminCommand 16
105 #define RAP_NetAuditOpen 17
106 #define RAP_WauditClear 18
107 #define RAP_NetErrorLogOpen 19
108 #define RAP_WerrorLogClear 20
109 #define RAP_NetCharDevEnum 21
110 #define RAP_NetCharDevGetInfo 22
111 #define RAP_WCharDevControl 23
112 #define RAP_NetCharDevQEnum 24
113 #define RAP_NetCharDevQGetInfo 25
114 #define RAP_WCharDevQSetInfo 26
115 #define RAP_WCharDevQPurge 27
116 #define RAP_WCharDevQPurgeSelf 28
117 #define RAP_WMessageNameEnum 29
118 #define RAP_WMessageNameGetInfo 30
119 #define RAP_WMessageNameAdd 31
120 #define RAP_WMessageNameDel 32
121 #define RAP_WMessageNameFwd 33
122 #define RAP_WMessageNameUnFwd 34
123 #define RAP_WMessageBufferSend 35
124 #define RAP_WMessageFileSend 36
125 #define RAP_WMessageLogFileSet 37
126 #define RAP_WMessageLogFileGet 38
127 #define RAP_WServiceEnum 39
128 #define RAP_WServiceInstall 40
129 #define RAP_WServiceControl 41
130 #define RAP_WAccessEnum 42
131 #define RAP_WAccessGetInfo 43
132 #define RAP_WAccessSetInfo 44
133 #define RAP_WAccessAdd 45
134 #define RAP_WAccessDel 46
135 #define RAP_WGroupEnum 47
136 #define RAP_WGroupAdd 48
137 #define RAP_WGroupDel 49
138 #define RAP_WGroupAddUser 50
139 #define RAP_WGroupDelUser 51
140 #define RAP_WGroupGetUsers 52
141 #define RAP_WUserEnum 53
142 #define RAP_WUserAdd 54
143 #define RAP_WUserDel 55
144 #define RAP_WUserGetInfo 56
145 #define RAP_WUserSetInfo 57
146 #define RAP_WUserPasswordSet 58
147 #define RAP_WUserGetGroups 59
148 #define RAP_WWkstaSetUID 62
149 #define RAP_WWkstaGetInfo 63
150 #define RAP_WWkstaSetInfo 64
151 #define RAP_WUseEnum 65
152 #define RAP_WUseAdd 66
153 #define RAP_WUseDel 67
154 #define RAP_WUseGetInfo 68
155 #define RAP_WPrintQEnum 69
156 #define RAP_WPrintQGetInfo 70
157 #define RAP_WPrintQSetInfo 71
158 #define RAP_WPrintQAdd 72
159 #define RAP_WPrintQDel 73
160 #define RAP_WPrintQPause 74
161 #define RAP_WPrintQContinue 75
162 #define RAP_WPrintJobEnum 76
163 #define RAP_WPrintJobGetInfo 77
164 #define RAP_WPrintJobSetInfo_OLD 78
165 #define RAP_WPrintJobDel 81
166 #define RAP_WPrintJobPause 82
167 #define RAP_WPrintJobContinue 83
168 #define RAP_WPrintDestEnum 84
169 #define RAP_WPrintDestGetInfo 85
170 #define RAP_WPrintDestControl 86
171 #define RAP_WProfileSave 87
172 #define RAP_WProfileLoad 88
173 #define RAP_WStatisticsGet 89
174 #define RAP_WStatisticsClear 90
175 #define RAP_NetRemoteTOD 91
176 #define RAP_WNetBiosEnum 92
177 #define RAP_WNetBiosGetInfo 93
178 #define RAP_NetServerEnum 94
179 #define RAP_I_NetServerEnum 95
180 #define RAP_WServiceGetInfo 96
181 #define RAP_WPrintQPurge 103
182 #define RAP_NetServerEnum2 104
183 #define RAP_WAccessGetUserPerms 105
184 #define RAP_WGroupGetInfo 106
185 #define RAP_WGroupSetInfo 107
186 #define RAP_WGroupSetUsers 108
187 #define RAP_WUserSetGroups 109
188 #define RAP_WUserModalsGet 110
189 #define RAP_WUserModalsSet 111
190 #define RAP_WFileEnum2 112
191 #define RAP_WUserAdd2 113
192 #define RAP_WUserSetInfo2 114
193 #define RAP_WUserPasswordSet2 115
194 #define RAP_I_NetServerEnum2 116
195 #define RAP_WConfigGet2 117
196 #define RAP_WConfigGetAll2 118
197 #define RAP_WGetDCName 119
198 #define RAP_NetHandleGetInfo 120
199 #define RAP_NetHandleSetInfo 121
200 #define RAP_WStatisticsGet2 122
201 #define RAP_WBuildGetInfo 123
202 #define RAP_WFileGetInfo2 124
203 #define RAP_WFileClose2 125
204 #define RAP_WNetServerReqChallenge 126
205 #define RAP_WNetServerAuthenticate 127
206 #define RAP_WNetServerPasswordSet 128
207 #define RAP_WNetAccountDeltas 129
208 #define RAP_WNetAccountSync 130
209 #define RAP_WUserEnum2 131
210 #define RAP_WWkstaUserLogon 132
211 #define RAP_WWkstaUserLogoff 133
212 #define RAP_WLogonEnum 134
213 #define RAP_WErrorLogRead 135
214 #define RAP_NetPathType 136
215 #define RAP_NetPathCanonicalize 137
216 #define RAP_NetPathCompare 138
217 #define RAP_NetNameValidate 139
218 #define RAP_NetNameCanonicalize 140
219 #define RAP_NetNameCompare 141
220 #define RAP_WAuditRead 142
221 #define RAP_WPrintDestAdd 143
222 #define RAP_WPrintDestSetInfo 144
223 #define RAP_WPrintDestDel 145
224 #define RAP_WUserValidate2 146
225 #define RAP_WPrintJobSetInfo 147
226 #define RAP_TI_NetServerDiskEnum 148
227 #define RAP_TI_NetServerDiskGetInfo 149
228 #define RAP_TI_FTVerifyMirror 150
229 #define RAP_TI_FTAbortVerify 151
230 #define RAP_TI_FTGetInfo 152
231 #define RAP_TI_FTSetInfo 153
232 #define RAP_TI_FTLockDisk 154
233 #define RAP_TI_FTFixError 155
234 #define RAP_TI_FTAbortFix 156
235 #define RAP_TI_FTDiagnoseError 157
236 #define RAP_TI_FTGetDriveStats 158
237 #define RAP_TI_FTErrorGetInfo 160
238 #define RAP_NetAccessCheck 163
239 #define RAP_NetAlertRaise 164
240 #define RAP_NetAlertStart 165
241 #define RAP_NetAlertStop 166
242 #define RAP_NetAuditWrite 167
243 #define RAP_NetIRemoteAPI 168
244 #define RAP_NetServiceStatus 169
245 #define RAP_NetServerRegister 170
246 #define RAP_NetServerDeregister 171
247 #define RAP_NetSessionEntryMake 172
248 #define RAP_NetSessionEntryClear 173
249 #define RAP_NetSessionEntryGetInfo 174
250 #define RAP_NetSessionEntrySetInfo 175
251 #define RAP_NetConnectionEntryMake 176
252 #define RAP_NetConnectionEntryClear 177
253 #define RAP_NetConnectionEntrySetInfo 178
254 #define RAP_NetConnectionEntryGetInfo 179
255 #define RAP_NetFileEntryMake 180
256 #define RAP_NetFileEntryClear 181
257 #define RAP_NetFileEntrySetInfo 182
258 #define RAP_NetFileEntryGetInfo 183
259 #define RAP_AltSrvMessageBufferSend 184
260 #define RAP_AltSrvMessageFileSend 185
261 #define RAP_wI_NetRplWkstaEnum 186
262 #define RAP_wI_NetRplWkstaGetInfo 187
263 #define RAP_wI_NetRplWkstaSetInfo 188
264 #define RAP_wI_NetRplWkstaAdd 189
265 #define RAP_wI_NetRplWkstaDel 190
266 #define RAP_wI_NetRplProfileEnum 191
267 #define RAP_wI_NetRplProfileGetInfo 192
268 #define RAP_wI_NetRplProfileSetInfo 193
269 #define RAP_wI_NetRplProfileAdd 194
270 #define RAP_wI_NetRplProfileDel 195
271 #define RAP_wI_NetRplProfileClone 196
272 #define RAP_wI_NetRplBaseProfileEnum 197
273 #define RAP_WIServerSetInfo 201
274 #define RAP_WPrintDriverEnum 205
275 #define RAP_WPrintQProcessorEnum 206
276 #define RAP_WPrintPortEnum 207
277 #define RAP_WNetWriteUpdateLog 208
278 #define RAP_WNetAccountUpdate 209
279 #define RAP_WNetAccountConfirmUpdate 210
280 #define RAP_WConfigSet 211
281 #define RAP_WAccountsReplicate 212
282 #define RAP_SamOEMChgPasswordUser2_P 214
283 #define RAP_NetServerEnum3 215
284 #define RAP_WprintDriverGetInfo 250
285 #define RAP_WprintDriverSetInfo 251
286 #define RAP_WaliasAdd 252
287 #define RAP_WaliasDel 253
288 #define RAP_WaliasGetInfo 254
289 #define RAP_WaliasSetInfo 255
290 #define RAP_WaliasEnum 256
291 #define RAP_WuserGetLogonAsn 257
292 #define RAP_WuserSetLogonAsn 258
293 #define RAP_WuserGetAppSel 259
294 #define RAP_WuserSetAppSel 260
295 #define RAP_WappAdd 261
296 #define RAP_WappDel 262
297 #define RAP_WappGetInfo 263
298 #define RAP_WappSetInfo 264
299 #define RAP_WappEnum 265
300 #define RAP_WUserDCDBInit 266
301 #define RAP_WDASDAdd 267
302 #define RAP_WDASDDel 268
303 #define RAP_WDASDGetInfo 269
304 #define RAP_WDASDSetInfo 270
305 #define RAP_WDASDEnum 271
306 #define RAP_WDASDCheck 272
307 #define RAP_WDASDCtl 273
308 #define RAP_WuserRemoteLogonCheck 274
309 #define RAP_WUserPasswordSet3 275
310 #define RAP_WCreateRIPLMachine 276
311 #define RAP_WDeleteRIPLMachine 277
312 #define RAP_WGetRIPLMachineInfo 278
313 #define RAP_WSetRIPLMachineInfo 279
314 #define RAP_WEnumRIPLMachine 280
315 #define RAP_I_ShareAdd 281
316 #define RAP_AliasEnum 282
317 #define RAP_WaccessApply 283
318 #define RAP_WPrt16Query 284
319 #define RAP_WPrt16Set 285
320 #define RAP_WUserDel100 286
321 #define RAP_WUserRemoteLogonCheck2 287
322 #define RAP_WRemoteTODSet 294
323 #define RAP_WprintJobMoveAll 295
324 #define RAP_W16AppParmAdd 296
325 #define RAP_W16AppParmDel 297
326 #define RAP_W16AppParmGet 298
327 #define RAP_W16AppParmSet 299
328 #define RAP_W16RIPLMachineCreate 300
329 #define RAP_W16RIPLMachineGetInfo 301
330 #define RAP_W16RIPLMachineSetInfo 302
331 #define RAP_W16RIPLMachineEnum 303
332 #define RAP_W16RIPLMachineListParmEnum 304
333 #define RAP_W16RIPLMachClassGetInfo 305
334 #define RAP_W16RIPLMachClassEnum 306
335 #define RAP_W16RIPLMachClassCreate 307
336 #define RAP_W16RIPLMachClassSetInfo 308
337 #define RAP_W16RIPLMachClassDelete 309
338 #define RAP_W16RIPLMachClassLPEnum 310
339 #define RAP_W16RIPLMachineDelete 311
340 #define RAP_W16WSLevelGetInfo 312
341 #define RAP_WserverNameAdd 313
342 #define RAP_WserverNameDel 314
343 #define RAP_WserverNameEnum 315
344 #define RAP_I_WDASDEnum 316
345 #define RAP_WDASDEnumTerminate 317
346 #define RAP_WDASDSetInfo2 318
347 #define MAX_API 318
350 /* Parameter description strings for RAP calls */
351 /* Names are defined name for RAP call with _REQ */
352 /* appended to end. */
354 #define RAP_WFileEnum2_REQ "zzWrLehb8g8"
355 #define RAP_WFileGetInfo2_REQ "DWrLh"
356 #define RAP_WFileClose2_REQ "D"
358 #define RAP_NetGroupEnum_REQ "WrLeh"
359 #define RAP_NetGroupAdd_REQ "WsT"
360 #define RAP_NetGroupDel_REQ "z"
361 #define RAP_NetGroupAddUser_REQ "zz"
362 #define RAP_NetGroupDelUser_REQ "zz"
363 #define RAP_NetGroupGetUsers_REQ "zWrLeh"
364 #define RAP_NetGroupSetUsers_REQ "zWsTW"
366 #define RAP_NetUserAdd2_REQ "WsTWW"
367 #define RAP_NetUserEnum_REQ "WrLeh"
368 #define RAP_NetUserEnum2_REQ "WrLDieh"
369 #define RAP_NetUserGetGroups_REQ "zWrLeh"
370 #define RAP_NetUserSetGroups_REQ "zWsTW"
371 #define RAP_NetUserPasswordSet_REQ "zb16b16w"
372 #define RAP_NetUserPasswordSet2_REQ "zb16b16WW"
373 #define RAP_SAMOEMChgPasswordUser2_REQ "B516B16"
374 #define RAP_NetUserValidate2_REQ "Wb62WWrLhWW"
376 #define RAP_NetServerEnum2_REQ "WrLehDz"
377 #define RAP_WserverGetInfo_REQ "WrLh"
378 #define RAP_NetWkstatGetInfo "WrLh"
380 #define RAP_WShareAdd_REQ "WsT"
381 #define RAP_WShareEnum_REQ "WrLeh"
382 #define RAP_WShareDel_REQ "zW"
383 #define RAP_WWkstaGetInfo_REQ "WrLh"
385 #define RAP_NetPrintQEnum_REQ "WrLeh"
386 #define RAP_NetPrintQGetInfo_REQ "zWrLh"
388 #define RAP_NetServerAdminCommand_REQ "zhrLeh"
389 #define RAP_NetServiceEnum_REQ "WrLeh"
390 #define RAP_NetServiceControl_REQ "zWWrL"
391 #define RAP_NetServiceInstall_REQ "zF88sg88T"
392 #define RAP_NetServiceGetInfo_REQ "zWrLh"
393 #define RAP_NetSessionEnum_REQ "WrLeh"
394 #define RAP_NetSessionGetInfo_REQ "zWrLh"
395 #define RAP_NetSessionDel_REQ "zW"
397 #define RAP_NetConnectionEnum_REQ "zWrLeh"
399 #define RAP_NetWkstaUserLogoff_REQ "zzWb38WrLh"
401 /* Description strings for returned data in RAP calls */
402 /* I use all caps here in part to avoid accidental */
403 /* name collisions */
405 #define RAP_FILE_INFO_L2 "D"
406 #define RAP_FILE_INFO_L3 "DWWzz"
408 #define RAP_GROUP_INFO_L0 "B21"
409 #define RAP_GROUP_INFO_L1 "B21Bz"
410 #define RAP_GROUP_USERS_INFO_0 "B21"
411 #define RAP_GROUP_USERS_INFO_1 "B21BN"
413 #define RAP_USER_INFO_L0 "B21"
414 #define RAP_USER_INFO_L1 "B21BB16DWzzWz"
416 #define RAP_SERVER_INFO_L0 "B16"
417 #define RAP_SERVER_INFO_L1 "B16BBDz"
418 #define RAP_SERVER_INFO_L2 "B16BBDzDDDWWzWWWWWWWB21BzWWWWWWWWWWWWWWWWWWWWWWz"
419 #define RAP_SERVER_INFO_L3 "B16BBDzDDDWWzWWWWWWWB21BzWWWWWWWWWWWWWWWWWWWWWWzDWz"
420 #define RAP_SERVICE_INFO_L0 "B16"
421 #define RAP_SERVICE_INFO_L2 "B16WDWB64"
422 #define RAP_SHARE_INFO_L0 "B13"
423 #define RAP_SHARE_INFO_L1 "B13BWz"
424 #define RAP_SHARE_INFO_L2 "B13BWzWWWzB9B"
426 #define RAP_PRINTQ_INFO_L2 "B13BWWWzzzzzWN"
427 #define RAP_SMB_PRINT_JOB_L1 "WB21BB16B10zWWzDDz"
429 #define RAP_SESSION_INFO_L2 "zzWWWDDDz"
430 #define RAP_CONNECTION_INFO_L1 "WWWWDzz"
432 #define RAP_USER_LOGOFF_INFO_L1 "WDW"
434 #define RAP_WKSTA_INFO_L1 "WDzzzzBBDWDWWWWWWWWWWWWWWWWWWWzzWzzW"
435 #define RAP_WKSTA_INFO_L10 "zzzBBzz"
437 /* BB explicit packing would help in structs below */
439 /* sizes of fixed-length fields, including null terminator */
440 #define RAP_GROUPNAME_LEN 21
441 #define RAP_USERNAME_LEN 21
442 #define RAP_SHARENAME_LEN 13
443 #define RAP_UPASSWD_LEN 16 /* user password */
444 #define RAP_SPASSWD_LEN 9 /* share password */
445 #define RAP_MACHNAME_LEN 16
446 #define RAP_SRVCNAME_LEN 16
447 #define RAP_SRVCCMNT_LEN 64
448 #define RAP_DATATYPE_LEN 10
451 typedef struct rap_group_info_1
453 char group_name[RAP_GROUPNAME_LEN];
454 char reserved1;
455 char * comment;
456 } RAP_GROUP_INFO_1;
458 typedef struct rap_user_info_1
460 char user_name[RAP_USERNAME_LEN];
461 char reserved1;
462 char passwrd[RAP_UPASSWD_LEN];
463 uint32 pwage;
464 uint16 priv;
465 char * home_dir;
466 char * comment;
467 uint16 userflags;
468 char * logon_script;
469 } RAP_USER_INFO_1;
471 typedef struct rap_service_info_2
473 char service_name[RAP_SRVCNAME_LEN];
474 uint16 status;
475 uint32 installcode;
476 uint16 process_num;
477 char * comment;
478 } RAP_SERVICE_INFO_2;
481 typedef struct rap_share_info_0
483 char share_name[RAP_SHARENAME_LEN];
484 } RAP_SHARE_INFO_0;
486 typedef struct rap_share_info_1
488 char share_name[RAP_SHARENAME_LEN];
489 char reserved1;
490 uint16 share_type;
491 char * comment;
492 } RAP_SHARE_INFO_1;
494 typedef struct rap_share_info_2
496 char share_name[RAP_SHARENAME_LEN];
497 char reserved1;
498 uint16 share_type;
499 char * comment;
500 uint16 perms;
501 uint16 maximum_users;
502 uint16 active_users;
503 char * path;
504 char password[RAP_SPASSWD_LEN];
505 char reserved2;
506 } RAP_SHARE_INFO_2;
508 #endif /* _RAP_H_ */