ページの先頭行へ戻る
Interstage Application Server リファレンスマニュアル(API編)
Interstage

1.21.4 エントリの検索インタフェース

関数名

関数の説明

ldap_search()

指定された条件のエントリを検索します。
(非同期型)

ldap_search_s()

指定された条件のエントリを検索します。
(同期型)

ldap_search_st()

指定された条件のエントリを検索します。
(同期型、時間制限付き)

ldap_search_ext()

指定された条件のエントリを検索します。
(非同期型、LDAP V3拡張関数)

ldap_search_ext_s()

指定された条件のエントリを検索します。
(同期型、LDAP V3拡張関数)

クライアントからアクセスするDN(バインドDN)と、サーバ側の検索可能最大エントリ数、検索タイムアウト時間の設定値により、検索可能最大エントリ数と検索タイムアウト時間の値が有効にならない場合があります。

検索可能最大エントリ数、および検索タイムアウト時間は、Interstage ディレクトリサービスのサーバ側と、クライアント側とでそれぞれ指定できます。
Interstage ディレクトリサービスのサーバ側の指定とクライアント側の指定との関係を下表に示します。

クライアントから
アクセスするDN
(バインドするDN)

クライアント
指定値

サーバ指定値と
クライアント指定値との関係

有効となる指定

管理者用DN

あり

サーバ>クライアント

クライアント指定値

あり

サーバ≦クライアント

クライアント指定値

制限しない

        -

クライアント指定値

その他

あり

サーバ>クライアント

クライアント指定値

あり

サーバ≦クライアント

サーバ指定値

制限しない

        -

サーバ指定値

名前

ldap_search

形式

#include "idldap.h"
int  ldap_search(
        LDAP  *ld,
        const char  *base,
        int  scope,
        const char  *filter,
        char  **attrs,
        int  attrsonly );

機能説明

この関数は、非同期型のエントリ検索処理をします。

非同期型検索の処理結果を受け取る場合、ldap_result()を使用します。この時、ldap_search()の復帰値として返されたメッセージIDを指定します。詳細は、“処理結果の受取り/判定”を参照してください。

検索がどのようにされるかは、以下に示すセションハンドルオプションによって制御されます。

セションハンドルオプションについては、“セションハンドルオプションの設定/参照”を参照してください。

ldapssl_init()で獲得したセションハンドルを使用している場合、SSLライブラリで発生したエラーをldapssl_error()で参照することができます。

パラメタ

ld

ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。

base

サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。

scope

以下のどれか1つの値を指定します。

  • LDAP_SCOPE_BASE:サーチベースで指定されたエントリを検索します。

  • LDAP_SCOPE_ONELEVEL:サーチベースで指定されたエントリの1階層下のエントリを検索します。

  • LDAP_SCOPE_SUBTREE:サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。

filter

検索フィルタのアドレスを指定します。NULLを指定した場合は、"(objectClass=*)"とみなします。検索フィルタの文法については、“ディレクトリサービス運用ガイド”の“エントリの管理”-“コマンドを使用する”-“検索フィルタ”を参照してください。

(cn=User1)
(o=Fujitsu*)
(&(objectClass=person)(|(uid=0001)(cn=User*)))
attrs

通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。リポジトリサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。

char  *attrs[3] = {
            "objectClass",
            "commonName",
            NULL
            };

DN名のみを通知したい場合は、attrsパラメタの配列先頭にLDAP_NO_ATTRSを設定してください。

char  *attrs[2] = {
            LDAP_NO_ATTRS,
            NULL
            };

このパラメタにNULLを指定すると、検索でヒットしたエントリの利用できる属性がすべて通知されます。また、ポインタ配列の最後には、NULLを設定しておく必要があります。

attrsonly

以下のどちらかの値を指定します。

  • 属性名と属性値の両方を通知してほしい場合 : 0

  • 属性名だけを通知してほしい場合 : 0以外の値

復帰値

この関数は、復帰値として以下の値を返します。

1.21.4.2 ldap_search_s()

名前

ldap_search_s

形式

#include "idldap.h"
int  ldap_search_s(
        LDAP  *ld,
        const char  *base,
        int  scope,
        const char  *filter,
        char  **attrs,
        int  attrsonly,
        LDAPMessage  **res );

