ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Directory Server Enterprise Edition開発者ガイド
11g リリース1 (11.1.1.7.0)
B72440-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

14 データ型と構造体のリファレンス

この章では、プラグイン関数で使用するデータ型と構造体について説明します。表14-1には、使用可能なデータ構造体のリストがまとめられています。表14-2には、コールバックのリストがまとめられています。

14.1 クイック・リファレンス表

表14-1 データ構造体に対するクイック・リファレンス

データ構造体またはコールバック 簡単な説明

berval


基本エンコーディング・ルールを使用してエンコードされるバイナリ・データ

computed_attr_context


算出属性を処理するときに使用する情報

LDAPControl


LDAP操作に関連付けられたLDAP v3コントロール

LDAPMod


ディレクトリ・エントリ属性に対する変更セット

Slapi_Attr


ディレクトリ・エントリ属性

Slapi_Backend


サーバー・バックエンド

Slapi_ComponentId


サーバーに割り当てられた識別子(内部操作に使用される)

Slapi_CondVar


スレッド同期の条件変数

Slapi_Connection


クライアント接続

Slapi_DN


識別名

Slapi_Entry


ディレクトリ・エントリ

Slapi_Filter


検索フィルタ

Slapi_MatchingRuleEntry


プラグインによって処理される一致ルール

Slapi_Mod


個々の属性に対する変更

Slapi_Mods


ディレクトリ・エントリに対する変更セット

Slapi_Mutex


スレッド同期のMutex

Slapi_Operation


保留中のLDAP操作

Slapi_PBlock


LDAP操作データを含むパラメータ・ブロック

Slapi_PluginDesc


提供するプラグインの説明

Slapi_RDN


相対識別名

Slapi_Value


個々の属性値

Slapi_ValueSet


属性値セット

vattr_type_thang


仮想の可能性がある属性


表14-2 コールバックに対するクイック・リファレンス

データ構造体またはコールバック 簡単な説明

mrFilterMatchFn


拡張可能な一致フィルタを処理する。

plugin_referral_entry_callback


内部検索で検出される参照を処理する。

plugin_result_callback


内部検索後に送信される結果を処理する。

plugin_search_entry_callback


内部検索で検出されるエントリを処理する。

roles_get_scope_fn_type


ロールの範囲を決定する。

send_ldap_referral_fn_ptr_t


参照をクライアントに送信する前に変更する。

send_ldap_result_fn_ptr_t


結果をクライアントに送信する前に変更する。

send_ldap_search_entry_fn_ptr_t


エントリをクライアントに送信する前に変更する。

slapi_compute_callback_t


算出属性を処理する。

slapi_compute_output_t


算出属性を計算する。

slapi_extension_constructor_fnptr


オブジェクト拡張の作成を処理する。

slapi_extension_destructor_fnptr


オブジェクト拡張の破棄を処理する。

slapi_plugin_init_fnptr


再帰的なプラグイン登録を処理する。


14.2 データ型と構造体(アルファベット順)

14.2.1 berval

簡素化された基本エンコーディング・ルール(BER)を使用してエンコードされたバイナリ・データを表します。

JPEGまたはオーディオ・ファイルなどのバイナリ属性値を使用するときにberval構造体を使用します。

14.2.1.1 構文

/* Defined in ldap.h, which is included by slapi-plugin.h */
#include "slapi-plugin.h"
struct berval {
    unsigned long   bv_len;
    char          * bv_val;
};

14.2.1.2 フィールド

この構造体には、次のフィールドがあります。

表14-3 bervalのフィールド

フィールド 説明

bv_len

エンコードされたデータのサイズ

bv_val

エンコードされたデータ自体


14.2.2 computed_attr_context

計算される属性の属性タイプ、現在のBERエンコーディングされたリクエストおよびパラメータ・ブロック・コンテキストなどの情報を表す不透明な構造体です。

14.2.2.1 構文

#include "slapi-plugin.h"
typedef struct _computed_attr_context computed_attr_context;

14.2.2.2 説明

