The IPP listening service provides an IPP network protocol service that enables print client systems a means of interacting with a print service on the system that is running the listener. This listener implements server-side IPP protocol support that includes a broad set of standard operations and attributes. The listener is implemented in the Oracle Solaris OS as an Apache module and a series of shared libraries that contain IPP operation and wire support. The IPP software stack is installed when the Oracle Solaris OS is installed on the system. The IPP listening service is an SMF service that depends on the print service to run. As a result, IPP is automatically enabled on a print server when the first print queue has been added . IPP is disabled when the last print queue has been removed.
Server-side support for IPP starts with the IPP module, mod_ipp. The listening service uses the Apache web server because the Oracle Solaris OS ships with Apache software. The Apache module uses the Dynamic Shared Object (DSO) interface to plug in under the web server. Using the DSO interface, the module includes configuration support for the IPP Listening service and an entry point for the web server to hand the listener the HTTP connection. This modular approach enables the IPP support to reuse Apache delivered encryption and authentication mechanisms.
The IPP listening service configuration file, /etc/apache/httpd-standalone-ipp.conf, is like any normal Apache 1.3 configuration file. The configuration files takes any Apache 1.3 configuration directives that you want to use.
The default configuration includes the following features:
Listening on port 631.
Loading of a minimal set of Apache modules.
Enabling all supported IPP operations at the /printers/path (ipp://server/printers/) without requiring authentication.
The default operations that are enabled for /printers/ is limited to a set of operations that poses less of a security risk. However, all operations are enabled at the /admin/path (ipp://server/admin/), with basic authentication required.
The mod_ipp Apache configuration options to choose from are described in the following table:
Table A–2 mod_ipp Apache Module Configuration Options:
Value |
Description |
---|---|
ipp-conformance |
Selects level of protocol checking. The default is automatic, which provides maximal client interaction. |
ipp-operation |
Enables you to selectively enable or disable IPP operation support for one more IPP operations. |
ipp-default-user |
Selects the user name to use when contacting the local print service. The default is the lp print user, which enables more functional proxying. |
ip-default-service |
Selects the default print service to direct requests to. The default is the lpsched daemon and currently only has been tested against lpsched. |
The following table shows the conformance checking types for the Apache Web Server Configuration. The syntax to use is:
ipp-conformance value |
Value |
Meaning |
Automatic |
Only check that the requested operation is supported by the protocol listener. (default) |
1.0 |
Check that the request conforms to IPP/1.0. |
1.1 |
Check that the request conforms to IPP/1.1. |
The following is an annotated example of an apache configuration file:
if mod_ipp is loaded User lp run as "lp" URI: ipp://{host]/printers/{queue} SetHandler application/ipp use mod_ipp for this location ipp-conformance strict enable strict protocol checking (default) ipp-operation all enable enable all supported operations
IPP objects support operations. An operation consists of a request and a response. When a print client communicates with an IPP object, the client issues an operation request to the URI for that object. Operation requests and responses have parameters that identify the operation. Operations also have attributes that affect the run time characteristics of the operation. These operation-specific attributes are defined as operation attributes. Print requests contain operation attributes, object attributes, and the required document data to perform the specific operation. Each request requires a response from the object. Each response indicates success or failure of the operation with a corresponding status code as a response parameter. Responses contain operation attributes, object attributes, and status messages that are generated during the operation request.
The following table describes the IPP operation keywords for the Apache Web Server Configuration.
Table A–4 IPP Operation Keywords
Value |
Meaning |
All |
This keyword is used in place of an operation. The keyword is meant to signify that all operations that are supported by mod_ipp are selected. |
Required |
This keyword is used in place of an operation. The keyword is meant to signify that all the required operations, as defined in RFC-2911, are selected, including the following: print-job, cancel-job, get-job-attributes, get-jobs, and get-printer-attributes. |
Print-job |
A client wants to submit a print job with only a single document. The document data is sent with the request. |
Print-uri |
Unsupported. |
Validate-job |
A client wants to validate that a print job can be handled by the scheduler before submitting a print job. |
Create-job |
A client wants to submit a print job with multiple documents. The documents are sent with the send-document and send-uri operations. |
Send-document |
A client wants to add a document to a print job that is created with the print-job operation. The document data is sent with the request. |
Send-uri |
Unsupported. |
Cancel-job |
A client wants to cancel a print job. |
Get-job-attributes |
A client wants to gather information about a print job. |
Get-jobs |
A client wants to gather a list of print jobs in a particular print queue. |
Get-printer-attributes |
A client wants to gather information about a particular print queue. |
Hold-job |
A client wants to hold a particular print job. |
Release-job |
A client wants to release a particular print job. |
Restart-job |
A client wants to restart a particular print. |
Pause-printer |
A client wants to pause (disable) a particular print queue. This operation will stop the processing of print requests in the queue. Note that the operation does not stop the queue from accepting jobs. |
Resume-printer |
A client wants to resume (enable) processing of jobs in a particular print queue. |
Purge-jobs |
A client wants to remove all jobs from a particular print queue. |
Set-printer-attributes |
Create or modify attributes of a printer. |
Set-job-attributes |
Modify attributes of an existing print job. |
Enable-printer |
Resume (accept) queueing of print jobs. |
Disable-printer |
Disable (reject) queueing of print jobs. |
cups-get-default |
Retrieve the default destination for a print service. |
cups-get-printers |
Enumerate all printers available from the print service. |
cups-get-classes |
Enumerate all classes available from the print service. |
cups-accept-jobs |
CUPS specific equivalent of Enable-printer. |
cups-reject-jobs |
CUPS specific equivalent of Disable-printer. |
cups-move-jobs |
Move jobs between queues in the same print service. |