| 1 | /* 
 | 
|---|
| 2 |    Unix SMB/CIFS implementation.
 | 
|---|
| 3 | 
 | 
|---|
| 4 |    NTPTR structures and defines
 | 
|---|
| 5 | 
 | 
|---|
| 6 |    Copyright (C) Stefan (metze) Metzmacher 2005
 | 
|---|
| 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 | /* modules can use the following to determine if the interface has changed */
 | 
|---|
| 23 | #define NTPTR_INTERFACE_VERSION 0
 | 
|---|
| 24 | 
 | 
|---|
| 25 | struct ntptr_context;
 | 
|---|
| 26 | 
 | 
|---|
| 27 | enum ntptr_HandleType {
 | 
|---|
| 28 |         NTPTR_HANDLE_SERVER,
 | 
|---|
| 29 |         NTPTR_HANDLE_PRINTER,
 | 
|---|
| 30 |         NTPTR_HANDLE_PORT,
 | 
|---|
| 31 |         NTPTR_HANDLE_MONITOR
 | 
|---|
| 32 | };
 | 
|---|
| 33 | 
 | 
|---|
| 34 | struct ntptr_GenericHandle {
 | 
|---|
| 35 |         enum ntptr_HandleType type;
 | 
|---|
| 36 |         struct ntptr_context *ntptr;
 | 
|---|
| 37 |         const char *object_name;
 | 
|---|
| 38 |         uint32_t access_mask;
 | 
|---|
| 39 |         void *private_data;
 | 
|---|
| 40 | };
 | 
|---|
| 41 | 
 | 
|---|
| 42 | struct spoolss_OpenPrinterEx;
 | 
|---|
| 43 | struct spoolss_EnumPrinterData;
 | 
|---|
| 44 | struct spoolss_DeletePrinterData;
 | 
|---|
| 45 | struct spoolss_AddForm;
 | 
|---|
| 46 | struct spoolss_GetForm;
 | 
|---|
| 47 | struct spoolss_SetForm;
 | 
|---|
| 48 | struct spoolss_DeleteForm;
 | 
|---|
| 49 | struct spoolss_AddPrinterDriver;
 | 
|---|
| 50 | struct spoolss_DeletePrinterDriver;
 | 
|---|
| 51 | struct spoolss_GetPrinterDriverDirectory;
 | 
|---|
| 52 | struct spoolss_AddPrinter;
 | 
|---|
| 53 | struct spoolss_GetPrinter;
 | 
|---|
| 54 | struct spoolss_SetPrinter;
 | 
|---|
| 55 | struct spoolss_DeletePrinter;
 | 
|---|
| 56 | struct spoolss_GetPrinterDriver;
 | 
|---|
| 57 | struct spoolss_AddJob;
 | 
|---|
| 58 | struct spoolss_EnumJobs;
 | 
|---|
| 59 | struct spoolss_SetJob;
 | 
|---|
| 60 | struct spoolss_GetJob;
 | 
|---|
| 61 | struct spoolss_ScheduleJob;
 | 
|---|
| 62 | struct spoolss_ReadPrinter;
 | 
|---|
| 63 | struct spoolss_WritePrinter;
 | 
|---|
| 64 | struct spoolss_StartDocPrinter;
 | 
|---|
| 65 | struct spoolss_EndDocPrinter;
 | 
|---|
| 66 | struct spoolss_StartPagePrinter;
 | 
|---|
| 67 | struct spoolss_EndPagePrinter;
 | 
|---|
| 68 | struct spoolss_GetPrinterData;
 | 
|---|
| 69 | struct spoolss_SetPrinterData;
 | 
|---|
| 70 | struct spoolss_EnumPrinterDrivers;
 | 
|---|
| 71 | struct spoolss_EnumMonitors;
 | 
|---|
| 72 | struct spoolss_EnumPrinters;
 | 
|---|
| 73 | struct spoolss_EnumForms;
 | 
|---|
| 74 | struct spoolss_EnumPorts;
 | 
|---|
| 75 | struct spoolss_EnumPrintProcessors;
 | 
|---|
| 76 | struct spoolss_XcvData;
 | 
|---|
| 77 | struct spoolss_GetPrintProcessorDirectory;
 | 
|---|
| 78 | 
 | 
|---|
| 79 | /* the ntptr operations structure - contains function pointers to 
 | 
|---|
| 80 |    the backend implementations of each operation */
 | 
|---|
| 81 | struct ntptr_ops {
 | 
|---|
| 82 |         const char *name;
 | 
|---|
| 83 | 
 | 
|---|
| 84 |         /* initial setup */
 | 
|---|
| 85 |         NTSTATUS (*init_context)(struct ntptr_context *ntptr);
 | 
|---|
| 86 | 
 | 
|---|
| 87 |         /* PrintServer functions */
 | 
|---|
| 88 |         WERROR (*OpenPrintServer)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 89 |                                   struct spoolss_OpenPrinterEx *r,
 | 
|---|
| 90 |                                   const char *printer_name,
 | 
|---|
| 91 |                                   struct ntptr_GenericHandle **server);
 | 
