InfoDirectory使用手引書 |
目次 索引 |
第3部 SDK編 | > 第5章 アプリケーション開発環境(LDAP C API) | > 5.2 関数インタフェース | > 5.2.6 エントリの検索 |
この関数は、同期型のエントリ検索処理を行います。この関数では、コントロールを指定することができます。【指定形式】
int ldap_search_ext_s(
LDAP *ld,
char *base,
int scope,
char *filter,
char *attrs[],
int attrsonly,
LDAPControl *serverctrls[],
LDAPControl *clientctrls[],
struct timeval *timeout,
int sizelimit,
LDAPMessage **res
);【パラメタの説明】
- ld
ldap_init()またはldapssl_init()で通知された、セションハンドルを指定します。
- base
サーチベースのDNのアドレスを指定します。サーチベースとは、検索開始位置のエントリです。
- scope
以下のいずれかの値を指定します。
- LDAP_SCOPE_BASE
サーチベースで指定されたエントリを検索します。
- LDAP_SCOPE_ONELEVEL
サーチベースで指定されたエントリの1階層下のエントリを検索します。
- LDAP_SCOPE_SUBTREE
サーチベースで指定されたエントリと、その配下の全エントリの中から検索します。
- filter
検索フィルタのアドレスを指定します。
例
(cn=User1) (!(cn=User1)) (o=Fujitsu*) (&(objectClass=person)(|(uid=0001)(cn=User*)))- attrs
通知してほしい属性名のアドレスを設定した、ポインタ配列のアドレスを指定します。InfoDirectoryサーバは、ポインタ配列で指定された属性だけをクライアントに通知します。以下の例では、“objectClass”と“commonName”だけが通知されます。
例
char *attrs[3] = {
"objectClass",
"commonName",
0
};このパラメタにNULLを指定すると、検索でヒットしたエントリの利用可能な属性がすべて通知されます。また、ポインタ配列の最後には、0を設定しておく必要があります。
- attrsonly
以下のいずれかの値を指定します。
- 属性名と属性値の両方を通知してほしい場合 : 0
- 属性名だけを通知してほしい場合 : 0以外の値
- serverctrls
サーバコントロールのアドレスを設定した、ポインタ配列のアドレスを指定します。サーバコントロールを使用しない場合は、このパラメタにNULLを指定します。
ここで指定したサーバコントロールは、InfoDirectoryサーバへの検索要求に添付されます。
- clientctrls
本ライブラリではクライアントコントロールをサポートしていないため、このパラメタにはNULLを指定します。
- timeout
サーバにおける検索のタイムアウト値を設定した、timeval構造体のアドレスを指定します。
timeval構造体のメンバには、以下の値を設定します。
- tv_sec : タイマ値(秒単位)
- tv_usec : タイマ値(マイクロ秒単位)
timeoutパラメタにNULLポインタを指定すると、LDAP_OPT_TIMELIMITで設定された制限時間を使用します。この値は、InfoDirectoryサーバでの最大検索時間として使用されます。
- sizelimit
受信可能な最大エントリ数を指定します。sizelimitパラメタに0を指定すると、LDAP_OPT_SIZELIMITで設定された最大エントリ数を使用します。
- res
result情報のアドレスを格納するための “LDAPMessage *”型のポインタ変数のアドレスを指定します。このポインタ変数は、関数を呼出す前に初期値としてNULLを設定しておく必要があります。
【復帰値】
この関数では、復帰値としてLDAPエラーコードを返します。
- 正常完了の場合 : LDAP_SUCCESS
- 異常完了の場合 : LDAP_SUCCESS 以外のLDAPエラーコード
サーバから通知されたresult情報がある場合には、resパラメタで指定されたポインタ変数にresult情報のアドレスが設定されています。
【注意事項】
- 受取った処理結果の解析
通知された検索結果の解析は、構文解析関数を使用して行います。詳細は、検索結果の解析処理を参照してください。
- 通知された領域の解放
resパラメタで通知されたresult情報と検索結果は、不要になった時点でldap_msgfree()を使用して解放しなければなりません。詳細は、動的メモリの解放を参照してください。
- 検索フィルタ
検索フィルタの文法については、検索フィルタを参照してください。
- 検索のオプション
検索がどのように行われるかは、以下に示すセションハンドルオプションによって制御されます。
- LDAP_OPT_DEREF : 別名の参照方法
- LDAP_OPT_SIZELIMIT : 受信可能な最大エントリ数
- LDAP_OPT_TIMELIMIT : 最大検索時間(秒単位)
セションハンドルオプションについては、セションハンドルオプションの設定/参照を参照してください。
- サーバコントロール
サーバコントロールの形式については、LDAPコントロールを参照してください。
- LDAPエラーコード
LDAPエラーコードの値については、LDAPエラーコードを参照してください。
- リフェラル
リフェラルの自動追跡を行う場合、サーバコントロールの指定はできません。サーバコントロールの指定を行う場合は、セションハンドルオプションの指定でリフェラルの自動追跡を行わない設定を行う必要があります。セションハンドルオプションについては、セションハンドルオプションの設定/参照を参照してください。
目次 索引 |