サーバーは、クライアント・アプリケーションにエントリを送信する前に、計算される属性があるかどうかを決定します。該当する場合、サーバーはこれらの属性を生成し、エントリに含めます。

このプロセスの一部として、サーバーは、computed_attr_context構造体を作成し、属性値を生成する関数に関連情報を渡します。

14.2.3 LDAPControl

LDAP v3で指定されているように、LDAP操作に関連付けられたクライアントまたはサーバー・コントロールを表します。

クライアントおよびサーバー・コントロールは、LDAP操作の機能を拡張するために使用されることがあります。

14.2.3.1 構文

/* Defined in ldap.h, which is included by slapi-plugin.h */
#include "slapi-plugin.h"
typedef struct ldapcontrol {
    char          * ldctl_oid;
    struct berval   ldctl_value;
    char            ldctl_iscritical;
} LDAPControl, * PLDAPControl;

14.2.3.2 フィールド

この構造体には、次のフィールドがあります。

表14-4 LDAPControlのフィールド

フィールド 説明

ldctl_oid

コントロールのオブジェクト識別子(OID)。

ldctl_value

操作のコントロールによって使用される値を含むberval構造体。

ldctl_iscritical

LDAP_OPT_ONは、コントロールが操作にとって重要であることを示す。コントロールが操作にとって重要であるもののサポートされていない場合、サーバーはLDAP_UNAVAILABLE_CRITICAL_EXTENSIONを戻す。

LDAP_OPT_OFFは、コントロールが重要ではないことを示す。


14.2.4 LDAPMod

ディレクトリ・エントリの属性に対する変更を表します。

14.2.4.1 構文

/* Defined in ldap.h, which is included by slapi-plugin.h */
#include "slapi-plugin.h"
typedef struct ldapmod {
    int                  mod_op;
    char               * mod_type;
    union {
        char          ** modv_strvals;
        struct berval ** modv_bvals;
    } mod_vals;
} LDAPMod;
#define mod_values  mod_vals.modv_strvals
#define mod_bvalues mod_vals.modv_bvals

14.2.4.2 フィールド

この構造体には、次のフィールドがあります。

表14-5 LDAPModのフィールド

フィールド 説明

mod_op

実行する操作と属性値のデータ型。

mod_opフィールドは、実行する操作を指定する次の値を取る。

  • LDAP_MOD_ADD: エントリに属性値を追加する。

  • LDAP_MOD_DELETE: エントリから属性値を削除する。

  • LDAP_MOD_REPLACE: 既存の属性値を置換する。

    バイナリ値を指定するには、ビット単位OR演算子およびマクロLDAP_MOD_BVALUESを操作タイプ識別子とともに使用する。

    mod->mod_op = LDAP_MOD_ADD|LDAP_MOD_BVALUES;

mod_type

変更する属性タイプ。

mod_values

属性の文字列値のNULL終了配列へのポインタ。

mod_bvalues

属性のberval構造体のNULL終了配列へのポインタ。


14.2.4.3

例14-1では、メール・アドレスを変更するようにLDAPModを設定しています。

例14-1 エントリに対する変更の準備

#include "slapi-plugin.h"
/* Declare the appropriate structures.                       */
LDAPMod          mod_attr;         /* Attribute to modify    */
LDAPMod        * mods[2];          /* Array of modifications */
char           * mail_vals[] =     /* New mail address       */
                               {"quentin@example.com", NULL};

/* Set up the LDAPMod structure used to modify the entry.    */
mod_attr.mod_type   = "mail";
mod_attr.mod_op     = LDAP_MOD_REPLACE;
mod_attr.mod_values = mail_vals;   /* "quentin@example.com"  */
mods[0]             = &mod_attr;
mods[1]             = NULL;

/* Modify the entry using slapi_modify_internal_set_pb()...  */

例14-2では、パラメータ・ブロックの内容に任意でさらに変更を追加しています。たとえば、このコードは、事前操作変更プラグイン関数の一部になることがあります。

例14-2 さらなる変更の追加

#include "slapi-plugin.h"

