r3428: switched to using minimal includes for the auto-generated RPC code.
[abartlet/samba.git/.git] / source4 / rpc_server / drsuapi / dcesrv_drsuapi.c
1 /* 
2    Unix SMB/CIFS implementation.
3
4    endpoint server for the drsuapi pipe
5
6    Copyright (C) Stefan Metzmacher 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_drsuapi.h"
25 #include "rpc_server/common/common.h"
26 #include "rpc_server/drsuapi/dcesrv_drsuapi.h"
27
28 /*
29   destroy a general handle. 
30 */
31 static void drsuapi_handle_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
32 {
33         talloc_free(h->data);
34 }
35
36 /* 
37   drsuapi_DsBind 
38 */
39 static WERROR drsuapi_DsBind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
40                        struct drsuapi_DsBind *r)
41 {
42         struct drsuapi_bind_state *b_state;
43         struct dcesrv_handle *handle;
44
45         r->out.bind_info = NULL;
46         ZERO_STRUCTP(r->out.bind_handle);
47
48         b_state = talloc_p(dce_call->conn, struct drsuapi_bind_state);
49         WERR_TALLOC_CHECK(b_state);
50
51         /* TODO: fill b_state here */
52
53         handle = dcesrv_handle_new(dce_call->conn, DRSUAPI_BIND_HANDLE);
54         if (!handle) {
55                 talloc_free(b_state);
56                 return WERR_NOMEM;
57         }
58
59         handle->data = b_state;
60         handle->destroy = drsuapi_handle_destroy;
61
62         *r->out.bind_handle = handle->wire_handle;
63
64         return WERR_OK;
65 }
66
67
68 /* 
69   drsuapi_DsUnbind 
70 */
71 static WERROR drsuapi_DsUnbind(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
72                        struct drsuapi_DsUnbind *r)
73 {
74         struct dcesrv_handle *h;
75
76         *r->out.bind_handle = *r->in.bind_handle;
77
78         DCESRV_PULL_HANDLE_WERR(h, r->in.bind_handle, DRSUAPI_BIND_HANDLE);
79
80         /* this causes the callback drsuapi_handle_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.bind_handle);
86
87         return WERR_OK;
88 }
89
90
91 /* 
92   DRSUAPI_REPLICA_SYNC 
93 */
94 static WERROR DRSUAPI_REPLICA_SYNC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
95                        struct DRSUAPI_REPLICA_SYNC *r)
96 {
97         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
98 }
99
100
101 /* 
102   DRSUAPI_GET_NC_CHANGES 
103 */
104 static WERROR DRSUAPI_GET_NC_CHANGES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
105                        struct DRSUAPI_GET_NC_CHANGES *r)
106 {
107         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
108 }
109
110
111 /* 
112   DRSUAPI_UPDATE_REFS 
113 */
114 static WERROR DRSUAPI_UPDATE_REFS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
115                        struct DRSUAPI_UPDATE_REFS *r)
116 {
117         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
118 }
119
120
121 /* 
122   DRSUAPI_REPLICA_ADD 
123 */
124 static WERROR DRSUAPI_REPLICA_ADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
125                        struct DRSUAPI_REPLICA_ADD *r)
126 {
127         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
128 }
129
130
131 /* 
132   DRSUAPI_REPLICA_DEL 
133 */
134 static WERROR DRSUAPI_REPLICA_DEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
135                        struct DRSUAPI_REPLICA_DEL *r)
136 {
137         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
138 }
139
140
141 /* 
142   DRSUAPI_REPLICA_MODIFY 
143 */
144 static WERROR DRSUAPI_REPLICA_MODIFY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
145                        struct DRSUAPI_REPLICA_MODIFY *r)
146 {
147         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
148 }
149
150
151 /* 
152   DRSUAPI_VERIFY_NAMES 
153 */
154 static WERROR DRSUAPI_VERIFY_NAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
155                        struct DRSUAPI_VERIFY_NAMES *r)
156 {
157         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
158 }
159
160
161 /* 
162   DRSUAPI_GET_MEMBERSHIPS 
163 */
164 static WERROR DRSUAPI_GET_MEMBERSHIPS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
165                        struct DRSUAPI_GET_MEMBERSHIPS *r)
166 {
167         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
168 }
169
170
171 /* 
172   DRSUAPI_INTER_DOMAIN_MOVE 
173 */
174 static WERROR DRSUAPI_INTER_DOMAIN_MOVE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
175                        struct DRSUAPI_INTER_DOMAIN_MOVE *r)
176 {
177         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
178 }
179
180
181 /* 
182   DRSUAPI_GET_NT4_CHANGELOG 
183 */
184 static WERROR DRSUAPI_GET_NT4_CHANGELOG(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
185                        struct DRSUAPI_GET_NT4_CHANGELOG *r)
186 {
187         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
188 }
189
190
191 /* 
192   drsuapi_DsCrackNames => drsuapip_cracknames.c
193 */
194 static WERROR (*drsuapi_DsCrackNames)(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
195                        struct drsuapi_DsCrackNames *r) = dcesrv_drsuapi_DsCrackNames;
196
197 /* 
198   DRSUAPI_WRITE_SPN 
199 */
200 static WERROR DRSUAPI_WRITE_SPN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
201                        struct DRSUAPI_WRITE_SPN *r)
202 {
203         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
204 }
205
206
207 /* 
208   DRSUAPI_REMOVE_DS_SERVER 
209 */
210 static WERROR DRSUAPI_REMOVE_DS_SERVER(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
211                        struct DRSUAPI_REMOVE_DS_SERVER *r)
212 {
213         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
214 }
215
216
217 /* 
218   DRSUAPI_REMOVE_DS_DOMAIN 
219 */
220 static WERROR DRSUAPI_REMOVE_DS_DOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
221                        struct DRSUAPI_REMOVE_DS_DOMAIN *r)
222 {
223         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
224 }
225
226
227 /* 
228   drsuapi_DsGetDomainControllerInfo 
229 */
230 static WERROR drsuapi_DsGetDomainControllerInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
231                        struct drsuapi_DsGetDomainControllerInfo *r)
232 {
233         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
234 }
235
236
237 /* 
238   DRSUAPI_ADD_ENTRY 
239 */
240 static WERROR DRSUAPI_ADD_ENTRY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
241                        struct DRSUAPI_ADD_ENTRY *r)
242 {
243         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
244 }
245
246
247 /* 
248   DRSUAPI_EXECUTE_KCC 
249 */
250 static WERROR DRSUAPI_EXECUTE_KCC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
251                        struct DRSUAPI_EXECUTE_KCC *r)
252 {
253         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
254 }
255
256
257 /* 
258   DRSUAPI_GET_REPL_INFO 
259 */
260 static WERROR DRSUAPI_GET_REPL_INFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
261                        struct DRSUAPI_GET_REPL_INFO *r)
262 {
263         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
264 }
265
266
267 /* 
268   DRSUAPI_ADD_SID_HISTORY 
269 */
270 static WERROR DRSUAPI_ADD_SID_HISTORY(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
271                        struct DRSUAPI_ADD_SID_HISTORY *r)
272 {
273         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
274 }
275
276
277 /* 
278   DRSUAPI_GET_MEMBERSHIPS2 
279 */
280 static WERROR DRSUAPI_GET_MEMBERSHIPS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
281                        struct DRSUAPI_GET_MEMBERSHIPS2 *r)
282 {
283         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
284 }
285
286
287 /* 
288   DRSUAPI_REPLICA_VERIFY_OBJECTS 
289 */
290 static WERROR DRSUAPI_REPLICA_VERIFY_OBJECTS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
291                        struct DRSUAPI_REPLICA_VERIFY_OBJECTS *r)
292 {
293         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
294 }
295
296
297 /* 
298   DRSUAPI_GET_OBJECT_EXISTENCE 
299 */
300 static WERROR DRSUAPI_GET_OBJECT_EXISTENCE(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
301                        struct DRSUAPI_GET_OBJECT_EXISTENCE *r)
302 {
303         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
304 }
305
306
307 /* 
308   DRSUAPI_QUERY_SITES_BY_COST 
309 */
310 static WERROR DRSUAPI_QUERY_SITES_BY_COST(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
311                        struct DRSUAPI_QUERY_SITES_BY_COST *r)
312 {
313         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
314 }
315
316
317 /* include the generated boilerplate */
318 #include "librpc/gen_ndr/ndr_drsuapi_s.c"