機能説明

この関数は、時間制限なしで同期型のエントリ検索処理をします。

検索がどのようにされるかは、以下に示すセションハンドルオプションによって制御されます。

セションハンドルオプションについては、“セションハンドルオプションの設定/参照”を参照してください。

通知された検索結果の解析は、構文解析関数を使用します。詳細は、“1.21.12 検索結果の解析処理インタフェース”を参照してください。

ldapssl_init()で獲得したセションハンドルを使用している場合、SSLライブラリで発生したエラーをldapssl_error()で参照することができます。

パラメタ

ld

ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。

base

サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。

scope

以下のどれか1つの値を指定します。

  • LDAP_SCOPE_BASE:サーチベースで指定されたエントリを検索します。

  • LDAP_SCOPE_ONELEVEL:サーチベースで指定されたエントリの1階層下のエントリを検索します。

  • LDAP_SCOPE_SUBTREE:サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。

filter

検索フィルタのアドレスを指定します。NULLを指定した場合は、"(objectClass=*)"とみなします。検索フィルタの文法については、“ディレクトリサービス運用ガイド”の“エントリの管理”-“コマンドを使用する”-“検索フィルタ”を参照してください。

(cn=User1)
(o=Fujitsu*)
(&(objectClass=person)(|(uid=0001)(cn=User*)))
attrs

通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。リポジトリサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。

char  *attrs[3] = {
            "objectClass",
            "commonName",
            NULL
            };

DN名のみを通知したい場合は、attrsパラメタの配列先頭にLDAP_NO_ATTRSを設定してください。

char  *attrs[2] = {
            LDAP_NO_ATTRS,
            NULL
            };

このパラメタにNULLを指定すると、検索でヒットしたエントリの利用できる属性がすべて通知されます。また、ポインタ配列の最後には、NULLを設定しておく必要があります。

attrsonly

以下のどちらかの値を指定します。

  • 属性名と属性値の両方を通知してほしい場合 : 0

  • 属性名だけを通知してほしい場合 : 0以外の値

res

result情報のアドレスを格納するための、“LDAPMessage *”型のポインタ変数のアドレスを指定します。

復帰値

この関数では、復帰値としてLDAPエラーコードを返します。LDAPエラーコードの値については、“メッセージ集”の“LDAPエラーコード”を参照してください。

サーバから通知されたresult情報がある場合には、resパラメタで指定されたポインタ変数にresult情報のアドレスが設定されています。

注意事項

1.21.4.3 ldap_search_st()

名前

ldap_search_st

形式

#include "idldap.h"
int  ldap_search_st(
        LDAP  *ld,
        const char  *base,
        int  scope,
        const char  *filter,
        char  **attrs,
        int  attrsonly,
        struct timeval  *timeout,
        LDAPMessage  **res );

機能説明

この関数は、時間制限付きで同期型のエントリ検索処理をします。

検索がどのようにされるかは、以下に示すセションハンドルオプションによって制御されます。

セションハンドルオプションについては、“セションハンドルオプションの設定/参照”を参照してください。

通知された検索結果の解析は、構文解析関数を使用します。詳細は、“1.21.12 検索結果の解析処理インタフェース”を参照してください。

ldapssl_init()で獲得したセションハンドルを使用している場合、SSLライブラリで発生したエラーをldapssl_error()で参照することができます。

パラメタ

ld

ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。

base

サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。

scope

以下のどれか1つの値を指定します。

  • LDAP_SCOPE_BASE:サーチベースで指定されたエントリを検索します。

  • LDAP_SCOPE_ONELEVEL:サーチベースで指定されたエントリの1階層下のエントリを検索します。

  • LDAP_SCOPE_SUBTREE:サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。

filter

検索フィルタのアドレスを指定します。NULLを指定した場合は、"(objectClass=*)"とみなします。検索フィルタの文法については、“ディレクトリサービス運用ガイド”の“エントリの管理”-“コマンドを使用する”-“検索フィルタ”を参照してください。

(cn=User1)
(o=Fujitsu*)
(&(objectClass=person)(|(uid=0001)(cn=User*)))
attrs

