2 Unix SMB/CIFS implementation.
4 endpoint server for the srvsvc pipe
6 Copyright (C) Stefan (metze) Metzmacher 2004
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 #include "librpc/gen_ndr/ndr_srvsvc.h"
25 #include "rpc_server/common/common.h"
30 static WERROR srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
31 struct srvsvc_NetCharDevEnum *r)
33 r->out.level = r->in.level;
34 r->out.totalentries = 0;
35 r->out.resume_handle = NULL;
37 switch (r->in.level) {
39 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetCharDevCtr0);
40 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
42 r->out.ctr.ctr0->count = 0;
43 r->out.ctr.ctr0->array = NULL;
45 return WERR_NOT_SUPPORTED;
48 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetCharDevCtr1);
49 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
51 r->out.ctr.ctr1->count = 0;
52 r->out.ctr.ctr1->array = NULL;
54 return WERR_NOT_SUPPORTED;
57 return WERR_UNKNOWN_LEVEL;
65 srvsvc_NetCharDevGetInfo
67 static WERROR srvsvc_NetCharDevGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
68 struct srvsvc_NetCharDevGetInfo *r)
70 switch (r->in.level) {
72 r->out.info.info0 = NULL;
74 return WERR_NOT_SUPPORTED;
77 r->out.info.info1 = NULL;
79 return WERR_NOT_SUPPORTED;
82 return WERR_UNKNOWN_LEVEL;
90 srvsvc_NetCharDevControl
92 static WERROR srvsvc_NetCharDevControl(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
93 struct srvsvc_NetCharDevControl *r)
95 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
100 srvsvc_NetCharDevQEnum
102 static WERROR srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
103 struct srvsvc_NetCharDevQEnum *r)
105 r->out.level = r->in.level;
106 r->out.totalentries = 0;
107 r->out.resume_handle = NULL;
109 switch (r->in.level) {
111 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr0);
112 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
114 r->out.ctr.ctr0->count = 0;
115 r->out.ctr.ctr0->array = NULL;
117 return WERR_NOT_SUPPORTED;
120 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr1);
121 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
123 r->out.ctr.ctr1->count = 0;
124 r->out.ctr.ctr1->array = NULL;
126 return WERR_NOT_SUPPORTED;
129 return WERR_UNKNOWN_LEVEL;
137 srvsvc_NetCharDevQGetInfo
139 static WERROR srvsvc_NetCharDevQGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
140 struct srvsvc_NetCharDevQGetInfo *r)
142 switch (r->in.level) {
144 r->out.info.info0 = NULL;
146 return WERR_NOT_SUPPORTED;
149 r->out.info.info1 = NULL;
151 return WERR_NOT_SUPPORTED;
154 return WERR_UNKNOWN_LEVEL;
162 srvsvc_NetCharDevQSetInfo
164 static WERROR srvsvc_NetCharDevQSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
165 struct srvsvc_NetCharDevQSetInfo *r)
167 switch (r->in.level) {
169 if (r->in.parm_error) {
170 r->out.parm_error = r->in.parm_error;
172 return WERR_NOT_SUPPORTED;
174 if (r->in.parm_error) {
175 r->out.parm_error = r->in.parm_error;
177 return WERR_NOT_SUPPORTED;
179 return WERR_UNKNOWN_LEVEL;
187 srvsvc_NetCharDevQPurge
189 static WERROR srvsvc_NetCharDevQPurge(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
190 struct srvsvc_NetCharDevQPurge *r)
192 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
197 srvsvc_NetCharDevQPurgeSelf
199 static WERROR srvsvc_NetCharDevQPurgeSelf(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
200 struct srvsvc_NetCharDevQPurgeSelf *r)
202 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
209 static WERROR srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
210 struct srvsvc_NetConnEnum *r)
212 r->out.level = r->in.level;
213 r->out.totalentries = 0;
214 r->out.resume_handle = NULL;
216 switch (r->in.level) {
218 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr0);
219 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
221 r->out.ctr.ctr0->count = 0;
222 r->out.ctr.ctr0->array = NULL;
224 return WERR_NOT_SUPPORTED;
227 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr1);
228 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
230 r->out.ctr.ctr1->count = 0;
231 r->out.ctr.ctr1->array = NULL;
233 return WERR_NOT_SUPPORTED;
236 return WERR_UNKNOWN_LEVEL;
246 static WERROR srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
247 struct srvsvc_NetFileEnum *r)
249 r->out.level = r->in.level;
250 r->out.totalentries = 0;
251 r->out.resume_handle = NULL;
253 switch (r->in.level) {
255 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr2);
256 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
258 r->out.ctr.ctr2->count = 0;
259 r->out.ctr.ctr2->array = NULL;
261 return WERR_NOT_SUPPORTED;
264 r->out.ctr.ctr3 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr3);
265 WERR_TALLOC_CHECK(r->out.ctr.ctr3);
267 r->out.ctr.ctr3->count = 0;
268 r->out.ctr.ctr3->array = NULL;
270 return WERR_NOT_SUPPORTED;
273 return WERR_UNKNOWN_LEVEL;
281 srvsvc_NetFileGetInfo
283 static WERROR srvsvc_NetFileGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
284 struct srvsvc_NetFileGetInfo *r)
286 switch (r->in.level) {
288 r->out.info.info2 = NULL;
289 return WERR_NOT_SUPPORTED;
292 r->out.info.info3 = NULL;
293 return WERR_NOT_SUPPORTED;
296 return WERR_UNKNOWN_LEVEL;
306 static WERROR srvsvc_NetFileClose(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
307 struct srvsvc_NetFileClose *r)
309 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
316 static WERROR srvsvc_NetSessEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
317 struct srvsvc_NetSessEnum *r)
319 r->out.level = r->in.level;
320 r->out.totalentries = 0;
321 r->out.resume_handle = NULL;
323 switch (r->in.level) {
325 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr0);
326 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
328 r->out.ctr.ctr0->count = 0;
329 r->out.ctr.ctr0->array = NULL;
331 return WERR_NOT_SUPPORTED;
334 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr1);
335 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
337 r->out.ctr.ctr1->count = 0;
338 r->out.ctr.ctr1->array = NULL;
340 return WERR_NOT_SUPPORTED;
343 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr2);
344 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
346 r->out.ctr.ctr2->count = 0;
347 r->out.ctr.ctr2->array = NULL;
349 return WERR_NOT_SUPPORTED;
352 r->out.ctr.ctr10 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr10);
353 WERR_TALLOC_CHECK(r->out.ctr.ctr10);
355 r->out.ctr.ctr2->count = 0;
356 r->out.ctr.ctr2->array = NULL;
358 return WERR_NOT_SUPPORTED;
361 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr502);
362 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
364 r->out.ctr.ctr2->count = 0;
365 r->out.ctr.ctr2->array = NULL;
367 return WERR_NOT_SUPPORTED;
370 return WERR_UNKNOWN_LEVEL;
380 static WERROR srvsvc_NetSessDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
381 struct srvsvc_NetSessDel *r)
383 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
390 static WERROR srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
391 struct srvsvc_NetShareAdd *r)
393 switch (r->in.level) {
395 if (r->in.parm_error) {
396 r->out.parm_error = r->in.parm_error;
398 return WERR_NOT_SUPPORTED;
401 if (r->in.parm_error) {
402 r->out.parm_error = r->in.parm_error;
404 return WERR_NOT_SUPPORTED;
407 if (r->in.parm_error) {
408 r->out.parm_error = r->in.parm_error;
410 return WERR_NOT_SUPPORTED;
413 if (r->in.parm_error) {
414 r->out.parm_error = r->in.parm_error;
416 return WERR_NOT_SUPPORTED;
419 if (r->in.parm_error) {
420 r->out.parm_error = r->in.parm_error;
422 return WERR_NOT_SUPPORTED;
425 return WERR_UNKNOWN_LEVEL;
433 srvsvc_NetShareEnumAll
435 static WERROR srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
436 struct srvsvc_NetShareEnumAll *r)
438 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
439 r->out.level = r->in.level;
440 r->out.totalentries = 0;
441 r->out.resume_handle = NULL;
443 switch (r->in.level) {
447 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
448 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
450 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
451 r->out.ctr.ctr0->array = NULL;
453 if (r->out.ctr.ctr0->count == 0) break;
455 r->out.ctr.ctr0->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo0, r->out.ctr.ctr0->count);
456 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
458 for (i=0;i<r->out.ctr.ctr0->count;i++) {
459 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
460 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
463 r->out.totalentries = r->out.ctr.ctr0->count;
469 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
470 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
472 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
473 r->out.ctr.ctr1->array = NULL;
475 if (r->out.ctr.ctr1->count == 0) break;
477 r->out.ctr.ctr1->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo1, r->out.ctr.ctr1->count);
478 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
480 for (i=0;i<r->out.ctr.ctr1->count;i++) {
481 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
482 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
483 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
486 r->out.totalentries = r->out.ctr.ctr1->count;
492 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
493 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
495 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
496 r->out.ctr.ctr2->array = NULL;
498 if (r->out.ctr.ctr2->count == 0) break;
500 r->out.ctr.ctr2->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo2, r->out.ctr.ctr2->count);
501 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
503 for (i=0;i<r->out.ctr.ctr2->count;i++) {
504 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
505 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
506 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
507 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
508 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
509 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
510 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
511 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
514 r->out.totalentries = r->out.ctr.ctr2->count;
520 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
521 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
523 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
524 r->out.ctr.ctr501->array = NULL;
526 if (r->out.ctr.ctr501->count == 0) break;
528 r->out.ctr.ctr501->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo501, r->out.ctr.ctr501->count);
529 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
531 for (i=0;i<r->out.ctr.ctr501->count;i++) {
532 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
533 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
534 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
535 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
538 r->out.totalentries = r->out.ctr.ctr501->count;
544 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
545 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
547 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
548 r->out.ctr.ctr502->array = NULL;
550 if (r->out.ctr.ctr502->count == 0) break;
552 r->out.ctr.ctr502->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo502, r->out.ctr.ctr502->count);
553 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
555 for (i=0;i<r->out.ctr.ctr502->count;i++) {
556 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
557 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
558 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
559 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
560 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
561 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
562 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
563 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
564 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
565 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
568 r->out.totalentries = r->out.ctr.ctr502->count;
573 return WERR_UNKNOWN_LEVEL;
581 srvsvc_NetShareGetInfo
583 static WERROR srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
584 struct srvsvc_NetShareGetInfo *r)
586 switch (r->in.level) {
588 r->out.info.info0 = NULL;
590 return WERR_NOT_SUPPORTED;
593 r->out.info.info0 = NULL;
595 return WERR_NOT_SUPPORTED;
598 r->out.info.info0 = NULL;
600 return WERR_NOT_SUPPORTED;
603 r->out.info.info0 = NULL;
605 return WERR_NOT_SUPPORTED;
608 r->out.info.info0 = NULL;
610 return WERR_NOT_SUPPORTED;
613 return WERR_UNKNOWN_LEVEL;
622 srvsvc_NetShareSetInfo
624 static WERROR srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
625 struct srvsvc_NetShareSetInfo *r)
627 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
634 static WERROR srvsvc_NetShareDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
635 struct srvsvc_NetShareDel *r)
637 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
642 srvsvc_NetShareDelSticky
644 static WERROR srvsvc_NetShareDelSticky(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
645 struct srvsvc_NetShareDelSticky *r)
647 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
654 static WERROR srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
655 struct srvsvc_NetShareCheck *r)
657 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
664 static WERROR srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
665 struct srvsvc_NetSrvGetInfo *r)
667 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
674 static WERROR srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
675 struct srvsvc_NetSrvSetInfo *r)
677 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
684 static WERROR srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
685 struct srvsvc_NetDiskEnum *r)
689 r->out.totalentries = 0;
690 r->out.resume_handle = NULL;
692 switch (r->in.level) {
694 r->out.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetDiskCtr0);
695 WERR_TALLOC_CHECK(r->out.ctr0);
697 r->out.ctr0->unknown = 0x1;
698 r->out.ctr0->count = 0;
699 r->out.ctr0->array = NULL;
701 return WERR_NOT_SUPPORTED;
705 return WERR_UNKNOWN_LEVEL;
714 srvsvc_NETRSERVERSTATISTICSGET
716 static WERROR srvsvc_NETRSERVERSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
717 struct srvsvc_NETRSERVERSTATISTICSGET *r)
719 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
724 srvsvc_NETRSERVERTRANSPORTADD
726 static WERROR srvsvc_NETRSERVERTRANSPORTADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
727 struct srvsvc_NETRSERVERTRANSPORTADD *r)
729 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
734 srvsvc_NetTransportEnum
736 static WERROR srvsvc_NetTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
737 struct srvsvc_NetTransportEnum *r)
739 r->out.level = r->in.level;
740 r->out.totalentries = 0;
741 r->out.resume_handle = NULL;
743 switch (r->in.level) {
745 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr0);
746 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
748 r->out.ctr.ctr0->count = 0;
749 r->out.ctr.ctr0->array = NULL;
751 return WERR_NOT_SUPPORTED;
755 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr1);
756 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
758 r->out.ctr.ctr1->count = 0;
759 r->out.ctr.ctr1->array = NULL;
761 return WERR_NOT_SUPPORTED;
765 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr2);
766 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
768 r->out.ctr.ctr2->count = 0;
769 r->out.ctr.ctr2->array = NULL;
771 return WERR_NOT_SUPPORTED;
775 r->out.ctr.ctr3 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr3);
776 WERR_TALLOC_CHECK(r->out.ctr.ctr3);
778 r->out.ctr.ctr3->count = 0;
779 r->out.ctr.ctr3->array = NULL;
781 return WERR_NOT_SUPPORTED;
785 return WERR_UNKNOWN_LEVEL;
794 srvsvc_NETRSERVERTRANSPORTDEL
796 static WERROR srvsvc_NETRSERVERTRANSPORTDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
797 struct srvsvc_NETRSERVERTRANSPORTDEL *r)
799 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
806 static WERROR srvsvc_NetRemoteTOD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
807 struct srvsvc_NetRemoteTOD *r)
809 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
814 srvsvc_NETRSERVERSETSERVICEBITS
816 static WERROR srvsvc_NETRSERVERSETSERVICEBITS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
817 struct srvsvc_NETRSERVERSETSERVICEBITS *r)
819 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
824 srvsvc_NETRPRPATHTYPE
826 static WERROR srvsvc_NETRPRPATHTYPE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
827 struct srvsvc_NETRPRPATHTYPE *r)
829 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
834 srvsvc_NETRPRPATHCANONICALIZE
836 static WERROR srvsvc_NETRPRPATHCANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
837 struct srvsvc_NETRPRPATHCANONICALIZE *r)
839 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
844 srvsvc_NETRPRPATHCOMPARE
846 static WERROR srvsvc_NETRPRPATHCOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
847 struct srvsvc_NETRPRPATHCOMPARE *r)
849 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
854 srvsvc_NET_NAME_VALIDATE
856 static WERROR srvsvc_NET_NAME_VALIDATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
857 struct srvsvc_NET_NAME_VALIDATE *r)
859 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
864 srvsvc_NETRPRNAMECANONICALIZE
866 static WERROR srvsvc_NETRPRNAMECANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
867 struct srvsvc_NETRPRNAMECANONICALIZE *r)
869 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
874 srvsvc_NETRPRNAMECOMPARE
876 static WERROR srvsvc_NETRPRNAMECOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
877 struct srvsvc_NETRPRNAMECOMPARE *r)
879 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
886 static WERROR srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
887 struct srvsvc_NetShareEnum *r)
889 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
890 r->out.level = r->in.level;
891 r->out.totalentries = 0;
892 r->out.resume_handle = NULL;
894 switch (r->in.level) {
898 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
899 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
901 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
902 r->out.ctr.ctr0->array = NULL;
904 if (r->out.ctr.ctr0->count == 0) break;
906 r->out.ctr.ctr0->array = talloc(mem_ctx, r->out.ctr.ctr0->count*sizeof(struct srvsvc_NetShareInfo0));
907 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
909 for (i=0;i<r->out.ctr.ctr0->count;i++) {
910 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
911 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
914 r->out.totalentries = r->out.ctr.ctr0->count;
920 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
921 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
923 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
924 r->out.ctr.ctr1->array = NULL;
926 if (r->out.ctr.ctr1->count == 0) break;
928 r->out.ctr.ctr1->array = talloc(mem_ctx, r->out.ctr.ctr1->count*sizeof(struct srvsvc_NetShareInfo1));
929 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
931 for (i=0;i<r->out.ctr.ctr1->count;i++) {
932 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
933 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
934 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
937 r->out.totalentries = r->out.ctr.ctr1->count;
943 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
944 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
946 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
947 r->out.ctr.ctr2->array = NULL;
949 if (r->out.ctr.ctr2->count == 0) break;
951 r->out.ctr.ctr2->array = talloc(mem_ctx, r->out.ctr.ctr2->count*sizeof(struct srvsvc_NetShareInfo2));
952 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
954 for (i=0;i<r->out.ctr.ctr2->count;i++) {
955 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
956 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
957 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
958 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
959 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
960 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
961 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
962 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
965 r->out.totalentries = r->out.ctr.ctr2->count;
971 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
972 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
974 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
975 r->out.ctr.ctr501->array = NULL;
977 if (r->out.ctr.ctr501->count == 0) break;
979 r->out.ctr.ctr501->array = talloc(mem_ctx, r->out.ctr.ctr501->count*sizeof(struct srvsvc_NetShareInfo501));
980 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
982 for (i=0;i<r->out.ctr.ctr501->count;i++) {
983 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
984 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
985 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
986 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
989 r->out.totalentries = r->out.ctr.ctr501->count;
995 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
996 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
998 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
999 r->out.ctr.ctr502->array = NULL;
1001 if (r->out.ctr.ctr502->count == 0) break;
1003 r->out.ctr.ctr502->array = talloc(mem_ctx, r->out.ctr.ctr502->count*sizeof(struct srvsvc_NetShareInfo502));
1004 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
1006 for (i=0;i<r->out.ctr.ctr502->count;i++) {
1007 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
1008 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1009 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
1010 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
1011 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
1012 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
1013 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
1014 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
1015 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
1016 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
1019 r->out.totalentries = r->out.ctr.ctr502->count;
1024 return WERR_UNKNOWN_LEVEL;
1033 srvsvc_NETRSHAREDELSTART
1035 static WERROR srvsvc_NETRSHAREDELSTART(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1036 struct srvsvc_NETRSHAREDELSTART *r)
1038 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1043 srvsvc_NETRSHAREDELCOMMIT
1045 static WERROR srvsvc_NETRSHAREDELCOMMIT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1046 struct srvsvc_NETRSHAREDELCOMMIT *r)
1048 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1053 srvsvc_NET_FILE_QUERY_SECDESC
1055 static WERROR srvsvc_NET_FILE_QUERY_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1056 struct srvsvc_NET_FILE_QUERY_SECDESC *r)
1058 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1063 srvsvc_NET_FILE_SET_SECDESC
1065 static WERROR srvsvc_NET_FILE_SET_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1066 struct srvsvc_NET_FILE_SET_SECDESC *r)
1068 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1073 srvsvc_NETRSERVERTRANSPORTADDEX
1075 static WERROR srvsvc_NETRSERVERTRANSPORTADDEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1076 struct srvsvc_NETRSERVERTRANSPORTADDEX *r)
1078 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1083 srvsvc_NETRSERVERSETSERVICEBITSEX
1085 static WERROR srvsvc_NETRSERVERSETSERVICEBITSEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1086 struct srvsvc_NETRSERVERSETSERVICEBITSEX *r)
1088 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1093 srvsvc_NETRDFSGETVERSION
1095 static WERROR srvsvc_NETRDFSGETVERSION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1096 struct srvsvc_NETRDFSGETVERSION *r)
1098 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1103 srvsvc_NETRDFSCREATELOCALPARTITION
1105 static WERROR srvsvc_NETRDFSCREATELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1106 struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
1108 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1113 srvsvc_NETRDFSDELETELOCALPARTITION
1115 static WERROR srvsvc_NETRDFSDELETELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1116 struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
1118 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1123 srvsvc_NETRDFSSETLOCALVOLUMESTATE
1125 static WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1126 struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
1128 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1133 srvsvc_NETRDFSSETSERVERINFO
1135 static WERROR srvsvc_NETRDFSSETSERVERINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1136 struct srvsvc_NETRDFSSETSERVERINFO *r)
1138 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1143 srvsvc_NETRDFSCREATEEXITPOINT
1145 static WERROR srvsvc_NETRDFSCREATEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1146 struct srvsvc_NETRDFSCREATEEXITPOINT *r)
1148 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1153 srvsvc_NETRDFSDELETEEXITPOINT
1155 static WERROR srvsvc_NETRDFSDELETEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1156 struct srvsvc_NETRDFSDELETEEXITPOINT *r)
1158 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1163 srvsvc_NETRDFSMODIFYPREFIX
1165 static WERROR srvsvc_NETRDFSMODIFYPREFIX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1166 struct srvsvc_NETRDFSMODIFYPREFIX *r)
1168 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1173 srvsvc_NETRDFSFIXLOCALVOLUME
1175 static WERROR srvsvc_NETRDFSFIXLOCALVOLUME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1176 struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
1178 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1183 srvsvc_NETRDFSMANAGERREPORTSITEINFO
1185 static WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1186 struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
1188 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1193 srvsvc_NETRSERVERTRANSPORTDELEX
1195 static WERROR srvsvc_NETRSERVERTRANSPORTDELEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1196 struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
1198 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1202 /* include the generated boilerplate */
1203 #include "librpc/gen_ndr/ndr_srvsvc_s.c"