Internet Printing Protocol Working Group                    Tom Hastings
INTERNET DRAFT                                                     Xerox
Expires 1 June 19 September 2000                                   Ira McDonald
                                                              High North
                                                         1 December 1999
                                                           19 March 2000

                   Internet Printing Protocol/1.1: Protocol (IPP):
             Notifications over SNMP
                 <draft-ietf-ipp-not-over-snmp-01.txt> via Job Monitoring MIB
                 <draft-ietf-ipp-not-over-snmp-02.txt>

    Copyright (C) The Internet Society (1999). (2000). All Rights Reserved.

Status of this Memo

   This document is an Internet-Draft and is in full conformance with
   all provisions of Section 10 of RFC2026.  Internet-Drafts are working
   documents of the Internet Engineering Task Force (IETF), its areas,
   and its working groups.  Note that other groups may also distribute
   working documents as Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

     The list of current Internet-Drafts can be accessed at
     http://www.ietf.org/ietf/1id-abstracts.txt

     The list of Internet-Draft Shadow Directories can be accessed at
     http://www.ietf.org/shadow.html.

Abstract

   This document is a submission to the Internet Printing Protocol
   Working Group of the Internet Engineering Task Force (IETF).
   Comments should be submitted to the ipp@pwg.org mailing list.

   This document proposes a mapping of IPP notifications over SNMP,
   using SNMP via
   new Printer Event device and Job Event job traps (to be added to extensions defined for the PWG Job Monitoring
   MIB [PWG-JOB]). [RFC-2707].  This mapping may be used to deliver printer
   notifications for any printer (not just IPP-capable ones) and also
   job notifications for any job (not just ones submitted via IPP).

   This document proposes:  (2)  (4) SNMP traps; and (7) (24) SNMP leaf objects
   (for use in various trap bindings).

                           Table of Contents

1.  Introduction ...............................................       3       4
  1.1.  Terminology for Conformance ............................       3       4
2.  SNMP Network Management Framework ..........................       3       4
3.  Managed Object Mapping .....................................       3       5
  3.1.  SNMP Mapping for IPP Printer Events ....................       3       5
  3.2.  SNMP Mapping for IPP Job Events ........................       4       5
  3.3.  Rules for Encoding Notifications .......................       4       6
  3.4.  Registration for IPP Notifications .....................       5       7
    3.4.1.  Registration via IPP ...............................       5       7
    3.4.2.  Registration via SNMP ..............................       5       7
  3.5.  Relationship to other MIBs .............................       6       8
    3.5.1.  IETF  MIB-II (RFC 1213) ..................................       8
    3.5.2.  Host Resources MIB (RFC 1514) .................       6
    3.5.2.  IETF ......................       8
    3.5.3.  Printer MIB (RFC 1759) ........................       6
    3.5.3.  Printer MIB v2 (work-in-progress) ..................       7 .............................       8
4.  Managed Object Definitions .................................       8       9
  4.1.  Printer  Device Basic Event Trap .....................................       8 ................................       9
    4.1.1.  jmPrinterEventV2Event  jmDeviceBasicV2Event (notification) ...............       8 ................       9
  4.2.  Job Basic Event Trap .........................................       9 ...................................      10
    4.2.1.  jmJobEventV2Event  jmJobBasicV2Event (notification) ...................       9      11
  4.3.  Job Completed Event Objects ..........................................      10 Trap ...............................      11
    4.3.1.  jmJobCompletedV2Event (notification) ...............      12
  4.4.  Job Progress Event Trap ................................      13
    4.4.1.  jmJobProgressV2Event (notification) ................      13
  4.5.  Event Binding Group ....................................      14
    4.5.1.  jmEventTriggerEvent (object) .......................      11
    4.3.2.      14
    4.5.2.  jmEventSubscriptionID (object) .....................      11
    4.3.3.      15
    4.5.3.  jmEventSubscriberUserName (object) .................      11
    4.3.4.      15
    4.5.4.  jmEventSubscriberUserData (object) .................      12
    4.3.5.  jmEventPrinterState      16
    4.5.5.  jmEventDeviceURI (object) ..........................      16
    4.5.6.  jmEventDeviceName (object) .........................      17
    4.5.7.  jmEventDeviceState (object) ........................      17
    4.5.8.  jmEventDeviceStateReasons (object) .................      17
    4.5.9.  jmEventDeviceIsAcceptingJobs (object) ..............      18
    4.5.10.  jmEventJobSetIndex (object) .......................      12
    4.3.6.  jmEventPrinterStateReasons      18
    4.5.11.  jmEventJobIndex (object) ................      13
    4.3.7.  jmEventPrinterIsAcceptingJobs ..........................      19
    4.5.12.  jmEventJobName (object) .............      13 ...........................      19
    4.5.13.  jmEventJobState (object) ..........................      19
    4.5.14.  jmEventJobStateReasons (object) ...................      20
    4.5.15.  jmEventJobKOctets (object) ........................      20
    4.5.16.  jmEventJobKOctetsProcessed (object) ...............      21
    4.5.17.  jmEventJobImpressions (object) ....................      21
    4.5.18.  jmEventJobImpressionsCompleted (object) ...........      21
    4.5.19.  jmEventJobMediaSheets (object) ....................      22
    4.5.20.  jmEventJobMediaSheetsCompleted (object) ...........      22
    4.5.21.  jmEventJobImpressionsCompletedCC (object) .........      22
    4.5.22.  jmEventJobCollationType (object) ..................      23
    4.5.23.  jmEventJobSheetCompletedCopyNum (object) ..........      23
    4.5.24.  jmEventJobSheetCompletedDocNum (object) ...........      23
5.  IANA Considerations ........................................      14      25

6.  Internationalization Considerations ........................      14      25
7.  Security Considerations ....................................      14      25
8.  References .................................................      15      26
9.  Change Log .................................................      15      27
10.  Intellectual Property Notice ..............................      16      29
11.  Authors' Addresses ........................................      16      29
12.  Full Copyright Statement ..................................      17      30

1.  Introduction

   The IPP protocol [IPP-PRO] supports passive monitoring of IPP Printer
   and Job objects, via client polling of IPP object attributes using
   the 'Get-Printer-Attributes' and 'Get-Job-Attributes' operations.

   This IPP Notifications over SNMP mapping supports dynamic monitoring
   of IPP Printer and Job objects, via server generation of SNMP traps.

   1.1.  Terminology for Conformance

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted per [RFC-2119].

2.  SNMP Network Management Framework

   See:  Section 1 'Introduction' and section 2 'Management Information'
         of IETF Coexistence between SNMPv1 and SNMPv2 [RFC-1908].

   See:  Section 1.1 'SNMPv1', section 1.2 'SNMPv2', and section 1.3
         'SNMPv3' of IETF Coexistence between SNMP Versions [V3-COEX]. [RFC-2576].

