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 1676 jpk * Common Development and Distribution License (the "License"). 6 1676 jpk * 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 1676 jpk * 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" /* SVr4.0 1.4.1.2 */ 31 0 stevel 32 0 stevel # include <time.h> 33 0 stevel 34 0 stevel # include "lpsched.h" 35 0 stevel 36 0 stevel void s_accept_dest ( char * , MESG * ); 37 0 stevel void s_alloc_files ( char * , MESG * ); 38 0 stevel void s_cancel ( char * , MESG * ); 39 0 stevel void s_cancel_request ( char * , MESG * ); 40 0 stevel void s_complete_job ( char * , MESG * ); 41 0 stevel void s_disable_dest ( char * , MESG * ); 42 0 stevel void s_enable_dest ( char * , MESG * ); 43 0 stevel void s_end_change_request ( char * , MESG * ); 44 0 stevel void s_inquire_class ( char * , MESG * ); 45 0 stevel void s_inquire_printer_status ( char * , MESG * ); 46 0 stevel void s_inquire_request_rank ( char * , MESG * ); 47 0 stevel void s_load_class ( char * , MESG * ); 48 0 stevel void s_load_filter_table ( char * , MESG * ); 49 0 stevel void s_load_form ( char * , MESG * ); 50 0 stevel void s_load_printer ( char * , MESG * ); 51 0 stevel void s_load_printwheel ( char * , MESG * ); 52 0 stevel void s_load_system ( char * , MESG * ); 53 0 stevel void s_load_user_file ( char * , MESG * ); 54 0 stevel void s_mount ( char * , MESG * ); 55 0 stevel void s_move_dest ( char * , MESG * ); 56 0 stevel void s_move_request ( char * , MESG * ); 57 0 stevel void s_print_request ( char * , MESG * ); 58 0 stevel void s_quiet_alert ( char * , MESG * ); 59 0 stevel void s_reject_dest ( char * , MESG * ); 60 0 stevel void s_send_fault ( char * , MESG * ); 61 0 stevel void s_clear_fault ( char * , MESG * ); 62 0 stevel void s_shutdown ( char * , MESG * ); 63 0 stevel void s_start_change_request ( char * , MESG * ); 64 0 stevel void s_unload_class ( char * , MESG * ); 65 0 stevel void s_unload_filter_table ( char * , MESG * ); 66 0 stevel void s_unload_form ( char * , MESG * ); 67 0 stevel void s_unload_printer ( char * , MESG * ); 68 0 stevel void s_unload_printwheel ( char * , MESG * ); 69 0 stevel void s_unload_system ( char * , MESG * ); 70 0 stevel void s_unload_user_file ( char * , MESG * ); 71 0 stevel void s_unmount ( char * , MESG * ); 72 0 stevel void r_new_child ( char * , MESG * ); 73 0 stevel void r_send_job ( char * , MESG * ); 74 0 stevel void s_job_completed ( char * , MESG * ); 75 0 stevel void s_child_done ( char * , MESG * ); 76 0 stevel void s_get_fault_message ( char * , MESG * ); 77 0 stevel void s_max_trays ( char * , MESG *); 78 0 stevel void s_mount_tray ( char *, MESG * ); 79 0 stevel void s_unmount_tray ( char *, MESG *); 80 0 stevel void s_paper_changed ( char *, MESG *); 81 0 stevel void s_paper_allowed ( char *, MESG *); 82 1676 jpk void s_pass_peer_connection ( char * , MESG * ); 83 0 stevel 84 0 stevel /** 85 0 stevel ** dispatch_table[] 86 0 stevel **/ 87 0 stevel 88 0 stevel /* 89 0 stevel * The dispatch table is used to decide if we should handle 90 0 stevel * a message and which function should be used to handle it. 91 0 stevel * 92 0 stevel * D_ADMIN is set for messages that should be handled 93 0 stevel * only if it came from an administrator. These entries should 94 0 stevel * have a corresponding entry for the R_... message case, that 95 0 stevel * provides a routine for sending back a MNOPERM message to those 96 0 stevel * that aren't administrators. This is needed because the response 97 0 stevel * message varies in size with the message type. 98 0 stevel */ 99 0 stevel 100 0 stevel typedef struct DISPATCH { 101 0 stevel void (*fncp)(); 102 0 stevel ushort flags; 103 0 stevel } DISPATCH; 104 0 stevel 105 0 stevel #define D_ADMIN 0x01 /* Only "lp" or "root" can use msg. */ 106 0 stevel #define D_BADMSG 0x02 /* We should never get this message */ 107 0 stevel #define D_SYSTEM 0x04 /* Only siblings may use this message */ 108