/*
 * Set up an LDAPMod array, modify_mods, of additional modifications.
 */

if (modify_mods != NULL) {
    LDAPMod ** mods;
    Slapi_Mods smods;
    int        i;

    slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &mods);
    slapi_mods_init_passin(&smods, mods);

    for (i = 0; modify_mods[i] != NULL; i++) {
        /* Do not copy mods.                                        */
        slapi_mods_add_ldapmod(&smods, modify_mods[i]);
    }

    mods = slapi_mods_get_ldapmods_passout(&smods);
    slapi_pblock_set(pb, SLAPI_MODIFY_MODS, mods);
    slapi_mods_done(&smods);

    /* Release container only. Content is still pointed to by mods. */
    slapi_ch_free((void **)&modify_mods);
}

14.2.5 mrFilterMatchFn

フィルタ一致のコールバック関数を指定します。サーバーは、検索操作を処理するときに、拡張可能な一致検索フィルタと一致する候補ごとに1回この関数をコールします。

14.2.5.1 構文

#include "slapi-plugin.h"
typedef int (*mrFilterMatchFn) (void* filter, Slapi_Entry* entry,
    Slapi_Attr* vals);

14.2.5.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-6 mrFilterMatchFnのパラメータ

パラメータ 説明

filter

フィルタ・ファクトリ関数によって作成されたフィルタ。

entry

サーバーによってチェックされる候補エントリを表すSlapi_Entry

vals

エントリ内の最初の属性を表すSlapi_Attr

残りの属性に対して処理を繰り返すには、slapi_entry_next_attr()をコールする。


14.2.5.3 説明

サーバーは、一致ルール・プラグインを使用して拡張可能な一致フィルタを処理するときに、このフィルタ一致関数をコールします。拡張可能な一致フィルタは、一致するエントリが検出される仕組みを示した一致ルールのOIDか属性タイプのいずれか、またはその両方を指定します。たとえば、よく似た一致ルールを実装して、指定された値に類似するすべてのエントリを検出することができます。

一致ルールに対して拡張可能な一致フィルタを処理するには、このコールバックと、フィルタ構造体filterを作成するフィルタ・ファクタの両方を実装します。コールバックは、この構造体から属性タイプや値などのフィルタに関する情報を取得し、この情報を候補entry内の属性タイプや値と比較します。

14.2.5.4 戻り値

コールバックは、フィルタが一致する場合は0、フィルタが一致しない場合は-1を戻す必要があります。エラー発生時は、RFC 4511『Lightweight Directory Access Protocol (v3)』「Result Message」の項に示されているように、LDAPエラー・コードを戻すことがあります。

14.2.6 plugin_referral_entry_callback

参照のコールバック関数を指定します。サーバーは、このコールバックをトリガーするために実装された内部検索がLDAP v3参照を検出すると、この関数をコールします。

14.2.6.1 構文

#include "slapi-plugin.h"
typedef int (*plugin_referral_entry_callback)(char * referral,
    void *callback_data);

14.2.6.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-7 plugin_referral_entry_callbackのパラメータ

パラメータ 説明

referral

検索によって検出される参照のURL。

callback_data

内部検索操作に渡されるポインタ。

コールバック関数とプラグイン本体の間でデータを渡すにはこれを使用する。


14.2.6.3 説明

これをslapi_search_internal_callback_pb()precパラメータとして渡します。内部検索は、参照エントリを検出するたびに、この関数をコールします。

14.2.6.4 戻り値

サーバーは、コールバックの戻り値を使用しません。

14.2.7 plugin_result_callback

検索結果のコールバック関数を指定します。サーバーは、このコールバックをトリガーするために実装された内部検索がLDAP結果を戻すと、この関数をコールします。

14.2.7.1 構文

#include "slapi-plugin.h"
typedef void (*plugin_result_callback)(int rc, void *callback_data);

14.2.7.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-8 plugin_result_callbackのパラメータ

パラメータ 説明

rc

検索によって戻されるLDAP結果コード。

callback_data

