r3468: split out dcerpc_server.h
[samba.git] / source4 / rpc_server / lsa / dcesrv_lsa.c
1 /* 
2    Unix SMB/CIFS implementation.
3
4    endpoint server for the lsarpc pipe
5
6    Copyright (C) Andrew Tridgell 2004
7    
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.
12    
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.
17    
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.
21 */
22
23 #include "includes.h"
24 #include "librpc/gen_ndr/ndr_lsa.h"
25 #include "rpc_server/dcerpc_server.h"
26 #include "rpc_server/common/common.h"
27
28 /*
29   this type allows us to distinguish handle types
30 */
31 enum lsa_handle {
32         LSA_HANDLE_POLICY,
33         LSA_HANDLE_ACCOUNT,
34         LSA_HANDLE_SECRET
35 };
36
37 /*
38   state associated with a lsa_OpenPolicy() operation
39 */
40 struct lsa_policy_state {
41         int reference_count;
42         void *sam_ctx;
43         uint32_t access_mask;
44         const char *domain_dn;
45 };
46
47
48 /*
49   destroy policy state
50 */
51 static void lsa_Policy_close(struct lsa_policy_state *state)
52 {
53         state->reference_count--;
54         if (state->reference_count == 0) {
55                 talloc_free(state);
56         }
57 }
58
59 /*
60   destroy an open policy. This closes the database connection
61 */
62 static void lsa_Policy_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
63 {
64         struct lsa_policy_state *state = h->data;
65         lsa_Policy_close(state);
66 }
67
68 /* 
69   lsa_Close 
70 */
71 static NTSTATUS lsa_Close(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
72                           struct lsa_Close *r)
73 {
74         struct dcesrv_handle *h;
75
76         *r->out.handle = *r->in.handle;
77
78         DCESRV_PULL_HANDLE(h, r->in.handle, DCESRV_HANDLE_ANY);
79
80         /* this causes the callback samr_XXX_destroy() to be called by
81            the handle destroy code which destroys the state associated
82            with the handle */
83         dcesrv_handle_destroy(dce_call->conn, h);
84
85         ZERO_STRUCTP(r->out.handle);
86
87         return NT_STATUS_OK;
88 }
89
90
91 /* 
92   lsa_Delete 
93 */
94 static NTSTATUS lsa_Delete(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
95                            struct lsa_Delete *r)
96 {
97         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
98 }
99
100
101 /* 
102   lsa_EnumPrivs 
103 */
104 static NTSTATUS lsa_EnumPrivs(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
105                               struct lsa_EnumPrivs *r)
106 {
107         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
108 }
109
110
111 /* 
112   lsa_QuerySecObj 
113 */
114 static NTSTATUS lsa_QuerySecObj(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
115                                 struct lsa_QuerySecObj *r)
116 {
117         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
118 }
119
120
121 /* 
122   lsa_SetSecObj 
123 */
124 static NTSTATUS lsa_SetSecObj(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
125                               struct lsa_SetSecObj *r)
126 {
127         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
128 }
129
130
131 /* 
132   lsa_ChangePassword 
133 */
134 static NTSTATUS lsa_ChangePassword(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
135                                    struct lsa_ChangePassword *r)
136 {
137         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
138 }
139
140
141 /* 
142   lsa_OpenPolicy2
143 */
144 static NTSTATUS lsa_OpenPolicy2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
145                                struct lsa_OpenPolicy2 *r)
146 {
147         struct lsa_policy_state *state;
148         struct dcesrv_handle *handle;
149
150         ZERO_STRUCTP(r->out.handle);
151
152         state = talloc_p(dce_call->conn, struct lsa_policy_state);
153         if (!state) {
154                 return NT_STATUS_NO_MEMORY;
155         }
156
157         /* make sure the sam database is accessible */
158         state->sam_ctx = samdb_connect(state);
159         if (state->sam_ctx == NULL) {
160                 talloc_free(state);
161                 return NT_STATUS_INVALID_SYSTEM_SERVICE;
162         }
163
164         /* work out the domain_dn - useful for so many calls its worth
165            fetching here */
166         state->domain_dn = samdb_search_string(state->sam_ctx, state, NULL,
167                                                "dn", "(&(objectClass=domain)(!(objectclass=builtinDomain)))");
168         if (!state->domain_dn) {
169                 talloc_free(state);
170                 return NT_STATUS_NO_SUCH_DOMAIN;                
171         }
172
173         handle = dcesrv_handle_new(dce_call->conn, LSA_HANDLE_POLICY);
174         if (!handle) {
175                 talloc_free(state);
176                 return NT_STATUS_NO_MEMORY;
177         }
178
179         handle->data = state;
180         handle->destroy = lsa_Policy_destroy;
181
182         state->reference_count = 1;
183         state->access_mask = r->in.access_mask;
184         *r->out.handle = handle->wire_handle;
185
186         /* note that we have completely ignored the attr element of
187            the OpenPolicy. As far as I can tell, this is what w2k3
188            does */
189
190         return NT_STATUS_OK;
191 }
192
193 /* 
194   lsa_OpenPolicy
195   a wrapper around lsa_OpenPolicy2
196 */
197 static NTSTATUS lsa_OpenPolicy(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
198                                 struct lsa_OpenPolicy *r)
199 {
200         struct lsa_OpenPolicy2 r2;
201
202         r2.in.system_name = NULL;
203         r2.in.attr = r->in.attr;
204         r2.in.access_mask = r->in.access_mask;
205         r2.out.handle = r->out.handle;
206
207         return lsa_OpenPolicy2(dce_call, mem_ctx, &r2);
208 }
209
210
211
212
213 /*
214   fill in the AccountDomain info
215 */
216 static NTSTATUS lsa_info_AccountDomain(struct lsa_policy_state *state, TALLOC_CTX *mem_ctx,
217                                        struct lsa_DomainInfo *info)
218 {
219         const char * const attrs[] = { "objectSid", "name", NULL};
220         int ret;
221         struct ldb_message **res;
222
223         ret = samdb_search(state->sam_ctx, mem_ctx, NULL, &res, attrs, 
224                            "dn=%s", state->domain_dn);
225         if (ret != 1) {
226                 return NT_STATUS_INTERNAL_DB_CORRUPTION;
227         }
228
229         info->name.name = samdb_result_string(res[0], "name", NULL);
230         info->sid       = samdb_result_dom_sid(mem_ctx, res[0], "objectSid");
231
232         return NT_STATUS_OK;
233 }
234
235 /*
236   fill in the DNS domain info
237 */
238 static NTSTATUS lsa_info_DNS(struct lsa_policy_state *state, TALLOC_CTX *mem_ctx,
239                              struct lsa_DnsDomainInfo *info)
240 {
241         const char * const attrs[] = { "name", "dnsDomain", "objectGUID", "objectSid", NULL };
242         int ret;
243         struct ldb_message **res;
244
245         ret = samdb_search(state->sam_ctx, mem_ctx, NULL, &res, attrs, 
246                            "dn=%s", state->domain_dn);
247         if (ret != 1) {
248                 return NT_STATUS_INTERNAL_DB_CORRUPTION;
249         }
250
251         info->name.name       = samdb_result_string(res[0],           "name", NULL);
252         info->dns_domain.name = samdb_result_string(res[0],           "dnsDomain", NULL);
253         info->dns_forest.name = samdb_result_string(res[0],           "dnsDomain", NULL);
254         info->domain_guid     = samdb_result_guid(res[0],             "objectGUID");
255         info->sid             = samdb_result_dom_sid(mem_ctx, res[0], "objectSid");
256
257         return NT_STATUS_OK;
258 }
259
260 /* 
261   lsa_QueryInfoPolicy2
262 */
263 static NTSTATUS lsa_QueryInfoPolicy2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
264                                      struct lsa_QueryInfoPolicy2 *r)
265 {
266         struct lsa_policy_state *state;
267         struct dcesrv_handle *h;
268
269         r->out.info = NULL;
270
271         DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
272
273         state = h->data;
274
275         r->out.info = talloc_p(mem_ctx, union lsa_PolicyInformation);
276         if (!r->out.info) {
277                 return NT_STATUS_NO_MEMORY;
278         }
279
280         ZERO_STRUCTP(r->out.info);
281
282         switch (r->in.level) {
283         case LSA_POLICY_INFO_DOMAIN:
284         case LSA_POLICY_INFO_ACCOUNT_DOMAIN:
285                 return lsa_info_AccountDomain(state, mem_ctx, &r->out.info->account_domain);
286
287         case LSA_POLICY_INFO_DNS:
288                 return lsa_info_DNS(state, mem_ctx, &r->out.info->dns);
289         }
290
291         return NT_STATUS_INVALID_INFO_CLASS;
292 }
293
294 /* 
295   lsa_QueryInfoPolicy 
296 */
297 static NTSTATUS lsa_QueryInfoPolicy(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
298                                     struct lsa_QueryInfoPolicy *r)
299 {
300         struct lsa_QueryInfoPolicy2 r2;
301         NTSTATUS status;
302
303         r2.in.handle = r->in.handle;
304         r2.in.level = r->in.level;
305         
306         status = lsa_QueryInfoPolicy2(dce_call, mem_ctx, &r2);
307
308         r->out.info = r2.out.info;
309
310         return status;
311 }
312
313 /* 
314   lsa_SetInfoPolicy 
315 */
316 static NTSTATUS lsa_SetInfoPolicy(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
317                                   struct lsa_SetInfoPolicy *r)
318 {
319         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
320 }
321
322
323 /* 
324   lsa_ClearAuditLog 
325 */
326 static NTSTATUS lsa_ClearAuditLog(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
327                                   struct lsa_ClearAuditLog *r)
328 {
329         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
330 }
331
332
333 /* 
334   lsa_CreateAccount 
335 */
336 static NTSTATUS lsa_CreateAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
337                                   struct lsa_CreateAccount *r)
338 {
339         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
340 }
341
342
343 /* 
344   lsa_EnumAccounts 
345 */
346 static NTSTATUS lsa_EnumAccounts(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
347                                  struct lsa_EnumAccounts *r)
348 {
349         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
350 }
351
352
353 /* 
354   lsa_CreateTrustedDomain 
355 */
356 static NTSTATUS lsa_CreateTrustedDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
357                                         struct lsa_CreateTrustedDomain *r)
358 {
359         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
360 }
361
362
363 /* 
364   lsa_EnumTrustDom 
365 */
366 static NTSTATUS lsa_EnumTrustDom(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
367                        struct lsa_EnumTrustDom *r)
368 {
369         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
370 }
371
372
373 /* 
374   lsa_LookupNames 
375 */
376 static NTSTATUS lsa_LookupNames(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
377                        struct lsa_LookupNames *r)
378 {
379         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
380 }
381
382
383 /* 
384   lsa_LookupSids 
385 */
386 static NTSTATUS lsa_LookupSids(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
387                        struct lsa_LookupSids *r)
388 {
389         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
390 }
391
392
393 /* 
394   lsa_CreateSecret 
395 */
396 static NTSTATUS lsa_CreateSecret(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
397                        struct lsa_CreateSecret *r)
398 {
399         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
400 }
401
402
403 /* 
404   lsa_OpenAccount 
405 */
406 static NTSTATUS lsa_OpenAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
407                        struct lsa_OpenAccount *r)
408 {
409         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
410 }
411
412
413 /* 
414   lsa_EnumPrivsAccount 
415 */
416 static NTSTATUS lsa_EnumPrivsAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
417                        struct lsa_EnumPrivsAccount *r)
418 {
419         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
420 }
421
422
423 /* 
424   lsa_AddPrivilegesToAccount
425 */
426 static NTSTATUS lsa_AddPrivilegesToAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
427                        struct lsa_AddPrivilegesToAccount *r)
428 {
429         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
430 }
431
432
433 /* 
434   lsa_RemovePrivilegesFromAccount
435 */
436 static NTSTATUS lsa_RemovePrivilegesFromAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
437                        struct lsa_RemovePrivilegesFromAccount *r)
438 {
439         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
440 }
441
442
443 /* 
444   lsa_GetQuotasForAccount
445 */
446 static NTSTATUS lsa_GetQuotasForAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
447                        struct lsa_GetQuotasForAccount *r)
448 {
449         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
450 }
451
452
453 /* 
454   lsa_SetQuotasForAccount
455 */
456 static NTSTATUS lsa_SetQuotasForAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
457                        struct lsa_SetQuotasForAccount *r)
458 {
459         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
460 }
461
462
463 /* 
464   lsa_GetSystemAccessAccount
465 */
466 static NTSTATUS lsa_GetSystemAccessAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
467                        struct lsa_GetSystemAccessAccount *r)
468 {
469         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
470 }
471
472
473 /* 
474   lsa_SetSystemAccessAccount
475 */
476 static NTSTATUS lsa_SetSystemAccessAccount(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
477                        struct lsa_SetSystemAccessAccount *r)
478 {
479         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
480 }
481
482
483 /* 
484   lsa_OpenTrustedDomain
485 */
486 static NTSTATUS lsa_OpenTrustedDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
487                        struct lsa_OpenTrustedDomain *r)
488 {
489         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
490 }
491
492
493 /* 
494   lsa_QueryInfoTrustedDomain
495 */
496 static NTSTATUS lsa_QueryInfoTrustedDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
497                        struct lsa_QueryInfoTrustedDomain *r)
498 {
499         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
500 }
501
502
503 /* 
504   lsa_SetInformationTrustedDomain
505 */
506 static NTSTATUS lsa_SetInformationTrustedDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
507                        struct lsa_SetInformationTrustedDomain *r)
508 {
509         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
510 }
511
512
513 /* 
514   lsa_OpenSecret 
515 */
516 static NTSTATUS lsa_OpenSecret(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
517                        struct lsa_OpenSecret *r)
518 {
519         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
520 }
521
522
523 /* 
524   lsa_SetSecret 
525 */
526 static NTSTATUS lsa_SetSecret(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
527                        struct lsa_SetSecret *r)
528 {
529         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
530 }
531
532
533 /* 
534   lsa_QuerySecret 
535 */
536 static NTSTATUS lsa_QuerySecret(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
537                        struct lsa_QuerySecret *r)
538 {
539         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
540 }
541
542
543 /* 
544   lsa_LookupPrivValue
545 */
546 static NTSTATUS lsa_LookupPrivValue(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
547                        struct lsa_LookupPrivValue *r)
548 {
549         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
550 }
551
552
553 /* 
554   lsa_LookupPrivName 
555 */
556 static NTSTATUS lsa_LookupPrivName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
557                        struct lsa_LookupPrivName *r)
558 {
559         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
560 }
561
562
563 /* 
564   lsa_LookupPrivDisplayName
565 */
566 static NTSTATUS lsa_LookupPrivDisplayName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
567                        struct lsa_LookupPrivDisplayName *r)
568 {
569         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
570 }
571
572
573 /* 
574   lsa_DeleteObject
575 */
576 static NTSTATUS lsa_DeleteObject(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
577                        struct lsa_DeleteObject *r)
578 {
579         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
580 }
581
582
583 /* 
584   lsa_EnumAccountsWithUserRight
585 */
586 static NTSTATUS lsa_EnumAccountsWithUserRight(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
587                        struct lsa_EnumAccountsWithUserRight *r)
588 {
589         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
590 }
591
592
593 /* 
594   lsa_EnumAccountRights 
595 */
596 static NTSTATUS lsa_EnumAccountRights(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
597                        struct lsa_EnumAccountRights *r)
598 {
599         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
600 }
601
602
603 /* 
604   lsa_AddAccountRights
605 */
606 static NTSTATUS lsa_AddAccountRights(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
607                        struct lsa_AddAccountRights *r)
608 {
609         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
610 }
611
612
613 /* 
614   lsa_RemoveAccountRights
615 */
616 static NTSTATUS lsa_RemoveAccountRights(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
617                        struct lsa_RemoveAccountRights *r)
618 {
619         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
620 }
621
622
623 /* 
624   lsa_QueryTrustDomainInfo
625 */
626 static NTSTATUS lsa_QueryTrustDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
627                        struct lsa_QueryTrustDomainInfo *r)
628 {
629         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
630 }
631
632
633 /* 
634   lsa_SetTrustDomainInfo
635 */
636 static NTSTATUS lsa_SetTrustDomainInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
637                        struct lsa_SetTrustDomainInfo *r)
638 {
639         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
640 }
641
642
643 /* 
644   lsa_DeleteTrustDomain
645 */
646 static NTSTATUS lsa_DeleteTrustDomain(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
647                        struct lsa_DeleteTrustDomain *r)
648 {
649         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
650 }
651
652
653 /* 
654   lsa_StorePrivateData
655 */
656 static NTSTATUS lsa_StorePrivateData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
657                        struct lsa_StorePrivateData *r)
658 {
659         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
660 }
661
662
663 /* 
664   lsa_RetrievePrivateData
665 */
666 static NTSTATUS lsa_RetrievePrivateData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
667                        struct lsa_RetrievePrivateData *r)
668 {
669         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
670 }
671
672
673 /* 
674   lsa_GetUserName
675 */
676 static NTSTATUS lsa_GetUserName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
677                        struct lsa_GetUserName *r)
678 {
679         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
680 }
681
682 /*
683   lsa_SetInfoPolicy2
684 */
685 static NTSTATUS lsa_SetInfoPolicy2(struct dcesrv_call_state *dce_call,
686                                    TALLOC_CTX *mem_ctx,
687                                    struct lsa_SetInfoPolicy2 *r)
688 {
689         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
690 }
691
692 /*
693   lsa_QueryTrustedDomainInfoByName
694 */
695 static NTSTATUS lsa_QueryTrustedDomainInfoByName(struct dcesrv_call_state *dce_call,
696                                                  TALLOC_CTX *mem_ctx,
697                                                  struct lsa_QueryTrustedDomainInfoByName *r)
698 {
699         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
700 }
701
702 /*
703   lsa_SetTrustedDomainInfoByName
704 */
705 static NTSTATUS lsa_SetTrustedDomainInfoByName(struct dcesrv_call_state *dce_call,
706                                                TALLOC_CTX *mem_ctx,
707                                                struct lsa_SetTrustedDomainInfoByName *r)
708 {
709         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
710 }
711
712 /*
713   lsa_EnumTrustedDomainsEx
714 */
715 static NTSTATUS lsa_EnumTrustedDomainsEx(struct dcesrv_call_state *dce_call,
716                                          TALLOC_CTX *mem_ctx,
717                                          struct lsa_EnumTrustedDomainsEx *r)
718 {
719         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
720 }
721
722 /*
723   lsa_CreateTrustedDomainEx
724 */
725 static NTSTATUS lsa_CreateTrustedDomainEx(struct dcesrv_call_state *dce_call,
726                                           TALLOC_CTX *mem_ctx,
727                                           struct lsa_CreateTrustedDomainEx *r)
728 {
729         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
730 }
731
732 /*
733   lsa_CloseTrustedDomainEx
734 */
735 static NTSTATUS lsa_CloseTrustedDomainEx(struct dcesrv_call_state *dce_call,
736                                          TALLOC_CTX *mem_ctx,
737                                          struct lsa_CloseTrustedDomainEx *r)
738 {
739         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
740 }
741
742 /*
743   lsa_QueryDomainInformationPolicy
744 */
745 static NTSTATUS lsa_QueryDomainInformationPolicy(struct dcesrv_call_state *dce_call,
746                                                  TALLOC_CTX *mem_ctx,
747                                                  struct lsa_QueryDomainInformationPolicy *r)
748 {
749         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
750 }
751
752 /*
753   lsa_SetDomInfoPolicy
754 */
755 static NTSTATUS lsa_SetDomInfoPolicy(struct dcesrv_call_state *dce_call,
756                                      TALLOC_CTX *mem_ctx,
757                                      struct lsa_SetDomInfoPolicy *r)
758 {
759         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
760 }
761
762 /*
763   lsa_OpenTrustedDomainByName
764 */
765 static NTSTATUS lsa_OpenTrustedDomainByName(struct dcesrv_call_state *dce_call,
766                                             TALLOC_CTX *mem_ctx,
767                                             struct lsa_OpenTrustedDomainByName *r)
768 {
769         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
770 }
771
772 /*
773   lsa_TestCall
774 */
775 static NTSTATUS lsa_TestCall(struct dcesrv_call_state *dce_call,
776                              TALLOC_CTX *mem_ctx,
777                              struct lsa_TestCall *r)
778 {
779         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
780 }
781
782 /*
783   lsa_LookupSids2
784 */
785 static NTSTATUS lsa_LookupSids2(struct dcesrv_call_state *dce_call,
786                                 TALLOC_CTX *mem_ctx,
787                                 struct lsa_LookupSids2 *r)
788 {
789         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
790 }
791
792 /*
793   lsa_LookupNames2
794 */
795 static NTSTATUS lsa_LookupNames2(struct dcesrv_call_state *dce_call,
796                                  TALLOC_CTX *mem_ctx,
797                                  struct lsa_LookupNames2 *r)
798 {
799         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
800 }
801
802 /*
803   lsa_CreateTrustedDomainEx2
804 */
805 static NTSTATUS lsa_CreateTrustedDomainEx2(struct dcesrv_call_state *dce_call,
806                                            TALLOC_CTX *mem_ctx,
807                                            struct lsa_CreateTrustedDomainEx2 *r)
808 {
809         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
810 }
811
812 /* include the generated boilerplate */
813 #include "librpc/gen_ndr/ndr_lsa_s.c"