source: branches/samba-3.0/source/include/rap.h@ 493

Last change on this file since 493 was 1, checked in by Paul Smedley, 18 years ago

Initial code import

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