通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。リポジトリサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。

char  *attrs[3] = {
            "objectClass",
            "commonName",
            NULL
            };

DN名のみを通知したい場合は、attrsパラメタの配列先頭にLDAP_NO_ATTRSを設定してください。

char  *attrs[2] = {
            LDAP_NO_ATTRS,
            NULL
            };

このパラメタにNULLを指定すると、検索条件に合致したエントリの利用できる属性がすべて通知されます。また、ポインタ配列の最後には、NULLを設定しておく必要があります。

attrsonly

以下のどちらかの値を指定します。

  • 属性名と属性値の両方を通知してほしい場合 : 0

  • 属性名だけを通知してほしい場合 : 0以外の値

timeout

検索のローカルタイムアウト値を設定した、timeval構造体のアドレスを指定します。
timeval構造体のメンバには、以下の値を設定します。

  • tv_sec : タイマー値(秒単位)

  • tv_usec : タイマー値(マイクロ秒単位)

timeval構造体のtv_sec、tv_usecの両方に“0”を指定することはできません。

この値は、クライアントでリポジトリサーバからの検索結果を受信するための最大待ち時間として使用されます。timeoutパラメタとセションハンドルオプション (LDAP_OPT_TIMELIMIT)の関係は以下のようになります。

timeoutパラメタ指定値

セションハンドルオプション(LDAP_OPT_TIMELIMIT) の指定値

有効となる指定値

NULL

LDAP_NO_LIMIT(初期値)

セションハンドルオプションの指定値(無制限)

タイマー指定

セションハンドルオプションの指定値

タイマー指定

LDAP_NO_LIMIT(初期値)

timeoutパラメタの指定値

タイマー指定

セションハンドルオプション、timeoutパラメタのどちらか小さい指定値

res

result情報のアドレスを格納するための、“LDAPMessage *”型のポインタ変数のアドレスを指定します。

復帰値

この関数では、復帰値としてLDAPエラーコードを返します。LDAPエラーコードの値については、“メッセージ集”の“LDAPエラーコード”を参照してください。

サーバから通知されたresult情報がある場合には、resパラメタで指定されたポインタ変数にresult情報のアドレスが設定されています。

注意事項

1.21.4.4 ldap_search_ext()

名前

ldap_search_ext

形式

#include "idldap.h"
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_result()を使用します。この時、ldap_search_ext()の復帰値として返されたメッセージIDを指定します。詳細は、“処理結果の受取り/判定”を参照してください。

検索がどのようにされるかは、以下に示すセションハンドルオプションによって制御されます。

セションハンドルオプションについては、“セションハンドルオプションの設定/参照”を参照してください。

通知された検索結果の解析は、構文解析関数を使用します。詳細は、“1.21.12 検索結果の解析処理インタフェース”を参照してください。

ldapssl_init()で獲得したセションハンドルを使用している場合、SSLライブラリで発生したエラーをldapssl_error()で参照することができます。

パラメタ

ld

ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。

base

サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。

scope

以下のどれか1つの値を指定します。

  • LDAP_SCOPE_BASE:サーチベースで指定されたエントリを検索します。

  • LDAP_SCOPE_ONELEVEL:サーチベースで指定されたエントリの1階層下のエントリを検索します。

  • LDAP_SCOPE_SUBTREE:サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。

filter

検索フィルタのアドレスを指定します。NULLを指定した場合は、"(objectClass=*)"とみなします。検索フィルタの文法については、“ディレクトリサービス運用ガイド”の“エントリの管理”-“コマンドを使用する”-“検索フィルタ”を参照してください。

(cn=User1)
(o=Fujitsu*)
(&(objectClass=person)(|(uid=0001)(cn=User*)))
attrs

通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。リポジトリサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。

char  *attrs[3] = {
            "objectClass",
            "commonName",
            NULL
            };

DN名のみを通知したい場合は、attrsパラメタの配列先頭にLDAP_NO_ATTRSを設定してください。

char  *attrs[2] = {
            LDAP_NO_ATTRS,
            NULL
            };

