1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 27 /* All Rights Reserved */ 28 29 30 #pragma ident "%Z%%M% %I% %E% SMI" 31 32 typedef struct alert_node ALERT; 33 typedef struct cstat_node CSTATUS; 34 typedef struct exec_node EXEC; 35 typedef struct form_node _FORM; 36 typedef struct fstat_node FSTATUS; 37 typedef struct pfstat_node PFSTATUS; 38 typedef struct pstat_node PSTATUS; 39 typedef struct pwstat_node PWSTATUS; 40 typedef struct rstat_node RSTATUS; 41 42 struct alert_node 43 { 44 short active; /* Non-zero if triggered */ 45 EXEC *exec; /* Index into EXEC table */ 46 char *msgfile; 47 }; 48 49 struct cstat_node 50 { 51 short status; 52 char *rej_reason; 53 time_t rej_date; 54 CLASS *class; 55 }; 56 57 struct exec_node 58 { 59 int pid; /* process-id of exec */ 60 int status; /* low order bits from wait */ 61 long key; /* private key for security */ 62 short Errno; /* copy of child's errno */ 63 short type; /* type of exec, EX_... */ 64 ushort flags; /* flags, EXF_... */ 65 MESG *md; 66 union ex 67 { 68 RSTATUS *request; 69 FSTATUS *form; 70 PWSTATUS *pwheel; 71 PSTATUS *printer; 72 } ex; 73 }; 74 75 #define EX_INTERF 1 /* exec interface for ex.printer */ 76 #define EX_SLOWF 2 /* exec slow filter for ex.request */ 77 #define EX_ALERT 3 /* exec alert for ex.printer */ 78 #define EX_FALERT 4 /* exec alert for ex.form */ 79 #define EX_PALERT 5 /* exec alert for ex.pwheel */ 80 #define EX_NOTIFY 6 /* exec notification for ex.request */ 81 #define EX_FAULT_MESSAGE 7 /* exec fault message*/ 82 #define EX_FORM_MESSAGE 8 /* form fault message*/ 83 84 #define EXF_RESTART 0x0001 /* restart the exec */ 85 #define EXF_KILLED 0x0002 /* terminate() has killed the exec */ 86 #define EXF_GONE 0x0004 /* child has disappeared */ 87 88 /* 89 ** Possible values for FLT.type 90 */ 91 #define FLT_FILES 1 /* remove alloc'd files */ 92 #define FLT_CHANGE 2 /* clear RS_CHANGING for .r1 */ 93 94 struct fstat_node 95 { 96 _FORM *form; 97 ALERT *alert; 98 short requests; /* Number of events thus far */ 99 short requests_last; /* # when alert last sent */ 100 short trigger; /* Trigger when this value */ 101 short mounted; /* # times currently mounted */ 102 char **users_allowed; 103 char **users_denied; 104 char *cpi; 105 char *lpi; 106 char *plen; 107 char *pwid; 108 }; 109 110 struct pfstat_node 111 { 112 FSTATUS *form; 113 short isAvailable; 114 }; 115 116 struct pstat_node 117 { 118 short status; /* Current Status of printer */ 119 RSTATUS *request; 120 PRINTER *printer; 121 ALERT *alert; 122 EXEC *exec; 123 PFSTATUS *forms; 124 char *pwheel_name; 125 PWSTATUS *pwheel; 126 char *dis_reason; 127 char *rej_reason; 128 char **users_allowed; 129 char **users_denied; 130 char **forms_allowed; 131 char **forms_denied; 132 char *cpi; 133 char *lpi; 134 char *plen; 135 char *pwid; 136 time_t dis_date; 137 time_t rej_date; 138 short last_dial_rc; /* last exit from dial() */ 139 short nretry; /* number of dial attempts */ 140 short nrequests; /* TEMP ONLY! (used variously) */ 141 char *fault_reason; 142 EXEC *fault_exec; 143 short numForms; 144 char **paper_allowed; 145 }; 146 147 struct pwstat_node 148 { 149 PWHEEL *pwheel; 150 ALERT *alert; 151 short requests; 152 short requests_last; /* # when alert last sent */ 153 short trigger; 154 short mounted; 155 }; 156 157 #define send mputm 158 159 struct rstat_node 160 { 161 long status; 162 MESG *md; 163 164 char *req_file; 165 char *slow; 166 char *fast; 167 short copies; /* # copies interface is to make */ 168 short reason; /* reason for failing _validate() */ 169 170 SECURE *secure; 171 REQUEST *request; 172 PSTATUS *printer; 173 FSTATUS *form; 174 char *pwheel_name; 175 PWSTATUS *pwheel; 176 EXEC *exec; /* Pointer to running filter or notify */ 177 178 char *printer_type; 179 char *output_type; 180 char *cpi; 181 char *lpi; 182 char *plen; 183 char *pwid; 184 185 RSTATUS *next; 186 RSTATUS *prev; 187 short msgType; /* for getting status */ 188 short trayNum; /* for mounting trays remotely */ 189 char *formName; /* for mounting forms remotely */ 190 }; 191 192 # define RSS_PWMAND 0x00000008 /* pwheel must be mounted */ 193 # define RSS_SEND_FAULT_MESSAGE 0x00000040 /* need to send message*/ 194 # define RSS_SEND_FORM_MESSAGE 0x00000080 /* need to send form message*/ 195 196 struct form_node 197 { 198 SCALED plen; 199 SCALED pwid; 200 SCALED lpi; 201 SCALED cpi; 202 int np; 203 char *chset; 204 short mandatory; 205 char *rcolor; 206 char *comment; 207 char *conttype; 208 char *name; 209 FALERT alert; 210 char *paper; 211 short isDefault; 212 }; 213