| 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変更操作用に要求するコントロールの配列
uniqueidDNを使用しない場合、エントリの一意識別子
plugin_identityプラグインの初期化時にSLAPI_PLUGIN_IDENTITYから取得したプラグイン識別子です。
operation_flagsNULLまたは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);
この関数は、次のパラメータを取ります。
pbSLAPI_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
controlsRDN変更操作用に要求するコントロールの配列
uniqueidDNを使用しない場合、エントリの一意識別子
plugin_identityプラグインの初期化時にSLAPI_PLUGIN_IDENTITYから取得したプラグイン識別子です。
operation_flagsNULLまたは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_scopeLDAP_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()をコールします。