System Administration Guide: Printing

IPP Components

The following table describes the components that make up IPP support in the Oracle Solaris OS:

Table A–1 IPP Components




The Apache Web Server. This provides an HTTP transport listener that can listen for HTTP requests on the IANA registered IPP port of tcp/631. Once a request has been received, it is passed on to the IPP Apache module.

The Apache IPP module. This Apache module looks at the clients HTTP request to determine if it looks like an IPP request (mime-type of application/ipp and HTTP POST operation). Once it has been determined to be an IPP request it is passed on to the IPP listener library. This module also introduces and processes IPP-specific Apache configuration directives.

The IPP listener library. This library makes use of a core IPP marshaling library to decode the IPP request and dispatch it to one of it's IPP operation implementation functions. These functions convert the IPP request into PAPI calls to interact with the local print service. Once serviced, the listener library encodes and sends the results back to the requesting client.

The IPP marshaling library decodes and encodes IPP byte streams for reception and transmission on the wire.

The PAPI library provides applications like the IPP listening service a means of interacting with the print service. 

IPP Libraries

The IPP Listening Service library (libipp-listener) – Is where the bulk of the protocol request processing occurs. The library reads and validates requests by using the core IPP library, After the request has been validated, the request is translated to a series of client API calls. The result of these calls are then translated into an appropriate IPP response by using the core IPP library. The response is returned to the client system by the web server. The interface to the listening service library is a project private interface that is specific to the IPP server-side implementation.

The IPP Core library ( – Is shared between client and server operation. The IPP core library contains routines that enable it to read and write protocol requests and responses. The library converts IPP request and response data between the standard binary representation and a set of common data structures. Ultimately, this common data representation is used in translating requests to and from a print service neutral representation and passed between a generic printing interface, Since both client-side and server-side IPP support must perform this function, this is shared by clients and servers.

The PAPI library ( – Provides applications a print service independent means of interacting with a print service or protocol. In this instance, it provides the Apache IPP listening service a means of interacting with the local LP service. It determines the print service to interact with based on client-side queue configuration data stored in the printers.conf configuration database.