内部検索操作に渡されるポインタ。

コールバック関数とプラグイン本体の間でデータを渡すにはこれを使用する。


14.2.7.3 説明

これをslapi_search_internal_callback_pb()prcパラメータとして渡します。サーバーは、検索が中止されなければ、検索操作ごとに1回この関数をコールします(中止された場合、関数はコールされません)。

14.2.8 plugin_search_entry_callback

エントリのコールバック関数を指定します。サーバーは、このコールバックをトリガーするために実装された内部検索がLDAPエントリを検出すると、この関数をコールします。

14.2.8.1 構文

#include "slapi-plugin.h"
typedef int (*plugin_search_entry_callback)(Slapi_Entry *e,
    void *callback_data);

14.2.8.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-9 plugin_search_entry_callbackのパラメータ

パラメータ 説明

e

検索によって検出されるエントリへのポインタ。

callback_data

内部検索操作に渡されるポインタ。

コールバック関数とプラグイン本体の間でデータを渡すにはこれを使用する。


14.2.8.3 説明

これをslapi_search_internal_callback_pb()psecパラメータとして渡します。内部検索は、参照エントリを検出するたびに、この関数をコールします。

14.2.8.4 戻り値

コールバックは、検索を続けるには0を、検索を中断するには-1を戻す必要があります。

14.2.9 roles_get_scope_fn_type

ある範囲のロールを決定するためのコールバック関数を指定します。プラグインは、slapi_role_get_scope()を使用してこのコールバックをトリガーします。

14.2.9.1 構文

#include "slapi-plugin.h"
typedef int (*roles_get_scope_fn_type)(Slapi_Entry *role_entry,
    Slapi_DN ***scope, int *nb_scope);

14.2.9.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-10 roles_get_scope_fn_typeのパラメータ

パラメータ 説明

role_entry

ロールを定義するエントリ。

scope

範囲のベースでエントリの識別名に設定する。

nb_scope

LDAP_SCOPE_BASELDAP_SCOPE_ONELEVELまたはLDAP_SCOPE_SUBTREEなどの値に設定する。


14.2.9.3 説明

このコールバックは、role_entryによって識別される範囲のロールを決定します。slapi_register_role_get_scope()を使用して、サーバーにコールバックを登録します。

14.2.9.4 戻り値

成功した場合は0、それ以外の場合は-1を戻します。

14.2.10 send_ldap_referral_fn_ptr_t

サーバーが結果をクライアントに送信する前にトリガーされるコールバックを指定します。

14.2.10.1 構文

#include "slapi-plugin.h"
typedef int (*send_ldap_referral_fn_ptr_t)( Slapi_PBlock *pb,
    Slapi_Entry *e, struct berval **refs, struct berval ***urls );

14.2.10.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-11 send_ldap_referral_fn_ptr_tのパラメータ

パラメータ 説明

pb

操作の現在のパラメータ・ブロック

e

操作の現在のエントリ

refs

エントリで検出されるLDAP v3参照(検索結果の参照)を含むberval構造体のNULL終了配列へのポインタ

urls

LDAP v2クライアントのLDAP参照の収集に使用されるberval構造体の配列へのポインタ


14.2.10.3 説明

このコールバックによって、クライアントに戻される参照を変更できます。slapi_search_internal_callback_pb()を使用して、サーバーにコールバックを登録します。

14.2.10.4 戻り値

成功した場合は0、そうでない場合は-1を戻します。

14.2.11 send_ldap_result_fn_ptr_t

サーバーが結果をクライアントに送信する前にトリガーされるコールバックを指定します。

14.2.11.1 構文

#include "slapi-plugin.h"
typedef void (*send_ldap_result_fn_ptr_t)( Slapi_PBlock *pb,
    int err, char *matched, char *text, int nentries,
    struct berval **urls );

14.2.11.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-12 send_ldap_result_fn_ptr_tのパラメータ

パラメータ 説明

pb

操作の現在のパラメータ・ブロック

err

結果コード。

matched