3.  Managed Object Mapping

   3.1.  SNMP Mapping for IPP Printer Events

   IPP Printer event attribute         Printer/Job         Job Monitoring MIB object mapping
   ---------------------------         ------------------------------         ---------------------------------
   version-number                      [no mapping - not useful]
   status-code                         [implicit in each generated trap]
   request-id                          [request-id in SNMP trap header]
   attributes-charset                  [no mapping - strings are UTF-8]
   attributes-natural-language         [no mapping - no text bindings]
   printer-uri                         [prtChannelInformation in PMv2]                         jmEventDeviceURI
   printer-name                        [prtGeneralPrinterName in PMv2]                        jmEventDeviceName
   job-id                              jmJobIndex in OID instance suffix                              jmEventJobIndex
                                       [and jmEventJobSetIndex]
   job-name                            jobName                            jmEventJobName
   trigger-event                       jmEventTriggerEvent
   trigger-time                        [time-stamp                        [sysUpTime in SNMP trap header] bindings]
   trigger-date-time                   hrSystemDate                   [hrSystemDate in Host Res MIB MIB]
   subscription-id                     jmEventSubscriptionID
   subscriber-user-name                jmEventSubscriberUserName
   subscriber-user-data                jmEventSubscriberUserData
   printer-state                       jmEventEventPrinterState
                                       hrDeviceStatus in Host Res MIB
                                       hrPrinterStatus in Host Res MIB                       jmEventDeviceState
   printer-state-reasons               jmEventPrinterStateReasons
                                       hrPrinterDetectedErrorState
                                       in Host Res MIB               jmEventDeviceStateReasons
   printer-is-accepting-jobs           jmEventPrinterIsAcceptingJobs           jmEventDeviceIsAcceptingJobs
   3.2.  SNMP Mapping for IPP Job Events

   IPP Job event attribute             Printer/Job             Job Monitoring MIB object mapping
   -----------------------             ------------------------------             ---------------------------------
   version-number                      [no mapping - not useful]
   status-code                         [implicit in each generated trap]
   request-id                          [request-id in SNMP trap header]
   attributes-charset                  [no mapping - strings are UTF-8]
   attributes-natural-language         [no mapping - no text bindings]
   printer-uri                         [prtChannelInformation in PMv2]                         jmEventDeviceURI
   printer-name                        [prtGeneralPrinterName in PMv2]                        jmEventDeviceName
   job-id                              jmJobIndex in OID instance suffix                              jmEventJobIndex
                                       [and jmEventJobSetIndex]
   job-name                            jobName                            jmEventJobName
   trigger-event                       jmEventTriggerEvent
   trigger-time                        [time-stamp                        [sysUpTime in SNMP trap header] bindings]
   trigger-date-time                   hrSystemDate                   [hrSystemDate in Host Res MIB MIB]
   subscription-id                     jmEventSubscriptionID
   subscriber-user-name                jmEventSubscriberUserName
   subscriber-user-data                jmEventSubscriberUserData
   job-state                           jmJobState                           jmEventJobState
   job-state-reasons                   jmJobStateReasons1
                                       jmJobStateReasons2
                                       jmJobStateReasons3
                                       jmJobStateReasons4

   [job-completed|state-changed|purged                   jmEventJobStateReasons

   [job-completed - extra bindings]
   job-k-octets                        jmEventJobKOctets
   job-k-octets-processed              jmJobKOctetsProcessed              jmEventJobKOctetsProcessed
   job-impressions                     jmEventJobImpressions
   job-impressions-completed           jmJobImpressionsCompleted           jmEventJobImpressionsCompleted
   job-media-sheets                    jmEventJobMediaSheets
   job-media-sheets-completed          sheetsCompleted          jmEventJobMediaSheetsCompleted

   [job-progress - extra bindings]
   impressions-completed-current-copy  jmEventJobImpressionsCompletedCC
   job-collation-type                  jobCollationType                  jmEventJobCollationType
   sheet-completed-copy-number         sheetCompletedCopyNumber         jmEventJobSheetCompletedCopyNum
   sheet-completed-document-number     sheetCompletedDocumentNumber
   impressions-interpreted             impressionsInterpreted
   impressions-completed-current-copy  impressionsCompletedCurrentCopy     jmEventJobSheetCompletedDocNum
   3.3.  Rules for Encoding Notifications

   Over some transports and/or media, the variable-bindings of these
   SNMP traps MAY not fit the MTU (maximum transmission unit) size.
   Conforming IPP Notification generators SHALL perform this procedure
   to ensure that all variable-bindings of these SNMP traps are always
   included in the generated SNMP trap packet:

   1)  Truncate all strings specified for variable-bindings
       to the reduced maximum sizes that are specified in their
       corresponding OBJECT clauses in their MODULE-COMPLIANCE.
   1a) If all variable-bindings now fit within the MTU,
       then exit this procedure and generate the SNMP trap.
   2)  Truncate the next one of the following string objects to
       the empty string (zero length in the ASN.1 BER encoding),
       in the order listed:
       - 'prtChannelInformation' (from Printer MIB v2 [PRT-MIB2])
       - 'prtGeneralPrinterName' (from Printer MIB v2 [PRT-MIB2])
       - 'jmEventSubscriberUserName'
       - 'jmEventSubscriberUserData'
       - 'jmAttributeValue...jobName.1' 'jmEventDeviceURI'
       - 'jmEventPrinterStateReasons' 'jmEventDeviceName'
       - 'jmEventPrinterState' 'jmEventDeviceStateReasons'
       - 'jmEventJobName'
       - 'jmEventJobStateReasons'
   2a) If all variable-bindings now fit within the MTU,
       then exit this procedure and generate the SNMP trap.
   2b) If all variable-bindings do NOT fit within the MTU,
       then repeat step (2) for next string object.
   3)  If all variable-bindings do NOT fit within the MTU,
       then -> logic error (variable-bindings MUST now fit).

   3.4.  Registration for IPP Notifications

   IPP Clients may register for IPP Notifications delivered via SNMP by
   either of the following methods:

   3.4.1.  Registration via IPP

   IPP Create-Subscription and Job creation (Create-Job, Print-Job,
   Print-URI) operations MAY be used to create per-Printer or per-Job
   IPP Subscription objects and MAY specify

     'notify-recipient' = 'ipp-snmp://hostname[.port]' 'snmpnotify://hostname[.port]'
   3.4.2.  Registration via SNMP

   SNMP Set-Request operations MAY be used to create appropriate rows in
   the SNMP Notification MIB defined in [RFC-2573] and MAY specify:

   1)  'snmpNotifyTag'
       - tag of this notification - see 'snmpTargetAddrTagList' below
       - example "jmPrinterEventV2Event" "jmDeviceBasicV2Event" or "jmJobEventV2Event" "jmJobBasicV2Event"
   2)  'snmpNotifyType'
       - notification sent using either SNMP Trap (unacknowledged)
         or SNMP Inform-Request (acknowledged)
   3)  'snmpNotifyStorageType'
       - row persistence of this registration

   SNMP Set-Request operations MAY be used to create appropriate rows in
   the SNMP Target MIB defined in [RFC-2573] and MAY specify:

   1)  'snmpTargetAddrTDomain' and 'snmpTargetAddrTAddress'
       - target transport protocol and address (equivalent to URI)
   2)  'snmpTargetAddressTimeout' and 'snmpTargetAddrRetryCount'
       - retry timeout and limit (for acknowledged notifications
         delivered using SNMP Inform-Request rather than SNMP Trap)
   3)  'snmpTargetAddrTagList'
       - tags of notifications to be sent to this target (client)
       - example value "jmPrinterEventV2Event jmJobEventV2Event" "jmDeviceBasicV2Event" or "jmJobBasicV2Event"
   4)  'snmpTargetAddrParamsEntry'
       - notification security and SNMP protocol version
   5)  'snmpTargetAddrStorageType'
       - row persistence of this registration

   3.5.  Relationship to other MIBs

   3.5.1.  IETF  MIB-II (RFC 1213)

   All SNMPv1 trap messages include 'time-stamp' which is the value of
   the 'sysUpTime' object from MIB-II [RFC-1213].

   All SNMPv2 trap bindings include the 'sysUpTime' object from MIB-II
   [RFC-1213].

   3.5.2.  Host Resources MIB (RFC 1514)

   The 'jmPrinterEventV2Event' 'jmDeviceBasicV2Event' trap defined in this document includes a
   'hrDeviceStatus' object for a device permits
   optional binding of type 'hrDevicePrinter'.  The
   'jmPrinterEventV2Event' trap defined in this document includes four
   objects from the IETF HR MIB [RFC-1514] in the variable-bindings:

   - 'hrDeviceStatus'              --> IPP 'printer-state'
   - 'hrPrinterStatus'             --> IPP 'printer-state'
   - 'hrDeviceStatus', 'hrDevicePrinterStatus',
   and 'hrPrinterDetectedErrorState' --> IPP 'printer-state-reasons'
   - 'hrSystemDate'                --> IPP 'printer-current-time'

   3.5.2.  IETF objects from Host Resources MIB
   [RFC-1514].

   3.5.3.  Printer MIB (RFC 1759)

   The 'jmPrinterEventV2Event' 'jmDeviceBasicV2Event' trap defined in this document includes a
   'hrDeviceStatus' object for a device permits
   optional binding of type 'hrDevicePrinter'. the 'hrDeviceStatus', 'hrDevicePrinterStatus',
   and 'hrPrinterDetectedErrorState' objects from Host Resources MIB
   [RFC-1514].

   The appropriate value of 'hrDeviceIndex' to use in the companion IETF Printer MIB
   [RFC-1759] is may be indicated by the instance suffix of the
   'hrDeviceStatus' variable's OID.

   3.5.3.  Printer MIB v2 (work-in-progress)

   The 'jmPrinterEventV2Event' trap defined in this document includes
   two objects from the (work-in-progress) Printer MIB v2 [PRT-MIB2] in
   the variable-bindings:

   - 'prtGeneralPrinterName'       --> IPP 'printer-name'
   - 'prtChannelInformation'       --> IPP 'printer-uri'

