2 Unix SMB/CIFS implementation.
4 endpoint server for the wkssvc 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 3 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, see <http://www.gnu.org/licenses/>.
23 #include "rpc_server/dcerpc_server.h"
24 #include "librpc/gen_ndr/ndr_wkssvc.h"
25 #include "rpc_server/common/common.h"
28 wkssvc_NetWkstaGetInfo
30 static WERROR dcesrv_wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
31 struct wkssvc_NetWkstaGetInfo *r)
33 struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
36 r->out.info = talloc_zero(mem_ctx, union wkssvc_NetWkstaInfo);
37 W_ERROR_HAVE_NO_MEMORY(r->out.info);
39 /* NOTE: win2k3 ignores r->in.server_name completly so we do --metze */
44 struct wkssvc_NetWkstaInfo100 *info100;
46 info100 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo100);
47 W_ERROR_HAVE_NO_MEMORY(info100);
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);
57 r->out.info->info100 = info100;
62 struct wkssvc_NetWkstaInfo101 *info101;
64 info101 = talloc(mem_ctx, struct wkssvc_NetWkstaInfo101);
65 W_ERROR_HAVE_NO_MEMORY(info101);
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);
76 r->out.info->info101 = info101;
81 return WERR_ACCESS_DENIED;
85 return WERR_ACCESS_DENIED;
88 return WERR_UNKNOWN_LEVEL;
91 return WERR_UNKNOWN_LEVEL;
96 wkssvc_NetWkstaSetInfo
98 static WERROR dcesrv_wkssvc_NetWkstaSetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
99 struct wkssvc_NetWkstaSetInfo *r)
101 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
106 wkssvc_NetWkstaEnumUsers
108 static WERROR dcesrv_wkssvc_NetWkstaEnumUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
109 struct wkssvc_NetWkstaEnumUsers *r)
111 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
116 WKSSVC_NETRWKSTAUSERGETINFO
118 static WERROR dcesrv_WKSSVC_NETRWKSTAUSERGETINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
119 struct WKSSVC_NETRWKSTAUSERGETINFO *r)
121 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
126 WKSSVC_NETRWKSTAUSERSETINFO
128 static WERROR dcesrv_WKSSVC_NETRWKSTAUSERSETINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
129 struct WKSSVC_NETRWKSTAUSERSETINFO *r)
131 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
136 wkssvc_NetWkstaTransportEnum
138 static WERROR dcesrv_wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
139 struct wkssvc_NetWkstaTransportEnum *r)
141 r->out.level = r->in.level;
142 r->out.totalentries = 0;
143 r->out.resume_handle = NULL;
145 switch (r->in.level) {
147 r->out.ctr = talloc(mem_ctx, union wkssvc_NetWkstaTransportCtr);
148 W_ERROR_HAVE_NO_MEMORY(r->out.ctr);
149 r->out.ctr->ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0);
150 W_ERROR_HAVE_NO_MEMORY(r->out.ctr->ctr0);
152 r->out.ctr->ctr0->count = 0;
153 r->out.ctr->ctr0->array = NULL;
155 return WERR_NOT_SUPPORTED;
158 return WERR_UNKNOWN_LEVEL;
161 return WERR_UNKNOWN_LEVEL;
166 WKSSVC_NETRWKSTATRANSPORTADD
168 static WERROR dcesrv_WKSSVC_NETRWKSTATRANSPORTADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
169 struct WKSSVC_NETRWKSTATRANSPORTADD *r)
171 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
176 WKSSVC_NETRWKSTATRANSPORTDEL
178 static WERROR dcesrv_WKSSVC_NETRWKSTATRANSPORTDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
179 struct WKSSVC_NETRWKSTATRANSPORTDEL *r)
181 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
188 static WERROR dcesrv_WKSSVC_NETRUSEADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
189 struct WKSSVC_NETRUSEADD *r)
191 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
196 WKSSVC_NETRUSEGETINFO
198 static WERROR dcesrv_WKSSVC_NETRUSEGETINFO(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
199 struct WKSSVC_NETRUSEGETINFO *r)
201 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
208 static WERROR dcesrv_WKSSVC_NETRUSEDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
209 struct WKSSVC_NETRUSEDEL *r)
211 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
218 static WERROR dcesrv_WKSSVC_NETRUSEENUM(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
219 struct WKSSVC_NETRUSEENUM *r)
221 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
226 WKSSVC_NETRMESSAGEBUFFERSEND
228 static WERROR dcesrv_WKSSVC_NETRMESSAGEBUFFERSEND(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
229 struct WKSSVC_NETRMESSAGEBUFFERSEND *r)
231 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
236 WKSSVC_NETRWORKSTATIONSTATISTICSGET
238 static WERROR dcesrv_WKSSVC_NETRWORKSTATIONSTATISTICSGET(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
239 struct WKSSVC_NETRWORKSTATIONSTATISTICSGET *r)
241 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
246 WKSSVC_NETRLOGONDOMAINNAMEADD
248 static WERROR dcesrv_WKSSVC_NETRLOGONDOMAINNAMEADD(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
249 struct WKSSVC_NETRLOGONDOMAINNAMEADD *r)
251 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
256 WKSSVC_NETRLOGONDOMAINNAMEDEL
258 static WERROR dcesrv_WKSSVC_NETRLOGONDOMAINNAMEDEL(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
259 struct WKSSVC_NETRLOGONDOMAINNAMEDEL *r)
261 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
266 WKSSVC_NETRJOINDOMAIN
268 static WERROR dcesrv_WKSSVC_NETRJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
269 struct WKSSVC_NETRJOINDOMAIN *r)
271 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
276 WKSSVC_NETRUNJOINDOMAIN
278 static WERROR dcesrv_WKSSVC_NETRUNJOINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
279 struct WKSSVC_NETRUNJOINDOMAIN *r)
281 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
286 WKSSVC_NETRRENAMEMACHINEINDOMAIN
288 static WERROR dcesrv_WKSSVC_NETRRENAMEMACHINEINDOMAIN(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
289 struct WKSSVC_NETRRENAMEMACHINEINDOMAIN *r)
291 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
296 WKSSVC_NETRVALIDATENAME
298 static WERROR dcesrv_WKSSVC_NETRVALIDATENAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
299 struct WKSSVC_NETRVALIDATENAME *r)
301 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
306 WKSSVC_NETRGETJOININFORMATION
308 static WERROR dcesrv_WKSSVC_NETRGETJOININFORMATION(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
309 struct WKSSVC_NETRGETJOININFORMATION *r)
311 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
316 WKSSVC_NETRGETJOINABLEOUS
318 static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
319 struct WKSSVC_NETRGETJOINABLEOUS *r)
321 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
326 WKSSVC_NETRJOINDOMAIN2
328 static WERROR dcesrv_wkssvc_NetrJoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
329 struct wkssvc_NetrJoinDomain2 *r)
331 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
336 WKSSVC_NETRUNJOINDOMAIN2
338 static WERROR dcesrv_wkssvc_NetrUnjoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
339 struct wkssvc_NetrUnjoinDomain2 *r)
341 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
346 WKSSVC_NETRRENAMEMACHINEINDOMAIN2
348 static WERROR dcesrv_wkssvc_NetrRenameMachineInDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
349 struct wkssvc_NetrRenameMachineInDomain2 *r)
351 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
356 WKSSVC_NETRVALIDATENAME2
358 static WERROR dcesrv_WKSSVC_NETRVALIDATENAME2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
359 struct WKSSVC_NETRVALIDATENAME2 *r)
361 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
366 WKSSVC_NETRGETJOINABLEOUS2
368 static WERROR dcesrv_WKSSVC_NETRGETJOINABLEOUS2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
369 struct WKSSVC_NETRGETJOINABLEOUS2 *r)
371 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
376 WKSSVC_NETRADDALTERNATECOMPUTERNAME
378 static WERROR dcesrv_wkssvc_NetrAddAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
379 struct wkssvc_NetrAddAlternateComputerName *r)
381 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
386 WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME
388 static WERROR dcesrv_wkssvc_NetrRemoveAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
389 struct wkssvc_NetrRemoveAlternateComputerName *r)
391 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
396 WKSSVC_NETRSETPRIMARYCOMPUTERNAME
398 static WERROR dcesrv_WKSSVC_NETRSETPRIMARYCOMPUTERNAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
399 struct WKSSVC_NETRSETPRIMARYCOMPUTERNAME *r)
401 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
406 WKSSVC_NETRENUMERATECOMPUTERNAMES
408 static WERROR dcesrv_WKSSVC_NETRENUMERATECOMPUTERNAMES(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
409 struct WKSSVC_NETRENUMERATECOMPUTERNAMES *r)
411 DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
415 /* include the generated boilerplate */
416 #include "librpc/gen_ndr/ndr_wkssvc_s.c"