|---|
| 92 |         WERROR (*XcvDataPrintServer)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 93 |                                      struct spoolss_XcvData *r);
 | 
|---|
| 94 | 
 | 
|---|
| 95 |         /* PrintServer PrinterData functions */
 | 
|---|
| 96 |         WERROR (*EnumPrintServerData)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 97 |                                      struct spoolss_EnumPrinterData *r);
 | 
|---|
| 98 |         WERROR (*GetPrintServerData)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 99 |                                      struct spoolss_GetPrinterData *r);
 | 
|---|
| 100 |         WERROR (*SetPrintServerData)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 101 |                                      struct spoolss_SetPrinterData *r);
 | 
|---|
| 102 |         WERROR (*DeletePrintServerData)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 103 |                                         struct spoolss_DeletePrinterData *r);
 | 
|---|
| 104 | 
 | 
|---|
| 105 |         /* PrintServer Form functions */
 | 
|---|
| 106 |         WERROR (*EnumPrintServerForms)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 107 |                                        struct spoolss_EnumForms *r);
 | 
|---|
| 108 |         WERROR (*AddPrintServerForm)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 109 |                                      struct spoolss_AddForm *r);
 | 
|---|
| 110 |         WERROR (*SetPrintServerForm)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 111 |                                      struct spoolss_SetForm *r);
 | 
|---|
| 112 |         WERROR (*DeletePrintServerForm)(struct ntptr_GenericHandle *server, TALLOC_CTX *mem_ctx,
 | 
|---|
| 113 |                                         struct spoolss_DeleteForm *r);
 | 
|---|
| 114 | 
 | 
|---|
| 115 |         /* PrintServer Driver functions */
 | 
|---|
| 116 |         WERROR (*EnumPrinterDrivers)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 117 |                                      struct spoolss_EnumPrinterDrivers *r);
 | 
|---|
| 118 |         WERROR (*AddPrinterDriver)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 119 |                                    struct spoolss_AddPrinterDriver *r);
 | 
|---|
| 120 |         WERROR (*DeletePrinterDriver)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 121 |                                       struct spoolss_DeletePrinterDriver *r);
 | 
|---|
| 122 |         WERROR (*GetPrinterDriverDirectory)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 123 |                                             struct spoolss_GetPrinterDriverDirectory *r);
 | 
|---|
| 124 | 
 | 
|---|
| 125 |         /* Port functions */
 | 
|---|
| 126 |         WERROR (*EnumPorts)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 127 |                             struct spoolss_EnumPorts *r);
 | 
|---|
| 128 |         WERROR (*OpenPort)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 129 |                            struct spoolss_OpenPrinterEx *r,
 | 
|---|
| 130 |                            const char *port_name,
 | 
|---|
| 131 |                            struct ntptr_GenericHandle **port);
 | 
|---|
| 132 |         WERROR (*XcvDataPort)(struct ntptr_GenericHandle *port, TALLOC_CTX *mem_ctx,
 | 
|---|
| 133 |                               struct spoolss_XcvData *r);
 | 
|---|
| 134 |         
 | 
|---|
| 135 |         /* Monitor functions */
 | 
|---|
| 136 |         WERROR (*EnumMonitors)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 137 |                                struct spoolss_EnumMonitors *r);
 | 
|---|
| 138 |         WERROR (*OpenMonitor)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 139 |                               struct spoolss_OpenPrinterEx *r,
 | 
|---|
| 140 |                               const char *monitor_name,
 | 
|---|
| 141 |                               struct ntptr_GenericHandle **monitor);
 | 
|---|
| 142 |         WERROR (*XcvDataMonitor)(struct ntptr_GenericHandle *monitor, TALLOC_CTX *mem_ctx,
 | 
|---|
| 143 |                                  struct spoolss_XcvData *r);
 | 
|---|
| 144 | 
 | 
|---|
| 145 |         /* PrintProcessor functions */
 | 
|---|
| 146 |         WERROR (*EnumPrintProcessors)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 147 |                                       struct spoolss_EnumPrintProcessors *r);
 | 
|---|
| 148 |         WERROR (*GetPrintProcessorDirectory)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 149 |                                              struct spoolss_GetPrintProcessorDirectory *r);
 | 
|---|
| 150 | 
 | 
|---|
| 151 |         /* Printer functions */
 | 
|---|
| 152 |         WERROR (*EnumPrinters)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 153 |                                struct spoolss_EnumPrinters *r);
 | 
|---|
| 154 |         WERROR (*OpenPrinter)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 155 |                               struct spoolss_OpenPrinterEx *r,
 | 
|---|
| 156 |                               const char *printer_name,
 | 
|---|
| 157 |                               struct ntptr_GenericHandle **printer);
 | 
|---|
| 158 |         WERROR (*AddPrinter)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 159 |                              struct spoolss_AddPrinter *r,
 | 
|---|
| 160 |                              struct ntptr_GenericHandle **printer);
 | 
|---|
| 161 |         WERROR (*GetPrinter)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 162 |                              struct spoolss_GetPrinter *r);
 | 