このパラメタにNULLを指定すると、検索条件に合致したエントリの利用できる属性がすべて通知されます。また、ポインタ配列の最後には、NULLを設定しておく必要があります。

attrsonly

以下のどちらかの値を指定します。

  • 属性名と属性値の両方を通知してほしい場合 : 0

  • 属性名だけを通知してほしい場合 : 0以外の値

serverctrls

Interstage ディレクトリサービスではサーバコントロールをサポートしていないため、このパラメタにはNULLを指定します。

clientctrls

本ライブラリではクライアントコントロールをサポートしていないため、このパラメタにはNULLを指定します。

timeout

検索のローカルタイムアウト値を設定した、timeval構造体のアドレスを指定します。
timeval構造体のメンバには、以下の値を設定します。

  • tv_sec : タイマー値(秒単位)

  • tv_usec : タイマー値(マイクロ秒単位)

timeval構造体のtv_sec、tv_usecの両方に“0”を指定することはできません。

timeoutパラメタにNULLポインタを指定すると、セションハンドルオプション(LDAP_OPT_TIMELIMIT)の設定値を使用します。この値は、クライアントでリポジトリサーバからの検索結果を受信するための最大待ち時間として使用されます。timeoutパラメタとセションハンドルオプション (LDAP_OPT_TIMELIMIT)の関係は以下のようになります。

timeoutパラメタ指定値

セションハンドルオプション(LDAP_OPT_TIMELIMIT) の指定値

有効となる指定値

NULL

LDAP_NO_LIMIT(初期値)

セションハンドルオプションの指定値(無制限)

タイマー指定

セションハンドルオプションの指定値

タイマー指定

LDAP_NO_LIMIT(初期値)

timeoutパラメタの指定値

タイマー指定

timeoutパラメタの指定値

sizelimit

受信できる最大エントリ数を指定します。検索結果を制限しない場合は、LDAP_NO_LIMITを指定してください。また、 LDAP_DEFAULT_SIZELIMITを指定すると、セションハンドルオプション(LDAP_OPT_SIZELIMIT)の設定値を使用します。sizelimitパラメタとセションハンドルオプション(LDAP_OPT_SIZELIMIT)の関係は以下のようになります。

sizelimitパラメタ指定値

セションハンドルオプション(LDAP_OPT_SIZELIMIT) の指定値

有効となる指定値

LDAP_NO_LIMIT

LDAP_NO_LIMIT(初期値)

sizelimitパラメタの指定値(無制限)

サイズ指定

sizelimitパラメタの指定値(無制限)

エントリ数

LDAP_NO_LIMIT(初期値)

sizelimitパラメタの指定値

サイズ指定

sizelimitパラメタの指定値

LDAP_DEFAULT_SIZELIMIT

LDAP_NO_LIMIT(初期値)

セションハンドルオプションの指定値(無制限)

サイズ指定

セションハンドルオプションの指定値

msgidp

メッセージIDを格納するための変数のアドレスを指定します。

復帰値

この関数では、復帰値としてLDAPエラーコードを返します。LDAPエラーコードの値については、“メッセージ集”の“LDAPエラーコード”を参照してください。

正常終了の場合、msgidpが示す変数にメッセージIDが設定されます。

1.21.4.5 ldap_search_ext_s()

名前

ldap_search_ext_s

形式

#include "idldap.h"
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 );

機能説明

この関数は、同期型のエントリ検索処理をします。

検索がどのようにされるかは、以下に示すセションハンドルオプションによって制御されます。

セションハンドルオプションについては、“セションハンドルオプションの設定/参照”を参照してください。

通知された検索結果の解析は、構文解析関数を使用します。詳細は、“1.21.12 検索結果の解析処理インタフェース”を参照してください。

ldapssl_init()で獲得したセションハンドルを使用している場合、SSLライブラリで発生したエラーを1.21.11.6 ldapssl_error()で参照することができます。

パラメタ

ld

ldap_init()、またはldapssl_init()で通知された、セションハンドルを指定します。

base

サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。

scope

以下のどれか1つの値を指定します。

  • LDAP_SCOPE_BASE:サーチベースで指定されたエントリを検索します。

  • LDAP_SCOPE_ONELEVEL:サーチベースで指定されたエントリの1階層下のエントリを検索します。

  • LDAP_SCOPE_SUBTREE:サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。

filter

検索フィルタのアドレスを指定します。NULLを指定した場合は、"(objectClass=*)"とみなします。検索フィルタの文法については、“ディレクトリサービス運用ガイド”の“エントリの管理”-“コマンドを使用する”-“検索フィルタ”を参照してください。

(cn=User1)
(o=Fujitsu*)
(&(objectClass=person)(|(uid=0001)(cn=User*)))
attrs

通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。リポジトリサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。

char  *attrs[3] = {
            "objectClass",
            "commonName",
            NULL
            };

DN名のみを通知したい場合は、attrsパラメタの配列先頭にLDAP_NO_ATTRSを設定してください。

char  *attrs[2] = {
            LDAP_NO_ATTRS,
            NULL
            };

このパラメタにNULLを指定すると、検索条件に合致したエントリの利用できる属性がすべて通知されます。また、ポインタ配列の最後には、NULLを設定しておく必要があります。

attrsonly

以下のどちらかの値を指定します。

  • 属性名と属性値の両方を通知してほしい場合 : 0

  • 属性名だけを通知してほしい場合 : 0以外の値

serverctrls

Interstage ディレクトリサービスではサーバコントロールをサポートしていないため、このパラメタにはNULLを指定します。

clientctrls

本ライブラリではクライアントコントロールをサポートしていないため、このパラメタにはNULLを指定します。

timeout

検索のローカルタイムアウト値を設定した、timeval構造体のアドレスを指定します。
timeval構造体のメンバには、以下の値を設定します。

  • tv_sec : タイマー値(秒単位)

  • tv_usec : タイマー値(マイクロ秒単位)

timeval構造体のtv_sec、tv_usecの両方に“0”を指定することはできません。

timeoutパラメタにNULLポインタを指定すると、セションハンドルオプション(LDAP_OPT_TIMELIMIT)の設定値を使用します。この値は、クライアントでリポジトリサーバからの検索結果を受信するための最大待ち時間として使用されます。timeoutパラメタとセションハンドルオプション (LDAP_OPT_TIMELIMIT)の関係は以下のようになります。

timeoutパラメタ指定値

セションハンドルオプション(LDAP_OPT_TIMELIMIT) の指定値

有効となる指定値

NULL

LDAP_NO_LIMIT(初期値)

セションハンドルオプションの指定値(無制限)

タイマー指定

セションハンドルオプションの指定値

タイマー指定

LDAP_NO_LIMIT(初期値)

timeoutパラメタの指定値

タイマー指定

timeoutパラメタの指定値

sizelimit

受信できる最大エントリ数を指定します。検索結果を制限しない場合は、LDAP_NO_LIMITを指定してください。また、 LDAP_DEFAULT_SIZELIMITを指定すると、セションハンドルオプション(LDAP_OPT_SIZELIMIT)の設定値を使用します。sizelimitパラメタとセションハンドルオプション(LDAP_OPT_SIZELIMIT)の関係は以下のようになります。

sizelimitパラメタ指定値

セションハンドルオプション(LDAP_OPT_SIZELIMIT) の指定値

有効となる指定値

LDAP_NO_LIMIT

LDAP_NO_LIMIT(初期値)

sizelimitパラメタの指定値(無制限)

サイズ指定

sizelimitパラメタの指定値(無制限)

エントリ数

LDAP_NO_LIMIT(初期値)

sizelimitパラメタの指定値

サイズ指定

sizelimitパラメタの指定値

LDAP_DEFAULT_SIZELIMIT

LDAP_NO_LIMIT(初期値)

セションハンドルオプションの指定値(無制限)

サイズ指定

セションハンドルオプションの指定値

res

result情報のアドレスを格納するための “LDAPMessage *”型のポインタ変数のアドレスを指定します。

復帰値

この関数では、復帰値としてLDAPエラーコードを返します。LDAPエラーコードの値については、“メッセージ集”の“LDAPエラーコード”を参照してください。

サーバから通知されたresult情報がある場合には、resパラメタで指定されたポインタ変数にresult情報のアドレスが設定されています。

注意事項