Remove unused marshalling for SRV_NET_SESS_DEL.
[samba.git] / source / include / rpc_srvsvc.h
1 /*
2    Unix SMB/CIFS implementation.
3    SMB parameters and setup
4    Copyright (C) Andrew Tridgell 1992-1997
5    Copyright (C) Luke Kenneth Casson Leighton 1996-1997
6    Copyright (C) Paul Ashton 1997
7    Copyright (C) Nigel Williams 2001
8    Copyright (C) Gerald (Jerry) Carter 2006.
9
10    
11    This program is free software; you can redistribute it and/or modify
12    it under the terms of the GNU General Public License as published by
13    the Free Software Foundation; either version 3 of the License, or
14    (at your option) any later version.
15    
16    This program is distributed in the hope that it will be useful,
17    but WITHOUT ANY WARRANTY; without even the implied warranty of
18    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19    GNU General Public License for more details.
20    
21    You should have received a copy of the GNU General Public License
22    along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 */
24
25 #ifndef _RPC_SRVSVC_H /* _RPC_SRVSVC_H */
26 #define _RPC_SRVSVC_H 
27
28 /* srvsvc pipe */
29 #define SRV_NET_CONN_ENUM          0x08
30 #define SRV_NET_FILE_ENUM          0x09
31 #define SRV_NET_FILE_CLOSE         0x0b
32 #define SRV_NET_SESS_ENUM          0x0c
33 #define SRV_NET_SESS_DEL           0x0d
34 #define SRV_NET_SHARE_ADD          0x0e
35 #define SRV_NET_SHARE_ENUM_ALL     0x0f
36 #define SRV_NET_SHARE_GET_INFO     0x10
37 #define SRV_NET_SHARE_SET_INFO     0x11
38 #define SRV_NET_SHARE_DEL          0x12
39 #define SRV_NET_SHARE_DEL_STICKY   0x13
40 #define SRV_NET_SRV_GET_INFO       0x15
41 #define SRV_NET_SRV_SET_INFO       0x16
42 #define SRV_NET_DISK_ENUM          0x17
43 #define SRV_NET_REMOTE_TOD         0x1c
44 #define SRV_NET_NAME_VALIDATE      0x21
45 #define SRV_NET_SHARE_ENUM         0x24
46 #define SRV_NET_FILE_QUERY_SECDESC 0x27
47 #define SRV_NET_FILE_SET_SECDESC   0x28
48
49 #define MAX_SERVER_DISK_ENTRIES 15
50
51 typedef struct disk_info {
52         uint32  unknown;
53         UNISTR3 disk_name;
54 } DISK_INFO;
55
56 typedef struct disk_enum_container {
57         uint32 level;
58         uint32 entries_read;
59         uint32 unknown;
60         uint32 disk_info_ptr;
61         DISK_INFO *disk_info;
62 } DISK_ENUM_CONTAINER;
63
64 typedef struct net_srv_disk_enum {
65         uint32 ptr_srv_name;         /* pointer (to server name?) */
66         UNISTR2 uni_srv_name;        /* server name */
67
68         DISK_ENUM_CONTAINER disk_enum_ctr;
69
70         uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
71         uint32 total_entries;        /* total number of entries */
72         ENUM_HND enum_hnd;
73         WERROR status;               /* return status */
74 } SRV_Q_NET_DISK_ENUM, SRV_R_NET_DISK_ENUM;
75
76 /***************************/
77
78 /* oops - this is going to take up a *massive* amount of stack. */
79 /* the UNISTR2s already have 1024 uint16 chars in them... */
80
81 #define MAX_SESS_ENTRIES 32
82
83 typedef struct {
84         UNISTR2 *sharename;
85 } SESS_INFO_0;
86
87 typedef struct {
88         uint32 num_entries_read;
89         uint32 ptr_sess_info;
90         uint32 num_entries_read2;
91         SESS_INFO_0 info_0[MAX_SESS_ENTRIES];
92 } SRV_SESS_INFO_0;
93
94 typedef struct {
95         UNISTR2 *sharename;
96         UNISTR2 *username;
97         uint32 num_opens;
98         uint32 open_time;
99         uint32 idle_time;
100         uint32 user_flags;
101 } SESS_INFO_1;
102
103 typedef struct {
104         uint32 num_entries_read;
105         uint32 ptr_sess_info;
106         uint32 num_entries_read2;
107         SESS_INFO_1 info_1[MAX_SESS_ENTRIES];
108 } SRV_SESS_INFO_1;
109
110 typedef struct {
111         uint32 switch_value;
112         uint32 ptr_sess_ctr;
113         union {
114                 SRV_SESS_INFO_0 info0; 
115                 SRV_SESS_INFO_1 info1; 
116         } sess;
117
118 } SRV_SESS_INFO_CTR;
119
120 typedef struct {
121         UNISTR2 *servername;
122         UNISTR2 *qualifier;
123         UNISTR2 *username;
124         uint32 sess_level;
125         SRV_SESS_INFO_CTR *ctr;
126         uint32 preferred_len;
127         ENUM_HND enum_hnd;
128 } SRV_Q_NET_SESS_ENUM;
129
130 typedef struct {
131         uint32 sess_level; 
132         SRV_SESS_INFO_CTR *ctr;
133         uint32 total_entries;
134         ENUM_HND enum_hnd;
135         WERROR status;
136 } SRV_R_NET_SESS_ENUM;
137
138 /***************************/
139
140 /* CONN_INFO_0 (pointers to level 0 connection info strings) */
141 typedef struct ptr_conn_info0
142 {
143         uint32 id; /* connection id. */
144
145 } CONN_INFO_0;
146
147 /* oops - this is going to take up a *massive* amount of stack. */
148 /* the UNISTR2s already have 1024 uint16 chars in them... */
149 #define MAX_CONN_ENTRIES 32
150
151 /* SRV_CONN_INFO_0 */
152 typedef struct srv_conn_info_0_info
153 {
154         uint32 num_entries_read;                     /* EntriesRead */
155         uint32 ptr_conn_info;                       /* Buffer */
156         uint32 num_entries_read2;                    /* EntriesRead */
157
158         CONN_INFO_0     info_0    [MAX_CONN_ENTRIES]; /* connection entry pointers */
159
160 } SRV_CONN_INFO_0;
161
162 /* CONN_INFO_1 (pointers to level 1 connection info strings) */
163 typedef struct ptr_conn_info1
164 {
165         uint32 id;   /* connection id */
166         uint32 type; /* 0x3 */
167         uint32 num_opens;
168         uint32 num_users;
169         uint32 open_time;
170
171         uint32 ptr_usr_name; /* pointer to user name. */
172         uint32 ptr_net_name; /* pointer to network name (e.g IPC$). */
173
174 } CONN_INFO_1;
175
176 /* CONN_INFO_1_STR (level 1 connection info strings) */
177 typedef struct str_conn_info1
178 {
179         UNISTR2 uni_usr_name; /* unicode string of user */
180         UNISTR2 uni_net_name; /* unicode string of name */
181
182 } CONN_INFO_1_STR;
183
184 /* SRV_CONN_INFO_1 */
185 typedef struct srv_conn_info_1_info
186 {
187         uint32 num_entries_read;                     /* EntriesRead */
188         uint32 ptr_conn_info;                       /* Buffer */
189         uint32 num_entries_read2;                    /* EntriesRead */
190
191         CONN_INFO_1     info_1    [MAX_CONN_ENTRIES]; /* connection entry pointers */
192         CONN_INFO_1_STR info_1_str[MAX_CONN_ENTRIES]; /* connection entry strings */
193
194 } SRV_CONN_INFO_1;
195
196 /* SRV_CONN_INFO_CTR */
197 typedef struct srv_conn_info_ctr_info
198 {
199         uint32 switch_value;         /* switch value */
200         uint32 ptr_conn_ctr;       /* pointer to conn info union */
201         union
202     {
203                 SRV_CONN_INFO_0 info0; /* connection info level 0 */
204                 SRV_CONN_INFO_1 info1; /* connection info level 1 */
205
206     } conn;
207
208 } SRV_CONN_INFO_CTR;
209
210
211 /* SRV_Q_NET_CONN_ENUM */
212 typedef struct q_net_conn_enum_info
213 {
214         uint32 ptr_srv_name;         /* pointer (to server name) */
215         UNISTR2 uni_srv_name;        /* server name "\\server" */
216
217         uint32 ptr_qual_name;         /* pointer (to qualifier name) */
218         UNISTR2 uni_qual_name;        /* qualifier name "\\qualifier" */
219
220         uint32 conn_level;          /* connection level */
221
222         SRV_CONN_INFO_CTR *ctr;
223
224         uint32 preferred_len;        /* preferred maximum length (0xffff ffff) */
225         ENUM_HND enum_hnd;
226
227 } SRV_Q_NET_CONN_ENUM;
228
229 /* SRV_R_NET_CONN_ENUM */
230 typedef struct r_net_conn_enum_info
231 {
232         uint32 conn_level;          /* share level */
233
234         SRV_CONN_INFO_CTR *ctr;
235
236         uint32 total_entries;                    /* total number of entries */
237         ENUM_HND enum_hnd;
238
239         WERROR status;               /* return status */
240
241 } SRV_R_NET_CONN_ENUM;
242
243 /***************************/
244
245 typedef struct {
246         uint32 id;            /* file index */
247         uint32 perms;         /* file permissions. don't know what format */
248         uint32 num_locks;     /* file locks */
249         UNISTR2 *path;        /* file name */
250         UNISTR2 *user;        /* file owner */
251 } FILE_INFO_3;
252
253 typedef struct {
254         uint32 level;                /* switch value */
255         uint32 ptr_file_info;        /* pointer to file info union */
256
257         uint32 num_entries;
258         uint32 ptr_entries;
259         uint32 num_entries2;
260         union {
261                 FILE_INFO_3 *info3;
262         } file;
263
264 } SRV_FILE_INFO_CTR;
265
266 typedef struct {
267         UNISTR2 *servername;
268         UNISTR2 *qualifier;
269         UNISTR2 *username;
270         uint32 level;
271         SRV_FILE_INFO_CTR ctr;
272         uint32 preferred_len;     /* preferred maximum length (0xffff ffff) */
273         ENUM_HND enum_hnd;
274 } SRV_Q_NET_FILE_ENUM;
275
276 typedef struct {
277         uint32 level;   
278         SRV_FILE_INFO_CTR ctr;
279         uint32 total_entries;
280         ENUM_HND enum_hnd;
281         WERROR status;      
282 } SRV_R_NET_FILE_ENUM;
283
284 #endif /* _RPC_SRVSVC_H */