xref: /illumos-gate/usr/src/cmd/lp/cmd/lpsched/nodes.h (revision 4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3)
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