2 * Unix SMB/CIFS implementation.
3 * RPC Pipe client / server routines
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) Jeremy Allison 1999,
8 * Copyright (C) Nigel Williams 2001,
9 * Copyright (C) Jim McDonough (jmcd@us.ibm.com) 2002.
10 * Copyright (C) Gerald (Jerry) Carter 2006.
12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License as published by
14 * the Free Software Foundation; either version 2 of the License, or
15 * (at your option) any later version.
17 * This program is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * GNU General Public License for more details.
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, write to the Free Software
24 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 #define DBGC_CLASS DBGC_RPC_PARSE
32 /*******************************************************************
33 Inits a SH_INFO_0_STR structure
34 ********************************************************************/
36 void init_srv_share_info0_str(SH_INFO_0_STR
*sh0
, const char *net_name
)
38 DEBUG(5,("init_srv_share_info0_str\n"));
40 init_unistr2(&sh0
->uni_netname
, net_name
, UNI_STR_TERMINATE
);
43 /*******************************************************************
44 Reads or writes a structure.
45 ********************************************************************/
47 static BOOL
srv_io_share_info0_str(const char *desc
, SH_INFO_0_STR
*sh0
, prs_struct
*ps
, int depth
)
52 prs_debug(ps
, depth
, desc
, "srv_io_share_info0_str");
57 if(sh0
->ptrs
->ptr_netname
)
58 if(!smb_io_unistr2("", &sh0
->uni_netname
, True
, ps
, depth
))
64 /*******************************************************************
65 makes a SH_INFO_0 structure
66 ********************************************************************/
68 void init_srv_share_info0(SH_INFO_0
*sh0
, const char *net_name
)
70 DEBUG(5,("init_srv_share_info0: %s\n", net_name
));
72 sh0
->ptr_netname
= (net_name
!= NULL
) ? 1 : 0;
75 /*******************************************************************
76 Reads or writes a structure.
77 ********************************************************************/
79 static BOOL
srv_io_share_info0(const char *desc
, SH_INFO_0
*sh0
, prs_struct
*ps
, int depth
)
84 prs_debug(ps
, depth
, desc
, "srv_io_share_info0");
90 if(!prs_uint32("ptr_netname", ps
, depth
, &sh0
->ptr_netname
))
96 /*******************************************************************
97 Inits a SH_INFO_1_STR structure
98 ********************************************************************/
100 void init_srv_share_info1_str(SH_INFO_1_STR
*sh1
, const char *net_name
, const char *remark
)
102 DEBUG(5,("init_srv_share_info1_str\n"));
104 init_unistr2(&sh1
->uni_netname
, net_name
, UNI_STR_TERMINATE
);
105 init_unistr2(&sh1
->uni_remark
, remark
, UNI_STR_TERMINATE
);
108 /*******************************************************************
109 Reads or writes a structure.
110 ********************************************************************/
112 static BOOL
srv_io_share_info1_str(const char *desc
, SH_INFO_1_STR
*sh1
, prs_struct
*ps
, int depth
)
117 prs_debug(ps
, depth
, desc
, "srv_io_share_info1_str");
123 if(sh1
->ptrs
->ptr_netname
)
124 if(!smb_io_unistr2("", &sh1
->uni_netname
, True
, ps
, depth
))
130 if(sh1
->ptrs
->ptr_remark
)
131 if(!smb_io_unistr2("", &sh1
->uni_remark
, True
, ps
, depth
))
137 /*******************************************************************
138 makes a SH_INFO_1 structure
139 ********************************************************************/
141 void init_srv_share_info1(SH_INFO_1
*sh1
, const char *net_name
, uint32 type
, const char *remark
)
143 DEBUG(5,("init_srv_share_info1: %s %8x %s\n", net_name
, type
, remark
));
145 sh1
->ptr_netname
= (net_name
!= NULL
) ? 1 : 0;
147 sh1
->ptr_remark
= (remark
!= NULL
) ? 1 : 0;
150 /*******************************************************************
151 Reads or writes a structure.
152 ********************************************************************/
154 static BOOL
srv_io_share_info1(const char *desc
, SH_INFO_1
*sh1
, prs_struct
*ps
, int depth
)
159 prs_debug(ps
, depth
, desc
, "srv_io_share_info1");
165 if(!prs_uint32("ptr_netname", ps
, depth
, &sh1
->ptr_netname
))
167 if(!prs_uint32("type ", ps
, depth
, &sh1
->type
))
169 if(!prs_uint32("ptr_remark ", ps
, depth
, &sh1
->ptr_remark
))
175 /*******************************************************************
176 Inits a SH_INFO_2_STR structure
177 ********************************************************************/
179 void init_srv_share_info2_str(SH_INFO_2_STR
*sh2
,
180 const char *net_name
, const char *remark
,
181 const char *path
, const char *passwd
)
183 DEBUG(5,("init_srv_share_info2_str\n"));
185 init_unistr2(&sh2
->uni_netname
, net_name
, UNI_STR_TERMINATE
);
186 init_unistr2(&sh2
->uni_remark
, remark
, UNI_STR_TERMINATE
);
187 init_unistr2(&sh2
->uni_path
, path
, UNI_STR_TERMINATE
);
188 init_unistr2(&sh2
->uni_passwd
, passwd
, UNI_STR_TERMINATE
);
191 /*******************************************************************
192 Reads or writes a structure.
193 ********************************************************************/
195 static BOOL
srv_io_share_info2_str(const char *desc
, SH_INFO_2
*sh
, SH_INFO_2_STR
*sh2
, prs_struct
*ps
, int depth
)
200 if (UNMARSHALLING(ps
))
203 prs_debug(ps
, depth
, desc
, "srv_io_share_info2_str");
210 if(!smb_io_unistr2("", &sh2
->uni_netname
, True
, ps
, depth
))
214 if(!smb_io_unistr2("", &sh2
->uni_remark
, True
, ps
, depth
))
218 if(!smb_io_unistr2("", &sh2
->uni_path
, True
, ps
, depth
))
222 if(!smb_io_unistr2("", &sh2
->uni_passwd
, True
, ps
, depth
))
228 /*******************************************************************
229 Inits a SH_INFO_2 structure
230 ********************************************************************/
232 void init_srv_share_info2(SH_INFO_2
*sh2
,
233 const char *net_name
, uint32 type
, const char *remark
,
234 uint32 perms
, uint32 max_uses
, uint32 num_uses
,
235 const char *path
, const char *passwd
)
237 DEBUG(5,("init_srv_share_info2: %s %8x %s\n", net_name
, type
, remark
));
239 sh2
->ptr_netname
= (net_name
!= NULL
) ? 1 : 0;
241 sh2
->ptr_remark
= (remark
!= NULL
) ? 1 : 0;
243 sh2
->max_uses
= max_uses
;
244 sh2
->num_uses
= num_uses
;
245 sh2
->ptr_path
= (path
!= NULL
) ? 1 : 0;
246 sh2
->ptr_passwd
= (passwd
!= NULL
) ? 1 : 0;
249 /*******************************************************************
250 Reads or writes a structure.
251 ********************************************************************/
253 static BOOL
srv_io_share_info2(const char *desc
, SH_INFO_2
*sh2
, prs_struct
*ps
, int depth
)
258 prs_debug(ps
, depth
, desc
, "srv_io_share_info2");
264 if(!prs_uint32("ptr_netname", ps
, depth
, &sh2
->ptr_netname
))
266 if(!prs_uint32("type ", ps
, depth
, &sh2
->type
))
268 if(!prs_uint32("ptr_remark ", ps
, depth
, &sh2
->ptr_remark
))
270 if(!prs_uint32("perms ", ps
, depth
, &sh2
->perms
))
272 if(!prs_uint32("max_uses ", ps
, depth
, &sh2
->max_uses
))
274 if(!prs_uint32("num_uses ", ps
, depth
, &sh2
->num_uses
))
276 if(!prs_uint32("ptr_path ", ps
, depth
, &sh2
->ptr_path
))
278 if(!prs_uint32("ptr_passwd ", ps
, depth
, &sh2
->ptr_passwd
))
284 /*******************************************************************
285 Inits a SH_INFO_501_STR structure
286 ********************************************************************/
288 void init_srv_share_info501_str(SH_INFO_501_STR
*sh501
,
289 const char *net_name
, const char *remark
)
291 DEBUG(5,("init_srv_share_info501_str\n"));
293 init_unistr2(&sh501
->uni_netname
, net_name
, UNI_STR_TERMINATE
);
294 init_unistr2(&sh501
->uni_remark
, remark
, UNI_STR_TERMINATE
);
297 /*******************************************************************
298 Inits a SH_INFO_2 structure
299 *******************************************************************/
301 void init_srv_share_info501(SH_INFO_501
*sh501
, const char *net_name
, uint32 type
, const char *remark
, uint32 csc_policy
)
303 DEBUG(5,("init_srv_share_info501: %s %8x %s %08x\n", net_name
, type
,
304 remark
, csc_policy
));
308 sh501
->ptr_netname
= (net_name
!= NULL
) ? 1 : 0;
310 sh501
->ptr_remark
= (remark
!= NULL
) ? 1 : 0;
311 sh501
->csc_policy
= csc_policy
;
314 /*******************************************************************
315 Reads of writes a structure.
316 *******************************************************************/
318 static BOOL
srv_io_share_info501(const char *desc
, SH_INFO_501
*sh501
, prs_struct
*ps
, int depth
)
323 prs_debug(ps
, depth
, desc
, "srv_io_share_info501");
329 if (!prs_uint32("ptr_netname", ps
, depth
, &sh501
->ptr_netname
))
331 if (!prs_uint32("type ", ps
, depth
, &sh501
->type
))
333 if (!prs_uint32("ptr_remark ", ps
, depth
, &sh501
->ptr_remark
))
335 if (!prs_uint32("csc_policy ", ps
, depth
, &sh501
->csc_policy
))
341 /*******************************************************************
342 Reads or writes a structure.
343 ********************************************************************/
345 static BOOL
srv_io_share_info501_str(const char *desc
, SH_INFO_501_STR
*sh501
, prs_struct
*ps
, int depth
)
350 prs_debug(ps
, depth
, desc
, "srv_io_share_info501_str");
355 if(!smb_io_unistr2("", &sh501
->uni_netname
, True
, ps
, depth
))
360 if(!smb_io_unistr2("", &sh501
->uni_remark
, True
, ps
, depth
))
366 /*******************************************************************
367 Inits a SH_INFO_502 structure
368 ********************************************************************/
370 void init_srv_share_info502(SH_INFO_502
*sh502
,
371 const char *net_name
, uint32 type
, const char *remark
,
372 uint32 perms
, uint32 max_uses
, uint32 num_uses
,
373 const char *path
, const char *passwd
, SEC_DESC
*psd
, size_t sd_size
)
375 DEBUG(5,("init_srv_share_info502: %s %8x %s\n", net_name
, type
, remark
));
379 sh502
->ptr_netname
= (net_name
!= NULL
) ? 1 : 0;
381 sh502
->ptr_remark
= (remark
!= NULL
) ? 1 : 0;
382 sh502
->perms
= perms
;
383 sh502
->max_uses
= max_uses
;
384 sh502
->num_uses
= num_uses
;
385 sh502
->ptr_path
= (path
!= NULL
) ? 1 : 0;
386 sh502
->ptr_passwd
= (passwd
!= NULL
) ? 1 : 0;
387 sh502
->reserved
= 0; /* actual size within rpc */
388 sh502
->sd_size
= (uint32
)sd_size
;
389 sh502
->ptr_sd
= (psd
!= NULL
) ? 1 : 0;
392 /*******************************************************************
393 Reads or writes a structure.
394 ********************************************************************/
396 static BOOL
srv_io_share_info502(const char *desc
, SH_INFO_502
*sh502
, prs_struct
*ps
, int depth
)
401 prs_debug(ps
, depth
, desc
, "srv_io_share_info502");
407 if(!prs_uint32("ptr_netname", ps
, depth
, &sh502
->ptr_netname
))
409 if(!prs_uint32("type ", ps
, depth
, &sh502
->type
))
411 if(!prs_uint32("ptr_remark ", ps
, depth
, &sh502
->ptr_remark
))
413 if(!prs_uint32("perms ", ps
, depth
, &sh502
->perms
))
415 if(!prs_uint32("max_uses ", ps
, depth
, &sh502
->max_uses
))
417 if(!prs_uint32("num_uses ", ps
, depth
, &sh502
->num_uses
))
419 if(!prs_uint32("ptr_path ", ps
, depth
, &sh502
->ptr_path
))
421 if(!prs_uint32("ptr_passwd ", ps
, depth
, &sh502
->ptr_passwd
))
423 if(!prs_uint32_pre("reserved ", ps
, depth
, &sh502
->reserved
, &sh502
->reserved_offset
))
425 if(!prs_uint32("ptr_sd ", ps
, depth
, &sh502
->ptr_sd
))
431 /*******************************************************************
432 Inits a SH_INFO_502_STR structure
433 ********************************************************************/
435 void init_srv_share_info502_str(SH_INFO_502_STR
*sh502str
,
436 const char *net_name
, const char *remark
,
437 const char *path
, const char *passwd
, SEC_DESC
*psd
, size_t sd_size
)
439 DEBUG(5,("init_srv_share_info502_str\n"));
441 init_unistr2(&sh502str
->uni_netname
, net_name
, UNI_STR_TERMINATE
);
442 init_unistr2(&sh502str
->uni_remark
, remark
, UNI_STR_TERMINATE
);
443 init_unistr2(&sh502str
->uni_path
, path
, UNI_STR_TERMINATE
);
444 init_unistr2(&sh502str
->uni_passwd
, passwd
, UNI_STR_TERMINATE
);
446 sh502str
->reserved
= 0;
447 sh502str
->sd_size
= sd_size
;
450 /*******************************************************************
451 Reads or writes a structure.
452 ********************************************************************/
454 static BOOL
srv_io_share_info502_str(const char *desc
, SH_INFO_502_STR
*sh502
, prs_struct
*ps
, int depth
)
459 prs_debug(ps
, depth
, desc
, "srv_io_share_info502_str");
465 if(sh502
->ptrs
->ptr_netname
) {
466 if(!smb_io_unistr2("", &sh502
->uni_netname
, True
, ps
, depth
))
473 if(sh502
->ptrs
->ptr_remark
) {
474 if(!smb_io_unistr2("", &sh502
->uni_remark
, True
, ps
, depth
))
481 if(sh502
->ptrs
->ptr_path
) {
482 if(!smb_io_unistr2("", &sh502
->uni_path
, True
, ps
, depth
))
489 if(sh502
->ptrs
->ptr_passwd
) {
490 if(!smb_io_unistr2("", &sh502
->uni_passwd
, True
, ps
, depth
))
497 if(sh502
->ptrs
->ptr_sd
) {
499 uint32 reserved_offset
;
501 if(!prs_uint32_pre("reserved ", ps
, depth
, &sh502
->reserved
, &reserved_offset
))
504 old_offset
= prs_offset(ps
);
506 if (!sec_io_desc(desc
, &sh502
->sd
, ps
, depth
))
509 if(UNMARSHALLING(ps
)) {
511 sh502
->ptrs
->sd_size
= sh502
->sd_size
= sec_desc_size(sh502
->sd
);
513 prs_set_offset(ps
, old_offset
+ sh502
->reserved
);
518 if(MARSHALLING(ps
)) {
520 sh502
->ptrs
->reserved
= sh502
->reserved
= prs_offset(ps
) - old_offset
;
523 if(!prs_uint32_post("reserved ", ps
, depth
,
524 &sh502
->reserved
, reserved_offset
, sh502
->reserved
))
526 if(!prs_uint32_post("reserved ", ps
, depth
,
527 &sh502
->ptrs
->reserved
, sh502
->ptrs
->reserved_offset
, sh502
->ptrs
->reserved
))
534 /*******************************************************************
535 Inits a SH_INFO_1004_STR structure
536 ********************************************************************/
538 void init_srv_share_info1004_str(SH_INFO_1004_STR
*sh1004
, const char *remark
)
540 DEBUG(5,("init_srv_share_info1004_str\n"));
542 init_unistr2(&sh1004
->uni_remark
, remark
, UNI_STR_TERMINATE
);
545 /*******************************************************************
546 Reads or writes a structure.
547 ********************************************************************/
549 static BOOL
srv_io_share_info1004_str(const char *desc
, SH_INFO_1004_STR
*sh1004
, prs_struct
*ps
, int depth
)
554 prs_debug(ps
, depth
, desc
, "srv_io_share_info1004_str");
559 if(sh1004
->ptrs
->ptr_remark
)
560 if(!smb_io_unistr2("", &sh1004
->uni_remark
, True
, ps
, depth
))
566 /*******************************************************************
567 makes a SH_INFO_1004 structure
568 ********************************************************************/
570 void init_srv_share_info1004(SH_INFO_1004
*sh1004
, const char *remark
)
572 DEBUG(5,("init_srv_share_info1004: %s\n", remark
));
574 sh1004
->ptr_remark
= (remark
!= NULL
) ? 1 : 0;
577 /*******************************************************************
578 Reads or writes a structure.
579 ********************************************************************/
581 static BOOL
srv_io_share_info1004(const char *desc
, SH_INFO_1004
*sh1004
, prs_struct
*ps
, int depth
)
586 prs_debug(ps
, depth
, desc
, "srv_io_share_info1004");
592 if(!prs_uint32("ptr_remark", ps
, depth
, &sh1004
->ptr_remark
))
598 /*******************************************************************
599 Reads or writes a structure.
600 ********************************************************************/
602 static BOOL
srv_io_share_info1005(const char* desc
, SRV_SHARE_INFO_1005
* sh1005
, prs_struct
* ps
, int depth
)
607 prs_debug(ps
, depth
, desc
, "srv_io_share_info1005");
613 if(!prs_uint32("share_info_flags", ps
, depth
,
614 &sh1005
->share_info_flags
))
620 /*******************************************************************
621 Reads or writes a structure.
622 ********************************************************************/
624 static BOOL
srv_io_share_info1006(const char* desc
, SRV_SHARE_INFO_1006
* sh1006
, prs_struct
* ps
, int depth
)
629 prs_debug(ps
, depth
, desc
, "srv_io_share_info1006");
635 if(!prs_uint32("max uses ", ps
, depth
, &sh1006
->max_uses
))
641 /*******************************************************************
642 Inits a SH_INFO_1007_STR structure
643 ********************************************************************/
645 void init_srv_share_info1007_str(SH_INFO_1007_STR
*sh1007
, const char *alternate_directory_name
)
647 DEBUG(5,("init_srv_share_info1007_str\n"));
649 init_unistr2(&sh1007
->uni_AlternateDirectoryName
, alternate_directory_name
, UNI_STR_TERMINATE
);
652 /*******************************************************************
653 Reads or writes a structure.
654 ********************************************************************/
656 static BOOL
srv_io_share_info1007_str(const char *desc
, SH_INFO_1007_STR
*sh1007
, prs_struct
*ps
, int depth
)
661 prs_debug(ps
, depth
, desc
, "srv_io_share_info1007_str");
666 if(sh1007
->ptrs
->ptr_AlternateDirectoryName
)
667 if(!smb_io_unistr2("", &sh1007
->uni_AlternateDirectoryName
, True
, ps
, depth
))
673 /*******************************************************************
674 makes a SH_INFO_1007 structure
675 ********************************************************************/
677 void init_srv_share_info1007(SH_INFO_1007
*sh1007
, uint32 flags
, const char *alternate_directory_name
)
679 DEBUG(5,("init_srv_share_info1007: %s\n", alternate_directory_name
));
681 sh1007
->flags
= flags
;
682 sh1007
->ptr_AlternateDirectoryName
= (alternate_directory_name
!= NULL
) ? 1 : 0;
685 /*******************************************************************
686 Reads or writes a structure.
687 ********************************************************************/
689 static BOOL
srv_io_share_info1007(const char *desc
, SH_INFO_1007
*sh1007
, prs_struct
*ps
, int depth
)
694 prs_debug(ps
, depth
, desc
, "srv_io_share_info1007");
700 if(!prs_uint32("flags ", ps
, depth
, &sh1007
->flags
))
702 if(!prs_uint32("ptr_Alter..", ps
, depth
, &sh1007
->ptr_AlternateDirectoryName
))
708 /*******************************************************************
709 Reads or writes a structure.
710 ********************************************************************/
712 static BOOL
srv_io_share_info1501(const char* desc
, SRV_SHARE_INFO_1501
* sh1501
,
713 prs_struct
* ps
, int depth
)
718 prs_debug(ps
, depth
, desc
, "srv_io_share_info1501");
724 if (!sec_io_desc_buf(desc
, &sh1501
->sdb
, ps
, depth
))
730 /*******************************************************************
731 Reads or writes a structure.
732 ********************************************************************/
734 static BOOL
srv_io_srv_share_ctr(const char *desc
, SRV_SHARE_INFO_CTR
*ctr
, prs_struct
*ps
, int depth
)
739 prs_debug(ps
, depth
, desc
, "srv_io_srv_share_ctr");
742 if (UNMARSHALLING(ps
)) {
743 memset(ctr
, '\0', sizeof(SRV_SHARE_INFO_CTR
));
749 if(!prs_uint32("info_level", ps
, depth
, &ctr
->info_level
))
752 if(!prs_uint32("switch_value", ps
, depth
, &ctr
->switch_value
))
754 if(!prs_uint32("ptr_share_info", ps
, depth
, &ctr
->ptr_share_info
))
757 if (ctr
->ptr_share_info
== 0)
760 if(!prs_uint32("num_entries", ps
, depth
, &ctr
->num_entries
))
762 if(!prs_uint32("ptr_entries", ps
, depth
, &ctr
->ptr_entries
))
765 if (ctr
->ptr_entries
== 0) {
766 if (ctr
->num_entries
== 0)
772 if(!prs_uint32("num_entries2", ps
, depth
, &ctr
->num_entries2
))
775 if (ctr
->num_entries2
!= ctr
->num_entries
)
778 switch (ctr
->switch_value
) {
782 SRV_SHARE_INFO_0
*info0
= ctr
->share
.info0
;
783 int num_entries
= ctr
->num_entries
;
786 if (UNMARSHALLING(ps
) && num_entries
) {
787 if (!(info0
= PRS_ALLOC_MEM(ps
, SRV_SHARE_INFO_0
, num_entries
)))
789 ctr
->share
.info0
= info0
;
792 for (i
= 0; i
< num_entries
; i
++) {
793 if(!srv_io_share_info0("", &info0
[i
].info_0
, ps
, depth
))
797 for (i
= 0; i
< num_entries
; i
++) {
798 info0
[i
].info_0_str
.ptrs
= &info0
[i
].info_0
;
799 if(!srv_io_share_info0_str("", &info0
[i
].info_0_str
, ps
, depth
))
808 SRV_SHARE_INFO_1
*info1
= ctr
->share
.info1
;
809 int num_entries
= ctr
->num_entries
;
812 if (UNMARSHALLING(ps
) && num_entries
) {
813 if (!(info1
= PRS_ALLOC_MEM(ps
, SRV_SHARE_INFO_1
, num_entries
)))
815 ctr
->share
.info1
= info1
;
818 for (i
= 0; i
< num_entries
; i
++) {
819 if(!srv_io_share_info1("", &info1
[i
].info_1
, ps
, depth
))
823 for (i
= 0; i
< num_entries
; i
++) {
824 info1
[i
].info_1_str
.ptrs
= &info1
[i
].info_1
;
825 if(!srv_io_share_info1_str("", &info1
[i
].info_1_str
, ps
, depth
))
834 SRV_SHARE_INFO_2
*info2
= ctr
->share
.info2
;
835 int num_entries
= ctr
->num_entries
;
838 if (UNMARSHALLING(ps
) && num_entries
) {
839 if (!(info2
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_2
,num_entries
)))
841 ctr
->share
.info2
= info2
;
844 for (i
= 0; i
< num_entries
; i
++) {
845 if(!srv_io_share_info2("", &info2
[i
].info_2
, ps
, depth
))
849 for (i
= 0; i
< num_entries
; i
++) {
850 if(!srv_io_share_info2_str("", &info2
[i
].info_2
, &info2
[i
].info_2_str
, ps
, depth
))
859 SRV_SHARE_INFO_501
*info501
= ctr
->share
.info501
;
860 int num_entries
= ctr
->num_entries
;
863 if (UNMARSHALLING(ps
) && num_entries
) {
864 if (!(info501
= PRS_ALLOC_MEM(ps
, SRV_SHARE_INFO_501
, num_entries
)))
866 ctr
->share
.info501
= info501
;
869 for (i
= 0; i
< num_entries
; i
++) {
870 if (!srv_io_share_info501("", &info501
[i
].info_501
, ps
, depth
))
874 for (i
= 0; i
< num_entries
; i
++) {
875 if (!srv_io_share_info501_str("", &info501
[i
].info_501_str
, ps
, depth
))
884 SRV_SHARE_INFO_502
*info502
= ctr
->share
.info502
;
885 int num_entries
= ctr
->num_entries
;
888 if (UNMARSHALLING(ps
) && num_entries
) {
889 if (!(info502
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_502
,num_entries
)))
891 ctr
->share
.info502
= info502
;
894 for (i
= 0; i
< num_entries
; i
++) {
895 if(!srv_io_share_info502("", &info502
[i
].info_502
, ps
, depth
))
899 for (i
= 0; i
< num_entries
; i
++) {
900 info502
[i
].info_502_str
.ptrs
= &info502
[i
].info_502
;
901 if(!srv_io_share_info502_str("", &info502
[i
].info_502_str
, ps
, depth
))
910 SRV_SHARE_INFO_1004
*info1004
= ctr
->share
.info1004
;
911 int num_entries
= ctr
->num_entries
;
914 if (UNMARSHALLING(ps
) && num_entries
) {
915 if (!(info1004
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_1004
,num_entries
)))
917 ctr
->share
.info1004
= info1004
;
920 for (i
= 0; i
< num_entries
; i
++) {
921 if(!srv_io_share_info1004("", &info1004
[i
].info_1004
, ps
, depth
))
925 for (i
= 0; i
< num_entries
; i
++) {
926 info1004
[i
].info_1004_str
.ptrs
= &info1004
[i
].info_1004
;
927 if(!srv_io_share_info1004_str("", &info1004
[i
].info_1004_str
, ps
, depth
))
936 SRV_SHARE_INFO_1005
*info1005
= ctr
->share
.info1005
;
937 int num_entries
= ctr
->num_entries
;
940 if (UNMARSHALLING(ps
) && num_entries
) {
941 if (!(info1005
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_1005
,num_entries
)))
943 ctr
->share
.info1005
= info1005
;
946 for (i
= 0; i
< num_entries
; i
++) {
947 if(!srv_io_share_info1005("", &info1005
[i
], ps
, depth
))
956 SRV_SHARE_INFO_1006
*info1006
= ctr
->share
.info1006
;
957 int num_entries
= ctr
->num_entries
;
960 if (UNMARSHALLING(ps
) && num_entries
) {
961 if (!(info1006
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_1006
,num_entries
)))
963 ctr
->share
.info1006
= info1006
;
966 for (i
= 0; i
< num_entries
; i
++) {
967 if(!srv_io_share_info1006("", &info1006
[i
], ps
, depth
))
976 SRV_SHARE_INFO_1007
*info1007
= ctr
->share
.info1007
;
977 int num_entries
= ctr
->num_entries
;
980 if (UNMARSHALLING(ps
) && num_entries
) {
981 if (!(info1007
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_1007
,num_entries
)))
983 ctr
->share
.info1007
= info1007
;
986 for (i
= 0; i
< num_entries
; i
++) {
987 if(!srv_io_share_info1007("", &info1007
[i
].info_1007
, ps
, depth
))
991 for (i
= 0; i
< num_entries
; i
++) {
992 info1007
[i
].info_1007_str
.ptrs
= &info1007
[i
].info_1007
;
993 if(!srv_io_share_info1007_str("", &info1007
[i
].info_1007_str
, ps
, depth
))
1002 SRV_SHARE_INFO_1501
*info1501
= ctr
->share
.info1501
;
1003 int num_entries
= ctr
->num_entries
;
1006 if (UNMARSHALLING(ps
) && num_entries
) {
1007 if (!(info1501
= PRS_ALLOC_MEM(ps
,SRV_SHARE_INFO_1501
,num_entries
)))
1009 ctr
->share
.info1501
= info1501
;
1012 for (i
= 0; i
< num_entries
; i
++) {
1013 if(!srv_io_share_info1501("", &info1501
[i
], ps
, depth
))
1021 DEBUG(5,("%s no share info at switch_value %d\n",
1022 tab_depth(depth
), ctr
->switch_value
));
1029 /*******************************************************************
1030 Inits a SRV_Q_NET_SHARE_ENUM structure.
1031 ********************************************************************/
1033 void init_srv_q_net_share_enum(SRV_Q_NET_SHARE_ENUM
*q_n
,
1034 const char *srv_name
, uint32 info_level
,
1035 uint32 preferred_len
, ENUM_HND
*hnd
)
1038 DEBUG(5,("init_q_net_share_enum\n"));
1040 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
1042 q_n
->ctr
.info_level
= q_n
->ctr
.switch_value
= info_level
;
1043 q_n
->ctr
.ptr_share_info
= 1;
1044 q_n
->ctr
.num_entries
= 0;
1045 q_n
->ctr
.ptr_entries
= 0;
1046 q_n
->ctr
.num_entries2
= 0;
1047 q_n
->preferred_len
= preferred_len
;
1049 memcpy(&q_n
->enum_hnd
, hnd
, sizeof(*hnd
));
1052 /*******************************************************************
1053 Reads or writes a structure.
1054 ********************************************************************/
1056 BOOL
srv_io_q_net_share_enum(const char *desc
, SRV_Q_NET_SHARE_ENUM
*q_n
, prs_struct
*ps
, int depth
)
1061 prs_debug(ps
, depth
, desc
, "srv_io_q_net_share_enum");
1067 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1069 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1072 if(!srv_io_srv_share_ctr("share_ctr", &q_n
->ctr
, ps
, depth
))
1078 if(!prs_uint32("preferred_len", ps
, depth
, &q_n
->preferred_len
))
1081 if(!smb_io_enum_hnd("enum_hnd", &q_n
->enum_hnd
, ps
, depth
))
1087 /*******************************************************************
1088 Reads or writes a structure.
1089 ********************************************************************/
1091 BOOL
srv_io_r_net_share_enum(const char *desc
, SRV_R_NET_SHARE_ENUM
*r_n
, prs_struct
*ps
, int depth
)
1096 prs_debug(ps
, depth
, desc
, "srv_io_r_net_share_enum");
1099 if(!srv_io_srv_share_ctr("share_ctr", &r_n
->ctr
, ps
, depth
))
1105 if(!prs_uint32("total_entries", ps
, depth
, &r_n
->total_entries
))
1108 if(!smb_io_enum_hnd("enum_hnd", &r_n
->enum_hnd
, ps
, depth
))
1111 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1117 /*******************************************************************
1118 initialises a structure.
1119 ********************************************************************/
1121 BOOL
init_srv_q_net_share_get_info(SRV_Q_NET_SHARE_GET_INFO
*q_n
, const char *srv_name
, const char *share_name
, uint32 info_level
)
1124 uint32 ptr_share_name
;
1126 DEBUG(5,("init_srv_q_net_share_get_info\n"));
1128 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
1129 init_buf_unistr2(&q_n
->uni_share_name
, &ptr_share_name
, share_name
);
1131 q_n
->info_level
= info_level
;
1136 /*******************************************************************
1137 Reads or writes a structure.
1138 ********************************************************************/
1140 BOOL
srv_io_q_net_share_get_info(const char *desc
, SRV_Q_NET_SHARE_GET_INFO
*q_n
, prs_struct
*ps
, int depth
)
1145 prs_debug(ps
, depth
, desc
, "srv_io_q_net_share_get_info");
1151 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1153 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1156 if(!smb_io_unistr2("", &q_n
->uni_share_name
, True
, ps
, depth
))
1162 if(!prs_uint32("info_level", ps
, depth
, &q_n
->info_level
))
1168 /*******************************************************************
1169 Reads or writes a structure.
1170 ********************************************************************/
1172 static BOOL
srv_io_srv_share_info(const char *desc
, prs_struct
*ps
, int depth
, SRV_SHARE_INFO
*r_n
)
1177 prs_debug(ps
, depth
, desc
, "srv_io_srv_share_info");
1183 if(!prs_uint32("switch_value ", ps
, depth
, &r_n
->switch_value
))
1186 if(!prs_uint32("ptr_share_ctr", ps
, depth
, &r_n
->ptr_share_ctr
))
1189 if (r_n
->ptr_share_ctr
!= 0) {
1190 switch (r_n
->switch_value
) {
1192 if(!srv_io_share_info0("", &r_n
->share
.info0
.info_0
, ps
, depth
))
1195 /* allow access to pointers in the str part. */
1196 r_n
->share
.info0
.info_0_str
.ptrs
= &r_n
->share
.info0
.info_0
;
1198 if(!srv_io_share_info0_str("", &r_n
->share
.info0
.info_0_str
, ps
, depth
))
1203 if(!srv_io_share_info1("", &r_n
->share
.info1
.info_1
, ps
, depth
))
1206 /* allow access to pointers in the str part. */
1207 r_n
->share
.info1
.info_1_str
.ptrs
= &r_n
->share
.info1
.info_1
;
1209 if(!srv_io_share_info1_str("", &r_n
->share
.info1
.info_1_str
, ps
, depth
))
1214 if(!srv_io_share_info2("", &r_n
->share
.info2
.info_2
, ps
, depth
))
1217 if(!srv_io_share_info2_str("", &r_n
->share
.info2
.info_2
, &r_n
->share
.info2
.info_2_str
, ps
, depth
))
1222 if (!srv_io_share_info501("", &r_n
->share
.info501
.info_501
, ps
, depth
))
1224 if (!srv_io_share_info501_str("", &r_n
->share
.info501
.info_501_str
, ps
, depth
))
1229 if(!srv_io_share_info502("", &r_n
->share
.info502
.info_502
, ps
, depth
))
1232 /* allow access to pointers in the str part. */
1233 r_n
->share
.info502
.info_502_str
.ptrs
= &r_n
->share
.info502
.info_502
;
1235 if(!srv_io_share_info502_str("", &r_n
->share
.info502
.info_502_str
, ps
, depth
))
1239 if(!srv_io_share_info1004("", &r_n
->share
.info1004
.info_1004
, ps
, depth
))
1242 /* allow access to pointers in the str part. */
1243 r_n
->share
.info1004
.info_1004_str
.ptrs
= &r_n
->share
.info1004
.info_1004
;
1245 if(!srv_io_share_info1004_str("", &r_n
->share
.info1004
.info_1004_str
, ps
, depth
))
1249 if(!srv_io_share_info1005("", &r_n
->share
.info1005
, ps
, depth
))
1253 if(!srv_io_share_info1006("", &r_n
->share
.info1006
, ps
, depth
))
1257 if(!srv_io_share_info1007("", &r_n
->share
.info1007
.info_1007
, ps
, depth
))
1260 /* allow access to pointers in the str part. */
1261 r_n
->share
.info1007
.info_1007_str
.ptrs
= &r_n
->share
.info1007
.info_1007
;
1263 if(!srv_io_share_info1007_str("", &r_n
->share
.info1007
.info_1007_str
, ps
, depth
))
1267 if (!srv_io_share_info1501("", &r_n
->share
.info1501
, ps
, depth
))
1270 DEBUG(5,("%s no share info at switch_value %d\n",
1271 tab_depth(depth
), r_n
->switch_value
));
1279 /*******************************************************************
1280 Reads or writes a structure.
1281 ********************************************************************/
1283 BOOL
srv_io_r_net_share_get_info(const char *desc
, SRV_R_NET_SHARE_GET_INFO
*r_n
, prs_struct
*ps
, int depth
)
1288 prs_debug(ps
, depth
, desc
, "srv_io_r_net_share_get_info");
1294 if(!srv_io_srv_share_info("info ", ps
, depth
, &r_n
->info
))
1300 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1306 /*******************************************************************
1307 intialises a structure.
1308 ********************************************************************/
1310 BOOL
init_srv_q_net_share_set_info(SRV_Q_NET_SHARE_SET_INFO
*q_n
,
1311 const char *srv_name
,
1312 const char *share_name
,
1314 const SRV_SHARE_INFO
*info
)
1317 uint32 ptr_share_name
;
1319 DEBUG(5,("init_srv_q_net_share_set_info\n"));
1321 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
1322 init_buf_unistr2(&q_n
->uni_share_name
, &ptr_share_name
, share_name
);
1324 q_n
->info_level
= info_level
;
1328 q_n
->ptr_parm_error
= 1;
1329 q_n
->parm_error
= 0;
1334 /*******************************************************************
1335 Reads or writes a structure.
1336 ********************************************************************/
1338 BOOL
srv_io_q_net_share_set_info(const char *desc
, SRV_Q_NET_SHARE_SET_INFO
*q_n
, prs_struct
*ps
, int depth
)
1343 prs_debug(ps
, depth
, desc
, "srv_io_q_net_share_set_info");
1349 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1351 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1354 if(!smb_io_unistr2("", &q_n
->uni_share_name
, True
, ps
, depth
))
1360 if(!prs_uint32("info_level", ps
, depth
, &q_n
->info_level
))
1366 if(!srv_io_srv_share_info("info ", ps
, depth
, &q_n
->info
))
1371 if(!prs_uint32("ptr_parm_error", ps
, depth
, &q_n
->ptr_parm_error
))
1373 if(q_n
->ptr_parm_error
!=0) {
1374 if(!prs_uint32("parm_error", ps
, depth
, &q_n
->parm_error
))
1381 /*******************************************************************
1382 Reads or writes a structure.
1383 ********************************************************************/
1385 BOOL
srv_io_r_net_share_set_info(const char *desc
, SRV_R_NET_SHARE_SET_INFO
*r_n
, prs_struct
*ps
, int depth
)
1390 prs_debug(ps
, depth
, desc
, "srv_io_r_net_share_set_info");
1396 if(!prs_uint32("ptr_parm_error ", ps
, depth
, &r_n
->ptr_parm_error
))
1399 if(r_n
->ptr_parm_error
) {
1401 if(!prs_uint32("parm_error ", ps
, depth
, &r_n
->parm_error
))
1405 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1412 /*******************************************************************
1413 Reads or writes a structure.
1414 ********************************************************************/
1416 BOOL
srv_io_q_net_share_add(const char *desc
, SRV_Q_NET_SHARE_ADD
*q_n
, prs_struct
*ps
, int depth
)
1421 prs_debug(ps
, depth
, desc
, "srv_io_q_net_share_add");
1427 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1429 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1435 if(!prs_uint32("info_level", ps
, depth
, &q_n
->info_level
))
1441 if(!srv_io_srv_share_info("info ", ps
, depth
, &q_n
->info
))
1447 if(!prs_uint32("ptr_err_index", ps
, depth
, &q_n
->ptr_err_index
))
1449 if (q_n
->ptr_err_index
)
1450 if (!prs_uint32("err_index", ps
, depth
, &q_n
->err_index
))
1456 void init_srv_q_net_share_add(SRV_Q_NET_SHARE_ADD
*q
, const char *srvname
,
1457 const char *netname
, uint32 type
, const char *remark
,
1458 uint32 perms
, uint32 max_uses
, uint32 num_uses
,
1459 const char *path
, const char *passwd
,
1460 int level
, SEC_DESC
*sd
)
1464 size_t sd_size
= sec_desc_size(sd
);
1465 q
->ptr_srv_name
= 1;
1466 init_unistr2(&q
->uni_srv_name
, srvname
, UNI_STR_TERMINATE
);
1467 q
->info
.switch_value
= q
->info_level
= level
;
1468 q
->info
.ptr_share_ctr
= 1;
1469 init_srv_share_info502(&q
->info
.share
.info502
.info_502
, netname
, type
,
1470 remark
, perms
, max_uses
, num_uses
, path
, passwd
, sd
, sd_size
);
1471 init_srv_share_info502_str(&q
->info
.share
.info502
.info_502_str
, netname
,
1472 remark
, path
, passwd
, sd
, sd_size
);
1473 q
->ptr_err_index
= 1;
1479 q
->ptr_srv_name
= 1;
1480 init_unistr2(&q
->uni_srv_name
, srvname
, UNI_STR_TERMINATE
);
1481 q
->info
.switch_value
= q
->info_level
= level
;
1482 q
->info
.ptr_share_ctr
= 1;
1483 init_srv_share_info2(&q
->info
.share
.info2
.info_2
, netname
, type
,
1484 remark
, perms
, max_uses
, num_uses
, path
, passwd
);
1485 init_srv_share_info2_str(&q
->info
.share
.info2
.info_2_str
, netname
,
1486 remark
, path
, passwd
);
1487 q
->ptr_err_index
= 1;
1494 /*******************************************************************
1495 Reads or writes a structure.
1496 ********************************************************************/
1498 BOOL
srv_io_r_net_share_add(const char *desc
, SRV_R_NET_SHARE_ADD
*r_n
, prs_struct
*ps
, int depth
)
1503 prs_debug(ps
, depth
, desc
, "srv_io_r_net_share_add");
1509 if(!prs_uint32("ptr_parm_error", ps
, depth
, &r_n
->ptr_parm_error
))
1512 if(r_n
->ptr_parm_error
) {
1514 if(!prs_uint32("parm_error", ps
, depth
, &r_n
->parm_error
))
1518 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1524 /*******************************************************************
1525 initialises a structure.
1526 ********************************************************************/
1528 void init_srv_q_net_share_del(SRV_Q_NET_SHARE_DEL
*del
, const char *srvname
,
1529 const char *sharename
)
1531 del
->ptr_srv_name
= 1;
1532 init_unistr2(&del
->uni_srv_name
, srvname
, UNI_STR_TERMINATE
);
1533 init_unistr2(&del
->uni_share_name
, sharename
, UNI_STR_TERMINATE
);
1536 /*******************************************************************
1537 Reads or writes a structure.
1538 ********************************************************************/
1540 BOOL
srv_io_q_net_share_del(const char *desc
, SRV_Q_NET_SHARE_DEL
*q_n
, prs_struct
*ps
, int depth
)
1545 prs_debug(ps
, depth
, desc
, "srv_io_q_net_share_del");
1551 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1553 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1556 if(!smb_io_unistr2("", &q_n
->uni_share_name
, True
, ps
, depth
))
1561 if(!prs_uint32("reserved", ps
, depth
, &q_n
->reserved
))
1567 /*******************************************************************
1568 Reads or writes a structure.
1569 ********************************************************************/
1571 BOOL
srv_io_r_net_share_del(const char *desc
, SRV_R_NET_SHARE_DEL
*q_n
, prs_struct
*ps
, int depth
)
1576 prs_debug(ps
, depth
, desc
, "srv_io_r_net_share_del");
1582 if(!prs_werror("status", ps
, depth
, &q_n
->status
))
1588 /*******************************************************************
1589 Inits a SESS_INFO_0_STR structure
1590 ********************************************************************/
1592 void init_srv_sess_info0( SESS_INFO_0
*ss0
, const char *name
)
1594 ZERO_STRUCTP( ss0
);
1597 if ( (ss0
->sharename
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
) {
1598 DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
1601 init_unistr2( ss0
->sharename
, name
, UNI_STR_TERMINATE
);
1605 /*******************************************************************
1606 Reads or writes a structure.
1607 ********************************************************************/
1609 static BOOL
srv_io_srv_sess_info_0(const char *desc
, SRV_SESS_INFO_0
*ss0
, prs_struct
*ps
, int depth
)
1614 prs_debug(ps
, depth
, desc
, "srv_io_srv_sess_info_0");
1620 if(!prs_uint32("num_entries_read", ps
, depth
, &ss0
->num_entries_read
))
1622 if(!prs_uint32("ptr_sess_info", ps
, depth
, &ss0
->ptr_sess_info
))
1625 if (ss0
->ptr_sess_info
!= 0) {
1627 uint32 num_entries
= ss0
->num_entries_read
;
1629 if (num_entries
> MAX_SESS_ENTRIES
) {
1630 num_entries
= MAX_SESS_ENTRIES
; /* report this! */
1633 if(!prs_uint32("num_entries_read2", ps
, depth
, &ss0
->num_entries_read2
))
1636 SMB_ASSERT_ARRAY(ss0
->info_0
, num_entries
);
1638 /* first the pointers */
1639 for (i
= 0; i
< num_entries
; i
++) {
1640 if ( !prs_io_unistr2_p("", ps
, depth
, &ss0
->info_0
[i
].sharename
) )
1644 /* now the strings */
1645 for (i
= 0; i
< num_entries
; i
++) {
1646 if ( !prs_io_unistr2("sharename", ps
, depth
, ss0
->info_0
[i
].sharename
))
1657 /*******************************************************************
1658 Inits a SESS_INFO_1 structure
1659 ********************************************************************/
1661 void init_srv_sess_info1( SESS_INFO_1
*ss1
, const char *name
, const char *user
,
1662 uint32 num_opens
, uint32 open_time
, uint32 idle_time
,
1665 DEBUG(5,("init_srv_sess_info1: %s\n", name
));
1667 ZERO_STRUCTP( ss1
);
1670 if ( (ss1
->sharename
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
) {
1671 DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
1674 init_unistr2( ss1
->sharename
, name
, UNI_STR_TERMINATE
);
1678 if ( (ss1
->username
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
) {
1679 DEBUG(0,("init_srv_sess_info0: talloc failed!\n"));
1682 init_unistr2( ss1
->username
, user
, UNI_STR_TERMINATE
);
1685 ss1
->num_opens
= num_opens
;
1686 ss1
->open_time
= open_time
;
1687 ss1
->idle_time
= idle_time
;
1688 ss1
->user_flags
= user_flags
;
1692 /*******************************************************************
1693 Reads or writes a structure.
1694 ********************************************************************/
1696 static BOOL
srv_io_srv_sess_info_1(const char *desc
, SRV_SESS_INFO_1
*ss1
, prs_struct
*ps
, int depth
)
1701 prs_debug(ps
, depth
, desc
, "srv_io_srv_sess_info_1");
1707 if(!prs_uint32("num_entries_read", ps
, depth
, &ss1
->num_entries_read
))
1709 if(!prs_uint32("ptr_sess_info", ps
, depth
, &ss1
->ptr_sess_info
))
1712 if (ss1
->ptr_sess_info
!= 0) {
1714 uint32 num_entries
= ss1
->num_entries_read
;
1716 if (num_entries
> MAX_SESS_ENTRIES
) {
1717 num_entries
= MAX_SESS_ENTRIES
; /* report this! */
1720 if(!prs_uint32("num_entries_read2", ps
, depth
, &ss1
->num_entries_read2
))
1723 SMB_ASSERT_ARRAY(ss1
->info_1
, num_entries
);
1725 /* first the pointers and flags */
1727 for (i
= 0; i
< num_entries
; i
++) {
1729 if ( !prs_io_unistr2_p("", ps
, depth
, &ss1
->info_1
[i
].sharename
))
1731 if ( !prs_io_unistr2_p("", ps
, depth
, &ss1
->info_1
[i
].username
))
1734 if(!prs_uint32("num_opens ", ps
, depth
, &ss1
->info_1
[i
].num_opens
))
1736 if(!prs_uint32("open_time ", ps
, depth
, &ss1
->info_1
[i
].open_time
))
1738 if(!prs_uint32("idle_time ", ps
, depth
, &ss1
->info_1
[i
].idle_time
))
1740 if(!prs_uint32("user_flags", ps
, depth
, &ss1
->info_1
[i
].user_flags
))
1744 /* now the strings */
1746 for (i
= 0; i
< num_entries
; i
++) {
1747 if ( !prs_io_unistr2("", ps
, depth
, ss1
->info_1
[i
].sharename
))
1749 if ( !prs_io_unistr2("", ps
, depth
, ss1
->info_1
[i
].username
))
1760 /*******************************************************************
1761 Reads or writes a structure.
1762 ********************************************************************/
1764 static BOOL
srv_io_srv_sess_ctr(const char *desc
, SRV_SESS_INFO_CTR
**pp_ctr
, prs_struct
*ps
, int depth
)
1766 SRV_SESS_INFO_CTR
*ctr
= *pp_ctr
;
1768 prs_debug(ps
, depth
, desc
, "srv_io_srv_sess_ctr");
1771 if(UNMARSHALLING(ps
)) {
1772 ctr
= *pp_ctr
= PRS_ALLOC_MEM(ps
, SRV_SESS_INFO_CTR
, 1);
1783 if(!prs_uint32("switch_value", ps
, depth
, &ctr
->switch_value
))
1785 if(!prs_uint32("ptr_sess_ctr", ps
, depth
, &ctr
->ptr_sess_ctr
))
1788 if (ctr
->ptr_sess_ctr
!= 0) {
1789 switch (ctr
->switch_value
) {
1791 if(!srv_io_srv_sess_info_0("", &ctr
->sess
.info0
, ps
, depth
))
1795 if(!srv_io_srv_sess_info_1("", &ctr
->sess
.info1
, ps
, depth
))
1799 DEBUG(5,("%s no session info at switch_value %d\n",
1800 tab_depth(depth
), ctr
->switch_value
));
1808 /*******************************************************************
1809 Reads or writes a structure.
1810 ********************************************************************/
1812 BOOL
srv_io_q_net_sess_enum(const char *desc
, SRV_Q_NET_SESS_ENUM
*q_u
, prs_struct
*ps
, int depth
)
1817 prs_debug(ps
, depth
, desc
, "srv_io_q_net_sess_enum");
1823 if(!prs_pointer("servername", ps
, depth
, (void**)&q_u
->servername
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
1829 if(!prs_pointer("qualifier", ps
, depth
, (void**)&q_u
->qualifier
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
1835 if(!prs_pointer("username", ps
, depth
, (void**)&q_u
->username
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
1841 if(!prs_uint32("sess_level", ps
, depth
, &q_u
->sess_level
))
1844 if (q_u
->sess_level
!= (uint32
)-1) {
1845 if(!srv_io_srv_sess_ctr("sess_ctr", &q_u
->ctr
, ps
, depth
))
1849 if(!prs_uint32("preferred_len", ps
, depth
, &q_u
->preferred_len
))
1852 if(!smb_io_enum_hnd("enum_hnd", &q_u
->enum_hnd
, ps
, depth
))
1858 /*******************************************************************
1859 Reads or writes a structure.
1860 ********************************************************************/
1862 BOOL
srv_io_r_net_sess_enum(const char *desc
, SRV_R_NET_SESS_ENUM
*r_n
, prs_struct
*ps
, int depth
)
1867 prs_debug(ps
, depth
, desc
, "srv_io_r_net_sess_enum");
1873 if(!prs_uint32("sess_level", ps
, depth
, &r_n
->sess_level
))
1876 if (r_n
->sess_level
!= (uint32
)-1) {
1877 if(!srv_io_srv_sess_ctr("sess_ctr", &r_n
->ctr
, ps
, depth
))
1881 if(!prs_uint32("total_entries", ps
, depth
, &r_n
->total_entries
))
1883 if(!smb_io_enum_hnd("enum_hnd", &r_n
->enum_hnd
, ps
, depth
))
1885 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1891 /*******************************************************************
1892 Inits a SRV_Q_NET_SESS_DEL structure.
1893 ********************************************************************/
1895 void init_srv_q_net_sess_del(SRV_Q_NET_SESS_DEL
*q_n
, const char *srv_name
,
1896 const char *cli_name
, const char *user_name
)
1898 DEBUG(5,("init_q_net_sess_enum\n"));
1900 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
1901 init_buf_unistr2(&q_n
->uni_cli_name
, &q_n
->ptr_cli_name
, cli_name
);
1902 init_buf_unistr2(&q_n
->uni_user_name
, &q_n
->ptr_user_name
, user_name
);
1905 /*******************************************************************
1906 Reads or writes a structure.
1907 ********************************************************************/
1909 BOOL
srv_io_q_net_sess_del(const char *desc
, SRV_Q_NET_SESS_DEL
*q_n
, prs_struct
*ps
, int depth
)
1914 prs_debug(ps
, depth
, desc
, "srv_io_q_net_sess_del");
1920 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
1922 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
1928 if(!prs_uint32("ptr_cli_name", ps
, depth
, &q_n
->ptr_cli_name
))
1930 if(!smb_io_unistr2("", &q_n
->uni_cli_name
, q_n
->ptr_cli_name
, ps
, depth
))
1935 if(!prs_uint32("ptr_user_name", ps
, depth
, &q_n
->ptr_user_name
))
1937 if(!smb_io_unistr2("", &q_n
->uni_user_name
, q_n
->ptr_user_name
, ps
, depth
))
1943 /*******************************************************************
1944 Reads or writes a structure.
1945 ********************************************************************/
1947 BOOL
srv_io_r_net_sess_del(const char *desc
, SRV_R_NET_SESS_DEL
*r_n
, prs_struct
*ps
, int depth
)
1952 prs_debug(ps
, depth
, desc
, "srv_io_r_net_sess_del");
1958 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
1964 /*******************************************************************
1965 Inits a CONN_INFO_0 structure
1966 ********************************************************************/
1968 void init_srv_conn_info0(CONN_INFO_0
*ss0
, uint32 id
)
1970 DEBUG(5,("init_srv_conn_info0\n"));
1975 /*******************************************************************
1976 Reads or writes a structure.
1977 ********************************************************************/
1979 static BOOL
srv_io_conn_info0(const char *desc
, CONN_INFO_0
*ss0
, prs_struct
*ps
, int depth
)
1984 prs_debug(ps
, depth
, desc
, "srv_io_conn_info0");
1990 if(!prs_uint32("id", ps
, depth
, &ss0
->id
))
1996 /*******************************************************************
1997 Reads or writes a structure.
1998 ********************************************************************/
2000 static BOOL
srv_io_srv_conn_info_0(const char *desc
, SRV_CONN_INFO_0
*ss0
, prs_struct
*ps
, int depth
)
2005 prs_debug(ps
, depth
, desc
, "srv_io_srv_conn_info_0");
2011 if(!prs_uint32("num_entries_read", ps
, depth
, &ss0
->num_entries_read
))
2013 if(!prs_uint32("ptr_conn_info", ps
, depth
, &ss0
->ptr_conn_info
))
2016 if (ss0
->ptr_conn_info
!= 0) {
2018 int num_entries
= ss0
->num_entries_read
;
2020 if (num_entries
> MAX_CONN_ENTRIES
) {
2021 num_entries
= MAX_CONN_ENTRIES
; /* report this! */
2024 if(!prs_uint32("num_entries_read2", ps
, depth
, &ss0
->num_entries_read2
))
2027 for (i
= 0; i
< num_entries
; i
++) {
2028 if(!srv_io_conn_info0("", &ss0
->info_0
[i
], ps
, depth
))
2039 /*******************************************************************
2040 Inits a CONN_INFO_1_STR structure
2041 ********************************************************************/
2043 void init_srv_conn_info1_str(CONN_INFO_1_STR
*ss1
, const char *usr_name
, const char *net_name
)
2045 DEBUG(5,("init_srv_conn_info1_str\n"));
2047 init_unistr2(&ss1
->uni_usr_name
, usr_name
, UNI_STR_TERMINATE
);
2048 init_unistr2(&ss1
->uni_net_name
, net_name
, UNI_STR_TERMINATE
);
2051 /*******************************************************************
2052 Reads or writes a structure.
2053 ********************************************************************/
2055 static BOOL
srv_io_conn_info1_str(const char *desc
, CONN_INFO_1_STR
*ss1
, prs_struct
*ps
, int depth
)
2060 prs_debug(ps
, depth
, desc
, "srv_io_conn_info1_str");
2066 if(!smb_io_unistr2("", &ss1
->uni_usr_name
, True
, ps
, depth
))
2068 if(!smb_io_unistr2("", &ss1
->uni_net_name
, True
, ps
, depth
))
2074 /*******************************************************************
2075 Inits a CONN_INFO_1 structure
2076 ********************************************************************/
2078 void init_srv_conn_info1(CONN_INFO_1
*ss1
,
2079 uint32 id
, uint32 type
,
2080 uint32 num_opens
, uint32 num_users
, uint32 open_time
,
2081 const char *usr_name
, const char *net_name
)
2083 DEBUG(5,("init_srv_conn_info1: %s %s\n", usr_name
, net_name
));
2087 ss1
->num_opens
= num_opens
;
2088 ss1
->num_users
= num_users
;
2089 ss1
->open_time
= open_time
;
2091 ss1
->ptr_usr_name
= (usr_name
!= NULL
) ? 1 : 0;
2092 ss1
->ptr_net_name
= (net_name
!= NULL
) ? 1 : 0;
2095 /*******************************************************************
2096 Reads or writes a structure.
2097 ********************************************************************/
2099 static BOOL
srv_io_conn_info1(const char *desc
, CONN_INFO_1
*ss1
, prs_struct
*ps
, int depth
)
2104 prs_debug(ps
, depth
, desc
, "srv_io_conn_info1");
2110 if(!prs_uint32("id ", ps
, depth
, &ss1
->id
))
2112 if(!prs_uint32("type ", ps
, depth
, &ss1
->type
))
2114 if(!prs_uint32("num_opens ", ps
, depth
, &ss1
->num_opens
))
2116 if(!prs_uint32("num_users ", ps
, depth
, &ss1
->num_users
))
2118 if(!prs_uint32("open_time ", ps
, depth
, &ss1
->open_time
))
2121 if(!prs_uint32("ptr_usr_name", ps
, depth
, &ss1
->ptr_usr_name
))
2123 if(!prs_uint32("ptr_net_name", ps
, depth
, &ss1
->ptr_net_name
))
2129 /*******************************************************************
2130 Reads or writes a structure.
2131 ********************************************************************/
2133 static BOOL
srv_io_srv_conn_info_1(const char *desc
, SRV_CONN_INFO_1
*ss1
, prs_struct
*ps
, int depth
)
2138 prs_debug(ps
, depth
, desc
, "srv_io_srv_conn_info_1");
2144 if(!prs_uint32("num_entries_read", ps
, depth
, &ss1
->num_entries_read
))
2146 if(!prs_uint32("ptr_conn_info", ps
, depth
, &ss1
->ptr_conn_info
))
2149 if (ss1
->ptr_conn_info
!= 0) {
2151 int num_entries
= ss1
->num_entries_read
;
2153 if (num_entries
> MAX_CONN_ENTRIES
) {
2154 num_entries
= MAX_CONN_ENTRIES
; /* report this! */
2157 if(!prs_uint32("num_entries_read2", ps
, depth
, &ss1
->num_entries_read2
))
2160 for (i
= 0; i
< num_entries
; i
++) {
2161 if(!srv_io_conn_info1("", &ss1
->info_1
[i
], ps
, depth
))
2165 for (i
= 0; i
< num_entries
; i
++) {
2166 if(!srv_io_conn_info1_str("", &ss1
->info_1_str
[i
], ps
, depth
))
2177 /*******************************************************************
2178 Reads or writes a structure.
2179 ********************************************************************/
2181 static BOOL
srv_io_srv_conn_ctr(const char *desc
, SRV_CONN_INFO_CTR
**pp_ctr
, prs_struct
*ps
, int depth
)
2183 SRV_CONN_INFO_CTR
*ctr
= *pp_ctr
;
2185 prs_debug(ps
, depth
, desc
, "srv_io_srv_conn_ctr");
2188 if (UNMARSHALLING(ps
)) {
2189 ctr
= *pp_ctr
= PRS_ALLOC_MEM(ps
, SRV_CONN_INFO_CTR
, 1);
2200 if(!prs_uint32("switch_value", ps
, depth
, &ctr
->switch_value
))
2202 if(!prs_uint32("ptr_conn_ctr", ps
, depth
, &ctr
->ptr_conn_ctr
))
2205 if (ctr
->ptr_conn_ctr
!= 0) {
2206 switch (ctr
->switch_value
) {
2208 if(!srv_io_srv_conn_info_0("", &ctr
->conn
.info0
, ps
, depth
))
2212 if(!srv_io_srv_conn_info_1("", &ctr
->conn
.info1
, ps
, depth
))
2216 DEBUG(5,("%s no connection info at switch_value %d\n",
2217 tab_depth(depth
), ctr
->switch_value
));
2225 /*******************************************************************
2226 Reads or writes a structure.
2227 ********************************************************************/
2229 void init_srv_q_net_conn_enum(SRV_Q_NET_CONN_ENUM
*q_n
,
2230 const char *srv_name
, const char *qual_name
,
2231 uint32 conn_level
, SRV_CONN_INFO_CTR
*ctr
,
2232 uint32 preferred_len
,
2235 DEBUG(5,("init_q_net_conn_enum\n"));
2239 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
2240 init_buf_unistr2(&q_n
->uni_qual_name
, &q_n
->ptr_qual_name
, qual_name
);
2242 q_n
->conn_level
= conn_level
;
2243 q_n
->preferred_len
= preferred_len
;
2245 memcpy(&q_n
->enum_hnd
, hnd
, sizeof(*hnd
));
2248 /*******************************************************************
2249 Reads or writes a structure.
2250 ********************************************************************/
2252 BOOL
srv_io_q_net_conn_enum(const char *desc
, SRV_Q_NET_CONN_ENUM
*q_n
, prs_struct
*ps
, int depth
)
2257 prs_debug(ps
, depth
, desc
, "srv_io_q_net_conn_enum");
2263 if(!prs_uint32("ptr_srv_name ", ps
, depth
, &q_n
->ptr_srv_name
))
2265 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, q_n
->ptr_srv_name
, ps
, depth
))
2271 if(!prs_uint32("ptr_qual_name", ps
, depth
, &q_n
->ptr_qual_name
))
2273 if(!smb_io_unistr2("", &q_n
->uni_qual_name
, q_n
->ptr_qual_name
, ps
, depth
))
2279 if(!prs_uint32("conn_level", ps
, depth
, &q_n
->conn_level
))
2282 if (q_n
->conn_level
!= (uint32
)-1) {
2283 if(!srv_io_srv_conn_ctr("conn_ctr", &q_n
->ctr
, ps
, depth
))
2287 if(!prs_uint32("preferred_len", ps
, depth
, &q_n
->preferred_len
))
2290 if(!smb_io_enum_hnd("enum_hnd", &q_n
->enum_hnd
, ps
, depth
))
2296 /*******************************************************************
2297 Reads or writes a structure.
2298 ********************************************************************/
2300 BOOL
srv_io_r_net_conn_enum(const char *desc
, SRV_R_NET_CONN_ENUM
*r_n
, prs_struct
*ps
, int depth
)
2305 prs_debug(ps
, depth
, desc
, "srv_io_r_net_conn_enum");
2311 if(!prs_uint32("conn_level", ps
, depth
, &r_n
->conn_level
))
2314 if (r_n
->conn_level
!= (uint32
)-1) {
2315 if(!srv_io_srv_conn_ctr("conn_ctr", &r_n
->ctr
, ps
, depth
))
2319 if(!prs_uint32("total_entries", ps
, depth
, &r_n
->total_entries
))
2321 if(!smb_io_enum_hnd("enum_hnd", &r_n
->enum_hnd
, ps
, depth
))
2323 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
2329 /*******************************************************************
2330 Reads or writes a structure.
2331 ********************************************************************/
2333 static BOOL
srv_io_file_info3_str(const char *desc
, FILE_INFO_3
*sh1
, prs_struct
*ps
, int depth
)
2338 prs_debug(ps
, depth
, desc
, "srv_io_file_info3_str");
2345 if(!smb_io_unistr2("", sh1
->path
, True
, ps
, depth
))
2350 if(!smb_io_unistr2("", sh1
->user
, True
, ps
, depth
))
2357 /*******************************************************************
2358 Inits a FILE_INFO_3 structure
2359 ********************************************************************/
2361 void init_srv_file_info3( FILE_INFO_3
*fl3
, uint32 id
, uint32 perms
, uint32 num_locks
,
2362 const char *user_name
, const char *path_name
)
2366 fl3
->num_locks
= num_locks
;
2369 if ( (fl3
->path
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
)
2371 init_unistr2(fl3
->path
, path_name
, UNI_STR_TERMINATE
);
2375 if ( (fl3
->user
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
)
2377 init_unistr2(fl3
->user
, user_name
, UNI_STR_TERMINATE
);
2383 /*******************************************************************
2384 Reads or writes a structure.
2385 ********************************************************************/
2387 static BOOL
srv_io_file_info3(const char *desc
, FILE_INFO_3
*fl3
, prs_struct
*ps
, int depth
)
2394 prs_debug(ps
, depth
, desc
, "srv_io_file_info3");
2400 if(!prs_uint32("id ", ps
, depth
, &fl3
->id
))
2402 if(!prs_uint32("perms ", ps
, depth
, &fl3
->perms
))
2404 if(!prs_uint32("num_locks ", ps
, depth
, &fl3
->num_locks
))
2407 uni_p
= fl3
->path
? 1 : 0;
2408 if(!prs_uint32("ptr", ps
, depth
, &uni_p
))
2410 if (UNMARSHALLING(ps
)) {
2411 if ( (fl3
->path
= PRS_ALLOC_MEM( ps
, UNISTR2
, 1)) == NULL
) {
2416 uni_p
= fl3
->user
? 1 : 0;
2417 if(!prs_uint32("ptr", ps
, depth
, &uni_p
))
2419 if (UNMARSHALLING(ps
)) {
2420 if ( (fl3
->user
= PRS_ALLOC_MEM( ps
, UNISTR2
, 1)) == NULL
) {
2428 /*******************************************************************
2429 Reads or writes a structure.
2430 ********************************************************************/
2432 static BOOL
srv_io_srv_file_ctr(const char *desc
, SRV_FILE_INFO_CTR
*ctr
, prs_struct
*ps
, int depth
)
2437 prs_debug(ps
, depth
, desc
, "srv_io_srv_file_ctr");
2440 if (UNMARSHALLING(ps
)) {
2447 if(!prs_uint32("level", ps
, depth
, &ctr
->level
))
2450 if(!prs_uint32("ptr_file_info", ps
, depth
, &ctr
->ptr_file_info
))
2452 if(!prs_uint32("num_entries", ps
, depth
, &ctr
->num_entries
))
2454 if(!prs_uint32("ptr_entries", ps
, depth
, &ctr
->ptr_entries
))
2457 if (ctr
->ptr_entries
== 0)
2460 if(!prs_uint32("num_entries2", ps
, depth
, &ctr
->num_entries2
))
2463 switch (ctr
->level
) {
2465 FILE_INFO_3
*info3
= ctr
->file
.info3
;
2466 int num_entries
= ctr
->num_entries
;
2469 if (UNMARSHALLING(ps
) && num_entries
) {
2470 if (!(info3
= PRS_ALLOC_MEM(ps
, FILE_INFO_3
, num_entries
)))
2472 ctr
->file
.info3
= info3
;
2475 for (i
= 0; i
< num_entries
; i
++) {
2476 if(!srv_io_file_info3("", &ctr
->file
.info3
[i
], ps
, depth
))
2480 for (i
= 0; i
< num_entries
; i
++) {
2481 if(!srv_io_file_info3_str("", &ctr
->file
.info3
[i
], ps
, depth
))
2487 DEBUG(5,("%s no file info at switch_value %d\n", tab_depth(depth
), ctr
->level
));
2494 /*******************************************************************
2495 Inits a SRV_Q_NET_FILE_ENUM structure.
2496 ********************************************************************/
2498 void init_srv_q_net_file_enum(SRV_Q_NET_FILE_ENUM
*q_n
,
2499 const char *srv_name
, const char *qual_name
,
2500 const char *user_name
,
2501 uint32 file_level
, SRV_FILE_INFO_CTR
*ctr
,
2502 uint32 preferred_len
,
2508 if ( (q_n
->servername
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
)
2510 init_buf_unistr2(q_n
->servername
, &ptr
, srv_name
);
2514 if ( (q_n
->qualifier
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
)
2516 init_buf_unistr2(q_n
->qualifier
, &ptr
, qual_name
);
2520 if ( (q_n
->username
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
)
2522 init_buf_unistr2(q_n
->username
, &ptr
, user_name
);
2525 q_n
->level
= q_n
->ctr
.level
= file_level
;
2527 q_n
->preferred_len
= preferred_len
;
2528 q_n
->ctr
.ptr_file_info
= 1;
2529 q_n
->ctr
.num_entries
= 0;
2530 q_n
->ctr
.num_entries2
= 0;
2532 memcpy(&q_n
->enum_hnd
, hnd
, sizeof(*hnd
));
2535 /*******************************************************************
2536 Reads or writes a structure.
2537 ********************************************************************/
2539 BOOL
srv_io_q_net_file_enum(const char *desc
, SRV_Q_NET_FILE_ENUM
*q_u
, prs_struct
*ps
, int depth
)
2544 prs_debug(ps
, depth
, desc
, "srv_io_q_net_file_enum");
2550 if(!prs_pointer("servername", ps
, depth
, (void**)&q_u
->servername
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
2555 if(!prs_pointer("qualifier", ps
, depth
, (void**)&q_u
->qualifier
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
2560 if(!prs_pointer("username", ps
, depth
, (void**)&q_u
->username
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
2565 if(!prs_uint32("level", ps
, depth
, &q_u
->level
))
2568 if (q_u
->level
!= (uint32
)-1) {
2569 if(!srv_io_srv_file_ctr("file_ctr", &q_u
->ctr
, ps
, depth
))
2573 if(!prs_uint32("preferred_len", ps
, depth
, &q_u
->preferred_len
))
2576 if(!smb_io_enum_hnd("enum_hnd", &q_u
->enum_hnd
, ps
, depth
))
2582 /*******************************************************************
2583 Reads or writes a structure.
2584 ********************************************************************/
2586 BOOL
srv_io_r_net_file_enum(const char *desc
, SRV_R_NET_FILE_ENUM
*r_n
, prs_struct
*ps
, int depth
)
2591 prs_debug(ps
, depth
, desc
, "srv_io_r_net_file_enum");
2597 if(!prs_uint32("level", ps
, depth
, &r_n
->level
))
2600 if (r_n
->level
!= 0) {
2601 if(!srv_io_srv_file_ctr("file_ctr", &r_n
->ctr
, ps
, depth
))
2605 if(!prs_uint32("total_entries", ps
, depth
, &r_n
->total_entries
))
2607 if(!smb_io_enum_hnd("enum_hnd", &r_n
->enum_hnd
, ps
, depth
))
2609 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
2615 /*******************************************************************
2616 Initialize a net file close request
2617 ********************************************************************/
2618 void init_srv_q_net_file_close(SRV_Q_NET_FILE_CLOSE
*q_n
, const char *server
,
2622 if ( (q_n
->servername
= TALLOC_P( get_talloc_ctx(), UNISTR2
)) == NULL
) {
2625 init_unistr2(q_n
->servername
, server
, UNI_STR_TERMINATE
);
2628 q_n
->file_id
= file_id
;
2631 /*******************************************************************
2632 Inits a SRV_INFO_100 structure.
2633 ********************************************************************/
2635 void init_srv_info_100(SRV_INFO_100
*sv100
, uint32 platform_id
, const char *name
)
2637 DEBUG(5,("init_srv_info_100\n"));
2639 sv100
->platform_id
= platform_id
;
2640 init_buf_unistr2(&sv100
->uni_name
, &sv100
->ptr_name
, name
);
2643 /*******************************************************************
2644 Reads or writes a SRV_INFO_101 structure.
2645 ********************************************************************/
2647 static BOOL
srv_io_info_100(const char *desc
, SRV_INFO_100
*sv100
, prs_struct
*ps
, int depth
)
2652 prs_debug(ps
, depth
, desc
, "srv_io_info_100");
2658 if(!prs_uint32("platform_id ", ps
, depth
, &sv100
->platform_id
))
2660 if(!prs_uint32("ptr_name ", ps
, depth
, &sv100
->ptr_name
))
2663 if(!smb_io_unistr2("uni_name ", &sv100
->uni_name
, True
, ps
, depth
))
2670 /*******************************************************************
2671 Inits a SRV_INFO_101 structure.
2672 ********************************************************************/
2674 void init_srv_info_101(SRV_INFO_101
*sv101
, uint32 platform_id
, const char *name
,
2675 uint32 ver_major
, uint32 ver_minor
,
2676 uint32 srv_type
, const char *comment
)
2678 DEBUG(5,("init_srv_info_101\n"));
2680 sv101
->platform_id
= platform_id
;
2681 init_buf_unistr2(&sv101
->uni_name
, &sv101
->ptr_name
, name
);
2682 sv101
->ver_major
= ver_major
;
2683 sv101
->ver_minor
= ver_minor
;
2684 sv101
->srv_type
= srv_type
;
2685 init_buf_unistr2(&sv101
->uni_comment
, &sv101
->ptr_comment
, comment
);
2688 /*******************************************************************
2689 Reads or writes a SRV_INFO_101 structure.
2690 ********************************************************************/
2692 static BOOL
srv_io_info_101(const char *desc
, SRV_INFO_101
*sv101
, prs_struct
*ps
, int depth
)
2697 prs_debug(ps
, depth
, desc
, "srv_io_info_101");
2703 if(!prs_uint32("platform_id ", ps
, depth
, &sv101
->platform_id
))
2705 if(!prs_uint32("ptr_name ", ps
, depth
, &sv101
->ptr_name
))
2707 if(!prs_uint32("ver_major ", ps
, depth
, &sv101
->ver_major
))
2709 if(!prs_uint32("ver_minor ", ps
, depth
, &sv101
->ver_minor
))
2711 if(!prs_uint32("srv_type ", ps
, depth
, &sv101
->srv_type
))
2713 if(!prs_uint32("ptr_comment ", ps
, depth
, &sv101
->ptr_comment
))
2719 if(!smb_io_unistr2("uni_name ", &sv101
->uni_name
, True
, ps
, depth
))
2721 if(!smb_io_unistr2("uni_comment ", &sv101
->uni_comment
, True
, ps
, depth
))
2727 /*******************************************************************
2728 Inits a SRV_INFO_102 structure.
2729 ********************************************************************/
2731 void init_srv_info_102(SRV_INFO_102
*sv102
, uint32 platform_id
, const char *name
,
2732 const char *comment
, uint32 ver_major
, uint32 ver_minor
,
2733 uint32 srv_type
, uint32 users
, uint32 disc
, uint32 hidden
,
2734 uint32 announce
, uint32 ann_delta
, uint32 licenses
,
2735 const char *usr_path
)
2737 DEBUG(5,("init_srv_info_102\n"));
2739 sv102
->platform_id
= platform_id
;
2740 init_buf_unistr2(&sv102
->uni_name
, &sv102
->ptr_name
, name
);
2741 sv102
->ver_major
= ver_major
;
2742 sv102
->ver_minor
= ver_minor
;
2743 sv102
->srv_type
= srv_type
;
2744 init_buf_unistr2(&sv102
->uni_comment
, &sv102
->ptr_comment
, comment
);
2746 /* same as 101 up to here */
2748 sv102
->users
= users
;
2750 sv102
->hidden
= hidden
;
2751 sv102
->announce
= announce
;
2752 sv102
->ann_delta
= ann_delta
;
2753 sv102
->licenses
= licenses
;
2754 init_buf_unistr2(&sv102
->uni_usr_path
, &sv102
->ptr_usr_path
, usr_path
);
2758 /*******************************************************************
2759 Reads or writes a SRV_INFO_102 structure.
2760 ********************************************************************/
2762 static BOOL
srv_io_info_102(const char *desc
, SRV_INFO_102
*sv102
, prs_struct
*ps
, int depth
)
2767 prs_debug(ps
, depth
, desc
, "srv_io_info102");
2773 if(!prs_uint32("platform_id ", ps
, depth
, &sv102
->platform_id
))
2775 if(!prs_uint32("ptr_name ", ps
, depth
, &sv102
->ptr_name
))
2777 if(!prs_uint32("ver_major ", ps
, depth
, &sv102
->ver_major
))
2779 if(!prs_uint32("ver_minor ", ps
, depth
, &sv102
->ver_minor
))
2781 if(!prs_uint32("srv_type ", ps
, depth
, &sv102
->srv_type
))
2783 if(!prs_uint32("ptr_comment ", ps
, depth
, &sv102
->ptr_comment
))
2786 /* same as 101 up to here */
2788 if(!prs_uint32("users ", ps
, depth
, &sv102
->users
))
2790 if(!prs_uint32("disc ", ps
, depth
, &sv102
->disc
))
2792 if(!prs_uint32("hidden ", ps
, depth
, &sv102
->hidden
))
2794 if(!prs_uint32("announce ", ps
, depth
, &sv102
->announce
))
2796 if(!prs_uint32("ann_delta ", ps
, depth
, &sv102
->ann_delta
))
2798 if(!prs_uint32("licenses ", ps
, depth
, &sv102
->licenses
))
2800 if(!prs_uint32("ptr_usr_path", ps
, depth
, &sv102
->ptr_usr_path
))
2803 if(!smb_io_unistr2("uni_name ", &sv102
->uni_name
, True
, ps
, depth
))
2807 if(!smb_io_unistr2("uni_comment ", &sv102
->uni_comment
, True
, ps
, depth
))
2811 if(!smb_io_unistr2("uni_usr_path", &sv102
->uni_usr_path
, True
, ps
, depth
))
2817 /*******************************************************************
2818 Reads or writes a SRV_INFO_102 structure.
2819 ********************************************************************/
2821 static BOOL
srv_io_info_ctr(const char *desc
, SRV_INFO_CTR
*ctr
, prs_struct
*ps
, int depth
)
2826 prs_debug(ps
, depth
, desc
, "srv_io_info_ctr");
2832 if(!prs_uint32("switch_value", ps
, depth
, &ctr
->switch_value
))
2834 if(!prs_uint32("ptr_srv_ctr ", ps
, depth
, &ctr
->ptr_srv_ctr
))
2837 if (ctr
->ptr_srv_ctr
!= 0 && ctr
->switch_value
!= 0 && ctr
!= NULL
) {
2838 switch (ctr
->switch_value
) {
2840 if(!srv_io_info_100("sv100", &ctr
->srv
.sv100
, ps
, depth
))
2844 if(!srv_io_info_101("sv101", &ctr
->srv
.sv101
, ps
, depth
))
2848 if(!srv_io_info_102("sv102", &ctr
->srv
.sv102
, ps
, depth
))
2852 DEBUG(5,("%s no server info at switch_value %d\n",
2853 tab_depth(depth
), ctr
->switch_value
));
2863 /*******************************************************************
2864 Inits a SRV_Q_NET_SRV_GET_INFO structure.
2865 ********************************************************************/
2867 void init_srv_q_net_srv_get_info(SRV_Q_NET_SRV_GET_INFO
*srv
,
2868 const char *server_name
, uint32 switch_value
)
2870 DEBUG(5,("init_srv_q_net_srv_get_info\n"));
2872 init_buf_unistr2(&srv
->uni_srv_name
, &srv
->ptr_srv_name
, server_name
);
2874 srv
->switch_value
= switch_value
;
2877 /*******************************************************************
2878 Reads or writes a structure.
2879 ********************************************************************/
2881 BOOL
srv_io_q_net_srv_get_info(const char *desc
, SRV_Q_NET_SRV_GET_INFO
*q_n
, prs_struct
*ps
, int depth
)
2886 prs_debug(ps
, depth
, desc
, "srv_io_q_net_srv_get_info");
2892 if(!prs_uint32("ptr_srv_name ", ps
, depth
, &q_n
->ptr_srv_name
))
2894 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
2900 if(!prs_uint32("switch_value ", ps
, depth
, &q_n
->switch_value
))
2906 /*******************************************************************
2907 Inits a SRV_R_NET_SRV_GET_INFO structure.
2908 ********************************************************************/
2910 void init_srv_r_net_srv_get_info(SRV_R_NET_SRV_GET_INFO
*srv
,
2911 uint32 switch_value
, SRV_INFO_CTR
*ctr
, WERROR status
)
2913 DEBUG(5,("init_srv_r_net_srv_get_info\n"));
2917 if (W_ERROR_IS_OK(status
)) {
2918 srv
->ctr
->switch_value
= switch_value
;
2919 srv
->ctr
->ptr_srv_ctr
= 1;
2921 srv
->ctr
->switch_value
= 0;
2922 srv
->ctr
->ptr_srv_ctr
= 0;
2925 srv
->status
= status
;
2928 /*******************************************************************
2929 Inits a SRV_R_NET_SRV_SET_INFO structure.
2930 ********************************************************************/
2932 void init_srv_r_net_srv_set_info(SRV_R_NET_SRV_SET_INFO
*srv
,
2933 uint32 switch_value
, WERROR status
)
2935 DEBUG(5,("init_srv_r_net_srv_set_info\n"));
2937 srv
->switch_value
= switch_value
;
2938 srv
->status
= status
;
2941 /*******************************************************************
2942 Reads or writes a structure.
2943 ********************************************************************/
2945 BOOL
srv_io_q_net_srv_set_info(const char *desc
, SRV_Q_NET_SRV_SET_INFO
*q_n
,
2946 prs_struct
*ps
, int depth
)
2948 prs_debug(ps
, depth
, desc
, "srv_io_q_net_srv_set_info");
2954 if(!prs_uint32("ptr_srv_name ", ps
, depth
, &q_n
->ptr_srv_name
))
2956 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
2962 if(!prs_uint32("switch_value ", ps
, depth
, &q_n
->switch_value
))
2965 if (UNMARSHALLING(ps
)) {
2966 q_n
->ctr
= PRS_ALLOC_MEM(ps
, SRV_INFO_CTR
, 1);
2972 if(!srv_io_info_ctr("ctr", q_n
->ctr
, ps
, depth
))
2978 /*******************************************************************
2979 Reads or writes a structure.
2980 ********************************************************************/
2982 BOOL
srv_io_r_net_srv_get_info(const char *desc
, SRV_R_NET_SRV_GET_INFO
*r_n
, prs_struct
*ps
, int depth
)
2987 prs_debug(ps
, depth
, desc
, "srv_io_r_net_srv_get_info");
2993 if(!srv_io_info_ctr("ctr", r_n
->ctr
, ps
, depth
))
2996 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3002 /*******************************************************************
3003 Reads or writes a structure.
3004 ********************************************************************/
3006 BOOL
srv_io_r_net_srv_set_info(const char *desc
, SRV_R_NET_SRV_SET_INFO
*r_n
,
3007 prs_struct
*ps
, int depth
)
3009 prs_debug(ps
, depth
, desc
, "srv_io_r_net_srv_set_info");
3015 if(!prs_uint32("switch value ", ps
, depth
, &r_n
->switch_value
))
3018 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3024 /*******************************************************************
3025 Reads or writes a structure.
3026 ********************************************************************/
3028 BOOL
srv_io_q_net_remote_tod(const char *desc
, SRV_Q_NET_REMOTE_TOD
*q_n
, prs_struct
*ps
, int depth
)
3033 prs_debug(ps
, depth
, desc
, "srv_io_q_net_remote_tod");
3039 if(!prs_uint32("ptr_srv_name ", ps
, depth
, &q_n
->ptr_srv_name
))
3041 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
3047 /*******************************************************************
3048 Reads or writes a TIME_OF_DAY_INFO structure.
3049 ********************************************************************/
3051 static BOOL
srv_io_time_of_day_info(const char *desc
, TIME_OF_DAY_INFO
*tod
, prs_struct
*ps
, int depth
)
3056 prs_debug(ps
, depth
, desc
, "srv_io_time_of_day_info");
3062 if(!prs_uint32("elapsedt ", ps
, depth
, &tod
->elapsedt
))
3064 if(!prs_uint32("msecs ", ps
, depth
, &tod
->msecs
))
3066 if(!prs_uint32("hours ", ps
, depth
, &tod
->hours
))
3068 if(!prs_uint32("mins ", ps
, depth
, &tod
->mins
))
3070 if(!prs_uint32("secs ", ps
, depth
, &tod
->secs
))
3072 if(!prs_uint32("hunds ", ps
, depth
, &tod
->hunds
))
3074 if(!prs_uint32("timezone ", ps
, depth
, &tod
->zone
))
3076 if(!prs_uint32("tintervals ", ps
, depth
, &tod
->tintervals
))
3078 if(!prs_uint32("day ", ps
, depth
, &tod
->day
))
3080 if(!prs_uint32("month ", ps
, depth
, &tod
->month
))
3082 if(!prs_uint32("year ", ps
, depth
, &tod
->year
))
3084 if(!prs_uint32("weekday ", ps
, depth
, &tod
->weekday
))
3090 /*******************************************************************
3091 Inits a TIME_OF_DAY_INFO structure.
3092 ********************************************************************/
3094 void init_time_of_day_info(TIME_OF_DAY_INFO
*tod
, uint32 elapsedt
, uint32 msecs
,
3095 uint32 hours
, uint32 mins
, uint32 secs
, uint32 hunds
,
3096 uint32 zone
, uint32 tintervals
, uint32 day
,
3097 uint32 month
, uint32 year
, uint32 weekday
)
3099 DEBUG(5,("init_time_of_day_info\n"));
3101 tod
->elapsedt
= elapsedt
;
3108 tod
->tintervals
= tintervals
;
3112 tod
->weekday
= weekday
;
3116 /*******************************************************************
3117 Reads or writes a structure.
3118 ********************************************************************/
3120 BOOL
srv_io_r_net_remote_tod(const char *desc
, SRV_R_NET_REMOTE_TOD
*r_n
, prs_struct
*ps
, int depth
)
3125 prs_debug(ps
, depth
, desc
, "srv_io_r_net_remote_tod");
3131 if(!prs_uint32("ptr_srv_tod ", ps
, depth
, &r_n
->ptr_srv_tod
))
3134 if(!srv_io_time_of_day_info("tod", r_n
->tod
, ps
, depth
))
3137 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3143 /*******************************************************************
3144 initialises a structure.
3145 ********************************************************************/
3147 BOOL
init_srv_q_net_disk_enum(SRV_Q_NET_DISK_ENUM
*q_n
,
3148 const char *srv_name
,
3149 uint32 preferred_len
,
3155 DEBUG(5,("init_srv_q_net_srv_disk_enum\n"));
3157 init_buf_unistr2(&q_n
->uni_srv_name
, &q_n
->ptr_srv_name
, srv_name
);
3159 q_n
->disk_enum_ctr
.level
= 0;
3160 q_n
->disk_enum_ctr
.disk_info_ptr
= 0;
3162 q_n
->preferred_len
= preferred_len
;
3163 memcpy(&q_n
->enum_hnd
, enum_hnd
, sizeof(*enum_hnd
));
3168 /*******************************************************************
3169 Reads or writes a structure.
3170 ********************************************************************/
3172 BOOL
srv_io_q_net_disk_enum(const char *desc
, SRV_Q_NET_DISK_ENUM
*q_n
, prs_struct
*ps
, int depth
)
3177 prs_debug(ps
, depth
, desc
, "srv_io_q_net_disk_enum");
3183 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
3186 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
3192 if(!prs_uint32("level", ps
, depth
, &q_n
->disk_enum_ctr
.level
))
3195 if(!prs_uint32("entries_read", ps
, depth
, &q_n
->disk_enum_ctr
.entries_read
))
3198 if(!prs_uint32("buffer", ps
, depth
, &q_n
->disk_enum_ctr
.disk_info_ptr
))
3204 if(!prs_uint32("preferred_len", ps
, depth
, &q_n
->preferred_len
))
3206 if(!smb_io_enum_hnd("enum_hnd", &q_n
->enum_hnd
, ps
, depth
))
3212 /*******************************************************************
3213 Reads or writes a structure.
3214 ********************************************************************/
3216 BOOL
srv_io_r_net_disk_enum(const char *desc
, SRV_R_NET_DISK_ENUM
*r_n
, prs_struct
*ps
, int depth
)
3220 uint32 entries_read
, entries_read2
, entries_read3
;
3225 prs_debug(ps
, depth
, desc
, "srv_io_r_net_disk_enum");
3228 entries_read
= entries_read2
= entries_read3
= r_n
->disk_enum_ctr
.entries_read
;
3233 if(!prs_uint32("entries_read", ps
, depth
, &entries_read
))
3235 if(!prs_uint32("ptr_disk_info", ps
, depth
, &r_n
->disk_enum_ctr
.disk_info_ptr
))
3238 /*this may be max, unknown, actual?*/
3240 if(!prs_uint32("max_elements", ps
, depth
, &entries_read2
))
3242 if(!prs_uint32("unknown", ps
, depth
, &r_n
->disk_enum_ctr
.unknown
))
3244 if(!prs_uint32("actual_elements", ps
, depth
, &entries_read3
))
3247 r_n
->disk_enum_ctr
.entries_read
= entries_read3
;
3249 if(UNMARSHALLING(ps
) && entries_read3
) {
3253 if(!(dinfo
= PRS_ALLOC_MEM(ps
, DISK_INFO
, entries_read3
)))
3255 r_n
->disk_enum_ctr
.disk_info
= dinfo
;
3258 for(i
=0; i
< entries_read3
; i
++) {
3260 if(!prs_uint32("unknown", ps
, depth
, &r_n
->disk_enum_ctr
.disk_info
[i
].unknown
))
3263 if(!smb_io_unistr3("disk_name", &r_n
->disk_enum_ctr
.disk_info
[i
].disk_name
, ps
, depth
))
3270 if(!prs_uint32("total_entries", ps
, depth
, &r_n
->total_entries
))
3273 if(!smb_io_enum_hnd("enum_hnd", &r_n
->enum_hnd
, ps
, depth
))
3276 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3282 /*******************************************************************
3283 Reads or writes a structure.
3284 ********************************************************************/
3286 BOOL
srv_io_q_net_name_validate(const char *desc
, SRV_Q_NET_NAME_VALIDATE
*q_n
, prs_struct
*ps
, int depth
)
3291 prs_debug(ps
, depth
, desc
, "srv_io_q_net_name_validate");
3297 if(!prs_pointer("servername", ps
, depth
, (void**)&q_n
->servername
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
3303 if(!smb_io_unistr2("", &q_n
->sharename
, True
, ps
, depth
))
3309 if(!prs_uint32("type", ps
, depth
, &q_n
->type
))
3312 if(!prs_uint32("flags", ps
, depth
, &q_n
->flags
))
3318 /*******************************************************************
3319 Reads or writes a structure.
3320 ********************************************************************/
3322 BOOL
srv_io_r_net_name_validate(const char *desc
, SRV_R_NET_NAME_VALIDATE
*r_n
, prs_struct
*ps
, int depth
)
3327 prs_debug(ps
, depth
, desc
, "srv_io_r_net_name_validate");
3333 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3339 /*******************************************************************
3340 Reads or writes a structure.
3341 ********************************************************************/
3343 BOOL
srv_io_q_net_file_query_secdesc(const char *desc
, SRV_Q_NET_FILE_QUERY_SECDESC
*q_n
, prs_struct
*ps
, int depth
)
3348 prs_debug(ps
, depth
, desc
, "srv_io_q_net_file_query_secdesc");
3354 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
3357 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
3363 if(!prs_uint32("ptr_qual_name", ps
, depth
, &q_n
->ptr_qual_name
))
3366 if(!smb_io_unistr2("", &q_n
->uni_qual_name
, True
, ps
, depth
))
3372 if(!smb_io_unistr2("", &q_n
->uni_file_name
, True
, ps
, depth
))
3375 if(!prs_uint32("unknown1", ps
, depth
, &q_n
->unknown1
))
3378 if(!prs_uint32("unknown2", ps
, depth
, &q_n
->unknown2
))
3381 if(!prs_uint32("unknown3", ps
, depth
, &q_n
->unknown3
))
3387 /*******************************************************************
3388 Reads or writes a structure.
3389 ********************************************************************/
3391 BOOL
srv_io_r_net_file_query_secdesc(const char *desc
, SRV_R_NET_FILE_QUERY_SECDESC
*r_n
, prs_struct
*ps
, int depth
)
3396 prs_debug(ps
, depth
, desc
, "srv_io_r_net_file_query_secdesc");
3402 if(!prs_uint32("ptr_response", ps
, depth
, &r_n
->ptr_response
))
3405 if(!prs_uint32("size_response", ps
, depth
, &r_n
->size_response
))
3408 if(!prs_uint32("ptr_secdesc", ps
, depth
, &r_n
->ptr_secdesc
))
3411 if(!prs_uint32("size_secdesc", ps
, depth
, &r_n
->size_secdesc
))
3414 if(!sec_io_desc("sec_desc", &r_n
->sec_desc
, ps
, depth
))
3420 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3426 /*******************************************************************
3427 Reads or writes a structure.
3428 ********************************************************************/
3430 BOOL
srv_io_q_net_file_set_secdesc(const char *desc
, SRV_Q_NET_FILE_SET_SECDESC
*q_n
, prs_struct
*ps
, int depth
)
3435 prs_debug(ps
, depth
, desc
, "srv_io_q_net_file_set_secdesc");
3441 if(!prs_uint32("ptr_srv_name", ps
, depth
, &q_n
->ptr_srv_name
))
3444 if(!smb_io_unistr2("", &q_n
->uni_srv_name
, True
, ps
, depth
))
3450 if(!prs_uint32("ptr_qual_name", ps
, depth
, &q_n
->ptr_qual_name
))
3453 if(!smb_io_unistr2("", &q_n
->uni_qual_name
, True
, ps
, depth
))
3459 if(!smb_io_unistr2("", &q_n
->uni_file_name
, True
, ps
, depth
))
3465 if(!prs_uint32("sec_info", ps
, depth
, &q_n
->sec_info
))
3468 if(!prs_uint32("size_set", ps
, depth
, &q_n
->size_set
))
3471 if(!prs_uint32("ptr_secdesc", ps
, depth
, &q_n
->ptr_secdesc
))
3474 if(!prs_uint32("size_secdesc", ps
, depth
, &q_n
->size_secdesc
))
3477 if(!sec_io_desc("sec_desc", &q_n
->sec_desc
, ps
, depth
))
3483 /*******************************************************************
3484 Reads or writes a structure.
3485 ********************************************************************/
3487 BOOL
srv_io_r_net_file_set_secdesc(const char *desc
, SRV_R_NET_FILE_SET_SECDESC
*r_n
, prs_struct
*ps
, int depth
)
3492 prs_debug(ps
, depth
, desc
, "srv_io_r_net_file_set_secdesc");
3498 if(!prs_werror("status", ps
, depth
, &r_n
->status
))
3504 /*******************************************************************
3506 ********************************************************************/
3508 void init_srv_q_net_remote_tod(SRV_Q_NET_REMOTE_TOD
*q_u
, const char *server
)
3510 q_u
->ptr_srv_name
= 1;
3511 init_unistr2(&q_u
->uni_srv_name
, server
, UNI_STR_TERMINATE
);
3515 /*******************************************************************
3516 Reads or writes a structure.
3517 ********************************************************************/
3519 BOOL
srv_io_q_net_file_close(const char *desc
, SRV_Q_NET_FILE_CLOSE
*q_u
, prs_struct
*ps
, int depth
)
3524 prs_debug(ps
, depth
, desc
, "srv_io_q_net_file_close");
3530 if(!prs_pointer("servername", ps
, depth
, (void**)&q_u
->servername
, sizeof(UNISTR2
), (PRS_POINTER_CAST
)prs_io_unistr2
))
3535 if(!prs_uint32("file_id", ps
, depth
, &q_u
->file_id
))
3541 /*******************************************************************
3542 ********************************************************************/
3544 BOOL
srv_io_r_net_file_close(const char *desc
, SRV_R_NET_FILE_CLOSE
*r_n
,
3545 prs_struct
*ps
, int depth
)
3547 prs_debug(ps
, depth
, desc
, "srv_io_r_net_file_close");
3553 if(!prs_werror("status", ps
, depth
, &r_n
->status
))