LDAP_NO_SUCH_OBJECT結果コードを返信するときに、この引数を使用して、一致する可能性があるターゲットDNの部分を指定する。(他の状況ではNULLを渡す。)

text

クライアントに返信するエラー・メッセージ。(エラー・メッセージを返信しない場合はNULLを渡す。)

nentries

LDAP検索操作の結果コードを返信するときに、この引数を使用して、検出された一致エントリの数を指定する。

urls

LDAP_PARTIAL_RESULTS結果コードをLDAP v2クライアントに返信するとき、またはLDAP_REFERRAL結果コードをLDAP v3クライアントに返信するときに、この引数を使用して、参照URLを含むberval構造体の配列を指定する。(他の状況ではNULLを渡す。)


14.2.11.3 説明

このコールバックによって、クライアントに戻される結果を変更できます。slapi_search_internal_callback_pb()を使用して、サーバーにコールバックを登録します。

14.2.11.4 戻り値

成功した場合は0、そうでない場合は-1を戻します。

14.2.12 send_ldap_search_entry_fn_ptr_t

検索によって戻されるエントリをサーバーがクライアントに送信する前にトリガーされるコールバックを指定します。

14.2.12.1 構文

#include "slapi-plugin.h"
typedef int (*send_ldap_search_entry_fn_ptr_t)( Slapi_PBlock *pb,
    Slapi_Entry *e, LDAPControl **ectrls, char **attrs,
    int attrsonly );

14.2.12.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-13 send_ldap_search_entry_fn_ptr_tのパラメータ

パラメータ 説明

pb

操作の現在のパラメータ・ブロック

e

検索によって戻されるエントリ。

ectrls

操作のコントロールの配列。

attrs

検索結果で戻すための属性タイプの配列。

attrsonly

  • 0: 値とタイプの両方を戻す。

  • 1: 属性タイプのみを戻す。


14.2.12.3 説明

このコールバックによって、クライアントに戻される内容を変更できます。slapi_search_internal_callback_pb()を使用して、サーバーにコールバックを登録します。

14.2.12.4 戻り値

成功した場合は0、そうでない場合は-1を戻します。

14.2.13 Slapi_Attr

ディレクトリ・エントリ属性を表す不透明な構造体です。

14.2.13.1 構文

#include "slapi-plugin.h"
typedef struct slapi_attr Slapi_Attr;

14.2.13.2 関連項目

Slapi_Entry

14.2.14 Slapi_Backend

サーバー・バックエンドを表す不透明な構造体です。

14.2.14.1 構文

#include "slapi-plugin.h"
typedef struct backend Slapi_Backend;

14.2.14.2 関連項目

表15-18

14.2.15 Slapi_ComponentId

内部操作を処理するときに、プラグインを識別するためにサーバーによって使用されるコンポーネント識別子を表す不透明な構造体です。

14.2.15.1 構文

#include "slapi-plugin.h"
typedef struct slapi_componentid Slapi_ComponentId;

14.2.15.2

次のコードでは、内部検索中に使用されるプラグイン・コンポーネント識別子を設定しています。

例14-3 内部操作で使用するプラグイン識別子の設定

#include "slapi-plugin.h"
/* Declare the identifier as global to the plug-in.                 */
static Slapi_ComponentId * postop_id;

/* Assign a value as part of plug-in initialization.                */
int
testpostop_init(Slapi_PBlock * pb)
{
    int rc = 0;
    /* Register description, other functions, and so forth.         */
    rc |= slapi_pblock_set(
        pb,
        SLAPI_PLUGIN_START_FN,
        (void *) testpostop_set_log
    );
    /* Assign a value to the identifier.                            */
    rc |= slapi_pblock_get(pb, SLAPI_PLUGIN_IDENTITY, &postop_id);
    return (rc);
}

/* The server uses the identifier when processing
 * internal operations, such as an internal search.                 */