|---|
| 163 |         WERROR (*SetPrinter)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 164 |                              struct spoolss_SetPrinter *r);
 | 
|---|
| 165 |         WERROR (*DeletePrinter)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 166 |                                 struct spoolss_DeletePrinter *r);
 | 
|---|
| 167 |         WERROR (*XcvDataPrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 168 |                                  struct spoolss_XcvData *r);
 | 
|---|
| 169 | 
 | 
|---|
| 170 |         /* Printer Driver functions */
 | 
|---|
| 171 |         WERROR (*GetPrinterDriver)(struct ntptr_context *ntptr, TALLOC_CTX *mem_ctx,
 | 
|---|
| 172 |                                    struct spoolss_GetPrinterDriver *r);
 | 
|---|
| 173 | 
 | 
|---|
| 174 |         /* Printer PrinterData functions */
 | 
|---|
| 175 |         WERROR (*EnumPrinterData)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 176 |                                   struct spoolss_EnumPrinterData *r);
 | 
|---|
| 177 |         WERROR (*GetPrinterData)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 178 |                                  struct spoolss_GetPrinterData *r);
 | 
|---|
| 179 |         WERROR (*SetPrinterData)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 180 |                                  struct spoolss_SetPrinterData *r);
 | 
|---|
| 181 |         WERROR (*DeletePrinterData)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 182 |                                     struct spoolss_DeletePrinterData *r);
 | 
|---|
| 183 | 
 | 
|---|
| 184 |         /* Printer Form functions */
 | 
|---|
| 185 |         WERROR (*EnumPrinterForms)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 186 |                                    struct spoolss_EnumForms *r);
 | 
|---|
| 187 |         WERROR (*AddPrinterForm)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 188 |                                  struct spoolss_AddForm *r);
 | 
|---|
| 189 |         WERROR (*GetPrinterForm)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 190 |                                  struct spoolss_GetForm *r);
 | 
|---|
| 191 |         WERROR (*SetPrinterForm)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 192 |                                  struct spoolss_SetForm *r);
 | 
|---|
| 193 |         WERROR (*DeletePrinterForm)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 194 |                                     struct spoolss_DeleteForm *r);
 | 
|---|
| 195 | 
 | 
|---|
| 196 |         /* Printer Job functions */
 | 
|---|
| 197 |         WERROR (*EnumJobs)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 198 |                            struct spoolss_EnumJobs *r);
 | 
|---|
| 199 |         WERROR (*AddJob)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 200 |                          struct spoolss_AddJob *r);
 | 
|---|
| 201 |         WERROR (*ScheduleJob)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 202 |                               struct spoolss_ScheduleJob *r);
 | 
|---|
| 203 |         WERROR (*GetJob)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 204 |                          struct spoolss_GetJob *r);
 | 
|---|
| 205 |         WERROR (*SetJob)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 206 |                          struct spoolss_SetJob *r);
 | 
|---|
| 207 | 
 | 
|---|
| 208 |         /* Printer Printing functions */
 | 
|---|
| 209 |         WERROR (*StartDocPrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 210 |                                   struct spoolss_StartDocPrinter *r);
 | 
|---|
| 211 |         WERROR (*EndDocPrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 212 |                                 struct spoolss_EndDocPrinter *r);
 | 
|---|
| 213 |         WERROR (*StartPagePrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 214 |                                    struct spoolss_StartPagePrinter *r);
 | 
|---|
| 215 |         WERROR (*EndPagePrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 216 |                                  struct spoolss_EndPagePrinter *r);
 | 
|---|
| 217 |         WERROR (*WritePrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 218 |                                struct spoolss_WritePrinter *r);
 | 
|---|
| 219 |         WERROR (*ReadPrinter)(struct ntptr_GenericHandle *printer, TALLOC_CTX *mem_ctx,
 | 
|---|
| 220 |                               struct spoolss_ReadPrinter *r);
 | 
|---|
| 221 | };
 | 
|---|
| 222 | 
 | 
|---|
| 223 | struct ntptr_context {
 | 
|---|
| 224 |         const struct ntptr_ops *ops;
 | 
|---|
| 225 |         void *private_data;
 | 
|---|
| 226 |         struct tevent_context *ev_ctx;
 | 
|---|
| 227 |         struct loadparm_context *lp_ctx;
 | 
|---|
| 228 | };
 | 
|---|
| 229 | 
 | 
|---|
| 230 | /* this structure is used by backends to determine the size of some critical types */
 | 
|---|
| 231 | struct ntptr_critical_sizes {
 | 
|---|
| 232 |         int interface_version;
 | 
|---|
| 233 |         int sizeof_ntptr_critical_sizes;
 | 
|---|
| 234 |         int sizeof_ntptr_context;
 | 
|---|
| 235 |         int sizeof_ntptr_ops;
 | 
|---|
| 236 | };
 | 
|---|
| 237 | 
 | 
|---|
| 238 | struct loadparm_context;
 | 
|---|
| 239 | 
 | 
|---|
| 240 | #include "ntptr/ntptr_proto.h"
 | 
|---|