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