C Migrating from Netscape LDAP SDK API to Oracle LDAP SDK API

The Oracle Internet Directory SDK C API is described in Chapter 8, "C API Reference". This Appendix outlines differences between the Netscape LDAP SDK and the Oracle Internet Directory LDAP SDK that are important when migrating code.

C.1 Features

The following features of the Oracle Internet Directory LDAP SDK are different from Netscape's SDK.

  • In the Netscape SDK, a client must register an LDAP Rebind Call Back to handle a referral. This is automatically handled in the Oracle LDAP SDK.

  • Access to the LDAP Structure is different. The LDAP handle in Netscape LDAP SDK is type opaque. Accessory functions are required to access individual fields within this handle. In the Oracle Internet Directory LDAP SDK, the LDAP structure is exposed and a client can modify individual fields within the structure.

  • Use ldap_open() instead of ldap_init() with the Oracle LDAP SDK.

  • SSL connection initialization requires different function calls and procedures in the Oracle LDAP SDK. See Chapter 8, "C API Reference"for information about Oracle Internet Directory function calls for SSL.

  • The Oracle Internet Directory C API depends on the Oracle environment, including libraries and other files.You must install Oracle Application Server or Oracle Database and set the environment variable $ORACLE_HOME to an appropriate location before you build your application.

  • An LDAP SDK user must use an allocation function that clears memory, such as calloc(), to allocate an LDAPMod structure().

  • The Oracle Internet Directory API is not thread-safe.

C.2 Functions

The following functions are available in Netscape LDAP SDK and not in Oracle LDAP SDK:

  • The Oracle LDAP SDK does not have the function ldap_ber_free(). Use ber_free() instead.

  • The Oracle LDAP SDK does not have the function ldap_get_lderrno() for retrieving the ld error and matched string. You can retrieve this information directly by accessing the field LDAP.ld_matched and LDAP.ld_error. These are the only fields of the LDAP structure that you should ever need to access.

C.3 Macros

  • LDAPS_PORT is not defined in the Oracle LDAP SDK. Use LDAP_SSL_PORT instead.

  • LDAP_AFFECT_MULTIPLE_DSA is not defined in the Oracle LDAP SDK. This is a Netscape-specific macro.