d9d2df344a16dd2da299e1ec12825c6ae769ba53
[samba.git] / source3 / rpc_server / srv_wkssvc_nt.c
1 /* 
2  *  Unix SMB/CIFS implementation.
3  *  RPC Pipe client / server routines
4  *
5  *  Copyright (C) Andrew Tridgell               1992-1997,
6  *  Copyright (C) Gerald (Jerry) Carter         2006.
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 /* This is the implementation of the wks interface. */
23
24 #include "includes.h"
25
26 #undef DBGC_CLASS
27 #define DBGC_CLASS DBGC_RPC_SRV
28
29 /*******************************************************************
30  Fill in the values for the struct wkssvc_NetWkstaInfo100.
31  ********************************************************************/
32
33 static void create_wks_info_100(struct wkssvc_NetWkstaInfo100 *info100)
34 {
35         info100->platform_id     = PLATFORM_ID_NT;      /* unknown */
36         info100->version_major   = lp_major_announce_version();
37         info100->version_minor   = lp_minor_announce_version();
38
39         info100->server_name = talloc_asprintf_strupper_m(
40                 info100, "%s", global_myname());
41         info100->domain_name = talloc_asprintf_strupper_m(
42                 info100, "%s", lp_workgroup());
43
44         return;
45 }
46
47 /********************************************************************
48  only supports info level 100 at the moment.
49  ********************************************************************/
50
51 WERROR _wkssvc_NetWkstaGetInfo(pipes_struct *p, struct wkssvc_NetWkstaGetInfo *r)
52 {
53         struct wkssvc_NetWkstaInfo100 *wks100 = NULL;
54         
55         /* We only support info level 100 currently */
56         
57         if ( r->in.level != 100 ) {
58                 return WERR_UNKNOWN_LEVEL;
59         }
60
61         if ( (wks100 = TALLOC_ZERO_P(p->mem_ctx, struct wkssvc_NetWkstaInfo100)) == NULL ) {
62                 return WERR_NOMEM;
63         }
64
65         create_wks_info_100( wks100 );
66         
67         r->out.info->info100 = wks100;
68
69         return WERR_OK;
70 }
71
72 /********************************************************************
73  ********************************************************************/
74
75 WERROR _wkssvc_NetWkstaSetInfo(pipes_struct *p, struct wkssvc_NetWkstaSetInfo *r)
76 {
77         /* FIXME: Add implementation code here */
78         p->rng_fault_state = True;
79         return WERR_NOT_SUPPORTED;
80 }
81
82 /********************************************************************
83  ********************************************************************/
84
85 WERROR _wkssvc_NetWkstaEnumUsers(pipes_struct *p, struct wkssvc_NetWkstaEnumUsers *r)
86 {
87         /* FIXME: Add implementation code here */
88         p->rng_fault_state = True;
89         return WERR_NOT_SUPPORTED;
90 }
91
92 /********************************************************************
93  ********************************************************************/
94
95 WERROR _wkssvc_NetrWkstaUserGetInfo(pipes_struct *p, struct wkssvc_NetrWkstaUserGetInfo *r)
96 {
97         /* FIXME: Add implementation code here */
98         p->rng_fault_state = True;
99         return WERR_NOT_SUPPORTED;
100 }
101
102 /********************************************************************
103  ********************************************************************/
104
105 WERROR _wkssvc_NetrWkstaUserSetInfo(pipes_struct *p, struct wkssvc_NetrWkstaUserSetInfo *r)
106 {
107         /* FIXME: Add implementation code here */
108         p->rng_fault_state = True;
109         return WERR_NOT_SUPPORTED;
110 }
111
112 /********************************************************************
113  ********************************************************************/
114
115 WERROR _wkssvc_NetWkstaTransportEnum(pipes_struct *p, struct wkssvc_NetWkstaTransportEnum *r)
116 {
117         /* FIXME: Add implementation code here */
118         p->rng_fault_state = True;
119         return WERR_NOT_SUPPORTED;
120 }
121
122 /********************************************************************
123  ********************************************************************/
124
125 WERROR _wkssvc_NetrWkstaTransportAdd(pipes_struct *p, struct wkssvc_NetrWkstaTransportAdd *r)
126 {
127         /* FIXME: Add implementation code here */
128         p->rng_fault_state = True;
129         return WERR_NOT_SUPPORTED;
130 }
131
132 /********************************************************************
133  ********************************************************************/
134
135 WERROR _wkssvc_NetrWkstaTransportDel(pipes_struct *p, struct wkssvc_NetrWkstaTransportDel *r)
136 {
137         /* FIXME: Add implementation code here */
138         p->rng_fault_state = True;
139         return WERR_NOT_SUPPORTED;
140 }
141
142 /********************************************************************
143  ********************************************************************/
144
145 WERROR _wkssvc_NetrUseAdd(pipes_struct *p, struct wkssvc_NetrUseAdd *r)
146 {
147         /* FIXME: Add implementation code here */
148         p->rng_fault_state = True;
149         return WERR_NOT_SUPPORTED;
150 }
151
152 /********************************************************************
153  ********************************************************************/
154
155 WERROR _wkssvc_NetrUseGetInfo(pipes_struct *p, struct wkssvc_NetrUseGetInfo *r)
156 {
157         /* FIXME: Add implementation code here */
158         p->rng_fault_state = True;
159         return WERR_NOT_SUPPORTED;
160 }
161
162 /********************************************************************
163  ********************************************************************/
164
165 WERROR _wkssvc_NetrUseDel(pipes_struct *p, struct wkssvc_NetrUseDel *r)
166 {
167         /* FIXME: Add implementation code here */
168         p->rng_fault_state = True;
169         return WERR_NOT_SUPPORTED;
170 }
171
172 /********************************************************************
173  ********************************************************************/
174
175 WERROR _wkssvc_NetrUseEnum(pipes_struct *p, struct wkssvc_NetrUseEnum *r)
176 {
177         /* FIXME: Add implementation code here */
178         p->rng_fault_state = True;
179         return WERR_NOT_SUPPORTED;
180 }
181
182 /********************************************************************
183  ********************************************************************/
184
185 WERROR _wkssvc_NetrMessageBufferSend(pipes_struct *p, struct wkssvc_NetrMessageBufferSend *r)
186 {
187         /* FIXME: Add implementation code here */
188         p->rng_fault_state = True;
189         return WERR_NOT_SUPPORTED;
190 }
191
192 /********************************************************************
193  ********************************************************************/
194
195 WERROR _wkssvc_NetrWorkstationStatisticsGet(pipes_struct *p, struct wkssvc_NetrWorkstationStatisticsGet *r) 
196 {
197         /* FIXME: Add implementation code here */
198         p->rng_fault_state = True;
199         return WERR_NOT_SUPPORTED;
200 }
201
202 /********************************************************************
203  ********************************************************************/
204
205 WERROR _wkssvc_NetrLogonDomainNameAdd(pipes_struct *p, struct wkssvc_NetrLogonDomainNameAdd *r)
206 {
207         /* FIXME: Add implementation code here */
208         p->rng_fault_state = True;
209         return WERR_NOT_SUPPORTED;
210 }
211
212 /********************************************************************
213  ********************************************************************/
214
215 WERROR _wkssvc_NetrLogonDomainNameDel(pipes_struct *p, struct wkssvc_NetrLogonDomainNameDel *r)
216 {
217         /* FIXME: Add implementation code here */
218         p->rng_fault_state = True;
219         return WERR_NOT_SUPPORTED;
220 }
221
222 /********************************************************************
223  ********************************************************************/
224
225 WERROR _wkssvc_NetrJoinDomain(pipes_struct *p, struct wkssvc_NetrJoinDomain *r)
226 {
227         /* FIXME: Add implementation code here */
228         p->rng_fault_state = True;
229         return WERR_NOT_SUPPORTED;
230 }
231
232 /********************************************************************
233  ********************************************************************/
234
235 WERROR _wkssvc_NetrUnjoinDomain(pipes_struct *p, struct wkssvc_NetrUnjoinDomain *r)
236 {
237         /* FIXME: Add implementation code here */
238         p->rng_fault_state = True;
239         return WERR_NOT_SUPPORTED;
240 }
241
242 /********************************************************************
243  ********************************************************************/
244
245 WERROR _wkssvc_NetrRenameMachineInDomain(pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain *r)
246 {
247         /* FIXME: Add implementation code here */
248         p->rng_fault_state = True;
249         return WERR_NOT_SUPPORTED;
250 }
251
252 /********************************************************************
253  ********************************************************************/
254
255 WERROR _wkssvc_NetrValidateName(pipes_struct *p, struct wkssvc_NetrValidateName *r)
256 {
257         /* FIXME: Add implementation code here */
258         p->rng_fault_state = True;
259         return WERR_NOT_SUPPORTED;
260 }
261
262 /********************************************************************
263  ********************************************************************/
264
265 WERROR _wkssvc_NetrGetJoinInformation(pipes_struct *p, struct wkssvc_NetrGetJoinInformation *r)
266 {
267         /* FIXME: Add implementation code here */
268         p->rng_fault_state = True;
269         return WERR_NOT_SUPPORTED;
270 }
271
272 /********************************************************************
273  ********************************************************************/
274
275 WERROR _wkssvc_NetrGetJoinableOus(pipes_struct *p, struct wkssvc_NetrGetJoinableOus *r)
276 {
277         /* FIXME: Add implementation code here */
278         p->rng_fault_state = True;
279         return WERR_NOT_SUPPORTED;
280 }
281
282 /********************************************************************
283  ********************************************************************/
284
285 WERROR _wkssvc_NetrJoinDomain2(pipes_struct *p, struct wkssvc_NetrJoinDomain2 *r)
286 {
287         /* FIXME: Add implementation code here */
288         p->rng_fault_state = True;
289         return WERR_NOT_SUPPORTED;
290 }
291
292 /********************************************************************
293  ********************************************************************/
294
295 WERROR _wkssvc_NetrUnjoinDomain2(pipes_struct *p, struct wkssvc_NetrUnjoinDomain2 *r)
296 {
297         /* FIXME: Add implementation code here */
298         p->rng_fault_state = True;
299         return WERR_NOT_SUPPORTED;
300 }
301
302 /********************************************************************
303  ********************************************************************/
304
305 WERROR _wkssvc_NetrRenameMachineInDomain2(pipes_struct *p, struct wkssvc_NetrRenameMachineInDomain2 *r)
306 {
307         /* FIXME: Add implementation code here */
308         p->rng_fault_state = True;
309         return WERR_NOT_SUPPORTED;
310 }
311
312 /********************************************************************
313  ********************************************************************/
314
315 WERROR _wkssvc_NetrValidateName2(pipes_struct *p, struct wkssvc_NetrValidateName2 *r)
316 {
317         /* FIXME: Add implementation code here */
318         p->rng_fault_state = True;
319         return WERR_NOT_SUPPORTED;
320 }
321
322 /********************************************************************
323  ********************************************************************/
324
325 WERROR _wkssvc_NetrGetJoinableOus2(pipes_struct *p, struct wkssvc_NetrGetJoinableOus2 *r)
326 {
327         /* FIXME: Add implementation code here */
328         p->rng_fault_state = True;
329         return WERR_NOT_SUPPORTED;
330 }
331
332 /********************************************************************
333  ********************************************************************/
334
335 WERROR _wkssvc_NetrAddAlternateComputerName(pipes_struct *p, struct wkssvc_NetrAddAlternateComputerName *r)
336 {
337         /* FIXME: Add implementation code here */
338         p->rng_fault_state = True;
339         return WERR_NOT_SUPPORTED;
340 }
341
342 /********************************************************************
343  ********************************************************************/
344
345 WERROR _wkssvc_NetrRemoveAlternateComputerName(pipes_struct *p, struct wkssvc_NetrRemoveAlternateComputerName *r)
346 {
347         /* FIXME: Add implementation code here */
348         p->rng_fault_state = True;
349         return WERR_NOT_SUPPORTED;
350 }
351
352 /********************************************************************
353  ********************************************************************/
354
355 WERROR _wkssvc_NetrSetPrimaryComputername(pipes_struct *p, struct wkssvc_NetrSetPrimaryComputername *r)
356 {
357         /* FIXME: Add implementation code here */
358         p->rng_fault_state = True;
359         return WERR_NOT_SUPPORTED;
360 }
361
362 /********************************************************************
363  ********************************************************************/
364
365 WERROR _wkssvc_NetrEnumerateComputerNames(pipes_struct *p, struct wkssvc_NetrEnumerateComputerNames *r)
366 {
367         /* FIXME: Add implementation code here */
368         p->rng_fault_state = True;
369         return WERR_NOT_SUPPORTED;
370 }
371