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
30typedef struct alert_node	ALERT;
31typedef struct cstat_node	CLSTATUS;
32typedef struct exec_node	EXEC;
33typedef struct form_node	_FORM;
34typedef struct fstat_node	FSTATUS;
35typedef struct pfstat_node	PFSTATUS;
36typedef struct pstat_node	PSTATUS;
37typedef struct pwstat_node	PWSTATUS;
38typedef struct rstat_node	RSTATUS;
39
40struct alert_node
41{
42    short	active;			/* Non-zero if triggered     */
43    EXEC	*exec;			/* Index into EXEC table     */
44    char	*msgfile;
45};
46
47struct cstat_node
48{
49    short	status;
50    char	*rej_reason;
51    time_t	rej_date;
52    CLASS	*class;
53};
54
55struct exec_node
56{
57    int		pid;			/* process-id of exec		*/
58    int		status;			/* low order bits from wait	*/
59    long	key;			/* private key for security	*/
60    short	Errno;			/* copy of child's errno	*/
61    short	type;			/* type of exec, EX_...		*/
62    ushort	flags;			/* flags, EXF_...		*/
63    MESG	*md;
64    union ex
65    {
66	RSTATUS		*request;
67	FSTATUS		*form;
68	PWSTATUS	*pwheel;
69	PSTATUS		*printer;
70    } ex;
71};
72
73#define	EX_INTERF	1	/* exec interface for ex.printer	*/
74#define	EX_SLOWF	2	/* exec slow filter for ex.request	*/
75#define	EX_ALERT	3	/* exec alert for ex.printer		*/
76#define	EX_FALERT	4	/* exec alert for ex.form		*/
77#define	EX_PALERT	5	/* exec alert for ex.pwheel		*/
78#define	EX_NOTIFY	6	/* exec notification for ex.request	*/
79#define	EX_FAULT_MESSAGE 7	/* exec fault message*/
80#define	EX_FORM_MESSAGE	8	/* form fault message*/
81
82#define	EXF_RESTART	0x0001	/* restart the exec			*/
83#define	EXF_KILLED	0x0002	/* terminate() has killed the exec	*/
84#define	EXF_GONE	0x0004	/* child has disappeared		*/
85
86/*
87**	Possible values for FLT.type
88*/
89#define        FLT_FILES       1	/* remove alloc'd files		*/
90#define        FLT_CHANGE      2	/* clear RS_CHANGING for .r1	*/
91
92struct fstat_node
93{
94    _FORM	*form;
95    ALERT	*alert;
96    short	requests;		/* Number of events thus far */
97    short	requests_last;		/* # when alert last sent */
98    short	trigger;		/* Trigger when this value   */
99    short	mounted;		/* # times currently mounted */
100    char	**users_allowed;
101    char	**users_denied;
102    char	*cpi;
103    char	*lpi;
104    char	*plen;
105    char	*pwid;
106};
107
108struct pfstat_node
109{
110	FSTATUS	*form;
111	short isAvailable;
112};
113
114struct pstat_node
115{
116    short	status;			/* Current Status of printer */
117    RSTATUS	*request;
118    PRINTER	*printer;
119    ALERT	*alert;
120    EXEC	*exec;
121    PFSTATUS	*forms;
122    char	*pwheel_name;
123    PWSTATUS	*pwheel;
124    char	*dis_reason;
125    char	*rej_reason;
126    char	**users_allowed;
127    char	**users_denied;
128    char	**forms_allowed;
129    char	**forms_denied;
130    char	*cpi;
131    char	*lpi;
132    char	*plen;
133    char	*pwid;
134    time_t	dis_date;
135    time_t	rej_date;
136    short	last_dial_rc;		/* last exit from dial() */
137    short	nretry;			/* number of dial attempts */
138    short	nrequests;		/* TEMP ONLY! (used variously) */
139    char	*fault_reason;
140    EXEC	*fault_exec;
141    short	numForms;
142    char	**paper_allowed;
143};
144
145struct pwstat_node
146{
147    PWHEEL	*pwheel;
148    ALERT	*alert;
149    short	requests;
150    short	requests_last;		/* # when alert last sent */
151    short	trigger;
152    short	mounted;
153};
154
155#define send		mputm
156
157struct rstat_node
158{
159    long	status;
160    MESG	*md;
161
162    char	*req_file;
163    char	*slow;
164    char	*fast;
165    short	copies;		/* # copies interface is to make */
166    short	reason;		/* reason for failing _validate() */
167
168    SECURE	*secure;
169    REQUEST	*request;
170    PSTATUS	*printer;
171    FSTATUS	*form;
172    char	*pwheel_name;
173    PWSTATUS	*pwheel;
174    EXEC	*exec;		/* Pointer to running filter or notify */
175
176    char	*printer_type;
177    char	*output_type;
178    char	*cpi;
179    char	*lpi;
180    char	*plen;
181    char	*pwid;
182
183    RSTATUS	*next;
184    RSTATUS	*prev;
185    short	msgType; /* for getting status */
186    short	trayNum; /* for mounting trays remotely */
187    char	*formName; /* for mounting forms remotely */
188};
189
190# define	RSS_PWMAND	0x00000008 /* pwheel must be mounted */
191# define	RSS_SEND_FAULT_MESSAGE	0x00000040 /* need to send message*/
192# define	RSS_SEND_FORM_MESSAGE	0x00000080 /* need to send form message*/
193
194struct form_node
195{
196    SCALED	plen;
197    SCALED	pwid;
198    SCALED	lpi;
199    SCALED	cpi;
200    int	np;
201    char	*chset;
202    short	mandatory;
203    char	*rcolor;
204    char	*comment;
205    char	*conttype;
206    char	*name;
207    FALERT	alert;
208    char	*paper;
209    short	isDefault;
210};
211