4.  Managed Object Definitions

   4.1.  Printer  Device Basic Event Trap

   --  Printer  Device Basic Event Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;
   --  mandatory for systems which send this Printer Device event via SNMP.

   jmPrinterEventV1Enterprise

   jmDeviceBasicV1Enterprise OBJECT-IDENTITY
       STATUS      current
       DESCRIPTION
           "The value of the enterprise-specific OID in an SNMPv1 trap
           for a 'basic-printer-event' Device basic event' sent by this managed system."
       ::= { jobmonMIBNotifications 1 }

   jmPrinterEventV2EventPrefix

   jmDeviceBasicV2EventPrefix
       OBJECT IDENTIFIER ::= { jmPrinterEventV1Enterprise jmDeviceBasicV1Enterprise 0 }

   jmPrinterEventV2Event

   jmDeviceBasicV2Event NOTIFICATION-TYPE
       OBJECTS {
           jmEventTriggerEvent,
           jmEventSubscriptionID,
           jmEventSubscriberUserName,
           jmEventSubscriberUserData,
           hrDeviceStatus,
           hrPrinterStatus,
           hrPrinterDetectedErrorState
           jmEventDeviceURI,
           jmEventDeviceName,
           jmEventJobSetIndex,
           jmEventJobIndex,
           jmEventJobName,
           jmEventDeviceState,
           jmEventDeviceStateReasons,
           jmEventDeviceIsAcceptingJobs
       }
       STATUS      current
       DESCRIPTION
           "This SMIv2 trap corresponds to an IPP 'basic-printer-event'. Printer basic event.

           This trap is sent when requested by a prior subscription for
           the included printer-level subscription.
           The event type is specified in 'jmEventTriggerEvent'.

           Event types reported via 'jmDeviceBasicV2Event' include:
           - 'printer-restarted'
           - 'printer-shutdown'
           - 'printer-state-changed'
           - 'printer-media-changed'
           - 'printer-config-changed'
           - 'printer-queue-changed'
           - 'printer-no-longer-full'
           - 'printer-almost-idle'
           - 'device-restarted'
           - 'device-shutdown'
           - 'device-state-changed'
           - 'device-media-changed'
           - 'device-config-changed'
           - 'device-queue-changed'
           - 'device-no-longer-full'
           - 'device-almost-idle'
           - and (optionally) vendor extension event types

           Additional variable-bindings SHALL SHOULD be appended to this trap
           for all printer-level device-level events:
           - Systems that support 'jobName' SHALL add
             'jmAttributeValue...jobName.1' (if job-level subscription)
           - Systems that support 'hrSystemDate' defined in with the IETF Host Resources MIB (RFC 1514) SHALL [RFC-1514] SHOULD add
             'hrSystemDate' (corresponds
             (compare to IPP 'printer-current-time') and
             'hrDeviceStatus'
             (compare to IPP 'printer-state')

           Additional variable-bindings SHOULD MAY be appended to this trap
           for all printer-level printer-specific events:
           - Systems that support the model of printer states defined
             in the (work-in-progress) IPP Model and Semantics [IPP-MOD]
             SHOULD add
             'jmEventPrinterState' (corresponds to IPP 'printer-state'),
             'jmEventPrinterStateReasons' (corresponds to IPP
             'printer-state-reasons'), and
             'jmEventPrinterIsAcceptingJobs' (corresponds to IPP
             'printer-is-accepting-jobs')
           - Systems that support 'prtChannelInformation' defined in with the (work-in-progress) Printer Host Resources MIB v2 [PRT-MIB2] SHOULD [RFC-1514] MAY add
             'prtChannelInformation' (corresponds
             'hrPrinterStatus'
             (compare to IPP 'printer-uri')
           - Systems that support 'prtGeneralPrinterName' defined in
             the (work-in-progress) Printer MIB v2 [PRT-MIB2] SHOULD add
             'prtGeneralPrinterName' 'printer-state') and
             'hrPrinterDetectedErrorState'
             (compare to IPP 'printer-name') 'printer-state-reasons')

           Systems MAY add other variable-bindings from any MIB." MIB.

           See:    Section 5.2 'notify-events' of [IPP-NOT];
                   Section 7 'Notification Content' in [IPP-NOT]."
       ::= { jmPrinterEventV2EventPrefix jmDeviceBasicV2EventPrefix 1 }

   4.2.  Job Basic Event Trap

   --  Job Basic Event Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;
   --  mandatory for systems which send this Job event via SNMP.

   jmJobEventV1Enterprise

   jmJobBasicV1Enterprise OBJECT-IDENTITY
       STATUS      current
       DESCRIPTION
           "The value of the enterprise-specific OID in an SNMPv1 trap
           for a 'basic-job-event' Job basic event sent by this managed system."
       ::= { jobmonMIBNotifications 2 }

   jmJobEventV2EventPrefix

   jmJobBasicV2EventPrefix
       OBJECT IDENTIFIER ::= { jmJobEventV1Enterprise jmJobBasicV1Enterprise 0 }

   jmJobEventV2Event

   jmJobBasicV2Event NOTIFICATION-TYPE
       OBJECTS {
           jmEventTriggerEvent,
           jmEventSubscriptionID,
           jmEventSubscriberUserName,
           jmEventSubscriberUserData,
           jmJobState,
           jmJobStateReasons1
           jmEventDeviceURI,
           jmEventDeviceName,
           jmEventJobSetIndex,
           jmEventJobIndex,
           jmEventJobName,
           jmEventJobState,
           jmEventJobStateReasons
       }
       STATUS      current
       DESCRIPTION
           "This SMIv2 trap corresponds to an IPP 'basic-job-event'. Job basic event.

           This trap is sent when requested by a prior subscription for
           the included job-level subscription.
           The event type is specified in 'jmEventTriggerEvent'.

           Additional variable-bindings SHALL be appended to this trap
           for all job-level events:

           Event types reported via 'jmJobBasicV2Event' include:
           - Systems that support 'jobName' SHALL add
             'jmAttributeValue...jobName.1' 'job-created'
           - Systems that support 'jobStateReasonsN' SHALL add
             'jmAttributeValue...jobStateReasonsN.1' 'job-state-changed'
           - 'job-config-changed'
           - 'job-purged'
           - and (optionally) vendor extension event types

           Systems that support 'hrSystemDate' defined in
             the IETF Host Resources MIB (RFC 1514) SHALL MAY add
             'hrSystemDate' (corresponds other variable-bindings from any MIB.

           See:    Section 5.2 'notify-events' of [IPP-NOT];
                   Section 7 'Notification Content' in [IPP-NOT]."
       ::= { jmJobBasicV2EventPrefix 1 }

   4.3.  Job Completed Event Trap

   --  Job Completed Event Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;
   --  mandatory for systems which send this Job event via SNMP.

   jmJobCompletedV1Enterprise OBJECT-IDENTITY
       STATUS      current
       DESCRIPTION
           "The value of the enterprise-specific OID in an SNMPv1 trap
           for a Job completed event sent by this managed system."
       ::= { jobmonMIBNotifications 3 }
   jmJobCompletedV2EventPrefix
       OBJECT IDENTIFIER ::= { jmJobCompletedV1Enterprise 0 }

   jmJobCompletedV2Event NOTIFICATION-TYPE
       OBJECTS {
           jmEventTriggerEvent,
           jmEventSubscriptionID,
           jmEventSubscriberUserName,
           jmEventSubscriberUserData,
           jmEventDeviceURI,
           jmEventDeviceName,
           jmEventJobSetIndex,
           jmEventJobIndex,
           jmEventJobName,
           jmEventJobState,
           jmEventJobStateReasons,
           jmEventJobKOctetsProcessed,
           jmEventJobImpressionsCompleted,
           jmEventJobMediaSheetsCompleted
       }
       STATUS      current
       DESCRIPTION
           "This SMIv2 trap corresponds to an IPP 'printer-current-time') 'job-completed' event.

           This trap is sent when requested by a prior subscription.
           The event type is specified in 'jmEventTriggerEvent'.

           Event types reported via 'jmJobCompletedV2Event' include:
           - 'job-completed'
           - and (optionally) vendor extension event types

           Additional variable-bindings SHOULD be appended to this trap
           for all job-level 'job-completed' events:
           - Systems that which support 'prtChannelInformation' defined in
             the (work-in-progress) Printer MIB v2 [PRT-MIB2] this job information SHOULD add
             'prtChannelInformation' (corresponds
             'jmEventJobKOctets'
             (compare to IPP 'printer-uri')
           - 'job-k-octets' job size attribute
             and to Job Mon MIB 'jobKOctetsTransferred' attribute)
             'jmEventJobImpressions'
             (compare to IPP 'job-impressions' job size attribute)
             'jmEventJobMediaSheets'
             (compare to IPP 'job-media-sheets' job size attribute
             and to Job Mon MIB 'sheetsRequested' attribute)

           Systems that support 'prtGeneralPrinterName' defined MAY add other variable-bindings from any MIB.

           See:    Section 5.2 'notify-events' of [IPP-NOT];
                   Section 7 'Notification Content' in [IPP-NOT]."
       ::= { jmJobCompletedV2EventPrefix 1 }
   4.4.  Job Progress Event Trap

   --  Job Progress Event Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;
   --  mandatory for systems which send this Job event via SNMP.

   jmJobProgressV1Enterprise OBJECT-IDENTITY
       STATUS      current
       DESCRIPTION
           "The value of the enterprise-specific OID in an SNMPv1 trap
           for a Job progress event sent by this managed system."
       ::= { jobmonMIBNotifications 4 }

   jmJobProgressV2EventPrefix
       OBJECT IDENTIFIER ::= { jmJobProgressV1Enterprise 0 }

   jmJobProgressV2Event NOTIFICATION-TYPE
       OBJECTS {
           jmEventTriggerEvent,
           jmEventSubscriptionID,
           jmEventSubscriberUserName,
           jmEventSubscriberUserData,
           jmEventDeviceURI,
           jmEventDeviceName,
           jmEventJobSetIndex,
           jmEventJobIndex,
           jmEventJobName,
           jmEventJobState,
           jmEventJobStateReasons,
           jmEventJobKOctetsProcessed,
           jmEventJobImpressionsCompleted,
           jmEventJobMediaSheetsCompleted,
           jmEventJobImpressionsCompletedCC,
           jmEventJobCollationType,
           jmEventJobSheetCompletedCopyNum,
           jmEventJobSheetCompletedDocNum
       }
       STATUS      current
       DESCRIPTION
           "This SMIv2 trap corresponds to an IPP 'job-progress' event.

           This trap is sent when requested by a prior subscription.
           The event type is specified in 'jmEventTriggerEvent'.

           Event types reported via 'jmJobProgressV2Event' include:
           - 'job-progress'
           - and (optionally) vendor extension event types
           Additional variable-bindings SHOULD be appended to this trap
           for all 'job-progress' events:
           - Systems which support this job information SHOULD add
             'jmEventJobKOctets'
             (compare to IPP 'job-k-octets' job size attribute
             and to Job Mon MIB 'jobKOctetsTransferred' attribute)
             'jmEventJobImpressions'
             (compare to IPP 'job-impressions' job size attribute)
             'jmEventJobMediaSheets'
             (compare to IPP 'job-media-sheets' job size attribute
             and to Job Mon MIB 'sheetsRequested' attribute)

           Systems MAY add other variable-bindings from any MIB.

           See:    Section 5.2 'notify-events' of [IPP-NOT];
                   Section 7 'Notification Content' in [IPP-NOT]."
       ::= { jmJobProgressV2EventPrefix 1 }

   4.5.  Event Binding Group

   --  Event Binding Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;
   --  mandatory for systems which send Device or Job events via SNMP.
   --
   --  Note:  All of the objects in this group are defined ONLY for the
   --  purpose of providing instantaneous bindings for SNMP traps - it's
   --  NEVER suitable for an SNMP Manager to Get these objects directly.

   jmEventBinding  OBJECT IDENTIFIER ::= { jobmonMIBObjects 5 }

   jmEventTriggerEvent OBJECT-TYPE
       SYNTAX      JmUTF8StringTC (SIZE (0..63))   -- 255 in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The trigger event type associated with this event.

           Standard Printer event types defined in [IPP-NOT] are:
           - 'printer-restarted'
           - 'printer-shutdown'
           - 'printer-state-changed'
           - 'printer-media-changed'
           - 'printer-config-changed'
           - 'printer-queue-changed'
           - 'printer-no-longer-full'
           - 'printer-almost-idle'

           Standard Device event types generalized from [IPP-NOT] are:

           - 'device-restarted'
           - 'device-shutdown'
           - 'device-state-changed'
           - 'device-media-changed'
           - 'device-config-changed'
           - 'device-queue-changed'
           - 'device-no-longer-full'
           - 'device-almost-idle'

           Standard Job event types defined in [IPP-NOT] are:
           - 'job-created'
           - 'job-completed'
           - 'job-state-changed'
           - 'job-config-changed'
           - 'job-purged'
           - 'job-progress'

           Conformance:    The natural language for keywords
           in trigger event type SHALL always be US English.

           Conformance:    This trigger event type SHALL be valid
           and reported in ALL Job Monitoring MIB notifications.

           See:    Section 5.2 'notify-events' and
                   Section 7 'Notification Content' in [IPP-NOT]."
   --  DEFVAL intentionally omitted - reported value SHALL be valid
       ::= { jmEventBinding 1 }

   jmEventSubscriptionID OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscription identifier associated with this event
           or zero (if none).

           Conformance:    This subscription identifier SHALL be valid
           and reported, if available on this managed system.

           See:    Section 5.8 'subscription-id' and
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { 0 }                   -- no subscription ID
       ::= { jmEventBinding 2 }

   jmEventSubscriberUserName OBJECT-TYPE
       SYNTAX      JmUTF8StringTC (SIZE (0..63))   -- 1023 in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscriber user name associated with this event
           or the empty string (if none).

           Note:   The natural language appropriate for text-to-speech
           of subscriber user name is orthogonal to the localized text
           context in IPP 'attributes-natural-language'.  The subscriber
           user name MAY include an in-line 'language tag' using Plane
           14 'language tag' characters approved for ISO 10646/Unicode.

           Conformance:    This subscriber user name SHALL be valid
           and reported, if available on this managed system.

           See:    'Language Tagging in Unicode Plain Text', RFC 2482
                   (January 1999);
                   'Plane 14 Characters for Language Tags', Unicode
                   Technical Report #7 (January 1999);
                   Section 4.3.6 'job-originating-user-name' and
                   Section 4.4.2 'uri-authentication-supported'
                   (usage of 'requesting-user-name') in [IPP-MOD];
                   Section 5.11 'subscriber-user-name' and
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no subscriber user name
       ::= { jmEventBinding 3 }

   jmEventSubscriberUserData OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..63))     -- 63 in [IPP-NOT]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscriber user data associated with this event
           or the empty string (if none).

           Conformance:    This subscriber user data SHALL be valid
           and reported, if available on this managed system.

           See:    Section 5.4 'subscriber-user-data' and
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no subscriber user data
       ::= { jmEventBinding 4 }

   jmEventDeviceURI OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..255))    -- 1023 in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The device URI associated with this event
           or the empty string (if none).

           Conformance:    This device URI SHALL be valid
           and reported, if available on this managed system.

           See:    Section 4.3.3 'job-printer-uri' in [IPP-MOD];
                   Section 4.4.1 'printer-uri-supported' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no device URI
       ::= { jmEventBinding 5 }

   jmEventDeviceName OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..127))    -- 127 in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The device name associated with this event
           or the empty string (if none).

           Conformance:    This device name SHALL be valid
           and reported, if available on this managed system.

           See:    Section 4.4.4 'printer-name' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no device name
       ::= { jmEventBinding 6 }

   jmEventDeviceState OBJECT-TYPE
       SYNTAX      INTEGER {                       -- enum in [IPP-MOD]
           unknown(2),                     -- unknown device state
           idle(3),
           processing(4),
           stopped(5)
       }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The device state associated with this event
           or 'unknown'.

           Note:   This object uses the keywords from the [IPP-MOD]
           enumerated type 'printer-state' for coherence.

           Conformance:    This device state SHALL be valid
           and reported, if available on this managed system.

           See:    Section 4.4.11 'printer-state' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { unknown }             -- unknown device state
       ::= { jmEventBinding 7 }

   jmEventDeviceStateReasons OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..255))    -- 255*n in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The device state reasons associated with this event
           (as a comma-separated list) or the empty string (if none).

           Conformance:    The natural language for keywords
           in device state reasons SHALL always be US English.

           Conformance:    These device state reasons SHALL be valid
           and reported, if available on this managed system.

           See:    Section 4.4.12 'printer-state-reasons' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no device state reasons
       ::= { jmEventBinding 8 }

   jmEventDeviceIsAcceptingJobs OBJECT-TYPE
       SYNTAX      TruthValue
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The device substate associated with this event
           or 'true' (if unknown).

           Conformance:    This device substate SHALL be valid
           and reported, if available on this managed system.

           See:    Section 4.4.23 'printer-is-accepting-jobs'
                   in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { true }                -- device is accepting jobs
       ::= { jmEventBinding 9 }

   jmEventJobSetIndex OBJECT-TYPE
       SYNTAX      Integer32 (0..32767)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job set index associated with this event
           or zero (if none).

           Conformance:    This job set index SHALL be valid
           and reported, if available on this managed system.

           See:    'jmGeneralJobSetIndex' object in [RFC-2707];
                   Section 4.3.2 'job-id' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { 0 }                   -- no job set index
       ::= { jmEventBinding 10 }
   jmEventJobIndex OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job index associated with this event
           or zero (if none).

           Conformance:    This job index SHALL be valid
           and reported, if available on this managed system.

           See:    'jmJobIndex' object in [RFC-2707];
                   Section 4.3.2 'job-id' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { 0 }                   -- no job index
       ::= { jmEventBinding 11 }

   jmEventJobName OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..255))    -- 255 in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job name associated with this event
           or the empty string (if none).

           Conformance:    This job name SHALL be valid
           and reported, if available on this managed system.

           See:    'jobName' attribute in [RFC-2707];
                   Section 4.3.5 'job-name' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no job name
       ::= { jmEventBinding 12 }

   jmEventJobState OBJECT-TYPE
       SYNTAX      INTEGER {                       -- enum in [IPP-MOD]
           unknown(2),                     -- unknown job state
           pending(3),
           pendingHeld(4),
           processing(5),
           processingStopped(6),
           canceled(7),
           aborted(8),
           completed(9)
       }
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job state associated with this event
           or 'unknown'.

           Note:   This object uses the keywords from the [IPP-MOD]
           enumerated type 'job-state' for coherence.

           Conformance:    This job state SHALL be valid
           and reported, if available on this managed system.

           See:    'jmJobState' object in [RFC-2707];
                   Section 4.3.7 'job-state' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { unknown }             -- unknown job state
       ::= { jmEventBinding 13 }

   jmEventJobStateReasons OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..255))    -- 255*n in [IPP-MOD]
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job state reasons associated with this event
           (as a comma-separated list) or the empty string (if none).

           Conformance:    The natural language for keywords
           in job state reasons SHALL always be US English.

           Conformance:    These job state reasons SHALL be valid
           and reported, if available on this managed system.

           See:    'jmJobStateReasons1' object in [RFC-2707];
                   'jobStateReasons2', 'jobStateReasons3', and
                   'jobStateReasons4' attributes in [RFC-2707];
                   Section 4.3.8 'job-state-reasons' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H }                 -- no job state reasons
       ::= { jmEventBinding 14 }

   jmEventJobKOctets OBJECT-TYPE
       SYNTAX      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job size in K octets associated with this event
           or zero (if none) or '-2' (if unknown).

           Conformance:    This job size SHALL be valid
           and reported, if available on this managed system.

           See:    'jobKOctetsTransferred' attribute in [RFC-2707];
                   Section 4.3.17.1 'job-k-octets' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { -2 }                  -- unknown job size
       ::= { jmEventBinding 15 }
   jmEventJobKOctetsProcessed OBJECT-TYPE
       SYNTAX      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job progress in
             the (work-in-progress) Printer MIB v2 [PRT-MIB2] SHOULD add
             'prtGeneralPrinterName' (corresponds to IPP 'printer-name')

           Additional variable-bindings SHALL be appended to K octets associated with this trap
           for 'jobCompleted', 'jobStateChanged', event
           or 'jobPurged':
           - Systems SHALL add
             'jmJobKOctetsProcessed'
             'jmJobImpressionsCompleted'
           - Systems that support 'sheetsCompleted' SHALL add
             'jmAttributeValue...sheetsCompleted.1'

           Additional variable-bindings zero (if none) or '-2' (if unknown).

           Conformance:    This job progress SHALL be appended to valid
           and reported, if available on this trap
           for 'jobProgress':
           - Systems that support the respective attributes SHALL add
             'jmAttributeValue...jobCollationType.1'
             'jmAttributeValue...sheetCompletedCopyNumber.1'
             'jmAttributeValue...sheetCompletedDocumentNumber.1'
             'jmAttributeValue...impressionsInterpreted.1'
             'jmAttributeValue...impressionsCompletedCurrentCopy.1'

           Systems MAY add other variable-bindings from any MIB."
       ::= managed system.

           See:    'jmJobKOctetsProcessed' object in [RFC-2707];
                   Section 4.3.18.1 'job-k-octets-processed'
                   in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { jmJobEventV2EventPrefix 1 -2 }

   4.3.  Event Objects

   --  Event Group (Cond Mandatory)
   --
   --  Implementation of this group is conditionally mandatory;                  --  mandatory for systems which send Printer or Job events via SNMP.

   jmEvent             OBJECT IDENTIFIER unknown job progress
       ::= { jobmonMIBObjects 5 jmEventBinding 16 }
   jmEventTriggerEvent

   jmEventJobImpressions OBJECT-TYPE
       SYNTAX      JmUTF8StringTC (SIZE (0..63))   -- 255 in [IPP-MOD]      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The trigger event type job size in impressions associated with this event.

           Conformance:    The natural language for keywords
           in trigger event type SHALL always be US English.
           or zero (if none) or '-2' (if unknown).

           Conformance:    This trigger event type job size SHALL be valid. valid
           and reported, if available on this managed system.

           See:    Section 5.2 'notify-events' and 4.3.17.2 'job-impressions' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
   --
       DEFVAL intentionally omitted - reported value      { -2 }                  -- unknown job size
       ::= { jmEventBinding 17 }

   jmEventJobImpressionsCompleted OBJECT-TYPE
       SYNTAX      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The job progress in impressions associated with this event
           or zero (if none) or '-2' (if unknown).

           Conformance:    This job progress SHALL be valid
           and reported, if available on this managed system.

           See:    'jmJobImpressionsCompleted' object in [RFC-2707];
                   Section 4.3.18.2 'job-impressions-completed'
                   in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { -2 }                  -- unknown job progress
       ::= { jmEvent 1 jmEventBinding 18 }

   jmEventSubscriptionID

   jmEventJobMediaSheets OBJECT-TYPE
       SYNTAX      Integer32 (0..2147483647) (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscription identifier job size in media sheets associated with this event
           or zero (if none). none) or '-2' (if unknown).

           Conformance:    This subscription identifier job size SHALL be valid
           and non-zero, reported, if available on this managed system.

           See:    'sheetsRequested' attribute in [RFC-2707];
                   Section 5.8 'subscription-id' and 4.3.17.3 'job-media-sheets' in [IPP-MOD];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { 0 -2 }                  -- no subscription ID unknown job size
       ::= { jmEvent 2 jmEventBinding 19 }

   jmEventSubscriberUserName

   jmEventJobMediaSheetsCompleted OBJECT-TYPE
       SYNTAX      JmUTF8StringTC (SIZE (0..63))   -- 1023 in [IPP-MOD]      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscriber user name job progress in media sheets associated with this event
           or the empty string zero (if none).

           Note:   The natural language appropriate for text-to-speech
           of subscriber user name is orthogonal to the localized text
           context in IPP 'attributes-natural-language'.  The subscriber
           user name MAY include an in-line 'language tag' using Plane
           14 'language tag' characters approved for ISO 10646/Unicode. none) or '-2' (if unknown).

           Conformance:    This subscriber user name job progress SHALL be valid
           and conserved, reported, if available on this managed system.

           See:    'Language Tagging    'sheetsCompleted' attribute in Unicode Plain Text', RFC 2482
                   (January 1999);
                   'Plane 14 Characters for Language Tags', Unicode
                   Technical Report #7 (January 1999); [RFC-2707];
                   Section 4.3.6 'job-originating-user-name' and
                   Section 4.4.2 'uri-authentication-supported'
                   (usage of 'requesting-user-name') 4.3.18.3 'job-media-sheets-completed'
                   in [IPP-MOD];
                   Section 5.11 'subscriber-user-name' and
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H -2 }                  -- no subscriber user name unknown job progress
       ::= { jmEvent 3 jmEventBinding 20 }

   jmEventSubscriberUserData

   jmEventJobImpressionsCompletedCC OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..63))     -- 63 in [IPP-NOT]      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The subscriber user data job progress in impressions completed
           on the current copy associated with this event
           or the empty string zero (if none). none) or '-2' (if unknown).

           Conformance:    This subscriber user data job progress SHALL be valid
           and conserved, reported, if available on this managed system.

           See:    Section 5.4 'subscriber-user-data' and    'jmJobImpressionsCompleted' object in [RFC-2707];
                   'impressions-completed-current-copy' in [IPP-PROG];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H unknown }             -- no subscriber user data unknown job progress
       ::= { jmEvent 4 jmEventBinding 21 }

   jmEventPrinterState

   jmEventJobCollationType OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..31))     -- 255 in [IPP-MOD]      JmJobCollationTypeTC
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The printer state job collation type associated with this event
           or the empty string 'unknown' (if none).

           Note:   This object uses the keywords from the [IPP-MOD]
           enumerated type 'printer-state', to avoid adding a new
           textual convention to the PWG Job Monitoring MIB [PWG-JOB].

           Conformance:    The natural language for keywords
           in printer state SHALL always be US English. unknown).

           Conformance:    This printer state SHALL job collation type be valid
           and non-empty, reported, if available on this managed system.

           See:    Section 4.4.11 'printer-state'    'jobCollationType' attribute in [IPP-MOD]; [RFC-2707];
                   'job-collation-type' in [IPP-PROG];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H unknown }             -- no printer state unknown job collation type
       ::= { jmEvent 5 jmEventBinding 22 }
   jmEventPrinterStateReasons

   jmEventJobSheetCompletedCopyNum OBJECT-TYPE
       SYNTAX      OCTET STRING (SIZE (0..255))    -- 255*n in [IPP-MOD]      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The printer state reasons job progress number of the copy currently being
           stacked for the document associated with this event
           (as a comma-separated list)
           or the empty string zero (if none) or '-2' (if none).

           Conformance:    The natural language for keywords
           in printer state reasons SHALL always be US English. unknown).

           Conformance:    These printer state reasons    This job progress SHALL be valid
           and conserved, reported, if available on this managed system.

           See:    Section 4.4.12 'printer-state-reasons'    'sheetCompletedCopyNumber' attribute
                   in [IPP-MOD]; [RFC-2707];
                   'sheet-completed-copy-number' in [IPP-PROG];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { ''H -2 }                  -- no printer state reasons unknown copy number
       ::= { jmEvent 6 jmEventBinding 23 }

   jmEventPrinterIsAcceptingJobs

   jmEventJobSheetCompletedDocNum OBJECT-TYPE
       SYNTAX      TruthValue      Integer32 (-2..2147483647)
       MAX-ACCESS  read-only
       STATUS      current
       DESCRIPTION
           "The printer substate job progress number of the document currently being
           stacked associated with this event
           or 'true' zero (if none) or '-2' (if unknown).

           Conformance:    This printer substate job progress SHALL be valid
           and conserved, reported, if available on this managed system.

           See:    Section 4.4.23 'printer-is-accepting-jobs'    'sheetCompletedDocumentNumber' attribute
                   in [IPP-MOD]; [RFC-2707];
                   'sheet-completed-document-number' in [IPP-PROG];
                   Section 7 'Notification Content' in [IPP-NOT]."
       DEFVAL      { true -2 }                  -- printer is accepting jobs unknown document number
       ::= { jmEvent 7 jmEventBinding 24 }

