RFC 7612
Lightweight Directory Access Protocol (LDAP): Schema for Printer Services
Lightweight Directory Access Protocol (LDAP): Schema for Printer Services ๐จ๏ธโจ
okay bestie, this one is RFC 7612, and it's giving printer schema realness ๐ It's an Independent Submission, so it came in through the RFC Editor rather than the IETF standards track. It's Informational (published for info, not a standard), dated June 2015, and it's ISSN 2070-1721 if you want to look it up ๐ธ
The authors are P. Fleming (Independent) and I. McDonald (High North) ๐ซถ And the big news: this doc obsoletes RFC 3712, the original LDAP Printer Schema, so 7612 is the glow-up version ๐
Abstract ๐ท
okay so the abstract says this doc defines a schema, object classes, and attributes for Printers and print services, to be used with directories that speak the Lightweight Directory Access Protocol (RFC 4510) ๐จ๏ธ It's built on the Printer attributes listed in Appendix E of "Internet Printing Protocol/1.1: Model and Semantics" (RFC 2911), and the extra attributes come from "Printer MIB v2" (RFC 3805), "PWG Command Set Format for IEEE 1284 Device ID v1.0" (PWG 5107.2), "IPP Job and Printer Extensions - Set 3 (JPS3)" (PWG 5100.13), and "IPP Everywhere" (PWG 5100.14) โจ
It's an Independent Submission to the RFC Editor from the Internet Printing Protocol (IPP) Working Group of the IEEE-ISTO Printer Working Group (PWG), as part of their "IPP Everywhere" (PWG 5100.14) project for secure mobile printing with vendor-neutral Client software ๐ฑ๐จ๏ธ And yes, this document obsoletes RFC 3712 ๐
Status of This Memo ๐
This document is not an Internet Standards Track specification. It's published for informational purposes ๐ฆ
It's a contribution to the RFC Series, independent of any other RFC stream. The RFC Editor picked it for publication at its discretion, and they make no statement about whether it's valuable for implementation or deployment ๐ Documents the RFC Editor approves are not a candidate for any level of Internet Standard. See Section 2 of RFC 5741 if you want the receipts ๐งพ
For the current status, any errata, and how to send feedback, check http://www.rfc-editor.org/info/rfc7612 ๐
Copyright Notice ยฉ๏ธ
Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved ๐
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as in effect on the date of publication. Please read those carefully, because they describe your rights and restrictions for this document ๐
Table of Contents ๐๏ธ
1. Introduction ....................................................4
1.1. Relationship to SLP Printer Service ........................4
1.2. Source of LDAP Printer Attributes ..........................4
1.3. Source of LDAP Printer Schema OIDs .........................5
1.3.1. IBM Assignments for RFC 3712 ........................5
1.3.2. IEEE-ISTO PWG Assignments ...........................5
1.4. Rationale for Design Choices ...............................5
1.4.1. Rationale for Using DirectoryString Syntax ..........5
1.4.2. Rationale for Using caseIgnoreMatch .................6
1.4.3. Rationale for Using caseIgnoreSubstringsMatch .......7
2. Conventions Used in This Document ...............................8
2.1. Requirements Language ......................................8
2.2. LDAP Schema Descriptions ...................................8
2.3. Abbreviations ..............................................8
3. Definition of Object Classes ....................................9
3.1. slpServicePrinter .........................................10
3.2. printerAbstract ...........................................10
3.3. printerService ............................................11
3.4. printerServiceAuxClass ....................................12
3.5. printerIPP ................................................12
3.6. printerLPR ................................................12
4. Definition of Attribute Types ..................................13
4.1. printer-uri ...............................................15
4.2. printer-xri-supported .....................................16
4.3. printer-name ..............................................18
4.4. printer-natural-language-configured .......................19
4.5. printer-location ..........................................19
4.6. printer-info ..............................................20
4.7. printer-more-info .........................................21
4.8. printer-make-and-model ....................................21
4.9. printer-ipp-versions-supported ............................22
4.10. printer-multiple-document-jobs-supported .................23
4.11. printer-charset-configured ...............................23
4.12. printer-charset-supported ................................24
4.13. printer-generated-natural-language-supported .............24
4.14. printer-document-format-supported ........................25
4.15. printer-color-supported ..................................25
4.16. printer-compression-supported ............................26
4.17. printer-pages-per-minute .................................26
4.18. printer-pages-per-minute-color ...........................27
4.19. printer-finishings-supported .............................27
4.20. printer-number-up-supported ..............................28
4.21. printer-sides-supported ..................................28
4.22. printer-media-supported ..................................29
4.23. printer-media-local-supported ............................30
4.24. printer-resolution-supported .............................30
4.25. printer-print-quality-supported ..........................31
4.26. printer-job-priority-supported ...........................32
4.27. printer-copies-supported .................................32
4.28. printer-job-k-octets-supported ...........................33
4.29. printer-current-operator .................................33
4.30. printer-service-person ...................................34
4.31. printer-delivery-orientation-supported ...................34
4.32. printer-stacking-order-supported .........................35
4.33. printer-output-features-supported ........................36
4.34. printer-aliases ..........................................37
4.35. printer-device-id ........................................37
4.36. printer-device-service-count .............................38
4.37. printer-uuid .............................................38
4.38. printer-charge-info ......................................39
4.39. printer-charge-info-uri ..................................39
4.40. printer-geo-location .....................................40
4.41. printer-ipp-features-supported ...........................41
5. Definition of Syntaxes .........................................42
6. Definition of Matching Rules ...................................42
7. IANA Considerations ............................................42
7.1. Registration of Attribute Types ...........................43
7.2. Object Classes and Attribute Types from RFC 3712 ..........44
8. Internationalization Considerations ............................45
9. Security Considerations ........................................45
10. References ....................................................46
10.1. Normative References .....................................46
10.2. Informative References ...................................50
Appendix A. Changes since RFC 3712 ................................52
Acknowledgments ...................................................54
Authors' Addresses ................................................54
1. Introduction ๐
okay so this doc defines several object classes to give Lightweight Directory Access Protocol (LDAP) [RFC4510] apps flexible options for describing Printer info in an LDAP schema ๐จ๏ธ๐ There are classes for making directory entries with common Printer info, and classes for extending existing entries with Service Location Protocol Version 2 (SLPv2) [RFC2608], Internet Printing Protocol/1.1 (IPP/1.1) [RFC2911], and lineprinter (LPR) [RFC1179] protocol-specific info โจ
Same memo vibes as the abstract: it's an Independent Submission from the Internet Printing Protocol Working Group of the IEEE-ISTO Printer Working Group, part of the PWG "IPP Everywhere" (PWG 5100.14) project for secure mobile printing with vendor-neutral Client software ๐ฑ๐ซถ
1.1. Relationship to SLP Printer Service ๐ง
the schema here is technically aligned with the stable IANA-registered 'service:printer:' v2.0 template [SLPPRT20], so it plays nicely with the already-deployed SLPv2 [RFC2608] service advertising and discovery infrastructure ๐ The attribute syntaxes are also technically aligned with that template, which is why simpler types sometimes get used. For example, 'DirectoryString' [RFC4517] is used instead of 'labeledURI' [RFC2079] for the 'printer-uri' attribute ๐
1.2. Source of LDAP Printer Attributes ๐
the schema in this doc is based on two things:
- all of the Printer attributes listed in Appendix E ("Generic Directory Schema") of "Internet Printing Protocol/1.1: Model and Semantics" [RFC2911] that are defined in Section 4.4 ("Printer Description Attributes") of [RFC2911]
- selected Printer attributes defined in "Printer MIB v2" [RFC3805], "PWG Command Set for IEEE 1284 Device ID v1.0" [PWG5107.2], "IPP Job and Printer Extensions - Set 3 (JPS3)" [PWG5100.13], and "IPP Everywhere" [PWG5100.14]
the table of Printer attributes and their source documents is in Section 4 ("Definition of Attribute Types") of this document ๐บ๏ธ
1.3. Source of LDAP Printer Schema OIDs ๐ข
1.3.1. IBM Assignments for RFC 3712 ๐ท๏ธ
so in March 2000, IBM permanently assigned ASN.1 OIDs to all of the object classes and attribute types that were defined in the original LDAP Printer Schema [RFC3712] (see Section 7.2) ๐
1.3.2. IEEE-ISTO PWG Assignments ๐ธ
in October 2011, IBM permanently delegated the base ASN.1 OID 1.3.18.0.2.24.46 to the IEEE-ISTO PWG for use in any PWG project ๐ฆ Also in October 2011, the IEEE-ISTO PWG permanently assigned subordinate ASN.1 OIDs for all of the new attribute types defined in this updated LDAP Printer Schema (see Section 7.1) ๐
1.4. Rationale for Design Choices ๐ง
ok bestie, the next part is where we get into why the schema is built the way it is ๐ It's coming up next, so stay tuned ๐
1.4.1. Rationale for Using DirectoryString Syntax โจ
okay so the attribute syntax 'DirectoryString' (UTF-8 [STD63]) from [RFC4517] gets picked for several groups of string attributes in this doc ๐
- URI
printer-uri,printer-xri-supported,printer-more-info,printer-charge-info-uri,printer-uuid
The UTF-8 encoding is compatible with deployment of (UTF-8 based) Internationalized Resource Identifiers (IRIs) [RFC3987]. ๐ฆ
- Description
printer-name,printer-location,printer-info,printer-make-and-model
The UTF-8 encoding supports descriptions in any language, conformant with the IETF Policy on Character Sets and Languages [BCP18]. ๐
Note: The printer-natural-language-configured attribute contains a language tag [BCP47] for these description attributes (for example, to support text-to-speech conversions). ๐
- Keyword
printer-compression-supported,printer-finishings-supported,printer-media-supported,printer-media-local-supported,printer-print-quality-supported
The UTF-8 encoding is compatible with the current IPP/1.1 [RFC2911] definition of the equivalent attributes, most of which have the IPP/1.1 union syntax 'keyword' or 'name'. The keyword attributes defined in this document are extensible by site-specific or vendor-specific 'names' that behave like new 'keywords'. ๐
Note: In IPP/1.1, each value is strongly typed over-the-wire as either 'keyword' or 'name'. This union selector is not preserved in the definitions of these equivalent LDAP attributes. ๐
1.4.2. Rationale for Using caseIgnoreMatch
The EQUALITY matching rule 'caseIgnoreMatch' defined in [RFC4517] is specified for several groups of string attributes that are defined in this document:
- URI
These URI attributes specify EQUALITY matching with 'caseIgnoreMatch' (rather than with 'caseExactMatch') in order to conform to the spirit of [STD66], which requires case-insensitive matching on the host part of a URI versus case-sensitive matching on the remainder of a URI. โจ
These URI attributes follow existing practice of supporting case-insensitive equality matching for host names in the associatedDomain attribute defined in [RFC4524].
Either equality matching rule choice would be a compromise:
- a) case-sensitive whole URI matching can lead to false negative matches and has been shown to be fragile (given deployed client applications that 'pretty up' host names displayed and transferred in URI);
- b) case-insensitive whole URI matching can lead to false positive matches, although it is a dangerous practice to publish URI that differ only by case (for example, in the path elements). ๐
- Description
Case-insensitive equality matching is more user-friendly for description attributes. ๐
- Keyword
Case-insensitive equality matching is more user-friendly for keyword attributes. ๐ซถ
- IEEE 1284 Device ID
Case-insensitive equality matching is mandatory for IEEE 1284 Device ID attributes. ๐
1.4.3. Rationale for Using caseIgnoreSubstringsMatch
The SUBSTR matching rule 'caseIgnoreSubstringsMatch' defined in [RFC4517] is specified for several groups of string attributes that are defined in this document:
- URI
These URI attributes follow existing practice of supporting case-insensitive equality matching for host names in the associatedDomain attribute defined in [RFC4524]. ๐ธ
- Description
Support for case-insensitive substring matching is more user-friendly for description attributes. ๐ง
- Keyword
Support for case-insensitive substring matching is more user-friendly for keyword attributes. ๐
- IEEE 1284 Device ID
Support for case-insensitive substring matching is mandatory for IEEE 1284 Device ID attributes. ๐ฅ
2. Conventions Used in This Document โจ
2.1. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. ๐
2.2. LDAP Schema Descriptions
Schema definitions are provided using LDAP [RFC4510] description formats. Definitions provided here are formatted (line wrapped) for readability. ๐
2.3. Abbreviations
This document makes use of the following abbreviations (given with their expanded forms and references for further reading):
IANA - Internet Assigned Numbers Authority
<http://www.iana.org>
IEEE - Institute of Electrical and Electronics Engineers
<http://www.ieee.org>
IPP - Internet Printing Protocol [RFC2911] [PWG5100.12]
<http://www.pwg.org/ipp/>
ISTO - IEEE Industry Standards and Technology Organization
<http://www.ieee-isto.org/>
PWG - IEEE-ISTO Printer Working Group
<http://www.pwg.org>
RFC - Request for Comments
<http://www.rfc-editor.org>
TLS - Transport Layer Security [RFC5246]
URI - Uniform Resource Identifier [STD66]
URL - Uniform Resource Locator [STD66]
UTF-8 - Unicode Transformation Format - 8-bit [STD63]
3. Definition of Object Classes ๐ฆ
We define the following LDAP object classes for use with both generic Printer-related information and services specific to SLPv2 [RFC2608], IPP/1.1 [RFC2911], and LPR [RFC1179].
slpServicePrinter - auxiliary class for SLP-registered Printers
printerAbstract - abstract class for all Printer classes
printerService - structural class for Printers
printerServiceAuxClass - auxiliary class for Printers
printerIPP - auxiliary class for IPP Printers
printerLPR - auxiliary class for LPR Printers
The following are some examples of how applications could choose to use these classes when creating directory entries:
- Use printerService for directory entries containing common Printer information.
- Use both printerService and slpServicePrinter for directory entries containing common Printer information for SLP-registered Printers.
- Use printerService, printerLPR, and printerIPP for directory entries containing common Printer information for Printers that support both LPR and IPP.
- Use printerServiceAuxClass and object classes not defined by this document for directory entries containing common Printer information. In this example, printerServiceAuxClass is used for extending other structural classes defining Printer information with common Printer information defined in this document.
Refer to Section 4 for the definition of attribute types referenced by these object classes. We use attribute names instead of OIDs in object class definitions for clarity. Some attribute names described in [RFC2911] have been prefixed with 'printer-' as recommended in [RFC2926] and [SLPPRT20]. ๐
3.1. slpServicePrinter
( 1.3.18.0.2.6.254
NAME 'slpServicePrinter'
DESC 'Service Location Protocol (SLP) information.'
AUXILIARY
SUP slpService
)
This auxiliary class defines information specific to the Service Location Protocol (SLPv2) [RFC2608]. It MAY be used to create new, or extend existing, directory entries with SLP 'service:printer' abstract service type information as defined in [SLPPRT20]. This object class is derived from 'slpService', the parent class for all SLP services, defined in [RFC2926]. ๐ง
3.2. printerAbstract
( 1.3.18.0.2.6.258
NAME 'printerAbstract'
DESC 'Printer-related information.'
ABSTRACT
SUP top
MAY ( printer-name $
printer-natural-language-configured $
printer-location $
printer-info $
printer-more-info $
printer-make-and-model $
printer-multiple-document-jobs-supported $
printer-charset-configured $
printer-charset-supported $
printer-generated-natural-language-supported $
printer-document-format-supported $
printer-color-supported $
printer-compression-supported $
printer-pages-per-minute $
printer-pages-per-minute-color $
printer-finishings-supported $
printer-number-up-supported $
printer-sides-supported $
printer-media-supported $
printer-media-local-supported $
printer-resolution-supported $
printer-print-quality-supported $
printer-job-priority-supported $
printer-copies-supported $
printer-job-k-octets-supported $
printer-current-operator $
printer-service-person $
printer-delivery-orientation-supported $
printer-stacking-order-supported $
printer-output-features-supported $
printer-device-id $
printer-device-service-count $
printer-uuid $
printer-charge-info $
printer-charge-info-uri $
printer-geo-location )
)
This abstract class defines Printer information. It is a base class for deriving other Printer-related classes, such as, but not limited to, classes defined in this document. It defines a common set of Printer attributes that are not specific to any one type of service, protocol, or operating system. ๐
3.3. printerService
( 1.3.18.0.2.6.255
NAME 'printerService'
DESC 'Printer information.'
STRUCTURAL
SUP printerAbstract
MAY ( printer-uri $
printer-xri-supported )
)
This structural class defines Printer information. It is derived from class printerAbstract and thus inherits common Printer attributes. This class can be used with or without auxiliary classes to define Printer information. Auxiliary classes can be used to extend the common Printer information with information specific to the protocol, service, or operating system. โจ
Note: When extending other structural classes with auxiliary classes, printerService SHOULD NOT be used. ๐
3.4. printerServiceAuxClass
( 1.3.18.0.2.6.257
NAME 'printerServiceAuxClass'
DESC 'Printer information.'
AUXILIARY
SUP printerAbstract
MAY ( printer-uri $
printer-xri-supported )
)
This auxiliary class defines Printer information. It is derived from class printerAbstract and thus inherits common Printer attributes. ๐ธ
3.5. printerIPP
( 1.3.18.0.2.6.256
NAME 'printerIPP'
DESC 'Internet Printing Protocol (IPP) information.'
AUXILIARY
SUP top
MAY ( printer-ipp-versions-supported $
printer-ipp-features-supported $
printer-multiple-document-jobs-supported )
)
This auxiliary class defines Internet Printing Protocol (IPP/1.1) [RFC2911] information. It is used to extend structural classes with IPP-specific Printer information. ๐
Note: See "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for conforming URI for IPP Printers. ๐
3.6. printerLPR
( 1.3.18.0.2.6.253
NAME 'printerLPR'
DESC 'LPR information.'
AUXILIARY
SUP top
MUST ( printer-name )
MAY ( printer-aliases )
)
This auxiliary class defines LPR [RFC1179] information. It is used to identify directory entries that support LPR. ๐ง
4. Definition of Attribute Types โจ
okay bestie, this section is where we meet all the attribute types the object classes from Section 3 are going to use ๐ Every one of them has a syntax OID from Section 3 of [RFC4517] (check out Section 5 ("Definition of Syntaxes") below for the details ๐), and they point at matching rule names instead of OIDs, which is honestly so much easier to read ๐ฆ
Real talk, if the Printer info isn't known, the attribute value SHOULD NOT be set for the optional ones ๐ Don't invent stuff, babe. The matching rules are defined in Section 4 of [RFC4517] and we talk about them more in Section 6 ("Definition of Matching Rules") later on ๐
Note: Some string limits matter here ๐ For compatibility with existing implementations of [RFC3712] and the underlying string length limits in [RFC2707], [RFC2911], [RFC3805], [PWG5107.2], [PWG5100.13], and [PWG5100.14], implementations of these attributes SHOULD NOT exceed those limits, so nothing gets truncated or falsely matched ๐ญ
Note: For interoperability and text that actually displays nicely ๐, values SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]. They SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF. CR and LF SHOULD only show up together (never as singletons), and HT, CR, or LF SHOULD NOT show up in names, like printer-name and printer-aliases โจ
Note: some attributes are described as 'List of xxx' (comma as the member delimiter), and others are 'One of xxx' (single-valued) ๐ Any attribute can have multiple values, shown as multiple instances, except where the syntax explicitly restricts it to be single-valued ๐ซถ
Note: values of printer-xri-supported and printer-resolution-supported use different field delimiters, '<' and '>' respectively ๐ง The reason is compatibility with the corresponding attributes in the IANA-registered SLP 'service:printer:' v2.0 template [SLPPRT20], which was defined before the original LDAP Printer Schema [RFC3712] was written. Iconic history moment ๐
Here's the table that summarises the attribute names defined by this document and their source document names from [RFC2911], [RFC3805], [PWG5107.2], or [PWG5100.13] ๐ธ Some source names got a 'printer-' prefix as recommended in [RFC2926], so the flat LDAP namespace doesn't get messy ๐
LDAP and SLP Printer Schema Source Document and Attribute Name
------------------------------ -------------------------------------
*** IPP/1.1 and Semantics Model [RFC2911]
printer-uri
printer-xri-supported
[printer-uri-supported]
[uri-authentication-supported]
[uri-security-supported]
printer-name printer-name
printer-natural-language-configured
natural-language-configured
printer-location printer-location
printer-info printer-info
printer-more-info printer-more-info
printer-make-and-model printer-make-and-model
printer-ipp-versions-supported ipp-versions-supported
printer-multiple-document-jobs-supported
multiple-document-jobs-supported
printer-charset-configured charset-configured
printer-charset-supported charset-supported
printer-generated-natural-language-supported
generated-natural-language-supported
printer-document-format-supported
document-format-supported
printer-color-supported color-supported
printer-compression-supported compression-supported
printer-pages-per-minute pages-per-minute
printer-pages-per-minute-color pages-per-minute-color
printer-finishings-supported finishings-supported
printer-number-up-supported number-up-supported
printer-sides-supported sides-supported
printer-media-supported media-supported
printer-media-local-supported [site names from IPP media-supported]
printer-resolution-supported printer-resolution-supported
printer-print-quality-supported print-quality-supported
printer-job-priority-supported job-priority-supported
printer-copies-supported copies-supported
printer-job-k-octets-supported job-k-octets-supported
*** Printer MIB v2 [RFC3805]
printer-current-operator prtGeneralCurrentOperator
printer-service-person prtGeneralServicePerson
printer-delivery-orientation-supported
prtOutputPageDeliveryOrientation
printer-stacking-order-supported
prtOutputStackingOrder
printer-output-features-supported
[prtOutputBursting]
[prtOutputDecollating]
[prtOutputPageCollated]
[prtOutputOffsetStacking]
printer-aliases prtGeneralPrinterName
*** Cmd Set 1284 Device ID [PWG5107.2]
printer-device-id printer-device-id
*** IPP Job/Printer Ext Set3 [PWG5100.13]
printer-device-service-count device-service-count
printer-uuid printer-uuid
printer-charge-info printer-charge-info
printer-charge-info-uri printer-charge-info-uri
printer-geo-location printer-geo-location
printer-ipp-features-supported ipp-features-supported
4.1. printer-uri
Let's meet printer-uri, the URI supported by this Printer ๐
( 1.3.18.0.2.4.1140
NAME 'printer-uri'
DESC 'A URI supported by this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
If the printer-xri-supported LDAP attribute is implemented, then this printer-uri value MUST be listed in printer-xri-supported ๐จ No skipping it, periodt ๐
See [STD66] for the details of URI syntax ๐ฆ
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length ๐
Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute, and LDAP administrative clients SHOULD NOT write malformed URI values into it ๐
Note: check out "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for the conforming URIs for IPP Printers ๐
Note: for SLP-registered Printers, the LDAP printer-uri attribute SHOULD be set to the value of the SLP-registered URL of the Printer, so interworking with SLPv2 [RFC2608] service discovery works ๐ง
Note: see Sections 1.4.1, 1.4.2, and 1.4.3 for the rationale behind these design choices ๐
4.2. printer-xri-supported
This one is the XRI (extended resource identifier) supported by this Printer, and it's giving bundle energy ๐
( 1.3.18.0.2.4.1107
NAME 'printer-xri-supported'
DESC 'An XRI (extended resource identifier) supported by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Each value of this attribute MUST consist of a URI (uniform resource identifier) followed by its (optional) authentication and security fields ๐ฅ Each XRI field MUST be delimited by '<', and trailing whitespace is optional. For example:
'uri=ipp://example.com/ipp< auth=digest< sec=tls<'
'uri=ipps://example.com/ipp< auth=digest< sec=tls<'
'uri=lpr://example.com/lpr< auth=none< sec=none<'
'uri=mailto:printer@example.com< auth=none< sec=none<'
Note: check the note in Section 4 about the different field delimiters used in printer-xri-supported and printer-resolution-supported ('<' and '>', respectively). They're chosen for compatibility with the IANA-registered SLP 'service:printer:' v2.0 template [SLPPRT20] ๐
Note: multiple values for this attribute are represented as multiple instances of this attribute ๐
See [STD66] for the details of URI syntax ๐ฆ
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length ๐
Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute, and LDAP administrative clients SHOULD NOT write malformed URI values into it ๐
Note: this attribute is based on the IPP/1.1 [RFC2911] attributes 'printer-uri-supported', 'uri-authentication-supported', and 'uri-security-supported', which are called the 'Three Musketeers' because they're parallel, ordered attributes ๐ This attribute unfolds those IPP/1.1 attributes, so it avoids the ordering (and same number of values) constraints of the separate IPP/1.1 attributes โจ
Defined keywords for the fields include:
'uri'(IPP 'printer-uri-supported')'auth'(IPP 'uri-authentication-supported')'sec'(IPP 'uri-security-supported')
A missing 'auth' field SHOULD be interpreted to mean 'none' ๐ Per IPP/1.1 [RFC2911], "IPP Job and Printer Extensions - Set 3 (JPS3)" [PWG5100.13], and the IANA IPP registry [IANAIPP], the defined values of the 'auth' field include:
'none'(no authentication for this URI)'requesting-user-name'(from operation request)'basic'(HTTP/1.1 Basic [RFC2617] and [RFC7235])'digest'(HTTP/1.1 Digest [RFC2617] and [RFC7235])'certificate'(X.509 Certificate [RFC5280] and [RFC6818])'negotiate'(HTTP/1.1 Negotiate [RFC4559])
The 'certificate' value refers to the IPP Client certificate extracted from the TLS session ๐
A missing 'sec' field SHOULD be interpreted to mean 'none' ๐ซถ Per IPP/1.1 [RFC2911] and the IANA IPP registry [IANAIPP], the defined values of the 'sec' field include:
'none'(no security for this URI)'ssl3'(Netscape's Secure Socket Layer protocol (SSL3))'tls'(IETF TLS, [RFC5246])
Note: the syntax and delimiter for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20] ๐ง Whitespace is permitted after (but not before) the delimiter '<' โจ
Note: see "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme" [RFC7472] for the conforming URIs for IPP Printers ๐
Note: see Sections 1.4.1, 1.4.2, and 1.4.3 for the rationale behind these design choices ๐
4.3. printer-name
Last but definitely not least, printer-name is the site-specific administrative name of this Printer ๐ธ
( 1.3.18.0.2.4.1135
NAME 'printer-name'
DESC 'The site-specific administrative name of this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
Values of this attribute SHOULD be specified in the language given in printer-natural-language-configured (for example, so text-to-speech conversions work nicely ๐ฃ๏ธ). The Printer's name MAY be specified in any language though, so you've got options ๐
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length ๐
Note: this name can be the last part of the Printer's URI, or it can be completely unrelated ๐ฆ It can also contain characters that aren't allowed in a conventional URI (see [STD66]) ๐
Note: for interoperability, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; and (b) SHOULD NOT contain DEL or any C0 or C1 control characters ๐ซถ
4.4. printer-natural-language-configured โจ
okay bestie, this one is the configured natural language for LDAP attributes that use the DirectoryString (UTF-8) syntax in this directory entry ๐
( 1.3.18.0.2.4.1119
NAME 'printer-natural-language-configured'
DESC 'The configured natural language for LDAP attributes of
syntax DirectoryString (UTF-8) in this directory entry.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
It's also a possible natural language for IPP string attributes set by an operator, a system administrator, or the manufacturer ๐ And it's the (declared) natural language of the printer-name, printer-location, printer-info, and printer-make-and-model attributes for this Printer, which is so organized ๐
Values of language tags MUST conform to "Tags for Identifying Languages" [BCP47]. For example:
'en-us' (English as spoken in the US)
'fr-fr' (French as spoken in France)
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length.
Note: For compatibility with IPP/1.1 [RFC2911], language tags in this attribute SHOULD be lowercase normalized. ๐
4.5. printer-location ๐
( 1.3.18.0.2.4.1136
NAME 'printer-location'
DESC 'The physical location of this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
For example:
'Room 123A'
'Second floor of building XYZ'
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length.
Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). ๐งน
4.6. printer-info ๐ฌ
( 1.3.18.0.2.4.1139
NAME 'printer-info'
DESC 'Descriptive information about this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
For example:
'This Printer can be used for printing color transparencies for
HR presentations'
'Out of courtesy for others, please print only small (1-5 page)
jobs at this Printer'
'This Printer is going away on July 1, 1997; please find a new
Printer'
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length.
Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). ๐ซถ
4.7. printer-more-info ๐
( 1.3.18.0.2.4.1134
NAME 'printer-more-info'
DESC 'A URI for more information about this specific Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
So this could be an HTTP URI pointing at an HTML page that a Web Browser can open. The info from this URI is meant for end users to read ๐
See [STD66] for details of URI syntax.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 1023 octets in length.
Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Be nice to your URIs, bestie ๐
Note: See Sections 1.4.1, 1.4.2, and 1.4.3 for rationale for design choices.
4.8. printer-make-and-model ๐จ๏ธ
( 1.3.18.0.2.4.1138
NAME 'printer-make-and-model'
DESC 'Make and model of this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 127 octets in length.
Note: The Printer manufacturer MAY initially populate this attribute. ๐ญ
Note: For interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). โจ
4.9. printer-ipp-versions-supported ๐งพ
( 1.3.18.0.2.4.1133
NAME 'printer-ipp-versions-supported'
DESC 'Comma-delimited list of IPP versions supported by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'1.1,2.0'
Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated. Nobody gets chopped mid-list, periodt ๐
The IPP protocol version(s) MUST include major and minor versions, i.e., the exact version numbers for which this Printer implementation meets the IPP version-specific conformance requirements as registered in the IANA IPP registry [IANAIPP].
IANA-registered versions of IPP currently are:
'1.0' (IPP/1.0 [RFC2566], OBSOLETE)
'1.1' (IPP/1.1 [RFC2911])
'2.0' (IPP/2.0 [PWG5100.12])
'2.1' (IPP/2.1 [PWG5100.12])
'2.2' (IPP/2.2 [PWG5100.12])
4.10. printer-multiple-document-jobs-supported ๐
( 1.3.18.0.2.4.1132
NAME 'printer-multiple-document-jobs-supported'
DESC 'Indicates whether or not this Printer supports more than one
document per job.'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE
)
4.11. printer-charset-configured ๐ค
( 1.3.18.0.2.4.1109
NAME 'printer-charset-configured'
DESC 'The configured charset for IPP protocol values of error
and status messages generated by this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
It's also a possible charset for IPP protocol string attributes set by an operator, a system administrator, or the manufacturer. For example:
'utf-8' (ISO 10646/Unicode in UTF-8 transform [STD63])
'iso-8859-1' (ISO Latin1)
Values of charset tags SHOULD be defined in the IANA registry of Character Sets [IANACHAR] (see also [BCP19]), and the '(preferred MIME name)' SHOULD be used as the charset tag in this attribute.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length.
Note: For compatibility with IPP/1.1 [RFC2911], charset tags in this attribute SHOULD be lowercase normalized.
4.12. printer-charset-supported ๐
( 1.3.18.0.2.4.1131
NAME 'printer-charset-supported'
DESC 'One of the charsets supported for IPP protocol values of
IPP string attributes that correspond to attributes of
syntax DirectoryString (UTF-8) for this directory entry.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'utf-8' (ISO 10646/Unicode in UTF-8 transform [STD63])
'iso-8859-1' (ISO Latin1)
Note: Multiple values for this attribute are represented as multiple instances of this attribute.
Values of charset tags SHOULD be defined in the IANA registry of Character Sets [IANACHAR] (see also [BCP19]), and the '(preferred MIME name)' SHOULD be used as the charset tag in this attribute.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length.
Note: For compatibility with IPP/1.1 [RFC2911], charset tags in this attribute SHOULD be lowercase normalized.
4.13. printer-generated-natural-language-supported ๐
( 1.3.18.0.2.4.1137
NAME 'printer-generated-natural-language-supported'
DESC 'One of the natural languages supported for LDAP attributes of
syntax DirectoryString (UTF-8) in this directory entry.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Values of language tags SHOULD conform to "Tags for Identifying Languages" [BCP47]. For example:
'en-us' (English as spoken in the US)
'fr-ca' (French as spoken in Canada)
Note: Multiple values for this attribute are represented as multiple instances of this attribute.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 63 octets in length.
Note: For compatibility with IPP/1.1 [RFC2911], language tags in this attribute SHOULD be lowercase normalized. ๐จ๐ฆ
4.14. printer-document-format-supported ๐
( 1.3.18.0.2.4.1130
NAME 'printer-document-format-supported'
DESC 'One of the source document formats that can be interpreted
and printed by this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Values of document formats SHOULD be MIME media types defined in the IANA registry of MIME Media Types [IANAMIME] (see also [BCP13]).
For example:
'application/postscript' (Adobe PostScript)
'text/plain' (plain text)
Note: Multiple values for this attribute are represented as multiple instances of this attribute.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length.
4.15. printer-color-supported ๐จ
( 1.3.18.0.2.4.1129
NAME 'printer-color-supported'
DESC 'Indicates whether or not this Printer is capable of any type of
color printing at all, including highlight color.'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE
)
4.16. printer-compression-supported ๐๏ธ
( 1.3.18.0.2.4.1128
NAME 'printer-compression-supported'
DESC 'Comma-delimited list of compression algorithms supported by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'none'
'deflate,gzip'
Note: Length overflow in values of this attribute MUST be handled by multiple instances of this attribute, i.e., individual comma-delimited list members MUST NOT be truncated.
Note: For compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length.
Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include:
'none' (no compression is used)
'deflate' (public domain ZIP described in [RFC1951])
'gzip' (GNU ZIP described in [RFC1952])
'compress' (UNIX compression described in [RFC1977])
4.17. printer-pages-per-minute ๐
( 1.3.18.0.2.4.1127
NAME 'printer-pages-per-minute'
DESC 'The nominal number of pages per minute that can be output by
this Printer.'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
This attribute is informative, not a service guarantee. Typically, it is the value used in marketing literature to describe this Printer -- for example, the value for a simplex or black-and-white print mode. Brochure numbers, but make it make sense ๐
4.18. printer-pages-per-minute-color ๐
( 1.3.18.0.2.4.1126
NAME 'printer-pages-per-minute-color'
DESC 'The nominal number of color pages per minute that can be
output by this Printer.'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
This attribute is informative, not a service guarantee. Typically, it is the value used in marketing literature to describe this Printer. Same energy as the last one, just in colour ๐
4.19. printer-finishings-supported โจ
okay so this one is the list of finishing moves a printer can do ๐ stapling, punching, binding, the whole glow-up for your paper ๐
( 1.3.18.0.2.4.1125
NAME 'printer-finishings-supported'
DESC 'Comma-delimited list of finishing operations supported by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'staple'
'staple,punch,bind'
Note: if a value overflows, it MUST be handled by using multiple instances of this attribute, which means each comma-delimited list member MUST NOT be truncated ๐ซถ
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length ๐
Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include:
'none', 'staple', 'punch', 'cover', 'bind', 'saddle-stitch',
'edge-stitch', 'staple-top-left', 'staple-bottom-left',
'staple-top-right', 'staple-bottom-right', 'edge-stitch-left',
'edge-stitch-top', 'edge-stitch-right', 'edge-stitch-bottom',
'staple-dual-left', 'staple-dual-top', 'staple-dual-right',
'staple-dual-bottom'.
Note: Implementations MAY support other values. You do you, bestie ๐ฆ
4.20. printer-number-up-supported โจ
this one is about how many print-stream pages can get squeezed onto one side of a sheet, like a mini collage ๐ง
( 1.3.18.0.2.4.1124
NAME 'printer-number-up-supported'
DESC 'Maximum number of print-stream pages that can be imposed upon
a single side of an instance of a selected medium by this
Printer.'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
For example:
'1'
'4'
Note: the values of this attribute differ from the corresponding IPP attribute, because only the maximum number-up gets mapped over from number-up-supported, which is defined in [RFC2911] ๐ธ
4.21. printer-sides-supported โจ
this is the list of which sides can be printed and how two-sided pages get flipped ๐ฅ
( 1.3.18.0.2.4.1123
NAME 'printer-sides-supported'
DESC 'Comma-delimited list of impression sides (one or two) and the
two-sided impression rotations supported by this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'one-sided'
'one-sided,two-sided-short-edge'
Note: if a value overflows, it MUST be handled by using multiple instances of this attribute, so each comma-delimited list member MUST NOT be truncated. no cap, this is a hard rule ๐
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length.
Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] are:
'one-sided'
'two-sided-long-edge'
'two-sided-short-edge'
4.22. printer-media-supported โจ
this one covers the names, sizes, types, and colours of the paper the printer can handle ๐
( 1.3.18.0.2.4.1122
NAME 'printer-media-supported'
DESC 'One of the names/sizes/types/colors of the media supported by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Values SHOULD conform to "PWG Media Standardized Names 2.0 (MSN2)" [PWG5101.1]. it's the vibe check the whole standard is built around โจ
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length.
Values of standardized media size names defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include:
'na_letter_8.5x11in'
'iso_a4_210x297mm'
Values of standardized media types defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include:
'envelope'
'stationery'
Values of standardized media colors defined in [PWG5101.1] and recorded in the IANA IPP registry [IANAIPP] include:
'white'
'blue'
Note: multiple values for this attribute are represented as multiple instances of this attribute ๐ซถ
4.23. printer-media-local-supported โจ
this one is for the site-specific paper, the custom stuff your office or school has in its own little drawer ๐
( 1.3.18.0.2.4.1117
NAME 'printer-media-local-supported'
DESC 'One of the site-specific media supported by this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Values SHOULD conform to "PWG Media Standardized Names 2.0 (MSN2)" [PWG5101.1].
For example:
'custom_purchasing-form_8.5x11in' (site-specific name)
Note: multiple values for this attribute are represented as multiple instances of this attribute.
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length.
4.24. printer-resolution-supported โจ
this one is how sharp the printer can get ๐ฆ the format is a little different from the others, so pay attention, bestie ๐
( 1.3.18.0.2.4.1121
NAME 'printer-resolution-supported'
DESC 'One of the resolutions supported for printing documents by
this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
Each resolution value MUST be a string containing three fields:
- Cross-feed direction resolution (positive integer);
- Feed direction resolution (positive integer);
- Unit: 'dpi' (dots per inch) or 'dpcm' (dots per centimeter).
Each resolution field MUST be delimited by '>', with optional trailing whitespace. For example:
'300> 300> dpi>'
'600> 600> dpi>'
Note: see the note in Section 4 about the different field delimiters used in the printer-xri-supported and printer-resolution-supported attributes ('<' and '>', respectively). they were picked on purpose for compatibility with the IANA-registered SLP 'service:printer:' v2.0 template [SLPPRT20], so it's giving planned ๐ง
Note: multiple values for this attribute are represented as multiple instances of this attribute.
Note: this attribute is based on 'printer-resolution-supported' defined in IPP/1.1 [RFC2911], but it uses a complex encoding derived from 'prtMarkerAddressabilityFeedDir', 'prtMarkerAddressabilityXFeedDir', and 'prtMarkerAddressabilityUnit', which are defined in "Printer MIB v2" [RFC3805]. those ones have integer encodings instead ๐ค
Note: the syntax and delimiter for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. whitespace is permitted after the delimiter '>', but not before it ๐
4.25. printer-print-quality-supported โจ
this is the list of print qualities a printer can do, from draft vibes to full high-res glam ๐ธ
( 1.3.18.0.2.4.1120
NAME 'printer-print-quality-supported'
DESC 'Comma-delimited list of print qualities supported
for printing documents on this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'unknown'
'draft,normal,high'
Note: if a value overflows, it MUST be handled by using multiple instances of this attribute, so individual comma-delimited list members MUST NOT be truncated ๐ซถ
Values defined in IPP/1.1 [RFC2911] and recorded in the IANA IPP registry [IANAIPP] include:
'draft'
'normal'
'high'
Note: the value 'unknown' MUST only be reported if the corresponding IPP attribute is not present. the 'unknown' value is basically an artifact of this LDAP mapping, so it's not a real quality ๐
4.26. printer-job-priority-supported โจ
this one tells you how many job priority levels the printer supports, so you know how finely it can rank your jobs ๐
( 1.3.18.0.2.4.1110
NAME 'printer-job-priority-supported'
DESC 'Indicates the number of job priority levels supported by
this Printer.'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
An IPP/1.1 [RFC2911] conformant Printer, which supports job priority, always supports a full range of priorities from '1' to '100' (to ensure consistent behavior). so this attribute describes the 'granularity' of priority supported. values of this attribute are from '1' to '100' ๐
4.27. printer-copies-supported โจ
this is the max number of copies of one document that can be printed as a single job ๐
( 1.3.18.0.2.4.1118
NAME 'printer-copies-supported'
DESC 'The maximum number of copies of a document that can be printed
as a single job on this Printer.'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
A positive value indicates the maximum supported copies. A value of '0' indicates no maximum limit. A value of '-1' indicates 'unknown'.
Note: the syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20] ๐ง
4.28. printer-job-k-octets-supported โจ
this is the biggest print job the printer will accept, measured in kilobytes (1,024 octets each) ๐ฆ
( 1.3.18.0.2.4.1111
NAME 'printer-job-k-octets-supported'
DESC 'The maximum size of an incoming print job that this Printer
will accept, in kilobytes (1,024 octets).'
EQUALITY integerMatch
ORDERING integerOrderingMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27
SINGLE-VALUE
)
A positive value indicates the maximum supported job size. A value of '0' indicates no maximum limit. A value of '-1' indicates 'unknown'.
Note: the syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20] ๐
4.29. printer-current-operator โจ
this one is the human who's currently in charge of running the printer ๐ซถ
( 1.3.18.0.2.4.1112
NAME 'printer-current-operator'
DESC 'The identity of the current human operator responsible for
operating this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
The value of this attribute SHOULD include information that would enable other humans to reach the operator, such as a telephone number. so people can actually find them when they need to ๐
Note: for interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). it's all about text that looks clean everywhere โจ
4.30. printer-service-person โจ
this is the human who's in charge of servicing the printer, the one who comes to fix it when it's being dramatic ๐ง
( 1.3.18.0.2.4.1113
NAME 'printer-service-person'
DESC 'The identity of the current human service person responsible
for servicing this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
The value of this attribute SHOULD include information that would enable other humans to reach the service person, such as a telephone number. ๐ฑ
Note: for interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). same energy as the operator one, just for the repair crew ๐งน
4.31. printer-delivery-orientation-supported โจ
this is how the pages come out of the printer, whether they land face-up or face-down ๐ฆ
( 1.3.18.0.2.4.1114
NAME 'printer-delivery-orientation-supported'
DESC 'Comma-delimited list of delivery orientations of pages as they
are printed and ejected supported by this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
For example:
'unknown'
'face-up,face-down'
Values defined in "Printer MIB v2" [RFC3805] for prtOutputPageDeliveryOrientation are:
'face-up'
'face-down'
Note: the value 'unknown' MUST only be reported if the corresponding Printer MIB attribute is not present. the 'unknown' value is an artifact of this LDAP mapping, not a real orientation ๐
Note: the syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20] ๐ธ
4.32. printer-stacking-order-supported โจ
okay so this one is the attribute for the stacking orders of pages as they get printed and ejected ๐ฆ it's basically a comma-delimited list of every stacking order this Printer supports, and it's giving very organized energy ๐
( 1.3.18.0.2.4.1115
NAME 'printer-stacking-order-supported'
DESC 'Comma-delimited list of stacking orders of pages as they are
printed and ejected supported by this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
like, for example:
'unknown'
'first-to-last'
'first-to-last,last-to-first'
The values defined in "Printer MIB v2" [RFC3805] for prtOutputStackingOrder are:
'first-to-last'
'last-to-first'
Note: the value'unknown'MUST only be reported if the corresponding Printer MIB attribute is not present. So'unknown'is basically an artifact of this LDAP mapping, not a real Printer thing ๐
Note: the syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20]. Consistency is everything bestie ๐ซถ
4.33. printer-output-features-supported ๐ธ
this is the list of output features the Printer supports ๐ same comma-delimited vibe as the last one
( 1.3.18.0.2.4.1116
NAME 'printer-output-features-supported'
DESC 'Comma-delimited list of output features supported by
this Printer.'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
for example:
'unknown'
'bursting,decollating'
'offset-stacking'
Note: if a value overflows its length, it MUST be handled by multiple instances of this attribute, so individual comma-delimited list members MUST NOT be truncated. Nobody gets cut off, periodt ๐
The values defined in "Printer MIB v2" [RFC3805] for prtOutputBursting, prtOutputDecollating, prtOutputPageCollated, and prtOutputOffsetStacking are:
'bursting'
'decollating'
'page-collating'
'offset-stacking'
Note: the value'unknown'MUST only be reported if the corresponding Printer MIB attributes are not present. Same story as before:'unknown'is an artifact of this LDAP mapping ๐
Note: the syntax and values for this attribute are aligned with the equivalent attribute in the 'service:printer:' v2.0 template [SLPPRT20].
Note: implementations MAY support other values. Room for extra main character energy โจ
4.34. printer-aliases ๐ง
this one holds one of the site-specific administrative names of this Printer, on top of whatever's in printer-name. Think of it as a nickname ๐
( 1.3.18.0.2.4.1108
NAME 'printer-aliases'
DESC 'One of the site-specific administrative names of this Printer
in addition to the value specified for printer-name.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
values of this attribute SHOULD be specified in the language given by printer-natural-language-configured (handy for things like text-to-speech ๐), although the Printer's alias MAY be specified in any language. Flexible, iconic ๐
Note: multiple values get represented as multiple instances of this attribute ๐
Note: for compatibility with IPP/1.1 [RFC2911], values of this attribute SHOULD NOT exceed 255 octets in length. Keep it short, bestie โ๏ธ
Note: for interoperability, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; and (b) SHOULD NOT contain DEL or any C0 or C1 control characters. No sneaky control characters, fr fr ๐ โโ๏ธ
4.35. printer-device-id ๐
this is the IEEE 1284 Device ID for this Printer ๐ชช
( 1.3.18.0.2.24.46.1.101
NAME 'printer-device-id'
DESC 'The IEEE 1284 Device ID for this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
values of this attribute SHOULD conform to "PWG Command Set Format for IEEE 1284 Device ID v1.0" [PWG5107.2]. It's supposed to be the official format, so follow it ๐
Note: for compatibility with [PWG5100.14] and [PWG5107.2], values of this attribute SHOULD NOT exceed 1023 octets in length. Don't go overboard on the length ๐
4.36. printer-device-service-count ๐ฆ
this one counts how many Printer (print service) instances are set up on this Imaging Device (host system) ๐จ๏ธโจ
A positive value is the number of Printer (print service) instances. A value of '-1' means 'unknown'. And a value of '0' isn't meaningful, because this attribute must be reported by some Printer instance, so it can't be zero ๐
Note: the syntax and values for this attribute are aligned with the equivalent 'device-service-count' attribute defined in [PWG5100.13]. Same vibe, different name ๐
4.37. printer-uuid ๐
this is a URN that specifies the UUID of this Printer (print service) instance on this Imaging Device (host system). It's basically this Printer's unique ID card ๐ชช
for example:
'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
values of this attribute MUST conform to the Universally Unique Identifier (UUID) URN namespace [RFC4122]. No freestyle IDs allowed ๐ซ
Note: for compatibility with [PWG5100.13] and [RFC4122], values of this attribute SHOULD NOT exceed 45 octets in length.
Note: LDAP application clients SHOULD NOT attempt to use malformed URN values read from this attribute. And LDAP administrative clients SHOULD NOT write malformed URN values into this attribute. Don't be that person, bestie ๐ โโ๏ธ
Note: the syntax and values for this attribute are aligned with the equivalent 'printer-uuid' attribute defined in [PWG5100.13]. โจ
4.38. printer-charge-info ๐
this is the descriptive info about paid printing services for this Printer ๐ธ
( 1.3.18.0.2.24.46.1.105
NAME 'printer-charge-info'
DESC 'Descriptive information about paid printing services for this
Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
for example:
'This Printer can be used for paid printing at 2 cents/page.'
Note: for compatibility with [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length.
Note: for interoperability and consistent text display, values of this attribute (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain any C0 or C1 control characters except for HT, CR, and LF; and (c) SHOULD only contain CR and LF characters together (not as singletons). Line breaks have to be a matched pair, no lonely CRs or LFs ๐ซถ
Note: the syntax and values for this attribute are aligned with the equivalent 'printer-charge-info' attribute defined in [PWG5100.13].
4.39. printer-charge-info-uri ๐
this is a URI for a human-readable Web page about paid printing services for this Printer ๐
( 1.3.18.0.2.24.46.1.106
NAME 'printer-charge-info-uri'
DESC 'A URI for a human-readable Web page for paid printing services
for this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
for example:
'http://example.com/charges'
for URI syntax details, see [STD66] ๐
Note: for compatibility with IPP/1.1 [RFC2911] and [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length.
Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. And LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. Valid URIs only, iykyk ๐
Note: the syntax and values for this attribute are aligned with the equivalent 'printer-charge-info-uri' attribute defined in [PWG5100.13].
4.40. printer-geo-location ๐งโโ๏ธ
this is a geo: URI that specifies where this Printer is located ๐บ๏ธ๐
( 1.3.18.0.2.24.46.1.107
NAME 'printer-geo-location'
DESC 'A geo: URI specifying the geographic location of this Printer.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
SINGLE-VALUE
)
for example:
'geo:13.4125,103.8667'
values of this attribute MUST conform to the 'geo' URI scheme [RFC5870]. Non-negotiable, bestie ๐
Note: for compatibility with IPP/1.1 [RFC2911] and [PWG5100.13], values of this attribute SHOULD NOT exceed 1023 octets in length.
Note: LDAP application clients SHOULD NOT attempt to use malformed URI values read from this attribute. And LDAP administrative clients SHOULD NOT write malformed URI values into this attribute. โจ
Note: the syntax and values for this attribute are aligned with the equivalent 'printer-geo-location' attribute defined in [PWG5100.13].
4.41. printer-ipp-features-supported ๐ฆ
this one's a comma-delimited list of the IPP protocol features this Printer supports ๐จ๏ธ๐
( 1.3.18.0.2.24.46.1.108
NAME 'printer-ipp-features-supported'
DESC 'Comma-delimited list of IPP protocol features that
this Printer supports.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
)
for example:
'none'
'unknown'
'proof-print'
'ipp-everywhere,proof-print,job-save'
Note: if a value overflows its length, it MUST be handled by multiple instances of this attribute, so individual comma-delimited list members MUST NOT be truncated. Nothing gets chopped, no cap ๐ซถ
values of this attribute SHOULD specify only IANA-registered keywords for the 'ipp-features-supported' attribute defined in [PWG5100.13], or other Standards Track IETF or IEEE-ISTO PWG specifications, but only if this Printer implementation meets all of the IPP feature-specific conformance requirements. Stick to the registered list and you'll be fine ๐
IANA-registered values include:
'none' (No extension features are supported)
'document-object' (Document object defined in [PWG5100.5])
'job-save' (Job save defined in [PWG5100.11])
'ipp-everywhere' ("IPP Everywhere" defined in [PWG5100.14])
'page-overrides' (Page overrides defined in [PWG5100.6])
'proof-print' (Proof print defined in [PWG5100.11])
'subscription-object' (Subscription object defined in [RFC3995])
Note: the value 'unknown' MUST only be reported if the corresponding IPP Printer attribute is not present. It's an artifact of this LDAP mapping, so don't treat it like a real feature ๐
Note: the syntax and values for this attribute are aligned with the equivalent 'ipp-features-supported' attribute defined in [PWG5100.13]. Consistent across the board ๐ธ
5. Definition of Syntaxes ๐
No new attribute syntaxes are defined by this document. Nothing new to learn here, bestie โจ
The attribute types defined in Section 4 of this document reference syntax OIDs defined in Section 3 of [RFC4517], which are summarized below:
Syntax OID Syntax Description
------------------------------ -------------------------------
1.3.6.1.4.1.1466.115.121.1.7 Boolean
1.3.6.1.4.1.1466.115.121.1.15 DirectoryString (UTF-8 [STD63])
1.3.6.1.4.1.1466.115.121.1.27 Integer
6. Definition of Matching Rules ๐
No new matching rules are defined by this document. Same deal, no surprises ๐
The attribute types defined in Section 4 of this document reference matching rules defined in Section 4 of [RFC4517], which are summarized below:
Matching Rule OID Matching Rule Name Usage
----------------------------- ------------------ --------
2.5.13.13 booleanMatch EQUALITY
2.5.13.2 caseIgnoreMatch EQUALITY
2.5.13.14 integerMatch EQUALITY
2.5.13.15 integerOrderingMatch ORDERING
2.5.13.4 caseIgnoreSubstringsMatch SUBSTR
7. IANA Considerations ๐ฆ
This document does not define any new syntaxes or matching rules. Literally nothing new in that department ๐
This document defines a few new attribute types that have been registered by IANA per this document (see Section 7.1 below). The paperwork is handled, bestie ๐ซถ
All of the object classes and most of the attribute types described in this document were registered by IANA when RFC 3712 was published (see Section 7.2 below). Old news, but still iconic โจ
7.1. Registration of Attribute Types โจ
Okay so IANA has registered these Attribute Type OIDs, and the IEEE-ISTO PWG (see Section 1.3.2) is the group that assigned them. Here's the whole registration, bestie ๐ซถ
Subject: Request for Object Identifier Descriptor Registration ๐
Descriptor (short name): see table below ๐
Object Identifier: see table below ๐ฆ
Person & email address to contact for further information: see below ๐
Usage: attribute type ๐ง
Specification: RFC 7612 (this document) ๐
Author/Change Controller:
Ira McDonald
High North Inc.
221 Ridge Ave.
Grand Marais, MI 49839
United States
Phone: +1 906-494-2434
Email: blueroofmusic@gmail.com
Comments: none here, the table speaks for itself ๐ธ
Attribute Type OID
------------------------------------ ----------------------
printer-device-id 1.3.18.0.2.24.46.1.101
printer-device-service-count 1.3.18.0.2.24.46.1.102
printer-uuid 1.3.18.0.2.24.46.1.104
printer-charge-info 1.3.18.0.2.24.46.1.105
printer-charge-info-uri 1.3.18.0.2.24.46.1.106
printer-geo-location 1.3.18.0.2.24.46.1.107
printer-ipp-features-supported 1.3.18.0.2.24.46.1.108
7.2. Object Classes and Attribute Types from RFC 3712 ๐ท
This section is strictly informative. None of the LDAP OIDs listed here have been re-registered by IANA, so don't go looking for new ones ๐
The following Object Class OIDs were assigned by IBM (see Section 1.3.1). They were already registered by IANA when RFC 3712 came out. Iconic history moment ๐
Object Class OID
------------------------------------ ----------------
slpServicePrinter 1.3.18.0.2.6.254
printerAbstract 1.3.18.0.2.6.258
printerService 1.3.18.0.2.6.255
printerServiceAuxClass 1.3.18.0.2.6.257
printerIPP 1.3.18.0.2.6.256
printerLPR 1.3.18.0.2.6.253
The following Attribute Type OIDs were also assigned by IBM (see Section 1.3.1) and were already registered by IANA when RFC 3712 was published. Lowkey a whole list, but every single one matters ๐
Attribute Type OID
------------------------------------ -----------------
printer-uri 1.3.18.0.2.4.1140
printer-xri-supported 1.3.18.0.2.4.1107
printer-name 1.3.18.0.2.4.1135
printer-natural-language-configured 1.3.18.0.2.4.1119
printer-location 1.3.18.0.2.4.1136
printer-info 1.3.18.0.2.4.1139
printer-more-info 1.3.18.0.2.4.1134
printer-make-and-model 1.3.18.0.2.4.1138
printer-ipp-versions-supported 1.3.18.0.2.4.1133
printer-multiple-document-jobs-supported 1.3.18.0.2.4.1132
printer-charset-configured 1.3.18.0.2.4.1109
printer-charset-supported 1.3.18.0.2.4.1131
printer-generated-natural-language-supported 1.3.18.0.2.4.1137
printer-document-format-supported 1.3.18.0.2.4.1130
printer-color-supported 1.3.18.0.2.4.1129
printer-compression-supported 1.3.18.0.2.4.1128
printer-pages-per-minute 1.3.18.0.2.4.1127
printer-pages-per-minute-color 1.3.18.0.2.4.1126
printer-finishings-supported 1.3.18.0.2.4.1125
printer-number-up-supported 1.3.18.0.2.4.1124
printer-sides-supported 1.3.18.0.2.4.1123
printer-media-supported 1.3.18.0.2.4.1122
printer-media-local-supported 1.3.18.0.2.4.1117
printer-resolution-supported 1.3.18.0.2.4.1121
printer-print-quality-supported 1.3.18.0.2.4.1120
printer-job-priority-supported 1.3.18.0.2.4.1110
printer-copies-supported 1.3.18.0.2.4.1118
printer-job-k-octets-supported 1.3.18.0.2.4.1111
printer-current-operator 1.3.18.0.2.4.1112
printer-service-person 1.3.18.0.2.4.1113
printer-delivery-orientation-supported 1.3.18.0.2.4.1114
printer-stacking-order-supported 1.3.18.0.2.4.1115
printer-output-features-supported 1.3.18.0.2.4.1116
printer-aliases 1.3.18.0.2.4.1108
8. Internationalization Considerations ๐
Okay, the text-string vibes are important here ๐ All text string attributes defined in this document with the syntax 'DirectoryString' [RFC4517] have values encoded in UTF-8 [STD63], as required by [RFC4517]. Very organized, very slay โจ
A language tag [BCP47] for all of the text string attributes defined in this document lives in the printer-natural-language-configured attribute. So the language info is right there ๐ง
That means every object class defined in this document lines up with the IETF Policy on Character Sets and Languages [BCP18]. Main character behavior ๐
Note: For interoperability and consistent text display, values of attributes defined in this document (a) SHOULD be normalized as recommended in "Unicode Format for Network Interchange" [RFC5198]; (b) SHOULD NOT contain DEL or any C0 or C1 control characters except for HT, CR, and LF; (c) SHOULD only contain CR and LF characters together (not as singletons); and (d) SHOULD NOT contain HT, CR, or LF characters in names, e.g., printer-name and printer-aliases. ๐๐ฅ
9. Security Considerations ๐
Please go read [RFC4513] for the detailed guidance on authentication methods for LDAP, plus how the TLS/1.2 [RFC5246] stuff gives LDAP sessions connection confidentiality and data integrity. Essential reading, bestie ๐
As with any LDAP schema, protecting specific entries and attributes with the right access control is so important. Like, it is particularly important that only administrators can modify entries defined in this LDAP Printer schema ๐ญ Otherwise an LDAP client might get fooled into diverting print service requests from the original Printer (or spooler) to a malicious intruder's host system, which would expose the info in printed documents. Scary, ngl ๐ซฃ
Note: Security vulnerabilities can arise if DEL or any C0 or C1 control characters are included in names, e.g., printer-name or printer-aliases. Do not be that person ๐
For additional security considerations about deploying Printers in an IPP environment, check Section 8 of [RFC2911] ๐จ๏ธ
10. References ๐
10.1. Normative References ๐โจ
Okay bestie, these are the docs RFC 7612 needs you to have read, no skipping, no cap ๐
[BCP47] Phillips, A. and M. Davis, "Matching of Language Tags", BCP 47, RFC 4647, September 2006.
Phillips, A., Ed., and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, September 2009.
<http://www.rfc-editor.org/info/bcp47>
[IANACHAR] Internet Assigned Numbers Authority (IANA) registry "Character Sets", <http://www.iana.org/assignments/character-sets>.
[IANAIPP] Internet Assigned Numbers Authority (IANA) registry "Internet Printing Protocol (IPP) Registrations", <http://www.iana.org/assignments/ipp-registrations>.
[IANAMIME] Internet Assigned Numbers Authority (IANA) registry "Media Types", <http://www.iana.org/assignments/media-types/index.html>.
[PWG5100.5] Carney, D., Hastings, T., and P. Zehler, "IPP Document Object", PWG 5100.5-2003, October 2003, <http://www.pwg.org/standards.html>.
[PWG5100.6] Zehler, P., Herriot, R., and K. Ocke, "IPP Page Overrides", PWG 5100.6-2003, October 2003, <http://www.pwg.org/standards.html>.
[PWG5100.11] Hastings, T. and D. Fullman, "IPP Job and Printer Extensions - Set 2 (JPS2)", PWG 5100.11-2010, October 2010, <http://www.pwg.org/standards.html>.
[PWG5100.12] Bergman, R., Lewis, H., McDonald, I., and M. Sweet, "IPP Version 2.0 Second Edition (IPP/2.0 SE)", PWG 5100.12-2011, February 2011, <http://www.pwg.org/standards.html>.
[PWG5100.13] Sweet, M., McDonald, I., and P. Zehler, "IPP Job and Printer Extensions - Set 3 (JPS3)", PWG 5100.13-2012, July 2012, <http://www.pwg.org/standards.html>.
[PWG5100.14] Sweet, M., McDonald, I., Mitchell, A., and J. Hutchings, "IPP Everywhere", PWG 5100.14-2013, January 2013, <http://www.pwg.org/standards.html>.
[PWG5101.1] Sweet, M., Bergman, R., and T. Hastings, "PWG Media Standardized Names 2.0 (MSN2)", PWG 5101.1-2013, March 2013, <http://www.pwg.org/standards.html>.
[PWG5107.2] McDonald, I., "PWG Command Set Format for IEEE 1284 Device ID v1.0", PWG 5107.2-2010, May 2010, <http://www.pwg.org/standards.html>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.
[RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: Basic and Digest Access Authentication", RFC 2617, DOI 10.17487/RFC2617, June 1999, <http://www.rfc-editor.org/info/rfc2617>.
[RFC2707] Bergman, R., Hastings, T., Isaacson, S., and H. Lewis, "Job Monitoring MIB - V1.0", RFC 2707, DOI 10.17487/RFC2707, November 1999, <http://www.rfc-editor.org/info/rfc2707>.
[RFC2911] Hastings, T., Ed., Herriot, R., deBry, R., Isaacson, S., and P. Powell, "Internet Printing Protocol/1.1: Model and Semantics", RFC 2911, DOI 10.17487/RFC2911, September 2000, <http://www.rfc-editor.org/info/rfc2911>.
[RFC2926] Kempf, J., Moats, R., and P. St. Pierre, "Conversion of LDAP Schemas to and from SLP Templates", RFC 2926, DOI 10.17487/RFC2926, September 2000, <http://www.rfc-editor.org/info/rfc2926>.
[RFC3510] Herriot, R. and I. McDonald, "Internet Printing Protocol/1.1: IPP URL Scheme", RFC 3510, DOI 10.17487/RFC3510, April 2003, <http://www.rfc-editor.org/info/rfc3510>.
[RFC3805] Bergman, R., Lewis, H., and I. McDonald, "Printer MIB v2", RFC 3805, DOI 10.17487/RFC3805, June 2004, <http://www.rfc-editor.org/info/rfc3805>.
[RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource Identifiers (IRIs)", RFC 3987, DOI 10.17487/RFC3987, January 2005, <http://www.rfc-editor.org/info/rfc3987>.
[RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol (IPP): Event Notifications and Subscriptions", RFC 3995, DOI 10.17487/RFC3995, March 2005, <http://www.rfc-editor.org/info/rfc3995>.
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally Unique IDentifier (UUID) URN Namespace", RFC 4122, DOI 10.17487/RFC4122, July 2005, <http://www.rfc-editor.org/info/rfc4122>.
[RFC4510] Zeilenga, K., Ed., "Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map", RFC 4510, DOI 10.17487/RFC4510, June 2006, <http://www.rfc-editor.org/info/rfc4510>.
[RFC4513] Harrison, R., Ed., "Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms", RFC 4513, DOI 10.17487/RFC4513, June 2006, <http://www.rfc-editor.org/info/rfc4513>.
[RFC4517] Legg, S., Ed., "Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules", RFC 4517, DOI 10.17487/RFC4517, June 2006, <http://www.rfc-editor.org/info/rfc4517>.
[RFC4524] Zeilenga, K., Ed., "COSINE LDAP/X.500 Schema", RFC 4524, DOI 10.17487/RFC4524, June 2006, <http://www.rfc-editor.org/info/rfc4524>.
[RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, <http://www.rfc-editor.org/info/rfc5198>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, <http://www.rfc-editor.org/info/rfc5280>.
[RFC5870] Mayrhofer, A. and C. Spanring, "A Uniform Resource Identifier for Geographic Locations ('geo' URI)", RFC 5870, DOI 10.17487/RFC5870, June 2010, <http://www.rfc-editor.org/info/rfc5870>.
[RFC6818] Yee, P., "Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 6818, DOI 10.17487/RFC6818, January 2013, <http://www.rfc-editor.org/info/rfc6818>.
[RFC7235] Fielding, R., Ed., and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Authentication", RFC 7235, DOI 10.17487/RFC7235, June 2014, <http://www.rfc-editor.org/info/rfc7235>.
[RFC7472] McDonald, I. and M. Sweet, "Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme", RFC 7472, DOI 10.17487/RFC7472, March 2015, <http://www.rfc-editor.org/info/rfc7472>.
[STD63] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, November 2003, <http://www.rfc-editor.org/info/std63>.
[STD66] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005, <http://www.rfc-editor.org/info/std66>.
10.2. Informative References ๐ธ
These ones are the cozy background reading ๐ง Not strictly required, but so helpful for understanding the vibe โจ
[BCP13] Freed, N. and J. Klensin, "Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures", BCP 13, RFC 4289, December 2005.
Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, January 2013.
<http://www.rfc-editor.org/info/bcp13>
[BCP18] Alvestrand, H., "IETF Policy on Character Sets and Languages", BCP 18, RFC 2277, January 1998, <http://www.rfc-editor.org/info/bcp18>.
[BCP19] Freed, N. and J. Postel, "IANA Charset Registration Procedures", BCP 19, RFC 2978, October 2000, <http://www.rfc-editor.org/info/bcp19>.
[RFC1179] McLaughlin, L., "Line printer daemon protocol", RFC 1179, DOI 10.17487/RFC1179, August 1990, <http://www.rfc-editor.org/info/rfc1179>.
[RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, <http://www.rfc-editor.org/info/rfc1951>.
[RFC1952] Deutsch, P., "GZIP file format specification version 4.3", RFC 1952, DOI 10.17487/RFC1952, May 1996, <http://www.rfc-editor.org/info/rfc1952>.
[RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, DOI 10.17487/RFC1977, August 1996, <http://www.rfc-editor.org/info/rfc1977>.
[RFC2079] Smith, M., "Definition of an X.500 Attribute Type and an Object Class to Hold Uniform Resource Identifiers (URIs)", RFC 2079, DOI 10.17487/RFC2079, January 1997, <http://www.rfc-editor.org/info/rfc2079>.
[RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. Powell, "Internet Printing Protocol/1.0: Model and Semantics", RFC 2566, DOI 10.17487/RFC2566, April 1999, <http://www.rfc-editor.org/info/rfc2566>.
[RFC2608] Guttman, E., Perkins, C., Veizades, J., and M. Day, "Service Location Protocol, Version 2", RFC 2608, DOI 10.17487/RFC2608, June 1999, <http://www.rfc-editor.org/info/rfc2608>.
[RFC3712] Fleming, P. and I. McDonald, "Lightweight Directory Access Protocol (LDAP): Schema for Printer Services", RFC 3712, DOI 10.17487/RFC3712, February 2004, <http://www.rfc-editor.org/info/rfc3712>.
[RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows", RFC 4559, DOI 10.17487/RFC4559, June 2006, <http://www.rfc-editor.org/info/rfc4559>.
[SLPPRT20] IANA, "Service Location Protocol, Version 2 (SLPv2) Templates", <http://www.iana.org/assignments/svrloc-templates>.
Appendix A. Changes since RFC 3712 โจ
Okay so bestie, this is the changelog ๐ง It's basically the receipts for everything that got glowed up between the old RFC 3712 and this one. Let's go!
- Editorial glow-up ๐
- corrected typos, missing words, and ambiguous sentences ๐ซถ
- replaced lowercase 'printer' with titlecase 'Printer' for readability and consistency with IETF and IEEE-ISTO PWG IPP standards usage ๐
- added implementation notes ๐
- updated and added references ๐
- DirectoryString length restrictions got dropped ๐
- the length restrictions came out of the formal definitions of DirectoryString syntax attributes, and the notes now recommend length restrictions instead, for compatibility with existing implementations of [RFC3712] and the underlying string length limits in [RFC2707], [RFC2911], [RFC3805], [PWG5107.2], [PWG5100.13], and [PWG5100.14] ๐
- New Printer attributes arrived โจ
- new attributes come from [PWG5107.2], [PWG5100.13], and [PWG5100.14] (see Section 7.1) ๐ฆ
- the table of Printer attributes and source documents in Section 4 ("Definition of Attribute Types") got updated ๐
- support was added for the IEEE-ISTO PWG "IPP Everywhere" [PWG5100.14] project ๐
- New implementation note about string encodings ๐
- there's discussion of 'List of xxx' and 'One of xxx' encodings ๐ง
- any of these attributes can be represented as multiple instances, so you don't overflow the length ๐ซถ
- Comma-delimited examples got a makeover ๐ธ
- both single-valued and multi-valued examples were added ๐
- printer-xri-supported and printer-resolution-supported got clarified ๐ฅ
- a note in Section 4 ("Definition of Attribute Types") explains where the different field delimiters come from ๐ง
- examples show optional trailing whitespace after '<' delimiters in printer-xri-supported ๐
- examples show optional trailing whitespace after '>' delimiters in printer-resolution-supported ๐
- Section 8 ("Internationalization Considerations") got clarified ๐
- a note about Net-Unicode [RFC5198] and avoiding use of C0 and C1 control characters was added ๐
- Section 9 ("Security Considerations") got clarified ๐
โ ๏ธ bestie, this one's serious: there's a note about security vulnerabilities caused by use of DEL or any C0 or C1 control characters in names. ๐
- Terms and abbreviations got clarified ๐
- Section 2 was renamed ("Conventions Used in This Document") ๐
- Section 2.1 ("Requirements Language") was added ๐
- Section 2.2 ("LDAP Schema Descriptions") was added ๐ฆ
- Section 2.3 ("Abbreviations") was added โจ
Acknowledgments ๐ซถ
The authors wish to acknowledge significant contributions from Ken Jones and Harry Lewis, and excellent comments from Patrik Faltstrom, Ryan Moats, Robert Moore, Lee Rafalow, Kimberly Reger, and Kurt Zeilenga, during the development of the original LDAP Printer schema [RFC3712]. ๐
The authors wish to acknowledge excellent comments from Nevil Brownlee, Barry Leiba, Alexey Melnikov, Tom Petch, and Mike Sweet during the development of this current version of the LDAP Printer schema. ๐ธ
Thanks to the members of the IEEE-ISTO PWG IPP Working Group for their review comments and help in preparing this document. ๐ง
Authors' Addresses ๐ฎ
Pat Fleming Independent 51796 171 Ave. Pine Island, MN 55963 United States
Phone: +1 507-356-8277 Email: patfleminghtc@gmail.com
Ira McDonald High North Inc. 221 Ridge Ave. Grand Marais, MI 49839 United States
Phone: +1 906-494-2434 Email: blueroofmusic@gmail.com
๐ฆ where this page comes from
- ietf: rfc7612 2015-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms