1*8334SJose.Borrego@Sun.COM /* 2*8334SJose.Borrego@Sun.COM * CDDL HEADER START 3*8334SJose.Borrego@Sun.COM * 4*8334SJose.Borrego@Sun.COM * The contents of this file are subject to the terms of the 5*8334SJose.Borrego@Sun.COM * Common Development and Distribution License (the "License"). 6*8334SJose.Borrego@Sun.COM * You may not use this file except in compliance with the License. 7*8334SJose.Borrego@Sun.COM * 8*8334SJose.Borrego@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*8334SJose.Borrego@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*8334SJose.Borrego@Sun.COM * See the License for the specific language governing permissions 11*8334SJose.Borrego@Sun.COM * and limitations under the License. 12*8334SJose.Borrego@Sun.COM * 13*8334SJose.Borrego@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*8334SJose.Borrego@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*8334SJose.Borrego@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*8334SJose.Borrego@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*8334SJose.Borrego@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*8334SJose.Borrego@Sun.COM * 19*8334SJose.Borrego@Sun.COM * CDDL HEADER END 20*8334SJose.Borrego@Sun.COM */ 21*8334SJose.Borrego@Sun.COM /* 22*8334SJose.Borrego@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23*8334SJose.Borrego@Sun.COM * Use is subject to license terms. 24*8334SJose.Borrego@Sun.COM */ 25*8334SJose.Borrego@Sun.COM 26*8334SJose.Borrego@Sun.COM /* 27*8334SJose.Borrego@Sun.COM * Printing and Spooling RPC service. 28*8334SJose.Borrego@Sun.COM */ 29*8334SJose.Borrego@Sun.COM 30*8334SJose.Borrego@Sun.COM #include <stdlib.h> 31*8334SJose.Borrego@Sun.COM #include <strings.h> 32*8334SJose.Borrego@Sun.COM #include <smbsrv/libsmb.h> 33*8334SJose.Borrego@Sun.COM #include <smbsrv/libmlrpc.h> 34*8334SJose.Borrego@Sun.COM #include <smbsrv/libmlsvc.h> 35*8334SJose.Borrego@Sun.COM #include <smbsrv/ndl/spoolss.ndl> 36*8334SJose.Borrego@Sun.COM #include <smbsrv/nterror.h> 37*8334SJose.Borrego@Sun.COM #include <smbsrv/smbinfo.h> 38*8334SJose.Borrego@Sun.COM #include <smbsrv/nmpipes.h> 39*8334SJose.Borrego@Sun.COM 40*8334SJose.Borrego@Sun.COM int spoolss_s_OpenPrinter(void *, ndr_xa_t *); 41*8334SJose.Borrego@Sun.COM int spoolss_s_stub(void *, ndr_xa_t *); 42*8334SJose.Borrego@Sun.COM 43*8334SJose.Borrego@Sun.COM static ndr_stub_table_t spoolss_stub_table[] = { 44*8334SJose.Borrego@Sun.COM { spoolss_s_OpenPrinter, SPOOLSS_OPNUM_OpenPrinter }, 45*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_GetJob }, 46*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrinter }, 47*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_GetPrinterDriver }, 48*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrinterDriver }, 49*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddPrintProcessor }, 50*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_GetPrintProcessorDirectory }, 51*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AbortPrinter }, 52*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ReadPrinter }, 53*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_WaitForPrinterChange }, 54*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddForm }, 55*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeleteForm }, 56*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_GetForm }, 57*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_SetForm }, 58*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_EnumMonitors }, 59*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddPort }, 60*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ConfigurePort }, 61*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePort }, 62*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_CreatePrinterIc }, 63*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_PlayDescriptionPrinterIc }, 64*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrinterIc }, 65*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddPrinterConnection }, 66*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrinterConnection }, 67*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_PrinterMessageBox }, 68*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddMonitor }, 69*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeleteMonitor }, 70*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrintProcessor }, 71*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddPrintProvider }, 72*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_DeletePrintProvider }, 73*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ResetPrinter }, 74*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_FindFirstChangeNotify }, 75*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_FindNextChangeNotify }, 76*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_RouterFindFirstNotify }, 77*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ReplyOpenPrinter }, 78*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_RouterReplyPrinter }, 79*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ReplyClosePrinter }, 80*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_AddPortEx }, 81*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_RemoteFindFirstChangeNotify }, 82*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_SpoolerInitialize }, 83*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_ResetPrinterEx }, 84*8334SJose.Borrego@Sun.COM { spoolss_s_stub, SPOOLSS_OPNUM_RouterRefreshChangeNotify }, 85*8334SJose.Borrego@Sun.COM { spoolss_s_OpenPrinter, SPOOLSS_OPNUM_OpenPrinter2 }, 86*8334SJose.Borrego@Sun.COM {0} 87*8334SJose.Borrego@Sun.COM }; 88*8334SJose.Borrego@Sun.COM 89*8334SJose.Borrego@Sun.COM static ndr_service_t spoolss_service = { 90*8334SJose.Borrego@Sun.COM "SPOOLSS", /* name */ 91*8334SJose.Borrego@Sun.COM "Print Spool Service", /* desc */ 92*8334SJose.Borrego@Sun.COM "\\spoolss", /* endpoint */ 93*8334SJose.Borrego@Sun.COM PIPE_SPOOLSS, /* sec_addr_port */ 94*8334SJose.Borrego@Sun.COM "12345678-1234-abcd-ef000123456789ab", 1, /* abstract */ 95*8334SJose.Borrego@Sun.COM NDR_TRANSFER_SYNTAX_UUID, 2, /* transfer */ 96*8334SJose.Borrego@Sun.COM 0, /* no bind_instance_size */ 97*8334SJose.Borrego@Sun.COM 0, /* no bind_req() */ 98*8334SJose.Borrego@Sun.COM 0, /* no unbind_and_close() */ 99*8334SJose.Borrego@Sun.COM 0, /* use generic_call_stub() */ 100*8334SJose.Borrego@Sun.COM &TYPEINFO(spoolss_interface), /* interface ti */ 101*8334SJose.Borrego@Sun.COM spoolss_stub_table /* stub_table */ 102*8334SJose.Borrego@Sun.COM }; 103*8334SJose.Borrego@Sun.COM 104*8334SJose.Borrego@Sun.COM void 105*8334SJose.Borrego@Sun.COM spoolss_initialize(void) 106*8334SJose.Borrego@Sun.COM { 107*8334SJose.Borrego@Sun.COM (void) ndr_svc_register(&spoolss_service); 108*8334SJose.Borrego@Sun.COM } 109*8334SJose.Borrego@Sun.COM 110*8334SJose.Borrego@Sun.COM int 111*8334SJose.Borrego@Sun.COM spoolss_s_OpenPrinter(void *arg, ndr_xa_t *mxa) 112*8334SJose.Borrego@Sun.COM { 113*8334SJose.Borrego@Sun.COM struct spoolss_OpenPrinter *param = arg; 114*8334SJose.Borrego@Sun.COM 115*8334SJose.Borrego@Sun.COM bzero(param, sizeof (struct spoolss_OpenPrinter)); 116*8334SJose.Borrego@Sun.COM 117*8334SJose.Borrego@Sun.COM if (mxa == NULL) 118*8334SJose.Borrego@Sun.COM param->status = NT_SC_ERROR(NT_STATUS_INVALID_PARAMETER); 119*8334SJose.Borrego@Sun.COM else 120*8334SJose.Borrego@Sun.COM param->status = NT_SC_ERROR(NT_STATUS_ACCESS_DENIED); 121*8334SJose.Borrego@Sun.COM 122*8334SJose.Borrego@Sun.COM return (NDR_DRC_OK); 123*8334SJose.Borrego@Sun.COM } 124*8334SJose.Borrego@Sun.COM 125*8334SJose.Borrego@Sun.COM /*ARGSUSED*/ 126*8334SJose.Borrego@Sun.COM int 127*8334SJose.Borrego@Sun.COM spoolss_s_stub(void *arg, ndr_xa_t *mxa) 128*8334SJose.Borrego@Sun.COM { 129*8334SJose.Borrego@Sun.COM return (NDR_DRC_FAULT_PARAM_0_UNIMPLEMENTED); 130*8334SJose.Borrego@Sun.COM } 131