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 "rpc_server/dcerpc_server.h"
25 #include "librpc/gen_ndr/ndr_srvsvc.h"
26 #include "rpc_server/common/common.h"
27 #include "system/time.h"
32 static WERROR srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
33 struct srvsvc_NetCharDevEnum *r)
35 r->out.level = r->in.level;
36 r->out.totalentries = 0;
37 r->out.resume_handle = NULL;
39 switch (r->in.level) {
41 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetCharDevCtr0);
42 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
44 r->out.ctr.ctr0->count = 0;
45 r->out.ctr.ctr0->array = NULL;
47 return WERR_NOT_SUPPORTED;
50 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetCharDevCtr1);
51 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
53 r->out.ctr.ctr1->count = 0;
54 r->out.ctr.ctr1->array = NULL;
56 return WERR_NOT_SUPPORTED;
59 return WERR_UNKNOWN_LEVEL;
67 srvsvc_NetCharDevGetInfo
69 static WERROR srvsvc_NetCharDevGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
70 struct srvsvc_NetCharDevGetInfo *r)
72 switch (r->in.level) {
74 r->out.info.info0 = NULL;
76 return WERR_NOT_SUPPORTED;
79 r->out.info.info1 = NULL;
81 return WERR_NOT_SUPPORTED;
84 return WERR_UNKNOWN_LEVEL;
92 srvsvc_NetCharDevControl
94 static WERROR srvsvc_NetCharDevControl(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
95 struct srvsvc_NetCharDevControl *r)
97 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
102 srvsvc_NetCharDevQEnum
104 static WERROR srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
105 struct srvsvc_NetCharDevQEnum *r)
107 r->out.level = r->in.level;
108 r->out.totalentries = 0;
109 r->out.resume_handle = NULL;
111 switch (r->in.level) {
113 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr0);
114 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
116 r->out.ctr.ctr0->count = 0;
117 r->out.ctr.ctr0->array = NULL;
119 return WERR_NOT_SUPPORTED;
122 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr1);
123 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
125 r->out.ctr.ctr1->count = 0;
126 r->out.ctr.ctr1->array = NULL;
128 return WERR_NOT_SUPPORTED;
131 return WERR_UNKNOWN_LEVEL;
139 srvsvc_NetCharDevQGetInfo
141 static WERROR srvsvc_NetCharDevQGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
142 struct srvsvc_NetCharDevQGetInfo *r)
144 switch (r->in.level) {
146 r->out.info.info0 = NULL;
148 return WERR_NOT_SUPPORTED;
151 r->out.info.info1 = NULL;
153 return WERR_NOT_SUPPORTED;
156 return WERR_UNKNOWN_LEVEL;
164 srvsvc_NetCharDevQSetInfo
166 static WERROR srvsvc_NetCharDevQSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
167 struct srvsvc_NetCharDevQSetInfo *r)
169 switch (r->in.level) {
171 if (r->in.parm_error) {
172 r->out.parm_error = r->in.parm_error;
174 return WERR_NOT_SUPPORTED;
176 if (r->in.parm_error) {
177 r->out.parm_error = r->in.parm_error;
179 return WERR_NOT_SUPPORTED;
181 return WERR_UNKNOWN_LEVEL;
189 srvsvc_NetCharDevQPurge
191 static WERROR srvsvc_NetCharDevQPurge(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
192 struct srvsvc_NetCharDevQPurge *r)
194 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
199 srvsvc_NetCharDevQPurgeSelf
201 static WERROR srvsvc_NetCharDevQPurgeSelf(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
202 struct srvsvc_NetCharDevQPurgeSelf *r)
204 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
211 static WERROR srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
212 struct srvsvc_NetConnEnum *r)
214 r->out.level = r->in.level;
215 r->out.totalentries = 0;
216 r->out.resume_handle = NULL;
218 switch (r->in.level) {
220 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr0);
221 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
223 r->out.ctr.ctr0->count = 0;
224 r->out.ctr.ctr0->array = NULL;
226 return WERR_NOT_SUPPORTED;
229 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr1);
230 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
232 r->out.ctr.ctr1->count = 0;
233 r->out.ctr.ctr1->array = NULL;
235 return WERR_NOT_SUPPORTED;
238 return WERR_UNKNOWN_LEVEL;
248 static WERROR srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
249 struct srvsvc_NetFileEnum *r)
251 r->out.level = r->in.level;
252 r->out.totalentries = 0;
253 r->out.resume_handle = NULL;
255 switch (r->in.level) {
257 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr2);
258 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
260 r->out.ctr.ctr2->count = 0;
261 r->out.ctr.ctr2->array = NULL;
263 return WERR_NOT_SUPPORTED;
266 r->out.ctr.ctr3 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr3);
267 WERR_TALLOC_CHECK(r->out.ctr.ctr3);
269 r->out.ctr.ctr3->count = 0;
270 r->out.ctr.ctr3->array = NULL;
272 return WERR_NOT_SUPPORTED;
275 return WERR_UNKNOWN_LEVEL;
283 srvsvc_NetFileGetInfo
285 static WERROR srvsvc_NetFileGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
286 struct srvsvc_NetFileGetInfo *r)
288 switch (r->in.level) {
290 r->out.info.info2 = NULL;
291 return WERR_NOT_SUPPORTED;
294 r->out.info.info3 = NULL;
295 return WERR_NOT_SUPPORTED;
298 return WERR_UNKNOWN_LEVEL;
308 static WERROR srvsvc_NetFileClose(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
309 struct srvsvc_NetFileClose *r)
311 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
318 static WERROR srvsvc_NetSessEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
319 struct srvsvc_NetSessEnum *r)
321 r->out.level = r->in.level;
322 r->out.totalentries = 0;
323 r->out.resume_handle = NULL;
325 switch (r->in.level) {
327 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr0);
328 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
330 r->out.ctr.ctr0->count = 0;
331 r->out.ctr.ctr0->array = NULL;
333 return WERR_NOT_SUPPORTED;
336 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr1);
337 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
339 r->out.ctr.ctr1->count = 0;
340 r->out.ctr.ctr1->array = NULL;
342 return WERR_NOT_SUPPORTED;
345 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr2);
346 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
348 r->out.ctr.ctr2->count = 0;
349 r->out.ctr.ctr2->array = NULL;
351 return WERR_NOT_SUPPORTED;
354 r->out.ctr.ctr10 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr10);
355 WERR_TALLOC_CHECK(r->out.ctr.ctr10);
357 r->out.ctr.ctr2->count = 0;
358 r->out.ctr.ctr2->array = NULL;
360 return WERR_NOT_SUPPORTED;
363 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr502);
364 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
366 r->out.ctr.ctr2->count = 0;
367 r->out.ctr.ctr2->array = NULL;
369 return WERR_NOT_SUPPORTED;
372 return WERR_UNKNOWN_LEVEL;
382 static WERROR srvsvc_NetSessDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
383 struct srvsvc_NetSessDel *r)
385 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
392 static WERROR srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
393 struct srvsvc_NetShareAdd *r)
395 switch (r->in.level) {
397 if (r->in.parm_error) {
398 r->out.parm_error = r->in.parm_error;
400 return WERR_NOT_SUPPORTED;
403 if (r->in.parm_error) {
404 r->out.parm_error = r->in.parm_error;
406 return WERR_NOT_SUPPORTED;
409 if (r->in.parm_error) {
410 r->out.parm_error = r->in.parm_error;
412 return WERR_NOT_SUPPORTED;
415 if (r->in.parm_error) {
416 r->out.parm_error = r->in.parm_error;
418 return WERR_NOT_SUPPORTED;
421 if (r->in.parm_error) {
422 r->out.parm_error = r->in.parm_error;
424 return WERR_NOT_SUPPORTED;
427 return WERR_UNKNOWN_LEVEL;
435 srvsvc_NetShareEnumAll
437 static WERROR srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
438 struct srvsvc_NetShareEnumAll *r)
440 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
441 r->out.level = r->in.level;
442 r->out.totalentries = 0;
443 r->out.resume_handle = NULL;
445 switch (r->in.level) {
449 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
450 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
452 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
453 r->out.ctr.ctr0->array = NULL;
455 if (r->out.ctr.ctr0->count == 0) break;
457 r->out.ctr.ctr0->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo0, r->out.ctr.ctr0->count);
458 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
460 for (i=0;i<r->out.ctr.ctr0->count;i++) {
461 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
462 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
465 r->out.totalentries = r->out.ctr.ctr0->count;
471 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
472 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
474 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
475 r->out.ctr.ctr1->array = NULL;
477 if (r->out.ctr.ctr1->count == 0) break;
479 r->out.ctr.ctr1->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo1, r->out.ctr.ctr1->count);
480 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
482 for (i=0;i<r->out.ctr.ctr1->count;i++) {
483 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
484 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
485 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
488 r->out.totalentries = r->out.ctr.ctr1->count;
494 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
495 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
497 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
498 r->out.ctr.ctr2->array = NULL;
500 if (r->out.ctr.ctr2->count == 0) break;
502 r->out.ctr.ctr2->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo2, r->out.ctr.ctr2->count);
503 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
505 for (i=0;i<r->out.ctr.ctr2->count;i++) {
506 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
507 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
508 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
509 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
510 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
511 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
512 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
513 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
516 r->out.totalentries = r->out.ctr.ctr2->count;
522 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
523 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
525 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
526 r->out.ctr.ctr501->array = NULL;
528 if (r->out.ctr.ctr501->count == 0) break;
530 r->out.ctr.ctr501->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo501, r->out.ctr.ctr501->count);
531 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
533 for (i=0;i<r->out.ctr.ctr501->count;i++) {
534 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
535 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
536 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
537 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
540 r->out.totalentries = r->out.ctr.ctr501->count;
546 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
547 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
549 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
550 r->out.ctr.ctr502->array = NULL;
552 if (r->out.ctr.ctr502->count == 0) break;
554 r->out.ctr.ctr502->array = talloc_array_p(mem_ctx, struct srvsvc_NetShareInfo502, r->out.ctr.ctr502->count);
555 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
557 for (i=0;i<r->out.ctr.ctr502->count;i++) {
558 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
559 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
560 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
561 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
562 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
563 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
564 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
565 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
566 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
567 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
570 r->out.totalentries = r->out.ctr.ctr502->count;
575 return WERR_UNKNOWN_LEVEL;
583 srvsvc_NetShareGetInfo
585 static WERROR srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
586 struct srvsvc_NetShareGetInfo *r)
588 switch (r->in.level) {
590 r->out.info.info0 = NULL;
592 return WERR_NOT_SUPPORTED;
595 r->out.info.info0 = NULL;
597 return WERR_NOT_SUPPORTED;
600 r->out.info.info0 = NULL;
602 return WERR_NOT_SUPPORTED;
605 r->out.info.info0 = NULL;
607 return WERR_NOT_SUPPORTED;
610 r->out.info.info0 = NULL;
612 return WERR_NOT_SUPPORTED;
615 return WERR_UNKNOWN_LEVEL;
624 srvsvc_NetShareSetInfo
626 static WERROR srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
627 struct srvsvc_NetShareSetInfo *r)
629 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
636 static WERROR srvsvc_NetShareDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
637 struct srvsvc_NetShareDel *r)
639 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
644 srvsvc_NetShareDelSticky
646 static WERROR srvsvc_NetShareDelSticky(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
647 struct srvsvc_NetShareDelSticky *r)
649 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
656 static WERROR srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
657 struct srvsvc_NetShareCheck *r)
659 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
666 static WERROR srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
667 struct srvsvc_NetSrvGetInfo *r)
669 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
676 static WERROR srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
677 struct srvsvc_NetSrvSetInfo *r)
679 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
686 static WERROR srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
687 struct srvsvc_NetDiskEnum *r)
691 r->out.totalentries = 0;
692 r->out.resume_handle = NULL;
694 switch (r->in.level) {
696 r->out.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetDiskCtr0);
697 WERR_TALLOC_CHECK(r->out.ctr0);
699 r->out.ctr0->unknown = 0x1;
700 r->out.ctr0->count = 0;
701 r->out.ctr0->array = NULL;
703 return WERR_NOT_SUPPORTED;
707 return WERR_UNKNOWN_LEVEL;
716 srvsvc_NETRSERVERSTATISTICSGET
718 static WERROR srvsvc_NETRSERVERSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
719 struct srvsvc_NETRSERVERSTATISTICSGET *r)
721 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
726 srvsvc_NETRSERVERTRANSPORTADD
728 static WERROR srvsvc_NETRSERVERTRANSPORTADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
729 struct srvsvc_NETRSERVERTRANSPORTADD *r)
731 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
736 srvsvc_NetTransportEnum
738 static WERROR srvsvc_NetTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
739 struct srvsvc_NetTransportEnum *r)
741 r->out.level = r->in.level;
742 r->out.totalentries = 0;
743 r->out.resume_handle = NULL;
745 switch (r->in.level) {
747 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr0);
748 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
750 r->out.ctr.ctr0->count = 0;
751 r->out.ctr.ctr0->array = NULL;
753 return WERR_NOT_SUPPORTED;
757 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr1);
758 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
760 r->out.ctr.ctr1->count = 0;
761 r->out.ctr.ctr1->array = NULL;
763 return WERR_NOT_SUPPORTED;
767 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr2);
768 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
770 r->out.ctr.ctr2->count = 0;
771 r->out.ctr.ctr2->array = NULL;
773 return WERR_NOT_SUPPORTED;
777 r->out.ctr.ctr3 = talloc_p(mem_ctx, struct srvsvc_NetTransportCtr3);
778 WERR_TALLOC_CHECK(r->out.ctr.ctr3);
780 r->out.ctr.ctr3->count = 0;
781 r->out.ctr.ctr3->array = NULL;
783 return WERR_NOT_SUPPORTED;
787 return WERR_UNKNOWN_LEVEL;
796 srvsvc_NETRSERVERTRANSPORTDEL
798 static WERROR srvsvc_NETRSERVERTRANSPORTDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
799 struct srvsvc_NETRSERVERTRANSPORTDEL *r)
801 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
808 static WERROR srvsvc_NetRemoteTOD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
809 struct srvsvc_NetRemoteTOD *r)
815 r->out.info = talloc_p(mem_ctx, struct srvsvc_NetRemoteTODInfo);
816 WERR_TALLOC_CHECK(r->out.info);
823 r->out.info->elapsed = t;
824 /* fake the uptime: just return the milliseconds till 0:00:00 today */
825 r->out.info->msecs = (tm.tm_hour*60*60*1000)
826 + (tm.tm_min*60*1000)
828 + (tval.tv_usec/1000);
829 r->out.info->hours = tm.tm_hour;
830 r->out.info->mins = tm.tm_min;
831 r->out.info->secs = tm.tm_sec;
832 r->out.info->hunds = tval.tv_usec/10000;
833 r->out.info->timezone = get_time_zone(t)/60;
834 r->out.info->tinterval = 310; /* just return the same as windows */
835 r->out.info->day = tm.tm_mday;
836 r->out.info->month = tm.tm_mon + 1;
837 r->out.info->year = tm.tm_year + 1900;
838 r->out.info->weekday = tm.tm_wday;
845 srvsvc_NETRSERVERSETSERVICEBITS
847 static WERROR srvsvc_NETRSERVERSETSERVICEBITS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
848 struct srvsvc_NETRSERVERSETSERVICEBITS *r)
850 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
855 srvsvc_NETRPRPATHTYPE
857 static WERROR srvsvc_NETRPRPATHTYPE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
858 struct srvsvc_NETRPRPATHTYPE *r)
860 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
865 srvsvc_NETRPRPATHCANONICALIZE
867 static WERROR srvsvc_NETRPRPATHCANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
868 struct srvsvc_NETRPRPATHCANONICALIZE *r)
870 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
875 srvsvc_NETRPRPATHCOMPARE
877 static WERROR srvsvc_NETRPRPATHCOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
878 struct srvsvc_NETRPRPATHCOMPARE *r)
880 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
885 srvsvc_NET_NAME_VALIDATE
887 static WERROR srvsvc_NET_NAME_VALIDATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
888 struct srvsvc_NET_NAME_VALIDATE *r)
890 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
895 srvsvc_NETRPRNAMECANONICALIZE
897 static WERROR srvsvc_NETRPRNAMECANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
898 struct srvsvc_NETRPRNAMECANONICALIZE *r)
900 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
905 srvsvc_NETRPRNAMECOMPARE
907 static WERROR srvsvc_NETRPRNAMECOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
908 struct srvsvc_NETRPRNAMECOMPARE *r)
910 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
917 static WERROR srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
918 struct srvsvc_NetShareEnum *r)
920 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
921 r->out.level = r->in.level;
922 r->out.totalentries = 0;
923 r->out.resume_handle = NULL;
925 switch (r->in.level) {
929 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
930 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
932 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
933 r->out.ctr.ctr0->array = NULL;
935 if (r->out.ctr.ctr0->count == 0) break;
937 r->out.ctr.ctr0->array = talloc_array_p(mem_ctx,
938 struct srvsvc_NetShareInfo0,
939 r->out.ctr.ctr0->count);
940 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
942 for (i=0;i<r->out.ctr.ctr0->count;i++) {
943 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
944 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
947 r->out.totalentries = r->out.ctr.ctr0->count;
953 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
954 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
956 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
957 r->out.ctr.ctr1->array = NULL;
959 if (r->out.ctr.ctr1->count == 0) break;
961 r->out.ctr.ctr1->array = talloc_array_p(mem_ctx,
962 struct srvsvc_NetShareInfo1,
963 r->out.ctr.ctr1->count);
964 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
966 for (i=0;i<r->out.ctr.ctr1->count;i++) {
967 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
968 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
969 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
972 r->out.totalentries = r->out.ctr.ctr1->count;
978 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
979 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
981 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
982 r->out.ctr.ctr2->array = NULL;
984 if (r->out.ctr.ctr2->count == 0) break;
986 r->out.ctr.ctr2->array = talloc_array_p(mem_ctx,
987 struct srvsvc_NetShareInfo2,
988 r->out.ctr.ctr2->count);
989 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
991 for (i=0;i<r->out.ctr.ctr2->count;i++) {
992 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
993 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
994 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
995 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
996 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
997 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
998 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
999 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
1002 r->out.totalentries = r->out.ctr.ctr2->count;
1008 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
1009 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
1011 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1012 r->out.ctr.ctr501->array = NULL;
1014 if (r->out.ctr.ctr501->count == 0) break;
1016 r->out.ctr.ctr501->array = talloc_array_p(mem_ctx,
1017 struct srvsvc_NetShareInfo501,
1018 r->out.ctr.ctr501->count);
1019 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
1021 for (i=0;i<r->out.ctr.ctr501->count;i++) {
1022 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
1023 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1024 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
1025 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
1028 r->out.totalentries = r->out.ctr.ctr501->count;
1034 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
1035 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
1037 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1038 r->out.ctr.ctr502->array = NULL;
1040 if (r->out.ctr.ctr502->count == 0) break;
1042 r->out.ctr.ctr502->array = talloc_array_p(mem_ctx,
1043 struct srvsvc_NetShareInfo502,
1044 r->out.ctr.ctr502->count);
1045 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
1047 for (i=0;i<r->out.ctr.ctr502->count;i++) {
1048 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
1049 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1050 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
1051 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
1052 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
1053 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
1054 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
1055 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
1056 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
1057 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
1060 r->out.totalentries = r->out.ctr.ctr502->count;
1065 return WERR_UNKNOWN_LEVEL;
1074 srvsvc_NETRSHAREDELSTART
1076 static WERROR srvsvc_NETRSHAREDELSTART(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1077 struct srvsvc_NETRSHAREDELSTART *r)
1079 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1084 srvsvc_NETRSHAREDELCOMMIT
1086 static WERROR srvsvc_NETRSHAREDELCOMMIT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1087 struct srvsvc_NETRSHAREDELCOMMIT *r)
1089 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1094 srvsvc_NET_FILE_QUERY_SECDESC
1096 static WERROR srvsvc_NET_FILE_QUERY_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1097 struct srvsvc_NET_FILE_QUERY_SECDESC *r)
1099 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1104 srvsvc_NET_FILE_SET_SECDESC
1106 static WERROR srvsvc_NET_FILE_SET_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1107 struct srvsvc_NET_FILE_SET_SECDESC *r)
1109 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1114 srvsvc_NETRSERVERTRANSPORTADDEX
1116 static WERROR srvsvc_NETRSERVERTRANSPORTADDEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1117 struct srvsvc_NETRSERVERTRANSPORTADDEX *r)
1119 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1124 srvsvc_NETRSERVERSETSERVICEBITSEX
1126 static WERROR srvsvc_NETRSERVERSETSERVICEBITSEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1127 struct srvsvc_NETRSERVERSETSERVICEBITSEX *r)
1129 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1134 srvsvc_NETRDFSGETVERSION
1136 static WERROR srvsvc_NETRDFSGETVERSION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1137 struct srvsvc_NETRDFSGETVERSION *r)
1139 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1144 srvsvc_NETRDFSCREATELOCALPARTITION
1146 static WERROR srvsvc_NETRDFSCREATELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1147 struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
1149 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1154 srvsvc_NETRDFSDELETELOCALPARTITION
1156 static WERROR srvsvc_NETRDFSDELETELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1157 struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
1159 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1164 srvsvc_NETRDFSSETLOCALVOLUMESTATE
1166 static WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1167 struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
1169 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1174 srvsvc_NETRDFSSETSERVERINFO
1176 static WERROR srvsvc_NETRDFSSETSERVERINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1177 struct srvsvc_NETRDFSSETSERVERINFO *r)
1179 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1184 srvsvc_NETRDFSCREATEEXITPOINT
1186 static WERROR srvsvc_NETRDFSCREATEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1187 struct srvsvc_NETRDFSCREATEEXITPOINT *r)
1189 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1194 srvsvc_NETRDFSDELETEEXITPOINT
1196 static WERROR srvsvc_NETRDFSDELETEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1197 struct srvsvc_NETRDFSDELETEEXITPOINT *r)
1199 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1204 srvsvc_NETRDFSMODIFYPREFIX
1206 static WERROR srvsvc_NETRDFSMODIFYPREFIX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1207 struct srvsvc_NETRDFSMODIFYPREFIX *r)
1209 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1214 srvsvc_NETRDFSFIXLOCALVOLUME
1216 static WERROR srvsvc_NETRDFSFIXLOCALVOLUME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1217 struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
1219 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1224 srvsvc_NETRDFSMANAGERREPORTSITEINFO
1226 static WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1227 struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
1229 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1234 srvsvc_NETRSERVERTRANSPORTDELEX
1236 static WERROR srvsvc_NETRSERVERTRANSPORTDELEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1237 struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
1239 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1243 /* include the generated boilerplate */
1244 #include "librpc/gen_ndr/ndr_srvsvc_s.c"