r1201: Skeleton versions of OpenPrinterEx() and ClosePrinter() to get the hang
[bbaumbach/samba-autobuild/.git] / source4 / rpc_server / spoolss / dcesrv_spoolss.c
1 /* 
2    Unix SMB/CIFS implementation.
3
4    endpoint server for the spoolss pipe
5
6    Copyright (C) Tim Potter 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 "rpc_server/common/common.h"
25 #include "rpc_server/spoolss/dcesrv_spoolss.h"
26
27
28 /* 
29   spoolss_EnumPrinters 
30 */
31 static WERROR spoolss_EnumPrinters(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
32                        struct spoolss_EnumPrinters *r)
33 {
34         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
35 }
36
37
38 /*
39   destroy an open connection. This closes the database connection
40 */
41 static void spoolss_OpenPrinter_destroy(struct dcesrv_connection *conn, struct dcesrv_handle *h)
42 {
43 #if 0
44         struct samr_connect_state *c_state = h->data;
45         samr_Connect_close(c_state);
46 #endif
47 }
48
49 /* 
50   spoolss_OpenPrinter 
51 */
52 static WERROR spoolss_OpenPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
53                        struct spoolss_OpenPrinter *r)
54 {
55         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
56 }
57
58
59 /* 
60   spoolss_SetJob 
61 */
62 static WERROR spoolss_SetJob(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
63                        struct spoolss_SetJob *r)
64 {
65         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
66 }
67
68
69 /* 
70   spoolss_GetJob 
71 */
72 static WERROR spoolss_GetJob(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
73                        struct spoolss_GetJob *r)
74 {
75         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
76 }
77
78
79 /* 
80   spoolss_EnumJobs 
81 */
82 static WERROR spoolss_EnumJobs(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
83                        struct spoolss_EnumJobs *r)
84 {
85         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
86 }
87
88
89 /* 
90   spoolss_AddPrinter 
91 */
92 static WERROR spoolss_AddPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
93                        struct spoolss_AddPrinter *r)
94 {
95         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
96 }
97
98
99 /* 
100   spoolss_DeletePrinter 
101 */
102 static WERROR spoolss_DeletePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
103                        struct spoolss_DeletePrinter *r)
104 {
105         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
106 }
107
108
109 /* 
110   spoolss_SetPrinter 
111 */
112 static WERROR spoolss_SetPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
113                        struct spoolss_SetPrinter *r)
114 {
115         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
116 }
117
118
119 /* 
120   spoolss_GetPrinter 
121 */
122 static WERROR spoolss_GetPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
123                        struct spoolss_GetPrinter *r)
124 {
125         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
126 }
127
128
129 /* 
130   spoolss_AddPrinterDriver 
131 */
132 static WERROR spoolss_AddPrinterDriver(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
133                        struct spoolss_AddPrinterDriver *r)
134 {
135         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
136 }
137
138
139 /* 
140   spoolss_EnumPrinterDrivers 
141 */
142 static WERROR spoolss_EnumPrinterDrivers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
143                        struct spoolss_EnumPrinterDrivers *r)
144 {
145         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
146 }
147
148
149 /* 
150   spoolss_GetPrinterDriver 
151 */
152 static WERROR spoolss_GetPrinterDriver(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
153                        struct spoolss_GetPrinterDriver *r)
154 {
155         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
156 }
157
158
159 /* 
160   spoolss_GetPrinterDriverDirectory 
161 */
162 static WERROR spoolss_GetPrinterDriverDirectory(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
163                        struct spoolss_GetPrinterDriverDirectory *r)
164 {
165         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
166 }
167
168
169 /* 
170   spoolss_DeletePrinterDriver 
171 */
172 static WERROR spoolss_DeletePrinterDriver(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
173                        struct spoolss_DeletePrinterDriver *r)
174 {
175         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
176 }
177
178
179 /* 
180   spoolss_AddPrintProcessor 
181 */
182 static WERROR spoolss_AddPrintProcessor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
183                        struct spoolss_AddPrintProcessor *r)
184 {
185         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
186 }
187
188
189 /* 
190   spoolss_EnumPrintProcessors 
191 */
192 static WERROR spoolss_EnumPrintProcessors(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
193                        struct spoolss_EnumPrintProcessors *r)
194 {
195         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
196 }
197
198
199 /* 
200   spoolss_GetPrintProcessorDirectory 
201 */
202 static WERROR spoolss_GetPrintProcessorDirectory(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
203                        struct spoolss_GetPrintProcessorDirectory *r)
204 {
205         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
206 }
207
208
209 /* 
210   spoolss_StartDocPrinter 
211 */
212 static WERROR spoolss_StartDocPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
213                        struct spoolss_StartDocPrinter *r)
214 {
215         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
216 }
217
218
219 /* 
220   spoolss_StartPagePrinter 
221 */
222 static WERROR spoolss_StartPagePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
223                        struct spoolss_StartPagePrinter *r)
224 {
225         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
226 }
227
228
229 /* 
230   spoolss_WritePrinter 
231 */
232 static WERROR spoolss_WritePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
233                        struct spoolss_WritePrinter *r)
234 {
235         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
236 }
237
238
239 /* 
240   spoolss_EndPagePrinter 
241 */
242 static WERROR spoolss_EndPagePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
243                        struct spoolss_EndPagePrinter *r)
244 {
245         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
246 }
247
248
249 /* 
250   spoolss_AbortPrinter 
251 */
252 static WERROR spoolss_AbortPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
253                        struct spoolss_AbortPrinter *r)
254 {
255         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
256 }
257
258
259 /* 
260   spoolss_ReadPrinter 
261 */
262 static WERROR spoolss_ReadPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
263                        struct spoolss_ReadPrinter *r)
264 {
265         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
266 }
267
268
269 /* 
270   spoolss_EndDocPrinter 
271 */
272 static WERROR spoolss_EndDocPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
273                        struct spoolss_EndDocPrinter *r)
274 {
275         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
276 }
277
278
279 /* 
280   spoolss_AddJob 
281 */
282 static WERROR spoolss_AddJob(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
283                        struct spoolss_AddJob *r)
284 {
285         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
286 }
287
288
289 /* 
290   spoolss_ScheduleJob 
291 */
292 static WERROR spoolss_ScheduleJob(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
293                        struct spoolss_ScheduleJob *r)
294 {
295         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
296 }
297
298
299 /* 
300   spoolss_GetPrinterData 
301 */
302 static WERROR spoolss_GetPrinterData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
303                        struct spoolss_GetPrinterData *r)
304 {
305         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
306 }
307
308
309 /* 
310   spoolss_SetPrinterData 
311 */
312 static WERROR spoolss_SetPrinterData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
313                        struct spoolss_SetPrinterData *r)
314 {
315         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
316 }
317
318
319 /* 
320   spoolss_WaitForPrinterChange 
321 */
322 static WERROR spoolss_WaitForPrinterChange(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
323                        struct spoolss_WaitForPrinterChange *r)
324 {
325         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
326 }
327
328
329 /* 
330   spoolss_ClosePrinter 
331 */
332 static WERROR spoolss_ClosePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
333                        struct spoolss_ClosePrinter *r)
334 {
335         struct dcesrv_handle *h;
336
337         *r->out.handle = *r->in.handle;
338
339         DCESRV_PULL_HANDLE_WERR(h, r->in.handle, DCESRV_HANDLE_ANY);
340
341         /* this causes the callback spoolss_XXX_destroy() to be called by
342            the handle destroy code which destroys the state associated
343            with the handle */
344         dcesrv_handle_destroy(dce_call->conn, h);
345
346         ZERO_STRUCTP(r->out.handle);
347
348         return WERR_OK;
349 }
350
351
352 /* 
353   spoolss_AddForm 
354 */
355 static WERROR spoolss_AddForm(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
356                        struct spoolss_AddForm *r)
357 {
358         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
359 }
360
361
362 /* 
363   spoolss_DeleteForm 
364 */
365 static WERROR spoolss_DeleteForm(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
366                        struct spoolss_DeleteForm *r)
367 {
368         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
369 }
370
371
372 /* 
373   spoolss_GetForm 
374 */
375 static WERROR spoolss_GetForm(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
376                        struct spoolss_GetForm *r)
377 {
378         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
379 }
380
381
382 /* 
383   spoolss_SetForm 
384 */
385 static WERROR spoolss_SetForm(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
386                        struct spoolss_SetForm *r)
387 {
388         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
389 }
390
391
392 /* 
393   spoolss_EnumForms 
394 */
395 static WERROR spoolss_EnumForms(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
396                        struct spoolss_EnumForms *r)
397 {
398         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
399 }
400
401
402 /* 
403   spoolss_EnumPorts 
404 */
405 static WERROR spoolss_EnumPorts(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
406                        struct spoolss_EnumPorts *r)
407 {
408         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
409 }
410
411
412 /* 
413   spoolss_EnumMonitors 
414 */
415 static WERROR spoolss_EnumMonitors(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
416                        struct spoolss_EnumMonitors *r)
417 {
418         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
419 }
420
421
422 /* 
423   spoolss_AddPort 
424 */
425 static WERROR spoolss_AddPort(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
426                        struct spoolss_AddPort *r)
427 {
428         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
429 }
430
431
432 /* 
433   spoolss_ConfigurePort 
434 */
435 static WERROR spoolss_ConfigurePort(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
436                        struct spoolss_ConfigurePort *r)
437 {
438         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
439 }
440
441
442 /* 
443   spoolss_DeletePort 
444 */
445 static WERROR spoolss_DeletePort(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
446                        struct spoolss_DeletePort *r)
447 {
448         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
449 }
450
451
452 /* 
453   spoolss_CreatePrinterIC 
454 */
455 static WERROR spoolss_CreatePrinterIC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
456                        struct spoolss_CreatePrinterIC *r)
457 {
458         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
459 }
460
461
462 /* 
463   spoolss_PlayGDIScriptOnPrinterIC 
464 */
465 static WERROR spoolss_PlayGDIScriptOnPrinterIC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
466                        struct spoolss_PlayGDIScriptOnPrinterIC *r)
467 {
468         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
469 }
470
471
472 /* 
473   spoolss_DeletePrinterIC 
474 */
475 static WERROR spoolss_DeletePrinterIC(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
476                        struct spoolss_DeletePrinterIC *r)
477 {
478         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
479 }
480
481
482 /* 
483   spoolss_AddPrinterConnection 
484 */
485 static WERROR spoolss_AddPrinterConnection(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
486                        struct spoolss_AddPrinterConnection *r)
487 {
488         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
489 }
490
491
492 /* 
493   spoolss_DeletePrinterConnection 
494 */
495 static WERROR spoolss_DeletePrinterConnection(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
496                        struct spoolss_DeletePrinterConnection *r)
497 {
498         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
499 }
500
501
502 /* 
503   spoolss_PrinterMessageBox 
504 */
505 static WERROR spoolss_PrinterMessageBox(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
506                        struct spoolss_PrinterMessageBox *r)
507 {
508         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
509 }
510
511
512 /* 
513   spoolss_AddMonitor 
514 */
515 static WERROR spoolss_AddMonitor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
516                        struct spoolss_AddMonitor *r)
517 {
518         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
519 }
520
521
522 /* 
523   spoolss_DeleteMonitor 
524 */
525 static WERROR spoolss_DeleteMonitor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
526                        struct spoolss_DeleteMonitor *r)
527 {
528         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
529 }
530
531
532 /* 
533   spoolss_DeletePrintProcessor 
534 */
535 static WERROR spoolss_DeletePrintProcessor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
536                        struct spoolss_DeletePrintProcessor *r)
537 {
538         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
539 }
540
541
542 /* 
543   spoolss_AddPrintProvidor 
544 */
545 static WERROR spoolss_AddPrintProvidor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
546                        struct spoolss_AddPrintProvidor *r)
547 {
548         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
549 }
550
551
552 /* 
553   spoolss_DeletePrintProvidor 
554 */
555 static WERROR spoolss_DeletePrintProvidor(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
556                        struct spoolss_DeletePrintProvidor *r)
557 {
558         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
559 }
560
561
562 /* 
563   spoolss_EnumPrintProcDataTypes 
564 */
565 static WERROR spoolss_EnumPrintProcDataTypes(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
566                        struct spoolss_EnumPrintProcDataTypes *r)
567 {
568         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
569 }
570
571
572 /* 
573   spoolss_ResetPrinter 
574 */
575 static WERROR spoolss_ResetPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
576                        struct spoolss_ResetPrinter *r)
577 {
578         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
579 }
580
581
582 /* 
583   spoolss_GetPrinterDriver2 
584 */
585 static WERROR spoolss_GetPrinterDriver2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
586                        struct spoolss_GetPrinterDriver2 *r)
587 {
588         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
589 }
590
591
592 /* 
593   spoolss_FindFirstPrinterChangeNotification 
594 */
595 static WERROR spoolss_FindFirstPrinterChangeNotification(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
596                        struct spoolss_FindFirstPrinterChangeNotification *r)
597 {
598         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
599 }
600
601
602 /* 
603   spoolss_FindNextPrinterChangeNotification 
604 */
605 static WERROR spoolss_FindNextPrinterChangeNotification(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
606                        struct spoolss_FindNextPrinterChangeNotification *r)
607 {
608         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
609 }
610
611
612 /* 
613   spoolss_FindClosePrinterNotify 
614 */
615 static WERROR spoolss_FindClosePrinterNotify(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
616                        struct spoolss_FindClosePrinterNotify *r)
617 {
618         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
619 }
620
621
622 /* 
623   spoolss_RouterFindFirstPrinterChangeNotificationOld 
624 */
625 static WERROR spoolss_RouterFindFirstPrinterChangeNotificationOld(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
626                        struct spoolss_RouterFindFirstPrinterChangeNotificationOld *r)
627 {
628         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
629 }
630
631
632 /* 
633   spoolss_ReplyOpenPrinter 
634 */
635 static WERROR spoolss_ReplyOpenPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
636                        struct spoolss_ReplyOpenPrinter *r)
637 {
638         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
639 }
640
641
642 /* 
643   spoolss_RouterReplyPrinter 
644 */
645 static WERROR spoolss_RouterReplyPrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
646                        struct spoolss_RouterReplyPrinter *r)
647 {
648         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
649 }
650
651
652 /* 
653   spoolss_ReplyClosePrinter 
654 */
655 static WERROR spoolss_ReplyClosePrinter(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
656                        struct spoolss_ReplyClosePrinter *r)
657 {
658         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
659 }
660
661
662 /* 
663   spoolss_AddPortEx 
664 */
665 static WERROR spoolss_AddPortEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
666                        struct spoolss_AddPortEx *r)
667 {
668         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
669 }
670
671
672 /* 
673   spoolss_RouterFindFirstPrinterChangeNotification 
674 */
675 static WERROR spoolss_RouterFindFirstPrinterChangeNotification(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
676                        struct spoolss_RouterFindFirstPrinterChangeNotification *r)
677 {
678         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
679 }
680
681
682 /* 
683   spoolss_SpoolerInit 
684 */
685 static WERROR spoolss_SpoolerInit(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
686                        struct spoolss_SpoolerInit *r)
687 {
688         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
689 }
690
691
692 /* 
693   spoolss_ResetPrinterEx 
694 */
695 static WERROR spoolss_ResetPrinterEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
696                        struct spoolss_ResetPrinterEx *r)
697 {
698         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
699 }
700
701
702 /* 
703   spoolss_RemoteFindFirstPrinterChangeNotifyEx 
704 */
705 static WERROR spoolss_RemoteFindFirstPrinterChangeNotifyEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
706                        struct spoolss_RemoteFindFirstPrinterChangeNotifyEx *r)
707 {
708         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
709 }
710
711
712 /* 
713   spoolss_RouterRefreshPrinterChangeNotification 
714 */
715 static WERROR spoolss_RouterRefreshPrinterChangeNotification(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
716                        struct spoolss_RouterRefreshPrinterChangeNotification *r)
717 {
718         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
719 }
720
721
722 /* 
723   spoolss_RemoteFindNextPrinterChangeNotifyEx 
724 */
725 static WERROR spoolss_RemoteFindNextPrinterChangeNotifyEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
726                        struct spoolss_RemoteFindNextPrinterChangeNotifyEx *r)
727 {
728         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
729 }
730
731
732 /* 
733   spoolss_44 
734 */
735 static WERROR spoolss_44(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
736                        struct spoolss_44 *r)
737 {
738         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
739 }
740
741
742 /* 
743   spoolss_OpenPrinterEx 
744 */
745 static WERROR spoolss_OpenPrinterEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
746                        struct spoolss_OpenPrinterEx *r)
747 {
748         struct spoolss_openprinter_state *state;
749         struct dcesrv_handle *handle;
750         TALLOC_CTX *op_mem_ctx;
751
752         ZERO_STRUCTP(r->out.handle);
753
754         /* Check printername is either \\\\SERVER, \\\\SERVERIP or
755            \\\\SERVER.FQ.DN */
756
757         if (!strequal(r->in.printername, lp_netbios_name())) {
758                 return WERR_INVALID_PRINTER_NAME;
759         }
760
761         op_mem_ctx = talloc_init("spoolss_OpenPrinter");
762         if (!op_mem_ctx) {
763                 return WERR_OK;
764         }
765
766         state = talloc_p(op_mem_ctx, struct spoolss_openprinter_state);
767         if (!state) {
768                 return WERR_OK;
769         }
770         state->mem_ctx = op_mem_ctx;
771
772         handle = dcesrv_handle_new(dce_call->conn, SPOOLSS_HANDLE_SERVER);
773         if (!handle) {
774                 talloc_destroy(state->mem_ctx);
775                 return WERR_NOMEM;
776         }
777
778         handle->data = state;
779         handle->destroy = spoolss_OpenPrinter_destroy;
780
781         state->reference_count = 1;
782         state->access_mask = r->in.access_required;
783         *r->out.handle = handle->wire_handle;
784
785         return WERR_OK;
786 }
787
788
789 /* 
790   spoolss_AddPrinterEx 
791 */
792 static WERROR spoolss_AddPrinterEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
793                        struct spoolss_AddPrinterEx *r)
794 {
795         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
796 }
797
798
799 /* 
800   spoolss_47 
801 */
802 static WERROR spoolss_47(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
803                        struct spoolss_47 *r)
804 {
805         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
806 }
807
808
809 /* 
810   spoolss_EnumPrinterData 
811 */
812 static WERROR spoolss_EnumPrinterData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
813                        struct spoolss_EnumPrinterData *r)
814 {
815         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
816 }
817
818
819 /* 
820   spoolss_DeletePrinterData 
821 */
822 static WERROR spoolss_DeletePrinterData(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
823                        struct spoolss_DeletePrinterData *r)
824 {
825         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
826 }
827
828
829 /* 
830   spoolss_4a 
831 */
832 static WERROR spoolss_4a(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
833                        struct spoolss_4a *r)
834 {
835         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
836 }
837
838
839 /* 
840   spoolss_4b 
841 */
842 static WERROR spoolss_4b(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
843                        struct spoolss_4b *r)
844 {
845         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
846 }
847
848
849 /* 
850   spoolss_4c 
851 */
852 static WERROR spoolss_4c(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
853                        struct spoolss_4c *r)
854 {
855         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
856 }
857
858
859 /* 
860   spoolss_SetPrinterDataEx 
861 */
862 static WERROR spoolss_SetPrinterDataEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
863                        struct spoolss_SetPrinterDataEx *r)
864 {
865         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
866 }
867
868
869 /* 
870   spoolss_GetPrinterDataEx 
871 */
872 static WERROR spoolss_GetPrinterDataEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
873                        struct spoolss_GetPrinterDataEx *r)
874 {
875         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
876 }
877
878
879 /* 
880   spoolss_EnumPrinterDataEx 
881 */
882 static WERROR spoolss_EnumPrinterDataEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
883                        struct spoolss_EnumPrinterDataEx *r)
884 {
885         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
886 }
887
888
889 /* 
890   spoolss_EnumPrinterKey 
891 */
892 static WERROR spoolss_EnumPrinterKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
893                        struct spoolss_EnumPrinterKey *r)
894 {
895         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
896 }
897
898
899 /* 
900   spoolss_DeletePrinterDataEx 
901 */
902 static WERROR spoolss_DeletePrinterDataEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
903                        struct spoolss_DeletePrinterDataEx *r)
904 {
905         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
906 }
907
908
909 /* 
910   spoolss_DeletePrinterKey 
911 */
912 static WERROR spoolss_DeletePrinterKey(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
913                        struct spoolss_DeletePrinterKey *r)
914 {
915         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
916 }
917
918
919 /* 
920   spoolss_53 
921 */
922 static WERROR spoolss_53(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
923                        struct spoolss_53 *r)
924 {
925         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
926 }
927
928
929 /* 
930   spoolss_DeletePrinterDriverEx 
931 */
932 static WERROR spoolss_DeletePrinterDriverEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
933                        struct spoolss_DeletePrinterDriverEx *r)
934 {
935         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
936 }
937
938
939 /* 
940   spoolss_55 
941 */
942 static WERROR spoolss_55(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
943                        struct spoolss_55 *r)
944 {
945         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
946 }
947
948
949 /* 
950   spoolss_56 
951 */
952 static WERROR spoolss_56(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
953                        struct spoolss_56 *r)
954 {
955         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
956 }
957
958
959 /* 
960   spoolss_57 
961 */
962 static WERROR spoolss_57(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
963                        struct spoolss_57 *r)
964 {
965         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
966 }
967
968
969 /* 
970   spoolss_58 
971 */
972 static WERROR spoolss_58(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
973                        struct spoolss_58 *r)
974 {
975         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
976 }
977
978
979 /* 
980   spoolss_AddPrinterDriverEx 
981 */
982 static WERROR spoolss_AddPrinterDriverEx(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
983                        struct spoolss_AddPrinterDriverEx *r)
984 {
985         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
986 }
987
988
989 /* 
990   spoolss_5a 
991 */
992 static WERROR spoolss_5a(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
993                        struct spoolss_5a *r)
994 {
995         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
996 }
997
998
999 /* 
1000   spoolss_5b 
1001 */
1002 static WERROR spoolss_5b(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1003                        struct spoolss_5b *r)
1004 {
1005         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1006 }
1007
1008
1009 /* 
1010   spoolss_5c 
1011 */
1012 static WERROR spoolss_5c(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1013                        struct spoolss_5c *r)
1014 {
1015         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1016 }
1017
1018
1019 /* 
1020   spoolss_5d 
1021 */
1022 static WERROR spoolss_5d(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1023                        struct spoolss_5d *r)
1024 {
1025         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1026 }
1027
1028
1029 /* 
1030   spoolss_5e 
1031 */
1032 static WERROR spoolss_5e(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1033                        struct spoolss_5e *r)
1034 {
1035         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1036 }
1037
1038
1039 /* 
1040   spoolss_5f 
1041 */
1042 static WERROR spoolss_5f(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
1043                        struct spoolss_5f *r)
1044 {
1045         DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
1046 }
1047
1048
1049 /* include the generated boilerplate */
1050 #include "librpc/gen_ndr/ndr_spoolss_s.c"