The job monitoring MIB JOB-MONITORING-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, OBJECT-IDENTITY, TimeTicks, Counter32, Integer32, UInteger32, experimental FROM SNMPv2-SMI -- RFC 1442 DateAndTime, RowStatus, DisplayString FROM SNMPv2-TC -- RFC 1443 MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF -- RFC 1444 hrDeviceIndex, InternationalDisplayString FROM HOST-RESOURCES-MIB -- RFC 1514 Ordinal16, Cardinal16, Ordinal32, Cardinal32, Cardinal64, CodeIndexedStringIndex FROM GENERAL-TC -- genltc.mib PrtChannelType, PrtInterpreterLangFamily, MediaUnit, CodedCharSet FROM PRINTER-TC -- prttc.mib (new) Printer MIB -- textual-conventions DPAJobState, DPAJobStateReasons, DPADeviceState, DPADocType, DPADocState, DPADocOutput FROM JOB-MONITORING-TC; -- jobmontc.mib -- Upon publication as RFC, delete this comment and the line following -- this comment and change the reference of { printmib 104 } -- (below) to { mib-2 X }. -- This will result in changing: -- 1 3 6 1 3 54 jmJobMonMIB(104) to: -- 1 3 6 1 2 1 jmJobMonMIB(X) -- This will make it easier to translate prototypes to -- the standard namespace because the lengths of the OID's won't -- change. printmib OBJECT IDENTIFIER ::= { experimental 54 } jmJobMonMIB MODULE-IDENTITY LAST-UPDATED "9510251230Z" ORGANIZATION "IETF/DMTF Printer Working Group (PWG)" CONTACT-INFO " Thomas N. Hastings Xerox Corporation, MS ES-AE 242 701 S. Aviation Blvd. El Segundo, CA 90245 Phone: 1+ (310)333-6413 FAX: 1+ (310)333-6342 E-Mail: hastings@cp10.es.xerox.com" DESCRIPTION "File: jobmon.doc, .psr, .ps, .txt, .mib Version: 0.7 This MIB specifies job and document objects for monitoring print jobs, including accounting, of print jobs. This MIB does not provide for management and control of print jobs, such as cancelling or modifying them. If job control is desired, another MIB that augments this one should be developed. The groups in this MIB are arranged so that an additional MIB may be developed that supports monitoring of multifunction jobs (print, scan, FAX, etc.), including scan-only jobs. Such a MIB is intended to augment this MIB. See the companion job monitoring textual conventions module: JOB-MONITORING-TC for the textual conventions and for an explanation of the use of this MIB." ::= { printmib 104 } -- Textual conventions for this MIB module -- See JOB-MONITORING-TC module -- (files: jobmontc.doc, .psr, .ps, .txt) -- NOTE - The term "Mandatory" in this MIB, as in all MIBs, means that -- the object or group is mandatory, if an agent claims conformance to -- this MIB. Conversely, if an agent is not claiming conformance to -- this MIB, an agent need not implement the mandatory (or conditionally -- mandatory) objects or groups in this MIB. -- -- The Job Information Group (Mandatory) -- -- The implementation of every object in this group is mandatory. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- -- The Job Information group consists entirely of the jmJobInfoTable. -- -- The Job Information table provides general information about each job -- that is independent of the type of job and device. jmJobInfo OBJECT IDENTIFIER ::= { jmJobMonMIB 7 } jmJobInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF JmJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of general mandatory job information per (logical or physical) device. Job information applies to the job as a whole or to all its documents. The specifications for each object is taken directly from the ISO 10175 Document Printing Application (DPA) standard clause 9.2, Job Attributes." ::= { jmJobInfo 1} jmJobInfoEntry OBJECT-TYPE SYNTAX JmJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each job in the device, no matter what the state of the job is. Each device is represented as a separate device entry in the hostmib device table as a device of type 'printer', 'scanner', or 'fax'. The management station references each job using the jmJobIdentifier assigned by this printer." INDEX { hrDeviceIndex, jmJobIdentifier } ::= { jmJobInfoTable 1 } JmJobInfoEntry ::= SEQUENCE { -- Note that object in this table are all mandatory. -- The OptionalJobInfo and OptionalPrintJobInfo tables augment this -- table with optional objects. jmJobIdentifier DisplayString, -- mandatory jmJobClientId CodeIndexedStringIndex, -- mandatory jmJobName CodeIndexedStringIndex, -- mandatory jmJobOriginator CodeIndexedStringIndex, -- mandatory jmJobOwner CodeIndexedStringIndex, -- mandatory jmJobSourceType OBJECT IDENTIFIER, -- mandatory jmJobDestinationType OBJECT IDENTIFIER, -- mandatory jmJobSourceChannelType PrtChannelType, -- mandatory jmJobDestinationChannelType PrtChannelType, -- mandatory jmJobSubmittedCodedCharSet CodedCharSet, -- mandatory jmJobUserName CodeIndexedStringIndex, -- mandatory jmJobAccountingInformation OCTET STRING, -- mandatory jmJobCurrentState DPAJobState, -- mandatory jmJobStateReasons DPAJobStateReasons, -- mandatory jmJobPreviousState DPAJobState, -- mandatory jmJobNumberOfDocuments Cardinal32 -- mandatory } jmJobIdentifier OBJECT-TYPE SYNTAX DisplayString -- not localized MAX-ACCESS read-only STATUS current DESCRIPTION "Job-identifier This attribute provides the job-identifier for this job on the server. The server shall generate a job-identifier value that is unique on that server, but need not be unique across the distributed environment. The value of the job-identifier attribute shall be returned by the server as part of the PrintResult in the first Print operation for the job (see 8.2.1). The client shall pass its value as part of the PrintArgument in subsequent Print operations for the same job." ::= { jmJobInfoEntry 1 } jmJobClientId OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-client-id This attribute supplies a human-readable descriptor for the job. This descriptor may be printed by the server on auxiliary sheets to help identify the user's printed output, and discriminate between different jobs. Use and treatment of this attribute is implementation and site specific. If the client specifies the value of the job attribute job- client-id, no server shall change it. If the client does not specify the value of the job attribute job-client-id, the first server shall set it to the value of the job attribute job- identifier, so that no downstream server shall change it. These rules ensure that if an implementation prints the value of the job-client-id on an auxiliary sheet, it has a value that is meaningful to the client originally submitting the job, no matter how many servers the job passes through. For example, client A submits a job to server B and does not specify a value for the job attribute job-client-id. Server B assigns a job-identifier of 123 to the job, and forwards this job to server C. Server C assigns a job-identifier of 456 to the job and forwards this job to printer D. Printer D is not a DPA server, but it has its own queue and assigns a job-id of 789 to the job. The following table shows the value of the relevant job attributes in the two servers B and C: job- job- job- job- client-id identifier- identifier identifier- on-client on-printer --------- ----------- ---------- ----------- server B 123 unspecified 123 456 server C 123 123 456 789* * If printer D did not assign a job-id to its jobs, then the value of the job attribute job-identifier-on-printer for server C would be unspecified." ::= { jmJobInfoEntry 2 } jmJobName OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-name This attribute supplies a human readable string for the print- job. This string is used for naming the print-job in human- readable 'free-form' fashion. This attribute is intended for enabling a user or the user's application to convey a job name that may be printed on a start sheet, returned in a ListObjectAttributes result, or used in notification or logging messages. If this attribute is not specified, no job name is assumed, but implementation specific defaults are allowed, such as the value of the document-name attribute of the first document in the job." ::= { jmJobInfoEntry 3 } jmJobOriginator OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-originator This attribute supplies the name of the human or programmatic originator of the print-job. If this attribute is not specified, no value for job originator is assumed, but implementation specific defaults are allowed. NOTE – This attribute may be different from job-owner (1) when a program submits the print-job on behalf of a user or (2) when an operator must resubmit a misprinted job on behalf of the original job owner. However, an operation to resubmit a print- job is outside the scope of this part of ISO/IEC 10175." ::= { jmJobInfoEntry 4 } jmJobOwner OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-owner This attribute supplies the name of the human owner of the print-job. The value of job-owner will often be the same as job- originator. The job-owner will be different from job-originator when the job has been submitted by the originator on behalf of the owner. This attribute is not to take the place of the security parameters or the access-and-accounting attributes. If this attribute is not specified, the value of user-name or job-originator should be used for any circumstances which require a value for job-owner." ::= { jmJobInfoEntry 5 } jmJobSourceType OBJECT-TYPE -- This is a type 2 enum. SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "Job-source-type (ISO DPA extension) This attribute specifies the device type of the source of this job. The OBJECT IDENTIFIER values are defined in the host resources MIB as device types. For use as a source type, the host resources MIB defines device type OIDs for: disk storage (local to the host) and the following OIDs need to be defined and registered with IANA for use with the host resources MIB: local disk storage network disk storage document repository scanner fax" ::= { jmJobInfoEntry 6 } jmJobDestinationType OBJECT-TYPE -- This is a type 2 enum. SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "Job-destination-type (ISO DPA extension) This attribute specifies the device type of the destination of this job. The OBJECT IDENTIFIER values are defined in the host resources MIB as device types. For use as a destination type, the host resources MIB defines device type OIDs for: printer and the following OIDs need to be defined and registered with IANA for use with the host resources MIB: local disk storage network disk storage document repository fax mechanical mail box electronic mail box" ::= { jmJobInfoEntry 7 } jmJobSourceChannelType OBJECT-TYPE SYNTAX PrtChannelType MAX-ACCESS read-only STATUS current DESCRIPTION "Job-source-channel-type (ISO DPA extensiion) This attribute specifies the type of channel that is receiving the job from the input device. See RFC 1759 for values." ::= { jmJobInfoEntry 8 } jmJobDestinationChannelType OBJECT-TYPE SYNTAX PrtChannelType MAX-ACCESS read-only STATUS current DESCRIPTION "Job-destination-channel-type (ISO DPA extensiion) This attribute specifies the type of channel that is sending the job to the output device. See RFC 1759 for values." ::= { jmJobInfoEntry 9 } jmJobSubmittedCodedCharSet OBJECT-TYPE SYNTAX CodedCharSet MAX-ACCESS read-only STATUS current DESCRIPTION "This object is the coded character set enum for the coded character set that the submitting client used to encode the attributes of type: CodeIndexedStringIndex. This object permits a managment station to determine the exact coded character set that the submitting client used, in case the code conversion that the agent might perform is not sufficient to a different coded character set." ::= { jmJobInfoEntry 10 } jmJobUserName OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute specifies the name of the user for accounting purposes. See jmJobOriginator and jmJobOwner for additional user names for other purposes (and whose values may be different). An agent may return the same value for all three attributes, if the printer or service does not support all three concepts. ISO DPA: User-name This attribute specifies the name of the user requesting access to print [or other] service operations. The usage of this attribute may be mandatory, depending upon the local security policy used." ::= { jmJobInfoEntry 11 } jmJobAccountingInformation OBJECT-TYPE SYNTAX OCTET STRING(SIZE(0..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "Accounting-information This attribute specifies information required by accounting services (e.g. the account to be charged for any services rendered). Accounting information is intended to be interpreted by an accounting system, and may be opaque to the print service." ::= { jmJobInfoEntry 12 } jmJobCurrentState OBJECT-TYPE -- This is a type 2 enum. SYNTAX DPAJobState MAX-ACCESS read-only STATUS current DESCRIPTION "Current-job-state This attribute identifies the current state of the job (pending, printing, held, etc.) Print clients and DP-Servers shall be prepared to receive all the standard job states. DP-Servers are not required to generate all job states, only those which are appropriate for the particular implementation. If a server implementation or policy is to start processing documents before the last Print request (with a TRUE value for the job-submission-complete parameter) and the value of the job's job-scheduling attribute is not after-complete, the server shall change the job's current-job-state from pre- processing directly to the processing state when the server begins processing any of the job's documents." ::= { jmJobInfoEntry 13 } jmJobStateReasons OBJECT-TYPE SYNTAX DPAJobStateReasons MAX-ACCESS read-only STATUS current DESCRIPTION "This object is bit-encoded, so that multiple reasons can occur at once. Each bit corresponds to an ISO DPA OID for the same reason. ISO DPA: Job-state-reasons This attribute identifies the reason or reasons that the job is in the held, terminating, retained, or completed state. The server shall indicate the particular reason(s) by setting the value of the job-state-reasons attribute. When the job is not in any of these states, the server shall set the value of the job-state-reasons attribute to the empty set." ::= { jmJobInfoEntry 14 } jmJobPreviousState OBJECT-TYPE -- This is a type 2 enum. SYNTAX DPAJobState MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute identifies the state of the job (pending, printing, held, etc.) before the last change of job state. Standard values are defined in the specification for the current-job-state [jmJobCurrentState] job-status attribute." ::= { jmJobInfoEntry 15 } jmJobNumberOfDocuments OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number-of-documents This attribute indicates the number of documents in the job. The number indicates how many Print operations that specified a document (of any document-type have been submitted for printing until job submission has been completed; at that point this attribute shall then indicate the total number of printable documents, fonts, and resource objects submitted by the client in the job. If the first Print operation does not contain a first-document component (see 8.2.1), the value of this attribute shall be 0. The server shall count fonts and resource objects passed to the server by means of Print operation invocations, as documents for the purposes of this attribute." ::= { jmJobInfoEntry 16 } -- -- The Devices Assigned group (Mandatory) -- -- The Devices Assigned group contains informations about the device(s) -- that have been assigned to the job, when they are assigned. The -- complete state of the job includes the state(s) of such assigned -- devices. -- -- The implementation of every object in this group is mandatory. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- -- The Devices Assigned group consists entirely of the -- jmDevicesAssignedTable. -- -- The devices assigned table contains the hrDeviceIndex and the state -- of each of the devices to which the service has assigned (parts -- of) the job. Implementations, such as physical printers, that only -- assign a job to a single device need only implement one row of this -- table. -- -- NOTE - the names of these objects have been generalized from the DPA -- attributes, so that they can apply to other devices in addition to -- printers. Some additional states will be added for such other -- devices, such as scanning, dialing, etc. jmDevicesAssigned OBJECT IDENTIFIER ::= { jmJobMonMIB 8 } jmDevicesAssignedTable OBJECT-TYPE SYNTAX SEQUENCE OF JmDevicesAssignedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains the hrDeviceIndex values and states of the device(s) to which this job has been assigned. NOTE: some (high-end) systems may assign a job to more than one printer and print part of the job on each. Therefore, the printer state is represented as a table. Systems that only assign a job to a single printer, need only implement a single row of this table. NOTE - Multifunction devices/systems that scan and print, assign a job to at least two devices: a scanner and a printer." ::= { jmDevicesAssigned 1 } jmDevicesAssignedEntry OBJECT-TYPE SYNTAX JmDevicesAssignedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entries may exist in the table for each device index whose device type is 'printer' or 'scanner' and for each job." INDEX { hrDeviceIndex, jmJobIdentifier, jmDevicesAssignedIndex } ::= { jmDevicesAssignedTable 1 } JmDevicesAssignedEntry ::= SEQUENCE { jmDevicesAssignedIndex Cardinal32, -- mandatory jmDeviceStateOfDevicesAssigned DPADeviceState -- mandatory } jmDevicesAssignedIndex OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS not-accessible STATUS current DESCRIPTION "The hrDeviceIndex of one of the [physical] printers or scanners to which the job has been assigned. Since jobs need not be persistent across power cycles of the device, these values are not expected to remain stable across sucessive device power cycles. An index value of 0 indicates that the job has not yet been assigned to a physical device. The representation of the assigned printer(s) or scanner is an index into the host resources device table, rather than being the distinguished name of the physical printer as in the ISO DPA printers-assigned attribute. NOTE - The name of the physical printer [or scanner] is contained in the host resources table for this device. ISO DPA: Printers-assigned This attribute identifies the physical [devices] printer or printers to which this job has been assigned, if any. When the job is first submitted and the server has not yet assigned any printers to the job, the SEQUENCE shall be empty. If the server intends to use a single printer for the job, and the server has assigned a printer to the job, the SEQUENCE shall contain just that printer. If a server has split the job into multiple pieces and assigned each piece to a different printer, the SEQUENCE shall contain n elements, one for each assigned printer. A job with multiple job-result-sets is an example of a job that would be easy to split into multiple pieces. A SEQUENCE with no elements [row with no values] shall be returned if this attribute is supported, but this job has not yet been assigned to any physical printers [or other devices]. The number of elements in the SEQUENCE for this attribute shall be the same as the number of elements in the SEQUENCE for the associated job attribute printer-state-of-printers-assigned [number of rows for the jmDeviceStateOfDevicesAssigned table]. In addition, the ith element of each of this associated attributes shall be a value that pertains to the printer named by the ith element of printers-assigned. The printers-assigned value shall not be the same as the printer requested by the user if the job's printer-name-requested attribute specified a logical printer that supports one or more different physical printers. The printers-assigned value might differ also if the job has been re-assigned by an operator to ensure successful completion of the job, allowing the user to find out where a job has been re-assigned (when necessary). The value of the job's printers-assigned attribute shall remain after the job has completed, so that users can determine the physical printer(s) on which the job was printed." ::= { jmDevicesAssignedEntry 1 } jmDeviceStateOfDevicesAssigned OBJECT-TYPE SYNTAX DPADeviceState MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, the object applies to scanners, as well as printers. Changes of the values of this object shall create a trap. ISO DPA: Printer-state-of-printers-assigned This attribute identifies the current state of each assigned [device] printer. This attribute gives the client access to information within each assigned printer. Because this attribute contains a value that is updated within the printer, the server may choose to update the value of this attribute only when a client [or management station] queries its value. See the [devices-assigned] printers-assigned attribute for the correspondence between elements of this attribute and those of [devices-assigned] printers-assigned." ::= { jmDevicesAssignedEntry 2 } -- -- Optional Job Information Group (Optional) -- -- The Optional Job Information group is optional. -- However, to claim conformance to this group, it is necessary to -- implement every object in the group. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- The Optional Job Information group consists solely of the -- jmOptionalJobInfoTable. -- The Optional Job Information table provides additional general -- information about each job that is independent of the type of job -- and the type of device that was (1) submitted to or (2) assigned to -- the (logical or physical) device specified by hrDeviceIndex. -- jmOptionalJobInfo OBJECT IDENTIFIER ::= { jmJobMonMIB 9 } jmOptionalJobInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF JmOptionalJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of optional general job information per (logical or physical) device that is independent of the type of device. Job information applies to the job as a whole or to all its documents. The specifications for each object is taken directly from the ISO 10175 Document Printing Application (DPA) standard clause 9.2, Job Attributes." ::= { jmOptionalJobInfo 1} jmOptionalJobInfoEntry OBJECT-TYPE SYNTAX JmOptionalJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each job in the device, no matter what the state of the job is. Each device is represented as a separate device entry in the hostmib device table as a device of type 'printer', 'scanner', or 'fax'. The management station references each job using the jmJobIdentifier assigned by the server that accepted job submission (by some other protocol). This table augments the mandatory Job Information table in this MIB." AUGMENTS { jmJobInfoEntry } ::= { jmOptionalJobInfoTable 1 } JmOptionalJobInfoEntry ::= SEQUENCE { -- Note that objects in this table are optional and are all -- device-independent. -- This OptionalJobInfo table augments the mandatory JobInfo table -- with optional objects. jmJobIdentifierOnClient DisplayString, -- optional jmJobComment CodeIndexedStringIndex, -- optional jmJobPriority INTEGER(1..100), -- optional jmJobEstimatedCompletionTime DateAndTime, -- optional jmJobSubmissionTime DateAndTime, -- optional jmJobInterveningJobs Cardinal32, -- optional jmJobMessageFromAdministrator CodeIndexedStringIndex, -- optional jmJobErrorCount Counter32, -- optional jmJobWarningCount Counter32, -- optional jmJobProcessingTime Counter32, -- optional jmJobCompletionTime DateAndTime -- optional } jmJobIdentifierOnClient OBJECT-TYPE SYNTAX DisplayString (SIZE(0..255)) -- not localized MAX-ACCESS read-only STATUS current DESCRIPTION "Job-identifier-on-client This attribute provides the job-identifier for this job to uniquely identify the job on the client submitting the job, and the value shall be assigned by that client. The client shall supply the value of the job-identifier-on- client attribute at the time that the client submits the job to the server, if such client has its own job-identifier for the job. NOTE – This attribute is intended for jobs submitted from legacy servers which have their own job-identifier for the job. If a job passes through a chain of servers between the client initiating the job and the output device, the value of the job attribute job-identifier-on-client shall be the value of the job's job-identifier on the immediate upstream server and the value of the job attribute job-identifier-on-printer shall be the value of the job's job-identifier on the immediate downstream server or printer. NOTE – A job has attributes for identifying itself on the current server, on the immediate upstream server (where the job came from), and on the immediate downstream server or printer (where the job went). These attributes are job-identifier, job- identifier-on-client, and job-identifier-on-printer, respectively." ::= { jmOptionalJobInfoEntry 1 } jmJobComment OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-comment This attribute supplies an arbitrary human-readable text string associated with the print-job. This attribute is intended for enabling a user to convey a text string that may be printed on a job start sheet, for example, in an implementation-dependent manner." ::= { jmOptionalJobInfoEntry 2 } jmJobPriority OBJECT-TYPE SYNTAX INTEGER(1..100) MAX-ACCESS read-only STATUS current DESCRIPTION "Job-priority This attribute specifies a priority for scheduling the print- job. It is used by servers that employ a priority-based scheduling algorithm. A higher value specifies a higher priority. The value 1 is defined to indicate the lowest possible priority (a job which a priority-based scheduling algorithm shall pass over in favour of higher priority jobs). The value 100 is defined to indicate the highest possible priority. Priority is expected to be evenly or 'normally' distributed across this range. The mapping of vendor-defined priority over this range is implementation- specific. The omission of this attribute implies that the user places no constraints concerning priority on the scheduling of the print-job." ::= { jmOptionalJobInfoEntry 3 } jmJobEstimatedCompletionTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Estimated-completion-time This attribute indicates the estimated time by which this job will be completed. The time to complete one job is dependent on the time required to complete all other jobs that the scheduling algorithm determines must be printed before this job may be printed. The time to complete each individual job may depend on when on- request resources are available. The time to print each individual job is dependent on the characteristics of the document formats in which the individual documents of the job are encoded and on the complexities and other characteristics of the documents themselves. This attribute is highly implementation-dependent. The estimated-completion-time may be easy to calculate for some combinations of document formats and scheduling algorithms. It may be impossible to calculate for other combinations. It is recommended that, where possible, document creators provide system hints to the print system (perhaps appropriately encoded in document format headers) that help the print system understand which features of the document formats the document will be exercising." ::= { jmOptionalJobInfoEntry 4 } jmJobSubmissionTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Submission-time This attribute indicates the time at which the latest Print request for this job was accepted by the server." ::= { jmOptionalJobInfoEntry 5 } jmJobInterveningJobs OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "Intervening-jobs This attribute indicates the number of other jobs to be printed before this job may be scheduled for printing. The server shall set the value of this attribute to 0 when the job begins printing." ::= { jmOptionalJobInfoEntry 6 } jmJobMessageFromAdministrator OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Job-message-from-administrator This attribute provides a message from an operator, system administrator or 'intelligent' process to indicate to the user the reasons for modification or other management action taken on a job." ::= { jmOptionalJobInfoEntry 7 } jmJobErrorCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Error-count This attribute provides the number of error events occurring while processing the job." ::= { jmOptionalJobInfoEntry 8 } jmJobWarningCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Warning-count This attribute provides the number of warning events occurring while processing the job." ::= { jmOptionalJobInfoEntry 9 } jmJobProcessingTime OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Processing-time This attribute indicates how long an individual job has been processing [in seconds]." ::= { jmOptionalJobInfoEntry 10 } jmJobCompletionTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Completion-time This attribute indicates the time at which this job completed. Providing this time is useful for jobs which are retained after printing." ::= { jmOptionalJobInfoEntry 11 } -- -- Print Job Information Group (Conditionally Mandatory) -- -- The Print Job Information group is Conditionally Mandatory, -- i.e., is mandatory for agents that support (spooling) print systems, -- as oppposed to printers. -- The Print Job Information group consists solely of the -- jmPrintJobInfoTable. -- The Print Job Information table provides additional -- information about each job that is printer-centric that was (1) -- submitted to or (2) assigned to the (logical or physical) printer -- specified by hrDeviceIndex. jmPrintJobInfo OBJECT IDENTIFIER ::= { jmJobMonMIB 10 } jmPrintJobInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF JmPrintJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of printer-centric job information per (logical or physical) printer. Job information applies to the job as a whole or to all its documents. The specifications for each object is taken directly from the ISO 10175 Document Printing Application (DPA) standard clause 9.2, Job Attributes." ::= { jmPrintJobInfo 1} jmPrintJobInfoEntry OBJECT-TYPE SYNTAX JmPrintJobInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each job in the printer, no matter what the state of the job is. Each device is represented as a separate device entry in the hostmib device table as a device of type 'printer'. The management station references each job using the jmJobIdentifier assigned by the server that accepted job submission (by some other protocol). This table augments the mandatory Job Information table in this MIB." AUGMENTS { jmJobInfoEntry } ::= { jmPrintJobInfoTable 1 } JmPrintJobInfoEntry ::= SEQUENCE { -- Note that the printer-centric objects in this table are -- conditionally mandatory, i.e., they are mandatory if an agent -- supports a (spooling) print system, as opposed to a printer. -- This PrintJobInfo table augments the mandatory JobInfo table. jmJobNumberOfJobSets Ordinal32, -- cond. mandatory jmJobCopies Ordinal32, -- cond. mandatory jmJobOutputBin Integer32, -- cond. mandatory jmJobPrintAfter DateAndTime, -- cond. mandatory jmJobPrinterNameRequested CodeIndexedStringIndex, -- cond. mandatory jmJobStartedPrintingTime DateAndTime, -- cond. mandatory jmJobCopiesCompleted Counter32, -- cond. mandatory jmJobPagesCompleted Counter32, -- cond. mandatory jmJobImpressionsCompleted Counter32, -- cond. mandatory jmJobMediaSheetsCompleted Counter32, -- cond. mandatory jmJobOctetsCompleted Cardinal64, -- cond. mandatory jmJobTotalJobOctets Cardinal64, -- cond. mandatory jmJobPageCount Cardinal32 -- cond. mandatory } jmJobNumberOfJobSets OBJECT-TYPE SYNTAX Ordinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "number-of-job-sets The hardcopy output of a print-job consists of one or more job sets, each of which may be specified to be delivered to, or held for, one particular recipient who is not necessarily the job creator. Each job set may be specified to contain one or more job copies. Each job copy shall contain one or more copies of each of the documents specified by means of the Print operations that compose the job." ::= { jmPrintJobInfoEntry 1 } jmJobCopies OBJECT-TYPE SYNTAX Ordinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "job-copies Total number of job copies in the job, i.e., number of job copies summed across the job-result-sets. NOTE - In ISO DPA, job-copies is a separate value for each job result set, not the summation. But it didnt seem worth the effort to make job-copies a table." ::= { jmPrintJobInfoEntry 2 } jmJobOutputBin OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "output-bin Special MIB definition: specifies the index of the output subunit table for the job. NOTE - ISO DPA allows the output-bin to be specified diferrently for each job result set in a job. However, it doesnt seem worth the effort to make output-bin a table, since multiple job-result-sets is an unlikely feature to be supported and/or used, especially with different output-bins." ::= { jmPrintJobInfoEntry 3 } jmJobPrintAfter OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Job-print-after This attribute specifies the calendar date and time of day after which the print-job shall become a candidate to be scheduled for printing. If the value of this attribute is in the future, the server shall set the value of the job's current-job-state to held and add the job-print-after-specified value to the job's job-state- reasons attribute and shall not schedule the print-job for printing until the specified date and time has passed. When the specified date and time arrives, the server shall remove the job-print-after-specified value from the job's job-state- reason attribute and, if no other reasons remain, shall change the job's current-job-state to pending so that the job becomes a candidate for being scheduled on printer(s). The server shall assign an empty value (see 9.1.2) to the job- print-after attribute when no print after time has been assigned, so that the job shall be a candidate for scheduling immediately." ::= { jmPrintJobInfoEntry 4 } jmJobPrinterNameRequested OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Printer-name-requested This attribute identifies the printer to be used for printing the job. The client shall specify the value of this attribute with the first invocation of the Print operation for the print- job as the explicit printer-name component of the PrintArgument, rather than as an attribute (see 8.2.1.1). NOTES 1. To cause a server to select a printer according to other attributes, the system administrator should define a logical printer that supports ALL of the physical printers supported by the server. 2. For the server that supports only a single printer, the logical printer name may be the same as the server name, as long as they cannot be confused for each other in the name service directory. 3. Initial-value-job objects should have the value of their printer-name-requested attribute specified as an empty value in order to indicate that no printer-name is defaulted." ::= { jmPrintJobInfoEntry 5 } jmJobStartedPrintingTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Started-printing-time This attribute indicates the time at which this job started printing." ::= { jmPrintJobInfoEntry 6 } jmJobCopiesCompleted OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Job-copies-completed This attribute indicates the number of job-copies of the job that the printer(s) have completed printing. The server shall not reset its value during the processing of multiple print-job results that are part of the same job (see the results-profile job attribute). Since this attribute is intended to measure the progress of a job, the value shall include repeated job- copies due to multiple print-job results for the same job. The accuracy of this value is implementation-dependent. It is expected that the value reported is never greater than the actual value. This attribute may not be supported for all printers and all page description languages. The value of this attribute shall be 0 if printing has not started for this job." ::= { jmPrintJobInfoEntry 7 } jmJobPagesCompleted OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Pages-completed This attribute indicates the number of pages of the job that the printer(s) have completed printing. NOTE – The number of source pages, impressions and sheets of media may differ. The following examples illustrate how they may differ when attributes, rather than the document contents, control the printing. If number-up is 0 or 1, there is one source page per impression, and if number-up is 2, there are two source pages per impression. If sides is 1, there is one impression per sheet of media, but if sides is 2, there are two impressions per sheet of media. By inference, if number-up is 4 and sides is 2, there are 4 source pages per impression and 8 source pages per sheet of media. The server shall not reset its value during the processing of multiple copies of documents or the job. Since this attribute is intended to measure the progress of a job, the value shall include repeated pages due to multiple copies. When the job completes, this attribute should contain the value of the total number of source pages that the printer processed for the print-job. The accuracy of this value is implementation-dependent. It is expected that the value reported is never greater than the actual value. This attribute may not be supported for all printers and all page description languages. The value of this attribute shall be 0 if printing has not started for this job. " ::= { jmPrintJobInfoEntry 8 } jmJobImpressionsCompleted OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Impressions-completed This attribute indicates the number of impressions that the printer engine(s) have placed on the media for the job. See the note in the pages-completed attribute for the relationship of the pages-completed, impressions-completed and media-sheets- completed attributes. The server shall not reset its value during the processing of multiple copies of documents or the job. Since this attribute is intended to measure the progress of a job, the value shall include repeated pages due to multiple copies. When the job completes, this attribute should contain the value of the total number of impressions that the printer made for the print-job. The accuracy of this value is implementation-dependent. It is expected that the value reported is never greater than the actual value. This attribute may not be supported for all printers and all page description languages. The value of this attribute shall be 0 if printing has not started for this job." ::= { jmPrintJobInfoEntry 9 } jmJobMediaSheetsCompleted OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Media-sheets-completed This attribute indicates the number of sheets of media that the printer(s) have completed printing for the job. See the note in the pages-completed attribute for the relationship of the pages-completed, impressions-completed and media-sheets- completed attributes. The server shall not reset its value during the processing of multiple copies of documents or the job. Since this attribute is intended to measure the progress of a job, the value shall include repeated pages due to multiple copies. When the job completes, this attribute should contain the value of the total number of sheets of media used for the print-job. The accuracy of this value is implementation-dependent. It is expected that the value reported is never greater than the actual value. This attribute may not be supported for all printers and all page description languages. The value of this attribute shall be 0 if printing has not started for this job." ::= { jmPrintJobInfoEntry 10 } jmJobOctetsCompleted OBJECT-TYPE SYNTAX Cardinal64 MAX-ACCESS read-only STATUS current DESCRIPTION "Octets-completed This attribute indicates the number of octets of the job that the printer(s) have completed printing. The server shall not reset its value during the processing of multiple copies of documents or the job. Since this attribute is intended to measure the progress of a job, the value shall include repeated pages due to multiple copies. The accuracy of this value is implementation-dependent. It may be approximated by the number of octets conveyed to the printer. This attribute may not be supported for all printers and all page description languages. The value of this attribute shall be 0 if printing has not started for this job." ::= { jmPrintJobInfoEntry 11 } jmJobTotalJobOctets OBJECT-TYPE SYNTAX Cardinal64 MAX-ACCESS read-only STATUS current DESCRIPTION "Total-job-octets This attribute indicates the size of the job in octets, including document and job copies. The server may update the value of this attribute after each document has been transferred to the server or the server may provide this value after all documents have been transferred to the server, depending on implementation. In other words, while the job is in the pre-processing state and when the job is in the held state with the job-state-reasons containing a document-needed value, the value of the total-job-octets job status attribute depends on implementation and may not correctly reflect the size of the job. In computing this value, the server shall include the multiplicative factors contributed by the (1) copy-count document attribute, (2) the results-profile.job-copies job attribute element and (3) multiple values of the results- profile job attribute, independent of whether the printer can process multiple copies of the job or document without making multiple passes over the job or document data and independent of the value of the output document attribute (page-collate vs. no-page-collate). Thus the server computation is independent of the printer implementation and shall be: a) Document contribution: Multiply each copy-count by the size of the document in octets. b) Add each document contribution together c) Job result contribution: Multiply the job size by the number job-copies in the result set. d) Add each job result contribution together e) Multiply the value by the number of values in the job's result-profile attribute." ::= { jmPrintJobInfoEntry 12 } jmJobPageCount OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "Job-page-count This attribute contains the number of source pages in the job that the server expects to image. The server shall compute this value by the following procedure: a) For each document in the job object, multiply the value of document's page-count attribute by the value of its copy- count attribute and call the result document-set-page-count. b) Add up all the document-set-page-counts from the previous step and call this sum the job-copy-page-count. c) For each job-result-set, multiply the value of job-copy- page-count from the previous step by the value of job-copies element of the job-result-set and call the result job-result- set-page-count. d) Add up all the job-result-set-page-counts from the previous step and set this sum into the job-page-count attribute. The value of this attribute is a measure of the amount of computation involved. The accuracy of this value is dependent on the accuracy of the page-count attribute in each document. If some documents have a page-count value of 0, the server may set the value of this attribute to 0 and not use it for scheduling." ::= { jmPrintJobInfoEntry 13 } -- -- Media Consumed Group (Optional) -- -- The objects in this group are optional. -- However, to claim conformance to this group, it is necessary to -- implement every object in the group. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- -- The Media Consumed group consists entirely of the -- jmMediaConsumedTable. -- The media consumed table contains the media used by this (print) job -- and the number of sheets consumed for each of these media summed -- over all the documents in the job. -- An agent may fill in the MediaConsumedTable when the job is accepted -- for printing by the server using the ISO DPA media-used document -- attribute values summed over the entire job. In this case, the value -- of the MediaConsumedSheetCount shall be 0. Then the system operator -- is able to determine the media needs of the job while the job is -- waiting to be printed. If the job needs media that are not ready in -- the printer(s), the job will be in the held state with the -- JobStateReasons set to (at least) the resources-needed value. In -- such cases, the MediaConsumed table can help the system operator sort -- out the conflicting demands for media. jmMediaConsumed OBJECT IDENTIFIER ::= { jmJobMonMIB 11 } jmMediaConsumedTable OBJECT-TYPE SYNTAX SEQUENCE OF JmMediaConsumedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains pairs of media indexes and the number of sheets of that media consumed by this job." ::= { jmMediaConsumed 1 } jmMediaConsumedEntry OBJECT-TYPE SYNTAX JmMediaConsumedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entries may exist in the table for each device index whose device type is `printer' and for each job." INDEX { hrDeviceIndex, jmJobIdentifier, jmMediaConsumedIndex } ::= { jmMediaConsumedTable 1 } JmMediaConsumedEntry ::= SEQUENCE { jmMediaConsumedIndex Ordinal16, -- optional jmMediaConsumedTypeIndex Ordinal16, -- optional jmMediaConsumedSheetCount Counter32 -- optional } jmMediaConsumedIndex OBJECT-TYPE SYNTAX Ordinal16 MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value used by the device to identify this medium entry in this job. Since jobs need not be persistent across power cycles of the device, these values are not expected to remain stable across sucessive device power cycles." ::= { jmMediaConsumedEntry 1 } jmMediaConsumedTypeIndex OBJECT-TYPE SYNTAX Ordinal16 MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute indicates the medium type (index into the MediaSupportedTable) that have been consumed by the printer(s) for this print job." ::= { jmMediaConsumedEntry 2 } jmMediaConsumedSheetCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute indicates the number of sheets of the medium that have been consumed by the printer(s) for this print job. A value of 0 may be set when the job is accepted for printing to indicate that the job expects to use media of this type." ::= { jmMediaConsumedEntry 3 } -- -- Color Impressions Consumed Group (Optional) -- -- The objects in this group are optional. -- However, to claim conformance to this group, it is necessary to -- implement every object in the group. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- -- The Color Impressions Consumed group consists entirely of the -- jmColorImpressionsConsumedTable. -- The Color Impressions Consumed table contains the colorant used by -- this job and the number of impressions produced for each colorant -- summed over all the documents in the job. jmColorImpressionsConsumed OBJECT IDENTIFIER ::= { jmJobMonMIB 12 } jmColorImpressionsConsumedTable OBJECT-TYPE SYNTAX SEQUENCE OF JmColorImpressionsConsumedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains pairs of colorant indexes and the number of impressions of that colorant consumed by this job." ::= { jmColorImpressionsConsumed 1 } jmColorImpressionsConsumedEntry OBJECT-TYPE SYNTAX JmColorImpressionsConsumedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entries may exist in the table for each device index whose device type is 'printer' and for each job." INDEX { hrDeviceIndex, jmJobIdentifier, jmColorImpressionsConsumedIndex } ::= { jmColorImpressionsConsumedTable 1 } JmColorImpressionsConsumedEntry ::= SEQUENCE { jmColorImpressionsConsumedIndex Ordinal16, -- optional jmColorImpressionsConsumedTypeIndex Ordinal16, -- optional jmColorImpressionsConsumedImpressionCount Counter32 -- optional } jmColorImpressionsConsumedIndex OBJECT-TYPE SYNTAX Ordinal16 MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value used by the printer to identify this colorant entry for this job. Since jobs need not be persistent across power cycles of the printer, these values are not expected to remain stable across sucessive printer power cycles." ::= { jmColorImpressionsConsumedEntry 1 } jmColorImpressionsConsumedTypeIndex OBJECT-TYPE SYNTAX Ordinal16 MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute indicates one of the colorant type (index into the prtColorantsTable) that have been consumed by the printer(s) for this print job." ::= { jmColorImpressionsConsumedEntry 2 } jmColorImpressionsConsumedImpressionCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "This attribute indicates the number of impressions that have been consumed by the printer(s) for this print job and this colorant." ::= { jmColorImpressionsConsumedEntry 3 } -- -- The Document Information Group (Mandatory) -- -- The implementation of every object in this group is mandatory. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- -- The Document Information group consists entirely of the -- jmDocInfoTable. -- -- The Document Information table provides information about each -- document in each job that is contained in the printer. Each document -- entry is accessed using the job identifier and the document sequence -- number which the printer assigns starting at 1 for each job. jmDocInfo OBJECT IDENTIFIER ::= { jmJobMonMIB 13 } jmDocInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF XdocInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of mandatory document information which is per document which in turn is per job and which in turn is per (logical or physical) printer. Document information applies to an individual document contained in a job. The specifications for each object is taken directly from the ISO 10175 Document Printing Application (DPA) standard clause 9.3, Document Attributes." ::= { jmDocInfo 1} jmDocInfoEntry OBJECT-TYPE SYNTAX XdocInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each document in each job, no matter what the state of the job is. Each printer is represented as a separate device entry in the hostmib device table as a device of type 'printer'. The management station references each job using the jmJobIdentifier assigned by the server that accepted job submission (by some other protocol)." INDEX { hrDeviceIndex, jmJobIdentifier, jmDocSequenceNumber } ::= { jmDocInfoTable 1 } XdocInfoEntry ::= SEQUENCE { jmDocSequenceNumber Ordinal32, -- mandatory jmDocName CodeIndexedStringIndex, -- mandatory jmDocFileName CodeIndexedStringIndex, -- mandatory jmDocType DPADocType, -- mandatory jmDocFormat PrtInterpreterLangFamily, -- mandatory jmDocFormatVariants CodeIndexedStringIndex, -- mandatory jmDocFormatVersion CodeIndexedStringIndex, -- mandatory jmDocOctetCount Cardinal64, -- mandatory jmDocState DPADocState -- mandatory } jmDocSequenceNumber OBJECT-TYPE SYNTAX Ordinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, a row shall not exist in this table if the job does not (yet) have any documents. A 32-bit index is required, since the ISO DPA has a 2**31-1 maximum-value integer for the document-sequence-number attribute. ISO DPA: Document-sequence-number This attribute specifies the number of this document in relation to the set of documents in this job. The first document in the job is numbered 1. The document-sequence-number is not passed as an input attribute in the print operation. Documents are assumed to be submitted in order (i.e., document number 1 followed by document number 2, etc.). A server shall return a value of 0 for this attribute if the first Print operation has not submitted a document (e.g., the first-document element is omitted in the create-job element of the Print operation). If a document is cancelled in a multi-document job, the document-sequence numbers of the other documents shall not change." ::= { jmDocInfoEntry 1 } jmDocName OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, the single jmDocName object is both the document name for scan-to-file and the document name for file-to-print. ISO DPA: Document-name This attribute supplies a human readable string for the document. This string is used for naming the document in a human-readable 'free-form' fashion. This attribute is intended for enabling a user or the user's application to convey a document name that may be printed on a start sheet, returned in a ListObjectAttributes result, or used in notification or logging messages. If this attribute is not specified, no document name is assumed, but implementation specific defaults are allowed, such as the simple-name part of the value of the document-file-name attribute. It is suggested, however, that the server not supply additional text for this attribute when printing its value (e.g. on a start sheet). This string only has meaning to the clients and can therefore take several forms, e.g. the name of a mail folder, name of a revisable document, the file specification minus the file path, the title of a document, etc." ::= { jmDocInfoEntry 2 } jmDocFileName OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, the single jmDocFileName object is both the document file name for scan-to-file and the document name for file-to-print. If this attribute is specified for a scan-to-print job, the result of the scan is also copied to the file specified by jmDocFileName as a side-effect of the scan-to-print operation. ISO DPA: Document-file-name This attribute specifies the file name of the document, if the document came from a file. The file name may include the full path to the file, in which case the name-syntax element of the DistinguishedNameString data type shall specify the syntax of the file name. If the document did not come from a file, the client should not specify this attribute." ::= { jmDocInfoEntry 3 } jmDocType OBJECT-TYPE SYNTAX DPADocType MAX-ACCESS read-only STATUS current DESCRIPTION "Document-type This attribute indicates that the document being passed by the current Print abstract-operation is either a printable document, a font, or a resource. How resources are managed during the printing process is necessarily dependent on the characteristics of the server and printer implementations. These methods are considered implementation-specific, and shall not be dictated by ISO/IEC 10175. In particular, ISO/IEC 10175 does not require that resources be passed in advance of the documents that use them; i.e., resources may be passed to the server in any order within the job, subject only to the requirement that the resources be present at the server before processing begins on the documents that use them." ::= { jmDocInfoEntry 4 } jmDocFormat OBJECT-TYPE SYNTAX PrtInterpreterLangFamily MAX-ACCESS read-only STATUS current DESCRIPTION "The interpreter language family enum value registered by IANA is used according to RFC 1759 (see prtInterpreterLangFamily in RFC 1759). For the job monitoring MIB, an index into the prtInterpretersTable is not used, since the exact format of the document need not conform exactly to one of the printer's intepreters and, furthermore, the device need not even be a printer (so that RFC 1759 need not be used for non-printers). For scan-to-file jobs, the jmDocFormat object specifies the document format desired as a result of the scan. ISO DPA: Document-format This attribute identifies the overall print document format used for the document. It consists of three elements, a document-format, a document-format-variants and a document- format-version. The latter two elements are optional. The document-format element identifies a particular family of document formats, of which there may exist several versions or variants. The document-format-variants and document-format- version elements identify a specific instance of a document format. The variant refers to a particular functional subset of a format. For example, the format PostScript has variants of level 1 and level 2, and the format PCL has several variants, including PCL4 and PCL5. The version distinguishes among successive releases of the same basic format and variant. For example, successive versions of Xerox Interpress include versions 2.0, 2.1, 3.0, 3.1, etc." ::= { jmDocInfoEntry 5 } jmDocFormatVariants OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "For scan-to-file jobs, the jmDocFormatVariants object specifies the document format variant desired as a result of the scan. ISO DPA: Document-format-variants The document-format-variants and document-format-version elements identify a specific instance of a document format. The variant refers to a particular functional subset of a format. For example, the format PostScript has variants of level 1 and level 2, and the format PCL has several variants, including PCL4 and PCL5. The document-format-variants element consiststs of a single text string. If it is necessary to identify more than one variant, the respective variant values shall all be contained in the document-format-variants element, separated from one another by commas. If the client omits the document-format-variants or document- format-version elements, the server may supply a format- specific default which will restrict the outcome of the rules described in the next paragraph. This rule shall not cause a job to fail in validation if it would have succeeded with the rules of the next paragraph. If the client omits the document-format-variants element, the server shall print the document if the requested printer's document-formats-supported attribute contains a DocFormat which differs from the specified document-format only in the value of its document-format-variants. If the document-format-variants is omitted from the printer document-formats-supported attribute, the printer shall accept documents with any variant of the specified format. Similar rules apply if the document- format-version element is omitted. If the client omits the document-format-variants or document- format-version elements, the server may supply a format- specific default. Such a default shall be one that could have matched a document-format according to the rules of the preceding paragraph. Proprietary values for the document-format, document-format- variants, and document-format-version elements are assigned by the owners of those formats. Annex F contains a set of document-formats and variants for various commercially available formats and variants that are currently in common use." ::= { jmDocInfoEntry 6 } jmDocFormatVersion OBJECT-TYPE SYNTAX CodeIndexedStringIndex MAX-ACCESS read-only STATUS current DESCRIPTION "For scan-to-file jobs, the jmDocFormatVersion object specifies the document format version desired as a result of the scan. ISO DPA: Document-format-version The version distinguishes among successive releases of the same basic format and variant. For example, successive versions of Xerox Interpress include versions 2.0, 2.1, 3.0, 3.1, etc." ::= { jmDocInfoEntry 7 } jmDocOctetCount OBJECT-TYPE SYNTAX Cardinal64 MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, the value of the jmDocOctetCount is used for both scan-to-file and file-to-print jobs. In the case of scan-to-file jobs, the value starts at 0 and counts the number of octets scanned. ISO DPA: Octet-count This attribute specifies the size of the document in octets." ::= { jmDocInfoEntry 8 } jmDocState OBJECT-TYPE SYNTAX DPADocState MAX-ACCESS read-only STATUS current DESCRIPTION "For the MIB, If the document is being scanned and printed in the same (level 1) job, the jmDocState object represents the state of the document being printed, since level 1 scan-to-print jobs must scan directly to the printer ISO DPA: Document-state This attribute identifies the current state of the document [whether being scanned or printed.]." ::= { jmDocInfoEntry 9 } -- -- Print Document Information Group (Conditionally Mandatory) -- -- The Print Document Information group is Conditionally -- Mandatory, i.e., it is mandatory for an agent that supports a -- (spooling) print system, as opposed to a printer. -- -- The Print Document Information group consists entirely of -- the jmPrintDocInfoTable. -- The Print Document Information table provides additional -- (print-centric) information about each document that was (1) -- submitted to or (2) assigned to the (logical or physical) printer -- specified by hrDeviceIndex. jmPrintDocInfo OBJECT IDENTIFIER ::= { jmJobMonMIB 14 } jmPrintDocInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF JmPrintDocInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of print-centric document information which is per document which in turn is per job and which in turn is per (logical or physical) printer. Document information applies to an individual document contained in the job. The specifications for each object is taken directly from the ISO 10175 Document Printing Application (DPA) standard clause 9.3, Document Attributes and is print-centric." ::= { jmPrintDocInfo 1} jmPrintDocInfoEntry OBJECT-TYPE SYNTAX JmPrintDocInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each job in the device, no matter what the state of the job is. Each printer is represented as a separate device entry in the hostmib device table as a device of type 'printer'. The management station references each job using the jmJobIdentifier assigned by the server that accepted job submission (by some other protocol). The management station accesses each document in the job using the jmDocSequenceNumber from the DocInfoTable. This table augments the mandatory Document Information table in this MIB." AUGMENTS { jmDocInfoEntry } ::= { jmPrintDocInfoTable 1 } JmPrintDocInfoEntry ::= SEQUENCE { -- Note that objects in this table are print-centric and -- Conditionally Mandatory, i.e., are mandatory for an agent that -- supports a (spooling) print system, as opposed to a printer. -- This PrintDocInfo table augments the mandatory DocInfo table. jmDocDefaultMediumIndex Cardinal16, -- cond. mandatory jmDocDefaultInputTrayIndex Cardinal16, -- cond. mandatory jmDocOutput DPADocOutput, -- cond. mandatory jmDocSides INTEGER(1..2), -- cond. mandatory jmDocCopyCount Cardinal32, -- cond. mandatory jmDocCopiesCompleted Counter32 -- cond. mandatory } jmDocDefaultMediumIndex OBJECT-TYPE SYNTAX Cardinal16 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of this object is the index of the medium in the jmMediaSupportedTable that is the default medium for this document. An index value of 0 indicates that neither the submitting client, the print server, nor the printer has specified a default medium for this document. ISO DPA: Default-medium This attribute identifies a medium that the server shall use as the medium default for the pages of the document that require a specification. Standard values are defined in the specification of the medium- identifier medium attribute. If the page-media-select attribute is specified (either by the client or by a server default, i.e., the page-media-select attribute of the initial-value-job object specified by the logical or physical printer), then the server shall use the page-media-select value to override the default-medium specification on a page by page basis. The default-medium attribute may contain a value of id-val- generic-none (see 9.1.2) indicating that the server shall not use a default medium. Instead, the server shall rely on lower precedence document attributes (such as default-input-tray) for the media specification. If the document data, itself, specifies media, such specification shall override the default-medium attribute on a page by page basis. If the document data specifies media which are not also values of media-used, then a printer may receive a document which requires media that are not ready. In such a case, an implementation may either abort the document or try printing the document on some alternative medium, such as the default medium. A client has numerous ways to specify the media to be used when printing a document and different document pages can be specified in different ways. The client can specify the media in the document contents or with attributes. Some attributes override the document contents, and other attributes may be overridden by the document contents. In addition, the client can specify the media by name or by the input-tray containing it. Before printing each page of a document, the server determines the medium or input-tray for that page by finding the first condition in the list of numbered steps below that is satisfied. For this discussion, either the medium or the input- tray is sufficient information: a) If page-media-select has a medium value for the current page, use that medium, regardless of document contents and other attributes. b) If input-tray-select has a value, use that tray. c) If the document contents specify a medium, and that medium is the same as the value of one of the original-medium elements in the media-substitution attribute, then use the corresponding substitution-medium in the media-substitution attribute. d) If the document contents specify a medium, use that medium. e) If the document contents specify an input-tray, use that input-tray. f) If the default-medium has a value, and the document format interpreter allows its use, and that medium is the same as the value of one of the original-medium elements in media- substitution attribute, then use the corresponding substitution-medium in the media-substitution attribute. g) If the default-medium has a value and the document format interpreter allows its use, use the default-medium. h) If the default-input-tray has a value and the document format interpreter allows its use, use the default-input-tray. i) Use the medium or input-tray selected by the document format processor in the printer. This selection is implementation-dependent." ::= { jmPrintDocInfoEntry 1 } jmDocDefaultInputTrayIndex OBJECT-TYPE SYNTAX Cardinal16 MAX-ACCESS read-only STATUS current DESCRIPTION "The value of this object is the index of the input sub-unit in the prtInputTable in the printer MIB that is the default input tray for this document. An index value of 0 indicates that neither the submitting client, the print server, nor printer has specified a default input tray for this document. ISO DPA: Default-input-tray This attribute identifies an input-tray that the server shall use as the input-tray default for the pages of the document that require a specification. The correspondence between the simple-name of an input-tray (alphanumeric or numeric) and the actual tray in the printer is printer-dependent, and a tray named by such a simple-name may also have an OBJECT IDENTIFER that names it as well. A server may try to convert a simple-name received from a client to one of the server's OIDs, depending on implementation. However, a server shall always return an input- tray as an OID to the client if the server identifies the input-tray using an OID. Examples: The simple-name strings: envelope, top, 2, or 02, or the OID value: id-val-input-tray-top. If the default-medium attribute is specified (either by the client or by a server default, i.e., the default-medium attribute of the initial-value-job object specified by the logical or physical printer), then the server shall use the default-medium value and shall ignore the default-input-tray attribute, if specified. If the page-media-select attribute is specified (either by the client or by a server default, i.e., the page-media-select attribute of the initial-value-job object specified by the logical or physical printer), then the server shall use the page-media-select value to override the default- input-tray specification on a page by page basis. If the document data, itself, specifies media or input trays, such specification shall override the default-input-tray attribute on a page by page basis. If the document data specifies media or input-trays which are not also values of media-used or input-trays-used, respectively, then a printer may receive a document which requires media or input-trays which are not ready. In such a case, an implementation may either abort the document or try printing the document using some alternative input-tray, such as the default input-tray. The following standard values are defined: top The top input tray in the printer. (id- val-input-tray-top) middle The middle input tray in the printer. (id- val-input-tray-middle) bottom The bottom input tray in the printer. (id- val-input-tray-bottom) envelope The envelope input tray in the printer. (id-val-input-tray-envelope) manual The manual feed input tray in the printer. (id-val-input-tray-manual) large-capacity The large capacity input tray in the printer. (id-val-input-tray-large- capacity) main The main input tray (id-val-input-tray- main) side The side input tray (id-val-input-tray- side)" ::= { jmPrintDocInfoEntry 2 } jmDocOutput OBJECT-TYPE SYNTAX DPADocOutput MAX-ACCESS read-only STATUS current DESCRIPTION "This object is bit coded, so that multiple document output requests may be made for the document. Each bit corresponds to one of the ISO DPA output OIDs. ISO DPA: Output This attribute identifies the output processing for the media on which the document is to be printed." ::= { jmPrintDocInfoEntry 3 } jmDocSides OBJECT-TYPE SYNTAX INTEGER(1..2) MAX-ACCESS read-only STATUS current DESCRIPTION "NOTE - The jmDocSides attribute is for print jobs. A scanner-specific object, jmDocScanSides is needed to be added, so that input and output sides can be specified independently. ISO DPA: Sides This attribute specifies the number of printable surfaces of the medium to be imaged." ::= { jmPrintDocInfoEntry 4 } jmDocCopyCount OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-only STATUS current DESCRIPTION "Copy-count This attribute specifies the number of copies of the documents, or of the selected pages of the document, to be printed. A value of 1 for copy-count shall generate a single human perceptible copy of the electronic document. If a value of 0 is supplied, the job may be processed normally, but no print output shall be produced or the server shall return an unsupported-attribute-value AttributeError." ::= { jmPrintDocInfoEntry 5 } jmDocCopiesCompleted OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Copies-completed This attribute indicates the number of complete copies of this document that have been printed. Some printers print multiple copies of each individual page of a document, completing the printing of all copies at the same time, printing as many of these pages as necessary to satisfy the copy count. The value of copies-completed is 0 if printing has not started for this document." ::= { jmPrintDocInfoEntry 6 } -- -- The Media Supported Group (Optional) -- -- The Media Supported group is optional. -- However, to claim conformance to this group, it is necessary to -- implement every object in the group. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. -- The Media Supported group consists solely of the -- jmMediaSupportedTable. -- The media supported table contains the media supported by this -- printer, whether installed in the input tray(s) (i.e., ready) or not. -- Operator intervention is required in order to use a supported medium -- that is not ready. -- Representing the supported media (which is the system Administrator's -- policy), as opposed to what is ready, is a deviation from the -- strategy agreed to by the IETF Printer MIB working group in -- developing RFC 1759. Representing MediaSupported is moving away from -- representing just the output device and moving towards representing -- the service. -- The objects in this table are read-write, so that implementations may -- require that the system adminstrator set the values using SNMP. -- Other implementations may determine the supported media by querying -- the server or service, in which case the objects in this table will -- be read-only. -- -- NOTE - If SNMPv1 is being used, the security capabilities are so weak -- as to make it unwise to implement the MediaTable as read-write. -- The objects in this group are optional. -- However, to claim conformance to this group, -- it is necessary to implement every object in the group. -- NOTE - SNMP conformance to a group merely means that each object -- shall be responded to on a Get; returning actual values is optional. jmMediaSupported OBJECT IDENTIFIER ::= { jmJobMonMIB 15 } jmMediaSupportedTable OBJECT-TYPE SYNTAX SEQUENCE OF JmMediaSupportedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of supported media for this printer." ::= { jmMediaSupported 1 } jmMediaSupportedEntry OBJECT-TYPE SYNTAX JmMediaSupportedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry exists in this table for each medium that the system administrator has established as the policy for support by this pritner. Each entry containsaA description of a medium that is supported by this printer. Entries may exist in the table for each device index whose device type is 'printer'" INDEX { hrDeviceIndex, jmMediaSupportedIndex } ::= { jmMediaSupportedTable 1} JmMediaSupportedEntry ::= SEQUENCE { jmMediaSupportedIndex Ordinal16, -- optional jmMediaSupportedRowStatus RowStatus, -- optional jmMediaSupportedASCIIName DisplayString, -- optional jmMediaSupportedName InternationalDisplayString,-- optional jmMediaSupportedDescription InternationalDisplayString,-- optional jmMediaSupportedSizeUnit MediaUnit, -- optional jmMediaSupportedXDim Cardinal32, -- optional jmMediaSupportedYDim Cardinal32, -- optional jmMediaSupportedType InternationalDisplayString,-- optional jmMediaSupportedWeight Cardinal32, -- optional jmMediaSupportedColor InternationalDisplayString -- optional } jmMediaSupportedIndex OBJECT-TYPE SYNTAX Ordinal16 MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value used by the printer to identify this medium entry. Since media supported entries may or may not be persistent across power cycles of the printer, depending on implementation, these values may or may not remain stable across sucessive printer power cycles. However, printers with disks shall keep the media supported as persistent." ::= { jmMediaSupportedEntry 1 } jmMediaSupportedRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-write STATUS current DESCRIPTION "This object manages the row status of this conceptual row in the 'jmMediaSupportedTable'." ::= { jmMediaSupportedEntry 2 } jmMediaSupportedASCIIName OBJECT-TYPE SYNTAX DisplayString -- not localizable MAX-ACCESS read-write STATUS current DESCRIPTION "The unlocalized human-readable name in ASCII of this medium. For the MIB, instead of using enums, use the ISO DPA medium descriptive name of the medium. Then the system administrator can add additional media to this supported table. Also using text string values follows the precedant in RFC 1759 for prtInputMediaName which uses string values and lists the ISO DPA descriptive names in its Appendix C. This object is supplied since it corresponds directly to the ISO DPA medium-name attribute which are NameOrOid. The ISO DPA standard media are identified as ISO DPA OIDs. Then a printer does not need to search through the localization table to find a match. ISO DPA: Name This attribute identifies the medium. Examples are: iso-a4- white, a." ::= { jmMediaSupportedEntry 3 } jmMediaSupportedName OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..255)) -- localized MAX-ACCESS read-write STATUS current DESCRIPTION "The localized human-readable name of this medium. For the MIB, instead of using enums, use the ISO DPA medium descriptive name of the medium. Then the system administrator can add additional media to this supported table. Also using text string values follows the precedant in RFC 1759 for prtInputMediaName which uses string values and lists the ISO DPA descriptive names in its Appendix C. However, go beyond the Printer MIB and make this object localizable, so that it is more meaningful to end-users and system operators. RFC 1759 says that prtInputMediaName is not processed by the printer. If the printer does process prtInputMediaName, the printer can avoid seaching for a localization that the printer understands by using the jmMediaSupportedASCIIName directly, instead. Since the type is InternationDisplayString, the value shall be localized according to the value of jmGenCurrentLocalizationIndex. Examples: iso-a4-yellow, iso-a4-jeune." ::= { jmMediaSupportedEntry 4 } jmMediaSupportedDescription OBJECT-TYPE SYNTAX InternationalDisplayString (SIZE(0..255)) -- localized MAX-ACCESS read-write STATUS current DESCRIPTION "The localized human-readable description of this medium. Since the type is InternationDisplayString, the value shall be localized according to the value of jmGenCurrentLocalizationIndex." ::= { jmMediaSupportedEntry 5 } jmMediaSupportedSizeUnit OBJECT-TYPE SYNTAX MediaUnit MAX-ACCESS read-only STATUS current DESCRIPTION "The units of measure of media size for use in calculating and relaying dimensional values for all media in the jmMediaSupportedTable. NOTE - The MediaUnit textual-convention is an enum imported from RFC 1759 that specifies either: micrometers or .0001 inches." ::= { jmMediaSupportedEntry 6 } jmMediaSupportedXDim OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-write STATUS current DESCRIPTION "X-dimension The attribute indicates the x-dimension of the medium as measured in the Reference Coordinate System (see DPA 6.5.4) and expressed in jmMediaSupportedSizeUnit's." ::= { jmMediaSupportedEntry 7 } jmMediaSupportedYDim OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-write STATUS current DESCRIPTION "Y-dimension The attribute indicates the y-dimension of the medium as measured in the Reference Coordinate System (see DPA 6.5.4) and expressed in jmMediaSupportedSizeUnit's." ::= { jmMediaSupportedEntry 8 } jmMediaSupportedType OBJECT-TYPE SYNTAX InternationalDisplayString -- localized MAX-ACCESS read-write STATUS current DESCRIPTION "For the MIB: Instead of assigning enums, use the ISO DPA descriptive name text string of the medium-type as the value. Then the system administrator can add additional media types. Also using standard text string values follows the precedant in RFC 1759 for prtInputMediaType which uses the same standard text string values. However, go beyond the Printer MIB and make this object localizable, so that it is more meaningful to end-users and system operators. RFC 1759 says that prtInputMediaType need not be processed by the printer. If the printer does, there should be a localization in this table that has the same values as the prtInputMediaType object in the printer MIB. Since the type is InternationDisplayString, the value shall be localized according to the value of jmGenCurrentLocalizationIndex. ISO DPA: Medium-type This attribute identifies the type of this medium. (e.g. stationery, envelope, transparency, etc.) The following standard [text string] values are defined [for English localizations]: stationery Separately cut sheets of an opaque material (id-val-medium-type-stationery) transparency Separately cut sheets of a transparent material (id-val-medium-type-transparency) envelope Envelopes that can be used for conventional mailing purposes (id-val-medium-type-envelope) envelope- Envelopes that are not preprinted and have no plain windows (id-val-medium-type-envelope-plain) envelope- Envelopes that have windows for addressing window purposes (id-val-medium-type-envelope-window) continuous- Continuously connected sheets of an opaque long material connected along the long edge (id- val-medium-type-continuous-long) continuous- Continuously connected sheets of an opaque short material connected along the short edge (id- val-medium-type-continuous-short) tab-stock Media with tabs (id-val-medium-type-tab) multi-part- Form medium composed of multiple layers not form pre-attached to one another; each sheet may be drawn separately from an input source (id- val-medium-multi-part-form) labels Label-stock (id-val-medium-labels) multi-layer Form medium composed of multiple layers which are pre-attached to one another, e.g. for use with impact printers (id-val-medium-type- multi-layer)." ::= { jmMediaSupportedEntry 9 } jmMediaSupportedWeight OBJECT-TYPE SYNTAX Cardinal32 MAX-ACCESS read-write STATUS current DESCRIPTION "Weight This attribute indicates the weight of this medium in grams per square metre." ::= { jmMediaSupportedEntry 10 } jmMediaSupportedColor OBJECT-TYPE SYNTAX InternationalDisplayString -- localized MAX-ACCESS read-write STATUS current DESCRIPTION "For the MIB: Instead of assigning enums, use the ISO DPA descriptive name text string of the medium-color as the value. Then the system administrator can add additional media colors. Also using standard text string values follows the precedant in RFC 1759 for prtInputMediaColor which uses the same standard text string values. However, go beyond the Printer MIB and make this object localizable, so that it is more meaningful to end-users and system operators. RFC 1759 says that prtInputMediaColor need not be processed by the printer. If the printer does, there should be a localization in this table that has the same values as the prtInputMediaColor object in the printer MIB. Since the type is InternationDisplayString, the value shall be localized according to the value of jmGenCurrentLocalizationIndex. ISO DPA: Color This attribute indicates the colour of this medium. The following standard [text string] values are defined [for English localizations]: white White colour (id-val-medium-colour-white) pink Pink colour (id-val-medium-colour-pink) yellow Yellow colour (id-val-medium-colour-yellow) buff Buff colour (id-val-medium-colour-buff) goldenrod Goldenrod colour (id-val-medium-colour- goldenrod) blue Blue colour (id-val-medium-colour-blue) green Green colour (id-val-medium-colour-green) transparent Transparent (no colour) (id-val-medium-colour- -untinted transparent-untinted)" ::= { jmMediaSupportedEntry 11 } -- -- Job Alert Group (Mandatory) -- -- This group describes notifications (SNMP trap messages) to be -- generated for state changes in Job and Document objects being -- processed by the printing system. -- -- Implementation of every object in this group is mandatory. -- jmJobAlert OBJECT IDENTIFIER ::= { jmJobMonMIB 16 } jmJobAlertReason OBJECT-TYPE SYNTAX UInteger32 MAX-ACCESS not-accessible STATUS current DESCRIPTION "This object has an instantaneous value when a jmJobV2StateAlert notification is raised, which is sent in the variable bindings of any generated SNMPv2-Trap PDUs. It is used to inform the recipient of the trap what caused it to be sent. This value is a mask whose bits have the following meanings: Bit Number Meaning 0 (0x01) the job's jmJobCurrentState attribute changed. 1 (0x02) the job's jmJobPriority attribute changed. 2 (0x04) the job's jmJobStateReasons attribute changed. 3 (0x08) the job's jmMessageFromAdministrator attribute changed. 4 (0x10) the job's jmDevicesAssigned attribute changed. 5 (0x20) the job's jmDeviceStateOfDevicesAssigned attribute changed. All other bits in the mask are currently undefined." ::= { jmJobAlert 1 } jmJobAlertTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time that this alert was generated. NOTE - this is a best efforts basis. If the host upon which the agent is running does not provide a means to get the up time in ticks, then the agent may return a value that is not meaningful." ::= { jmJobAlert 2 } jmJobV1Alert OBJECT-IDENTITY STATUS current DESCRIPTION "The value of the enterprise-specific OID in an SNMPv1 trap sent signalling a job status change event." ::= { jmJobAlert 3 } jmJobV2AlertPrefix OBJECT IDENTIFIER ::= { jmJobV1Alert 0 } jmJobV2StateAlert NOTIFICATION-TYPE OBJECTS { jmJobAlertReason, hrDeviceIndex, jmJobIdentifier, jmJobPriority, jmJobSourceType, jmJobDestinationType, jmJobCurrentState, jmJobPreviousState, jmJobStateReasons, jmJobAlertTime } STATUS current DESCRIPTION "This trap is sent whenever the state of a job changes. The 'state of a job' is comprised by the aggregate values of the jmJobCurrentState, jmJobStateReasons, jmJobPriority, jmJobMessageFromAdministrator and jmJobDeviceStateOfDevicesAssigned fields of the job's jmJobTable entry: This notification is sent whenever any of these values changes. NOTE - the hrDeviceIndex is included for convenience, even though the Printer MIB (RFC 1759) doesn’t include hrDeviceIndex in its traps. Then the management station doesn’t have to parse the received OIDs on a trap in order to discover which device traped. NOTE - the addition of an entire row corresponds to the acceptance of another job by the server. The state of the job changes from unknown to a specific value (usually pending). Therefore, the agent shall generate a trap when a job is accepted (so that the management station can display the newly arrived job in a timely fashion). Similarly when the server removes a job because the job as been in the completed state for a sufficient time or the job has been deleted by a Delete operationm, the SNMP agent shall reflect that removal by removing the row from the job tables, and shall generate a trap (since the state of the job has changed to non-existent). The IETF Printer MIB maintains a table which serves as a sort of 'audit-trail' of recent alerts. There is no need for such a table here, since the jmJobTable will serve virtually the same purpose. As with all SNMP notifications, critical applications cannot completely rely upon delivery: some amount of polling is recommended. The variable-bindings of this trap have been chosen to give as much description of the new Job state as possible while keeping trap messages reasonably concise (generally a few hundred octets at most). The most common reasons for sending this notification are expected to be that the job's jmJobCurrentState or jmJobStateReasons (or both) have changed--both values, and the jmJobPreviousState are included in the variable-bindings. If other information is required, the jmJobIdentifier value and hrDeviceIndex are provided; this can be used to obtain the full job table entry. This notification has the following special semantics: o If the job's jmJobClientID field is not empty, its value will also be appended to trap object ID. This trap OID qualifier allows job-submission and monitoring applications to limit the alerts they receive to ones generated by jobs which they have submitted (by making the appropriate entries in the SNMPv2-PARTY-MIB tables)." ::= { jmJobV2AlertPrefix 1 } -- Note that the SNMPv2 to SNMPv1 translation rules dictate that the -- preceding structure will result in SNMPv1 traps of the following -- form: -- -- jmJobAlert TRAP-TYPE -- ENTERPRISE jobV1Alert -- VARIABLE { hrDeviceIndex, jmJobAlertReason, jmJobIdentifier, -- jmJobPriority, jmJobSourceType, jmJobDestinationType, -- jmJobCurrentState, jmJobPreviousState, -- jmJobStateReasons } -- DESCRIPTION -- "This trap is sent whenever a job changes state." -- ::= 1 jmDocV1Alert OBJECT-IDENTITY STATUS current DESCRIPTION "The value of the enterprise-specific OID in an SNMPv1 trap sent signalling a critical event in the jmDocAlertTable." ::= { jmJobAlert 4 } jmV2DocStateAlert NOTIFICATION-TYPE OBJECTS { hrDeviceIndex, jmJobIdentifier, jmDocSequenceNumber, jmJobSourceType, jmJobDestinationType, jmDocState } STATUS current DESCRIPTION "This trap is sent whenever the state of one of the documents in a job changes. The state of a single document is represented in the jmJobDocumentTable column jmDocumentState. The document's job's jmJobIdentifier and jmDocumentSequence are include in the trap's variable bindings; these can be used to reference the document's jmDocumentTable entry. The new jmDocumentState value is also included in the bindings. NOTE - the addition of an entire row corresponds to the acceptance of another document (in a job) by the server. The state of the document changes from unknown to a specific value (usually transfer pending). Therefore, the agent generates a trap when a document (within a job) is accepted (so that the management station can display the newly arrived document in a timely fashion)." ::= { jmJobV2AlertPrefix 2 } -- Note that the SNMPv2 to SNMPv1 translation rules dictate that the -- preceding structure will result in SNMPv1 traps of the following -- form: -- -- jmDocAlert TRAP-TYPE -- ENTERPRISE jobV1Alert -- VARIABLE { hrDeviceIndex, jmJobIdentifier, jmDocSequenceNumber, -- jmJobSourceType, jmJobDestinationType, -- jmDocState } -- DESCRIPTION -- "This trap is sent whenever a document (in a job) changes -- state." -- ::= 1 -- Conformance Information jmJobMonMIBConformance OBJECT IDENTIFIER ::= { jmJobMonMIB 2 } -- compliance statements jmJobMonMIBCoreComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The mandatory compliance statement for the agents that implement the job information MIB, i.e., all the mandatory groups." MODULE -- this module MANDATORY-GROUPS { jmJobInfoGroup, jmDevicesAssignedGroup, jmDocInfoGroup, jmJobAlertGroup } -- The jmPrintJobGroup and jmPrintDocGroup are conditionally -- mandatory, i.e., are mandatory for an agent that supports a -- (spooling) print system, as opposed to a printer. -- The jmOptionalJobInfoGroup, jmPrintJobInfoGroup, -- jmMediaConsumedGroup, jmColorImpressionsConsumedGroup, -- jmPrintDocInfoGroup, and jmMediaSupportedGroup -- are completely optional. ::= { jmJobMonMIBConformance 6 } jmJobMonMIBOptionalJobInfoComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the agents that implement the optional Optional Job Information group." MODULE -- this module MANDATORY-GROUPS { jmOptionalJobInfoGroup } ::= { jmJobMonMIBConformance 9 } jmJobMonMIBPrintJobInfoComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the agents that implement the conditionally mandatory Print Job and Print Document groups. The Print Job group and Print Document group are conditionally mandatory groups, i.e., are mandatory for agents that manage (spooling) print systems, as opposed to printers." MODULE -- this module MANDATORY-GROUPS { jmPrintJobGroup, jmPrintDocGroup } ::= { jmJobMonMIBConformance 10 } jmJobMonMIBMediaConsumedComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the agents that implement the optional Media Consumed group." MODULE -- this module MANDATORY-GROUPS { jmMediaConsumedGroup } ::= { jmJobMonMIBConformance 11 } jmJobMonMIBColorImpressionsConsumedComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the agents that implement the optional Color Impressions Consumed group." MODULE -- this module MANDATORY-GROUPS { jmColorImpressionsConsumedGroup } ::= { jmJobMonMIBConformance 12 } jmJobMonMIBMediaSupportedComp MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the agents that implement the optional Media Supported group." MODULE -- this module MANDATORY-GROUPS { jmMediaSupportedGroup } OBJECT jmMediaSupportedRowStatus SYNTAX INTEGER { active(1) } MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedASCIIName MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedName MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedDescription MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedSizeUnit MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedXDim MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedYDim MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedType MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedWeight MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." OBJECT jmMediaSupportedColor MIN-ACCESS read-only DESCRIPTION "It is conformant to implement this object as read-only." ::= { jmJobMonMIBConformance 15 } jmJobMonMIBGroups OBJECT IDENTIFIER ::= { jmJobMonMIBConformance 2 } jmJobInfoGroup OBJECT-GROUP -- mandatory OBJECTS { jmJobIdentifier, jmJobClientId, jmJobName, jmJobOriginator, jmJobOwner, jmJobSourceType, jmJobDestinationType, jmJobSourceChannelType, jmJobDestinationChannelType, jmJobSubmittedCodedCharSet, jmJobNumberOfJobSets, jmJobCopies, jmJobUserName, jmJobAccountingInformation, jmJobCurrentState, jmJobStateReasons, jmJobPreviousState, jmJobNumberOfDocuments } STATUS current DESCRIPTION "The job information group." ::= { jmJobMonMIBGroups 7 } jmDevicesAssignedGroup OBJECT-GROUP -- mandatory OBJECTS { jmDevicesAssignedIndex, jmDeviceStateOfDevicesAssigned } STATUS current DESCRIPTION "The Devices Assigned group." ::= { jmJobMonMIBGroups 8 } jmOptionalJobInfoGroup OBJECT-GROUP -- optional OBJECTS { jmJobIdentifierOnClient, jmJobComment, jmJobPriority, jmJobEstimatedCompletionTime, jmJobSubmissionTime, jmJobInterveningJobs, jmJobMessageFromAdministrator, jmJobErrorCount, jmJobWarningCount, jmJobProcessingTime, jmJobCompletionTime } STATUS current DESCRIPTION "The optional job information group that is device-independent." ::= { jmJobMonMIBGroups 9 } jmPrintJobInfoGroup OBJECT-GROUP -- conditionally mandatory, -- i.e., mandatory if supporting a (spooling) -- print service, as opposed to a printer. OBJECTS { jmJobNumberOfJobSets, jmJobCopies, jmJobOutputBin, jmJobPrintAfter, jmJobPrinterNameRequested, jmJobStartedPrintingTime, jmJobCopiesCompleted, jmJobPagesCompleted, jmJobImpressionsCompleted, jmJobMediaSheetsCompleted, jmJobOctetsCompleted, jmJobTotalJobOctets, jmJobPageCount } STATUS current DESCRIPTION "The print job information group that is printer-centric and is conditionally mandatory, i.e., is mandatory for an agent that supports a (spooling) print system, as opposed to a printer." ::= { jmJobMonMIBGroups 10 } jmMediaConsumedGroup OBJECT-GROUP -- optional OBJECTS { jmMediaConsumedIndex, jmMediaConsumedTypeIndex, jmMediaConsumedSheetCount } STATUS current DESCRIPTION "The optional media consumed group." ::= { jmJobMonMIBGroups 11 } jmColorImpressionsConsumedGroup OBJECT-GROUP -- optional OBJECTS { jmColorImpressionsConsumedIndex, jmColorImpressionsConsumedTypeIndex, jmColorImpressionsConsumedImpressionCount } STATUS current DESCRIPTION "The optional color impressions consumed group." ::= { jmJobMonMIBGroups 12 } jmDocInfoGroup OBJECT-GROUP -- mandatory OBJECTS { jmDocSequenceNumber, jmDocName, jmDocFileName, jmDocType, jmDocFormat, jmDocFormatVariants, jmDocFormatVersion, jmDocOctetCount, jmDocState } STATUS current DESCRIPTION "The document information group." ::= { jmJobMonMIBGroups 13 } jmPrintDocInfoGroup OBJECT-GROUP -- conditionally mandatory OBJECTS { jmDocDefaultMediumIndex, jmDocDefaultInputTrayIndex, jmDocOutput, jmDocSides, jmDocCopyCount, jmDocCopiesCompleted } STATUS current DESCRIPTION "The print document information group that is print-centric and is conditionally mandatory, i.e., is mandatory for an agent that supports a (spooling) print system, as opposed to a printer." ::= { jmJobMonMIBGroups 14 } jmMediaSupportedGroup OBJECT-GROUP -- optional OBJECTS { jmMediaSupportedIndex, jmMediaSupportedRowStatus, jmMediaSupportedASCIIName, jmMediaSupportedName, jmMediaSupportedDescription, jmMediaSupportedSizeUnit, jmMediaSupportedXDim, jmMediaSupportedYDim, jmMediaSupportedType, jmMediaSupportedWeight, jmMediaSupportedColor } STATUS current DESCRIPTION "The media supported group." ::= { jmJobMonMIBGroups 15 } jmJobAlertGroup OBJECT-GROUP -- mandatory OBJECTS { jmJobAlertReason } STATUS current DESCRIPTION "The job/document alert group." ::= { jmJobMonMIBGroups 16 } END Change History The following changes were made from version 0.6, dated 15-Sep-1995 to make version 0.7, dated 18-Oct-1995: 1. Divided the textual conventions and the MIB into separate files: jobmontc.doc, .psr, .ps, .txt and jobmon.doc, .psr, .ps, .txt, .mib, respectively. 2. Moved the following objects out of the mandatory JobInfoGroup to a new OptionalPrintJobGroup, so that the JobInfoGroup contains no printer- centric attributes: JobNumberOfJobSets JobCopies. 3. Moved the following objects from the mandatory JobInfoGroup to the optional OptionalJobInfoGroup, because they are not required for DPA level 2 conformance: JobIdentifierOnClient 4. Added JobDestinationChannelType object to the mandatory JobInfoGroup and changed the name of JobChannelType to JobSourceChannelType, so that we can express both the source and destination type for a single multifunction job. 5. Added local disk storage, network disk storage, and document repository to the list of OIDs that need to be defined and registerd with IANA for use with the host resources MIB. 6. Created the DevicesAssignedGroup and moved the DevicesAssignedTable into it, so that we are following the SMI V2 rule of one table per group. 7. Clarified that the DevicesAssigned objects apply to scanners as well as printers. 8. Moved the following print-centric objects from the optional OptionalJobInfo group/table to the new optional print-centric PrintJobInfo group/table: jmJobOutputBin jmJobPrintAfter jmJobPrinterNameRequested jmJobStartedPrintingTime jmJobCopiesCompleted jmJobPagesCompleted jmJobImpressionsCompleted jmJobMediaSheetsCompleted jmJobOctetsCompleted jmJobTotalJobOctets jmJobPageCount 9. Changed the type of jmJobOutputBin from Integer32 to Cardinal16, since the number of output bins is likely to be a small number. 10. Changed the name of the data type from CodedStringIndex to CodeIndexedStringIndex. See General MIB. 11. Added the word Index to the end of the jmMediaConsumedType and jmColorImpressionsConsumedType objects to make: jmMediaConsumedTypeIndex and jmColorImpressionsConsumedTypeIndex objects, in order to follow the rule that an index object ends with the word Index so that it is clearer what is an index and what is data. 12. Moved the following print-centric objects from the mandatory jmDocInfoTable to the optional jmPrintDocInfoTable: jmDocSides jmDocCopyCount jmDocCopiesCompleted 13. Extended the semantics of the following objects so that they control input scanning as well, specifying the results of the scan and specifying the source of printing at the same time: jmDocName jmDocFileName jmDocFormat jmDocFormatVariants jmDocFormatVersion jmDocOctetCount jmDocState 14. Changed the name of the optional Optional Document Information group/table to Optional Print Document Information group/table, since all the objects are print-centric: jmDocDefaultMediumIndex jmDocDefaultInputTrayIndex jmDocOutput jmDocSides jmDocCopyCount jmDocCopiesCompleted 15. Added the word Index to the end of the jmDocDefaultMedium and jmDocDefaultInputTray objects to make jmDocDefaultMediumIndex and jmDocDefaultInputTrayIndex, in order to follow the rule that an index object ends with the word Index so that it is clearer what is an index and what is data. 16. Changed the types of the jmDocDefaultMediumIndex and jmDocDefaultInputTrayIndex objects from Integer32 to Cardinal16, since 32K seems sufficient number of media and input trays. Also clarified that an index value of 0 means no default specified. 17. Clarified that when developing a scan job monitoring MIB, a new sides attribute needs to be added for scanning, so that the number of sides for scanning can be specified independently from printing. 180. Moved the MediaSupportedTable to its own group: the optional MediaSupportedGroup to follow the SMI guideline that each table be in a separate group. 19. Changed the data type of the jmMediaSupportedIndex from Integer32 to Ordinal16, since 32K media seems sufficient. 20. Change the type of the jmMediaSupportedASCIIName from ASCIIstring to DisplayString, so as to use an already defined SMI textual-convention, instead of inventing a new textual-convention (with the identical semantics). 21. Changed the types of jmMediaSupportedType and jmMediaSupportedColor from ASCIISring to InternationDisplayString, so that they could be localized, even though the corresponding objects in the Printer MIB aren’t localizable. Do the right thing for users of the management station. 22. Changed the order of the bound variables on a trap, so that the jmJobAlertReason is first, since it is the most significant object. Then the indexes are grouped together next as well. 23. Added the word Core to jmJobMonMIBCOmpliance name to follow SMI conventions and allow for additional compliance macros to be added in the future. 24. Updated the conformance macros to support the creation of the new groups, so that each table is in a separate group. The following groups/tables are mandatory: jmJobInfoGroup jmDevicesAssignedGroup jmDocInfoGroup jmJobAlertGroup 25. Added all the MediaSupported (which are read-write) objects to the list that can be implemented a read-only for conformance. 26. Changed all references to ASCIIString (currently defined in General TC) to DisplayString, since they have identical semantics (255-byte NVT ASCII string) and we should use SMI textual-conventions whenever possible.. 27. Changed the group compliance OID arcs from 1-10 to 6-16 to match the group assignments. 28. Clarified that the MediaConsumedTable can be used to hold the ISO DPA media-used document attribute values that indicate the media that the document will be using (the MediaConsumedSheetCount would have a 0 value). Being in the MediaConsumedTable means that the values are for the job as a whole, not for each document (else we have a separate table with four indexes). So the MediaConsumedTable can be useful to the system operator while jobs are in the pending state; the system operator can see which media the jobs need when the jobs are in the held state with job-state-reasons being resources-needed. 29. Added 255-octet size constraints to DisplayString and InternationalDisplayString, since neither SMI, nor hr ASN.1 does, even though the agreed semantics is a 255-octet limit. 30. Changed the name of the OptionalPrintJob and OptionalPrintDoc groups/tables to PrintJob and PrintDoc, and changed them to conditionally mandatory, i.e., mandatory if the agent is supporting a (spooling) print system, as opposed to a printer. 31. Changed the type of DocSequenceNumber index from Ordinal16 to Ordinal32, since it can be a 32-bit number in DPA. 32. Changed the jmDevicesAssignedIndex from Cardinal16 to Cardinal32, since the device index is a 32-bit number in the host resources MIB. 33. Added compliance statements for all optional and conditionally mandatory groups. The following changes were made from version 0.5, dated 11-Sep-1995 to make version 0.6, dated 20-Sep-1995 (the first 9 changes are as a result of the review at the 18-Sept IETF/DMTF PWG meeting: 1. Clarified that the mandatory objects are for a printer and the optional attributes are for print spooling systems. 2. Indicated that the job information retained by the agent after a job completes is intended for use by: management stations used by system operators, a remote console capability, end-user monitoring, system accounting, and system usage programs. 3. Clarified the requirement that the job monitoring MIB is intended to be used with print systems that do not implement ISO DPA, as well as with ones that do. 4. Added the goal that the current proposal is for print jobs, but that the MIB should be designed so that a future MIB could augment this job monitoring MIB for monitoring scan and FAX jobs. 5. Indicated that this job monitoring MIB must be designed to be used with SNMPv1 and SNMPv2, including the different security mechanisms provided. 6. Clarified that if job control functions (cancel job, etc.) are to be provided, they should be provided by a separate job control MIB, that would be a companion MIB to this job monitoring MIB. 7. Removed the idea that the agent keeps a client job id to server job id map, since such complication in an agent is against SNMP philosophy of keeping agents simple (and putting the smarts into management stations). 8. Clarified the goal about legacy protocols. 9. Added goal of supplying only objects that are of interest to the system operator and system administrator, as opposed to the end user, since that is the focus of job managment MIBs. 10. Clarified that this MIB is only for job monitoring and that another MIB should be developed if and when job management (or job control) is wanted, if ever. Reason: job control is controversial. However, having a separate MIB that augments the job monitoring MIB seems a simple way to make everyone happy and removes the battle completely from the job monitoring MIB efforts. 11. Added the thinking about the job model for multifunction jobs as having simple and complex jobs; complex jobs contain other jobs when multiple destination types (or source types) are needed. Simple jobs (such as scan-to-file and file-to-print) can be either created by the server from a simple job request (scan-to-print) transparently. Also the ISO DPA protocol can be extended to allow high-end clients to be able to create complex jobs directly that contain other simple and complex jobs. 12. Added the concept of CodedStrings that allow servers to store strings from submitting clients as they are and lets management stations request the string in any of a number of coded representations, if the agent supports code conversion. (Name later changed to CodeIndexedStringIndex and CodeIndexedString). 13. Added more coded characters sets that can be implemented for representing CodeIndexedStrings (other ISO 8859-n, JIS 6226, and Shift JIS) and relaxed the requirement that all four ISO DPA standard sets (ASCII, T61String, ISOLatin1, and Unicode) must be implemented. Now only ASCII, and ISO Latin1 is required, with others optional. This relaxation is more in line with current localization practice on POSIX compliance platforms and follows ISO DPA implementation direction which needs reflection in ISO DPA as well. 14. Added the description that minimal implementation only requires resopnding to 29 accessible objects (and that even those values need not have meaningful data, though it is recommended that they do). 15. Added DPAJobStateReasons and DPADocOutput textual conventions. 16. Changed the names of the textual conventions module from Job- monitoring-TC to JOB-MONITORING-TC and the MIB from Job-monitoring-MIB to JOB-MONITORING-MIB to follow JMSMI conventions. 17. Moved the general textual conventions from the job monitoring TC to the General TC: Ordinal32, Cardinal32, Cardinal64, CodedStringIndex. 18. Added jmJobSubmittedCodedCharSet to the mandatory JobInfo group/table so that a management station can find out the coded character set that was most likely used for submtting the attributes when the job was submitted. 19. Deleted DeviceAssignedName from DevicesAssignedTable, since the hr MIB has the device name. 20. Changed the jmMediaConsumedIndex, jmMediaConsumedTypeIndex, jmColorImpressionsConsumedIndex and jmColorImpressionsConsumedTypeIndex from Integer32 to Ordinal16, since 32K seems enough media, media type, colors and color types. 21. Added MediaSupportedRowStatus, MediaSupportedASCIIName, and MediaSupportedDescription to the optional MediaSupportedTable. 22. Added jmJobAlertTime to the mandatory job alerts group. The time, as in SNMP, is on a best efforts basis. 23. Updated the conformance to agree with the above. The following changes were made from version 0.4, dated 1-Sep-1995 to make version 0.5, dated 11-Sep-1995: 1. Changed terminology from "client" to "management station" and "server" to "SNMP agent" (or sometimes just "agent") agree with IETF SNMP practice. Kept "client" and "server" for the descriptions copied from ISO DPA. 2. Moved the accounting objects: user-name and accounting-information from the optional job information group to the mandatory, since they are needed for accounting. Clarified that user-name is for accounting. 3. Changed the name of the jmGeneral group to jmJobGeneral group to distinguish this group from the General group in the base MIB. 4. Added previous-job-state to the Mandatory group and the trap list. Then management stations can more rapidly decide whether to query the MIB on a trap. 5. Fixed the comment about the size being about 512 bytes (546 bytes = 576-30). 6. Changed the table name from PrintersAssigned to DevicesAssigned, so that other multifunction devices can be put into the same table. Also jmPrinterAssignedName and jmPrinterStateOfPrintersAssigned to jm DeviceAssignedName and jmDeviceStateOfDevicesAssigned. 7. Made MediaConsumed and ColorImpressionsConsumed tables into separate optional groups so can be implemented without the other (big) OptionalJobInfo group. 8. Changed PositiveInteger textual-convention to Ordinal32, to use SMI, but only use range to 2**31-1 (31 bits). 9. Changed jobs MIB Cardinal textual-convention to Cardinal32 for consistency with SMI. 10. Changed the data type of JobSourceType and JobDestinationType from enum to OID, so that the OIDs from the host resources MIB could be used to identify device types. 11. Added comments about device-type OIDs being used from the host resources MIB: printer, (local) disk storage and new OIDs being defined for use with the host-resources extension MIB for the following devices: scanner, fax, network disk storage (same as document repository?), mechanical mail box, and electronic mail box. 12. Moved text that shows syntactic difference between this MIB and ISO DPA from the end of each specification to the beginning. 13. Changed the MS-WORD single quote to ASCII single quote. 14. Changed the way media size in the MediaSupported table is specified to use the MediaSize textual-convention from RFC 1759 and to have a read-only MediaSizeUnit object that specifies whether the media units are in .0001 inches or micrometers, instead of having objects that have both sets of units. Management stations can perform the conversion between the two systems of units depending on management station’s user localization. 15. Added DeviceStateOfDevicesAssigned bit to JobAlertReason, so that a trap is generated whenever the state of a device assigned to a job changes state, since the complete state of a job includes the state of the device when the job is in processing or printing state. In the future, add a few more states for other devices, such as scanners and dial-up devices. 16. Added hrDeviceIndex to the V2JobStateAlert and V2DocStateAlert NOTIFICATION-TYPE objects, so that management stations can more easily determine which device generated the trap. 17. Added jmJobV1Alert and jmDocV1Alert TRAP-TYPE objects to cause SNMPv1 traps. 18. Added comments about jobV1Trap and docV1Trap objects, so can see the mapping from SNMPv2 to SNMPv1 traps, like in RFC 1759. 19. Added a Mandatory AlertTime object that is sysUpTime when the alert was generated (like RFC 1759 has, except it is mandatory in the job monitoring MIB and optional in RFC 1759). 20. Changed the way that DPAText is handled, so that the management station no longer sets the coded character set to be used by the agent, thus solving the contention problem for the jobs MIB where there is likely to be a number of management stations (document monitors) accessing the same MIB. All the DPAText objects are changed to be CodeStringIndex which is an index a large string table. The second index into that table is the coded character set enum requested by the management station. The agent shall support at least one coded character set from the list of DPA coded character sets (ASCII, ISOLatin1, T61String, or Unicode) and can support any others, either with code conversion or by storing the actual data. This mechanism is a general one and will be moved to the General group in the general MIB, so that other MIBs can use it. 21. Created a textual-conventions module for the job monitoring MIB, so that only the textual-conventions module need be updated to add new (type 2 and type 3) enum values; the actual job monitoring MIB need not be republished. Type 1 enum textual conventions remain in the jobs monitoring MIB. The following changes were made from version 0.3, dated 26-Aug-1995 to make version 0.4, dated 5-Sep-1995: 1. Changed the title to "job monitoring MIB" to reflect that this proposal is to be a new MIB, not an extension to the Printer MIB. Then the job MIB can be used with other types of devices, such as scanners and faxes. 2. Changed the DPAText textual-convention so that it is a single object of type OCTET STRING containing one of the four DPA standard character sets. Also changed to use a type 2 enum with four values that are specific to this MIB, instead of the four values registered with IANA (since T61String and UCS-2 level 2 are not registered with IANA). 3. Added a mandatory General group that contains: a GeneralCurrentLocalization object, indices into the host resources software installed and software running tables. 4. Added DPA Printers-assigned to the MIB, since systems implementing logical printers need to be able to indicate which physical printer(s) the job is assigned to so that the management station can find the printer state that is really an augmentation of the state of the job. Since some print systems can assign a print job to multiple devices, the printers-assigned is represented as a table. The mandatory printers-state-of-printers-assigned attribute was also put into this PrintersAssigned table so the entire table is mandatory. 5. Changed octets-completed and total-job-octets from mandatory to optional as sugggested at the MFPA WG meeting, August 28-29 in Bellevue WA. 6. Deleted submitting-product-name, and submitting product instance qualifier which had been taken from the DMTF printer finisher MIF work, not from DPA. Discussions with Harry Lewis, DMTF printer finisher WG chair, the LMO product name is really a name for a set of jobs. However, if we use the formulation agreed to at the MFPA WG meeting, Aug 28-29, that jobs can contain other jobs, then such a container job is the same as an LMO product. So the job-name attribute can be used on a job that contains other jobs in order to get the functionality needed by LMO of a product name. 7. Changed GeneralizedTime (from ASN.1 standard) to DateAndTime (from SNMPv2 textual-conventions). 8. Clarified the goal that the windows and other PC environments managing low-end devices is a strong goal. 9. Clarified the goal that the MIB is intended to be used with systems that control multiple devies, as well as to be used with a single device. Introduced the concept of a logical device and a physical device for such systems. 10. Clarified that the job monitoring MIB is intended for other devices as well as and/or instead of printers. So that RFC 1759 is not a requirement, if there are no printers. jm11. Changed each object in a table to start with a word or words that indicate the table (not necessarily the group). Eg. jmJobName. If the DPA attribute already started with job-, don't add another Job, but add Job if the DPA attribute did not start with job-. Same for the document table attributes starting with Doc. 12. Changed Cardinal64 to use the SNMPv2 SMI Counter64 textual- convention. 13. Added a PrtChannelType textual-convention that should be moved to RFC 1759. A comment to the IETF PWG will be made to do so when RFC 1759 is promoted from draft proposed to draft status. 14. Clarified that scanners will be indicated using an OID in the hrDeviceType. That OID will be registered with IANA. 15. Split out the optional job and document tables as separate tables that AUGMENT the mandatory job and document tables. Follows communication MIB here (though a second get is required to get an optional table, instead of RFC 1759 practice of putting optional objects into the same table (that can be gotten in a single get). 16. Added the PrintersAssigned table to hold the printer indices and the printer states of printer(s) assigned to print a job, to align with ISO DPA where high end systems can print a job on more than one printer. 17. Made MediaConsumed and ColorImpressionsConsumed tables in the optional job info group. 18. Changed the Media Supported table from mandatory to optional and made read-write, with MIN-ACCESS read-only, especially with SNMPv1 security. 19. Added type 2 enum indications to all enums. 20. Made textual-conventions for the 3 enums taken directly from ISO DPA: printer-state (used for printer-states-of-printers-assigned), document-type, and document-state. Indicated the offset from the DPA OID final arc (+2 or +3) to the MIB enum as comments on all three. 21. Added the alerts group to the job monitoring MIB. Changes from version 0.2 (7-Aug-1995) to version 0.3 (11-Aug- 1995): 1. Converted job-ext.doc to MIB format 2. Added document-sequence-number and made it Mandatory, since a document could be deleted in the middle of a multi-document job and the document-sequence-numbers of the following documents shall not change. So the document-sequence-number cannot be inferred from the position of the document in the job. [End of the job monitoring MIB specification]