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