preparing for release of alpha.0.2
[Samba.git] / source / include / rpc_srvsvc.h
blob4a7b7a777b408e85e742f00740afb475f81f2e06
1 /*
2 Unix SMB/Netbios implementation.
3 Version 1.9.
4 SMB parameters and setup
5 Copyright (C) Andrew Tridgell 1992-1997
6 Copyright (C) Luke Kenneth Casson Leighton 1996-1997
7 Copyright (C) Paul Ashton 1997
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #ifndef _RPC_SRVSVC_H /* _RPC_SRVSVC_H */
25 #define _RPC_SRVSVC_H
28 /* srvsvc pipe */
29 #define SRV_NETCONNENUM 0x08
30 #define SRV_NETFILEENUM 0x09
31 #define SRV_NETSESSENUM 0x0c
32 #define SRV_NETSHAREENUM 0x0f
33 #define SRV_NETSHAREENUM2 0x24
34 #define SRV_NETTRANSPORTENUM 0x1a
35 #define SRV_NET_SRV_GET_INFO 0x15
36 #define SRV_NET_SRV_SET_INFO 0x16
37 #define SRV_NET_REMOTE_TOD 0x1c
39 /* SESS_INFO_0 (pointers to level 0 session info strings) */
40 typedef struct ptr_sess_info0
42 uint32 ptr_name; /* pointer to name. */
44 } SESS_INFO_0;
46 /* SESS_INFO_0_STR (level 0 session info strings) */
47 typedef struct str_sess_info0
49 UNISTR2 uni_name; /* unicode string of name */
51 } SESS_INFO_0_STR;
53 /* oops - this is going to take up a *massive* amount of stack. */
54 /* the UNISTR2s already have 1024 uint16 chars in them... */
55 #define MAX_SESS_ENTRIES 32
57 /* SRV_SESS_INFO_0 */
58 typedef struct srv_sess_info_0_info
60 uint32 num_entries_read; /* EntriesRead */
61 uint32 ptr_sess_info; /* Buffer */
62 uint32 num_entries_read2; /* EntriesRead */
64 SESS_INFO_0 info_0 [MAX_SESS_ENTRIES]; /* session entry pointers */
65 SESS_INFO_0_STR info_0_str[MAX_SESS_ENTRIES]; /* session entry strings */
67 } SRV_SESS_INFO_0;
69 /* SESS_INFO_1 (pointers to level 1 session info strings) */
70 typedef struct ptr_sess_info1
72 uint32 ptr_name; /* pointer to name. */
73 uint32 ptr_user; /* pointer to user name. */
75 uint32 num_opens;
76 uint32 open_time;
77 uint32 idle_time;
78 uint32 user_flags;
80 } SESS_INFO_1;
82 /* SESS_INFO_1_STR (level 1 session info strings) */
83 typedef struct str_sess_info1
85 UNISTR2 uni_name; /* unicode string of name */
86 UNISTR2 uni_user; /* unicode string of user */
88 } SESS_INFO_1_STR;
90 /* SRV_SESS_INFO_1 */
91 typedef struct srv_sess_info_1_info
93 uint32 num_entries_read; /* EntriesRead */
94 uint32 ptr_sess_info; /* Buffer */
95 uint32 num_entries_read2; /* EntriesRead */
97 SESS_INFO_1 info_1 [MAX_SESS_ENTRIES]; /* session entry pointers */
98 SESS_INFO_1_STR info_1_str[MAX_SESS_ENTRIES]; /* session entry strings */
100 } SRV_SESS_INFO_1;
102 /* SRV_SESS_INFO_CTR */
103 typedef struct srv_sess_info_ctr_info
105 uint32 switch_value; /* switch value */
106 uint32 ptr_sess_ctr; /* pointer to sess info union */
107 union
109 SRV_SESS_INFO_0 info0; /* session info level 0 */
110 SRV_SESS_INFO_1 info1; /* session info level 1 */
112 } sess;
114 } SRV_SESS_INFO_CTR;
117 /* SRV_Q_NET_SESS_ENUM */
118 typedef struct q_net_sess_enum_info
120 uint32 ptr_srv_name; /* pointer (to server name?) */
121 UNISTR2 uni_srv_name; /* server name */
123 uint32 ptr_qual_name; /* pointer (to qualifier name) */
124 UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
126 uint32 ptr_user_name; /* pointer (to user name) */
127 UNISTR2 uni_user_name; /* user name */
129 uint32 sess_level; /* session level */
131 SRV_SESS_INFO_CTR *ctr;
133 uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
134 ENUM_HND enum_hnd;
136 } SRV_Q_NET_SESS_ENUM;
138 /* SRV_R_NET_SESS_ENUM */
139 typedef struct r_net_sess_enum_info
141 uint32 sess_level; /* share level */
143 SRV_SESS_INFO_CTR *ctr;
145 uint32 total_entries; /* total number of entries */
146 ENUM_HND enum_hnd;
148 uint32 status; /* return status */
150 } SRV_R_NET_SESS_ENUM;
152 /* CONN_INFO_0 (pointers to level 0 connection info strings) */
153 typedef struct ptr_conn_info0
155 uint32 id; /* connection id. */
157 } CONN_INFO_0;
159 /* oops - this is going to take up a *massive* amount of stack. */
160 /* the UNISTR2s already have 1024 uint16 chars in them... */
161 #define MAX_CONN_ENTRIES 32
163 /* SRV_CONN_INFO_0 */
164 typedef struct srv_conn_info_0_info
166 uint32 num_entries_read; /* EntriesRead */
167 uint32 ptr_conn_info; /* Buffer */
168 uint32 num_entries_read2; /* EntriesRead */
170 CONN_INFO_0 info_0 [MAX_CONN_ENTRIES]; /* connection entry pointers */
172 } SRV_CONN_INFO_0;
174 /* CONN_INFO_1 (pointers to level 1 connection info strings) */
175 typedef struct ptr_conn_info1
177 uint32 id; /* connection id */
178 uint32 type; /* 0x3 */
179 uint32 num_opens;
180 uint32 num_users;
181 uint32 open_time;
183 uint32 ptr_usr_name; /* pointer to user name. */
184 uint32 ptr_net_name; /* pointer to network name (e.g IPC$). */
186 } CONN_INFO_1;
188 /* CONN_INFO_1_STR (level 1 connection info strings) */
189 typedef struct str_conn_info1
191 UNISTR2 uni_usr_name; /* unicode string of user */
192 UNISTR2 uni_net_name; /* unicode string of name */
194 } CONN_INFO_1_STR;
196 /* SRV_CONN_INFO_1 */
197 typedef struct srv_conn_info_1_info
199 uint32 num_entries_read; /* EntriesRead */
200 uint32 ptr_conn_info; /* Buffer */
201 uint32 num_entries_read2; /* EntriesRead */
203 CONN_INFO_1 info_1 [MAX_CONN_ENTRIES]; /* connection entry pointers */
204 CONN_INFO_1_STR info_1_str[MAX_CONN_ENTRIES]; /* connection entry strings */
206 } SRV_CONN_INFO_1;
208 /* SRV_CONN_INFO_CTR */
209 typedef struct srv_conn_info_ctr_info
211 uint32 switch_value; /* switch value */
212 uint32 ptr_conn_ctr; /* pointer to conn info union */
213 union
215 SRV_CONN_INFO_0 info0; /* connection info level 0 */
216 SRV_CONN_INFO_1 info1; /* connection info level 1 */
218 } conn;
220 } SRV_CONN_INFO_CTR;
223 /* SRV_Q_NET_CONN_ENUM */
224 typedef struct q_net_conn_enum_info
226 uint32 ptr_srv_name; /* pointer (to server name) */
227 UNISTR2 uni_srv_name; /* server name "\\server" */
229 uint32 ptr_qual_name; /* pointer (to qualifier name) */
230 UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
232 uint32 conn_level; /* connection level */
234 SRV_CONN_INFO_CTR *ctr;
236 uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
237 ENUM_HND enum_hnd;
239 } SRV_Q_NET_CONN_ENUM;
241 /* SRV_R_NET_CONN_ENUM */
242 typedef struct r_net_conn_enum_info
244 uint32 conn_level; /* share level */
246 SRV_CONN_INFO_CTR *ctr;
248 uint32 total_entries; /* total number of entries */
249 ENUM_HND enum_hnd;
251 uint32 status; /* return status */
253 } SRV_R_NET_CONN_ENUM;
255 /* oops - this is going to take up a *massive* amount of stack. */
256 /* the UNISTR2s already have 1024 uint16 chars in them... */
257 #define MAX_TPRT_ENTRIES 32
259 /* TPRT_INFO_0 (pointers to level 0 transport info strings) */
260 typedef struct ptr_tprt_info0
262 uint32 num_vcs; /* number of clients using transport */
263 uint32 ptr_trans_name; /* pointer to transport name. */
264 uint32 ptr_trans_addr; /* pointer to transport address */
265 uint32 trans_addr_len; /* length of transport address */
266 uint32 ptr_addr_name; /* pointer to network address name. */
268 } TPRT_INFO_0;
270 /* TPRT_INFO_0_STR (level 0 transport info strings) */
271 typedef struct str_tprt_info0
273 UNISTR2 uni_trans_name; /* unicode string of transport */
274 BUFFER4 buf_trans_addr; /* buffer for transport address */
275 UNISTR2 uni_addr_name; /* unicode string of network address */
277 } TPRT_INFO_0_STR;
279 /* SRV_TPRT_INFO_0 */
280 typedef struct srv_tprt_info_0_info
282 uint32 num_entries_read; /* EntriesRead */
283 uint32 ptr_tprt_info; /* Buffer */
284 uint32 num_entries_read2; /* EntriesRead */
286 TPRT_INFO_0 *info_0; /* transport entry pointers */
287 TPRT_INFO_0_STR *info_0_str; /* transport entry strings */
289 } SRV_TPRT_INFO_0;
291 /* SRV_TPRT_INFO_CTR */
292 typedef struct srv_tprt_info_ctr_info
294 uint32 switch_value; /* switch value */
295 uint32 ptr_tprt_ctr; /* pointer to tprt info union */
296 union
298 SRV_TPRT_INFO_0 info0; /* transport info level 0 */
300 } tprt;
302 } SRV_TPRT_INFO_CTR;
305 /* SRV_Q_NET_TPRT_ENUM */
306 typedef struct q_net_tprt_enum_info
308 uint32 ptr_srv_name; /* pointer (to server name) */
309 UNISTR2 uni_srv_name; /* server name "\\server" */
311 uint32 tprt_level; /* transport level */
313 SRV_TPRT_INFO_CTR *ctr;
315 uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
316 ENUM_HND enum_hnd;
318 } SRV_Q_NET_TPRT_ENUM;
320 /* SRV_R_NET_TPRT_ENUM */
321 typedef struct r_net_tprt_enum_info
323 uint32 tprt_level; /* share level */
325 SRV_TPRT_INFO_CTR *ctr;
327 uint32 total_entries; /* total number of entries */
328 ENUM_HND enum_hnd;
330 uint32 status; /* return status */
332 } SRV_R_NET_TPRT_ENUM;
334 /* oops - this is going to take up a *massive* amount of stack. */
335 /* the UNISTR2s already have 1024 uint16 chars in them... */
336 #define MAX_SHARE_ENTRIES 128
338 /* SH_INFO_1 (pointers to level 1 share info strings) */
339 typedef struct ptr_share_info1
341 uint32 ptr_netname; /* pointer to net name. */
342 uint32 type; /* ipc, print, disk ... */
343 uint32 ptr_remark; /* pointer to comment. */
345 } SH_INFO_1;
347 /* SH_INFO_1_STR (level 1 share info strings) */
348 typedef struct str_share_info1
350 UNISTR2 uni_netname; /* unicode string of net name */
351 UNISTR2 uni_remark; /* unicode string of comment */
353 } SH_INFO_1_STR;
355 /* SRV_SHARE_INFO_1 */
356 typedef struct share_info_1_info
358 uint32 num_entries_read; /* EntriesRead */
359 uint32 ptr_share_info; /* Buffer */
360 uint32 num_entries_read2; /* EntriesRead */
362 SH_INFO_1 **info_1; /* share entry pointers */
363 SH_INFO_1_STR **info_1_str; /* share entry strings */
365 } SRV_SHARE_INFO_1;
367 /* SH_INFO_2 (pointers to level 2 share info strings) */
368 typedef struct ptr_share_info2
370 uint32 ptr_netname; /* pointer to net name. */
371 uint32 type; /* ipc, print, disk ... */
372 uint32 ptr_remark; /* pointer to comment. */
373 uint32 perms; /* permissions */
374 uint32 max_uses; /* maximum uses */
375 uint32 num_uses; /* current uses */
376 uint32 ptr_path; /* pointer to path name */
377 uint32 ptr_passwd; /* pointer to password */
379 } SH_INFO_2;
381 /* SH_INFO_2_STR (level 2 share info strings) */
382 typedef struct str_share_info2
384 UNISTR2 uni_netname; /* unicode string of net name (e.g NETLOGON) */
385 UNISTR2 uni_remark; /* unicode string of comment (e.g "Logon server share") */
386 UNISTR2 uni_path; /* unicode string of local path (e.g c:\winnt\system32\repl\import\scripts) */
387 UNISTR2 uni_passwd; /* unicode string of password - presumably for share level security (e.g NULL) */
389 } SH_INFO_2_STR;
391 /* SRV_SHARE_INFO_2 */
392 typedef struct share_info_2_info
394 uint32 num_entries_read; /* EntriesRead */
395 uint32 ptr_share_info; /* Buffer */
396 uint32 num_entries_read2; /* EntriesRead */
398 SH_INFO_2 **info_2; /* share entry pointers */
399 SH_INFO_2_STR **info_2_str; /* share entry strings */
401 } SRV_SHARE_INFO_2;
403 /* SRV_SHARE_INFO_CTR */
404 typedef struct srv_share_info_1_info
406 uint32 switch_value; /* switch value */
407 uint32 ptr_share_ctr; /* pointer to share info union */
408 union
410 SRV_SHARE_INFO_1 info1; /* share info level 1 */
411 SRV_SHARE_INFO_2 info2; /* share info level 2 */
413 } share;
415 } SRV_SHARE_INFO_CTR;
417 /* SRV_Q_NET_SHARE_ENUM */
418 typedef struct q_net_share_enum_info
420 uint32 ptr_srv_name; /* pointer (to server name?) */
421 UNISTR2 uni_srv_name; /* server name */
423 uint32 share_level; /* share level */
425 SRV_SHARE_INFO_CTR *ctr; /* share info container */
427 uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
429 ENUM_HND enum_hnd;
431 } SRV_Q_NET_SHARE_ENUM;
434 /* SRV_R_NET_SHARE_ENUM */
435 typedef struct r_net_share_enum_info
437 uint32 share_level; /* share level */
438 SRV_SHARE_INFO_CTR *ctr; /* share info container */
440 uint32 total_entries; /* total number of entries */
441 ENUM_HND enum_hnd;
443 uint32 status; /* return status */
445 } SRV_R_NET_SHARE_ENUM;
447 /* FILE_INFO_3 (level 3 file info strings) */
448 typedef struct file_info3_info
450 uint32 id; /* file index */
451 uint32 perms; /* file permissions. don't know what format */
452 uint32 num_locks; /* file locks */
453 uint32 ptr_path_name; /* file name */
454 uint32 ptr_user_name; /* file owner */
456 } FILE_INFO_3;
458 /* FILE_INFO_3_STR (level 3 file info strings) */
459 typedef struct str_file_info3_info
461 UNISTR2 uni_path_name; /* unicode string of file name */
462 UNISTR2 uni_user_name; /* unicode string of file owner. */
464 } FILE_INFO_3_STR;
466 /* oops - this is going to take up a *massive* amount of stack. */
467 /* the UNISTR2s already have 1024 uint16 chars in them... */
468 #define MAX_FILE_ENTRIES 32
470 /* SRV_FILE_INFO_3 */
471 typedef struct srv_file_info_3
473 uint32 num_entries_read; /* EntriesRead */
474 uint32 ptr_file_info; /* Buffer */
476 uint32 num_entries_read2; /* EntriesRead */
478 FILE_INFO_3 info_3 [MAX_FILE_ENTRIES]; /* file entry details */
479 FILE_INFO_3_STR info_3_str[MAX_FILE_ENTRIES]; /* file entry strings */
481 } SRV_FILE_INFO_3;
483 /* SRV_FILE_INFO_CTR */
484 typedef struct srv_file_info_3_info
486 uint32 switch_value; /* switch value */
487 uint32 ptr_file_ctr; /* pointer to file info union */
488 union
490 SRV_FILE_INFO_3 info3; /* file info with 0 entries */
492 } file;
494 } SRV_FILE_INFO_CTR;
497 /* SRV_Q_NET_FILE_ENUM */
498 typedef struct q_net_file_enum_info
500 uint32 ptr_srv_name; /* pointer (to server name?) */
501 UNISTR2 uni_srv_name; /* server name */
503 uint32 ptr_qual_name; /* pointer (to qualifier name) */
504 UNISTR2 uni_qual_name; /* qualifier name "\\qualifier" */
506 uint32 file_id; /* file id */
508 uint32 file_level; /* file level */
510 SRV_FILE_INFO_CTR *ctr;
512 uint32 preferred_len; /* preferred maximum length (0xffff ffff) */
513 ENUM_HND enum_hnd;
515 } SRV_Q_NET_FILE_ENUM;
518 /* SRV_R_NET_FILE_ENUM */
519 typedef struct r_net_file_enum_info
521 uint32 file_level; /* file level */
523 SRV_FILE_INFO_CTR *ctr;
525 uint32 total_entries; /* total number of files */
526 ENUM_HND enum_hnd;
528 uint32 status; /* return status */
530 } SRV_R_NET_FILE_ENUM;
532 /* SRV_INFO_101 */
533 typedef struct srv_info_101_info
535 uint32 platform_id; /* 0x500 */
536 uint32 ptr_name; /* pointer to server name */
537 uint32 ver_major; /* 0x4 */
538 uint32 ver_minor; /* 0x2 */
539 uint32 srv_type; /* browse etc type */
540 uint32 ptr_comment; /* pointer to server comment */
542 UNISTR2 uni_name; /* server name "server" */
543 UNISTR2 uni_comment; /* server comment "samba x.x.x blah" */
545 } SRV_INFO_101;
547 /* SRV_INFO_102 */
548 typedef struct srv_info_102_info
550 uint32 platform_id; /* 0x500 */
551 uint32 ptr_name; /* pointer to server name */
552 uint32 ver_major; /* 0x4 */
553 uint32 ver_minor; /* 0x2 */
554 uint32 srv_type; /* browse etc type */
555 uint32 ptr_comment; /* pointer to server comment */
556 uint32 users; /* 0xffff ffff*/
557 uint32 disc; /* 0xf */
558 uint32 hidden; /* 0x0 */
559 uint32 announce; /* 240 */
560 uint32 ann_delta; /* 3000 */
561 uint32 licenses; /* 0 */
562 uint32 ptr_usr_path; /* pointer to user path */
564 UNISTR2 uni_name; /* server name "server" */
565 UNISTR2 uni_comment; /* server comment "samba x.x.x blah" */
566 UNISTR2 uni_usr_path; /* "c:\" (eh?) */
568 } SRV_INFO_102;
571 /* SRV_INFO_CTR */
572 typedef struct srv_info_ctr_info
574 uint32 switch_value; /* switch value */
575 uint32 ptr_srv_ctr; /* pointer to server info */
576 union
578 SRV_INFO_102 sv102; /* server info level 102 */
579 SRV_INFO_101 sv101; /* server info level 101 */
581 } srv;
583 } SRV_INFO_CTR;
585 /* SRV_Q_NET_SRV_GET_INFO */
586 typedef struct q_net_srv_get_info
588 uint32 ptr_srv_name;
589 UNISTR2 uni_srv_name; /* "\\server" */
590 uint32 switch_value;
592 } SRV_Q_NET_SRV_GET_INFO;
594 /* SRV_R_NET_SRV_GET_INFO */
595 typedef struct r_net_srv_get_info
597 SRV_INFO_CTR *ctr;
599 uint32 status; /* return status */
601 } SRV_R_NET_SRV_GET_INFO;
603 /* SRV_Q_NET_SRV_SET_INFO */
604 typedef struct q_net_srv_set_info
606 uint32 ptr_srv_name;
607 UNISTR2 uni_srv_name; /* "\\server" */
608 uint32 switch_value;
610 SRV_INFO_CTR *ctr;
612 } SRV_Q_NET_SRV_SET_INFO;
615 /* SRV_R_NET_SRV_SET_INFO */
616 typedef struct r_net_srv_set_info
618 uint32 switch_value; /* switch value */
620 uint32 status; /* return status */
622 } SRV_R_NET_SRV_SET_INFO;
624 /* SRV_Q_NET_REMOTE_TOD */
625 typedef struct q_net_remote_tod
627 uint32 ptr_srv_name;
628 UNISTR2 uni_srv_name; /* "\\server" */
630 } SRV_Q_NET_REMOTE_TOD;
632 /* TIME_OF_DAY_INFO */
633 typedef struct time_of_day_info
635 uint32 elapsedt;
636 uint32 msecs;
637 uint32 hours;
638 uint32 mins;
639 uint32 secs;
640 uint32 hunds;
641 uint32 zone;
642 uint32 tintervals;
643 uint32 day;
644 uint32 month;
645 uint32 year;
646 uint32 weekday;
648 } TIME_OF_DAY_INFO;
650 /* SRV_R_NET_REMOTE_TOD */
651 typedef struct r_net_remote_tod
653 uint32 ptr_srv_tod; /* pointer to TOD */
654 TIME_OF_DAY_INFO *tod;
656 uint32 status; /* return status */
658 } SRV_R_NET_REMOTE_TOD;
661 #endif /* _RPC_SRVSVC_H */