int
testpostop_set_log(Slapi_PBlock * pb)
{
    Slapi_DN    * confdn = NULL;       /* DN for configuration entry */
    Slapi_Entry * config = NULL;       /* Configuration entry        */
    int rc = 0;

    confdn = slapi_sdn_new_dn_byval("cn=config");
    rc |= slapi_search_internal_get_entry(confdn, NULL, &config, postop_id);
    /* Use the results of the search.                                */
    return(rc);
}

14.2.16 slapi_compute_callback_t

算出属性に値を指定するためにコールされる関数を決定するための関数を指定します。

14.2.16.1 構文

typedef int (*slapi_compute_callback_t)(computed_attr_context *c,
    char* type,Slapi_Entry *e,slapi_compute_output_t outputfn);

14.2.16.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-14 slapi_compute_callback_tのパラメータ

フィールド 説明

c

コールバックのコンテキスト

type

outputfnによって値が計算される属性タイプ

e

算出属性を含むエントリ(このコールバックが戻された後にクライアントに戻される)

outputfn

属性値を計算するためのコールバック


14.2.16.3 説明

このコールバックは、指定のコンテキストc、エントリeのタイプtypeの属性の値を計算する関数を選択します。サーバーは、この関数をコールして、操作を要求したクライアントにエントリeを戻す前に属性値を計算するための関数を取得します。

この関数は、プラグイン初期化関数でslapi_compute_add_evaluator()を使用して、サーバーに登録されます。

14.2.16.4 戻り値

この関数は、成功すると0を戻します。typeで渡された属性タイプを処理しない場合は、-1を戻します。それ以外の場合は、LDAPエラー・コードを戻します。

14.2.17 slapi_compute_output_t

算出属性の値を決定するためのコールバック関数を指定します。

14.2.17.1 構文

typedef int (*slapi_compute_output_t)(computed_attr_context *c,
    Slapi_Attr *a , Slapi_Entry *e);

14.2.17.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-15 slapi_compute_output_tのパラメータ

パラメータ 説明

c

コールバックのコンテキスト

a

コールバックが値を計算する属性

e

算出属性を含むエントリ(このコールバックが戻された後にクライアントに戻される)


14.2.17.3 説明

このコールバックは、指定のコンテキストc、エントリeの属性aの値を計算します。slapi_compute_add_evaluator()を使用して登録するslapi_compute_callback_t関数は、この関数をコールして、サーバーにエントリeを戻す前にaの値を計算します。

14.2.17.4 戻り値

この関数は、成功すると0を戻します。aで渡された属性タイプを処理しない場合は、-1を戻します。それ以外の場合は、LDAPエラー・コードを戻します。

14.2.18 Slapi_CondVar

スレッド同期を処理するためにプラグインによって使用される条件変数を表す不透明な構造体です。

14.2.18.1 構文

#include "slapi-plugin.h"
typedef struct slapi_condvar Slapi_CondVar;

14.2.19 Slapi_Connection

サーバーへの接続を表す不透明な構造体です。

14.2.19.1 構文

#include "slapi-plugin.h"
typedef struct conn Slapi_Connection;

14.2.20 Slapi_DN

識別名(DN)を表す不透明な構造体です。構造体は、元のDNを保持し、slapi_sdn_get_ndn()がコールされた後に正規化されたバージョンも保持できます。

14.2.20.1 構文

#include "slapi-plugin.h"
typedef struct slapi_dn Slapi_DN;

14.2.20.2 関連項目

表15-7および表15-19

14.2.21 Slapi_Entry

ディレクトリ・エントリを表す不透明な構造体です。

14.2.21.1 構文

#include "slapi-plugin.h"
typedef struct slapi_entry Slapi_Entry;

14.2.21.2 関連項目

Slapi_Attr

表15-8

14.2.22 slapi_extension_constructor_fnptr

オブジェクト拡張のコールバック関数を指定します。

14.2.22.1 構文

#include "slapi-plugin.h"
typedef void *(*slapi_extension_constructor_fnptr)
    (void *object, void *parent);

14.2.22.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-16 slapi_extension_constructor_fnptrのパラメータ

パラメータ 説明

object

拡張されたオブジェクト

parent

拡張の親オブジェクト


