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/common/common.h"
29 static NTSTATUS srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
30 struct srvsvc_NetCharDevEnum *r)
32 r->out.level = r->in.level;
33 r->out.totalentries = 0;
34 r->out.resume_handle = NULL;
35 r->out.result = WERR_OK;
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 r->out.result = 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 r->out.result = WERR_NOT_SUPPORTED;
57 r->out.result = WERR_UNKNOWN_LEVEL;
66 srvsvc_NetCharDevGetInfo
68 static NTSTATUS srvsvc_NetCharDevGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
69 struct srvsvc_NetCharDevGetInfo *r)
71 r->out.result = WERR_OK;
73 switch (r->in.level) {
75 r->out.info.info0 = NULL;
77 r->out.result = WERR_NOT_SUPPORTED;
80 r->out.info.info1 = NULL;
82 r->out.result = WERR_NOT_SUPPORTED;
85 r->out.result = WERR_UNKNOWN_LEVEL;
94 srvsvc_NetCharDevControl
96 static NTSTATUS srvsvc_NetCharDevControl(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
97 struct srvsvc_NetCharDevControl *r)
99 r->out.result = WERR_NOT_SUPPORTED;
105 srvsvc_NetCharDevQEnum
107 static NTSTATUS srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
108 struct srvsvc_NetCharDevQEnum *r)
110 r->out.level = r->in.level;
111 r->out.totalentries = 0;
112 r->out.resume_handle = NULL;
113 r->out.result = WERR_OK;
115 switch (r->in.level) {
117 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr0);
118 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
120 r->out.ctr.ctr0->count = 0;
121 r->out.ctr.ctr0->array = NULL;
123 r->out.result = WERR_NOT_SUPPORTED;
126 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetCharDevQCtr1);
127 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
129 r->out.ctr.ctr1->count = 0;
130 r->out.ctr.ctr1->array = NULL;
132 r->out.result = WERR_NOT_SUPPORTED;
135 r->out.result = WERR_UNKNOWN_LEVEL;
144 srvsvc_NetCharDevQGetInfo
146 static NTSTATUS srvsvc_NetCharDevQGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
147 struct srvsvc_NetCharDevQGetInfo *r)
149 r->out.result = WERR_OK;
151 switch (r->in.level) {
153 r->out.info.info0 = NULL;
155 r->out.result = WERR_NOT_SUPPORTED;
158 r->out.info.info1 = NULL;
160 r->out.result = WERR_NOT_SUPPORTED;
163 r->out.result = WERR_UNKNOWN_LEVEL;
172 srvsvc_NetCharDevQSetInfo
174 static NTSTATUS srvsvc_NetCharDevQSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
175 struct srvsvc_NetCharDevQSetInfo *r)
177 r->out.result = WERR_OK;
179 switch (r->in.level) {
181 if (r->in.parm_error) {
182 r->out.parm_error = r->in.parm_error;
184 r->out.result = WERR_NOT_SUPPORTED;
187 if (r->in.parm_error) {
188 r->out.parm_error = r->in.parm_error;
190 r->out.result = WERR_NOT_SUPPORTED;
193 r->out.result = WERR_UNKNOWN_LEVEL;
202 srvsvc_NetCharDevQPurge
204 static NTSTATUS srvsvc_NetCharDevQPurge(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
205 struct srvsvc_NetCharDevQPurge *r)
207 r->out.result = WERR_NOT_SUPPORTED;
213 srvsvc_NetCharDevQPurgeSelf
215 static NTSTATUS srvsvc_NetCharDevQPurgeSelf(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
216 struct srvsvc_NetCharDevQPurgeSelf *r)
218 r->out.result = WERR_NOT_SUPPORTED;
226 static NTSTATUS srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
227 struct srvsvc_NetConnEnum *r)
229 r->out.level = r->in.level;
230 r->out.totalentries = 0;
231 r->out.resume_handle = NULL;
232 r->out.result = WERR_OK;
234 switch (r->in.level) {
236 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr0);
237 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
239 r->out.ctr.ctr0->count = 0;
240 r->out.ctr.ctr0->array = NULL;
242 r->out.result = WERR_NOT_SUPPORTED;
246 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetConnCtr1);
247 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
249 r->out.ctr.ctr1->count = 0;
250 r->out.ctr.ctr1->array = NULL;
252 r->out.result = WERR_NOT_SUPPORTED;
256 r->out.result = WERR_UNKNOWN_LEVEL;
267 static NTSTATUS srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
268 struct srvsvc_NetFileEnum *r)
270 r->out.level = r->in.level;
271 r->out.totalentries = 0;
272 r->out.resume_handle = NULL;
273 r->out.result = WERR_OK;
275 switch (r->in.level) {
277 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr2);
278 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
280 r->out.ctr.ctr2->count = 0;
281 r->out.ctr.ctr2->array = NULL;
283 r->out.result = WERR_NOT_SUPPORTED;
287 r->out.ctr.ctr3 = talloc_p(mem_ctx, struct srvsvc_NetFileCtr3);
288 WERR_TALLOC_CHECK(r->out.ctr.ctr3);
290 r->out.ctr.ctr3->count = 0;
291 r->out.ctr.ctr3->array = NULL;
293 r->out.result = WERR_NOT_SUPPORTED;
297 r->out.result = WERR_UNKNOWN_LEVEL;
306 srvsvc_NetFileGetInfo
308 static NTSTATUS srvsvc_NetFileGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
309 struct srvsvc_NetFileGetInfo *r)
311 r->out.result = WERR_OK;
313 switch (r->in.level) {
315 r->out.info.info2 = NULL;
317 r->out.result = WERR_NOT_SUPPORTED;
321 r->out.info.info3 = NULL;
323 r->out.result = WERR_NOT_SUPPORTED;
327 r->out.result = WERR_UNKNOWN_LEVEL;
338 static NTSTATUS srvsvc_NetFileClose(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
339 struct srvsvc_NetFileClose *r)
341 r->out.result = WERR_NOT_SUPPORTED;
349 static NTSTATUS srvsvc_NetSessEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
350 struct srvsvc_NetSessEnum *r)
352 r->out.level = r->in.level;
353 r->out.totalentries = 0;
354 r->out.resume_handle = NULL;
355 r->out.result = WERR_OK;
357 switch (r->in.level) {
359 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr0);
360 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
362 r->out.ctr.ctr0->count = 0;
363 r->out.ctr.ctr0->array = talloc(mem_ctx, r->out.ctr.ctr0->count*sizeof(struct srvsvc_NetSessInfo0));
365 r->out.result = WERR_NOT_SUPPORTED;
369 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr1);
370 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
372 r->out.ctr.ctr1->count = 0;
373 r->out.ctr.ctr1->array = NULL;
375 r->out.result = WERR_NOT_SUPPORTED;
379 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr2);
380 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
382 r->out.ctr.ctr2->count = 0;
383 r->out.ctr.ctr2->array = NULL;
385 r->out.result = WERR_NOT_SUPPORTED;
389 r->out.ctr.ctr10 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr10);
390 WERR_TALLOC_CHECK(r->out.ctr.ctr10);
392 r->out.ctr.ctr2->count = 0;
393 r->out.ctr.ctr2->array = NULL;
395 r->out.result = WERR_NOT_SUPPORTED;
399 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetSessCtr502);
400 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
402 r->out.ctr.ctr2->count = 0;
403 r->out.ctr.ctr2->array = NULL;
405 r->out.result = WERR_NOT_SUPPORTED;
409 r->out.result = WERR_UNKNOWN_LEVEL;
420 static NTSTATUS srvsvc_NetSessDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
421 struct srvsvc_NetSessDel *r)
423 r->out.result = WERR_NOT_SUPPORTED;
431 static NTSTATUS srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
432 struct srvsvc_NetShareAdd *r)
434 r->out.result = WERR_OK;
436 switch (r->in.level) {
438 if (r->in.parm_error) {
439 r->out.parm_error = r->in.parm_error;
441 r->out.result = WERR_NOT_SUPPORTED;
444 if (r->in.parm_error) {
445 r->out.parm_error = r->in.parm_error;
447 r->out.result = WERR_NOT_SUPPORTED;
450 if (r->in.parm_error) {
451 r->out.parm_error = r->in.parm_error;
453 r->out.result = WERR_NOT_SUPPORTED;
456 if (r->in.parm_error) {
457 r->out.parm_error = r->in.parm_error;
459 r->out.result = WERR_NOT_SUPPORTED;
462 if (r->in.parm_error) {
463 r->out.parm_error = r->in.parm_error;
465 r->out.result = WERR_NOT_SUPPORTED;
468 r->out.result = WERR_UNKNOWN_LEVEL;
477 srvsvc_NetShareEnumAll
479 static NTSTATUS srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
480 struct srvsvc_NetShareEnumAll *r)
482 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
483 r->out.level = r->in.level;
484 r->out.totalentries = 0;
485 r->out.resume_handle = NULL;
486 r->out.result = WERR_OK;
488 switch (r->in.level) {
492 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
493 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
495 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
496 r->out.ctr.ctr0->array = NULL;
498 if (r->out.ctr.ctr0->count == 0) break;
500 r->out.ctr.ctr0->array = talloc(mem_ctx, r->out.ctr.ctr0->count*sizeof(struct srvsvc_NetShareInfo0));
501 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
503 for (i=0;i<r->out.ctr.ctr0->count;i++) {
504 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
505 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
508 r->out.totalentries = r->out.ctr.ctr0->count;
514 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
515 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
517 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
518 r->out.ctr.ctr1->array = NULL;
520 if (r->out.ctr.ctr1->count == 0) break;
522 r->out.ctr.ctr1->array = talloc(mem_ctx, r->out.ctr.ctr1->count*sizeof(struct srvsvc_NetShareInfo1));
523 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
525 for (i=0;i<r->out.ctr.ctr1->count;i++) {
526 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
527 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
528 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
531 r->out.totalentries = r->out.ctr.ctr1->count;
537 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
538 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
540 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
541 r->out.ctr.ctr2->array = NULL;
543 if (r->out.ctr.ctr2->count == 0) break;
545 r->out.ctr.ctr2->array = talloc(mem_ctx, r->out.ctr.ctr2->count*sizeof(struct srvsvc_NetShareInfo2));
546 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
548 for (i=0;i<r->out.ctr.ctr2->count;i++) {
549 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
550 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
551 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
552 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
553 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
554 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
555 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
556 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
559 r->out.totalentries = r->out.ctr.ctr2->count;
565 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
566 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
568 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
569 r->out.ctr.ctr501->array = NULL;
571 if (r->out.ctr.ctr501->count == 0) break;
573 r->out.ctr.ctr501->array = talloc(mem_ctx, r->out.ctr.ctr501->count*sizeof(struct srvsvc_NetShareInfo501));
574 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
576 for (i=0;i<r->out.ctr.ctr501->count;i++) {
577 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
578 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
579 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
580 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
583 r->out.totalentries = r->out.ctr.ctr501->count;
589 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
590 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
592 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
593 r->out.ctr.ctr502->array = NULL;
595 if (r->out.ctr.ctr502->count == 0) break;
597 r->out.ctr.ctr502->array = talloc(mem_ctx, r->out.ctr.ctr502->count*sizeof(struct srvsvc_NetShareInfo502));
598 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
600 for (i=0;i<r->out.ctr.ctr502->count;i++) {
601 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
602 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
603 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
604 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
605 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
606 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
607 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
608 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
609 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
610 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
613 r->out.totalentries = r->out.ctr.ctr502->count;
618 r->out.result = WERR_UNKNOWN_LEVEL;
627 srvsvc_NetShareGetInfo
629 static NTSTATUS srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
630 struct srvsvc_NetShareGetInfo *r)
632 r->out.result = WERR_OK;
634 switch (r->in.level) {
636 r->out.info.info0 = NULL;
638 r->out.result = WERR_NOT_SUPPORTED;
642 r->out.info.info0 = NULL;
644 r->out.result = WERR_NOT_SUPPORTED;
648 r->out.info.info0 = NULL;
650 r->out.result = WERR_NOT_SUPPORTED;
654 r->out.info.info0 = NULL;
656 r->out.result = WERR_NOT_SUPPORTED;
660 r->out.info.info0 = NULL;
662 r->out.result = WERR_NOT_SUPPORTED;
666 r->out.result = WERR_UNKNOWN_LEVEL;
675 srvsvc_NetShareSetInfo
677 static NTSTATUS srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
678 struct srvsvc_NetShareSetInfo *r)
680 return NT_STATUS_NOT_IMPLEMENTED;
687 static NTSTATUS srvsvc_NetShareDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
688 struct srvsvc_NetShareDel *r)
690 return NT_STATUS_NOT_IMPLEMENTED;
695 srvsvc_NetShareDelSticky
697 static NTSTATUS srvsvc_NetShareDelSticky(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
698 struct srvsvc_NetShareDelSticky *r)
700 return NT_STATUS_NOT_IMPLEMENTED;
707 static NTSTATUS srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
708 struct srvsvc_NetShareCheck *r)
710 return NT_STATUS_NOT_IMPLEMENTED;
717 static NTSTATUS srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
718 struct srvsvc_NetSrvGetInfo *r)
720 return NT_STATUS_NOT_IMPLEMENTED;
727 static NTSTATUS srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
728 struct srvsvc_NetSrvSetInfo *r)
730 return NT_STATUS_NOT_IMPLEMENTED;
737 static NTSTATUS srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
738 struct srvsvc_NetDiskEnum *r)
742 r->out.totalentries = 0;
743 r->out.resume_handle = NULL;
744 r->out.result = WERR_OK;
746 switch (r->in.level) {
748 r->out.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetDiskCtr0);
749 WERR_TALLOC_CHECK(r->out.ctr0);
751 r->out.ctr0->unknown = 0x1;
752 r->out.ctr0->count = 0;
753 r->out.ctr0->array = NULL;
755 r->out.result = WERR_NOT_SUPPORTED;
759 r->out.result = WERR_UNKNOWN_LEVEL;
768 srvsvc_NETRSERVERSTATISTICSGET
770 static NTSTATUS srvsvc_NETRSERVERSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
771 struct srvsvc_NETRSERVERSTATISTICSGET *r)
773 return NT_STATUS_NOT_IMPLEMENTED;
778 srvsvc_NETRSERVERTRANSPORTADD
780 static NTSTATUS srvsvc_NETRSERVERTRANSPORTADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
781 struct srvsvc_NETRSERVERTRANSPORTADD *r)
783 return NT_STATUS_NOT_IMPLEMENTED;
788 srvsvc_NetTransportEnum
790 static NTSTATUS srvsvc_NetTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
791 struct srvsvc_NetTransportEnum *r)
794 r->out.result = WERR_NOT_SUPPORTED;
800 srvsvc_NETRSERVERTRANSPORTDEL
802 static NTSTATUS srvsvc_NETRSERVERTRANSPORTDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
803 struct srvsvc_NETRSERVERTRANSPORTDEL *r)
805 return NT_STATUS_NOT_IMPLEMENTED;
810 srvsvc_NET_REMOTE_TOD
812 static NTSTATUS srvsvc_NET_REMOTE_TOD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
813 struct srvsvc_NET_REMOTE_TOD *r)
815 return NT_STATUS_NOT_IMPLEMENTED;
820 srvsvc_NETRSERVERSETSERVICEBITS
822 static NTSTATUS srvsvc_NETRSERVERSETSERVICEBITS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
823 struct srvsvc_NETRSERVERSETSERVICEBITS *r)
825 return NT_STATUS_NOT_IMPLEMENTED;
830 srvsvc_NETRPRPATHTYPE
832 static NTSTATUS srvsvc_NETRPRPATHTYPE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
833 struct srvsvc_NETRPRPATHTYPE *r)
835 return NT_STATUS_NOT_IMPLEMENTED;
840 srvsvc_NETRPRPATHCANONICALIZE
842 static NTSTATUS srvsvc_NETRPRPATHCANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
843 struct srvsvc_NETRPRPATHCANONICALIZE *r)
845 return NT_STATUS_NOT_IMPLEMENTED;
850 srvsvc_NETRPRPATHCOMPARE
852 static NTSTATUS srvsvc_NETRPRPATHCOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
853 struct srvsvc_NETRPRPATHCOMPARE *r)
855 return NT_STATUS_NOT_IMPLEMENTED;
860 srvsvc_NET_NAME_VALIDATE
862 static NTSTATUS srvsvc_NET_NAME_VALIDATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
863 struct srvsvc_NET_NAME_VALIDATE *r)
865 return NT_STATUS_NOT_IMPLEMENTED;
870 srvsvc_NETRPRNAMECANONICALIZE
872 static NTSTATUS srvsvc_NETRPRNAMECANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
873 struct srvsvc_NETRPRNAMECANONICALIZE *r)
875 return NT_STATUS_NOT_IMPLEMENTED;
880 srvsvc_NETRPRNAMECOMPARE
882 static NTSTATUS srvsvc_NETRPRNAMECOMPARE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
883 struct srvsvc_NETRPRNAMECOMPARE *r)
885 return NT_STATUS_NOT_IMPLEMENTED;
892 static NTSTATUS srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
893 struct srvsvc_NetShareEnum *r)
895 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
896 r->out.level = r->in.level;
897 r->out.totalentries = 0;
898 r->out.resume_handle = NULL;
899 r->out.result = WERR_OK;
901 switch (r->in.level) {
905 r->out.ctr.ctr0 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr0);
906 WERR_TALLOC_CHECK(r->out.ctr.ctr0);
908 r->out.ctr.ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
909 r->out.ctr.ctr0->array = NULL;
911 if (r->out.ctr.ctr0->count == 0) break;
913 r->out.ctr.ctr0->array = talloc(mem_ctx, r->out.ctr.ctr0->count*sizeof(struct srvsvc_NetShareInfo0));
914 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array);
916 for (i=0;i<r->out.ctr.ctr0->count;i++) {
917 r->out.ctr.ctr0->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
918 WERR_TALLOC_CHECK(r->out.ctr.ctr0->array[i].name);
921 r->out.totalentries = r->out.ctr.ctr0->count;
927 r->out.ctr.ctr1 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr1);
928 WERR_TALLOC_CHECK(r->out.ctr.ctr1);
930 r->out.ctr.ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
931 r->out.ctr.ctr1->array = NULL;
933 if (r->out.ctr.ctr1->count == 0) break;
935 r->out.ctr.ctr1->array = talloc(mem_ctx, r->out.ctr.ctr1->count*sizeof(struct srvsvc_NetShareInfo1));
936 WERR_TALLOC_CHECK(r->out.ctr.ctr1->array);
938 for (i=0;i<r->out.ctr.ctr1->count;i++) {
939 r->out.ctr.ctr1->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
940 r->out.ctr.ctr1->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
941 r->out.ctr.ctr1->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
944 r->out.totalentries = r->out.ctr.ctr1->count;
950 r->out.ctr.ctr2 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr2);
951 WERR_TALLOC_CHECK(r->out.ctr.ctr2);
953 r->out.ctr.ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
954 r->out.ctr.ctr2->array = NULL;
956 if (r->out.ctr.ctr2->count == 0) break;
958 r->out.ctr.ctr2->array = talloc(mem_ctx, r->out.ctr.ctr2->count*sizeof(struct srvsvc_NetShareInfo2));
959 WERR_TALLOC_CHECK(r->out.ctr.ctr2->array);
961 for (i=0;i<r->out.ctr.ctr2->count;i++) {
962 r->out.ctr.ctr2->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
963 r->out.ctr.ctr2->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
964 r->out.ctr.ctr2->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
965 r->out.ctr.ctr2->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
966 r->out.ctr.ctr2->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
967 r->out.ctr.ctr2->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
968 r->out.ctr.ctr2->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
969 r->out.ctr.ctr2->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
972 r->out.totalentries = r->out.ctr.ctr2->count;
978 r->out.ctr.ctr501 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr501);
979 WERR_TALLOC_CHECK(r->out.ctr.ctr501);
981 r->out.ctr.ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
982 r->out.ctr.ctr501->array = NULL;
984 if (r->out.ctr.ctr501->count == 0) break;
986 r->out.ctr.ctr501->array = talloc(mem_ctx, r->out.ctr.ctr501->count*sizeof(struct srvsvc_NetShareInfo501));
987 WERR_TALLOC_CHECK(r->out.ctr.ctr501->array);
989 for (i=0;i<r->out.ctr.ctr501->count;i++) {
990 r->out.ctr.ctr501->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
991 r->out.ctr.ctr501->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
992 r->out.ctr.ctr501->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
993 r->out.ctr.ctr501->array[i].csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, i);
996 r->out.totalentries = r->out.ctr.ctr501->count;
1002 r->out.ctr.ctr502 = talloc_p(mem_ctx, struct srvsvc_NetShareCtr502);
1003 WERR_TALLOC_CHECK(r->out.ctr.ctr502);
1005 r->out.ctr.ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1006 r->out.ctr.ctr502->array = NULL;
1008 if (r->out.ctr.ctr502->count == 0) break;
1010 r->out.ctr.ctr502->array = talloc(mem_ctx, r->out.ctr.ctr502->count*sizeof(struct srvsvc_NetShareInfo502));
1011 WERR_TALLOC_CHECK(r->out.ctr.ctr502->array);
1013 for (i=0;i<r->out.ctr.ctr502->count;i++) {
1014 r->out.ctr.ctr502->array[i].name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, i);
1015 r->out.ctr.ctr502->array[i].type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1016 r->out.ctr.ctr502->array[i].comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, i);
1017 r->out.ctr.ctr502->array[i].permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, i);
1018 r->out.ctr.ctr502->array[i].max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, i);
1019 r->out.ctr.ctr502->array[i].current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, i);
1020 r->out.ctr.ctr502->array[i].path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, i);
1021 r->out.ctr.ctr502->array[i].password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, i);
1022 r->out.ctr.ctr502->array[i].unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, i);
1023 r->out.ctr.ctr502->array[i].sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, i);
1026 r->out.totalentries = r->out.ctr.ctr502->count;
1031 r->out.result = WERR_UNKNOWN_LEVEL;
1035 return NT_STATUS_OK;
1040 srvsvc_NETRSHAREDELSTART
1042 static NTSTATUS srvsvc_NETRSHAREDELSTART(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1043 struct srvsvc_NETRSHAREDELSTART *r)
1045 return NT_STATUS_NOT_IMPLEMENTED;
1050 srvsvc_NETRSHAREDELCOMMIT
1052 static NTSTATUS srvsvc_NETRSHAREDELCOMMIT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1053 struct srvsvc_NETRSHAREDELCOMMIT *r)
1055 return NT_STATUS_NOT_IMPLEMENTED;
1060 srvsvc_NET_FILE_QUERY_SECDESC
1062 static NTSTATUS srvsvc_NET_FILE_QUERY_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1063 struct srvsvc_NET_FILE_QUERY_SECDESC *r)
1065 return NT_STATUS_NOT_IMPLEMENTED;
1070 srvsvc_NET_FILE_SET_SECDESC
1072 static NTSTATUS srvsvc_NET_FILE_SET_SECDESC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1073 struct srvsvc_NET_FILE_SET_SECDESC *r)
1075 return NT_STATUS_NOT_IMPLEMENTED;
1080 srvsvc_NETRSERVERTRANSPORTADDEX
1082 static NTSTATUS srvsvc_NETRSERVERTRANSPORTADDEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1083 struct srvsvc_NETRSERVERTRANSPORTADDEX *r)
1085 return NT_STATUS_NOT_IMPLEMENTED;
1090 srvsvc_NETRSERVERSETSERVICEBITSEX
1092 static NTSTATUS srvsvc_NETRSERVERSETSERVICEBITSEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1093 struct srvsvc_NETRSERVERSETSERVICEBITSEX *r)
1095 return NT_STATUS_NOT_IMPLEMENTED;
1100 srvsvc_NETRDFSGETVERSION
1102 static NTSTATUS srvsvc_NETRDFSGETVERSION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1103 struct srvsvc_NETRDFSGETVERSION *r)
1105 return NT_STATUS_NOT_IMPLEMENTED;
1110 srvsvc_NETRDFSCREATELOCALPARTITION
1112 static NTSTATUS srvsvc_NETRDFSCREATELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1113 struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
1115 return NT_STATUS_NOT_IMPLEMENTED;
1120 srvsvc_NETRDFSDELETELOCALPARTITION
1122 static NTSTATUS srvsvc_NETRDFSDELETELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1123 struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
1125 return NT_STATUS_NOT_IMPLEMENTED;
1130 srvsvc_NETRDFSSETLOCALVOLUMESTATE
1132 static NTSTATUS srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1133 struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
1135 return NT_STATUS_NOT_IMPLEMENTED;
1140 srvsvc_NETRDFSSETSERVERINFO
1142 static NTSTATUS srvsvc_NETRDFSSETSERVERINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1143 struct srvsvc_NETRDFSSETSERVERINFO *r)
1145 return NT_STATUS_NOT_IMPLEMENTED;
1150 srvsvc_NETRDFSCREATEEXITPOINT
1152 static NTSTATUS srvsvc_NETRDFSCREATEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1153 struct srvsvc_NETRDFSCREATEEXITPOINT *r)
1155 return NT_STATUS_NOT_IMPLEMENTED;
1160 srvsvc_NETRDFSDELETEEXITPOINT
1162 static NTSTATUS srvsvc_NETRDFSDELETEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1163 struct srvsvc_NETRDFSDELETEEXITPOINT *r)
1165 return NT_STATUS_NOT_IMPLEMENTED;
1170 srvsvc_NETRDFSMODIFYPREFIX
1172 static NTSTATUS srvsvc_NETRDFSMODIFYPREFIX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1173 struct srvsvc_NETRDFSMODIFYPREFIX *r)
1175 return NT_STATUS_NOT_IMPLEMENTED;
1180 srvsvc_NETRDFSFIXLOCALVOLUME
1182 static NTSTATUS srvsvc_NETRDFSFIXLOCALVOLUME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1183 struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
1185 return NT_STATUS_NOT_IMPLEMENTED;
1190 srvsvc_NETRDFSMANAGERREPORTSITEINFO
1192 static NTSTATUS srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1193 struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
1195 return NT_STATUS_NOT_IMPLEMENTED;
1200 srvsvc_NETRSERVERTRANSPORTDELEX
1202 static NTSTATUS srvsvc_NETRSERVERTRANSPORTDELEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1203 struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
1205 return NT_STATUS_NOT_IMPLEMENTED;
1209 /* include the generated boilerplate */
1210 #include "librpc/gen_ndr/ndr_srvsvc_s.c"