Blame backend/backend-private.h

Packit 2fc92b
/*
Packit 2fc92b
 * Backend support definitions for CUPS.
Packit 2fc92b
 *
Packit 2fc92b
 * Copyright 2007-2014 by Apple Inc.
Packit 2fc92b
 * Copyright 1997-2007 by Easy Software Products, all rights reserved.
Packit 2fc92b
 *
Packit 2fc92b
 * These coded instructions, statements, and computer programs are the
Packit 2fc92b
 * property of Apple Inc. and are protected by Federal copyright
Packit 2fc92b
 * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
Packit 2fc92b
 * "LICENSE" which should have been included with this file.  If this
Packit 2fc92b
 * file is missing or damaged, see the license at "http://www.cups.org/".
Packit 2fc92b
 *
Packit 2fc92b
 * This file is subject to the Apple OS-Developed Software exception.
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
#ifndef _CUPS_BACKEND_PRIVATE_H_
Packit 2fc92b
#  define _CUPS_BACKEND_PRIVATE_H_
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * Include necessary headers.
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
#  include <cups/cups-private.h>
Packit 2fc92b
#  include <cups/snmp-private.h>
Packit 2fc92b
#  include <cups/backend.h>
Packit 2fc92b
#  include <cups/sidechannel.h>
Packit 2fc92b
#  include <signal.h>
Packit 2fc92b
Packit 2fc92b
#  ifdef __linux
Packit 2fc92b
#    include <sys/ioctl.h>
Packit 2fc92b
#    include <linux/lp.h>
Packit 2fc92b
#    define IOCNR_GET_DEVICE_ID		1
Packit 2fc92b
#    define LPIOC_GET_DEVICE_ID(len)	_IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
Packit 2fc92b
#    include <linux/parport.h>
Packit 2fc92b
#    include <linux/ppdev.h>
Packit 2fc92b
#    include <unistd.h>
Packit 2fc92b
#    include <fcntl.h>
Packit 2fc92b
#  endif /* __linux */
Packit 2fc92b
Packit 2fc92b
#  ifdef __sun
Packit 2fc92b
#    ifdef __sparc
Packit 2fc92b
#      include <sys/ecppio.h>
Packit 2fc92b
#    else
Packit 2fc92b
#      include <sys/ioccom.h>
Packit 2fc92b
#      include <sys/ecppsys.h>
Packit 2fc92b
#    endif /* __sparc */
Packit 2fc92b
#  endif /* __sun */
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * C++ magic...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
#  ifdef __cplusplus
Packit 2fc92b
extern "C" {
Packit 2fc92b
#  endif /* __cplusplus */
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * OID constants...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
/* Host MIB */
Packit 2fc92b
#define CUPS_OID_mib2				1,3,6,1,2,1
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_system				CUPS_OID_mib2,1
Packit 2fc92b
#define CUPS_OID_sysLocation			CUPS_OID_system,6
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_host				CUPS_OID_mib2,25
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_hrSystem			CUPS_OID_host,1
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_hrStorage			CUPS_OID_host,2
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_hrDevice			CUPS_OID_host,3
Packit 2fc92b
#define CUPS_OID_hrDeviceTable			CUPS_OID_hrDevice,2
Packit 2fc92b
#define CUPS_OID_hrDeviceEntry			CUPS_OID_hrDeviceTable,1
Packit 2fc92b
#define CUPS_OID_hrDeviceIndex			CUPS_OID_hrDeviceEntry,1
Packit 2fc92b
#define CUPS_OID_hrDeviceType			CUPS_OID_hrDeviceEntry,2
Packit 2fc92b
#define CUPS_OID_hrDeviceDescr			CUPS_OID_hrDeviceEntry,3
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_hrPrinterTable			CUPS_OID_hrDevice,5
Packit 2fc92b
#define CUPS_OID_hrPrinterEntry			CUPS_OID_hrPrinterTable,1
Packit 2fc92b
#define CUPS_OID_hrPrinterStatus		CUPS_OID_hrPrinterEntry,1
Packit 2fc92b
#define CUPS_OID_hrPrinterDetectedErrorState	CUPS_OID_hrPrinterEntry,2
Packit 2fc92b
Packit 2fc92b
/* Printer MIB */
Packit 2fc92b
#define CUPS_OID_printmib			CUPS_OID_mib2,43
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtGeneral			CUPS_OID_printmib,5
Packit 2fc92b
#define CUPS_OID_prtGeneralTable		CUPS_OID_prtGeneral,1
Packit 2fc92b
#define CUPS_OID_prtGeneralEntry		CUPS_OID_prtGeneralTable,1
Packit 2fc92b
#define CUPS_OID_prtGeneralCurrentLocalization	CUPS_OID_prtGeneralEntry,2
Packit 2fc92b
#define CUPS_OID_prtGeneralPrinterName		CUPS_OID_prtGeneralEntry,16
Packit 2fc92b
#define CUPS_OID_prtGeneralSerialNumber		CUPS_OID_prtGeneralEntry,17
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtCover			CUPS_OID_printmib,6
Packit 2fc92b
#define CUPS_OID_prtCoverTable			CUPS_OID_prtCover,1
Packit 2fc92b
#define CUPS_OID_prtCoverEntry			CUPS_OID_prtCoverTable,1
Packit 2fc92b
#define CUPS_OID_prtCoverDescription		CUPS_OID_prtCoverEntry,2
Packit 2fc92b
#define CUPS_OID_prtCoverStatus			CUPS_OID_prtCoverEntry,3
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtLocalization		CUPS_OID_printmib,7
Packit 2fc92b
#define CUPS_OID_prtLocalizationTable		CUPS_OID_prtLocalization,1
Packit 2fc92b
#define CUPS_OID_prtLocalizationEntry		CUPS_OID_prtLocalizationTable,1
Packit 2fc92b
#define CUPS_OID_prtLocalizationCharacterSet	CUPS_OID_prtLocalizationEntry,4
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtMarker			CUPS_OID_printmib,10
Packit 2fc92b
#define CUPS_OID_prtMarkerTable			CUPS_OID_prtMarker,2
Packit 2fc92b
#define CUPS_OID_prtMarkerEntry			CUPS_OID_prtMarkerTable,1
Packit 2fc92b
#define CUPS_OID_prtMarkerLifeCount		CUPS_OID_prtMarkerEntry,4
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtMarkerSupplies		CUPS_OID_printmib,11
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesTable		CUPS_OID_prtMarkerSupplies,1
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesEntry		CUPS_OID_prtMarkerSuppliesTable,1
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesIndex		CUPS_OID_prtMarkerSuppliesEntry,1
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesMarkerIndex	CUPS_OID_prtMarkerSuppliesEntry,2
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesColorantIndex	CUPS_OID_prtMarkerSuppliesEntry,3
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesClass		CUPS_OID_prtMarkerSuppliesEntry,4
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesType		CUPS_OID_prtMarkerSuppliesEntry,5
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesDescription	CUPS_OID_prtMarkerSuppliesEntry,6
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesSupplyUnit	CUPS_OID_prtMarkerSuppliesEntry,7
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesMaxCapacity	CUPS_OID_prtMarkerSuppliesEntry,8
Packit 2fc92b
#define CUPS_OID_prtMarkerSuppliesLevel		CUPS_OID_prtMarkerSuppliesEntry,9
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtMarkerColorant		CUPS_OID_printmib,12
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantTable		CUPS_OID_prtMarkerColorant,1
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantEntry		CUPS_OID_prtMarkerColorantTable,1
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantIndex		CUPS_OID_prtMarkerColorantEntry,1
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantMarkerIndex	CUPS_OID_prtMarkerColorantEntry,2
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantRole		CUPS_OID_prtMarkerColorantEntry,3
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantValue		CUPS_OID_prtMarkerColorantEntry,4
Packit 2fc92b
#define CUPS_OID_prtMarkerColorantTonality	CUPS_OID_prtMarkerColorantEntry,5
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_prtInterpreter			CUPS_OID_printmib,15
Packit 2fc92b
#define CUPS_OID_prtInterpreterTable		CUPS_OID_prtInterpreter,1
Packit 2fc92b
#define CUPS_OID_prtInterpreterEntry		CUPS_OID_prtInterpreterTable,1
Packit 2fc92b
#define CUPS_OID_prtInterpreterLangFamily	CUPS_OID_prtInterpreterEntry,2
Packit 2fc92b
#define CUPS_OID_prtInterpreterLangLevel	CUPS_OID_prtInterpreterEntry,3
Packit 2fc92b
Packit 2fc92b
/* Printer Port Monitor MIB */
Packit 2fc92b
#define CUPS_OID_enterprises			1,3,6,1,4,1
Packit 2fc92b
#define CUPS_OID_pwg				CUPS_OID_enterprises,2699,1
Packit 2fc92b
#define CUPS_OID_ppmMIB				CUPS_OID_pwg,2
Packit 2fc92b
#define CUPS_OID_ppmMIBObjects			CUPS_OID_ppmMIB,1
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_ppmGeneral			CUPS_OID_ppmMIBObjects,1
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_ppmPrinter			CUPS_OID_ppmMIBObjects,2
Packit 2fc92b
#define CUPS_OID_ppmPrinterTable		CUPS_OID_ppmPrinter,1
Packit 2fc92b
#define CUPS_OID_ppmPrinterEntry		CUPS_OID_ppmPrinterTable,1
Packit 2fc92b
#define CUPS_OID_ppmPrinterIndex		CUPS_OID_ppmPrinterEntry,1
Packit 2fc92b
#define CUPS_OID_ppmPrinterName			CUPS_OID_ppmPrinterEntry,2
Packit 2fc92b
#define CUPS_OID_ppmPrinterIEEE1284DeviceId	CUPS_OID_ppmPrinterEntry,3
Packit 2fc92b
#define CUPS_OID_ppmPrinterNumberOfPorts	CUPS_OID_ppmPrinterEntry,4
Packit 2fc92b
#define CUPS_OID_ppmPrinterPreferredPortIndex	CUPS_OID_ppmPrinterEntry,5
Packit 2fc92b
#define CUPS_OID_ppmPrinterHrDeviceIndex	CUPS_OID_ppmPrinterEntry,6
Packit 2fc92b
#define CUPS_OID_ppmPrinterSnmpCommunityName	CUPS_OID_ppmPrinterEntry,7
Packit 2fc92b
#define CUPS_OID_ppmPrinterSnmpQueryEnabled	CUPS_OID_ppmPrinterEntry,8
Packit 2fc92b
Packit 2fc92b
#define CUPS_OID_ppmPort			CUPS_OID_ppmMIBObjects,3
Packit 2fc92b
#define CUPS_OID_ppmPortTable			CUPS_OID_ppmPort,1
Packit 2fc92b
#define CUPS_OID_ppmPortEntry			CUPS_OID_ppmPortTable,1
Packit 2fc92b
#define CUPS_OID_ppmPortIndex			CUPS_OID_ppmPortEntry,1
Packit 2fc92b
#define CUPS_OID_ppmPortEnabled			CUPS_OID_ppmPortEntry,2
Packit 2fc92b
#define CUPS_OID_ppmPortName			CUPS_OID_ppmPortEntry,3
Packit 2fc92b
#define CUPS_OID_ppmPortServiceNameOrURI	CUPS_OID_ppmPortEntry,4
Packit 2fc92b
#define CUPS_OID_ppmPortProtocolType		CUPS_OID_ppmPortEntry,5
Packit 2fc92b
#define CUPS_OID_ppmPortProtocolTargetPort	CUPS_OID_ppmPortEntry,6
Packit 2fc92b
#define CUPS_OID_ppmPortProtocolAltSourceEnabled CUPS_OID_ppmPortEntry,7
Packit 2fc92b
#define CUPS_OID_ppmPortPrtChannelIndex		CUPS_OID_ppmPortEntry,8
Packit 2fc92b
#define CUPS_OID_ppmPortLprByteCountEnabled	CUPS_OID_ppmPortEntry,9
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * State constants...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_other				1
Packit 2fc92b
#define CUPS_TC_unknown				2
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_idle				3
Packit 2fc92b
#define CUPS_TC_printing			4
Packit 2fc92b
#define CUPS_TC_warmup				5
Packit 2fc92b
Packit 2fc92b
/* These come from the hrPrinterDetectedErrorState OCTET-STRING */
Packit 2fc92b
#define CUPS_TC_lowPaper			0x8000
Packit 2fc92b
#define CUPS_TC_noPaper				0x4000
Packit 2fc92b
#define CUPS_TC_lowToner			0x2000
Packit 2fc92b
#define CUPS_TC_noToner				0x1000
Packit 2fc92b
#define CUPS_TC_doorOpen			0x0800
Packit 2fc92b
#define CUPS_TC_jammed				0x0400
Packit 2fc92b
#define CUPS_TC_offline				0x0200
Packit 2fc92b
#define CUPS_TC_serviceRequested		0x0100
Packit 2fc92b
#define CUPS_TC_inputTrayMissing		0x0080
Packit 2fc92b
#define CUPS_TC_outputTrayMissing		0x0040
Packit 2fc92b
#define CUPS_TC_markerSupplyMissing		0x0020
Packit 2fc92b
#define CUPS_TC_outputNearFull			0x0010
Packit 2fc92b
#define CUPS_TC_outputFull			0x0008
Packit 2fc92b
#define CUPS_TC_inputTrayEmpty			0x0004
Packit 2fc92b
#define CUPS_TC_overduePreventMaint		0x0002
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_prtCoverStatus_coverOpen	3
Packit 2fc92b
#define CUPS_TC_prtCoverStatus_coverClosed	4
Packit 2fc92b
#define CUPS_TC_prtCoverStatus_interlockOpen	5
Packit 2fc92b
#define CUPS_TC_prtCoverStatus_interlockClosed	6
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_langPCL				3
Packit 2fc92b
#define CUPS_TC_langHPGL			4
Packit 2fc92b
#define CUPS_TC_langPJL				5
Packit 2fc92b
#define CUPS_TC_langPS				6
Packit 2fc92b
#define CUPS_TC_langEscapeP			9
Packit 2fc92b
#define CUPS_TC_langCCITT			26
Packit 2fc92b
#define CUPS_TC_langLIPS			39
Packit 2fc92b
#define CUPS_TC_langTIFF			40
Packit 2fc92b
#define CUPS_TC_langPCLXL			47
Packit 2fc92b
#define CUPS_TC_langPDF				54
Packit 2fc92b
#define CUPS_TC_langJPEG			61
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_supplyThatIsConsumed		3
Packit 2fc92b
#define CUPS_TC_receptacleThatIsFilled		4
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_process				3
Packit 2fc92b
#define CUPS_TC_spot				4
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_toner				3
Packit 2fc92b
#define CUPS_TC_wasteToner			4
Packit 2fc92b
#define CUPS_TC_ink				5
Packit 2fc92b
#define CUPS_TC_inkCartridge			6
Packit 2fc92b
#define CUPS_TC_inkRibbon			7
Packit 2fc92b
#define CUPS_TC_wasteInk			8
Packit 2fc92b
#define CUPS_TC_opc				9
Packit 2fc92b
#define CUPS_TC_developer			10
Packit 2fc92b
#define CUPS_TC_fuserOil			11
Packit 2fc92b
#define CUPS_TC_solidWax			12
Packit 2fc92b
#define CUPS_TC_ribbonWax			13
Packit 2fc92b
#define CUPS_TC_wasteWax			14
Packit 2fc92b
#define CUPS_TC_fuser				15
Packit 2fc92b
#define CUPS_TC_coronaWire			16
Packit 2fc92b
#define CUPS_TC_fuserOilWick			17
Packit 2fc92b
#define CUPS_TC_cleanerUnit			18
Packit 2fc92b
#define CUPS_TC_fuserCleaningPad		19
Packit 2fc92b
#define CUPS_TC_transferUnit			20
Packit 2fc92b
#define CUPS_TC_tonerCartridge			21
Packit 2fc92b
#define CUPS_TC_fuserOiler			22
Packit 2fc92b
#define CUPS_TC_water				23
Packit 2fc92b
#define CUPS_TC_wasteWater			24
Packit 2fc92b
#define CUPS_TC_glueWaterAdditive		25
Packit 2fc92b
#define CUPS_TC_wastePaper			26
Packit 2fc92b
#define CUPS_TC_bindingSupply			27
Packit 2fc92b
#define CUPS_TC_bandingSupply			28
Packit 2fc92b
#define CUPS_TC_stitchingWire			29
Packit 2fc92b
#define CUPS_TC_shrinkWrap			30
Packit 2fc92b
#define CUPS_TC_paperWrap			31
Packit 2fc92b
#define CUPS_TC_staples				32
Packit 2fc92b
#define CUPS_TC_inserts				33
Packit 2fc92b
#define CUPS_TC_covers				34
Packit 2fc92b
Packit 2fc92b
#define CUPS_TC_tenThousandthsOfInches		3
Packit 2fc92b
#define CUPS_TC_micrometers			4
Packit 2fc92b
#define CUPS_TC_impressions			7
Packit 2fc92b
#define CUPS_TC_sheets				8
Packit 2fc92b
#define CUPS_TC_hours				11
Packit 2fc92b
#define CUPS_TC_thousandthsOfOunces		12
Packit 2fc92b
#define CUPS_TC_tenthsOfGrams			13
Packit 2fc92b
#define CUPS_TC_hundrethsOfFluidOunces		14
Packit 2fc92b
#define CUPS_TC_tenthsOfMilliliters		15
Packit 2fc92b
#define CUPS_TC_feet				16
Packit 2fc92b
#define CUPS_TC_meters				17
Packit 2fc92b
#define CUPS_TC_items				18
Packit 2fc92b
#define CUPS_TC_percent				19
Packit 2fc92b
Packit 2fc92b
/* These come from RFC 3808 to define character sets we support */
Packit 2fc92b
/* Also see http://www.iana.org/assignments/character-sets */
Packit 2fc92b
#define CUPS_TC_csASCII				3
Packit 2fc92b
#define CUPS_TC_csISOLatin1			4
Packit 2fc92b
#define CUPS_TC_csShiftJIS			17
Packit 2fc92b
#define CUPS_TC_csUTF8				106
Packit 2fc92b
#define CUPS_TC_csUnicode			1000 /* UCS2 BE */
Packit 2fc92b
#define CUPS_TC_csUCS4				1001 /* UCS4 BE */
Packit 2fc92b
#define CUPS_TC_csUnicodeASCII			1002
Packit 2fc92b
#define CUPS_TC_csUnicodeLatin1			1003
Packit 2fc92b
#define CUPS_TC_csUTF16BE			1013
Packit 2fc92b
#define CUPS_TC_csUTF16LE			1014
Packit 2fc92b
#define CUPS_TC_csUTF32				1017
Packit 2fc92b
#define CUPS_TC_csUTF32BE			1018
Packit 2fc92b
#define CUPS_TC_csUTF32LE			1019
Packit 2fc92b
#define CUPS_TC_csWindows31J			2024
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * Types...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
typedef int (*_cups_sccb_t)(int print_fd, int device_fd, int snmp_fd,
Packit 2fc92b
			    http_addr_t *addr, int use_bc);
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
/*
Packit 2fc92b
 * Prototypes...
Packit 2fc92b
 */
Packit 2fc92b
Packit 2fc92b
extern void		backendCheckSideChannel(int snmp_fd, http_addr_t *addr);
Packit 2fc92b
extern int		backendDrainOutput(int print_fd, int device_fd);
Packit 2fc92b
extern int		backendGetDeviceID(int fd, char *device_id,
Packit 2fc92b
			                   int device_id_size,
Packit 2fc92b
			                   char *make_model,
Packit 2fc92b
					   int make_model_size,
Packit 2fc92b
					   const char *scheme, char *uri,
Packit 2fc92b
					   int uri_size);
Packit 2fc92b
extern int		backendGetMakeModel(const char *device_id,
Packit 2fc92b
			                    char *make_model,
Packit 2fc92b
				            size_t make_model_size);
Packit 2fc92b
extern http_addrlist_t	*backendLookup(const char *hostname, int port, int *cancel);
Packit 2fc92b
extern int		backendNetworkSideCB(int print_fd, int device_fd,
Packit 2fc92b
			                     int snmp_fd, http_addr_t *addr,
Packit 2fc92b
					     int use_bc);
Packit 2fc92b
extern ssize_t		backendRunLoop(int print_fd, int device_fd, int snmp_fd,
Packit 2fc92b
			               http_addr_t *addr, int use_bc,
Packit 2fc92b
			               int update_state, _cups_sccb_t side_cb);
Packit 2fc92b
extern int		backendSNMPSupplies(int snmp_fd, http_addr_t *addr,
Packit 2fc92b
			                    int *page_count,
Packit 2fc92b
					    int *printer_state);
Packit 2fc92b
extern int		backendWaitLoop(int snmp_fd, http_addr_t *addr,
Packit 2fc92b
			                int use_bc, _cups_sccb_t side_cb);
Packit 2fc92b
Packit 2fc92b
Packit 2fc92b
#  ifdef __cplusplus
Packit 2fc92b
}
Packit 2fc92b
#  endif /* __cplusplus */
Packit 2fc92b
#endif /* !_CUPS_BACKEND_PRIVATE_H_ */