Copies: SLP Working Group <srvloc at srvloc.org>
IPP Working Group <ipp at pwg.org>
Hi folks, Monday (4 January 1999)
Below is the latest version of the SLP 'printer:' template, aligned with
latest (November) draft of IPP/1.0 Model and Semantics. Please read the
at least the change log. Please see Issue 1 - incorporation of new work
on raw TCP print service by Mikael Pahmp of Axis has not been done.
This template has a few 'ordered' attributes which use GREATER-THAN SIGN
'>' as their delimiter (rather than COMMA as in standard SLP 'unordered'
multi-valued attributes).
Cheers,
- Ira McDonald (IPP WG member, outside consultant at Xerox)
High North Inc
716-461-5667
************************************************************************
**** Revised 'printer:' template - 4 January 1998 - Ira E McDonald *****
************************************************************************
*** ISSUES
1) Need to update for new SLP 'printer:' extension work on a raw TCP
print protocol (in <draft-ietf-srvloc-rawtcp-printer-scheme-00.txt>,
2 December 1998, by Mikael Pahmp, Axis, Sweden). Note, a concrete
URL syntax for raw TCP printing is not proposed in Mikael's draft.
2) 'natural-language-configured' is MANDATORY for this template, to
interpret the values of many string attributes (which can be tagged
directly using IPP/1.0 'textWithLanguage' and 'nameWithLanguage'),
but MISSING in Appendix E 'Generic Directory Schema' IPP/1.0 Model.
3) 'natural-language-supported' is MANDATORY for this template, to
be comformant with RFC 2277 (IETF Policy on Character Sets and
Languages, January 1998) and with common practice in directories,
but OPTIONAL in Appendix E 'Generic Directory Schema' IPP/1.0 Model.
4) 'pages-per-minute-color' was NOT added, although proposed in email
on the IPP WG mailing list.
------------------------------------------------------------------------
*** Change Log - High Level
H1) Renamed all base attributes of the template, per latest draft of
"Service Templates and service: Schemes", 13 November 1998:
'type' to 'template-type'
'version' to 'template-version'
'description' to 'template-description'
'url-syntax' to 'template-url-syntax'
H2) Changed 'template-version' to '0.2' (from '0.1' in previous spec).
H2) Deleted 'language = en' from template body, per the latest draft of
"Service Templates and service: Schemes", 13 November 1998;
H3) Renamed 'ippurl' element to 'ipp10url' (IPP/1.0) to allow supporting
other IPP URL syntaxes in the future), per request of Bob Herriot
(editor of IPP Encoding and Transport and prototype 'ipp:' specs).
H4) Changed 'ipp10url' source reference to protocol spec, "IPP Transport
and Encoding" [9], rather than (incorrect) model [3].
H5) Added a comment to each attribute, w/ the source attribute name in
IPP (base document), Printer MIB (RFC 1759), or Salutation.
H6) Revised various attribute descriptions for clarity or accuracy.
(i.e., consistency with IPP specs).
------------------------------------------------------------------------
*** Change Log - Detail Level
D1) Added 'printer-uri-supported' (ordered list) attribute,
for use with (existing) 'uri-security-supported', per IPP Model,
using '>' for ordered list delimiter character (safe around URIs),
per comments from James Kempf on SLP mailing list.
D2) Changed 'printer-uri-supported' and 'uri-security-supported' to
mandatory attributes, per IPP Model,
D3) Renamed 'name' to 'printer-name'
and changed to mandatory, per IPP Model.
D4) Renamed 'location' to 'printer-location'
and changed to mandatory, per IPP Model.
D4) Renamed 'description' to 'printer-info'
and changed to optional, per IPP Model.
D5) Renamed 'more-info' to 'printer-more-info'
and changed to optional, per IPP Model.
D6) Deleted 'concrete-protocols' and 'abstract-protocol' attributes,
which were redundant with 'printer-uri-supported' (LPR is explicit,
all others must be IPP, in some version).
D7) Renamed 'make-model' to 'printer-make-and-model'
and changed to mandatory, per IPP Model.
D8) Renamed 'operator' to 'printer-current-operator'
and corrected description to be single-valued, per Printer MIB.
D9) Renamed 'service-person' to 'printer-service-person'
and corrected description to be single-valued, per Printer MIB.
D10)Added 'natural-language-configured' (it was already referred to
to as the language of other attributes in the previous draft),
and attribute descriptions were revised to clarify which attributes
are interpreted via 'natural-language-configured', per IPP Model.
D11)Revised 'natural-language-supported' (it relates to both error
and status messages and directory attributes),
BUT changed to mandatory, despite (conflicting) IPP Model.
D12)Added 'charset-configured' (for consistency, although all SLP
template attributes are always specified in UTF-8),
and changed to optional, per IPP Model.
D13)Revised 'charset-configured' and 'charset-supported', to mandate
the use of the '(preferred MIME name)' values,
and changed to optional, per IPP Model.
D14)Revised 'document-format-supported',
and changed to mandatory, per IPP Model.
D15)Revised 'color-supported' to clarify that it covers ALL color
capabilities, including highlight color printing,
and changed to mandatory, per IPP Model.
D16)Renamed 'finishing' to 'finishings-supported' and removed explicit
staple positions, per IPP Model.
D17)Renamed 'number-up' to 'number-up-supported', per IPP Model.
D18)Renamed 'duplex-mode' to 'sides-supported'
and changed to mandatory, per IPP Model.
D19)Revised 'media-supported' to clarify that it contains ONLY the
ISO 10175 media keywords, in fixed locale of 'en-US' (US English),
and changed to mandatory, per IPP Model.
D20)Revised 'media-local-supported' to clarify that it contains ONLY the
site-specific media names, in 'natural-language-configured' locale,
and changed to mandatory, per IPP Model.
D21)Renamed 'resolution' to 'printer-resolution-supported',
and clarified syntax to be an unordered list of three-tuples
with each member of a three-tuple delimited by '>',
per IPP Model.
D22)Renamed 'print-quality' to 'print-quality-supported',
per IPP Model.
D22)Renamed 'copies' to 'copies-supported',
per IPP Model.
D23)Renamed 'job-k-octet-supported' to 'job-k-octets-supported',
(typo in previous version of template), per IPP Model.
D24)Added 'pages-per-minute' (proposed new attribute for IPP),
per request of Angelo Caruso and IPP WG discussion.
D25)Renamed 'delivery-orientation' to 'delivery-orientation-supported',
to reflect capabilities (not current setting as in Printer MIB),
per request of Tom Hastings and IPP WG discussion.
D26)Added hyphens to 'delivery-orientation-supported' values (from
Printer MIB) 'face-up' and 'face-down', for standard style.
------------------------------------------------------------------------
*** Corrected References (for full Internet-Draft)
[3]--change date to November 1998 (latest draft)
[4]--change date to November 1998 (latest draft)
------------------------------------------------------------------------
*** Additional References (for full Internet-Draft)
[9]R. Herriot, S. Butler, P. Moore, R. Turner,
"IPP/1.0: Encoding and Transport", Work in progress, November 1998
[10]"Document Printing Application (DPA)", ISO/IEC 10175, June 1996.
[11]IANA Registry of Internet Media Types (also called MIME types):
ftp://ftp.isi.edu/in-notes/iana/assignments/media-types
------------------------------------------------------------------------
* Template prefix begins here
Name of submitter: "Ira McDonald" <imcdonal at sdsp.mc.xerox.com>
Language of service template: en
Security Considerations:
By describing the security methods associated with each supported
printer URL via the mandatory attributes 'printer-uri-supported' and
'uri-security-supported', the printer may expose information useful
to attackers.
Template Text:
-------------------- template begins here --------------------
template-type = printer
template-version = 0.2
template-description =
The printer service template describes the attributes
supported by network printing devices. Devices may be
either directly connected to a network or managed by a
print spooler. The device or spooler understands a network
network print protocols such as IPP, LPR or Salutation.
template-url-syntax =
url-path = ipp10url / lprurl
ipp10url = IPP/1.0 url as defined in [9]
lprurl = "lpr://" hostport [ "/" qname ]
hostport = host [ ":" port ]
host = hostname / hostnumber
hostname = *( domainlavel "." ) toplabel
domainlabel = alphanum /
alphanum * [alphanum / "-"] alphanum
toplabel = alpha / alpha * [alphanum / "-"] alphanum
hostnumber = ipv4-number / ipv6-number
ipv4-number = 1*3digit 3*3("." 1*3digit)
ipv6-number = 32*hex
3digit = digit digit digit
port = 1*digit
alphanum = alpha / digit
alpha = "a" / "b" / "c" / "d" / "e" / "f" / "g" /
"h" / "i" / "j" / "k" / "l" / "m" / "n" /
"o" / "p" / "q" / "r" / "s" / "t" / "u" /
"v" / "w" / "x" / "y" / "z" /
"A" / "B" / "C" / "D" / "E" / "F" / "G" /
"H" / "I" / "J" / "K" / "L" / "M" / "N" /
"O" / "P" / "Q" / "R" / "S" / "T" / "U" /
"V" / "W" / "X" / "Y" / "Z"
digit = "0" / "1" / "2" / "3" / "4" / "5" / "6" /
"7" / "8" / "9"
printer-uri-supported = STRING L
# IPP 'printer-uri-supported'
# The ordered list of URI supported by this printer,
# correlated with the 'uri-security-supported' attribute,
# with each member delimited by '>', for example:
# 'http://foo.com> https://bar.com'
uri-security-supported = STRING L
# IPP 'uri-security-supported'
# The ordered list of security supported for each URI
# listed in 'printer-uri-supported' for this printer,
# with each member delimited by '>', for example:
# 'none> ssl3'
# (see example of 'printer-uri-supported' above)
# URIs that do not support security shall specify 'none'.
# Legal values are 'none' and 'ssl3' [9].
printer-name = STRING
# IPP 'printer-name'
# This attribute contains the name of this printer,
# in the locale specified by 'natural-language-configured'.
# An administrator determines a printer's name and sets this
# attribute to that name. This name may be the last part of
# the printer's URI or it may be unrelated. In
# non-US-English locales, a name may contain characters
# that are not allowed in a conventional URI.
printer-location = STRING
# IPP 'printer-location'
# This attribute contains the location of this printer,
# in the locale specified by 'natural-language-configured'.
# A free form description of this printer's physical
# location. For example: '2nd floor, near the fire escape'
printer-info = STRING O
# IPP 'printer-info'
# This attribute contains descriptive info on this printer,
# in the locale specified by 'natural-language-configured'.
# A free form string that may contain any site-specific
# descriptive information about this printer.
printer-more-info = STRING L O
# IPP 'printer-more-info'
# A URI used to obtain more information about
# this specific printer. For example, this could
# be an HTTP type URI referencing an HTML page accessible
# to a Web Browser. The information obtained from this
# URI is intended for end user consumption. Features
# outside the scope of IPP may be accessed from this URI.
printer-make-and-model = STRING
# IPP 'printer-make-and-model'
# This attribute contains the make & model of this printer,
# in the locale specified by 'natural-language-configured'.
# A simple text string defined by the manufacturer.
# It should provide the name of the vendor and the model
# name or number
printer-current-operator = STRING O
# Printer MIB 'prtGeneralCurrentOperator'
# The name of the current human operator responsible for
# operating this printer. It is suggested that this string
# include information that would enable other humans to
# reach the operator, such as a phone number.
printer-service-person = STRING O
# Printer MIB 'prtGeneralServicePerson'
# The name of the current service person responsible for
# servicing this printer. It is suggested that this string
# include information that would enable other humans to
# reach the service person, such as a phone number.
natural-language-configured = STRING L
# IPP 'natural-language-configured'
# The configured language in which error and status messages
# will be generated (by default) by this printer,
# for example en-US, fr-FR, etc.
# Also, the language in which printer string attributes are
# set by operator or system administrator or manufacturer,
# such as IPP 'printer-[name|info|location|make-and-model]'.
# Legal values of language tags conform to RFC 1766
# 'Tags for the Identification of Languages' [5].
natural-language-supported = STRING L M
# IPP 'generated-natural-language-supported'
# The possible languages in which error and status messages
# may be generated (if requested) by this printer,
# for example en-US, fr-FR, etc.
# Also, the languages in which printer string attributes are
# set by operator or system administrator or manufacturer,
# such as IPP 'printer-[name|info|location|make-and-model]'.
# Legal values of language tags conform to RFC 1766
# 'Tags for the Identification of Languages' [5].
charset-configured = STRING L O
UTF-8
# IPP 'charset-configured'
# The configured charset in which error and status messages
# will be generated (by default) by this printer,
# for example UTF-8, Shift-JIS, or ISO-8859-1 (Latin1).
# Also, the charset in which printer string attributes are
# set by operator or system administrator or manufacturer,
# such as IPP 'printer-[name|info|location|make-and-model]'.
# Legal values of charset tags (names/aliases) come from
# the IANA Registry of Coded Character Sets [6].
# The name or alias labeled '(preferred MIME name)' shall
# always be used to identify a given charset.
charset-supported = STRING L M O
utf-8
# IPP 'charset-supported'
# The possible charsets in which error and status messages
# may be generated (if requested) by this printer,
# for example UTF-8, Shift-JIS, or ISO-8859-1 (Latin1).
# Also, the charsets in which printer string attributes are
# set by operator or system administrator or manufacturer,
# such as IPP 'printer-[name|info|location|make-and-model]'.
# Legal values of charset tags (names/aliases) come from
# the IANA Registry of Coded Character Sets [6].
# The name or alias labeled '(preferred MIME name)' shall
# always be used to identify a given charset.
document-format-supported = STRING L M
# IPP 'document-format-supported'
# The possible document formats in which data may be
# interpreted and printed by this printer.
# Legal values of document formats (MIME types) come from
# the IANA Registry of Internet Media Types [11].
color-supported = BOOLEAN
false
# IPP 'color-supported'
# Indicates whether this printer is capable of any type of
# color printing at all, including highlight color.
finishings-supported = STRING L M O
none
# IPP 'finishings-supported'
# The possible finishing operations supported by this
# printer.
none, staple, punch, cover, bind
number-up-supported = INTEGER M O
1
# IPP 'number-up-supported'
# The possible numbers of print-stream pages to impose
# upon a single side of an instance of a selected
# medium.
# Legal values include 1, 2, and 4.
sides-supported = STRING L M
one-sided
# IPP 'sides-supported'
# (Compare with Salutation 'duplex-mode')
# The number of impression sides (one or two) and the
# two-sided impression rotations supported by this printer.
# Salutation 'simplex' == IPP 'one-sided'
# Salutation 'duplex' == IPP 'two-sided-long-edge'
# Salutation 'tumble' == IPP 'two-sided-short-edge'
one-sided, two-sided-long-edge, two-sided-short-edge
media-supported = STRING L M
# IPP 'media-supported' - only the standard keyword values
# The standard names/types/sizes (and optional color
# suffixes) of the media supported by this printer.
# The values specified are NOT localized according to the
# value of 'natural-language-configured', but are in a
# fixed locale of 'en-US' (US English). For example
# 'iso-a4' or 'envelope' or 'na-letter-white'.
# Legal values of this attribute conform to ISO 10175
# 'Document Printing Application (DPA)' [10],
# plus any IANA registered extensions, per [3].
media-local-supported = STRING M
# IPP 'media-supported' - only site-specific name values
# Site-specific names of media supported by this printer,
# in the locale specified by 'natural-language-configured'.
# For example 'purchasing-form' (site-specific name)
# as opposed to 'na-letter' (standard keyword from [10]).
printer-resolution-supported = STRING L M O
# IPP 'printer-resolution-supported'
# (Compare with 'printer-uri-supported' in this template)
# The unordered list of resolutions supported for printing
# documents by this printer.
# Each resolution supported is a string with 3 elements:
# 1) Crossfeed direction resolution (positive integer)
# 2) Feed direction resolution (positive integer)
# 3) Resolution unit (enumerated value - see below)
# Each resolution element is delimited by '>', for example:
# '300> 300> dpi>, 600> 600> dpi>'
# Legal values of resolution unit are 'dpi' (dots per inch)
# and 'dpcm' (dots per centimeter).
# These values are derived from the Printer MIB [6].
print-quality-supported = STRING L M O
normal
# IPP 'print-quality-supported'
# The possible subjective print quality modes in which
# documents may be printed by this printer.
draft, normal, high
copies-supported = INTEGER O
-1
# IPP 'copies-supported'
# The maximum number of copies of a document
# that may be printed as a single job.
# A value of -1 indicates there is no limit.
job-k-octets-supported = INTEGER O
-1
# IPP 'job-k-octets-supported'
# The maximum size, in kilobytes, of a print job that
# this printer will accept.
# A value of -1 indicates there is no limit.
pages-per-minute = INTEGER O
# IPP 'pages-per-minute' (proposed new attribute)
# The nominal number of pages per minute which may be
# output by this printer (e.g., simplex, black-and-white).
# This attribute is informative, NOT a service guarantee.
# Typically, it is the value used in marketing literature
# to describe this printer.
delivery-orientation-supported = STRING L O
unknown
# Printer MIB 'prtOutputPageDeliveryOrientation'
# The possible delivery orientations of pages as they are
# printed and ejected from this printer.
unknown, face-up, face-down
priority-levels-supported = INTEGER O
1
# Salutation 'priority-levels-supported'
# (Compare with IPP 'job-priority-supported')
# The number of priority levels supported by this printer.
# A value of 1 indicates all jobs have the same priority.
paper-output = STRING L M O
standard
# Salutation 'paper-output'
# The possible modes in which output pages are arranged
# supported by this printer.
standard, noncollated-sort, collated-sort, stack, unknown
-------------------- template ends here ----------------------
-------------------------------------------