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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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)) {
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 < r_n->disk_enum_ctr.entries_read; 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))