14.2.22.3 説明

このコールバックは、slapi_get_object_extension()を使用して取得できるオブジェクト拡張を登録します。

オブジェクト拡張が存在しない場合、このコールバックがオブジェクト拡張のみを作成することを確認します。

コールバックは、実際のプラグイン初期化関数の一部としてslapi_register_object_extension()を使用してサーバーに登録されます。

14.2.22.4 戻り値

このコールバックは、拡張へのポインタを戻します。それ以外の場合は、NULLを戻します。

14.2.23 slapi_extension_destructor_fnptr

オブジェクト拡張に割り当てられたメモリーを解放するためのコールバック関数を指定します。

14.2.23.1 構文

#include "slapi-plugin.h"
typedef void (*slapi_extension_destructor_fnptr)(void *extension,
    void *object, void *parent);

14.2.23.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-17 slapi_extension_destructor_fnptrのパラメータ

パラメータ 説明

extension

オブジェクト拡張

object

拡張されたオブジェクト

parent

拡張の親


14.2.23.3 説明

このコールバックは、オブジェクト拡張に割り当てられたメモリーを解放します。関数は、プラグイン初期化関数でslapi_register_object_extension()を使用して、サーバーに登録されます。

14.2.24 Slapi_Filter

検索フィルタを表す不透明な構造体です。

14.2.24.1 構文

#include "slapi-plugin.h"
typedef struct slapi_filter Slapi_Filter;

14.2.24.2 関連項目

表15-10

14.2.25 Slapi_MatchingRuleEntry

プラグインによって処理されるLDAP v3一致ルールを表す不透明な構造体です。

14.2.25.1 構文

#include "slapi-plugin.h"
typedef struct slapi_matchingRuleEntry Slapi_MatchingRuleEntry;

14.2.25.2 関連項目

表15-12

14.2.26 Slapi_Mod

ディレクトリ・エントリ属性の変更を表す不透明な構造体です。

パラメータ・ブロックは、Slapi_Mod構造体ではなくLDAPMod構造体を使用します。後者のタイプは、幅広く変更を処理するプラグインに便利です。

14.2.26.1 構文

#include "slapi-plugin.h"
typedef struct slapi_mod Slapi_Mod;

14.2.26.2 関連項目

LDAPMod

表15-13

14.2.27 Slapi_Mods

ディレクトリ・エントリに対する一連の変更を表す不透明な構造体です。

パラメータ・ブロックは、Slapi_Mods構造体ではなくLDAPMod構造体の配列を使用します。後者のタイプは、幅広く変更を処理するプラグインに便利です。

14.2.27.1 構文

#include "slapi-plugin.h"
typedef struct slapi_mods Slapi_Mods;

14.2.27.2 関連項目

LDAPMod

表15-13

14.2.28 Slapi_Mutex

プラグインによって使用されるmutexロックを表す不透明な構造体です。

14.2.28.1 構文

#include "slapi-plugin.h"
typedef struct slapi_mutex Slapi_Mutex;

14.2.29 Slapi_Operation

LDAPクライアントからの保留中の操作を表す不透明な構造体です。

構造体は、他のデータとの間で、要求された操作のタイプを記録します。

14.2.29.1 構文

#include "slapi-plugin.h"
typedef struct op Slapi_Operation;

14.2.29.2 関連項目

slapi_op_abandoned()

slapi_op_get_type()

14.2.30 Slapi_PBlock

パラメータ・ブロックと呼ばれ、サーバー操作のコンテキストで更新された名前/値ペアを含む不透明な構造体です。

14.2.30.1 構文

#include "slapi-plugin.h"
typedef struct slapi_pblock Slapi_PBlock;

14.2.30.2 説明

プラグイン関数のほとんどのタイプは、サーバーによって、処理される操作に関連するデータを含むパラメータ・ブロック(Slapi_PBlock)で渡されます。slapi_pblock_get()を使用してデータにアクセスします。

プラグイン初期化関数は、slapi_pblock_set()を使用して、少なくともプラグインAPIバージョン、プラグインの説明およびその他のプラグイン関数を登録します。

