Subject: LDAP section of IPP spec

From: [email-masked]
Date: Thu, 21 Nov 96 09:57:10 CST

IPP Team,

Here is the draft for how to register Printer objects using LDAP.  I based this
on my reading of RFCs 1777, 1823, 1959 and 1960.

*** I will be at home so please send comments to the IPP mailing list and
*** cc [email-masked] so I receive the comments at home.  Thanks.

4.3  Printer Object Directory Entry and Location

To allow directory users to locate an IPP printer, a corresponding Printer
object must be defined as a directory entry.  The directory entry includes
the name of the entry and the attributes as defined in "4.2 Directory Entry
Schema".  An example of how to define a directory entry for a Printer object
using LDAP is given to assist the reader's understanding of this specification.

To create a Printer object directory entry using LDAP:

1.  An administrator uses a program to create an entry for the Printer object
    on a directory server that supports LDAP.  The administrator defines the
    Distinguished Name (dn) and the default subjective attributes for the
    Printer object directory entry.

    *** ISSUE:  Should the administrator also define default objective
    attributes or wait for the Printer object to initialize these attributes?

2.  The Printer object invokes the ldap_open API to open a connection to the
    directory server.

    Example:  ld=ldap_open ("dir.host.name", LDAP_PORT)
    where ld is the connection handle for subsequent LDAP APIs.

3.  The Printer object invokes an ldap "bind" API to authenticate with the
    directory server.

    Example:  ldap_simple_bind_s (ld, dn, NULL) which does a simple
    authentication without a password.

4.  The Printer object invokes the ldap_modify or ldap_modify_s API to
    define the objective attributes for the Printer object entry as
    identified by is Distinguished Name (dn).

    Example:  ldap_modify_s (ld, dn, mods) where mods is a NULL-terminated
    array of objective attributes and values to add or modify in the directory
    entry.

5.  The Printer object invokes the ldap_unbind API to close the connection
    to the directory server.

    Example:  ldap_unbind (ld)

When one or more objective attributes are modified for a Printer object, the
Printer object repeats steps 2-5 to update the modified objective attributes
in its directory entry.

To locate a Printer object entry using LDAP, a program can use the ldap_search
or ldap_search_s API or a user can specify an LDAP URL.  For example, to
locate all Printer objects that support duplex, a user can specify URL:

ldap:///dir.host.name???(sides-supported=2-sided-long-binding-edge)

ISSUE:  Should one filter the search for an object class of Printer?  Do we
need to define this object class?  If so, how?

Please refer to the following RFCs for more information on LDAP:

RFC 1777 - Lightweight Directory Access Protocol
RFC 1823 - The LDAP Application Program Interface
RFC 1959 - An LDAP URL Format
RFC 1960 - A String Representation of LDAP Search Filters

Keith