Oracle® Fusion Middleware Oracle Directory Server Enterprise Edition開発者ガイド 11g リリース1 (11.1.1.7.0) B72440-01 |
|
前 |
次 |
この章には、プラグインを作成するための、パブリック関数のリファレンスの2番目の部分が含まれています。前の章には、リファレンスの1番目の部分が含まれています。
前の章の各項では、プラグインAPI関数のslapi_access_allowed()
からslapi_moddn_get_newdn()
まで説明しています。
次の各項では、プラグインAPI関数のslapi_modify_internal_pb()
からslapi_wait_condvar ()
までアルファベット順に説明します。
slapi_modify_internal_pb()
パラメータ・ブロックに基づいてLDAP変更操作を実行し、ディレクトリ・エントリを変更します。
#include "slapi-plugin.h" int slapi_modify_internal_pb(Slapi_PBlock *pb);
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
この関数は、パラメータ・ブロックに基づいて内部変更操作を実行します。このパラメータ・ブロックは、slapi_modify_internal_set_pb()
をコールして初期化する必要があります。
slapi_modify_internal_set_pb()
に渡されるパラメータが、この関数によって変更されたり消費されることはありません。
slapi_modify_internal_set_pb()
内部変更操作のためのパラメータ・ブロックを準備します。
#include "slapi-plugin.h" int slapi_modify_internal_set_pb(Slapi_PBlock *pb, const char *dn, LDAPMod **mods, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
pb
内部変更操作のためのパラメータ・ブロック
dn
変更するエントリの識別名
mods
適用する変更の配列
controls
変更操作用に要求するコントロールの配列
uniqueid
DNを使用しない場合、エントリの一意識別子
plugin_identity
プラグインの初期化時にSLAPI_PLUGIN_IDENTITY
から取得したプラグイン識別子です。
operation_flags
NULL
またはSLAPI_OP_FLAG_NEVER_CHAIN
です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数は、slapi_modify_internal_pb()
で使用するパラメータ・ブロックを準備します。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
Directory Serverは、この関数に渡されたパラメータを解放しません。
slapi_modify_internal_pb()
をコールした後、パラメータ・ブロックを解放します。
slapi_modrdn_internal_pb()
パラメータ・ブロックに基づいてLDAP変更RDN操作を実行し、ディレクトリ・エントリの名前を変更します。
#include "slapi-plugin.h" int slapi_modrdn_internal_pb(Slapi_PBlock *pb);
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
この関数は、パラメータ・ブロックに基づいて内部RDN変更操作を実行します。このパラメータ・ブロックは、slapi_rename_internal_set_pb()
をコールして初期化する必要があります。
slapi_rename_internal_set_pb()
に渡されるパラメータが、この関数によって変更されたり消費されることはありません。
slapi_mods2entry()
LDAPMod
の配列からSlapi_Entry
を作成します。
#include "slapi-plugin.h" int slapi_mods2entry(Slapi_Entry **e, const char *dn, LDAPMod **attrs);
この関数は、次のパラメータを取ります。
作成されたエントリに戻るときに設定されるポインタのアドレス
エントリのLDAP DN
エントリ属性を表す、タイプLDAP_MOD_ADD
のLDAPMod
の配列
この関数は、成功した場合にはLDAP_SUCCESS
を戻し、失敗した場合にはLDAPリターン・コードを戻します。
この関数は、タイプLDAP_MODD_ADD
のLDAPMod
の配列のコピーから、Slapi_Entry
を作成します。
slapi_mods_add()
1つの属性値を持つ新しいmod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add( Slapi_Mods *smods, int modtype, const char *type, unsigned long len, const char *val);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれか
LDAP属性タイプ
属性値のバイト単位の長さ
属性値
この関数は、単一の属性値を含む新しいmod
をSlapi_Mods
に追加します。mod
はmodtype
、type
、len
およびval
の各値のコピーで構成されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_add_ldapmod()
LDAPMod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add_ldapmod(Slapi_Mods *smods, LDAPMod *mod);
LDAPMod
をSlapi_Mods
に追加します。
LDAPMod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_add_mod_values()
Slapi_Value
の配列として指定された属性値を使用して、新しいmod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add_mod_values( Slapi_Mods *smods, int modtype, const char *type, Slapi_Value **va );
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれか
LDAP属性タイプ
属性値を表す、Slapi_Value
のNULL
終了配列
この関数は、新しいmod
をSlapi_Mods
に追加します。mod
はmodtype
、type
およびva
の各値のコピーで構成されます。この関数は、Slapi_Value
の配列として渡す属性値がある場合に使用します。
slapi_mods_add_modbvps()
berval
の配列として指定された属性値を使用して、新しいmod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add_modbvps( Slapi_Mods *smods, int modtype, const char *type, struct berval **bvps );
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれか
LDAP属性タイプ
属性値を表す、berval
のNULL
終了配列
この関数は、新しいmod
をSlapi_Mods
に追加します。mod
はmodtype
、type
およびbvps
の各値のコピーで構成されます。この関数は、berval
の配列として渡す属性値がある場合に使用します。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_add_smod()
Slapi_Mod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add_smod(Slapi_Mods *smods, Slapi_Mod *smod);
Slapi_Mod
をSlapi_Mods
に追加します。
Slapi_Mod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_add_string()
文字列として指定された1つの属性値を使用して、新しいmod
をSlapi_Mods
構造体に追加します。
#include "slapi-plugin.h" void slapi_mods_add_string( Slapi_Mods *smods, int modtype, const char *type, const char *val);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
LDAP_MOD_ADD、LDAP_MOD_DELETE、LDAP_MOD_REPLACEのいずれか
LDAP属性タイプ
NULL
で終了する文字列として表される属性値
この関数は、単一の文字列の属性値を含む新しいmod
をSlapi_Mods
に追加します。mod
はmodtype
、type
およびval
の各値のコピーで構成されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_done()
Slapi_Mods
構造体の内部を解放します。
#include "slapi-plugin.h" void slapi_mods_done(Slapi_Mods *smods);
この関数はSlapi_Mods
の内部を、初期化されていない状態のまま解放します。この関数は、スタックが割り当てられたSlapi_Mods
で、作業を完了したとき、または再利用するときに使用します。
slapi_mods_dump()
Slapi_Mods
構造体の内容をサーバー・ログにダンプします。
#include "slapi-plugin.h" void slapi_mods_dump(const Slapi_Mods *smods, const char *text);
この関数では、デバッグのために、LDAP_DEBUG_ANY
ログ・レベルを使用して、Slapi_Mods
のコンテンツを$INSTANCE_PATH/logs/errors
にダンプします。
slapi_mods_free()
Slapi_Mods
構造体を解放します。
#include "slapi-plugin.h" void slapi_mods_free(Slapi_Mods **smods);
この関数は、slapi_mods_new()
によって割り当てられたSlapi_Mods
を解放します。
slapi_mods_get_first_mod()
Slapi_Mods
イテレータを初期化し、最初のLDAPMod
を戻します。
#include "slapi-plugin.h" LDAPMod *slapi_mods_get_first_mod(Slapi_Mods *smods);
この関数は、Slapi_Mods
内の最初のLDAPMod
へのポインタを戻すか、mods
がない場合にはNULL
を戻します。
slapi_mods_get_first_smod()
Slapi_Mods
イテレータを初期化し、Slapi_Mods
構造体にラップされた最初のmod
を戻します。
#include "slapi-plugin.h" Slapi_Mod *slapi_mods_get_first_smod(Slapi_Mods *smods, Slapi_Mod *smod);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
mod
を保持するために使用するSlapi_Mod
へのポインタ
この関数は、最初のmod
をラップしてSlapi_Mod
へのポインタを戻すか、mod
が存在しない場合にはNULL
を戻します。
Slapi_Mods
内のmodsに対して処理を繰り返すには、Slapi_Mods
ラッパーを使用して、この関数をslapi_mods_get_next_smod()
と一緒に使用します。
特定のSlapi_Mods
に対して処理が繰り返される可能性のあるスレッドは、常に1つのみです。
slapi_mods_get_ldapmods_byref()
Slapi_Mods
構造体のLDAPMod
の配列への参照を取得します。
#include "slapi-plugin.h" LDAPMod **slapi_mods_get_ldapmods_byref(Slapi_Mods *smods);
この関数は、Slapi_Mods
によって所有されるLDAPMod
のNULL
終了配列を戻します。
この関数を使用して、Slapi_Mods
に含まれるLDAPMod
の配列に直接アクセスします。
配列の担当は、Slapi_Mods
のままとなります。
slapi_mods_get_ldapmods_passout()
Slapi_Mods
構造体に格納されているLDAPMod
の配列を取得します。
#include "slapi-plugin.h" LDAPMod **slapi_mods_get_ldapmods_passout(Slapi_Mods *smods);
コール元によって所有される、LDAPMod
のNULL
終了配列。
Slapi_Mods
からLDAPMod
の配列を取得します。配列の担当は、コール元に転送されます。Slapi_Mods
は初期化されていない状態のままとなります。
slapi_mods_get_next_mod()
Slapi_Mods
イテレータを増分し、次のLDAPMod
を戻します。
#include "slapi-plugin.h" LDAPMod *slapi_mods_get_next_mod(Slapi_Mods *smods);
この関数は、次のLDAPMod
へのポインタを戻すか、これ以上存在しない場合にはNULL
を戻します。
Slapi_Mods
内のmods
に対して処理を繰り返すには、この関数をslapi_mods_get_first_mod()
と一緒に使用します。これにより、終了するまでLDAPMod
が毎回戻されます。
特定のSlapi_Mods
に対して処理が繰り返される可能性のあるスレッドは、常に1つのみです。
slapi_mods_get_next_smod()
Slapi_Mods
イテレータを増分し、Slapi_Mods
にラップされた次のmod
を戻します。
#include "slapi-plugin.h" Slapi_Mod *slapi_mods_get_next_smod(Slapi_Mods *smods, Slapi_Mod *smod);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
mod
を保持するために使用するSlapi_Mod
へのポインタ
この関数は、次のmod
をラップしてSlapi_Mod
へのポインタを戻すか、mods
がこれ以上存在しない場合にはNULL
を戻します。
Slapi_Mods
内のmods
に対して処理を繰り返すには、Slapi_Mods
ラッパーを使用して、この関数をslapi_mods_get_first_smod()
と一緒に使用します。
特定のSlapi_Mods
に対して処理が繰り返される可能性のあるスレッドは、常に1つのみです。
slapi_mods_get_num_mods()
Slapi_Mods
構造体の変更の数を取得します。
#include "slapi-plugin.h" int slapi_mods_get_num_mods(const Slapi_Mods *smods);
Slapi_Mods
内のmods
の数
slapi_mods_init()
Slapi_Mods
を初期化します。
#include "slapi-plugin.h" void slapi_mods_init(Slapi_Mods *smods, int initCount);
Slapi_Mods
を初期化し、空であり、かつ、指定されたmods
の数に対応する領域が最初に確保されるようにします。
どれだけの領域が必要となるかが不明な場合は、initCount
に0
を使用します。必要に応じて、Slapi_Mods
により増加されます。
slapi_mods_init_byref()
既存のLDAPMod
の配列のラッパーであるSlapi_Mods
を初期化します。
#include "slapi-plugin.h" void slapi_mods_init_byref(Slapi_Mods *smods, LDAPMod **mods);
LDAPMod
の配列への参照を含むSlapi_Mods
を初期化します。この関数は、Slapi_Mods
関数を使用してLDAPMod
配列アイテムにアクセスする場合に役立ちます。
Slapi_Mods
が破棄されても、この配列は破棄されません。参照によって初期化されたSlapi_Mods
に、新しいmods
を挿入することはできません。
slapi_mods_init_passin()
LDAPMod
の配列からSlapi_Mods
構造体を初期化します。
#include "slapi-plugin.h" void slapi_mods_init_passin(Slapi_Mods *smods, LDAPMod **mods);
この関数は、LDAPMod
の配列を渡すことによって、Slapi_Mods
を初期化します。この関数は、LDAPMod
の配列をSlapi_Mods
に変換します。
配列とその要素の担当は、Slapi_Mods
に転送されます。Slapi_Mods
が破棄されると、配列とその要素は破棄されます。
slapi_mods_insert_after()
イテレータの現在位置より後のSlapi_Mods
構造体にLDAPMod
を挿入します。
#include "slapi-plugin.h" void slapi_mods_insert_after(Slapi_Mods *smods, LDAPMod *mod);
この関数は、次のパラメータを取ります。
有効なイテレータの位置のある初期化されたSlapi_Mods
へのポインタ
挿入するLDAPMod
へのポインタ
この関数は、Slapi_Mods
におけるSlapi_Mods
イテレータの現在の位置の直後に、LDAPMod
を挿入します。イテレータの位置は変更されません。
LDAPMod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_insert_at()
Slapi_Mods
の任意の場所にLDAPMod
を挿入します。
#include "slapi-plugin.h" void slapi_mods_insert_at(Slapi_Mods *smods, LDAPMod *mod, int pos);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
挿入するLDAPMod
へのポインタ
新しいmod
を挿入する位置。最小値は0
です。最大値はmods
の現在の数です。
この関数は、Slapi_Mods
の指定された位置にLDAPMod
を挿入します。位置0
(ゼロ)は最初のmod
を参照します。位置がmods
の現在の数と同じ場合は、追加が発生します。指定された位置以上のmods
は1つずつ上へ移動し、指定された位置は新しく挿入されたmod
を参照します。
LDAPMod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_insert_before()
イテレータの現在位置より前のSlapi_Mods
構造体にLDAPMod
を挿入します。
#include "slapi-plugin.h" void slapi_mods_insert_before(Slapi_Mods *smods, LDAPMod *mod);
この関数は、次のパラメータを取ります。
有効なイテレータの位置のある初期化されたSlapi_Mods
へのポインタ
挿入するLDAPMod
へのポインタ
Slapi_Mods
におけるSlapi_Mods
イテレータの現在の位置の直前に、LDAPMod
を挿入します。イテレータの位置は変更されません。
LDAPMod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_insert_smod_at()
Slapi_Mods
の任意の場所にSlapi_Mod
を挿入します。
#include "slapi-plugin.h" void slapi_mods_insert_smod_at(Slapi_Mods *smods, Slapi_Mod *smod, int pos);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mods
へのポインタ
挿入するSlapi_Mod
へのポインタ。
Slapi_Mod
を挿入する位置。最小値は0
です。最大値はmods
の現在の数です。
この関数は、Slapi_Mods
の指定された位置にSlapi_Mod
を挿入します。位置0
(ゼロ)は最初のmod
を参照します。位置がmods
の現在の数と同じ場合は、追加が発生します。指定された位置以上のmods
は1つずつ上へ移動し、指定された位置は新しく挿入されたmod
を参照します。
Slapi_Mod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_insert_smod_before()
イテレータの現在位置より前のSlapi_Mods
構造体にSlapi_Mod
を挿入します。
#include "slapi-plugin.h" void slapi_mods_insert_smod_before(Slapi_Mods *smods, Slapi_Mod *smod);
この関数は、次のパラメータを取ります。
有効なイテレータの位置のある初期化されたSlapi_Mods
へのポインタ
挿入するSlapi_Mod
へのポインタ。
Slapi_Mods
におけるSlapi_Mods
イテレータの現在の位置の直前に、Slapi_Mod
を挿入します。イテレータの位置は変更されません。
Slapi_Mod
の担当は、Slapi_Mods
に転送されます。
この関数は、slapi_mods_init_byref()
で初期化されたSlapi_Mods
では使用しないでください。
slapi_mods_iterator_backone()
Slapi_Mods
イテレータの現在位置を減分します。
#include "slapi-plugin.h" void slapi_mods_iterator_backone(Slapi_Mods *smods);
この関数は、イテレータを1つ前の位置に戻します。
slapi_mods_new()
初期化されていない新しいSlapi_Mods
構造体を割り当てます。
#include "slapi-plugin.h" Slapi_Mods* slapi_mods_new( void );
この関数にパラメータはありません。
割り当てられた、初期化されていないSlapi_Mods
へのポインタ。
この関数は、新しい初期化済Slapi_Mods
を割り当てます。
この関数は、スタックではなくヒープから割り当てられたSlapi_Mods
が必要な場合に使用します。
slapi_mods_remove()
Slapi_Mods
イテレータの現在位置でmod
を削除します。
#include "slapi-plugin.h" void slapi_mods_remove(Slapi_Mods *smods);
この関数は、現在のイテレータの位置にあるmod
を削除します。
slapi_mods_remove_at()
指定されたSlapi_Mods
イテレータの位置でmod
を削除します。
#include "slapi-plugin.h" void slapi_mods_remove_at(Slapi_Mods *smods, int pos);
この関数は、Slapi_Mods
内の変更に対して処理を繰り返すときにカウントすることによって取得した、posイテレータの位置にあるmod
を削除します。
slapi_mr_filter_index()
一致ルールのフィルタ索引関数をコールします。
#include "slapi-plugin.h" int slapi_mr_filter_index(Slapi_Filter* f, Slapi_PBlock* pb);
この関数は、次のパラメータを取ります。
f
一致ルールOIDを含むフィルタ
pb
フィルタ索引関数に渡すパラメータ・ブロック
この関数を使用すると、プラグインで一致ルールのフィルタ索引関数をコールできます。
この関数は、正常終了した場合は0
を戻します。フィルタ内のルールに使用できるフィルタ索引関数がない場合は、LDAP_UNAVAILABLE_CRITICAL_EXTENSION
を戻します。パラメータ・ブロック引数の設定について重大な問題がある場合は、-1
を戻します。
slapi_mr_indexer_create()
一致ルールのインデクサ・ファクトリ関数へのポインタをパラメータ・ブロックに設定します。
#include "slapi-plugin.h" int slapi_mr_indexer_create(Slapi_PBlock * pb);
この関数は、次のパラメータを取ります。
pb
SLAPI_PLUGIN_MR_OID
に影響を及ぼした一致ルールのオブジェクト識別子を含むパラメータ・ブロック
この関数を使用すると、プラグインで一致ルールのインデクサ・ファクトリ関数をコールできます。成功した場合、この関数により、pb
のSLAPI_PLUGIN_MR_INDEXER_CREATE_FN
が、インデクサ・ファクトリ関数を指すように設定されます。
この関数は、正常終了した場合は0
を戻します。一致ルールに使用できるインデクサ・ファクトリ関数がない場合は、LDAP_UNAVAILABLE_CRITICAL_EXTENSION
を戻します。パラメータ・ブロック引数の取得または設定について重大な問題がある場合は、-1
を戻します。
slapi_new_condvar()
条件変数を割り当てます。
#include "slapi-plugin.h" Slapi_CondVar *slapi_new_condvar( Slapi_Mutex *mutex );
この関数は、次のパラメータを取ります。
ブロックに使用されるmutex
この関数を使用すると、待機と通知のメカニズムを使用したスレッド同期を実行できます。
成功した場合、この関数は新しい条件変数へのポインタを戻します。それ以外の場合はNULL
を戻します。
条件変数を作成するにはこの関数をコールし、条件変数を解放するにはslapi_destroy_condvar()
をコールします。
slapi_new_mutex()
mutexを割り当てます。
#include "slapi-plugin.h" Slapi_Mutex *slapi_new_mutex( void );
成功した場合、この関数は新しいmutexへのポインタを戻します。それ以外の場合はNULL
を戻します。
この関数を使用すると、スレッド同期を実行できます。1つのスレッドがslapi_lock_mutex()
を使用してmutexをロックすると、ロックの取得を試行する他のスレッドは、mutexを保持するスレッドによってslapi_unlock_mutex()
がコールされるまでブロックされます。
mutexを解放するには、slapi_destroy_mutex()
をコールします。
slapi_notify_condvar()
条件変数における変更を通知します。
#include "slapi-plugin.h" int slapi_notify_condvar( Slapi_CondVar *cvar, int notify_all );
この関数は、次のパラメータを取ります。
変更された条件変数。
NULL
を指定すると、通知を待機している次のスレッドにのみ通知されます。それ以外の場合、すべてのスレッドに通知されます。
この関数を使用すると、待機と通知のメカニズムを使用したスレッド同期を実行できます。
成功した場合、この関数は1
を戻します。それ以外の場合はNULL
を戻します。
条件変数への変更を待機するには、slapi_wait_condvar()
をコールします。
slapi_op_abandoned()
クライアントが現在の操作(パラメータ・ブロックに渡される操作)を中止したかどうかを判別します。
#include "slapi-plugin.h" int slapi_op_abandoned( Slapi_PBlock *pb );
この関数は、次のパラメータを取ります。
現在の操作から渡されるパラメータ・ブロック
この関数を使用すると、パラメータ内のPBlockに関連付けられた操作が中止されたかどうかを確認できます。この関数は、長時間実行されるプラグインからの操作ステータスを定期的に確認する場合に役立ちます。
このファンクションは、次の値のいずれかを戻します。
操作が中止された場合には、1
操作が中止されなかった場合には、0
slapi_op_get_type()
Slapi_Operation
のタイプを取得します。
#include "slapi-plugin.h" unsigned long slapi_op_get_type(Slapi_Operation * op);
この関数は、次のパラメータを取ります。
タイプの取得元となる操作
この関数は、操作のタイプを戻します。slapi_pblock_get()
をSlapi_Operation
パラメータとともに使用すると、pblock構造体からSlapi_Operation
構造体を抽出できます。次に例を示します。
slapi_pblock_get (pb, SLAPI_OPERATION, &op);
この関数は、次の操作タイプのいずれかを戻します。
SLAPI_OPERATION_BIND
SLAPI_OPERATION_UNBIND
SLAPI_OPERATION_SEARCH
SLAPI_OPERATION_MODIFY
SLAPI_OPERATION_ADD
SLAPI_OPERATION_DELETE
SLAPI_OPERATION_MODDN
SLAPI_OPERATION_MODRDN
SLAPI_OPERATION_COMPARE
SLAPI_OPERATION_ABANDON
SLAPI_OPERATION_EXTENDED
slapi_pblock_destroy()
指定されたパラメータ・ブロックをメモリーから解放します。
#include "slapi-plugin.h" void slapi_pblock_destroy( Slapi_PBlock *pb );
この関数は、次のパラメータを取ります。
解放するパラメータ・ブロック
解放するパラメータ・ブロックは、slapi_pblock_new()
を使用して作成されている必要があります。スタックに割り当てられたパラメータ・ブロック、Slapi_PBlock pb;
または別のメモリー・アロケータとともにこの関数を使用することはサポートされておらず、使用した場合、メモリー・エラーやメモリー・リークが発生する可能性があります。次に例を示します。
Slapi_PBlock *pb = malloc(sizeof(Slapi_PBlock));
この関数をコールした後、解放されたメモリーが関数コンテキストで再利用されないように、次のようにパラメータ・ブロックのポインタをNULL
に設定する必要があります。
slapi_pblock_destroy(pb); pb = NULL;
ポインタをこのように再利用すると、なんらかの困難な方法を使用してメモリー・リークや他の異常な動作を検出するよりも、セグメンテーション・フォルトの識別が簡単になります。
この関数は、NULL
ポインタを指定してコールすると安全です。次に例を示します。
Slapi_PBlock *pb = NULL; slapi_pblock_destroy(pb);
これにより、slapi_pblock_destroy()
をコールする前にNULL
を確認する必要がなくなります。
slapi_pblock_get()
パラメータ・ブロックから、名前/値ペアの値を取得します。
#include "slapi-plugin.h" int slapi_pblock_get( Slapi_PBlock *pb, int arg, void *value );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
取得する名前/値ペアのID。指定できるIDのリストは、第14章「データ型と構造体のリファレンス」を参照してください。
パラメータ・ブロックから取得される値へのポインタ。
このファンクションは、次の値のいずれかを戻します。
正常終了した場合は0
エラーが発生した場合には、-1
(無効なIDが指定された場合など)
void *value
引数は、常に、取得する値のタイプへのポインタである必要があります。
int connid = 0; ... retval = slapi_pblock_get(pb, SLAPI_CONN_ID, &connid);
SLAPI_CONN_ID
は整数値であるため、値を取得するには、整数へのポインタまたはその整数のアドレスを渡します。同様に、char * value
(文字列)については、その値へのポインタまたはその値のアドレスを渡します。次に例を示します。
char *binddn = NULL; ... retval = slapi_pblock_get(pb, SLAPI_CONN_DN, &binddn);
一部のプラットフォームで特定のコンパイラを使用する場合には、値を(void *)
にキャストすることが必要となることがあります。
slapi_pblock_get()
のコールが失敗した場合に、初期化されていないメモリーからの読取りを回避するために、slapi_pblock_get()
をコールする前に、この値を0
またはNULL
にすることをお薦めします。
ほとんどの場合、コール元で戻り値を解放しないようにする必要があります。値は、通常、内部的に解放されるか、またはslapi_pblock_destroy()
のコールを介して解放されます。例外は、コール元によって、slapi_pblock_set()
を介して値が明示的に設定される場合です。この場合は、コール元がメモリー管理を担当します。値が解放される場合、解放後、値NULL
を使用してslapi_pblock_set()
をコールすることをお薦めします。次に例を示します。
char *someparam = NULL; ... someparam = slapi_ch_strdup(somestring); slapi_pblock_set(pb, SOME_PARAM, someparam); someparam = NULL; /* avoid dangling reference */ ... slapi_pblock_get(pb, SOME_PARAM, &someparam); slapi_pblock_set(pb, SOME_PARAM, NULL); /* Make sure no one else references this. */ slapi_ch_free_string(&someparam); ...
一部の内部関数では渡された値が変更される場合があるため、潜在的に不確定なポインタに依存するのではなく、slapi_pblock_get()
を使用して値を再度取得することをお薦めします。このことは前述の例に示されており、この例では、someparam
をパラメータ・ブロックで設定した後にNULL
に設定しています。
slapi_pblock_new()
新しいパラメータ・ブロックを作成します。
#include "slapi-plugin.h" Slapi_PBlock *slapi_pblock_new();
新しいパラメータ・ブロックへのポインタ
slapi_pblock_new()
によって割り当てられたパラメータ・ブロックのポインタは、常にslapi_pblock_destroy()
によって解放される必要があります。free()
などのメモリーを解放する他の関数はサポートされておらず、使用するとクラッシュやメモリー・リークが発生する可能性があります。
slapi_pblock_set()
パラメータ・ブロックに名前/値ペアの値を設定します。
#include "slapi-plugin.h" int slapi_pblock_set( Slapi_PBlock *pb, int arg, void *value );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
設定する名前/値ペアのID。指定できるIDのリストは、第14章「データ型と構造体のリファレンス」を参照してください。
パラメータ・ブロックに設定する値へのポインタ。
この関数は、成功した場合には0を戻し、エラーが発生した場合(無効なIDが指定された場合など)には-1を戻します。
渡される値は、整数の引数の場合も、常にポインタである必要があります。たとえば、ManageDSAIT
コントロールを使用して検索を実行する場合は、次のようになります。
int managedsait = 1; ... slapi_pblock_set(pb, SLAPI_MANAGEDSAIT, &managedsait);
次の例のようなコールでは、クラッシュが発生します。
slapi_pblock_set(pb, SLAPI_MANAGEDSAIT, 1);
ただし、char * strings
、char **arrays
、Slapi_Backend
*
などのすでにポインタである値の場合、値を直接渡すことができます。次に例を示します。
char *target_dn = slapi_ch_strdup(some_dn); slapi_pblock_set(pb, SLAPI_TARGET_DN, target_dn);
または、
slapi_pblock_set(pb, SLAPI_TARGET_DN, NULL);
使用するコンパイラによっては、値の引数を(void *)
にキャストする必要があります。
コール元が渡されたメモリーを割り当てる場合、コール元がこのメモリーの解放を担当します。また、潜在的に不確定なポインタに依存するのではなく、slapi_pblock_get()
を使用して、解放する値を取得することもお薦めします。詳細は、slapi_pblock_get()
の例を参照してください。
プラグインを登録するパラメータを設定する場合、プラグイン・パラメータの多くはタイプに依存するため、通常、最初にプラグイン・タイプを設定する必要があります。たとえば、プラグインに拡張操作OIDのリストを設定する前に、SLAPI_PLUGIN_TYPE
を拡張操作に設定します。
slapi_pw_find_sv()
指定されたパスワードが、属性のハッシュ値のいずれかと一致するかどうかを判別します。たとえば、この関数をコールして、指定されたパスワードがuserpassword
属性の値と一致するかどうかを判別できます。
#include "slapi-plugin.h" int slapi_pw_find_sv( Slapi_Value **vals, const Slapi_Value *v );
この関数は、次のパラメータを取ります。
userpassword
などのパスワードを格納する属性の値を保持するSlapi_Value
構造体ポインタの配列へのポインタ
確認するパスワードを含むSlapi_Value
構造体へのポインタ
たとえば、パラメータ・ブロック内のSLAPI_BIND_CREDENTIALSパラメータからこの値を取得し、slapi_value_init_berval()
を使用してSlapi_Value
を作成できます。
この関数は、v
によって指定されたパスワードがvals
で見つかった場合には0
を戻し、パスワードv
がvals
で見つからなかった場合にはゼロ以外の値を戻します。
確認するエントリに含まれるuserpassword
属性のパスワード値の正確な数を保持するようにサイズ設定されたvals
に、Slapi_Value
構造体の配列を割り当てたり解放する必要があります。結果として得られる配列が、NULL
で終了することはありません。より単純なメモリー割当てモデルにおいては、かわりにslapi_pw_find_valueset()
を使用します。
userpassword
属性内のエントリのパスワードがサーバーに格納される場合、パスワードは異なるスキームを使用してハッシュされます。
指定されたパスワードがuserpassword
属性のいずれかの値であるかどうかを判別するには、この関数を使用します。この関数は、パスワードを格納するのに使用されたパスワード・スキームを判別し、適切な比較関数を使用して、指定された値をuserpassword
属性のハッシュ値と比較します。
slapi_pw_find_valueset()
指定されたパスワードが、属性のハッシュ値のいずれかと一致するかどうかを判別します。たとえば、この関数をコールして、指定されたパスワードがuserpassword
属性の値と一致するかどうかを判別できます。
#include "slapi-plugin.h" int slapi_pw_find_valueset(Slapi_Valueset *valset, const Slapi_Value *v);
この関数は、次のパラメータを取ります。
userpassword
などのパスワードを格納する属性の値を含むSlapi_ValueSet
構造体へのポインタ
確認するパスワードを含むSlapi_Value
構造体へのポインタ
たとえば、パラメータ・ブロック内のSLAPI_BIND_CREDENTIALSパラメータからこの値を取得し、slapi_value_init_berval()
を使用してSlapi_Value
を作成できます。
この関数は、v
によって指定されたパスワードがvalset
で見つかった場合には0
を戻し、パスワードv
がvalset
で見つからなかった場合にはゼロ以外の値を戻します。
userpassword
属性内のエントリのパスワードがサーバーに格納される場合、パスワードは異なるスキームを使用してハッシュされます。
指定されたパスワードがuserpassword
属性のいずれかの値であるかどうかを判別するには、この関数を使用します。この関数は、パスワードを格納するのに使用されたパスワード・スキームを判別し、適切な比較関数を使用して、指定された値をuserpassword
属性のハッシュ値と比較します。
slapi_rdn_add()
新しいRDNを既存のSlapi_RDN
構造体に追加します。
#include "slapi-plugin.h" int slapi_rdn_add(Slapi_RDN *rdn, const char *type, const char *value);
この関数は、次のパラメータを取ります。
ターゲットのSlapi_RDN
構造体。
追加するRDNのタイプ(cn
、o
、ou
など)。このパラメータをNULL
にすることはできません。
追加するRDNの値。このパラメータをNULL
にすることはできません。
通常、この関数は1を戻します。
この関数は、新しいタイプ/値ペアを既存のRDNに追加し、rdn
が空の場合には新しいRDNとしてタイプ/値ペアを設定します。この関数ではFLAG_RDNS
フラグをリセットし、これにより、Slapi_RDN
構造体内のRDN配列が、新しいRDNと比較して最新の状態でなくなったことが示されます。
slapi_rdn_compare()
2つのRDNを比較します。
#include "slapi-plugin.h" int slapi_rdn_compare(Slapi_RDN *rdn1, Slapi_RDN *rdn2);
この関数は、次のパラメータを取ります。
比較する最初のRDN
比較する2番目のRDN
この関数は、rdn1
およびrdn2
が同じRDNコンポーネントを含む場合には0
を戻し、含まない場合には-1
を戻します。
この関数は、rdn1
とrdn2
を比較します。rdn1
とrdn2
が同じRDNであるとみなされる場合、これらのコンポーネントは必ずしも同じ順序である必要はありません。
slapi_rdn_contains()
Slapi_RDN
構造体に、指定されたタイプ/値ペアと一致するRDNが保持されているかどうかを確認します。
#include "slapi-plugin.h" int slapi_rdn_contains(Slapi_RDN *rdn, const char *type, const char *value,size_t length);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
検索するRDNのタイプ(cn
、o
、ou
など)。
検索するRDNの値。
RDNの検索時に文字列操作に考慮する必要があるvalue
の長さを指定します。
この関数は、rdn
にtype
、value
およびlength
と一致するRDNが含まれる場合には1
を戻し、必要なタイプ/値と一致するRDNが含まれない場合には0
を戻します。
この関数は、パラメータで指定されたtype
とvalue
の両方と一致する、Slapi_RDN
構造体rdn
内のRDNを検索します。この関数はslapi_rdn_get_index()
をコールして、戻り値が-1
以外の値であることを検証します。
slapi_rdn_contains_attr()
Slapi_RDN
構造体に、指定されたタイプと一致するRDNが含まれるかどうかを確認して、trueの場合には対応する属性値を取得します。
#include "slapi-plugin.h" int slapi_rdn_contains_attr(Slapi_RDN *rdn, const char *type, char **value);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
検索するRDNのタイプ(cn
、o
、ou
など)。
タイプがパラメータtype
のコンテンツと一致する最初のRDNの値を保持するリポジトリ。関数の戻り値でこのパラメータがNULL
の場合、必要なタイプを含むRDNはrdn
内に存在しません。
この関数は、指定されたタイプと一致するRDNがrdn
に含まれる場合には1を戻し、一致しない場合には0を戻します。
この関数は、パラメータで指定されたタイプと一致する、Slapi_RDN
構造体rdn
内のRDNを検索します。この関数はslapi_rdn_get_index_attr()
をコールして、戻り値が-1
以外の値であることを検証します。成功した場合、対応する属性値も戻します。
slapi_rdn_done()
Slapi_RDN
構造体のインスタンスを消去します。
#include "slapi-plugin.h" void slapi_rdn_done(Slapi_RDN *rdn);
この関数は、次のパラメータを取ります。
消去する構造体へのポインタ
この関数は、Slapi_RDN
構造体のコンテンツを消去します。これにより、RDN値と分割されたRDNの配列の両方が解放されます。次に、これらのポインタはNULL
に設定されます。
slapi_rdn_free()
Slapi_RDN
構造体を解放します。
#include "slapi-plugin.h" void slapi_rdn_free(Slapi_RDN **rdn);
この関数は、Slapi_RDN
構造体のコンテンツと、rdn
のコンテンツが指す構造体自体の両方を解放します。
slapi_rdn_get_first()
Slapi_RDN
構造体に格納されている最初のRDNに対応するタイプ/値ペアを取得します。
#include "slapi-plugin.h" int slapi_rdn_get_first(Slapi_RDN *rdn, char **type, char **value);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
最初のRDNのタイプを保持するリポジトリ。関数の戻り値でこのパラメータがNULL
の場合、rdn
は空です。
最初のRDNのタイプを保持するリポジトリ。関数の戻り値でこのパラメータがNULL
の場合、rdn
は空です。
この関数は、rdn
が空の場合には-1
を戻し、操作が成功した場合には1
を戻します。
この関数は、rdn
に格納された最初のRDNに対応するタイプ/値ペアを取得します。たとえば、RDNがcn=Joey
である場合、関数はtype
戻りパラメータにcn
を配置し、value
にJoey
を配置します。
slapi_rdn_get_index()
指定されたタイプおよび値を含むRDNの後に位置するRDNの索引を取得します。
#include "slapi-plugin.h" int slapi_rdn_get_index(Slapi_RDN *rdn, const char *type, const char *value, size_t length);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
検索するRDNのタイプ(cn
、o
、ou
など)。
検索するRDNの値。
RDNの検索時に文字列比較に考慮する必要があるvalue
の長さを指定します。一致するRDN値は、指定された長さ以内である必要があります。
この関数は、パラメータtypeおよびvalueのコンテンツと一致するRDNの後に位置するRDNの索引を戻します。rdn
に格納されたRDNが指定された値/タイプペアと一致しない場合、-1
を戻します。
この関数は、パラメータで指定されたtype
とvalue
の両方と一致する、Slapi_RDN
構造体rdn
内のRDNを検索します。成功した場合、一致するRDNの位置を戻します。
slapi_rdn_get_index_attr()
指定されたタイプと一致する、Slapi_RDN
構造体内の最初のRDNの位置および属性値を取得します。
#include "slapi-plugin.h" int slapi_rdn_get_index_attr(Slapi_RDN *rdn, const char *type, char **value);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
検索するRDNのタイプ(cn
、o
、ou
など)。
タイプがパラメータtype
のコンテンツと一致する最初のRDNの値を保持するリポジトリ。関数の戻り値でこのパラメータがNULL
の場合、RDNはrdn
内に存在しません。
この関数は、コンテンツ・タイプと一致するRDNがない場合には-1
を戻し、typeのコンテンツと一致する場合にはRDN内の最初のRDNの実際の位置を戻します。
この関数は、パラメータで指定されたタイプと一致する、Slapi_RDN
構造体rdn
内のRDNを検索します。成功した場合、一致するRDNの位置および対応する属性値を戻します。
slapi_rdn_get_next()
Slapi_RDN
構造体に格納されたRDN内から、特定のRDNのタイプ/値ペアを取得します。
#include "slapi-plugin.h" int slapi_rdn_get_next(Slapi_RDN *rdn, int index, char **type, char **value);
この関数は、次のパラメータを取ります。
RDN値を含むSlapi_RDN
構造体。
現在必要なRDNに先行するRDNの位置を示します。
次(index
+1)のRDNのタイプ(cn
、o
、ou
など)を保持するリポジトリ。関数の戻り値でこのパラメータがNULL
の場合、RDNは存在しません。
次(index
+1)のRDNの値を保持するリポジトリ。このパラメータがNULL
の場合、RDNは存在しません。
この関数は、索引の位置にRDNがない場合には-1
を戻し、操作が成功した場合には取得したRDNの実際の位置を戻します。
この関数は、rdn
内の次(index
+1)の位置に格納されたRDNに対応するタイプ/値ペアを取得します。値の配列内にある要素の索引は、常に、配列における実際の位置の下にある1つの単位です。
slapi_rdn_get_num_components()
Slapi_RDN
構造体に存在する、RDNのタイプ/値ペアの数を取得します。
#include "slapi-plugin.h" int slapi_rdn_get_num_components(Slapi_RDN *rdn);
この関数は、rdn
に存在する、RDNのタイプ/値ペアの数を戻します。
slapi_rdn_get_rdn()
Slapi_RDN
構造体からRDNを取得します。
#include "slapi-plugin.h" const char *slapi_rdn_get_rdn(const Slapi_RDN *rdn);
この関数はRDN値を戻します。
slapi_rdn_init()
Slapi_RDN
構造体をNULL
値で初期化します。
#include "slapi-plugin.h" void slapi_rdn_init(Slapi_RDN *rdn);
この関数は、NULL
値を使用してSlapi_RDN
構造体を初期化します(RDN値と分割されたRDNの配列の両方がNULL
に設定されます)。
slapi_rdn_init_dn()
指定したDNから取得されるRDN値を使用して、Slapi_RDN
構造体を初期化します。
#include "slapi-plugin.h" void slapi_rdn_init_dn(Slapi_RDN *rdn,const char *dn);
この関数は、dn
パラメータで渡されたDNから取得されるRDN値を使用して、指定されたSlapi_RDN
構造体を初期化します。
slapi_rdn_init_rdn()
RDN値を使用して、Slapi_RDN
構造体を初期化します。
#include "slapi-plugin.h" void slapi_rdn_init_rdn(Slapi_RDN *rdn,const Slapi_RDN *fromrdn);
この関数は、fromrdn
のRDN値を使用して、指定されたSlapi_RDN
構造体を初期化します。
slapi_rdn_init_sdn()
指定されたSlapi_DN
構造体に含まれたDNから取得されるRDN値を使用して、Slapi_RDN
構造体を初期化します。
#include "slapi-plugin.h" void slapi_rdn_init_sdn(Slapi_RDN *rdn,const Slapi_DN *sdn);
この関数は、次のパラメータを取ります。
slapi_rdn_isempty()
RDN値がSlapi_RDN
構造体に格納されているかどうかを確認します。
#include "slapi-plugin.h" int slapi_rdn_isempty(const Slapi_RDN *rdn);
この関数は、RDN値が存在しない場合には1
を戻し、rdn
に値が含まれる場合には0
を戻します。
slapi_rdn_new()
新しいSlapi_RDN
構造体を割り当てて、値をNULL
に初期化します。
#include "slapi-plugin.h" Slapi_RDN * slapi_rdn_new();
この関数にパラメータはありません。
この関数は、新しく割り当てられた空のままのSlapi_RDN
構造体へのポインタを戻します。
この関数は、必要なメモリーを割り当てて、RDN値と分割されたRDNの配列の両方をNULL
に初期化することによって、新しいSlapi_RDN
構造体を作成します。
slapi_rdn_new_dn()
新しいSlapi_RDN
構造体を作成して、指定されたDNから取得されるRDN値を設定します。
#include "slapi-plugin.h" Slapi_RDN *slapi_rdn_new_dn(const char *dn);
この関数は、dn
のDN値から取得されるRDNを使用して初期化された、新しいSlapi_RDN
構造体へのポインタを戻します。
この関数は、新しいSlapi_RDN
構造体を作成し、dn
パラメータで渡されたDNから取得される値を使用してそのRDNを初期化します。
メモリーは、関数自体によって割り当てられます。
slapi_rdn_new_rdn()
新しいSlapi_RDN
構造体を作成して、RDN値を設定します。
#include "slapi-plugin.h" Slapi_RDN * slapi_rdn_new_rdn(const Slapi_RDN *fromrdn);
この関数は、fromrdn
のコンテンツに設定されたRDNを含む、新しいSlapi_RDN
構造体へのポインタを戻します。
この関数は、新しいSlapi_RDN
構造体を作成し、fromrdn
の値を使用してそのRDNを初期化します。
メモリーは、関数自体によって割り当てられます。
slapi_rdn_new_sdn()
新しいSlapi_RDN
構造体を作成して、指定されたSlapi_RDN
構造体に含まれたDNから取得されるRDN値を設定します。
#include "slapi-plugin.h" vSlapi_RDN *slapi_rdn_new_sdn(const Slapi_DN *sdn);
この関数は、dn
のDN値から取得されるRDNを使用して初期化された、新しいSlapi_RDN
構造体へのポインタを戻します。
メモリーは、関数自体によって割り当てられます。
slapi_rdn_remove()
Slapi_RDN
構造体から、RDNのタイプ/値ペアを削除します。
#include "slapi-plugin.h" int slapi_rdn_remove(Slapi_RDN *rdn, const char *type, const char *value, size_t length);
この関数は、次のパラメータを取ります。
ターゲットのSlapi_RDN
構造体。
検索するRDNのタイプ(cn
、o
、ou
など)。
検索するRDNの値。
RDNの検索時に文字列比較に考慮する必要があるvalue
の長さを指定します。
この関数は、RDNがrdn
から削除された場合には1
を戻し、RDNが削除されなかった場合には0
を戻します。
この関数は、指定された基準(type
、value
およびlength
)と一致するRDNをrdn
から削除します。
slapi_rdn_remove_attr()
Slapi_RDN
構造体から、RDNのタイプ/値ペアを削除します。
#include "slapi-plugin.h" int slapi_rdn_remove_attr(Slapi_RDN *rdn, const char *type);
この関数は、RDNがrdn
から削除された場合には1
を戻し、RDNが削除されなかった場合には0
を戻します。
この関数は、指定されたタイプと一致する最初のRDNをrdn
から削除します。
slapi_rdn_remove_index()
Slapi_RDN
構造体から、RDNのタイプ/値ペアを削除します。
#include "slapi-plugin.h" int slapi_rdn_remove_index(Slapi_RDN *rdn, int atindex);
この関数は、RDNがrdn
から削除された場合には1
を戻し、rdn
が空であるか、または索引が存在するRDNの数を上回ることが原因でRDNが削除されなかった場合には0
を戻します。
この関数は、atindex
索引を使用して、(atindex
+1の位置に配置された)RDNをrdn
から削除します。
slapi_rdn_set_dn()
Slapi_RDN
構造体にRDN値を設定します。
#include "slapi-plugin.h" void slapi_rdn_set_dn(Slapi_RDN *rdn,const char *dn);
この関数は、Slapi_RDN
構造体にRDN値を設定します。構造体はメモリーから解放され、新しいRDNを設定する前に、以前のコンテンツすべてから解放されます。新しいRDNは、dn
パラメータに存在するDN値から取得されます。
slapi_rdn_set_rdn()
Slapi_RDN
構造体にRDNを設定します。
#include "slapi-plugin.h" void slapi_rdn_set_rdn(Slapi_RDN *rdn,const Slapi_RDN *fromrdn);
この関数は、Slapi_RDN
構造体にRDN値を設定します。構造体はメモリーから解放され、新しいRDNを設定する前に、以前のコンテンツすべてから解放されます。
slapi_rdn_set_sdn()
Slapi_RDN
構造体にRDN値を設定します。
#include "slapi-plugin.h" void slapi_rdn_set_sdn(Slapi_RDN *rdn,const Slapi_DN *sdn);
この関数は、Slapi_RDN
構造体にRDN値を設定します。構造体はメモリーから解放され、新しいRDNを設定する前に、以前のコンテンツすべてから解放されます。新しいRDNは、Slapi_DN
構造体の内部に存在するDN値から取得されます。
slapi_rdn_syntax_check()
この関数は、RDNの値が属性構文ルールに準拠しているかどうかを判別します。
#include "slapi-plugin.h" int slapi_rdn_syntax_check( Slapi_PBlock *pb, const char *rdn );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
準拠を確認する値
次のいずれかの値を戻します。
rdnが準拠しているか、構文チェックがオフになっている場合には、0
rdnが属性構文ルールに準拠していない場合には、1
pb
引数にはNULL
を指定できます。これは、SLAPI_IS_REPLICATED_OPERATION
フラグを取得する場合にのみ使用します。このフラグが存在する場合は、構文チェックが行われません。
slapi_register_object_extension()
オブジェクトの拡張を登録します。
#include "slapi-plugin.h" int slapi_register_object_extension( const char *pluginname, const char *objectname, slapi_extension_constructor_fnptr constructor, slapi_extension_destructor_fnptr destructor, int *objecttype, int *extensionhandle);
この関数は、次のパラメータを取ります。
pluginname
プラグインを識別する文字列。
objectname
プライベート・データを接続に追加するSLAPI_EXT_CONNECTION
やプライベート・データを操作に追加するSLAPI_EXT_OPERATION
などの、拡張するオブジェクトの名前。
constructor
オブジェクトの拡張にメモリーを割り当てて拡張を作成するコンストラクタ。
destructor
オブジェクトの拡張に使用されたメモリーを解放するデストラクタ。
objecttype
サーバーによって設定され、拡張を取得するために使用されます。
extensionhandle
サーバーによって設定され、拡張を取得するために使用されます。
この関数は、接続や操作などのオブジェクトに対する拡張を登録します。このメカニズムを使用すると、プラグインに、パラメータ・ブロックを使用して実行できない操作などの、操作前プラグインから操作後プラグインに渡される操作とともにプライベート・データを格納できます。
プラグイン初期化関数の一部として、オブジェクトの拡張を登録します。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_register_plugin()
別のプラグインを登録します。
#include "slapi-plugin.h" int slapi_register_plugin( const char *plugintype, int enabled, const char *initsymbol, slapi_plugin_init_fnptr initfunc, const char *name, char **argv, void *group_identity);
この関数は、次のパラメータを取ります。
plugintype
「プラグイン登録」で説明されている、プラグイン・タイプを識別する文字列
enabled
登録時にプラグインを有効にするには1
、それ以外の場合には0
initsymbol
"my_init_fcn"
などの、プラグイン初期化関数initfunc
の文字列表現
initfunc
プラグイン初期化関数へのポインタ
name
プラグインの一般名
argv
プラグインに渡される引数
group_identity
通常、この関数をコールするプラグインのSLAPI_PLUGIN_IDENTITY
から取得される、プラグイン・グループ識別子
この関数は、別のプラグインを登録します。プラグイン初期化関数の一部として、プラグインを登録します。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_register_role_get_scope()
ロールの有効範囲を決定するコールバックを登録します。
#include "slapi-plugin.h" void slapi_register_role_get_scope( roles_get_scope_fn_type get_scope_fn);
この関数は、次のパラメータを取ります。
ロールの範囲を決定するコールバック
この関数は、ロールの範囲を評価するコールバックを登録します。プラグイン初期化関数の一部として、コールバックを登録します。
slapi_register_supported_control()
指定されたコントロールをサーバーに登録します。この関数により、コントロールがオブジェクト識別子(OID)に関連付けられます。サーバーでは、このOIDが指定されたリクエストが受信すると、この情報を使用して、サーバーまたはそのプラグインでコントロールがサポートされているかどうかを判断します。
#include "slapi-plugin.h" void slapi_register_supported_control( char const *controloid, unsigned long controlops );
この関数は、次のパラメータを取ります。
登録するコントロールのOID
コントロールを適用可能な操作
controlops
引数には、次のうち1つ以上の値を指定できます。
ID | 説明 |
---|---|
SLAPI_OPERATION_BIND |
指定されたコントロールは、LDAPバインド操作に適用される。 |
SLAPI_OPERATION_UNBIND |
指定されたコントロールは、LDAPアンバインド操作に適用される。 |
SLAPI_OPERATION_SEARCH |
指定されたコントロールは、LDAP検索操作に適用される。 |
SLAPI_OPERATION_MODIFY |
指定されたコントロールは、LDAP変更操作に適用される。 |
SLAPI_OPERATION_ADD |
指定されたコントロールは、LDAP追加操作に適用される。 |
SLAPI_OPERATION_DELETE |
指定されたコントロールは、LDAP削除操作に適用される。 |
SLAPI_OPERATION_MODDN |
指定されたコントロールは、LDAPのDN変更操作に適用される。 |
SLAPI_OPERATION_MODRDN |
指定されたコントロールは、LDAPv3のRDN変更操作に適用される。 |
SLAPI_OPERATION_COMPARE |
指定されたコントロールは、LDAP比較操作に適用される。 |
SLAPI_OPERATION_ABANDON |
指定されたコントロールは、LDAP中止操作に適用される。 |
SLAPI_OPERATION_EXTENDED |
指定されたコントロールは、LDAP v3拡張操作に適用される。 |
SLAPI_OPERATION_ANY |
指定されたコントロールは、すべてのLDAP操作に適用される。 |
SLAPI_OPERATION_NONE |
指定されたコントロールは、いずれのLDAP操作にも適用されない。 |
値をビットごとにORで結合することによって、値の組合せを指定できます(SLAPI_OPERATION_ADD | SLAPI_OPERATION_DELETE
など)。
slapi_register_supported_saslmechanism()
指定されたSimple Authentication and Security Layer (SASL)メカニズムをサーバーに登録します。
#include "slapi-plugin.h" void slapi_register_supported_saslmechanism( char *mechanism );
この関数は、次のパラメータを取ります。
SASLバインド時にメカニズムを要求するサーバーとクライアントの両方に対してSASLメカニズムを識別する文字列
プラグインでサポートされているSASLメカニズムの名前を登録するには、プラグイン初期化関数でこの関数を使用します。次に、SASLバインドを処理する操作前関数では、クライアントによって指定されたSASLバインド・メカニズム名を確認し、バインドの処理を試行するかどうかを決定できます。
サンプルの$INSTALL_DIR/plugins/slapd/slapi/examples/testsaslbind.c
プラグインは、この関数の使用例を示しています。
slapi_rename_internal_set_pb()
内部RDN変更操作のためのパラメータ・ブロックを準備します。
#include "slapi-plugin.h" int slapi_rename_internal_set_pb(Slapi_PBlock *pb, const char *olddn, const char *newrdn, const char *newsuperior, int deloldrdn, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
pb
内部RDN変更操作のためのパラメータ・ブロック
olddn
名前を変更するエントリの識別名
newrdn
適用する新しい相対識別名
newsuperior
名前を変更した後の親のDN
deloldrdn
古いRDNを削除するには1
、古いRDNを保持するには0
controls
RDN変更操作用に要求するコントロールの配列
uniqueid
DNを使用しない場合、エントリの一意識別子
plugin_identity
プラグインの初期化時にSLAPI_PLUGIN_IDENTITY
から取得したプラグイン識別子です。
operation_flags
NULL
またはSLAPI_OP_FLAG_NEVER_CHAIN
です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数は、slapi_modrdn_internal_pb()
で使用するパラメータ・ブロックを準備します。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
Directory Serverは、この関数に渡されたパラメータを解放しません。
slapi_modrdn_internal_pb()
をコールした後、パラメータ・ブロックを解放します。
slapi_role_check()
entry_to_check
が指すエントリに、role_dn
によって示されるロールが含まれるかどうかを確認します。
#include "slapi-plugin.h" int slapi_role_check(Slapi_Entry *entry_to_check, Slapi_DN *role_dn,int *present);
この関数は、次のパラメータを取ります。
ロールの存在を確認する対象エントリ。
確認するロールのDN。
結果が配置される整数へのポインタ。次の結果になります。
0以外の場合には存在します。
0の場合には存在しません。
このファンクションは、次の値のいずれかを戻します。
role_dn
がentry_to_check
に存在する場合、成功を示す0
を戻し、present
はゼロ以外に設定されます。それ以外の場合には0
となります。
ロールの存在が不明である場合は、ゼロ以外(エラー状況)を戻します。
slapi_role_get_scope()
ロールの有効範囲を指定します。
#include "slapi-plugin.h" int slapi_role_get_scope(Slapi_Entry *role_entry, Slapi_DN ***scope_dn, int *nb_scope);
この関数は、次のパラメータを取ります。
role_entry
ロールを定義するエントリ。
scope_dn
範囲のベースとなるエントリの識別名へのコールバックによって設定されます。
nb_scope
LDAP_SCOPE_BASE
、LDAP_SCOPE_ONELEVEL
、LDAP_SCOPE_SUBTREE
などの値へのコールバックによって設定されます。
この関数は、ロールの範囲を評価するコールバックをトリガーします。
この関数に渡されたパラメータが、Directory Serverによって解放またはコピーされることはありません。
slapi_sdn_add_rdn()
Slapi_RDN
構造体に含まれているRDNを、Slapi_DN
構造体に含まれているDNに追加します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_add_rdn(Slapi_DN *sdn, const Slapi_RDN *rdn);
この関数は、次のパラメータを取ります。
この関数は、rdn
のRDN値をdn
のDN値に追加することによって形成される新しいDNを含む、Slapi_DN
構造体を戻します。
slapi_sdn_compare()
2つのDNを比較します。
#include "slapi-plugin.h" int slapi_sdn_compare( const Slapi_DN *sdn1, const Slapi_DN *sdn2 );
この関数は、次のパラメータを取ります。
sdn2
の値と比較するDN
sdn1
の値と比較するDN
このファンクションは、次の値のいずれかを戻します。
sdn1
がsdn2
と同一である場合には、0
sdn1
がNULL
である場合には、-1
sdn2
がNULL
であり、かつsdn1
がNULL
でない場合には、1
この関数は、sdn1
とsdn2
の2つのDNを比較します。比較では、大/小文字が区別されます。
slapi_sdn_copy()
DNのコピーを作成します。
#include "slapi-plugin.h" void slapi_sdn_copy(const Slapi_DN *from, Slapi_DN *to);
この関数は、次のパラメータを取ります。
元のDN
from
で指定されたDNのコピーを含む、DNのコピー先
この関数は、to
が指す構造体にfrom
のDNをコピーします。
to
は、この関数をコールする前に割り当てられている必要があります。
slapi_sdn_done()
Slapi_DN
構造体のインスタンスを消去します。
#include "slapi-plugin.h" void slapi_sdn_done(Slapi_DN *sdn);
この関数は、次のパラメータを取ります。
消去する構造体へのポインタ
この関数は、Slapi_DN
構造体のコンテンツを消去します。これにより、DNと、存在する場合には正規化されたDNの両方が解放され、これらのポインタはNULL
に設定されます。
slapi_sdn_dup()
Slapi_DN
構造体を複製します。
#include "slapi-plugin.h" Slapi_DN * slapi_sdn_dup(const Slapi_DN *sdn);
この関数は、sdn
の複製へのポインタを戻します。
slapi_sdn_free()
Slapi_DN
構造体を解放します。
#include "slapi-plugin.h" void slapi_sdn_free(Slapi_DN **sdn);
この関数は、Slapi_DN
構造体およびsdn
のコンテンツが指すその構造体のコンテンツを解放します。
slapi_sdn_get_backend_parent()
特定のバックエンド内にあるエントリの親のDNを取得します。
#include "slapi-plugin.h" void slapi_sdn_get_backend_parent(const Slapi_DN *sdn, Slapi_DN *sdn_parent,const Slapi_Backend *backend);
この関数は、次のパラメータを取ります。
親を検索するエントリのDN
sdn
の親DN
sdn
の親を検索するバックエンド
この関数は、指定されたバックエンド内のエントリの親DNを取得します。sdn
が空である場合と、バックエンド自体のサフィックスである場合を除き、返される親DNはsdn_parent
に戻されます。該当する場合には、sdn_parent
は空となります。
この関数をコールする前に、sdn_parent
のSlapi_DN
構造体を割り当てる必要があります。
slapi_sdn_get_dn()
Slapi_DN
構造体からDNを取得します。
#include "slapi-plugin.h" const char * slapi_sdn_get_dn(const Slapi_DN *sdn);
この関数はDN値を戻します。
この関数は、Slapi_DN
構造体のDN値を取得します。他に値が存在しない場合には、戻り値は正規化されたDN (正規のフォーマット、小文字)になることがあります。
slapi_sdn_get_ndn()
Slapi_DN
構造体の正規化されたDNを取得します。
#include "slapi-plugin.h" const char * slapi_sdn_get_ndn(const Slapi_DN *sdn);
この関数は正規化されたDN値を戻します。
この関数は、Slapi_DN
構造体から正規化されたDN (正規のフォーマット、小文字)を取得し、まだ正規化されていない場合には、sdn
を正規化します。
slapi_sdn_get_ndn_len()
Slapi_DN
構造体の正規化されたDNの長さを取得します。
#include "slapi-plugin.h" int slapi_sdn_get_ndn_len(const Slapi_DN *sdn);
この関数は、正規化されたDNの長さを戻します。
この関数は正規化されたDNの長さを含み、sdn
がまだ正規化されていない場合には、正規化します。
slapi_sdn_get_parent()
指定されたSlapi_DN
構造体の親DNを取得します。
#include "slapi-plugin.h" void slapi_sdn_get_parent(const Slapi_DN *sdn,Slapi_DN *sdn_parent);
この関数は、次のパラメータを取ります。
この関数は、sdn
が指す構造体に保持されているDNの親DNを含む、Slapi_DN
構造体を戻します。
slapi_sdn_get_rdn()
DNからRDNを取得します。
#include "slapi-plugin.h" void slapi_sdn_get_rdn(const Slapi_DN *sdn, Slapi_RDN *rdn);
slapi_sdn_get_suffix()
ターゲットを含むサフィックスのDNへのポインタを戻します。
#include "slapi-plugin.h" Slapi_DN* slapi_sdn_get_suffix(const Slapi_DN *target_sdn);
この関数は、次のパラメータを取ります。
必要なサフィックスを含むターゲット・エントリのDN
この関数は、target_sdnが使用されたエントリのサフィックスのベースDNを含むSlapi_DN
構造体へのポインタを戻し、該当するサフィックスを使用できない場合にはNULL
を戻します。
slapi_sdn_free()
を使用して戻された構造体を解放します。
slapi_sdn_isempty()
Slapi_DN
構造体に格納されたDN値があるかどうかを確認します。
#include "slapi-plugin.h" int slapi_sdn_isempty( const Slapi_DN *sdn);
この関数は、Slapi_DN
構造体に正規化された値または正規化されていない値が含まれているかどうかを確認します。
slapi_sdn_isgrandparent()
DNが、指定されたDNの親の親であるかどうかを確認します。
#include "slapi-plugin.h" int slapi_sdn_isgrandparent( const Slapi_DN *parent, const Slapi_DN *child );
この関数は、次のパラメータを取ります。
このファンクションは、次の値のいずれかを戻します。
parent
のDNがchild
のDNの親の親である場合には、1
parent
のDNがchild
のDNの親の親のDNと一致しない場合には、0
slapi_sdn_isparent()
DNが、指定されたDNの親であるかどうかを確認します。
#include "slapi-plugin.h" int slapi_sdn_isparent(const Slapi_DN *parent, const Slapi_DN *child);
この関数は、次のパラメータを取ります。
このファンクションは、次の値のいずれかを戻します。
parent
のDNがchild
のDNの親である場合には、1
parent
のDNがchild
のDNの親のDNと一致しない場合には、0
slapi_sdn_issuffix()
Slapi_DN
構造体に、別のSlapi_DN
構造体のサフィックスが含まれているかどうかを確認します。
#include "slapi-plugin.h" int slapi_sdn_issuffix(const Slapi_DN *sdn, const Slapi_DN *suffixsdn);
このファンクションは、次の値のいずれかを戻します。
suffixsdn
のDNがsdn
のサフィックスである場合には、1
suffixsdn
のDNがsdn
のサフィックスでない場合には、0
slapi_sdn_new()
新しいSlapi_DN
構造体を割り当てて、NULL
に初期化します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new();
この関数にパラメータはありません。
この関数は、新しく割り振られた空のままのSlapi_DN
構造体へのポインタを戻します。
この関数は、必要なメモリーを割り当てて、DN値と正規化されたDN値の両方をNULL
に初期化することによって、新しいSlapi_DN
構造体を作成します。
slapi_sdn_new_dn_byref()
新しいSlapi_DN
構造体を作成して、DN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new_dn_byref(const char *dn);
この関数は、dn
のコンテンツに設定されたDN値を含む、新しいSlapi_DN
構造体へのポインタを戻します。
この関数は、新しいSlapi_DN
構造体を作成し、dn
の値を使用してそのDNを初期化します。新しい構造体のDNは、dn
が指す文字列と同じものを指します(DN値は参照によってパラメータに渡されます)。ただし、FLAG_DN
フラグは設定されず、カウンタは増分されません。
メモリーは、関数自体によって割り当てられます。
slapi_sdn_new_dn_byval()
新しいSlapi_DN
構造体を作成して、DN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new_dn_byval(const char *dn);
この関数は、dn
のコンテンツに設定されたDN値を含む、新しいSlapi_DN
構造体へのポインタを戻します。
この関数は、新しいSlapi_DN
構造体を作成し、dn
の値を使用してそのDNを初期化します。新しい構造体のDNは、dn
が指す文字列のコピーを指します(DN値は値でパラメータに渡されます)。FLAG_DN
フラグが設定され、内部カウンタが増分されます。
メモリーは、関数自体によって割り当てられます。
slapi_sdn_new_dn_passin()
新しいSlapi_DN
構造体を作成して、DN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new_dn_passin(const char *dn);
この関数は、dn
のコンテンツに設定されたDN値を含む、新しいSlapi_DN
構造体へのポインタを戻します。
この関数は、新しいSlapi_DN
構造体を作成し、dn
の値を使用してそのDNを初期化します。新しい構造体のDNは、dn
が指す文字列を指します。FLAG_DN
フラグが設定され、内部カウンタが増分されます。
メモリーは、関数自体によって割り当てられます。
slapi_sdn_new_ndn_byref()
新しいSlapi_DN
構造体を作成して、正規化されたDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new_ndn_byref(const char *ndn);
この関数は、ndn
のコンテンツに設定された正規化されたDN値を含む、新しいSlapi_DN
構造体へのポインタを戻します。
この関数は、新しいSlapi_DN
構造体を作成し、ndn
の値を使用してその正規化されたDNを初期化します。新しい構造体の正規化されたDNは、ndn
が指す文字列と同じものを指します(正規化されたDN値は参照によってパラメータに渡されます)。ただし、FLAG_NDN
フラグは設定されず、カウンタは増分されません。
メモリーは、関数自体によって割り当てられます。
slapi_sdn_new_ndn_byval()
新しいSlapi_DN
構造体を作成して、正規化されたDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_new_ndn_byval(const char *ndn);
この関数は、ndn
のコンテンツに設定された正規化されたDN値を含む、新しいSlapi_DN
構造体へのポインタを戻します。
この関数は、新しいSlapi_DN
構造体を作成し、ndn
の値を使用してその正規化されたDNを初期化します。新しい構造体の正規化されたDNは、ndn
が指す文字列のコピーを指します(正規化されたDN値は値でパラメータに渡されます)。FLAG_DND
フラグが設定され、内部カウンタが増分されます。
メモリーは、関数自体によって割り当てられます。
slapi_sdn_scope_test()
エントリ(指定されたDN)が、特定のベースDNの範囲内にあるかどうかを確認します。
#include "slapi-plugin.h" int slapi_sdn_scope_test( const Slapi_DN *dn, const Slapi_DN *base, int scope );
この関数は、次のパラメータを取ります。
範囲テストのエントリ対象のDN。
dn
をテストする対象となるベースDN。
テストする範囲。このパラメータには、次のいずれかのレベルを使用できます。
LDAP_SCOPE_BASE
- エントリDNはベースDNと同じである必要があります。
LDAP_SCOPE_ONELEVEL
- ベースDNはエントリDNの親である必要があります。
LDAP_SCOPE_SUBTREE
- ベースDNは、少なくともエントリDNのサフィックスである必要があります。
この関数は、dn
がbase
およびscope
によって指定されたスコーピング基準と一致する場合には、ゼロ以外を戻します。
この関数では単純なテストを実行し、dn
パラメータで渡されるDNが、scope
およびbase
の各パラメータに渡される値に応じて、実際にベースDNの範囲内にあるかどうかを確認します。
slapi_sdn_set_dn_byref()
Slapi_DN
構造体にDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_dn_byref(Slapi_DN *sdn, const char *dn);
この関数は、新しいDN値を含むSlapi_DN
構造体へのポインタを戻します。
この関数は、Slapi_DN
構造体にDN値を設定します。新しい構造体のDNは、dn
が指す文字列と同じものを指します(DN値は値でパラメータに渡されます)。ただし、FLAG_DN
フラグは設定されず、内部カウンタは増分されません。
slapi_sdn_set_dn_byval()
Slapi_DN
構造体にDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_dn_byval(Slapi_DN *sdn, const char *dn);
この関数は、新しいDN値を含むSlapi_DN
構造体へのポインタを戻します。
この関数は、Slapi_DN
構造体にDN値を設定します。新しい構造体のDNは、dn
が指す文字列のコピーを指します(DN値は値でパラメータに渡されます)。FLAG_DN
フラグが設定され、内部カウンタが増分されます。
slapi_sdn_set_dn_passin()
Slapi_DN
構造体にDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_dn_passin(Slapi_DN *sdn, const char *dn);
この関数は、新しいDN値を含むSlapi_DN
構造体へのポインタを戻します。
この関数は、Slapi_DN
構造体にDN値を設定します。新しい構造体のDNは、dn
が指す文字列と同じものを指します。FLAG_DN
フラグが設定され、内部カウンタが増分されます。
slapi_sdn_set_ndn_byref()
Slapi_DN
構造体に正規化されたDNを設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_ndn_byref(Slapi_DN *sdn, const char *ndn);
この関数は、新しい正規化されたDN値を含むSlapi_DN
構造体へのポインタを戻します。
この関数は、Slapi_DN
構造体に正規化されたDN値を設定します。新しい構造体の正規化されたDNは、ndn
が指す文字列と同じものを指します(正規化されたDN値は参照によってパラメータに渡されます)。ただし、FLAG_DN
フラグは設定されず、内部カウンタは増分されません。
slapi_sdn_set_ndn_byval()
Slapi_DN
構造体に正規化されたDN値を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_ndn_byval(Slapi_DN *sdn, const char *ndn);
この関数は、新しい正規化されたDN値を含むSlapi_DN
構造体へのポインタを戻します。
この関数は、Slapi_DN
構造体に正規化されたDN値を設定します。新しい構造体の正規化されたDNは、ndn
が指す文字列のコピーを指します(正規化されたDN値は値でパラメータに渡されます)。FLAG_DN
フラグが設定され、内部カウンタが増分されます。
slapi_sdn_set_parent()
指定されたエントリに新しい親を設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_parent(Slapi_DN *sdn, const Slapi_DN *parentdn);
この関数は、新しい親DNが設定された後、エントリのDNを含むSlapi_DN
構造体へのポインタを戻します。
この関数は、エントリに新しい親を設定します。このことは、エントリの元のDNのRDNを保持し、その新しい親のDN(parentdn
)を追加することによって行われます。
slapi_sdn_set_rdn()
指定されたエントリに新しいRDNを設定します。
#include "slapi-plugin.h" Slapi_DN *slapi_sdn_set_rdn(Slapi_DN *sdn, const Slapi_RDN *rdn);
この関数は、新しいRDNが設定された後、エントリのDNを保持するSlapi_DN
構造体へのポインタを戻します。
この関数は、エントリに新しいRDNを設定します。このことは、エントリの元のDNの親のDNを取得し、その後それをRDN(rdn
の値)に追加することによって実行されます。
slapi_search_internal_callback_pb()
パラメータ・ブロックに基づいてLDAP検索操作を実行し、ディレクトリを検索します。slapi_search_internal_pb()
とは異なり、この関数を使用すると、検索操作で一致するエントリまたは参照を含むエントリが検出された場合に起動されるコールバック関数を指定できます。
#include "slapi-plugin.h" int slapi_search_internal_callback_pb(Slapi_PBlock *pb, void *callback_data, plugin_result_callback prc, plugin_search_entry_callback psec, plugin_referral_entry_callback prec);
この関数は、次のパラメータを取ります。
slapi_search_internal_set_pb()
を使用して初期化されたパラメータ・ブロック。
コールバック関数に渡す必要がある任意のプラグインまたは操作固有データへのポインタ。
結果コードを送信するために、サーバーによってコールされるコールバック関数。この関数には、plugin_result_callback
によって指定されたプロトタイプが必要です。
一致するエントリがディレクトリで検出された場合に、サーバーによってコールされるコールバック関数。この関数には、plugin_search_entry_callback
によって指定されたプロトタイプが必要です。
LDAP v3参照を含むエントリが検出された場合に、サーバーによってコールされるコールバック関数。この関数には、plugin_referral_entry_callback
によって指定されたプロトタイプが必要です。
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
slapi_search_internal_pb()
のように、この関数を使用すると、プラグイン関数からディレクトリを検索できます。
クライアントによって要求された検索操作とは異なり、結果コード、検索エントリまたは参照がslapi_search_internal_callback_pb()
によってクライアントに送信されることはありません。ただし、次のイベントが発生した場合に起動される、独自のコールバック関数を作成できます。
検索操作によって結果コードが正常にクライアントに送信された場合に起動される、コールバック関数を作成できます。この関数には、plugin_result_callback
によって指定されたプロトタイプが必要です。この関数は、slapi_search_internal_callback_pb()
のprc
引数で指定します。
検索操作によって検索エントリが正常にクライアントに送信された場合に起動される、コールバック関数を作成できます。この関数には、plugin_search_entry_callback
によって指定されたプロトタイプが必要です。この関数は、slapi_search_internal_callback_pb()
のpsec
引数で指定します。
検索操作によってLDAP v3検索結果参照が正常に送信された場合に起動される、コールバック関数を作成できます。この関数には、plugin_referral_entry_callback
によって指定されたプロトタイプが必要です。この関数は、slapi_search_internal_callback_pb()
のprec
引数で指定します。
任意プラグインまたは操作固有データをこれらのコールバック関数に渡すこともできます。slapi_search_internal_callback_pb()
のcallback_data
引数として渡すデータを指定します。
検索エントリのコールバック関数に渡されるエントリを解放する必要はありません。コールバック関数から復帰した後、エントリにアクセスする必要がある場合は、slapi_entry_dup()
をコールしてコピーを作成します。
参照エントリのコールバック関数に渡される参照URLを解放する必要はありません。コールバック関数から復帰した後、参照文字列にアクセスする必要がある場合は、slapi_ch_strdup()
をコールしてコピーを作成します。
slapi_search_internal_callback_pb()
をコールした後、slapi_free_search_results_internal()
をコールする必要はありません。
slapi_search_internal_get_entry()
内部検索操作を実行して、エントリを1つ読み取ります(つまり、基本オブジェクト検索を実行します)。
#include "slapi-plugin.h" int slapi_search_internal_get_entry( Slapi_DN const *dn, char ** attrlist, Slapi_Entry **ret_entry, void *caller_identity);
この関数は、次のパラメータを取ります。
読み取るエントリのDN。
フィルタと一致するエントリから戻される属性タイプのNULL
終了配列。NULL
を指定すると、すべての属性が戻されます。
検出された場合にエントリを受信するSlapi_Entry
ポインタのアドレス。
プラグインまたはコンポーネント識別子。この値は、プラグイン初期化関数に渡されるパラメータ・ブロックのSLAPI_PLUGIN_IDENTITY
フィールドから取得できます。
この関数は、検索操作のLDAP結果コードを戻します。
この関数は内部検索操作を実行して、エントリを1つ読み取ります(つまり、基本オブジェクト検索を実行します)。dn
で指定されたエントリが検出された場合、ret_entry
ポインタは、attrlist
パラメータで指定された属性値を含むエントリのコピーを指すように設定されます。
戻されたエントリ(*ret_entry
)は、slapi_entry_free()
をコールして解放する必要があります。
slapi_search_internal_pb()
パラメータ・ブロックに基づいてLDAP検索操作を実行し、ディレクトリを検索します。
#include "slapi-plugin.h" int slapi_search_internal_pb(Slapi_PBlock *pb);
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
この関数は、パラメータ・ブロックに基づいて内部検索を実行します。このパラメータ・ブロックは、slapi_search_internal_set_pb()
関数をコールして初期化する必要があります。
slapi_search_internal_pb()
のコールによって割り当てられたエントリや他のアイテムを解放するには、slapi_free_search_results_internal()
をコールする必要があります。
slapi_search_internal_set_pb()
内部検索のためのパラメータ・ブロックを設定します。
#include slapi-plugin.h int slapi_search_internal_set_pb(Slapi_PBlock *pb, const char *base, int scope, const char *filter, char **attrs, int attrsonly,LDAPControl **controls, const char *uniqueid,Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
検索のベース。
LDAP_SCOPE_SUBTREE
、LDAP_SCOPE_ONELEVEL
またはLDAP_SCOPE_BASE
。
検索フィルタ。
リクエスト属性リスト。attrs
の値に応じて戻されるエントリ属性です。
NULL
: 属性タイプのリストを表す文字列の、すべての属性Null終了配列。エントリ属性のサブセット(具体的には、エントリに存在する場合にはattrs
に指定された属性、および、rdn
で使用される属性のような他のいくつかの属性)。
1
を指定すると、属性タイプのみが取得されます。0
を指定すると、属性タイプと属性値が取得されます。
アタッチするLDAPコントロール。
一意のIDはNULL
に設定する必要があります。
プラグイン初期化中に、SLAPI_PLUGIN_IDENTITY
から取得されるプラグイン識別子。
このリリースで公開されているフラグは、SLAPI_OP_FLAG_NEVER_CHAIN
のみです。このフラグが設定されていると、エントリが連鎖したバックエンドである場合、検索は実行されません。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数を使用して、内部検索を実行するパラメータ・ブロックを設定します。内部検索操作関数slapi_search_internal_pb()
を使用するには、この関数が必要です。
通常、slapi_pblock_new()
を使用してSlapi_PBlock
構造体を作成し、このパラメータ・ブロックをslapi_search_internal_pb()
に渡してから、実際に検索を実行するために同じパラメータ・ブロックを渡します。
戻されるエントリは、最初のコールバックに指定されたエントリか、またはslapi_pblock_get(pb, SLAPI_PLUGIN_INTOP_SEARCH_ENTRIES, &entries) ()
によって取得された配列で指定されたエントリです。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
Directory Serverは、この関数に渡されたパラメータを解放しません。
slapi_search_internal_pb()
をコールした後、パラメータ・ブロックを解放します。
slapi_send_ldap_referral()
エントリのLDAP v3参照(エントリのref
属性で見つかります)を処理します。LDAP v3クライアントの場合、この関数はLDAP参照をクライアントに戻します。LDAP v2クライアントの場合は、この関数によって参照がberval
構造体の配列にコピーされ、後で、この構造をslapi_send_ldap_result()
関数に渡すことができます。
#include "slapi-plugin.h" int slapi_send_ldap_referral( Slapi_PBlock *pb, Slapi_Entry *e, struct berval **refs, struct berval ***urls );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
処理中のエントリを表すSlapi_Entry
構造体へのポインタ
エントリで検出されるLDAP v3参照(検索結果の参照)を含むberval
構造体のNULL
終了配列へのポインタ
LDAP v2クライアントのLDAP参照の収集に使用されるberval
構造体の配列へのポインタ
この関数は、成功した場合は0を戻し、エラーが発生した場合には-1を戻します。
この関数をコールすると、refs
引数で指定されたLDAP参照が処理されます。参照は、クライアントでサポートされるLDAPプロトコルのバージョンに応じて、異なる方法で処理されます。
LDAP v3プロトコルでは、他のLDAPサーバーへの参照(検索結果参照)を検索結果としてクライアントに送信できます。(たとえば、サーバーでは、検索によって検出されたエントリと参照の混在を検索結果として他のLDAPサーバーに送信できます。)
LDAP v3クライアントについてslapi_send_ldap_referral()
関数をコールすると、refs
引数で指定された参照が、検索結果参照としてクライアントに戻されます。(この場合、urls
引数は使用されません。)
LDAP v2プロトコルでは、クライアントを参照するLDAP結果コードLDAP_PARTIAL_RESULTS
を他のLDAPサーバーに送信できます。
LDAP v2クライアントについてslapi_send_ldap_referral()
関数をコールすると、urls
引数のrefs
で指定された参照が収集されます。データは、LDAP v2クライアントには送信されません。
LDAP v2クライアントへの参照を取得するには、urls
引数を(LDAP_PARTIAL_RESULTS
結果コードとともに) slapi_send_ldap_result()
関数に渡す必要があります。slapi_send_ldap_result()
によって、urls
引数で指定された参照が連結され、結果として得られる文字列が、エラー・メッセージの一部としてクライアントに送信されます。
参照を送信するために独自の関数を定義する場合は、タイプ定義send_ldap_search_entry_fn_ptr_t
に準拠する関数を作成し、その関数の名前に合わせて、パラメータ・ブロックのSLAPI_PLUGIN_DB_REFERRAL_FN
パラメータを設定します。
slapi_send_ldap_result()
LDAP結果コードをクライアントに戻します。
#include "slapi-plugin.h" void slapi_send_ldap_result( Slapi_PBlock *pb, int err, char *matched, char *text, int nentries, struct berval **urls );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
クライアントに戻すLDAP結果コード(LDAP_SUCCESS
など)。
LDAP_NO_SUCH_OBJECT
結果コードを返信するときに、この引数を使用して、一致する可能性があるターゲットDNの部分を指定する。(他の状況ではNULL
を渡す。)
クライアントに返信するエラー・メッセージ。(エラー・メッセージを返信しない場合はNULL
を渡す。)
LDAP検索操作の結果コードを返信するときに、この引数を使用して、検出された一致エントリの数を指定する。
LDAP_PARTIAL_RESULTS
結果コードをLDAP v2クライアントに返信するとき、またはLDAP_REFERRAL
結果コードをLDAP v3クライアントに返信するときに、この引数を使用して、参照URLを含むberval
構造体の配列を指定する。(他の状況ではNULL
を渡す。)
slapi_send_ldap_result()
をコールして、LDAP結果コード(LDAP_SUCCESS
など)をクライアントに戻します。
次の引数は、特定の状況でのみ使用できます。
matched
LDAP_NO_SUCH_OBJECT
結果コードをクライアントに戻す場合、matched
を使用して、データベースで検索できるターゲットDNの数を指定します。たとえば、クライアントによって、次のDNの検索が試行されるとします。
cn=Babs Jensen, ou=Product Division, o=Example, c=US
このとき、データベースにc=US
およびo=Example, c=US
のエントリが含まれるものの、ou=Product Division, o=Example, c=US
のエントリは含まれない場合、matched
パラメータを次のように設定する必要があります。
o=Example, c=US
urls
LDAP_PARTIAL_RESULTS
結果コードをLDAP v2クライアントに戻すか、またはLDAP_REFERRAL
結果コードをLDAP v3クライアントに戻す場合、urls
を使用して参照URLを指定します。
LDAP v3参照の場合は、slapi_send_ldap_result()
をコールして参照をLDAP v3クライアントに送信し、LDAP v2クライアントのために、これらの参照を収集できます。収集された参照の配列をslapi_send_ldap_result()
のurls
引数に渡すことができます。次に例を示します。
struct berval **urls; ... slapi_send_ldap_referral(ld, e, &refs, &urls); slapi_send_ldap_result(ld,LDAP_PARTIAL_RESULTS,NULL,NULL,0,urls);
結果コードを送信するために独自の関数を定義する場合は、タイプ定義send_ldap_search_entry_fn_ptr_t
に準拠する関数を作成し、その関数の名前に合わせて、パラメータ・ブロックのSLAPI_PLUGIN_DB_RESULT_FN
パラメータを設定します。
slapi_send_ldap_search_entry()
検索で見つかったエントリをクライアントに返信します。
#include "slapi-plugin.h" int slapi_send_ldap_search_entry( Slapi_PBlock *pb, Slapi_Entry *e, LDAPControl **ectrls, char **attrs, int attrsonly );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
クライアントに戻すエントリを表すSlapi_Entry
構造体へのポインタ。
検索リクエストに関連付けられるコントロールを表すLDAPControl
構造体の配列へのポインタ。
LDAP検索リクエストに指定された属性タイプ。
属性値を結果とともに戻す必要があるかどうかを指定します。
0の場合、値が含まれます。
1の場合、値は含まれません。
この関数は、成功した場合には0を戻し、エントリが送信されない場合(アクセス制御によって送信が許可されない場合など)には1を戻し、エラーが発生した場合には-1を戻します。
slapi_send_ldap_search_entry()
をコールして、検索によって検出されたエントリをクライアントに戻します。
attrs
は、エントリから送信する属性タイプの配列です。この値は、パラメータ・ブロックのSLAPI_SEARCH_ATTRS
パラメータと同じになります。
attrsonly
は、属性タイプのみを送信するか、または属性タイプとその値を送信するかを指定します。
属性タイプと値の両方をクライアントに送信する場合には、このパラメータに0を渡します。
属性タイプのみ(属性値は含まない)をクライアントに送信する場合には、このパラメータに1を渡します。
この値は、パラメータ・ブロックのSLAPI_SEARCH_ATTRSONLY
パラメータと同じになります。
エントリを送信するために独自の関数を定義する場合は、タイプ定義send_ldap_search_entry_fn_ptr_t
に準拠する関数を作成し、その関数名に合わせて、パラメータ・ブロックのSLAPI_PLUGIN_DB_ENTRY_FN
パラメータを設定します。
slapi_set_object_extension()
オブジェクトの拡張を変更します。
#include "slapi-plugin.h" void slapi_set_object_extension(int objecttype, void *object, int extensionhandle, void *extension);
この関数は、次のパラメータを取ります。
サーバーによって設定され、拡張を取得するために使用されます。
拡張されたオブジェクト
サーバーによって設定され、拡張を取得するために使用されます。
オブジェクトにアタッチする新しい拡張
この関数は、オブジェクトについての拡張を変更します。
slapi_str2entry()
ディレクトリ・エントリ(文字列値)のLDIF表現をSlapi_Entry
タイプのエントリに変換します。
#include "slapi-plugin.h" Slapi_Entry *slapi_str2entry( char *s, int flags );
この関数は、次のパラメータを取ります。
Slapi_Entry
に変換するエントリの説明
エントリの生成方法を指定する1つ以上のフラグ
flags
引数の値は、次のいずれかの値にすることができます。
エントリの属性における重複値を削除します。
相対識別名(RDN)コンポーネント(uid=bjensen
など)をエントリの属性として追加します。
エントリを表すSlapi_Entry
構造体へのポインタを戻し、文字列を変換できない場合(文字列にDNが指定されていない場合など)にはNULL
を戻します。
ディレクトリ・エントリは、LDIFフォーマットの文字列によって表現できます。
slapi_str2entry()
関数をコールすると、このフォーマットの文字列表現がSlapi_Entry
構造体に変換され、これを他のAPI関数に渡すことができます。
注意: この関数は、文字列引数 |
変換プロセス中にエラーが発生した場合、この関数はエントリのかわりにNULL
を戻します。
エントリに対する作業が完了したら、slapi_entry_free()
関数をコールする必要があります。
エントリを文字列表現に変換するには、slapi_entry2str()
関数をコールします。
エントリの解放にfree()
またはslapi_ch_free()
を使用しないでください。かわりに、常にslapi_entry_free()
を使用します。
slapi_str2filter()
検索フィルタの文字列表現をSlapi_Filter
タイプのフィルタに変換します。
#include "slapi-plugin.h" Slapi_Filter *slapi_str2filter( char *str );
この関数は、次のパラメータを取ります。
検索フィルタの文字列表現
この関数に静的文字列を渡さないでください。かわりに、slapi_ch_strdup()
を使用して複製を作成します。このフィルタに対する作業が完了したら、slapi_filter_free()
をコールしてSlapi_Filter
構造体を解放する必要があります。
検索フィルタを表すSlapi_Filter
構造体へのポインタを戻し、文字列を変換できない場合(空の文字列が指定されたり、フィルタ構文が正しくない場合など)にはNULL
を戻します。
slapi_unlock_mutex()
指定されたmutexをロック解除します。
#include "slapi-plugin.h" int slapi_unlock_mutex( Slapi_Mutex *mutex );
次のいずれかの値です。
mutexが正常にロック解除された場合には、ゼロ以外の値
mutexがNULL
であるか、またはコール側スレッドによってロックされていない場合には、0
この関数は、Slapi_Mutex
構造体によって指定されたmutexをロック解除します。
slapi_UTF-8CASECMP()
2つのUTF-8文字列を比較します。
#include "slapi-plugin.h" int slapi_UTF-8CASECMP(char *s0, char *s1);
この関数は、次のパラメータを取ります。
NULL
で終了するUTF-8文字列
NULL
で終了するUTF-8文字列
このファンクションは、次の値のいずれかを戻します。
s0
がs1
の後の場合には、正の数値
大/小文字を区別せずに2つの文字列が同一である場合には、0
s1
がs0
の後の場合には、負の数値
この関数には、次のルールがあります。
両方のUTF-8文字列がNULL
または長さが0である場合、0
を戻します。
いずれかの文字列がNULL
または長さが0である場合、NULL
または長さが0の文字列の方が小さくなります。
いずれかまたは両方の文字列がUTF-8でない場合、システムによって提供されるstrcasecmp
が使用されます。
2つのうちいずれかの文字列に8ビットの文字が含まれない場合、strcasecmp
が使用されます。
文字列は、小文字のUTF-8に変換された後に比較されます。
各文字は最初から比較されます。
評価は次の順序で行われます。
一方の文字が他方の文字より短い場合、2つの長さの差異を戻します。
対応する文字の長さが同じである場合、文字の各バイトが比較されます。
2つのバイト間に差異がある場合、その差異を戻します。
一方の文字列が他方の文字列より短い場合、その差異を戻します。
slapi_UTF-8NCASECMP()
指定されたUTF-8文字数を比較します。
#include "slapi-plugin.h" int slapi_UTF-8NCASECMP(char *s0, char *s1, int n);
この関数は、次のパラメータを取ります。
NULL
で終了するUTF-8文字列
NULL
で終了するUTF-8文字列
比較するs0
とs1
のUTF-8の文字数(バイトではありません)
このファンクションは、次の値のいずれかを戻します。
s0
がs1
の後の場合には、正の数値
大/小文字を区別せずに2つの文字列が同一である場合には、0
s1
がs0
の後の場合には、負の数値
この関数には、次のルールがあります。
両方のUTF-8文字列がNULL
または長さが0である場合、0
を戻します。
いずれかの文字列がNULL
または長さが0である場合、NULL
または長さが0の文字列の方が小さくなります。
いずれかまたは両方の文字列がUTF-8でない場合、システムによって提供されるstrcasecmp
が使用されます。
2つのうちいずれかの文字列に8ビットの文字が含まれない場合、strcasecmp
が使用されます。
文字列は、小文字のUTF-8に変換された後に比較されます。
各文字は最初から比較されます。
評価は次の順序で行われます。
一方の文字が他方の文字より短い場合、2つの長さの差異を戻します。
対応する文字の長さが同じである場合、文字の各バイトが比較されます。
2つのバイト間に差異がある場合、その差異を戻します。
一方の文字列が他方の文字列より短い場合、その差異を戻します。
slapi_UTF-8ISLOWER()
UTF-8文字が小文字かどうかを確認します。
#include "slapi-plugin.h" int slapi_UTF-8ISLOWER(char *s);
この関数は、次のパラメータを取ります。
UTF-8の単一文字(マルチバイト可)へのポインタ
この関数は、文字が小文字である場合には1
を戻し、小文字でない場合には0
を戻します。
slapi_UTF-8ISUPPER()
1つのUTF-8文字が大文字かどうかを確認します。
#include "slapi-plugin.h" int slapi_UTF-8ISUPPER(char *s);
この関数は、次のパラメータを取ります。
UTF-8の単一文字(マルチバイト可)へのポインタ
この関数は、文字が大文字である場合には1
を戻し、大文字でない場合には0
を戻します。
slapi_UTF-8STRTOLOWER()
UTF-8文字列を小文字に変換します。
#include "slapi-plugin.h" unsigned char *slapi_UTF-8STRTOLOWER(char *s);
この関数は、次のパラメータを取ります。
小文字に変換する、NULL
で終了するUTF-8文字列
この関数は、NULL
で終了するUTF-8文字列(小文字に変換される)へのポインタを戻します。大文字でない文字はそのままコピーされます。文字列がUTF-8文字列でない場合、この関数はNULL
を戻します。
この関数は、slapi_UTF-8TOLOWER()
での場合のようにUTF-8の単一文字を変換するのではなく、複数文字の文字列を変換します。
割り当てられた出力文字列は、必要でなくなったときにリリースする必要があります。
slapi_UTF-8STRTOUPPER()
UTF-8文字で構成される文字列を変換し、それを大文字に変換します。
#include "slapi-plugin.h" unsigned char *slapi_UTF-8STRTOUPPER(char *s);
この関数は、次のパラメータを取ります。
大文字に変換するNULL
で終了するUTF-8文字列
この関数は、大文字に変換された文字を含むNULL
で終了するUTF-8文字列を戻します。小文字でない文字はそのままコピーされます。文字列がUTF-8文字列でないとみなされると、この関数はNULL
を戻します。
この関数に割り当てられた出力文字列は、必要でなくなったときにリリースする必要があります。
slapi_UTF-8TOLOWER()
UTF-8文字を小文字に変換します。
#include "slapi-plugin.h" void slapi_UTF-8TOLOWER(char *s, char *d, int *ssz, int *dsz);
この関数は、次のパラメータを取ります。
UTF-8の単一文字(マルチバイト可)。
小文字形式のs
へのポインタ。このためのメモリーは、関数をコールする前に、コール元によって割り当てられる必要があります。
入力文字の長さをバイト単位で戻します。
出力文字の長さをバイト単位で戻します。
slapi_UTF-8TOUPPER()
小文字のUTF-8文字を大文字に変換します。
#include "slapi-plugin.h" void slapi_UTF-8TOUPPER(char *s, char *d, int *ssz, int *dsz);
この関数は、次のパラメータを取ります。
UTF-8の単一文字(マルチバイト可)へのポインタ
大文字バージョンのsへのポインタ。このためのメモリーは、関数をコールする前に、コール元によって割り当てられる必要があります。
入力文字の長さをバイト単位で戻します。
出力文字の長さをバイト単位で戻します。
slapi_value_compare()
指定された属性の2つの値を比較し、それらが等しいかどうかを判別します。
#include "slapi-plugin.h" int slapi_value_compare(const Slapi_Attr *a, const Slapi_Value *v1, const Slapi_Value *v2);
この関数は、次のパラメータを取ります。
2つの値の比較方法を決定するのに使用される属性へのポインタ
比較する最初の値を含むSlapi_ValueSet
構造体へのポインタ
比較する2番目の値を含むSlapi_Value
構造体へのポインタ
このファンクションは、次の値のいずれかを戻します。
2つの値が同一である場合には、0
v1がv2より小さい場合には、-1
v1がv2より大きい場合には、1
この関数は、属性a
に関連付けられる一致ルールを使用して、2つのSlapi_Values
を比較します。
この関数は、前のリリースで使用されていた非推奨のslapi_attr_value_cmp()
関数に置き換わるものであり、berval
属性値のかわりにSlapi_Value
属性値を使用します。
slapi_value_done()
Slapi_Value
構造体の内部を解放します。
#include "slapi-plugin.h" void slapi_value_done(Slapi_Value *v);
slapi_value_init()
、slapi_value_init_berval()
、slapi_value_init_string()
slapi_value_dup()
値を複製します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_dup(const Slapi_Value *v);
この関数は、新しく割り当てられたSlapi_Value
へのポインタを戻します。
新しいSlapi_Value
が割り当てられますが、これは、slapi_value_free()
を使用してコール元によって解放される必要があります。
slapi_value_free()
指定されたSlapi_Value
構造体およびそのメンバーをメモリーから解放します。
#include "slapi-plugin.h" void slapi_value_free(Slapi_Value **value);
この関数は、Slapi_Value
構造体および(NULL
でない場合には)そのメンバーを解放し、ポインタをNULL
に設定します。
この関数は、構造体に対する作業が完了したときにコールします。
slapi_valuearray_free()
Slapi_Value
構造体の指定された配列およびそのメンバーをメモリーから解放します。
#include "slapi-plugin.h" void slapi_valuearray_free(Slapi_Value ***value);
この関数は、各Slapi_Value
構造体およびそのメンバーを解放し、ポインタをNULL
に設定します。
この関数は、値の配列に対する作業が完了したときにコールします。
slapi_value_get_berval()
値のberval
構造体を取得します。
#include "slapi-plugin.h" const struct berval * slapi_value_get_berval( const Slapi_Value *value);
Slapi_Value
に含まれるberval
構造体へのポインタを戻します。この関数は、コピーではない実際のberval
構造体へのポインタを戻します。
slapi_value_set_berval()
をコールして置き換える予定である場合を除き、berval
構造体を解放しないでください。
slapi_value_get_int()
値を整数に変換します。
#include "slapi-plugin.h" int slapi_value_get_int(const Slapi_Value *value);
この関数は、Slapi_Value
構造体に格納された値に対応する整数を戻し、値がない場合には0
を戻します。
Slapi_Value
内の値を整数に変換します。
slapi_value_get_length()
値の実際の長さを取得します。
#include "slapi-plugin.h" size_t slapi_value_get_length(const Slapi_Value *value);
この関数は、Slapi_Value
に含まれた値の長さを戻し、値がない場合には0
を戻します。
この関数は、Slapi_Value
構造体に含まれる値の実際の長さを戻します。
slapi_value_get_long()
値をLong整数に変換します。
#include "slapi-plugin.h" long slapi_value_get_long(const Slapi_Value *value);
この関数は、Slapi_Value
構造体に格納された値に対応するLong整数を戻し、値がない場合には0
を戻します。
この関数は、Slapi_Value
構造体に含まれた値をLong整数に変換します。
slapi_value_get_string()
値を文字列として返します。
#include "slapi-plugin.h" const char * slapi_value_get_string(const Slapi_Value *value);
slapi_value_set_string()
をコールして置き換える予定である場合を除き、文字列を解放しないでください。
slapi_value_get_uint()
値を符号なし整数に変換します。
#include "slapi-plugin.h" unsigned int slapi_value_get_uint(const Slapi_Value *value);
この関数は、Slapi_Value
構造体に格納された値に対応する符号なし整数を戻し、値がない場合には0
を戻します。
Slapi_Value
に含まれた値を符号なし整数に変換します。
slapi_value_get_ulong()
値を符号なしLong整数に変換します。
#include "slapi-plugin.h" unsigned long slapi_value_get_ulong(const Slapi_Value *value);
この関数は、Slapi_Value
構造体に格納された値に対応する符号なしLong整数を戻し、値がない場合には0
を戻します。
Slapi_Value
構造体に含まれた値を符号なしLong整数に変換します。
slapi_value_init()
値を使用せずにSlapi_Value
構造体を初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_init(Slapi_Value *v);
この関数は、次のパラメータを取ります。
初期化する値へのポインタ。ポインタをNULL
にすることはできません。
この関数は、初期化されたSlapi_Value
構造体(自体)へのポインタを戻します。
この関数は、Slapi_Value
構造体を初期化し、そのすべてのフィールドをゼロにリセットします。パラメータとして渡される値は、有効なSlapi_Value
である必要があります。
Slapi_Value
構造体の使用が終了したら、slapi_value_done()
を使用して、その内部構造体を解放します。
slapi_value_init_berval()
berval
構造体からSlapi_Value
構造体を初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_init_berval(Slapi_Value *v, struct berval *bval);
この関数は、次のパラメータを取ります。
初期化する値へのポインタポインタをNULL
にすることはできません。
値を初期化するために使用するberval
構造体へのポインタ
この関数は、初期化されたSlapi_Value
構造体(自体)へのポインタを戻します。
この関数は、berval
構造体に含まれる値を使用して、Slapi_Value
構造体を初期化します。berval
構造体のコンテンツは複製されます。
Slapi_Value
構造体の使用が終了したら、slapi_value_done()
を使用して、その内部構造体を解放します。
slapi_value_init_string()
文字列からSlapi_Value
構造体を初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_init_string(Slapi_Value *v,const char *s);
この関数は、次のパラメータを取ります。
初期化する値へのポインタ。ポインタをNULL
にすることはできません。
値の初期化に使用されるNULL
で終了する文字列
この関数は、初期化されたSlapi_Value
構造体(自体)へのポインタを戻します。
この関数は、文字列に含まれる値を使用して、Slapi_Value
構造体を初期化します。文字列は複製されます。
Slapi_Value
構造体の使用が終了したら、slapi_value_done()
を使用して、その内部構造体を解放します。
slapi_value_init_string_passin()
文字列に含まれる値を使用して、Slapi_Value
構造体を初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_init_string_passin (Slapi_value *v, char *s);
この関数は、次のパラメータを取ります。
初期化する値へのポインタ。ポインタをNULL
にすることはできません。
値の初期化に使用されるNULL
で終了する文字列
この関数は、初期化されたSlapi_Value
構造体(自体)へのポインタを戻します。
この関数は、文字列に含まれる値を使用して、Slapi_Value
構造体を初期化します。文字列は複製されず、解放する必要があります。
slapi_value_free()
をコールしてSlapi_Value
構造体がメモリーから解放されると、文字列が解放されます。
slapi_value_new()
新しいSlapi_Value
構造体を割り当てます。
#include "slapi-plugin.h" Slapi_Value * slapi_value_new();
この関数ではパラメータを使用しません。
この関数は、新しく割り当てられたSlapi_Value
構造体へのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、空のSlapi_Value
構造体を戻します。APIの他の関数をコールして値を設定できます。
この値が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放します。
slapi_value_new_berval()
新しいSlapi_Value
構造体を割り当てて、berval
構造体から初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_new_berval(const struct berval *bval);
この関数は、新しく割り当てられたSlapi_Value
へのポインタを戻します。領域を割り当てることができない場合(仮想メモリーがこれ以上存在しない場合など)、slapd
プログラムは終了します。
この関数は、パラメータとして渡されたberval
構造体から複製された値を含む、Slapi_Value
構造体を戻します。
この値が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_new_string()
新しいSlapi_Value
構造体を割り当て、この構造体を文字列から初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_new_string(const char *s);
この関数は、新しく割り当てられたSlapi_Value
へのポインタを戻します。領域を割り当てることができない場合(仮想メモリーがこれ以上存在しない場合など)、slapd
プログラムは終了します。
この関数は、パラメータとして渡された文字列から複製された値を含む、Slapi_Value
構造体を戻します。
この値が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_new_string_passin()
新しいSlapi_Value
構造体を割り当て、この構造体を文字列から初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_new_string_passin ( char *s );
この関数は、新しく割り当てられたSlapi_Value
構造体へのポインタを戻します。領域を割り当てることができない場合(仮想メモリーが存在しない場合など)、slapd
プログラムは終了します。
この関数は、パラメータとして渡された文字列を含む、Slapi_Value
構造体を戻します。渡された文字列をメモリーから解放することはできません。
値は、slapi_value_free()
を使用し、コール元によって解放される必要があります。
slapi_value_new_value()
新しいSlapi_Value
構造体を割り当てて、別のSlapi_Value
構造体から初期化します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_new_value(const Slapi_Value *v);
この関数は、新しく割り当てられたSlapi_Value
へのポインタを戻します。領域を割り当てることができない場合(仮想メモリーがこれ以上存在しない場合など)、slapd
プログラムは終了します。
この関数は、パラメータとして渡されたSlapi_Value
構造体から複製された値を含む、Slapi_Value
構造体を戻します。この関数は、slapi_value_dup()
と同じです。
この値が必要でなくなったときは、slapi_value_free()
関数をコールして、メモリーから解放する必要があります。
slapi_value_set()
Slapi_Value
構造体に値を設定します。
#include "slapi-plugin.h" Slapi_Value * slapi_value_set(Slapi_Value *value, void *val, unsigned long len);
この関数は、値が設定されたSlapi_Value
へのポインタを戻します。
この関数は、Slapi_Value
構造体に値を設定します。この値はval
が指すデータの複製であり、長さはlen
です。
Slapi_Value
構造体へのポインタがNULL
である場合、何も実行されず、関数はNULL
を戻します。Slapi_Value
構造体にすでに値が含まれている場合、この値は、新しい値が設定される前にメモリーから解放されます。
Slapi_Value
構造体が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_set_berval()
berval
構造体からSlapi_Value
構造体に値をコピーします。
#include "slapi-plugin.h" Slapi_Value * slapi_value_set_berval(Slapi_Value *value, const struct berval *bval );
この関数は、パラメータとして渡されたSlapi_Value
構造体へのポインタを戻し、これがNULL
であった場合にはNULL
を戻します。
この関数は、Slapi_Value
構造体の値を設定します。値はberval
構造体のbval
から複製されます。
Slapi_Value
構造体へのポインタがNULL
である場合、何も実行されず、関数はNULL
を戻します。Slapi_Value
にすでに値が含まれている場合、この値は、新しい値が設定される前にメモリーから解放されます。
Slapi_Value
構造体が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_set_int()
Slapi_Value
構造体の整数値を設定します。
#include "slapi-plugin.h" int slapi_value_set_int(Slapi_Value *value, int intVal);
この関数は、整数intVal
からSlapi_Value
構造体の値を設定します。
Slapi_Value
構造体へのポインタがNULL
である場合、何も実行されず、関数は-1
を戻します。Slapi_Value
にすでに値が含まれている場合、この値は、新しい値が設定される前にメモリーから解放されます。
Slapi_Value
構造体が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_set_string()
Slapi_Value
構造体の値の文字列をコピーします。
#include "slapi-plugin.h" int slapi_value_set_string(Slapi_Value *value, const char *strVal);
この関数は、文字列strVal
を複製することによって、Slapi_Value
構造体の値を設定します。
Slapi_Value
へのポインタがNULL
である場合、何も実行されず、関数は-1
を戻します。Slapi_Value
にすでに値が含まれている場合、この値は、新しい値が設定される前にメモリーから解放されます。
Slapi_Value
構造体が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_value_set_string_passin()
文字列から、Slapi_Value
構造体の値を設定します。
#include "slapi-plugin.h" int slapi_value_set_string_passin(Slapi_Value *value, char *strVal);
この関数は、値が設定されている場合には0
を戻し、Slapi_Value
構造体へのポインタがNULL
である場合には-1
を戻します。
この関数は、文字列strVal
を使用して、Slapi_Value
構造体の値を設定します。Slapi_Value
構造体にすでに値が含まれている場合、この値は、新しい値が設定される前にメモリーから解放されます。文字列strVal
をメモリーから解放することはできません。
メモリーから解放する構造体に対する作業が完了したら、slapi_value_free()
を使用します。
slapi_value_set_value()
Slapi_Value
構造体の値をSlapi_Value
構造体にコピーします。
#include "slapi-plugin.h" Slapi_Value * slapi_value_set_value(Slapi_Value *value, const Slapi_Value *vfrom);
この関数は、パラメータとして渡されたSlapi_Value
構造体へのポインタを戻し、これがNULL
であった場合にはNULL
を戻します。
この関数は、Slapi_Value
構造体の値を設定します。この値はSlapi_Value
構造体のvfrom
から複製されます。vfrom
をNULL
にすることはできません。
Slapi_Value
へのポインタがNULL
である場合、何も実行されず、関数はNULL
を戻します。Slapi_Value
にすでに値が含まれている場合、この値は、新しい値が設定される前に解放されます。
Slapi_Value
構造体が必要でなくなったときには、slapi_value_free()
をコールして、メモリーから解放する必要があります。
slapi_valueset_add_value_optimised()
Slapi_ValueSet
構造体にSlapi_Value
を追加します。
#include "slapi-plugin.h" void slapi_valueset_add_value_optimised(Slapi_ValueSet *vs, const Slapi_Value *addval, void *syntax_plugin);
この関数は、次のパラメータを取ります。
値を追加するSlapi_ValueSet
構造体へのポインタ
Slapi_ValueSet
に追加するSlapi_Value
へのポインタ
slapi_attr_get_plugin()
を使用して取得される、この属性タイプのプラグインへのポインタ
この関数は、Slapi_Value
構造体の形式で値をSlapi_ValueSet
構造体に追加します。
値はSlapi_Value
構造体から複製され、値の使用後には、Slapi_ValueSet
構造体を変更することなくメモリーから解放できます。
この関数では、Slapi_ValueSet
構造体に値がすでに存在するかどうかは検証しません。このことは、slapi_valueset_first_value_const()
およびslapi_valueset_next_value_const()
を使用して、手動で確認できます。
slapi_valueset_count()
Slapi_ValueSet
構造体に格納されている値の数を戻します。
#include "slapi-plugin.h" int slapi_valueset_count(const Slapi_ValueSet *vs);
この関数は、Slapi_ValueSet
構造体に含まれる値の数を戻します。
slapi_valueset_done()
Slapi_ValueSet
構造体に格納されている値を解放します。
#include "slapi-plugin.h" void slapi_valueset_done(Slapi_ValueSet *vs);
この値が必要でなくなったものの、新しい値セットにSlapi_ValueSet
構造体を再利用する場合は、この関数を使用します。
slapi_valueset_find_const()
属性の構文を使用して、値セットの値を検索します。
#include "slapi-plugin.h" const Slapi_Value *slapi_valueset_find(const Slapi_Attr *a, const Slapi_ValueSet *vs, const Slapi_Value *v);
この関数は、次のパラメータを取ります。
属性へのポインタ。これは、値の構文および値の一致方法を決定するために使用されます。
値の取得元となるSlapi_ValueSet
構造体へのポインタ。
戻り値のSlapi_Value
構造体へのポインタのアドレス。
この関数は、値が検出された場合、値セットの値へのポインタを戻します。それ以外の場合はNULL
を戻します。
この関数を使用して、属性の重複値を確認します。
slapi_valueset_first_value_const()
Slapi_ValueSet
構造体の最初の値を取得します。
#include "slapi-plugin.h" int slapi_valueset_first_value_const(const Slapi_ValueSet *vs, const Slapi_Value **v);
この関数は、次のパラメータを取ります。
値の取得元となるSlapi_ValueSet
構造体へのポインタ。
戻り値のSlapi_Value
構造体へのポインタのアドレス。
この関数は、Slapi_ValueSet
の値の索引を戻し、値がなかった場合には-1
を戻します。
この関数は、Slapi_ValueSet
の最初の値を取得したり、すべての値に対して処理を繰り返す場合にコールします。戻り値はSlapi_ValueSet
構造体内の値の索引であり、次の値を取得するslapi_valueset_next_value_const()
をコールするために渡される必要があります。
この関数は、Slapi_ValueSet
内の実際の値へのポインタを戻します。これをメモリーから解放しないでください。
slapi_valueset_free()
指定されたSlapi_ValueSet
構造体およびそのメンバーをメモリーから解放します。
#include "slapi-plugin.h" void slapi_valueset_free(Slapi_ValueSet *vs)
この関数は、Slapi_ValueSet
構造体および(NULL
でない場合には)そのメンバーを解放します。この関数は、構造体に対する作業が完了したときにコールします。
slapi_valueset_init()
Slapi_ValueSet
構造体を値のない状態にリセットします。
#include "slapi-plugin.h" void slapi_valueset_init(Slapi_ValueSet *vs);
この関数は、Slapi_ValueSet
構造体に含まれる値を初期化します(値を0に設定します)。これにより、構造体に含まれる値が解放されることはありません。値を解放するには、slapi_valueset_done()
を使用します。
Slapi_ValueSet
構造体が必要でなくなったときには、slapi_valueset_free()
を使用して、メモリーから解放する必要があります。
slapi_valueset_new()
新しいSlapi_ValueSet
構造体を割り当てます。
#include "slapi-plugin.h" Slapi_ValueSet *slapi_valueset_new( void );
この関数にパラメータはありません。
この関数は、新しく割り当てられたSlapi_ValueSet
構造体へのポインタを戻します。領域を割り当てることができない場合(仮想メモリーがこれ以上存在しない場合など)、slapd
プログラムは終了します。
この関数は、空のSlapi_ValueSet
構造体を戻します。APIの他のslapi_valueset
関数をコールして、Slapi_ValueSet
構造体に値を設定できます。
この値が必要でなくなったときには、slapi_valueset_free()
をコールして、メモリーから解放する必要があります。
slapi_valueset_next_value_const()
Slapi_ValueSet
構造体から次の値を取得します。
#include "slapi-plugin.h" int slapi_valueset_next_value_const(const Slapi_ValueSet *vs, int index, const Slapi_Value **v);
この関数は、次のパラメータを取ります。
vs
値の取得元となるSlapi_ValueSet
構造体へのポインタ。
slapi_valueset_next_value_const ()
またはslapi_valueset_first_value_const()
への以前のコールによって戻された値
戻り値のSlapi_Value
構造体へのポインタへのアドレス
この関数は、Slapi_ValueSet
の値の索引を戻し、値がこれ以上存在しないか、または入力索引が正しくない場合には-1
を戻します。
この関数は、最初にslapi_valueset_first_value_const()
をコールした後、Slapi_ValueSet
の次の値を取得する場合にコールします。戻り値はSlapi_ValueSet
構造体内の値の索引であり、slapi_valueset_next_value_const()
に渡される必要があります。
この関数は、Slapi_ValueSet
内の実際の値へのポインタを戻し、このポインタをメモリーから解放しないようにする必要があります。
slapi_valueset_set_from_smod()
Slapi_Mod
構造体の値をSlapi_ValueSet
構造体にコピーします。
#include "slapi-plugin.h" void slapi_valueset_set_from_smod(Slapi_ValueSet *vs, Slapi_Mod *smod);
この関数は、次のパラメータを取ります。
値のコピー先となるSlapi_ValueSet
構造体へのポインタ
値のコピー元となるSlapi_Mod
構造体へのポインタ
この関数は、Slapi_Mod
構造体に含まれるすべての値をSlapi_ValueSet
構造体にコピーします。
この関数では、Slapi_ValueSet
構造体に値がすでに含まれていることは検証されないため、この関数をコールする前に、値がないことを自分で検証する必要があります。この検証を行わないと、割り当てられたメモリー領域がリークします。slapi_valueset_done()
をコールして、既存の値を解放できます。
slapi_valueset_set_valueset_optimised()
別のSlapi_ValueSet
構造体からSlapi_ValueSet
構造体を初期化します。
#include "slapi-plugin.h" void slapi_valueset_set_valueset_optimised(Slapi_ValueSet *vs1, const Slapi_ValueSet *vs2, void *syntax_plugin);
この関数は、次のパラメータを取ります。
値の設定先となるSlapi_ValueSet
構造体へのポインタ
値のコピー元となるSlapi_ValueSet
構造体へのポインタ
slapi_attr_type2plugin()
を使用して取得される、この属性タイプのプラグインへのポインタ
この関数は、別のSlapi_ValueSet
構造体に含まれる値をコピーすることによって、Slapi_ValueSet
構造体を初期化します。
この関数では、Slapi_ValueSet
構造体に値が含まれていることは検証されないため、この関数をコールする前に、値がないことを自分で検証する必要があります。この検証を行わないと、割り当てられたメモリー領域がリークします。slapi_valueset_done()
をコールして、既存の値を解放できます。
slapi_vattr_attr_free()
仮想属性を解放します。
#include "slapi-plugin.h" void slapi_vattr_attr_free(Slapi_Attr **a, int buffer_flags);
この関数は、次のパラメータを取ります。
解放する属性
SLAPI_VIRTUALATTRS_RETURNED_POINTERS
、SLAPI_VIRTUALATTRS_RETURNED_COPIES
、SLAPI_VIRTUALATTRS_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_RETURNED_TYPENAME_ONLY
のビットマスク
仮想属性に対する作業が完了したら、この関数を使用して解放します。
slapi_vattr_attrs_free()
仮想属性のリストを解放します。
#include "slapi-plugin.h" void slapi_vattr_attrs_free(vattr_type_thang **types, int flags);
この関数は、次のパラメータを取ります。
解放する属性のリスト
slapi_vattr_list_attrs()
にflags
として渡されるSLAPI_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_ONLY
、SLAPI_VIRTUALATTRS_REQUEST_POINTERS
、SLAPI_VIRTUALATTRS_LIST_OPERATIONAL_ATTRS
のビットマスク
この関数を使用して、slapi_vattr_list_attrs()
を使用して取得される仮想属性のリストを解放します。
slapi_vattr_filter_test()
仮想属性を含む可能性のあるエントリに対するフィルタをテストします。
#include "slapi-plugin.h" int slapi_vattr_filter_test( Slapi_PBlock *pb, Slapi_Entry *e, struct slapi_filter *f, int verify_access);
この関数は、次のパラメータを取ります。
検索リクエストを含むパラメータ・ブロック
候補エントリ
確認するフィルタ
確認前にエントリへのアクセスを検証するには1
、それ以外の場合には0
この関数は、候補エントリe
がフィルタf
と一致するかどうかを確認します。LDAP v3拡張一致フィルタはサポートされていません。
この関数は、フィルタが一致するか、またはフィルタがNULL
の場合には、0
を戻します。そうでない場合は、-1
を戻します。
slapi_vattr_is_registered()
属性が仮想である可能性があるかどうかを確認します。
#include "slapi-plugin.h" int slapi_vattr_is_registered(const char *attrtype, const char *scopendn);
この関数は、次のパラメータを取ります。
確認する属性タイプ
確認する範囲のベース
この関数は、指定された範囲内の属性タイプについて、仮想属性サービスが登録されているかどうかを確認します。
仮想属性サービスが属性タイプに登録されているという事実は、現在、サービスにより値を提供できることを保証するわけではありません。
この関数は、指定された範囲において属性が仮想である可能性がある場合には、1
を戻します。それ以外の場合は0
を戻します。
slapi_vattr_is_virtual()
属性が仮想属性として生成されているかどうかを確認します。
#include "slapi-plugin.h" int slapi_vattr_is_virtual( Slapi_Entry *e, const char *attrtype, Slapi_Value *v);
この関数は、次のパラメータを取ります。
確認するエントリ。
確認する属性タイプ。
現在は使用されていません。
この関数は、属性値が仮想属性として生成されている場合には1
を戻します。それ以外の場合は0
を戻します。
slapi_vattr_list_attrs()
エントリの実在属性および仮想属性のリストを取得します。
#include "slapi-plugin.h" int slapi_vattr_list_attrs(Slapi_Entry *e, vattr_type_thang **types, int flags, int *buffer_flags);
この関数は、次のパラメータを取ります。
取得する属性のエントリ
サーバーによって設定された属性のリスト
リストに何を設定するかを決定するSLAPI_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_ONLY
、SLAPI_VIRTUALATTRS_REQUEST_POINTERS
、SLAPI_VIRTUALATTRS_LIST_OPERATIONAL_ATTRS
のビットマスク
仮想属性がどのように処理されるかを決定するSLAPI_VIRTUALATTRS_RETURNED_POINTERS
、SLAPI_VIRTUALATTRS_RETURNED_COPIES
、SLAPI_VIRTUALATTRS_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_RETURNED_TYPENAME_ONLY
のビットマスク
この関数は、flags
パラメータに応じて、エントリe
の属性の全リストを指すtypes
を設定します。リストを解放する場合には、buffer_flags
パラメータを使用します。
属性にアクセスするには、slapi_vattr_values_type_thang_get()
を使用します。
この関数は、指定された範囲において属性が仮想である可能性がある場合には、1
を戻します。それ以外の場合は0
を戻します。
types
リストに対する作業が完了したら、slapi_vattr_attrs_free()
を使用して解放します。
slapi_vattr_value_compare()
指定されたエントリの属性タイプおよび名前を比較します。
#include "slapi-plugin.h" int slapi_vattr_value_compare( Slapi_Entry *e, char *type, Slapi_Value *test_this, int *result, int flags);
この関数は、次のパラメータを取ります。
比較するエントリ。
属性タイプ名。
テストする値。
比較がtrueの場合には0、比較がfalseの場合には1。
使用されません。このパラメータには0を渡す必要があります。
この関数は、成功した場合には0を戻し、このとき、result
に比較の結果が含まれます。
それ以外の場合、この関数は次を戻します。
SLAPI_VIRTUALATTRS_LOOP_DETECTED
(仮想属性の評価に失敗しました)
SLAPI_VIRTUAL_NOT_FOUND
(エントリ内の仮想属性および実在属性によってタイプを認識できません)
ENOMEM
(メモリー・エラー)
この関数をコールした後、slapi_vattr_values_free()
をコールする必要はありません。
slapi_vattr_values_free()
値セットおよびタイプ名を解放します。
#include "slapi-plugin.h" void slapi_vattr_values_free(Slapi_ValueSet **value, char **actual_type_name, int flags);
この関数は、次のパラメータを取ります。
解放する値セット。
タイプ名のリスト。
slapi_vattr_values_get_ex()
から戻されるバッファ・フラグ。これには、解放する必要があるオブジェクトをこの関数によって決定する必要があるという情報が含まれます。
この関数は、slapi_vattr_values_get_ex()
から戻された値セットおよびタイプ名を解放する場合に使用する必要があります。
slapi_vattr_values_get_ex()
エントリから属性タイプの値を戻します。
#include "slapi-plugin.h" int slapi_vattr_values_get_ex(Slapi_Entry *e, char *type, Slapi_ValueSet*** results, int **type_name_disposition, char ***actual_type_name, int flags, int *buffer_flags, int *subtype_count);
この関数は、次のパラメータを取ります。
値の取得元となるエントリ。
属性タイプ名。
結果セットへのポインタ。
一致する結果。
検出されたとおりのタイプ名。
オプションのビットマスク。有効な値は次のとおりです。
SLAPI_REALATTRS_ONLY
SLAPI_VIRTUALATTRS_ONLY
SLAPI_VIRTUALATTRS_REQUEST_POINTERS
SLAPI_VIRTUALATTRS_LIST_OPERATIONAL_ATTRS
slapi_vattr_values_free()
の入力フラグとして使用されるビットマスク。
一致したサブタイプの数。
この関数は、成功した場合には0を戻し、このとき、次のことが該当します。
results
には、e
に含まれるすべてのサブタイプのタイプについて現在の値が含まれます。
type_name_disposition
には、各タイプがどのように一致したかに関する情報が含まれます。有効な値は次のとおりです。
SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_EXACTLY_OR_ALIAS
SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_SUBTYPE
actual_type_name
には、検出されたとおりのタイプ名が含まれます。
buffer_flags
には、slapi_vattr_values_free()
の入力フラグとして使用されるビットマスクが含まれます。
subtype_count
には、一致したサブタイプの数が含まれます。
それ以外の場合、この関数は次を戻します。
SLAPI_VIRTUALATTRS_LOOP_DETECTED
(仮想属性の評価に失敗しました)
SLAPI_VIRTUAL_NOT_FOUND
(エントリ内の仮想属性および実在属性によってタイプを認識できません)
ENOMEM
(メモリー・エラー)
この関数は、指定された属性タイプの任意のサブタイプに対する値など、エントリからの属性タイプの値を戻します。要求された場合は、このエントリ内の仮想属性の値がルーチンによって戻されます。
slapi_vattr_values_free()
を使用して、このルーチンから戻されたbuffer_flags
値を渡し、戻された結果セットおよびタイプ名を解放する必要があります。
slapi_vattr_values_type_thang_get()
エントリの実在属性および仮想属性のリストから、値を取得します。
#include "slapi-plugin.h" int slapi_vattr_values_type_thang_get(Slapi_Entry *e, vattr_type_thang *type_thang, Slapi_ValueSet** results, int *type_name_disposition, char **actual_type_name, int flags, int *buffer_flags);
この関数は、次のパラメータを取ります。
属性が属するエントリ。
実在または仮想属性のタイプ。
サーバーによって設定された、属性の値。
タイプ名の一致方法を反映するようにサーバーによって設定され、SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_EXACTLY_OR_ALIAS
、SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_SUBTYPE
、SLAPI_VIRTUALATTRS_NOT_FOUND
(エントリ上にタイプの一致する実在属性または仮想属性がありません)またはSLAPI_VIRTUALATTRS_LOOP_DETECTED
(仮想属性を評価できませんでした)のいずれかです。
検出された実際のタイプ名に対してサーバーによって設定されます。
slapi_vattr_list_attrs()
を使用してリストを取得するときに適用されるSLAPI_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_ONLY
、SLAPI_VIRTUALATTRS_REQUEST_POINTERS
、SLAPI_VIRTUALATTRS_LIST_OPERATIONAL_ATTRS
のビットマスク。
SLAPI_VIRTUALATTRS_RETURNED_POINTERS
、SLAPI_VIRTUALATTRS_RETURNED_COPIES
、SLAPI_VIRTUALATTRS_REALATTRS_ONLY
、SLAPI_VIRTUALATTRS_RETURNED_TYPENAME_ONLY
のビットマスクに対してサーバーによって設定され、リストの解放に役立ちます。
この関数を使用すると、slapi_vattr_list_attrs()
によって設定されたリスト内の属性値に、最適な方法でアクセスできます。
この関数は、成功した場合には0を戻し、このとき、次のことが該当します。
results
には、e
に含まれるすべてのサブタイプのタイプについて現在の値が含まれます。
type_name_disposition
には、各タイプがどのように一致したかに関する情報が含まれます。有効な値は次のとおりです。
SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_EXACTLY_OR_ALIAS
SLAPI_VIRTUALATTRS_TYPE_NAME_MATCHED_SUBTYPE
actual_type_name
には、検出されたとおりのタイプ名が含まれます。
buffer_flags
には、slapi_vattr_values_free()
の入力フラグとして使用されるビットマスクが含まれます。
subtype_count
には、一致したサブタイプの数が含まれます。
それ以外の場合、この関数は次を戻します。
SLAPI_VIRTUALATTRS_LOOP_DETECTED
(仮想属性の評価に失敗しました)
SLAPI_VIRTUAL_NOT_FOUND
(エントリ内の仮想属性および実在属性によってタイプを認識できません)
ENOMEM
(メモリー・エラー)
slapi_wait_condvar()
条件変数における変更を待機します。
#include "slapi-plugin.h" int slapi_wait_condvar(Slapi_CondVar *cvar,struct timeval *timeout);
この関数は、次のパラメータを取ります。
待機する条件変数。
NULL
は、通知されるまでブロックすることを意味します。それ以外の場合、時間になるまでブロックしてから、ロックの取得を再試行します。
この関数を使用すると、待機と通知のメカニズムを使用したスレッド同期を実行できます。
成功した場合、この関数は1
を戻します。それ以外の場合はNULL
を戻します。
条件変数に対する変更を他のスレッドに通知するには、slapi_notify_condvar()
をコールします。