Copies: SLP Working Group IPP Working Group Hi folks, Sunday (31 January 1999) The following documents are at 'ftp://ftp.pwg.org/pub/pwg/ipp/new_SLP': slp-printer-981028.txt - first revision to March 1998 draft slp-printer-990104.txt - second revision to March 1998 draft slp-proposal-990113.txt - summary of proposed third revision slp-printer-990131.txt - third revision to March 1998 draft ^^^^^^^^^^^^^^^^^^^^^^ (THIS NOTE) Below is the latest version of the SLP 'printer:' template, aligned with the November 1998 draft of IPP/1.0 Model and Semantics, and subsequent discussion on the IPP WG mailing list in December and January. There are now six (6) MANDATORY attributes and twenty-two (22) OPTIONAL attributes (all with default values specified) in this template. Please read the change log, especially Issues 1 and 2 - recent work on raw TCP print service by Mikael Pahmp (Axis) and recent input on NetWare NDPS print service by Hugo Parra (Novell) have NOT been incorporated. 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), for direct alignment with IPP/1.0 semantics. The choice of GREATER-THAN SIGN '>' was suggested by reviewing RFC 2396, "Uniform Resource Identifiers (URI): Generic Syntax", August 1998. Cheers, - Ira McDonald (IPP WG member, outside consultant at Xerox) High North Inc 716-461-5667 ************************************************************************ **** Revised 'printer:' template - 31 January 1998 - Ira E McDonald **** ************************************************************************ *** ISSUES 1) No updates were made for SLP 'printer:' extension work on raw TCP print protocol (in , 2 December 1998, by Mikael Pahmp, Axis, Sweden). A definitive reference for this protocol and a concrete URL syntax is required. In addition, the concrete URL syntax MUST be IANA registered or be qualified with a namespace suffix (unsuitable for base template). Thus, no IEEE 1284 device ID attribute was added at this time. Either an authoritative vendor (HP?) will register the URL syntax or a separate template may augment the base 'printer:' template. 2) No updates were made for SLP 'printer:' extension work on NetWare NDPS print protocol, per agreement with Hugo Parra. A definitive reference for this protocol and a concrete URL syntax is required. In addition, the concrete URL syntax MUST be IANA registered or be qualified with a namespace suffix (unsuitable for base template). Thus, no ABNF for the 'ndps:' URL syntax was added at this time. Either an authoritative vendor (Novell) will register the URL syntax or a separate template may augment the base 'printer:' template. ------------------------------------------------------------------------ *** CHANGE LOG 1) Renamed all base attributes of the template, per latest draft of "Service Templates and service: Schemes"; 'type' to 'template-type' 'version' to 'template-version' 'description' to 'template-description' 'url-syntax' to 'template-url-syntax' 2) Changed 'template-version' to '0.2' (from '0.1' in March 1998 spec). 3) Deleted 'language = en' from template body, per latest draft of "Service Templates and service: Schemes"; 4) Renamed 'ippurl' ABNF element to 'ipp10url' (IPP/1.0) to allow other IPP URL syntaxes in the future, per request of Bob Herriot, editor of "IPP Transport and Encoding" [9]. 5) Changed 'ipp10url' source reference to protocol spec, "IPP Transport and Encoding" [9], rather than (incorrect) "IPP Model" [3]. 6) Added a comment to each attribute, w/ the source attribute name in IPP (base document) or Printer MIB (RFC 1759). 7) Replaced remaining few Salutation attributes with IPP/1.0 ones, per agreement on IPP WG mailing list in January 1999. 8) Revised attribute names for alignment with IPP/1.0 ones, per agreement on IPP WG mailing list in January 1999. 9) Revised attribute descriptions for alignment with IPP/1.0 ones, per agreement on IPP WG mailing list in January 1999. 10) Revised most attributes to OPTIONAL and added default values, per agreement on IPP WG mailing list in January 1999. ------------------------------------------------------------------------ *** Corrected References (for future full Internet-Draft) [3]--change date to November 1998 (latest draft) [4]--change date to November 1998 (latest draft) ------------------------------------------------------------------------ *** Additional References (for future full Internet-Draft) [9]R. Herriot, S. Butler, P. Moore, R. Turner, "IPP/1.0: Encoding and Transport", Work in progress, November 1998 [10]"Information Technology - 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 [12]H. Alvestrand, "IETF Policy on Character Sets and Languages", RFC 2277, January 1998. ------------------------------------------------------------------------ * Template prefix begins here Name of submitter: "Ira McDonald" 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 userful 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 server. The device or server understands a network network print protocols such as IPP or LPR. 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 # MANDATORY for all registrations by conforming SAs # 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 # MANDATORY for all registrations by conforming SAs # 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', 'ssl3', and 'tls' [9]. printer-name = STRING # MANDATORY for all registrations by conforming SAs # IPP 'printer-name' # This attribute contains the name of this printer, # in the locale specified by 'natural-language-configured'. # This name MAY be the last part of the printer's URI or it # MAY be completely unrelated. # This name MAY contain characters that are not allowed in a # conventional URI (which conforms to RFC 2396). # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-location = STRING O unknown # 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' # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-info = STRING O unknown # 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. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-more-info = STRING L O unknown # IPP 'printer-more-info' # A URI used to obtain more information about this specific # printer. For example, this could be an 'http:' URI # referencing an HTML page accessible to a Web Browser. # The information obtained from this URI is intended for # end user consumption. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-make-and-model = STRING O unknown # 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. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-current-operator = STRING M O unknown # 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. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-service-person = STRING M O unknown # 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. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. natural-language-configured = STRING L # MANDATORY for all registrations by conforming SAs # 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 # MANDATORY for all registrations by conforming SAs # 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. # This attribute shall always include the value 'utf-8', per # RFC 2277, 'IETF Policy on Charsets and Languages' [12]. document-format-supported = STRING L M # MANDATORY for all registrations by conforming SAs # 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]. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. color-supported = STRING L O unknown # IPP 'color-supported' # Indicates whether this printer is capable of any type of # color printing at all, including highlight color. # This template attribute is an extended boolean. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. unknown, true, false finishings-supported = STRING L M O none # IPP 'finishings-supported' # The possible finishing operations supported by this # printer. # If this printer information is not known to the SA, # then this attribute shall always be set to 'none'. 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. # If this printer information is not known to the SA, # then this attribute shall always be set to '1'. sides-supported = STRING L M O 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' # If this printer information is not known to the SA, # then this attribute shall always be set to 'one-sided'. one-sided, two-sided-long-edge, two-sided-short-edge media-supported = STRING L M O unknown # 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]. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. media-local-supported = STRING M O unknown # 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]). # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. printer-resolution-supported = STRING L M O unknown # 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]. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. 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 unknown. # If this printer information is not known to the SA, # then this attribute shall always be set to '-1'. 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 unknown. # If this printer information is not known to the SA, # then this attribute shall always be set to '-1'. pages-per-minute = INTEGER O -1 # IPP 'pages-per-minute' # 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. # A value of -1 indicates unknown. # If this printer information is not known to the SA, # then this attribute shall always be set to '-1'. pages-per-minute-color = INTEGER O -1 # IPP 'pages-per-minute-color' # The nominal number of color pages per minute which may be # output by this printer (e.g., simplex, color). # This attribute is informative, NOT a service guarantee. # Typically, it is the value used in marketing literature # to describe this printer. # A value of -1 indicates unknown. # If this printer information is not known to the SA, # then this attribute shall always be set to '-1'. 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. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. unknown, face-up, face-down job-priority-supported = STRING L O unknown # IPP 'job-priority-supported' # (Compare with Salutation 'priority-levels-supported') # Indicates whether job priority scheduling is supported. # An IPP conformant printer which supports job priority # must always support a full range of priorities from # '1' to '100' (to ensure consistent behavior), therefore # this template attribute is an extended boolean. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. unknown, true, false multiple-document-handling-supported = STRING L M O unknown # IPP 'multiple-document-handling' # (Compare with Salutation 'paper-output') # This attribute is only relevant if a job consists of two # or more documents. The attribute relates to finishing # operations and the placement of one or more print-stream # pages into impressions and onto media sheets. # Please refer to 'multiple-document-handling' in the # 'IPP/1.0 Model and Semantics' [3] for full details. # If this printer information is not known to the SA, # then this attribute shall always be set to 'unknown'. unknown, single-document, separate-documents-uncollated-copies, separate-documents-collated-copies, single-document-new-sheet -------------------- template ends here ----------------------