| Interstage Application Server/Interstage Web Server 移行ガイド |
目次
索引
![]()
|
| 第4章 旧機能から新機能への移行方法 | > 4.3 InfoDirectoryからInterstage ディレクトリサービスへの移行 |
C言語アプリケーションの移行手順について説明します。
InfoDirectory SDKを使用したユーザアプリケーションは、Interstage ディレクトリサービス SDKとバイナリの互換性がありません。このため、アプリケーションを再コンパイルする必要があります。以降の記事を参照したうえで、アプリケーションを再コンパイルしてください。
また、一部の機能、インタフェースなどに変更がありますので、以下を参照して、アプリケーションを修正してください。
旧バージョン・レベルのAPIでは“draft-ietf-ldapext-ldap-c-api-05.txt”に準拠していますが、一部、古い仕様である“draft-ietf-ldapext-ldap-c-api-00.txt”に従って実装されているものがあります。
Interstage ディレクトリサービス LDAPクライアントAPIライブラリでは、最新の規約に正しく準拠するため、以下のAPIで機能差異が発生します。
|
関数 |
変更点 |
移行方法 |
|
|---|---|---|---|
|
ldap_get_option() |
セションハンドルオプションの扱いが変更されています。 |
|
|
|
|
LDAP_OPT_DESC |
推奨されないインタフェースに変更されました。 |
推奨されませんが、従来どおり利用できます。 |
|
LDAP_OPT_HOST_NAME |
アプリケーションが復帰領域をldap_memfree()で解放する必要があります。解放しない場合は、メモリリークとなります。 |
ldap_get_option()で復帰したアドレスを不要になったタイミングでldap_memfree()で解放してください。 |
|
|
LDAP_OPT_RESTART |
パラメタが、"void *"から"int *"に変更されました。旧APIでint型を使用していない場合は、アプリケーションが異常終了する可能性があります。 |
ldap_get_option()の第3パラメタはint型変数のポインタを指定してください。 |
|
|
ldap_set_option() |
セションハンドルオプションの扱いが変更されています。 |
|
|
|
|
LDAP_OPT_HOST_NAME |
パラメタが、"char **"から"char *"に変更されました。旧APIのままでは、アプリケーションが異常終了します。 |
例1)のように修正してください。 |
|
LDAP_OPT_ERROR_NUMBER |
旧バージョン・レベルでは、ldap_get_option()で参照だけができましたが、新バージョン・レベルでは、ldap_set_option()で更新できるようになりました。 |
基本的に修正不要ですが、アプリケーションの仕様に応じて修正してください。 |
|
|
LDAP_OPT_RESTART |
旧バージョン・レベルでは、パラメタがマニュアルでは"void *"でしたが、ライブラリでは"int *"で扱っていました。新バージョン・レベルでは、ライブラリでも"void *"で扱います。従来の指定方法のままでは、常にLDAP_OPT_ONが設定されたと認識されるため、アプリケーションが正しく動作しない可能性があります。 |
例2)のように修正してください。 |
|
|
ldap_version() |
構造体メンバのsdk_versionが、旧バージョン・レベルでは100を返しますが、ライブラリのバージョンとして200以上を返します。 |
構造体のメンバsdk_versionをチェックしている場合は修正してください。 |
|
|
ldap_search() |
filterパラメタにNULLを指定した場合、旧バージョン・レベルではパラメタエラー(LDAP_PARAM_ERROR)となりますが、新バージョン・レベルでは、"(objectClass=*)"を指定したとみなします。 |
基本的に修正不要ですが、アプリケーションの仕様に応じて修正してください。 |
|
|
ldap_search_st() |
timeoutパラメタの構造体メンバのtv_sec、tv_usecともに0を指定した場合、または、どちらか一方、または両方に負の値を設定した場合、旧バージョン・レベルでは無限に待ち合わせします。新バージョン・レベルではパラメタエラー(LDAP_PARAM_ERROR)となるため、旧APIのままでは検索できません。 |
タイムアウトを無制限にする場合は、timeoutパラメタにNULLを指定してください。 |
|
以下の関数で、関数宣言が変更され、const修飾子(太字部分)により宣言が厳格化されました。旧APIに準じたソースではコンパイル時に警告が出る場合があります。必要に応じて修正してください。
ldap_init()
---------------------------------------------------------------------
LDAP *ldap_init(
const char *hostname,
int portno );
---------------------------------------------------------------------
ldap_set_option()
---------------------------------------------------------------------
int ldap_set_option(
LDAP *ld,
int option,
const void *optdata );
---------------------------------------------------------------------
ldap_simple_bind()
---------------------------------------------------------------------
int ldap_simple_bind(
LDAP *ld,
const char *dn,
const char *passwd );
---------------------------------------------------------------------
ldap_simple_bind_s()
---------------------------------------------------------------------
int ldap_simple_bind_s(
LDAP *ld,
const char *dn,
const char *passwd );
---------------------------------------------------------------------
ldap_search()
---------------------------------------------------------------------
int ldap_search(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly );
---------------------------------------------------------------------
ldap_search_s()
---------------------------------------------------------------------
int ldap_search_s(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPMessage **res );
---------------------------------------------------------------------
ldap_search_st()
---------------------------------------------------------------------
int ldap_search_st(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
struct timeval *timeout,
LDAPMessage **res );
---------------------------------------------------------------------
ldap_search_ext()
---------------------------------------------------------------------
int ldap_search_ext(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
int *msgidp );
---------------------------------------------------------------------
ldap_search_ext_s()
---------------------------------------------------------------------
int ldap_search_ext_s(
LDAP *ld,
const char *base,
int scope,
const char *filter,
char **attrs,
int attrsonly,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
struct timeval *timeout,
int sizelimit,
LDAPMessage **res );
---------------------------------------------------------------------
ldap_compare()
---------------------------------------------------------------------
int ldap_compare(
LDAP *ld,
const char *dn,
const char *attr,
const char *value );
---------------------------------------------------------------------
ldap_compare_s()
---------------------------------------------------------------------
int ldap_compare_s(
LDAP *ld,
const char *dn,
const char *attr,
const char *value );
---------------------------------------------------------------------
ldap_compare_ext()
---------------------------------------------------------------------
int ldap_compare_ext(
LDAP *ld,
const char *dn,
const char *attr,
const struct berval *bvalue,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp );
---------------------------------------------------------------------
ldap_compare_ext_s()
---------------------------------------------------------------------
int ldap_compare_ext_s(
LDAP *ld,
const char *dn,
const char *attr,
const struct berval *bvalue,
LDAPControl **serverctrls,
LDAPControl **clientctrls );
---------------------------------------------------------------------
ldap_modify()
---------------------------------------------------------------------
int ldap_modify(
LDAP *ld,
const char *dn,
LDAPMod **mods );
---------------------------------------------------------------------
ldap_modify_s()
---------------------------------------------------------------------
int ldap_modify_s(
LDAP *ld,
const char *dn,
LDAPMod **mods );
---------------------------------------------------------------------
ldap_modify_ext()
---------------------------------------------------------------------
int ldap_modify_ext(
LDAP *ld,
const char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp );
---------------------------------------------------------------------
ldap_modify_ext_s()
---------------------------------------------------------------------
int ldap_modify_ext_s(
LDAP *ld,
const char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls );
---------------------------------------------------------------------
ldap_rename()
---------------------------------------------------------------------
int ldap_rename(
LDAP *ld,
const char *dn,
const char *newrdn,
const char *newparent,
int deleteoldrdn,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp );
---------------------------------------------------------------------
ldap_rename_s()
---------------------------------------------------------------------
int ldap_rename_s(
LDAP *ld,
const char *dn,
const char *newrdn,
const char *newparent,
int deleteoldrdn,
LDAPControl **serverctrls,
LDAPControl **clientctrls );
---------------------------------------------------------------------
ldap_add()
---------------------------------------------------------------------
int ldap_add(
LDAP *ld,
const char *dn,
LDAPMod **attrs );
---------------------------------------------------------------------
ldap_add_s()
---------------------------------------------------------------------
int ldap_add_s(
LDAP *ld,
const char *dn,
LDAPMod **attrs );
---------------------------------------------------------------------
ldap_add_ext()
---------------------------------------------------------------------
int ldap_add_ext(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp );
---------------------------------------------------------------------
ldap_add_ext_s()
---------------------------------------------------------------------
int ldap_add_ext_s(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl **serverctrls,
LDAPControl **clientctrls );
---------------------------------------------------------------------
ldap_delete()
---------------------------------------------------------------------
int ldap_delete(
LDAP *ld,
const char *dn );
---------------------------------------------------------------------
ldap_delete_s()
---------------------------------------------------------------------
int ldap_delete_s(
LDAP *ld,
const char *dn );
---------------------------------------------------------------------
ldap_delete_ext()
---------------------------------------------------------------------
int ldap_delete_ext(
LDAP *ld,
const char *dn,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp );
---------------------------------------------------------------------
ldap_delete_ext_s()
---------------------------------------------------------------------
int ldap_delete_ext_s(
LDAP *ld,
const char *dn,
LDAPControl **serverctrls,
LDAPControl **clientctrls );
---------------------------------------------------------------------
ldap_get_values()
---------------------------------------------------------------------
char **ldap_get_values(
LDAP *ld,
LDAPMessage *entry,
const char *attr );
---------------------------------------------------------------------
ldap_get_values_len()
---------------------------------------------------------------------
struct berval **ldap_get_values_len(
LDAP *ld,
LDAPMessage *entry,
const char *attr );
---------------------------------------------------------------------
ldap_explode_dn()
---------------------------------------------------------------------
char **ldap_explode_dn(
const char *dn,
int notypes );
---------------------------------------------------------------------
ldap_explode_rdn()
---------------------------------------------------------------------
char **ldap_explode_rdn(
const char *rdn,
int notypes );
---------------------------------------------------------------------
ldap_dn2ufn()
---------------------------------------------------------------------
char *ldap_dn2ufn(
const char *dn );
---------------------------------------------------------------------
以下に示すインタフェースは、推奨されないインタフェースとなります。引き続き使用できますが、新インタフェースへの移行を推奨します。
|
推奨されないインタフェース |
新インタフェース |
|---|---|
|
ldap_ber_free() |
ber_free()に変更となります。パラメタの変更はありません。 |
|
ldap_version() |
ldap_get_option()のオプションにLDAP_OPT_API_INFOを指定して獲得します。 (注) |
|
ldap_get_option() |
|
---------------------------------------------------------------------
typedef struct ldapapiinfo {
int ldapai_info_version;
int ldapai_api_version;
int ldapai_protocol_version;
char **ldapai_extensions;
char *ldapai_vendor_name;
int ldapai_vendor_version;
} LDAPAPIInfo;
---------------------------------------------------------------------
【構造体メンバの設定値】
ldapai_info_version 本構造体のバージョン情報 ldapai_api_version LDAP-SDKのバージョン情報 ldapai_protocol_version LDAPプロトコルのサポートバージョン ldapai_extensions 未使用(NULL) ldapai_vendor_name ベンダー名 ldapai_vendor_version ベンダーの内部バージョン
InfoDirectoryで使用していたC言語アプリケーションを移行する場合は、一部サポートされない機能がありますので、必要に応じて、アプリケーションを修正してください。
Interstage ディレクトリサービスでサポートされない機能と、その対処方法を以下に示します。
|
サポートされない機能 |
対処方法 |
|---|---|
|
証明書ベースの認証機能
|
ldap_simple_bind()、またはldap_simple_bind_s()による認証に修正してください。 |
|
リフェラル機能
|
リフェラルを含むメッセージは返却されないため、左記の関数を使用している場合は、関数を削除してください。 |
|
LDAPプロトコル拡張機能
|
左記の関数を使用している場合は、LDAPプロトコル拡張を使用しないように、関数を削除してください。 |
|
拡張コントロール機能
|
左記の関数を削除し次の方法で修正してください。
|
|
エイリアス(別名参照)
|
エイリアスを使用している場合は、アプリケーションの左記の関数を削除し、Interstage ディレクトリサービスに同一エントリを複数登録してください。 |
以下の位置が変更されました。
InfoDirectory
Interstage ディレクトリサービス
インクルードファイル
C:\Interstage\IDSDK\C\include
![]()
/opt/FJSVidsdk/C/include
C:\Interstage\IREPSDK\include
![]()
/opt/FJSVirepc/includeリンク用ライブラリ
C:\Interstage\IDSDK\C\lib
![]()
/opt/FJSVidsdk/C/lib
C:\Interstage\IREPSDK\lib
![]()
/opt/FJSVirepc/lib
以下が変更されました。
InfoDirectory
Interstage ディレクトリサービス
動的ライブラリ
libidldap2.dll
![]()
libidldap2.so上記の名前が右記に変更されました。
F3FMirepldap2.dll
![]()
libirepldap2.so (注)アプリケーションで使用するライブラリ名を上記に変更してください。
静的ライブラリ
libidldap2.lib
![]()
libidldap2.a上記の静的ライブラリは提供されません。
F3FMirepldap2.dll
![]()
libirepldap2.so上記の動的ライブラリを使用するように修正してください。
- 注)
- 動的ライブラリは/usr/libへのシンボリックリンクは設定されません。アプリケーション、または環境設定でライブラリへのパスを解決する必要があります。
目次
索引
![]()
|