/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
typedef struct alert_node ALERT;
typedef struct cstat_node CLSTATUS;
typedef struct exec_node EXEC;
typedef struct form_node _FORM;
typedef struct fstat_node FSTATUS;
typedef struct pfstat_node PFSTATUS;
typedef struct pstat_node PSTATUS;
typedef struct pwstat_node PWSTATUS;
typedef struct rstat_node RSTATUS;
struct alert_node
{
short active; /* Non-zero if triggered */
EXEC *exec; /* Index into EXEC table */
char *msgfile;
};
struct cstat_node
{
short status;
char *rej_reason;
time_t rej_date;
CLASS *class;
};
struct exec_node
{
int pid; /* process-id of exec */
int status; /* low order bits from wait */
long key; /* private key for security */
short Errno; /* copy of child's errno */
short type; /* type of exec, EX_... */
ushort flags; /* flags, EXF_... */
MESG *md;
union ex
{
RSTATUS *request;
FSTATUS *form;
PWSTATUS *pwheel;
PSTATUS *printer;
} ex;
};
#define EX_INTERF 1 /* exec interface for ex.printer */
#define EX_SLOWF 2 /* exec slow filter for ex.request */
#define EX_ALERT 3 /* exec alert for ex.printer */
#define EX_FALERT 4 /* exec alert for ex.form */
#define EX_PALERT 5 /* exec alert for ex.pwheel */
#define EX_NOTIFY 6 /* exec notification for ex.request */
#define EX_FAULT_MESSAGE 7 /* exec fault message*/
#define EX_FORM_MESSAGE 8 /* form fault message*/
#define EXF_RESTART 0x0001 /* restart the exec */
#define EXF_KILLED 0x0002 /* terminate() has killed the exec */
#define EXF_GONE 0x0004 /* child has disappeared */
/*
** Possible values for FLT.type
*/
#define FLT_FILES 1 /* remove alloc'd files */
#define FLT_CHANGE 2 /* clear RS_CHANGING for .r1 */
struct fstat_node
{
_FORM *form;
ALERT *alert;
short requests; /* Number of events thus far */
short requests_last; /* # when alert last sent */
short trigger; /* Trigger when this value */
short mounted; /* # times currently mounted */
char **users_allowed;
char **users_denied;
char *cpi;
char *lpi;
char *plen;
char *pwid;
};
struct pfstat_node
{
FSTATUS *form;
short isAvailable;
};
struct pstat_node
{
short status; /* Current Status of printer */
RSTATUS *request;
PRINTER *printer;
ALERT *alert;
EXEC *exec;
PFSTATUS *forms;
char *pwheel_name;
PWSTATUS *pwheel;
char *dis_reason;
char *rej_reason;
char **users_allowed;
char **users_denied;
char **forms_allowed;
char **forms_denied;
char *cpi;
char *lpi;
char *plen;
char *pwid;
time_t dis_date;
time_t rej_date;
short last_dial_rc; /* last exit from dial() */
short nretry; /* number of dial attempts */
short nrequests; /* TEMP ONLY! (used variously) */
char *fault_reason;
EXEC *fault_exec;
short numForms;
char **paper_allowed;
};
struct pwstat_node
{
PWHEEL *pwheel;
ALERT *alert;
short requests;
short requests_last; /* # when alert last sent */
short trigger;
short mounted;
};
#define send mputm
struct rstat_node
{
long status;
MESG *md;
char *req_file;
char *slow;
char *fast;
short copies; /* # copies interface is to make */
short reason; /* reason for failing _validate() */
SECURE *secure;
REQUEST *request;
PSTATUS *printer;
FSTATUS *form;
char *pwheel_name;
PWSTATUS *pwheel;
EXEC *exec; /* Pointer to running filter or notify */
char *printer_type;
char *output_type;
char *cpi;
char *lpi;
char *plen;
char *pwid;
RSTATUS *next;
RSTATUS *prev;
short msgType; /* for getting status */
short trayNum; /* for mounting trays remotely */
char *formName; /* for mounting forms remotely */
};
# define RSS_PWMAND 0x00000008 /* pwheel must be mounted */
# define RSS_SEND_FAULT_MESSAGE 0x00000040 /* need to send message*/
# define RSS_SEND_FORM_MESSAGE 0x00000080 /* need to send form message*/
struct form_node
{
SCALED plen;
SCALED pwid;
SCALED lpi;
SCALED cpi;
int np;
char *chset;
short mandatory;
char *rcolor;
char *comment;
char *conttype;
char *name;
FALERT alert;
char *paper;
short isDefault;
};