Slapi_PBlock構造体で使用可能な特定のパラメータは、プラグイン関数のタイプとLDAP操作のコンテキストに依存します。プラグイン関数の特定のタイプに使用可能な名前/値ペアの詳細は、335ページの「パラメータ・ブロック・リファレンス」を参照してください。

14.2.30.3 関連項目

表15-1

第14章「データ型と構造体のリファレンス」

Slapi_PBlockの使用例は、$INSTALL_DIR/examples/の下のサンプル・プラグインを参照してください。

14.2.31 Slapi_PluginDesc

プラグインを識別するために指定するプラグインの説明を表します。

プラグイン初期化関数は、この情報をサーバーに登録する必要があります。

14.2.31.1 構文

#include "slapi-plugin.h"
typedef struct slapi_plugindesc {
    char * spd_id;
    char * spd_vendor;
    char * spd_version;
    char * spd_description;
} Slapi_PluginDesc;

14.2.31.2 フィールド

この構造体には、次のフィールドがあります。

表14-18 Slapi_PluginDescのフィールド

フィールド 説明

spd_id

プラグインの一意(サーバー全体)の識別子

spd_vendor

Oracle CorporationCaretなどのプラグインを供給するベンダーの名前

spd_version

5.2などのプラグイン・バージョン番号(プラグインによってサポートされているプラグインAPIバージョンを指定するSLAPI_PLUGIN_VERSIONと混同しないこと)

spd_description

Sample post-operation plug-inなどのプラグインの簡単な説明


14.2.31.3 関連項目

Slapi_PluginDescの使用例は、$INSTALL_DIR/examples/の下のサンプル・プラグインを参照してください。

14.2.32 slapi_plugin_init_fnptr

他のプラグインを登録するためのコールバック関数を指定します。

14.2.32.1 構文

#include "slapi-plugin.h"
typedef int (*slapi_plugin_init_fnptr)( Slapi_PBlock *pb );

14.2.32.2 パラメータ

コールバックは、次のパラメータを取ります。

表14-19 slapi_plugin_init_fnptrのパラメータ

パラメータ 説明

pb

初期化関数に渡されるパラメータ・ブロック


14.2.32.3 説明

このコールバックは、プラグイン初期化関数を模倣し、1つのプラグインが他のプラグインを登録することを許可します。関数は、実際のプラグイン初期化関数の一部としてslapi_register_plugin()を使用してサーバーに登録されます。

14.2.32.4 戻り値

このコールバックは、成功すると0を戻します。そうでない場合は、-1を戻します。

14.2.32.5 関連項目

プラグイン初期化関数の例は、$INSTALL_DIR/examples/の下のサンプル・プラグインを参照してください。

14.2.33 Slapi_RDN

同じ親を持つ他のエントリとそのエントリを差別化するDNの一部である相対識別名(RDN)を表す不透明な構造体です。

14.2.33.1 構文

#include "slapi-plugin.h"
typedef struct slapi_rdn Slapi_RDN;

14.2.33.2 関連項目

表15-20

14.2.34 Slapi_Value

個々の属性値を表す不透明な構造体です。

一度に属性のすべての値を処理するときは、かわりにSlapi_ValueSetを使用します。

14.2.34.1 構文

#include "slapi-plugin.h"
typedef struct slapi_value Slapi_Value;

14.2.34.2 関連項目

表15-21

14.2.35 Slapi_ValueSet

属性の値セットを表す不透明な構造体です。

個々の属性値を処理するときは、かわりにSlapi_Valueを使用します。

14.2.35.1 構文

#include "slapi-plugin.h"
typedef struct slapi_value_set Slapi_ValueSet;

14.2.35.2 関連項目

表15-22

14.2.36 vattr_type_thang

エントリの実際の属性と仮想属性の両方を表す不透明な構造体です。

14.2.36.1 構文

#include "slapi-plugin.h"
typedef struct _vattr_type_thang vattr_type_thang;

14.2.36.2 関連項目

表15-25