3ab02c1047a57f892baff7ca90bcccd5b8355754
[garming/samba-autobuild/.git] / source4 / rpc_server / wkssvc / dcesrv_wkssvc.c
1 /* 
2    Unix SMB/CIFS implementation.
3
4    endpoint server for the wkssvc pipe
5
6    Copyright (C) Stefan (metze) 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 3 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, see <http://www.gnu.org/licenses/>.
20 */
21
22 #include "includes.h"
23 #include "rpc_server/dcerpc_server.h"
24 #include "librpc/gen_ndr/ndr_wkssvc.h"
25 #include "rpc_server/common/common.h"
26
27 /* 
28   wkssvc_NetWkstaGetInfo 
29 */
30 static WERROR dcesrv_wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
31                        struct wkssvc_NetWkstaGetInfo *r)
32 {
33         struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
34
35         ZERO_STRUCT(r->out);
36         r->out.info = talloc_zero(mem_ctx, union wkssvc_NetWkstaInfo);
37         W_ERROR_HAVE_NO_MEMORY(r->out.info);
38
39         /* NOTE: win2k3 ignores r->in.server_name completly so we do --metze */
40
41         switch(r->in.level) {
42         case 100:
43         {
44                 struct wkssvc_NetWkstaInfo100 *info100;
45                 
46                 info100 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo100);
47                 W_ERROR_HAVE_NO_MEMORY(info100);
48
49                 info100->platform_id    = dcesrv_common_get_platform_id(mem_ctx, dce_ctx);
50                 info100->server_name    = dcesrv_common_get_server_name(mem_ctx, dce_ctx, NULL);
51                 W_ERROR_HAVE_NO_MEMORY(info100->server_name);
52                 info100->domain_name    = dcesrv_common_get_domain_name(mem_ctx, dce_ctx);
53                 W_ERROR_HAVE_NO_MEMORY(info100->domain_name);
54                 info100->version_major  = dcesrv_common_get_version_major(mem_ctx, dce_ctx);
55                 info100->version_minor  = dcesrv_common_get_version_minor(mem_ctx, dce_ctx);
56
57                 r->out.info->info100 = info100;
58                 return WERR_OK;
59         }
60         case 101:
61         {
62                 struct wkssvc_NetWkstaInfo101 *info101;
63
64                 info101 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo101);
65                 W_ERROR_HAVE_NO_MEMORY(info101);
66
67                 info101->platform_id    = dcesrv_common_get_platform_id(mem_ctx, dce_ctx);
68                 info101->server_name    = dcesrv_common_get_server_name(mem_ctx, dce_ctx, NULL);
69                 W_ERROR_HAVE_NO_MEMORY(info101->server_name);
70                 info101->domain_name    = dcesrv_common_get_domain_name(mem_ctx, dce_ctx);
71                 W_ERROR_HAVE_NO_MEMORY(info101->domain_name);
72                 info101->version_major  = dcesrv_common_get_version_major(mem_ctx, dce_ctx);
73                 info101->version_minor  = dcesrv_common_get_version_minor(mem_ctx, dce_ctx);
74                 info101->lan_root       = dcesrv_common_get_lan_root(mem_ctx, dce_ctx);
75
76                 r->out.info->info101 = info101;
77                 return WERR_OK;
78         }
79         case 102:
80         {
81                 return WERR_ACCESS_DENIED;
82         }
83         case 502:
84         {
85                 return WERR_ACCESS_DENIED;
86         }
87         default:
88                 return WERR_UNKNOWN_LEVEL;
89         }
90
91         return WERR_UNKNOWN_LEVEL;
92 }
93
94
95 /* 
96   wkssvc_NetWkstaSetInfo 
97 */
98 static WERROR dcesrv_wkssvc_NetWkstaSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
99                        struct wkssvc_NetWkstaSetInfo *r)
100 {
101         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
102 }
103
104
105 /* 
106   wkssvc_NetWkstaEnumUsers
107 */
108 static WERROR dcesrv_wkssvc_NetWkstaEnumUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
109                                        struct wkssvc_NetWkstaEnumUsers *r)
110 {
111         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
112 }
113
114
115 /*
116   wkssvc_NetrWkstaUserGetInfo
117 */
118 static WERROR dcesrv_wkssvc_NetrWkstaUserGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
119                        struct wkssvc_NetrWkstaUserGetInfo *r)
120 {
121         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
122 }
123
124
125 /*
126   wkssvc_NetrWkstaUserSetInfo
127 */
128 static WERROR dcesrv_wkssvc_NetrWkstaUserSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
129                        struct wkssvc_NetrWkstaUserSetInfo *r)
130 {
131         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
132 }
133
134
135 /* 
136   wkssvc_NetWkstaTransportEnum 
137 */
138 static WERROR dcesrv_wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
139                        struct wkssvc_NetWkstaTransportEnum *r)
140 {
141         r->out.total_entries = 0;
142         r->out.resume_handle = NULL;
143
144         switch (r->in.info->level) {
145         case 0:
146                 r->out.info = talloc(mem_ctx, struct wkssvc_NetWkstaTransportInfo);
147                 W_ERROR_HAVE_NO_MEMORY(r->out.info);
148                 r->out.info->level = r->in.info->level;
149                 r->out.info->ctr.ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0);
150                 W_ERROR_HAVE_NO_MEMORY(r->out.info->ctr.ctr0);
151
152                 r->out.info->ctr.ctr0->count = 0;
153                 r->out.info->ctr.ctr0->array = NULL;
154
155                 return WERR_NOT_SUPPORTED;
156
157         default:
158                 return WERR_UNKNOWN_LEVEL;
159         }
160
161         return WERR_UNKNOWN_LEVEL;
162 }
163
164
165 /*
166   wkssvc_NetrWkstaTransportAdd
167 */
168 static WERROR dcesrv_wkssvc_NetrWkstaTransportAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
169                        struct wkssvc_NetrWkstaTransportAdd *r)
170 {
171         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
172 }
173
174
175 /*
176   wkssvc_NetrWkstaTransportDel
177 */
178 static WERROR dcesrv_wkssvc_NetrWkstaTransportDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
179                        struct wkssvc_NetrWkstaTransportDel *r)
180 {
181         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
182 }
183
184
185 /*
186   wkssvc_NetrUseAdd
187 */
188 static WERROR dcesrv_wkssvc_NetrUseAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
189                        struct wkssvc_NetrUseAdd *r)
190 {
191         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
192 }
193
194
195 /*
196   wkssvc_NetrUseGetInfo
197 */
198 static WERROR dcesrv_wkssvc_NetrUseGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
199                        struct wkssvc_NetrUseGetInfo *r)
200 {
201         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
202 }
203
204
205 /*
206   wkssvc_NetrUseDel
207 */
208 static WERROR dcesrv_wkssvc_NetrUseDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
209                        struct wkssvc_NetrUseDel *r)
210 {
211         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
212 }
213
214
215 /*
216   wkssvc_NetrUseEnum
217 */
218 static WERROR dcesrv_wkssvc_NetrUseEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
219                        struct wkssvc_NetrUseEnum *r)
220 {
221         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
222 }
223
224
225 /* 
226   WKSSVC_NETRMESSAGEBUFFERSEND 
227 */
228 static WERROR dcesrv_WKSSVC_NETRMESSAGEBUFFERSEND(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
229                        struct WKSSVC_NETRMESSAGEBUFFERSEND *r)
230 {
231         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
232 }
233
234
235 /* 
236   WKSSVC_NETRWORKSTATIONSTATISTICSGET 
237 */
238 static WERROR dcesrv_WKSSVC_NETRWORKSTATIONSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
239                        struct WKSSVC_NETRWORKSTATIONSTATISTICSGET *r)
240 {
241         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
242 }
243
244
245 /*
246   wkssvc_NetrLogonDomainNameAdd
247 */
248 static WERROR dcesrv_wkssvc_NetrLogonDomainNameAdd(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
249                        struct wkssvc_NetrLogonDomainNameAdd *r)
250 {
251         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
252 }
253
254
255 /*
256   wkssvc_NetrLogonDomainNameDel
257 */
258 static WERROR dcesrv_wkssvc_NetrLogonDomainNameDel(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
259                        struct wkssvc_NetrLogonDomainNameDel *r)
260 {
261         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
262 }
263
264
265 /* 
266   WKSSVC_NETRJOINDOMAIN 
267 */
268 static WERROR dcesrv_WKSSVC_NETRJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
269                        struct WKSSVC_NETRJOINDOMAIN *r)
270 {
271         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
272 }
273
274
275 /* 
276   WKSSVC_NETRUNJOINDOMAIN 
277 */
278 static WERROR dcesrv_WKSSVC_NETRUNJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
279                        struct WKSSVC_NETRUNJOINDOMAIN *r)
280 {
281         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
282 }
283
284
285 /* 
286   WKSSVC_NETRRENAMEMACHINEINDOMAIN 
287 */
288 static WERROR dcesrv_WKSSVC_NETRRENAMEMACHINEINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
289                        struct WKSSVC_NETRRENAMEMACHINEINDOMAIN *r)
290 {
291         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
292 }
293
294
295 /* 
296   WKSSVC_NETRVALIDATENAME 
297 */
298 static WERROR dcesrv_WKSSVC_NETRVALIDATENAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
299                        struct WKSSVC_NETRVALIDATENAME *r)
300 {
301         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
302 }
303
304
305 /* 
306   WKSSVC_NETRGETJOININFORMATION 
307 */
308 static WERROR dcesrv_WKSSVC_NETRGETJOININFORMATION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
309                        struct WKSSVC_NETRGETJOININFORMATION *r)
310 {
311         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
312 }
313
314
315 /* 
316   WKSSVC_NETRGETJOINABLEOUS 
317 */
318 static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
319                        struct WKSSVC_NETRGETJOINABLEOUS *r)
320 {
321         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
322 }
323
324
325 /* 
326   WKSSVC_NETRJOINDOMAIN2 
327 */
328 static WERROR dcesrv_wkssvc_NetrJoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
329                        struct wkssvc_NetrJoinDomain2 *r)
330 {
331         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
332 }
333
334
335 /* 
336   WKSSVC_NETRUNJOINDOMAIN2 
337 */
338 static WERROR dcesrv_wkssvc_NetrUnjoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
339                        struct wkssvc_NetrUnjoinDomain2 *r)
340 {
341         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
342 }
343
344
345 /* 
346   WKSSVC_NETRRENAMEMACHINEINDOMAIN2 
347 */
348 static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
349                        struct wkssvc_NetrRenameMachineInDomain2 *r)
350 {
351         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
352 }
353
354
355 /* 
356   WKSSVC_NETRVALIDATENAME2 
357 */
358 static WERROR dcesrv_WKSSVC_NETRVALIDATENAME2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
359                        struct WKSSVC_NETRVALIDATENAME2 *r)
360 {
361         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
362 }
363
364
365 /* 
366   WKSSVC_NETRGETJOINABLEOUS2 
367 */
368 static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
369                        struct WKSSVC_NETRGETJOINABLEOUS2 *r)
370 {
371         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
372 }
373
374
375 /* 
376   WKSSVC_NETRADDALTERNATECOMPUTERNAME 
377 */
378 static WERROR dcesrv_wkssvc_NetrAddAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
379                        struct wkssvc_NetrAddAlternateComputerName *r)
380 {
381         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
382 }
383
384
385 /* 
386   WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME 
387 */
388 static WERROR dcesrv_wkssvc_NetrRemoveAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
389                        struct wkssvc_NetrRemoveAlternateComputerName *r)
390 {
391         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
392 }
393
394
395 /* 
396   WKSSVC_NETRSETPRIMARYCOMPUTERNAME 
397 */
398 static WERROR dcesrv_WKSSVC_NETRSETPRIMARYCOMPUTERNAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
399                        struct WKSSVC_NETRSETPRIMARYCOMPUTERNAME *r)
400 {
401         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
402 }
403
404
405 /* 
406   WKSSVC_NETRENUMERATECOMPUTERNAMES 
407 */
408 static WERROR dcesrv_WKSSVC_NETRENUMERATECOMPUTERNAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
409                        struct WKSSVC_NETRENUMERATECOMPUTERNAMES *r)
410 {
411         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
412 }
413
414
415 /* include the generated boilerplate */
416 #include "librpc/gen_ndr/ndr_wkssvc_s.c"