2 Unix SMB/CIFS implementation.
4 endpoint server for the srvsvc pipe
6 Copyright (C) Stefan (metze) Metzmacher 2004-2006
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 "auth/auth.h"
28 #include "libcli/security/security.h"
29 #include "system/time.h"
30 #include "ntvfs/ntvfs.h"
31 #include "rpc_server/srvsvc/proto.h"
33 #define SRVSVC_CHECK_ADMIN_ACCESS do { \
34 struct security_token *t = dce_call->conn->auth_state.session_info->security_token; \
35 if (!security_token_has_builtin_administrators(t) && \
36 !security_token_has_sid_string(t, SID_BUILTIN_SERVER_OPERATORS)) { \
37 return WERR_ACCESS_DENIED; \
44 static WERROR srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
45 struct srvsvc_NetCharDevEnum *r)
47 r->out.level = r->in.level;
48 r->out.totalentries = 0;
49 r->out.resume_handle = NULL;
51 switch (r->in.level) {
53 r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr0);
54 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0);
56 r->out.ctr.ctr0->count = 0;
57 r->out.ctr.ctr0->array = NULL;
59 return WERR_NOT_SUPPORTED;
62 r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr1);
63 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1);
65 r->out.ctr.ctr1->count = 0;
66 r->out.ctr.ctr1->array = NULL;
68 return WERR_NOT_SUPPORTED;
71 return WERR_UNKNOWN_LEVEL;
79 srvsvc_NetCharDevGetInfo
81 static WERROR srvsvc_NetCharDevGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
82 struct srvsvc_NetCharDevGetInfo *r)
86 switch (r->in.level) {
89 return WERR_NOT_SUPPORTED;
93 return WERR_NOT_SUPPORTED;
96 return WERR_UNKNOWN_LEVEL;
99 return WERR_UNKNOWN_LEVEL;
104 srvsvc_NetCharDevControl
106 static WERROR srvsvc_NetCharDevControl(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
107 struct srvsvc_NetCharDevControl *r)
109 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
114 srvsvc_NetCharDevQEnum
116 static WERROR srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
117 struct srvsvc_NetCharDevQEnum *r)
119 r->out.level = r->in.level;
120 r->out.totalentries = 0;
121 r->out.resume_handle = NULL;
123 switch (r->in.level) {
126 r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr0);
127 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0);
129 r->out.ctr.ctr0->count = 0;
130 r->out.ctr.ctr0->array = NULL;
132 return WERR_NOT_SUPPORTED;
136 r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr1);
137 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1);
139 r->out.ctr.ctr1->count = 0;
140 r->out.ctr.ctr1->array = NULL;
142 return WERR_NOT_SUPPORTED;
145 return WERR_UNKNOWN_LEVEL;
148 return WERR_UNKNOWN_LEVEL;
153 srvsvc_NetCharDevQGetInfo
155 static WERROR srvsvc_NetCharDevQGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
156 struct srvsvc_NetCharDevQGetInfo *r)
160 switch (r->in.level) {
163 return WERR_NOT_SUPPORTED;
167 return WERR_NOT_SUPPORTED;
170 return WERR_UNKNOWN_LEVEL;
173 return WERR_UNKNOWN_LEVEL;
178 srvsvc_NetCharDevQSetInfo
180 static WERROR srvsvc_NetCharDevQSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
181 struct srvsvc_NetCharDevQSetInfo *r)
183 switch (r->in.level) {
186 if (r->in.parm_error) {
187 r->out.parm_error = r->in.parm_error;
189 return WERR_NOT_SUPPORTED;
193 if (r->in.parm_error) {
194 r->out.parm_error = r->in.parm_error;
196 return WERR_NOT_SUPPORTED;
199 return WERR_UNKNOWN_LEVEL;
202 return WERR_UNKNOWN_LEVEL;
207 srvsvc_NetCharDevQPurge
209 static WERROR srvsvc_NetCharDevQPurge(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
210 struct srvsvc_NetCharDevQPurge *r)
212 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
217 srvsvc_NetCharDevQPurgeSelf
219 static WERROR srvsvc_NetCharDevQPurgeSelf(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
220 struct srvsvc_NetCharDevQPurgeSelf *r)
222 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
229 static WERROR srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
230 struct srvsvc_NetConnEnum *r)
232 r->out.level = r->in.level;
233 r->out.totalentries = 0;
234 r->out.resume_handle = NULL;
236 switch (r->in.level) {
239 r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetConnCtr0);
240 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0);
242 r->out.ctr.ctr0->count = 0;
243 r->out.ctr.ctr0->array = NULL;
245 return WERR_NOT_SUPPORTED;
249 r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetConnCtr1);
250 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1);
252 r->out.ctr.ctr1->count = 0;
253 r->out.ctr.ctr1->array = NULL;
255 return WERR_NOT_SUPPORTED;
258 return WERR_UNKNOWN_LEVEL;
261 return WERR_UNKNOWN_LEVEL;
268 static WERROR srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
269 struct srvsvc_NetFileEnum *r)
271 r->out.level = r->in.level;
272 r->out.totalentries = 0;
273 r->out.resume_handle = NULL;
275 switch (r->in.level) {
278 r->out.ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetFileCtr2);
279 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr2);
281 r->out.ctr.ctr2->count = 0;
282 r->out.ctr.ctr2->array = NULL;
284 return WERR_NOT_SUPPORTED;
288 r->out.ctr.ctr3 = talloc(mem_ctx, struct srvsvc_NetFileCtr3);
289 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr3);
291 r->out.ctr.ctr3->count = 0;
292 r->out.ctr.ctr3->array = NULL;
294 return WERR_NOT_SUPPORTED;
297 return WERR_UNKNOWN_LEVEL;
300 return WERR_UNKNOWN_LEVEL;
305 srvsvc_NetFileGetInfo
307 static WERROR srvsvc_NetFileGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
308 struct srvsvc_NetFileGetInfo *r)
312 switch (r->in.level) {
315 return WERR_NOT_SUPPORTED;
319 return WERR_NOT_SUPPORTED;
322 return WERR_UNKNOWN_LEVEL;
325 return WERR_UNKNOWN_LEVEL;
332 static WERROR srvsvc_NetFileClose(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
333 struct srvsvc_NetFileClose *r)
335 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
342 static WERROR srvsvc_NetSessEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
343 struct srvsvc_NetSessEnum *r)
345 r->out.level = r->in.level;
346 r->out.totalentries = 0;
347 r->out.resume_handle = NULL;
349 switch (r->in.level) {
352 r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetSessCtr0);
353 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0);
355 r->out.ctr.ctr0->count = 0;
356 r->out.ctr.ctr0->array = NULL;
358 return WERR_NOT_SUPPORTED;
362 r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetSessCtr1);
363 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1);
365 r->out.ctr.ctr1->count = 0;
366 r->out.ctr.ctr1->array = NULL;
368 return WERR_NOT_SUPPORTED;
372 r->out.ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetSessCtr2);
373 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr2);
375 r->out.ctr.ctr2->count = 0;
376 r->out.ctr.ctr2->array = NULL;
378 return WERR_NOT_SUPPORTED;
382 r->out.ctr.ctr10 = talloc(mem_ctx, struct srvsvc_NetSessCtr10);
383 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr10);
385 r->out.ctr.ctr2->count = 0;
386 r->out.ctr.ctr2->array = NULL;
388 return WERR_NOT_SUPPORTED;
392 r->out.ctr.ctr502 = talloc(mem_ctx, struct srvsvc_NetSessCtr502);
393 W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr502);
395 r->out.ctr.ctr2->count = 0;
396 r->out.ctr.ctr2->array = NULL;
398 return WERR_NOT_SUPPORTED;
401 return WERR_UNKNOWN_LEVEL;
404 return WERR_UNKNOWN_LEVEL;
411 static WERROR srvsvc_NetSessDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
412 struct srvsvc_NetSessDel *r)
414 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
421 static WERROR srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
422 struct srvsvc_NetShareAdd *r)
424 switch (r->in.level) {
427 if (r->in.parm_error) {
428 r->out.parm_error = r->in.parm_error;
430 return WERR_NOT_SUPPORTED;
434 if (r->in.parm_error) {
435 r->out.parm_error = r->in.parm_error;
437 return WERR_NOT_SUPPORTED;
441 if (r->in.parm_error) {
442 r->out.parm_error = r->in.parm_error;
444 return WERR_NOT_SUPPORTED;
448 if (r->in.parm_error) {
449 r->out.parm_error = r->in.parm_error;
451 return WERR_NOT_SUPPORTED;
455 if (r->in.parm_error) {
456 r->out.parm_error = r->in.parm_error;
458 return WERR_NOT_SUPPORTED;
461 return WERR_UNKNOWN_LEVEL;
464 return WERR_UNKNOWN_LEVEL;
467 static WERROR srvsvc_fiel_ShareInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
468 int snum, uint32_t level, union srvsvc_NetShareInfo *info)
470 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
475 info->info0->name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, snum);
476 W_ERROR_HAVE_NO_MEMORY(info->info0->name);
482 info->info1->name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, snum);
483 W_ERROR_HAVE_NO_MEMORY(info->info1->name);
484 info->info1->type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, snum);
485 info->info1->comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, snum);
486 W_ERROR_HAVE_NO_MEMORY(info->info1->comment);
492 info->info2->name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, snum);
493 W_ERROR_HAVE_NO_MEMORY(info->info2->name);
494 info->info2->type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, snum);
495 info->info2->comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, snum);
496 W_ERROR_HAVE_NO_MEMORY(info->info2->comment);
497 info->info2->permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, snum);
498 info->info2->max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, snum);
499 info->info2->current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, snum);
500 info->info2->path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, snum);
501 W_ERROR_HAVE_NO_MEMORY(info->info2->path);
502 info->info2->password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, snum);
508 info->info501->name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, snum);
509 W_ERROR_HAVE_NO_MEMORY(info->info501->name);
510 info->info501->type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, snum);
511 info->info501->comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, snum);
512 W_ERROR_HAVE_NO_MEMORY(info->info501->comment);
513 info->info501->csc_policy = dcesrv_common_get_share_csc_policy(mem_ctx, dce_ctx, snum);
519 info->info502->name = dcesrv_common_get_share_name(mem_ctx, dce_ctx, snum);
520 W_ERROR_HAVE_NO_MEMORY(info->info502->name);
521 info->info502->type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, snum);
522 info->info502->comment = dcesrv_common_get_share_comment(mem_ctx, dce_ctx, snum);
523 W_ERROR_HAVE_NO_MEMORY(info->info502->comment);
524 info->info502->permissions = dcesrv_common_get_share_permissions(mem_ctx, dce_ctx, snum);
525 info->info502->max_users = dcesrv_common_get_share_max_users(mem_ctx, dce_ctx, snum);
526 info->info502->current_users = dcesrv_common_get_share_current_users(mem_ctx, dce_ctx, snum);
527 info->info502->path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, snum);
528 W_ERROR_HAVE_NO_MEMORY(info->info502->path);
529 info->info502->password = dcesrv_common_get_share_password(mem_ctx, dce_ctx, snum);
530 info->info502->unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, snum);
531 info->info502->sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, snum);
537 info->info1005->dfs_flags = dcesrv_common_get_share_dfs_flags(mem_ctx, dce_ctx, snum);
542 return WERR_UNKNOWN_LEVEL;
545 return WERR_UNKNOWN_LEVEL;
549 srvsvc_NetShareEnumAll
551 static WERROR srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
552 struct srvsvc_NetShareEnumAll *r)
554 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
556 r->out.level = r->in.level;
557 ZERO_STRUCT(r->out.ctr);
558 r->out.totalentries = 0;
559 r->out.resume_handle = NULL;
561 /* TODO: - paging of results
564 switch (r->in.level) {
568 struct srvsvc_NetShareCtr0 *ctr0;
570 ctr0 = talloc(mem_ctx, struct srvsvc_NetShareCtr0);
571 W_ERROR_HAVE_NO_MEMORY(ctr0);
573 ctr0->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
576 if (ctr0->count == 0) {
577 r->out.ctr.ctr0 = ctr0;
581 ctr0->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo0, ctr0->count);
582 W_ERROR_HAVE_NO_MEMORY(ctr0->array);
584 for (i=0; i < ctr0->count; i++) {
586 union srvsvc_NetShareInfo info;
588 info.info0 = &ctr0->array[i];
589 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
590 if (!W_ERROR_IS_OK(status)) {
595 r->out.ctr.ctr0 = ctr0;
596 r->out.totalentries = r->out.ctr.ctr0->count;
602 struct srvsvc_NetShareCtr1 *ctr1;
604 ctr1 = talloc(mem_ctx, struct srvsvc_NetShareCtr1);
605 W_ERROR_HAVE_NO_MEMORY(ctr1);
607 ctr1->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
610 if (ctr1->count == 0) {
611 r->out.ctr.ctr1 = ctr1;
615 ctr1->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo1, ctr1->count);
616 W_ERROR_HAVE_NO_MEMORY(ctr1->array);
618 for (i=0; i < ctr1->count; i++) {
620 union srvsvc_NetShareInfo info;
622 info.info1 = &ctr1->array[i];
623 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
624 if (!W_ERROR_IS_OK(status)) {
629 r->out.ctr.ctr1 = ctr1;
630 r->out.totalentries = r->out.ctr.ctr1->count;
636 struct srvsvc_NetShareCtr2 *ctr2;
638 SRVSVC_CHECK_ADMIN_ACCESS;
640 ctr2 = talloc(mem_ctx, struct srvsvc_NetShareCtr2);
641 W_ERROR_HAVE_NO_MEMORY(ctr2);
643 ctr2->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
646 if (ctr2->count == 0) {
647 r->out.ctr.ctr2 = ctr2;
651 ctr2->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo2, ctr2->count);
652 W_ERROR_HAVE_NO_MEMORY(ctr2->array);
654 for (i=0; i < ctr2->count; i++) {
656 union srvsvc_NetShareInfo info;
658 info.info2 = &ctr2->array[i];
659 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
660 if (!W_ERROR_IS_OK(status)) {
665 r->out.ctr.ctr2 = ctr2;
666 r->out.totalentries = r->out.ctr.ctr2->count;
672 struct srvsvc_NetShareCtr501 *ctr501;
674 SRVSVC_CHECK_ADMIN_ACCESS;
676 ctr501 = talloc(mem_ctx, struct srvsvc_NetShareCtr501);
677 W_ERROR_HAVE_NO_MEMORY(ctr501);
679 ctr501->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
680 ctr501->array = NULL;
682 if (ctr501->count == 0) {
683 r->out.ctr.ctr501 = ctr501;
687 ctr501->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo501, ctr501->count);
688 W_ERROR_HAVE_NO_MEMORY(ctr501->array);
690 for (i=0; i < ctr501->count; i++) {
692 union srvsvc_NetShareInfo info;
694 info.info501 = &ctr501->array[i];
695 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
696 if (!W_ERROR_IS_OK(status)) {
701 r->out.ctr.ctr501 = ctr501;
702 r->out.totalentries = r->out.ctr.ctr501->count;
708 struct srvsvc_NetShareCtr502 *ctr502;
710 SRVSVC_CHECK_ADMIN_ACCESS;
712 ctr502 = talloc(mem_ctx, struct srvsvc_NetShareCtr502);
713 W_ERROR_HAVE_NO_MEMORY(ctr502);
715 ctr502->count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
716 ctr502->array = NULL;
718 if (ctr502->count == 0) {
719 r->out.ctr.ctr502 = ctr502;
723 ctr502->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo502, ctr502->count);
724 W_ERROR_HAVE_NO_MEMORY(ctr502->array);
726 for (i=0; i < ctr502->count; i++) {
728 union srvsvc_NetShareInfo info;
730 info.info502 = &ctr502->array[i];
731 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
732 if (!W_ERROR_IS_OK(status)) {
737 r->out.ctr.ctr502 = ctr502;
738 r->out.totalentries = r->out.ctr.ctr502->count;
742 return WERR_UNKNOWN_LEVEL;
745 return WERR_UNKNOWN_LEVEL;
750 srvsvc_NetShareGetInfo
752 static WERROR srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
753 struct srvsvc_NetShareGetInfo *r)
759 /* TODO: - access check
762 if (strcmp("", r->in.share_name) == 0) {
763 return WERR_INVALID_PARAM;
766 snum = lp_servicenumber(r->in.share_name);
768 return WERR_NET_NAME_NOT_FOUND;
771 switch (r->in.level) {
775 union srvsvc_NetShareInfo info;
777 info.info0 = talloc(mem_ctx, struct srvsvc_NetShareInfo0);
778 W_ERROR_HAVE_NO_MEMORY(info.info0);
780 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
781 if (!W_ERROR_IS_OK(status)) {
785 r->out.info.info0 = info.info0;
791 union srvsvc_NetShareInfo info;
793 info.info1 = talloc(mem_ctx, struct srvsvc_NetShareInfo1);
794 W_ERROR_HAVE_NO_MEMORY(info.info1);
796 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
797 if (!W_ERROR_IS_OK(status)) {
801 r->out.info.info1 = info.info1;
807 union srvsvc_NetShareInfo info;
809 SRVSVC_CHECK_ADMIN_ACCESS;
811 info.info2 = talloc(mem_ctx, struct srvsvc_NetShareInfo2);
812 W_ERROR_HAVE_NO_MEMORY(info.info2);
814 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
815 if (!W_ERROR_IS_OK(status)) {
819 r->out.info.info2 = info.info2;
825 union srvsvc_NetShareInfo info;
827 info.info501 = talloc(mem_ctx, struct srvsvc_NetShareInfo501);
828 W_ERROR_HAVE_NO_MEMORY(info.info501);
830 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
831 if (!W_ERROR_IS_OK(status)) {
835 r->out.info.info501 = info.info501;
841 union srvsvc_NetShareInfo info;
843 SRVSVC_CHECK_ADMIN_ACCESS;
845 info.info502 = talloc(mem_ctx, struct srvsvc_NetShareInfo502);
846 W_ERROR_HAVE_NO_MEMORY(info.info502);
848 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
849 if (!W_ERROR_IS_OK(status)) {
853 r->out.info.info502 = info.info502;
859 union srvsvc_NetShareInfo info;
861 info.info1005 = talloc(mem_ctx, struct srvsvc_NetShareInfo1005);
862 W_ERROR_HAVE_NO_MEMORY(info.info1005);
864 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, snum, r->in.level, &info);
865 if (!W_ERROR_IS_OK(status)) {
869 r->out.info.info1005 = info.info1005;
873 return WERR_UNKNOWN_LEVEL;
876 return WERR_UNKNOWN_LEVEL;
881 srvsvc_NetShareSetInfo
883 static WERROR srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
884 struct srvsvc_NetShareSetInfo *r)
886 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
891 srvsvc_NetShareDelSticky
893 static WERROR srvsvc_NetShareDelSticky(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
894 struct srvsvc_NetShareDelSticky *r)
896 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
903 static WERROR srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
904 struct srvsvc_NetShareCheck *r)
908 /* TODO: - access check
911 if (strcmp("", r->in.device_name) == 0) {
912 r->out.type = STYPE_IPC;
916 if (strcmp("C:\\", r->in.device_name) == 0) {
917 r->out.type = STYPE_DISKTREE;
921 /* TODO: - lookup the share be devicename (path) */
922 return WERR_DEVICE_NOT_SHARED;
929 static WERROR srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
930 struct srvsvc_NetSrvGetInfo *r)
932 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
936 switch (r->in.level) {
939 struct srvsvc_NetSrvInfo100 *info100;
941 info100 = talloc(mem_ctx, struct srvsvc_NetSrvInfo100);
942 W_ERROR_HAVE_NO_MEMORY(info100);
944 info100->platform_id = dcesrv_common_get_platform_id(mem_ctx, dce_ctx);
945 info100->server_name = dcesrv_common_get_server_name(mem_ctx, dce_ctx, r->in.server_unc);
946 W_ERROR_HAVE_NO_MEMORY(info100->server_name);
948 r->out.info.info100 = info100;
953 struct srvsvc_NetSrvInfo101 *info101;
955 info101 = talloc(mem_ctx, struct srvsvc_NetSrvInfo101);
956 W_ERROR_HAVE_NO_MEMORY(info101);
958 info101->platform_id = dcesrv_common_get_platform_id(mem_ctx, dce_ctx);
959 info101->server_name = dcesrv_common_get_server_name(mem_ctx, dce_ctx, r->in.server_unc);
960 W_ERROR_HAVE_NO_MEMORY(info101->server_name);
962 info101->version_major = dcesrv_common_get_version_major(mem_ctx, dce_ctx);
963 info101->version_minor = dcesrv_common_get_version_minor(mem_ctx, dce_ctx);
964 info101->server_type = dcesrv_common_get_server_type(mem_ctx, dce_ctx);
965 info101->comment = talloc_strdup(mem_ctx, lp_serverstring());
966 W_ERROR_HAVE_NO_MEMORY(info101->comment);
968 r->out.info.info101 = info101;
972 return WERR_UNKNOWN_LEVEL;
975 return WERR_UNKNOWN_LEVEL;
982 static WERROR srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
983 struct srvsvc_NetSrvSetInfo *r)
985 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
992 static WERROR srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
993 struct srvsvc_NetDiskEnum *r)
995 r->out.disks.discs = NULL;
996 r->out.disks.count = 0;
997 r->out.totalentries = 0;
998 r->out.resume_handle = NULL;
1000 switch (r->in.level) {
1003 return WERR_NOT_SUPPORTED;
1006 return WERR_UNKNOWN_LEVEL;
1009 return WERR_UNKNOWN_LEVEL;
1014 srvsvc_NetServerStatisticsGet
1016 static WERROR srvsvc_NetServerStatisticsGet(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1017 struct srvsvc_NetServerStatisticsGet *r)
1019 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1024 srvsvc_NetTransportAdd
1026 static WERROR srvsvc_NetTransportAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1027 struct srvsvc_NetTransportAdd *r)
1029 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1034 srvsvc_NetTransportEnum
1036 static WERROR srvsvc_NetTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1037 struct srvsvc_NetTransportEnum *r)
1039 r->out.level = r->in.level;
1040 r->out.totalentries = 0;
1041 r->out.resume_handle = NULL;
1043 switch (r->in.level) {
1046 r->out.transports.ctr0 = talloc(mem_ctx, struct srvsvc_NetTransportCtr0);
1047 W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr0);
1049 r->out.transports.ctr0->count = 0;
1050 r->out.transports.ctr0->array = NULL;
1052 return WERR_NOT_SUPPORTED;
1056 r->out.transports.ctr1 = talloc(mem_ctx, struct srvsvc_NetTransportCtr1);
1057 W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr1);
1059 r->out.transports.ctr1->count = 0;
1060 r->out.transports.ctr1->array = NULL;
1062 return WERR_NOT_SUPPORTED;
1066 r->out.transports.ctr2 = talloc(mem_ctx, struct srvsvc_NetTransportCtr2);
1067 W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr2);
1069 r->out.transports.ctr2->count = 0;
1070 r->out.transports.ctr2->array = NULL;
1072 return WERR_NOT_SUPPORTED;
1076 r->out.transports.ctr3 = talloc(mem_ctx, struct srvsvc_NetTransportCtr3);
1077 W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr3);
1079 r->out.transports.ctr3->count = 0;
1080 r->out.transports.ctr3->array = NULL;
1082 return WERR_NOT_SUPPORTED;
1085 return WERR_UNKNOWN_LEVEL;
1088 return WERR_UNKNOWN_LEVEL;
1092 srvsvc_NetTransportDel
1094 static WERROR srvsvc_NetTransportDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1095 struct srvsvc_NetTransportDel *r)
1097 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1104 static WERROR srvsvc_NetRemoteTOD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1105 struct srvsvc_NetRemoteTOD *r)
1107 struct timeval tval;
1111 r->out.info = talloc(mem_ctx, struct srvsvc_NetRemoteTODInfo);
1112 W_ERROR_HAVE_NO_MEMORY(r->out.info);
1114 GetTimeOfDay(&tval);
1119 r->out.info->elapsed = t;
1120 /* TODO: fake the uptime: just return the milliseconds till 0:00:00 today */
1121 r->out.info->msecs = (tm.tm_hour*60*60*1000)
1122 + (tm.tm_min*60*1000)
1124 + (tval.tv_usec/1000);
1125 r->out.info->hours = tm.tm_hour;
1126 r->out.info->mins = tm.tm_min;
1127 r->out.info->secs = tm.tm_sec;
1128 r->out.info->hunds = tval.tv_usec/10000;
1129 r->out.info->timezone = get_time_zone(t)/60;
1130 r->out.info->tinterval = 310; /* just return the same as windows */
1131 r->out.info->day = tm.tm_mday;
1132 r->out.info->month = tm.tm_mon + 1;
1133 r->out.info->year = tm.tm_year + 1900;
1134 r->out.info->weekday = tm.tm_wday;
1142 static WERROR srvsvc_NetPathType(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1143 struct srvsvc_NetPathType *r)
1145 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1150 srvsvc_NetPathCanonicalize
1152 static WERROR srvsvc_NetPathCanonicalize(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1153 struct srvsvc_NetPathCanonicalize *r)
1155 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1160 srvsvc_NetPathCompare
1162 static WERROR srvsvc_NetPathCompare(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1163 struct srvsvc_NetPathCompare *r)
1165 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1170 srvsvc_NetNameValidate
1172 static WERROR srvsvc_NetNameValidate(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1173 struct srvsvc_NetNameValidate *r)
1175 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1180 srvsvc_NetPRNameCompare
1182 static WERROR srvsvc_NetPRNameCompare(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1183 struct srvsvc_NetPRNameCompare *r)
1185 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1192 static WERROR srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1193 struct srvsvc_NetShareEnum *r)
1195 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
1197 r->out.level = r->in.level;
1198 ZERO_STRUCT(r->out.ctr);
1199 r->out.totalentries = 0;
1200 r->out.resume_handle = NULL;
1202 /* TODO: - paging of results
1205 switch (r->in.level) {
1210 struct srvsvc_NetShareCtr0 *ctr0;
1212 ctr0 = talloc(mem_ctx, struct srvsvc_NetShareCtr0);
1213 W_ERROR_HAVE_NO_MEMORY(ctr0);
1215 count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1216 ctr0->count = count;
1219 if (ctr0->count == 0) {
1220 r->out.ctr.ctr0 = ctr0;
1224 ctr0->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo0, count);
1225 W_ERROR_HAVE_NO_MEMORY(ctr0->array);
1227 for (i=0; i < count; i++) {
1229 union srvsvc_NetShareInfo info;
1230 enum srvsvc_ShareType type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1232 if (type & STYPE_HIDDEN) {
1237 info.info0 = &ctr0->array[y];
1238 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
1239 W_ERROR_NOT_OK_RETURN(status);
1243 r->out.ctr.ctr0 = ctr0;
1244 r->out.totalentries = r->out.ctr.ctr0->count;
1251 struct srvsvc_NetShareCtr1 *ctr1;
1253 ctr1 = talloc(mem_ctx, struct srvsvc_NetShareCtr1);
1254 W_ERROR_HAVE_NO_MEMORY(ctr1);
1256 count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1257 ctr1->count = count;
1260 if (ctr1->count == 0) {
1261 r->out.ctr.ctr1 = ctr1;
1265 ctr1->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo1, count);
1266 W_ERROR_HAVE_NO_MEMORY(ctr1->array);
1268 for (i=0; i < count; i++) {
1270 union srvsvc_NetShareInfo info;
1271 enum srvsvc_ShareType type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1273 if (type & STYPE_HIDDEN) {
1278 info.info1 = &ctr1->array[y];
1279 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
1280 W_ERROR_NOT_OK_RETURN(status);
1284 r->out.ctr.ctr1 = ctr1;
1285 r->out.totalentries = r->out.ctr.ctr1->count;
1292 struct srvsvc_NetShareCtr2 *ctr2;
1294 SRVSVC_CHECK_ADMIN_ACCESS;
1296 ctr2 = talloc(mem_ctx, struct srvsvc_NetShareCtr2);
1297 W_ERROR_HAVE_NO_MEMORY(ctr2);
1299 count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1300 ctr2->count = count;
1303 if (ctr2->count == 0) {
1304 r->out.ctr.ctr2 = ctr2;
1308 ctr2->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo2, count);
1309 W_ERROR_HAVE_NO_MEMORY(ctr2->array);
1311 for (i=0; i < count; i++) {
1313 union srvsvc_NetShareInfo info;
1314 enum srvsvc_ShareType type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1316 if (type & STYPE_HIDDEN) {
1321 info.info2 = &ctr2->array[y];
1322 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
1323 W_ERROR_NOT_OK_RETURN(status);
1327 r->out.ctr.ctr2 = ctr2;
1328 r->out.totalentries = r->out.ctr.ctr2->count;
1335 struct srvsvc_NetShareCtr502 *ctr502;
1337 SRVSVC_CHECK_ADMIN_ACCESS;
1339 ctr502 = talloc(mem_ctx, struct srvsvc_NetShareCtr502);
1340 W_ERROR_HAVE_NO_MEMORY(ctr502);
1342 count = dcesrv_common_get_count_of_shares(mem_ctx, dce_ctx);
1343 ctr502->count = count;
1344 ctr502->array = NULL;
1346 if (ctr502->count == 0) {
1347 r->out.ctr.ctr502 = ctr502;
1351 ctr502->array = talloc_array(mem_ctx, struct srvsvc_NetShareInfo502, count);
1352 W_ERROR_HAVE_NO_MEMORY(ctr502->array);
1354 for (i=0; i < count; i++) {
1356 union srvsvc_NetShareInfo info;
1357 enum srvsvc_ShareType type = dcesrv_common_get_share_type(mem_ctx, dce_ctx, i);
1359 if (type & STYPE_HIDDEN) {
1364 info.info502 = &ctr502->array[y];
1365 status = srvsvc_fiel_ShareInfo(dce_call, mem_ctx, i, r->in.level, &info);
1366 W_ERROR_NOT_OK_RETURN(status);
1370 r->out.ctr.ctr502 = ctr502;
1371 r->out.totalentries = r->out.ctr.ctr502->count;
1375 return WERR_UNKNOWN_LEVEL;
1378 return WERR_UNKNOWN_LEVEL;
1383 srvsvc_NetShareDelStart
1385 static WERROR srvsvc_NetShareDelStart(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1386 struct srvsvc_NetShareDelStart *r)
1388 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1393 srvsvc_NetShareDelCommit
1395 static WERROR srvsvc_NetShareDelCommit(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1396 struct srvsvc_NetShareDelCommit *r)
1398 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1403 srvsvc_NetGetFileSecurity
1405 static WERROR srvsvc_NetGetFileSecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1406 struct srvsvc_NetGetFileSecurity *r)
1408 struct sec_desc_buf *sd_buf;
1409 struct ntvfs_context *ntvfs_ctx = NULL;
1410 struct ntvfs_request *ntvfs_req;
1411 union smb_fileinfo *io;
1414 nt_status = srvsvc_create_ntvfs_context(dce_call, mem_ctx, r->in.share, &ntvfs_ctx);
1415 if (!NT_STATUS_IS_OK(nt_status)) return ntstatus_to_werror(nt_status);
1417 ntvfs_req = ntvfs_request_create(ntvfs_ctx, mem_ctx,
1418 dce_call->conn->auth_state.session_info,
1423 W_ERROR_HAVE_NO_MEMORY(ntvfs_req);
1425 sd_buf = talloc(mem_ctx, struct sec_desc_buf);
1426 W_ERROR_HAVE_NO_MEMORY(sd_buf);
1428 io = talloc(mem_ctx, union smb_fileinfo);
1429 W_ERROR_HAVE_NO_MEMORY(io);
1431 io->query_secdesc.level = RAW_FILEINFO_SEC_DESC;
1432 io->query_secdesc.in.file.path = r->in.file;
1433 io->query_secdesc.in.secinfo_flags = r->in.securityinformation;
1435 nt_status = ntvfs_qpathinfo(ntvfs_req, io);
1436 if (!NT_STATUS_IS_OK(nt_status)) return ntstatus_to_werror(nt_status);
1438 sd_buf->sd = io->query_secdesc.out.sd;
1440 r->out.sd_buf = sd_buf;
1446 srvsvc_NetSetFileSecurity
1448 static WERROR srvsvc_NetSetFileSecurity(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1449 struct srvsvc_NetSetFileSecurity *r)
1451 struct ntvfs_context *ntvfs_ctx;
1452 struct ntvfs_request *ntvfs_req;
1453 union smb_setfileinfo *io;
1456 nt_status = srvsvc_create_ntvfs_context(dce_call, mem_ctx, r->in.share, &ntvfs_ctx);
1457 if (!NT_STATUS_IS_OK(nt_status)) return ntstatus_to_werror(nt_status);
1459 ntvfs_req = ntvfs_request_create(ntvfs_ctx, mem_ctx,
1460 dce_call->conn->auth_state.session_info,
1465 W_ERROR_HAVE_NO_MEMORY(ntvfs_req);
1467 io = talloc(mem_ctx, union smb_setfileinfo);
1468 W_ERROR_HAVE_NO_MEMORY(io);
1470 io->set_secdesc.level = RAW_FILEINFO_SEC_DESC;
1471 io->set_secdesc.in.file.path = r->in.file;
1472 io->set_secdesc.in.secinfo_flags = r->in.securityinformation;
1473 io->set_secdesc.in.sd = r->in.sd_buf.sd;
1475 nt_status = ntvfs_setpathinfo(ntvfs_req, io);
1476 if (!NT_STATUS_IS_OK(nt_status)) return ntstatus_to_werror(nt_status);
1483 srvsvc_NetServerTransportAddEx
1485 static WERROR srvsvc_NetServerTransportAddEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1486 struct srvsvc_NetServerTransportAddEx *r)
1488 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1493 srvsvc_NetServerSetServiceBitsEx
1495 static WERROR srvsvc_NetServerSetServiceBitsEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1496 struct srvsvc_NetServerSetServiceBitsEx *r)
1498 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1503 srvsvc_NETRDFSGETVERSION
1505 static WERROR srvsvc_NETRDFSGETVERSION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1506 struct srvsvc_NETRDFSGETVERSION *r)
1508 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1513 srvsvc_NETRDFSCREATELOCALPARTITION
1515 static WERROR srvsvc_NETRDFSCREATELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1516 struct srvsvc_NETRDFSCREATELOCALPARTITION *r)
1518 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1523 srvsvc_NETRDFSDELETELOCALPARTITION
1525 static WERROR srvsvc_NETRDFSDELETELOCALPARTITION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1526 struct srvsvc_NETRDFSDELETELOCALPARTITION *r)
1528 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1533 srvsvc_NETRDFSSETLOCALVOLUMESTATE
1535 static WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1536 struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r)
1538 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1543 srvsvc_NETRDFSSETSERVERINFO
1545 static WERROR srvsvc_NETRDFSSETSERVERINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1546 struct srvsvc_NETRDFSSETSERVERINFO *r)
1548 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1553 srvsvc_NETRDFSCREATEEXITPOINT
1555 static WERROR srvsvc_NETRDFSCREATEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1556 struct srvsvc_NETRDFSCREATEEXITPOINT *r)
1558 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1563 srvsvc_NETRDFSDELETEEXITPOINT
1565 static WERROR srvsvc_NETRDFSDELETEEXITPOINT(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1566 struct srvsvc_NETRDFSDELETEEXITPOINT *r)
1568 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1573 srvsvc_NETRDFSMODIFYPREFIX
1575 static WERROR srvsvc_NETRDFSMODIFYPREFIX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1576 struct srvsvc_NETRDFSMODIFYPREFIX *r)
1578 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1583 srvsvc_NETRDFSFIXLOCALVOLUME
1585 static WERROR srvsvc_NETRDFSFIXLOCALVOLUME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1586 struct srvsvc_NETRDFSFIXLOCALVOLUME *r)
1588 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1593 srvsvc_NETRDFSMANAGERREPORTSITEINFO
1595 static WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1596 struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r)
1598 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1603 srvsvc_NETRSERVERTRANSPORTDELEX
1605 static WERROR srvsvc_NETRSERVERTRANSPORTDELEX(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1606 struct srvsvc_NETRSERVERTRANSPORTDELEX *r)
1608 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1614 static WERROR srvsvc_NetShareDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1615 struct srvsvc_NetShareDel *r)
1617 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1621 srvsvc_NetSetServiceBits
1623 static WERROR srvsvc_NetSetServiceBits(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1624 struct srvsvc_NetSetServiceBits *r)
1626 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1630 srvsvc_NETRPRNAMECANONICALIZE
1632 static WERROR srvsvc_NETRPRNAMECANONICALIZE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1633 struct srvsvc_NETRPRNAMECANONICALIZE *r)
1635 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1638 /* include the generated boilerplate */
1639 #include "librpc/gen_ndr/ndr_srvsvc_s.c"