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))