5.  IANA Considerations

   None - no enumerated textual conventions are defined in this
   document.

   None.

6.  Internationalization Considerations

   The 'jmEventTriggerEvent', 'jmEventPrinterState', 'jmEventDeviceState', and
   'jmEventPrinterStateReasons'
   'jmEventDeviceStateReasons' text objects defined in this document are
   of type 'JmUTF8StringTC' (UTF-8 stream-encoded ISO 10646/Unicode
   text) defined in the PWG Job Monitoring MIB [PWG-JOB]. [RFC-2707].  The natural
   language of these objects is US English.

   The 'jmEventSubscriberUserName' text object defined in this document
   is of type 'JmUTF8StringTC' (UTF-8 stream-encoded ISO 10646/Unicode
   text) defined in the PWG Job Monitoring MIB [PWG-JOB]. [RFC-2707].  The natural
   language of this object is inherently ambiguous (as it usually
   contains some transform of a personal name).

7.  Security Considerations

   This IPP Notifications over SNMP mapping defines only 'read-only'
   objects.  It is suitable for use with any version of SNMP, as no
   update security is required (because no configuration updates are
   supported).

   No sensitive information is available via IPP Notifications over
   SNMP.

8.  References

   To be supplied.

   [IPP-MOD] R. deBry, T. Hastings, R. Herriot, S. Isaacson, P. Powell.
   IPP/1.1 Model and Semantics, <draft-ietf-ipp-model-v11-06.txt>
   (work-in-progress), March 2000.

   [IPP-NOT] S. Isaacson, J. Martin, R. deBry, T. Hastings, M. Shepherd,
   R. Bergman.  IPP Event Notification Specification,
   <draft-ietf-ipp-not-spec-02.txt> (work-in-progress), March 2000.

   [IPP-PROG] T. Hastings, R. Bergman, H. Lewis.  Proposed Job Progress
   Attributes for IPP, <draft-ietf-ipp-job-prog.txt> (work-in-progress),
   February 2000.

   [RFC-1213] K. McCloghrie, M. Rose.  MIB-II, RFC 1213, March 1991.

   [RFC-1514] P. Grillo, S. Waldbusser.  Host Resources MIB, RFC 1514,
   September 1993.

   [RFC-1759] R. Smith, F. Wright, T. Hastings, S. Zilles,
   J. Gyllenskog.  Printer MIB, RFC 1759, March 1995.

   [RFC-2573] D. Levi, P. Meyer, B. Stewart.  SNMP Applications, RFC
   2573, April 1999.

   [RFC-2576] R. Frye, D. Levi, S. Routhier, B. Wijnen.  Coexistence
   between Version 1, Version 2, and Version 3 of the Internet-standard
   Network Management Framework, RFC 2576, March 2000.

   [RFC-2707] R. Bergman, T. Hastings, S. Isaacson, H. Lewis.  Job
   Monitoring MIB v1.0, RFC 2707, November 1999

9.  Change Log

   Changes in reverse chronological order (most recent first).

   <draft-ietf-ipp-not-over-snmp-02.txt> - 19 March 2000
   1)  Renamed Printer Event notification group to Device Basic Event
       and 'jmPrinterEventV2Event' notification to
       'jmDeviceBasicV2Event', to better align with IPP and to support
       non-printing jobs.
   2)  Revised 'jmDeviceBasicV2Event' notification to remove
       'hrDeviceStatus', 'hrPrinterStatus',
       'hrPrinterDetectedErrorState' from mandatory trap bindings
       because they were redundant, per request of Ron Bergman.
   3)  Renamed Job Event notification group to Job Basic Event and
       'jmJobEventV2Event' notification to 'jmJobBasicV2Event', to
       better align with IPP and to support variant job events.
   4)  Defined new Job Completed Event notification group and defined
       new Job Progress Event notification group, to better align with
       IPP and to support variant job events.
   5)  Renamed Event object group to Event Binding,
       'jmEventPrinterState' to 'jmEventDeviceState',
       'jmEventPrinterStateReasons' to 'jmEventDeviceStateReasons',
       'jmEventPrinterIsAcceptingJobs' to
       'jmEventDeviceIsAcceptingJobs', to support non-printing jobs.
   6)  Revised Event Binding object group, adding explicit objects
       'jmEventDeviceURI', 'jmEventDeviceName', 'jmEventJobSetIndex',
       'jmEventJobIndex', 'jmEventJobName', 'jmEventJobState',
       'jmEventJobStateReasons', 'jmEventJobKOctets',
       'jmEventJobKOctetsProcessed', 'jmEventJobImpressions',
       'jmEventJobImpressionsCompleted', 'jmEventJobMediaSheets',
       'jmEventJobMediaSheetsCompleted',
       'jmEventJobImpressionsCompletedCC', 'jmEventJobCollationType',
       'jmEventJobSheetCompletedCopyNum',
       'jmEventJobSheetCompletedDocNum', per request of Ron Bergman.
   7)  Revised SYNTAX of 'jmEventTriggerEvent' object from from
       'JmUTF8StringTC' (string) to IPP-aligned enumeration, per request
       of Ron Bergman.
   8)  Removed all references to Printer MIB v2, as they were of limited
       value, per request of Ron Bergman.
   9)  Revised 'SNMP Mapping for IPP Printer Events' section for renamed
       event binding objects, per request of Ron Bergman.
   10) Revised 'Rules for Encoding Notifications' section to truncate
       additional string bindings, per request of Ron Bergman.
   11) Revised 'Registration via IPP' section, to change scheme name
       from 'ipp-snmp:' to 'snmpnotify:', per request of Ron Bergman.

   <draft-ietf-ipp-not-over-snmp-01.txt> - 1 December 1999
   1)  Deleted 'JmTriggerEventTC' textual convention (see below).

   2)  Revised SYNTAX of 'jmEventTriggerEvent' object from
       'JmTriggerEventTC' (enumeration) to 'JmUTF8StringTC' (string), to
       support use of IPP standard keywords.
   3)  Added 'jmEventPrinterState', 'jmEventPrinterStateReasons', and
       'jmEventPrinterIsAcceptingJobs' objects for consistency w/
       [IPP-NOT] and to reduce ambiguity about printer states inherent
       in RFC 1759.
   4)  Revised DESCRIPTION of 'jmPrinterEventV2Event' notification to
       add SHOULD (recommendation) for 'jmEventPrinterState',
       'jmEventPrinterStateReasons', and 'jmEventPrinterIsAcceptingJobs'
       objects.
   5)  Revised 'SNMP Mapping for IPP Printer Events' section to add
       direct mapping of IPP notification attributes to
       'jmEventPrinterState', 'jmEventPrinterStateReasons', and
       'jmEventPrinterIsAcceptingJobs' objects.
   6)  Revised 'Rules for Encoding Notifications' section to add
       'jmEventPrinterState' and 'jmEventPrinterStateReasons'.
   7)  Revised 'IANA Considerations' section to specify there are none -
       no enumerated or keyword textual conventions are now defined in
       this document.
   8)  Revised 'Internationalization Considerations' section to specify
       that US English keywords are used in 'jmEventTriggerEvent',
       'jmEventPrinterState', and 'jmEventPrinterStateReasons' objects
       and thus no explicit natural language tagging is required.

   <draft-ietf-ipp-not-over-snmp-00.txt> - 10 October 1999
   1)  Initial version.

10.  Intellectual Property Notice

   The IETF takes no position regarding the validity or scope of any
   intellectual property or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; neither does it represent that it
   has made any effort to identify any such rights.  Information on the
   IETF's procedures with respect to rights in standards-track and
   standards-related documentation can be found in BCP-11.  Copies of
   claims of rights made available for publication and any assurances of
   licenses to be made available, or the result of an attempt made to
   obtain a general license or permission for the use of such
   proprietary rights by implementers or users of this specification can
   be obtained from the IETF Secretariat.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights which may cover technology that may be required to practice
   this standard.  Please address the information to the IETF Executive
   Director.

11.  Authors' Addresses

   Tom Hastings
   Xerox Corporation
   701 S Aviation Blvd, MS 834-03E
   El Segundo, CA  90245

   Phone: +1 310-333-6413
   Email: hastings@cp10.es.xerox.com

   Ira McDonald
   High North Inc
   221 Ridge Ave
   Grand Marais, MI  49839

   Phone: +1 906-494-2434 or +1 906-494-2697
   Email: imcdonald@sharplabs.com

12.  Full Copyright Statement

   Copyright (C) The Internet Society (1999). (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.