Oracle® Fusion Middleware Oracle Directory Server Enterprise Edition開発者ガイド 11g リリース1 (11.1.1.7.0) B72440-01 |
|
前 |
次 |
この章は、書込みプラグインのパブリック関数に関するリファレンスの前半部分です。リファレンスの後半部分は、次の章を参照してください。この章では、次の項目について説明します。
関数の説明では、各関数の詳しい説明の他に、関数のヘッダー・ファイルと構文、関数のパラメータ、関数の戻り値およびメモリーに関する注意事項について説明します。
この項では、プラグインの関数を機能領域別に分類します。
表15-1 パラメータ・ブロック処理の関数
関数 | 説明 |
---|---|
|
パラメータ・ブロックをメモリーから解放します。 |
|
パラメータ・ブロックから値を取得します。 |
|
新しいパラメータ・ブロックを作成します。 |
|
パラメータ・ブロックの値を設定します。 |
表15-2 メモリー処理の関数
関数 | 説明 |
---|---|
|
既存の配列を解放します。 |
|
既存の |
|
既存の |
|
指定されたサイズの要素数を持つ配列に領域を割り当てます。 |
|
|
|
既存の文字列を解放します。 |
|
メモリーに領域を割り当てます。 |
|
割り当てられたメモリー・ブロックのサイズを変更します。 |
|
既存の文字列のコピーを作成します。 |
表15-3 アクセス制御処理の関数
関数 | 説明 |
---|---|
|
現在の操作を要求しているユーザーに、指定されたエントリ、属性または値に操作を実行するアクセス権があるかどうかを確認します。 |
|
指定された変更をエントリに実行する権限がユーザーにあるかどうかを確認します。 |
|
エントリのアクセス制御項目(ACI)が有効であるかどうかを確認します。 |
表15-4 属性処理の関数
関数 | 説明 |
---|---|
|
属性に値を追加します。 |
|
属性のベース型を戻します。 |
|
属性を複製します。 |
|
属性の最初の値を取得します。 |
|
特定のフラグが設定されているかどうかを判別します。 |
|
属性を解放します。 |
|
属性に格納されている値を |
|
属性に関連付けられているフラグを取得します。 |
|
属性が持つ値の数を整数に格納します。 |
|
属性タイプを検索し、そのOID文字列を取得します。 |
|
属性タイプの名前を取得します。 |
|
属性の値を値セットにコピーします。 |
|
空の属性を初期化します。 |
|
新しい属性を作成します。 |
|
属性の次の値を取得します。 |
|
正規化された属性タイプのコピーを戻します。 |
|
2つの属性を比較します。 |
|
2つの属性名を比較し、それらが同じ属性を表すかどうかを判別します。 |
|
2つの属性値を比較します。 |
|
指定された値が属性に含まれているかどうかを確認します。 |
表15-5 基本エンコーディング・ルール値処理の関数
関数 | 説明 |
---|---|
|
2つの |
|
既存の |
|
既存の |
表15-6 コントロール処理の関数
関数 | 説明 |
---|---|
|
|
|
Directory Serverがサポートするコントロールを示す、オブジェクト識別子(OID)の割当て済配列を取得します。 |
|
指定されたオブジェクト識別子(OID)が、コントロールのリストに存在するコントロールを示すかどうかを判別します。 |
|
|
|
指定されたコントロールをサーバーに登録します。この関数により、コントロールがオブジェクト識別子(OID)に関連付けられます。 |
表15-7 識別名文字列処理の関数
関数 | 説明 |
---|---|
|
エントリの親のDNのコピーを取得します。 |
|
DNのすべての文字を小文字に変換します。 |
|
DNがローカル・データベースのサフィックスであるかどうかを判別します。 |
|
DNがローカル・データベースのサフィックスであるかどうかを判別します。 |
|
DNが特定DNの親であるかどうかを判別します。 |
|
DNがローカル・データベースのルートDNであるかどうかを判別します。 |
|
DNが指定されたサフィックスと等しいかどうかを判別します。 |
|
DNを正規のフォーマットに変換します。 |
|
DNを正規のフォーマットに変換し、すべての文字を小文字に変換します。 |
|
DN値の一部を正規化します。 |
|
エントリの親のDNを取得します。 |
|
RDNをDNに追加します。 |
表15-8 エントリ処理の関数
関数 | 説明 |
---|---|
|
LDIF文字列表現を生成します。 |
|
オプションを指定してLDIF文字列表現を生成します。 |
|
エントリのRDN内のコンポーネントを追加します。 |
|
エントリの属性に文字列値を追加します。 |
|
エントリの属性にデータ値を追加します。 |
|
エントリの属性にデータ値を追加します。 |
|
新しいエントリにメモリーを割り当てます。 |
|
エントリから属性を削除します。 |
|
特定の属性がエントリに含まれているかどうかをチェックします。 |
|
最初の値を文字列として取得します。 |
|
最初の値を整数として取得します。 |
|
最初の値をLong整数として取得します。 |
|
最初の値を符号なし整数として取得します。 |
|
最初の値を符号なしLong整数として取得します。 |
|
エントリの属性に値が含まれているかどうかをチェックします。 |
|
エントリの属性値に配列を追加します。 |
|
エントリの属性値を置換します。 |
|
属性の値を文字列で置換します。 |
|
属性の値を整数で置換します。 |
|
属性の値をLong整数で置換します。 |
|
属性の値を符号なし整数で置換します。 |
|
属性の値を符号なしLong整数で置換します。 |
|
属性から文字列を削除します。 |
|
属性から |
|
エントリおよびそのDNと属性をコピーします。 |
|
エントリの最初の属性を検索します。 |
|
メモリーからエントリを解放します。 |
|
エントリからDNを取得します。 |
|
エントリのDNを定数として戻します。 |
|
エントリのNDNを戻します。 |
|
エントリから |
|
エントリから |
|
エントリから一意のIDを取得します。 |
|
指定したエントリに子エントリがあるかどうかを判別します。 |
|
エントリの値を初期化します。 |
|
エントリがディレクトリ・スーパーユーザーのエントリであるかどうかを判別します。 |
|
エントリの属性にデータ値の配列を追加します。 |
|
エントリの次の属性を検索します。 |
|
エントリのRDNに存在する値が、属性値としても存在するかどうかをチェックします。 |
|
エントリがオブジェクト・クラスのスキーマに準拠しているかどうかを判別します。 |
|
エントリに対する一連の変更がスキーマに準拠しているかどうかを判別します。 |
|
エントリのDNを設定します。 |
|
エントリに |
|
エントリのサイズを戻します。 |
|
エントリの属性が属性構文ルールに準拠しているかどうかを判別します。 |
|
エントリ内の指定された仮想属性を検索します。 |
|
エントリがルートDSEであるかどうかを判別します。 |
|
LDIF表現をエントリに変換します。 |
表15-10 フィルタ処理の関数
関数 | 説明 |
---|---|
|
2つのフィルタが同一であるかどうかを判別します。 |
|
指定されたフィルタを解放します。 |
|
すべての種類の単純なフィルタの属性タイプを取得します。 |
|
フィルタから属性タイプおよび値を取得します。 |
|
指定されたフィルタのタイプを取得します。 |
|
フィルタから部分文字列値を取得します。 |
|
フィルタで指定された属性タイプを取得します。 |
|
指定された2つのフィルタを結合します。 |
|
指定されたフィルタを構成する最初のフィルタを取得します。 |
|
次のフィルタを取得します。 |
|
指定されたエントリが特定のフィルタに一致するかどうかを判別します。 |
|
エントリが指定されたフィルタに一致するかどうかを判別します。 |
|
エントリがフィルタに一致するかどうかを判別します。 |
|
検索フィルタの文字列表現を |
表15-11 内部操作処理の関数
関数 | 説明 |
---|---|
|
|
|
パラメータ・ブロックに基づいてLDAP追加操作を追加し、新しいディレクトリ・エントリを追加します。 |
|
内部追加操作の |
|
パラメータ・ブロックに基づいてLDAP削除操作を実行し、ディレクトリ・エントリを削除します。 |
|
内部削除操作の |
|
検索結果を解放します。 |
|
パラメータ・ブロックに基づいてLDAP変更操作を実行し、ディレクトリ・エントリを変更します。 |
|
内部変更操作の |
|
パラメータ・ブロックに基づいてLDAP変更RDN操作を実行し、ディレクトリ・エントリの名前を変更します。 |
|
内部変更RDN操作の |
|
パラメータ・ブロックに基づいてLDAP検索操作を実行し、ディレクトリを検索します。 |
|
内部検索操作を実行し、1つのエントリを読み取ります。 |
|
パラメータ・ブロックに基づいてLDAP検索操作を実行し、ディレクトリを検索します。 |
|
内部検索操作の |
表15-12 一致ルール処理の関数
関数 | 説明 |
---|---|
|
一致ルールの登録後に |
|
|
|
|
|
一致ルールをサーバーに登録します。 |
|
|
|
一致ルールのフィルタ索引関数をコールします。 |
|
一致ルールのインデクサ・ファクトリ関数へのポインタを取得します。 |
表15-13 変更処理の関数
関数 | 説明 |
---|---|
|
|
|
指定されたエントリの変更が属性構文ルールに準拠しているかどうかを判別します。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
新しい |
|
|
|
|
|
|
|
|
|
1つの属性値を持つ新しい |
|
|
|
|
|
|
|
|
|
文字列として指定された1つの属性値を使用して、新しい |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
既存の |
|
|
|
イテレータの現在位置より後の |
|
|
|
イテレータの現在位置より前の |
|
|
|
イテレータの現在位置より前の |
|
|
|
初期化されていない新しい |
|
|
|
指定された |
表15-15 パスワード処理の関数
関数 | 説明 |
---|---|
|
指定されたパスワードが、属性のハッシュ値のいずれかと一致するかどうかを判別します。 |
|
指定されたパスワードが、属性のハッシュ値のいずれかと一致するかどうかを判別します。 |
表15-16 ロール処理の関数
関数 | 説明 |
---|---|
|
ロールの有効範囲を決定するコールバックを登録します。 |
|
参照されたエントリに、指定されたロールが含まれているかどうかをチェックします。 |
|
ロールの有効範囲を指定します。 |
表15-17 SASLメカニズム処理の関数
関数 | 説明 |
---|---|
|
サポートされているSimple Authentication and Security Layer (SASL)メカニズムの名前の配列を取得します。 |
|
指定されたSimple Authentication and Security Layer (SASL)メカニズムをサーバーに登録します。 |
表15-18 Slapi_Backend
構造体処理の関数
関数 | 説明 |
---|---|
|
指定されたDNを含むバックエンドが存在するかどうかをチェックします。 |
|
指定されたバックエンドの名前を戻します。 |
|
バックエンドに関連付けられたデータベースが読取り専用モードであるかどうかを示します。 |
|
指定されたバックエンドに関連付けられた |
|
バックエンドのタイプを戻します。 |
|
バックエンド構成にフラグが設定されているかどうかをチェックします。 |
|
指定されたサフィックスが、登録されているバックエンド・サフィックスと一致することを検証します。 |
|
バックエンドに適用された変更を変更ログに記録する必要があるかどうかを示します。 |
|
バックエンドがプライベートであるかどうかを検証します。 |
|
指定されたDNを含むエントリの処理に使用する必要のあるバックエンドを検索します。 |
|
データベースの処理に使用されるバックエンドを検索します。 |
|
最初のバックエンドのバックエンド構造体へのポインタを戻します。 |
|
次のバックエンドへのポインタを戻します。 |
|
サフィックスがDITのルート・サフィックスであるかどうかをチェックします。 |
表15-19 Slapi_DN
構造体処理の関数
関数 | 説明 |
---|---|
|
エントリの新しいDNを構築します。 |
|
2つのDNを比較します。 |
|
DNをコピーします。 |
|
|
|
|
|
|
|
特定のバックエンド内の親のDNを取得します。 |
|
|
|
|
|
|
|
指定された |
|
DNからRDNを取得します。 |
|
DNによって指定されたエントリを保持するサフィックスを取得します。 |
|
|
|
DNが、あるDNの親の親であるかどうかをチェックします。 |
|
DNが、あるDNの親であるかどうかをチェックします。 |
|
|
|
新しい |
|
既存のDN文字列を参照して新しい |
|
既存のDN文字列をコピーして新しい |
|
DN文字列の新しいコピーを参照して新しい |
|
既存の正規化されたDNを参照して新しい |
|
既存の正規化されたDNをコピーして新しい |
|
エントリが特定のベースDNの有効範囲内にあるかどうかをチェックします。 |
|
既存のDN文字列を参照して |
|
既存のDN文字列をコピーして |
|
DN文字列の新しいコピーを参照して |
|
既存の正規化されたDN文字列を参照して |
|
既存の正規化されたDN文字列をコピーして |
|
エントリに新しい親を設定します。 |
|
エントリに新しいRDNを設定します。 |
表15-20 Slapi_RDN
構造体処理の関数
関数 | 説明 |
---|---|
|
既存のRDN構造体に新しいRDNを追加します。 |
|
2つのRDNを比較します。 |
|
|
|
|
|
|
|
|
|
最初のRDNのタイプ/値のペアを取得します。 |
|
RDNの索引を取得します。 |
|
最初のRDNの位置および属性値を取得します。 |
|
RDNからのRDNタイプ/値のペアを取得します。 |
|
RDNタイプ/値のペアの数を取得します。 |
|
|
|
|
|
既存のDN文字列から |
|
|
|
|
|
|
|
新しい |
|
新しい |
|
新しい |
|
新しい |
|
RDNが属性構文ルールに準拠しているかどうかを判別します。 |
表15-21 Slapi_Value
構造体処理の関数
関数 | 説明 |
---|---|
|
2つの値を比較します。 |
|
値の内部を解放します。 |
|
値を複製します。 |
|
メモリーから |
|
値の |
|
整数の値を変換します。 |
|
値の長さを取得します。 |
|
値をLong整数に変換します。 |
|
値を文字列として返します。 |
|
値を符号なし整数に変換します。 |
|
値を符号なしLong整数に変換します。 |
|
値を使用せずに |
|
|
|
文字列から |
|
文字列に含まれている値を使用して |
|
新しい |
|
|
|
文字列から新しい |
|
新しい |
|
別の |
|
値を設定します。 |
|
|
|
|
|
文字列を値にコピーします。 |
|
値を設定します。 |
|
|
表15-22 Slapi_ValueSet
構造体処理の関数
関数 | 説明 |
---|---|
|
|
|
|
|
|
|
属性の構文を使用して、値セット内の値を検索します。 |
|
|
|
指定された |
|
|
|
新しい |
|
|
|
|
|
別の |
表15-23 UTF-8文字列処理の関数
関数 | 説明 |
---|---|
|
文字列に8ビット文字が含まれているかどうかをチェックします。 |
|
2つのUTF-8文字列を比較します。 |
|
指定されたUTF-8文字数を比較します。 |
|
UTF-8文字が小文字かどうかを確認します。 |
|
1つのUTF-8文字が大文字かどうかを確認します。 |
|
UTF-8文字列を小文字に変換します。 |
|
UTF-8文字で構成される文字列を変換し、それを大文字に変換します。 |
|
UTF-8文字を小文字に変換します。 |
|
小文字のUTF-8文字を大文字に変換します。 |
表15-24 ログ・メッセージ書込み関数
関数 | 説明 |
---|---|
|
サーバー・エラー・ログにエラー・メッセージを書き込みます。 |
|
サーバー・エラー・ログに情報メッセージを書き込みます。 |
|
サーバー・エラー・ログに警告メッセージを書き込みます。 |
表15-25 仮想属性処理の関数
関数 | 説明 |
---|---|
|
指定された属性タイプの値が仮想的に生成されているかどうかを判別します。 |
|
指定されたエントリの属性タイプおよび名前を比較します。 |
|
値セットおよびタイプ名を解放します。 |
|
エントリから属性タイプの値を戻します。 |
表15-26 エントリ、参照および結果をクライアントに送信する関数
関数 | 説明 |
---|---|
|
エントリのLDAP v3参照を処理します。 |
|
結果コードをクライアントに返信します。 |
|
検索で見つかったエントリをクライアントに返信します。 |
以降の項では、slapi_access_allowed()
からslapi_moddn_get_newdn()
までのプラグインAPI関数について、アルファベット順に説明します。
slapi_modify_internal_pb()
からslapi_wait_condvar()
のプラグインAPI関数については、次の章で後続の項を説明します。
slapi_access_allowed()
現在の操作を要求しているユーザーに、指定されたエントリ、属性または値に操作を実行するアクセス権があるかどうかを確認します。
#include "slapi-plugin.h" int slapi_access_allowed( Slapi_PBlock *pb, Slapi_Entry *e, char *attr, struct berval *val, int access );
この関数は、次のパラメータを取ります。
pb
この関数に渡されるパラメータ・ブロックです。
e
アクセス権をチェックするエントリです。
attr
アクセス権をチェックする属性です。
val
アクセス権をチェックする値を含むberval
構造体へのポインタです。
access
チェックするアクセス権のタイプです。たとえば、書込みアクセスをチェックするには、この引数の値としてSLAPI_ACL_WRITE
を渡します。
access
引数の値には、次のいずれかを指定できます。
SLAPI_ACL_ADD
指定されたエントリを追加する権限です。
SLAPI_ACL_COMPARE
エントリの属性の指定された値を比較する権限です。
SLAPI_ACL_DELETE
指定されたエントリを削除する権限です。
SLAPI_ACL_READ
指定された属性を読み取る権限です。
SLAPI_ACL_SEARCH
指定された属性または値を検索する権限です。
SLAPI_ACL_WRITE
指定されたエントリの名前を変更するために、指定された属性、値または権限を書き込む権限です。
このファンクションは、次の値のいずれかを戻します。
エントリ、属性または値に対して、指定された権限がユーザーにある場合はLDAP_SUCCESS
エントリ、属性または値に対して、指定された権限がユーザーにない場合はLDAP_INSUFFICIENT_ACCESS
処理中に問題が発生した場合、この関数は次のいずれかのエラー・コードを戻します。
LDAP_OPERATIONS_ERROR
操作の実行中にエラーが発生しました。
このエラーは、指定されたアクセス権のタイプがサーバーで認識されていない場合などに発生します。つまり、以前のテーブルから値が渡されていません。
LDAP_INVALID_SYNTAX
無効な構文が指定されました。
このエラーは、エントリ、属性または値に関連するACLで誤った構文が使用されている場合に発生します。
LDAP_UNWILLING_TO_PERFORM
DSA (このDirectory Serverインスタンス)が、指定された操作を実行できません。
このエラーは、読取り専用データベースに書込みアクセスを要求した場合などに発生します。
指定されたエントリ、属性または値に対するアクセス権がユーザーにあるかどうかを確認するには、この関数をコールします。この関数は、このプラグインのコール元である操作を要求したユーザーに対してチェックを実行します。
たとえば、追加操作の事前操作プラグインを作成しているとします。この関数をコールすると、ユーザーがディレクトリにエントリを追加する前に適切なアクセス権があるかどうかを確認できます。
ユーザーにアクセス権があるかどうかを確認する処理の一環として、この関数は次の処理を実行します。
操作を要求しているユーザーがルートDNであるかどうかのチェック
その場合、この関数はLDAP_SUCCESS
を戻します。(ルートDNには、すべての操作を実行する権限があります。)
要求されている操作、クライアントへの接続およびディレクトリ情報が格納されているバックエンド・データベースに関する情報の取得
なんらかの理由で要求されている操作を確認できない場合は、LDAP_OPERATIONS_ERROR
を戻します。
クライアントへの接続が存在しない(操作のリクエストがサーバーまたはバックエンドで行われた)場合は、LDAP_SUCCESS
を戻します。(サーバーおよびそのバンクエンドはアクセス制御リストで制限されません。)
バックエンド・データベースが読取り専用で、リクエストによって書込みアクセス(SLAPI_ACL_WRITE
)をチェックしている場合は、LDAP_UNWILLING_TO_PERFORM
を戻します。
操作を要求しているユーザーが自身のエントリを変更しようとしているかどうかを確認します。
ACLにより、ユーザーが自身のエントリを変更できるように権限を設定できます。この関数はその条件をチェックします。
コール元は、この関数をコールする前に、パラメータ・ブロックで指定されたバックエンドが設定されていることを確認する必要があります。次に例を示します。
be = slapi_be_select(slapi_entry_get_sdn_const(seObjectEntry)); if (NULL == be) { cleanup("backend selection failed for entry: \"%s\"\n", szObjectDN); slapi_send_ldap_result(pb,LDAP_NO_SUCH_OBJECT,NULL, "Obj not found",0,NULL); return(SLAPI_PLUGIN_EXTENDED_SENT_RESULT); } slapi_pblock_set(pb, SLAPI_BACKEND, be); nAccessResult = slapi_access_allowed(pb,seObjectEntry,"*",bval,SLAPI_ACL_DELETE);
slapi_acl_check_mods()
指定された変更をエントリに実行する権限がユーザーにあるかどうかを確認します。
#include "slapi-plugin.h" int slapi_acl_check_mods( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod **mods, char **errbuf );
この関数は、次のパラメータを取ります。
pb
この関数に渡されるパラメータ・ブロックです。
e
アクセス権をチェックするエントリです。
mods
エントリに加える変更を表すLDAPMod
構造体の配列です。
errbuf
この関数の処理中にエラーが発生した場合のエラー・メッセージを含む文字列へのポインタです。
次のいずれかの値を戻します。
指定された属性の値に対する書込み権限がユーザーにある場合はLDAP_SUCCESS
指定された属性の値に対する書込み権限がユーザーにない場合はLDAP_INSUFFICIENT_ACCESS
処理中に問題が発生した場合、この関数は次のいずれかのエラー・コードを戻します。
LDAP_OPERATIONS_ERROR
操作の実行中にエラーが発生しました。
LDAP_INVALID_SYNTAX
無効な構文が指定されました。
このエラーは、エントリ、属性または値に関連するACLで誤った構文が使用されている場合に発生します。
LDAP_UNWILLING_TO_PERFORM
DSA (このディレクトリ・サーバー)が、指定された操作を実行できません。
このエラーは、読取り専用データベースに書込みアクセスを要求した場合などに発生します。
指定されたエントリを変更するアクセス権がユーザーにあるかどうかを確認する場合に、この関数をコールします。この関数は、このプラグインのコール元である操作を要求したユーザーに対してチェックを実行します。
たとえば、データベース・プラグインを作成してこの関数をコールすると、データベースでエントリを追加、変更または削除する前に適切なアクセス権がユーザーにあるかどうかを確認できます。
ユーザーにアクセス権があるかどうかを確認するプロセスの一環として、この関数は次の処理を実行します。
ディレクトリのアクセス制御が無効化されていることのチェック。
アクセス制御が無効化されている場合、この関数はLDAP_SUCCESS
を戻します。
LDAPMod
配列で指定された属性ごとの各値について、その値に書き込む権限がユーザーにあるかどうかを確認します。具体的には、この関数はチェックするアクセス権としてSLAPI_ACL_WRITE
を指定し、slapi_access_allowed()
をコールします。
なんらかの理由で要求されている操作を確認できない場合は、LDAP_OPERATIONS_ERROR
を戻します。
クライアントへの接続が存在しない(操作のリクエストがサーバーまたはバックエンドで行われた)場合は、LDAP_SUCCESS
を戻します。(サーバーおよびそのバンクエンドはアクセス制御リストで制限されません。)
バックエンド・データベースが読取り専用で、リクエストによって書込みアクセス(SLAPI_ACL_WRITE
)をチェックしている場合は、LDAP_UNWILLING_TO_PERFORM
を戻します。
エラー・メッセージの処理が終了した場合は、slapi_ch_free()
をコールしてerrbuf
バッファを解放する必要があります。
slapi_acl_verify_aci_syntax()
エントリのアクセス制御項目(ACI)が有効であるかどうかを確認します。
#include "slapi-plugin.h" int slapi_acl_verify_aci_syntax (Slapi_Entry *e, char **errbuf);
この関数は、次のパラメータを取ります。
e
ACIをチェックするエントリです。
errbuf
ACI構文が無効である場合に戻されるエラー・メッセージへのポインタです。
この関数は、正常終了した場合は0
を戻し、エラーが発生した場合は-1
を戻します。
エラー・メッセージの処理が終了した場合は、slapi_ch_free()
をコールしてerrbuf
バッファを解放する必要があります。
slapi_add_entry_internal_set_pb()
Slapi_Entry
構造体に関連する、内部追加操作用のパラメータ・ブロックを作成します。
#include "slapi-plugin.h" int slapi_add_entry_internal_set_pb(Slapi_PBlock *pb, Slapi_Entry *e, LDAPControl **controls, Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
pb
内部追加操作用のパラメータ・ブロックです。
e
追加するエントリです。
controls
追加操作を要求するコントロールの配列です。コントロールがない場合はNULL
とします。
plugin_identity
プラグインの初期化時にSLAPI_PLUGIN_IDENTITY
から取得したプラグイン識別子です。
operation_flags
NULL
またはSLAPI_OP_FLAG_NEVER_CHAIN
です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数は、エントリを使用して、slapi_add_internal_pb()
で使用するパラメータ・ブロックを準備します。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
エントリは、slapi_add_internal_pb()
のコール時に使用されます。LDAPControls
は使用されません。
slapi_add_internal_pb()
のコール後はパラメータ・ブロックを解放してください。
slapi_add_internal_pb()
新しいディレクトリ・エントリの内部追加操作を実行します。
#include "slapi-plugin.h" int slapi_add_internal_pb(Slapi_PBlock *pb);
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
この関数は、パラメータ・ブロックに基づいて内部追加操作を実行します。パラメータ・ブロックは、slapi_add_internal_set_pb()
またはslapi_add_entry_internal_set_pb()
をコールして初期化されている必要があります。
slapi_add_internal_set_pb()
またはslapi_add_entry_internal_set_pb()
にどのようなパラメータを渡しても、この関数では変更または使用されません。slapi_add_entry_internal_set_pb()
に渡されたエントリ・パラメータは、この関数のコールに成功すると使用されます。
slapi_add_internal_set_pb()
内部追加操作用のパラメータ・ブロックを作成します。
#include "slapi-plugin.h" int slapi_add_internal_set_pb(Slapi_PBlock *pb, const char *dn, LDAPMod **attrs, LDAPControl **controls, Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
pb
内部追加操作用のパラメータ・ブロックです。
dn
削除するエントリの識別名です。
attrs
削除するエントリの属性の配列です。
controls
追加操作を要求するコントロールの配列です。
plugin_identity
プラグインの初期化時にSLAPI_PLUGIN_IDENTITY
から取得したプラグイン識別子です。
operation_flags
NULL
またはSLAPI_OP_FLAG_NEVER_CHAIN
です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数は、エントリのコンポーネントを使用して、slapi_add_internal_pb()
で使用するパラメータ・ブロックを作成します。
すでにエントリがSlapi_Entry
構造体として作成されている場合は、かわりにslapi_add_entry_internal_set_pb()
を使用してください。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
Directory Serverは、この関数に渡されたパラメータを解放しません。
slapi_pblock_destroy()
のコール後はパラメータ・ブロックを解放してください。
slapi_attr_add_value()
属性に値を追加します。
#include "slapi-plugin.h" int slapi_attr_add_value(Slapi_Attr *a, const Slapi_Value *v);
この関数は、次のパラメータを取ります。
値が格納されている属性です。
属性に追加される値です。
この関数は、常に0
を戻します。
Directory Serverは、属性に追加されるSlapi_Value
のコピーを作成します。
slapi_attr_basetype()
属性のベース型を戻します。
#include "slapi-plugin.h" char *slapi_attr_basetype( char *type, char *buf, size_t bufsiz );
この関数は、次のパラメータを取ります。
type
ベース型の取得元となる属性タイプです。
buf
戻されたベース型を保持するバッファです。
bufsiz
バッファのサイズです。
ベース型がバッファに収まる場合、この関数はNULL
を戻します。ベース型がバッファより長い場合は、ベース型のためのメモリーが割り当てられ、そのポインタが戻されます。
この関数は、属性のベース型を戻します(たとえば、cn;lang-jp
が指定された場合はcn
を戻します)。
終了後はslapi_ch_free()
をコールして、戻されたベース型を解放する必要があります。
slapi_attr_dup()
属性を複製します。
#include "slapi-plugin.h" Slapi_Attr *slapi_attr_dup(const Slapi_Attr *attr);
この関数は、次のパラメータを取ります。
複製対象の属性です。
この関数は、属性のコピーを新しく作成して戻します。
属性のコピーを作成するには、この関数を使用します。
戻された属性は、slapi_attr_free()
を使用して解放する必要があります。
slapi_attr_first_value_const()
属性の最初の値を取得します。
#include "slapi-plugin.h" int slapi_attr_first_value_const( const Slapi_Attr *a, const Slapi_Value **v );
この関数は、次のパラメータを取ります。
目的の値が格納されている属性です。
属性の最初の値を保持します。
このファンクションは、次の値のいずれかを戻します。
0
(最初の値の索引)
-1
(NULL
の場合)
属性の最初の値を取得するには、この関数を使用します。これは、Slapi_Attr
構造体で繰返し処理を行う関数セットの一部です。
v
に保持されている値は解放しないでください。
slapi_attr_flag_is_set()
特定のフラグが特定の属性に設定されているかどうかを判別します。
#include "slapi-plugin.h" int slapi_attr_flag_is_set( Slapi_Attr *attr, unsigned long flag );
この関数は、次のパラメータを取ります。
attr
チェックする属性です。
flag
属性でチェックするフラグです。
flag
引数の値には、次のいずれかを指定できます。
SLAPI_ATTR_FLAG_SINGLE
属性が単一値であるかどうかを判別するフラグ
SLAPI_ATTR_FLAG_OPATTR
属性が操作属性であるかどうかを判別するフラグ
SLAPI_ATTR_FLAG_READONLY
属性が読取り専用であるかどうかを判別するフラグ
このファンクションは、次の値のいずれかを戻します。
指定されたフラグが設定されている場合は1
指定されたフラグが設定されていない場合は0
この関数は、指定された属性に特定のフラグが設定されているかどうかを判別します。これらのフラグにより、属性が単一値属性、操作属性または読取り専用属性であるかを確認できます。これらのフラグは、Slapi_Attr
構造体が初期化されるときにスキーマから設定されます。
slapi_attr_free()
属性を解放します。
#include "slapi-plugin.h" void slapi_attr_free( Slapi_Attr **a );
この関数は、次のパラメータを取ります。
解放する属性です。
不要になった属性を解放するには、この関数を使用します。
slapi_attr_get_bervals_copy()
属性に格納されている値をberval
構造体の配列に格納します。
#include "slapi-plugin.h" int slapi_attr_get_bervals_copy(Slapi_Attr *a, struct berval ***vals );
このファンクションは、次の値のいずれかを戻します。
値が見つかった場合は0
-1
(NULL
の場合)
この関数は、属性からberval
構造体ポインタの配列に値をコピーします。
この配列は、ber_bvecfree
(3LDAP)を使用して解放してください。
slapi_attr_get_flags()
指定された属性に関連付けられているフラグを取得します。
#include "slapi-plugin.h" int slapi_attr_get_flags( Slapi_Attr *attr, unsigned long *flags );
この関数は、次のパラメータを取ります。
attr
フラグを取得する属性です。
flags
この関数をコールすると、このパラメータは、指定された属性のフラグへのポインタに設定されます。このフラグは属性の現在のデータの一部であり、データのコピーではないため、フラグを解放しないでください。
設定されているフラグを確認するには、次のうちの1つ以上を使用して、flags
引数の値にビット単位のANDを使用します。
SLAPI_ATTR_FLAG_SINGLE
属性が単一値であるかどうかを判別するフラグ
SLAPI_ATTR_FLAG_OPATTR
属性が操作属性であるかどうかを判別するフラグ
SLAPI_ATTR_FLAG_READONLY
属性が読取り専用であるかどうかを判別するフラグ
この関数は、正常終了した場合は0
を戻します。
この関数は、指定された属性に関連付けられているフラグを取得します。これらのフラグにより、属性が単一値属性、操作属性または読取り専用属性であるかを確認できます。
slapi_attr_get_numvalues()
属性が持つ値の数を指定された整数に格納します。
#include "slapi-plugin.h" int slapi_attr_get_numvalues( const Slapi_Attr *a, int *numValues);
この関数は、次のパラメータを取ります。
カウント対象の値が格納されている属性です。
カウントされた値を保持する整数です。
この関数は、常に0
を戻します。
この関数は、属性内の値の数をカウントし、その数を整数に格納します。
slapi_attr_get_oid_copy()
構文を検索して属性タイプを取得し、そのOID文字列のコピーを戻します。
#include "slapi-plugin.h" int slapi_attr_get_oid_copy( const Slapi_Attr *attr, char **oidp );
この関数は、次のパラメータを取ります。
目的のタイプが格納されている属性です。
属性タイプのOIDのコピー先となる文字列です。
このファンクションは、次の値のいずれかを戻します。
属性タイプが見つかった場合は0
そうでない場合は-1
構文を検索して属性タイプのOIDを取得するには、この関数を使用します。
この文字列は、slapi_ch_free()
を使用して解放する必要があります。
slapi_attr_get_plugin()
指定された属性タイプの値の処理に使用される構文プラグインへのポインタを取得します。
#include "slapi-plugin.h" int slapi_attr_get_plugin( Slapi_Attr *a, void **plugin );
この関数は、次のパラメータを取ります。
a
アクセスする関連する構文プラグインが格納されている属性です。
plugin
このパラメータには、この関数に渡されるタイプの属性を処理するために登録されているプラグインへのポインタが設定されます。このポインタはコピーではないため、ポインタを解放しないでください。
この関数は0
を戻します。
slapi_attr_get_type()
指定された属性から属性タイプの名前を取得します。
#include "slapi-plugin.h" int slapi_attr_get_type( Slapi_Attr *attr, char **type );
この関数は、次のパラメータを取ります。
attr
タイプを取得する属性です。
type
この関数をコールすると、このパラメータは、指定された属性のタイプへのポインタに設定されます。この属性タイプは属性の現在のデータの一部であり、データのコピーではないため、属性タイプを解放しないでください。
この関数は、正常終了した場合は0
を戻します。
slapi_attr_get_valueset()
属性に格納されている既存の値を値セットにコピーします。
#include "slapi-plugin.h" int slapi_attr_get_valueset(const Slapi_Attr *a, Slapi_ValueSet **vs);
この関数は、次のパラメータを取ります。
値セットに設定する値が格納されている属性です。これには有効な属性を指定する必要があり、NULL
は指定できません。
最初のパラメータからの値を格納します。
この関数は、常に0
を戻します。
vs
内の値セットは、slapi_valueset_free()
を使用して解放します。
slapi_attr_init()
ベース型を指定して空の属性を初期化します。
#include "slapi-plugin.h" Slapi_Attr *slapi_attr_init(Slapi_Attr *a, const char *type);
この関数は、次のパラメータを取ります。
初期化対象の空の属性です。
初期化のための属性タイプです。
この関数は、新しく初期化された属性か、スキーマでタイプが指定されなかった場合は空の属性を戻します。
属性タイプを指定して空の属性を初期化するには、この関数を使用します。
Directory Serverは、type
文字列のコピーを作成します。
slapi_attr_new()
新しい属性を作成します。
#include "slapi-plugin.h" Slapi_Attr *slapi_attr_new( void );
この関数にパラメータはありません。
この関数は、新しく作成した属性を戻します。
空の属性を作成するには、この関数を使用します。
slapi_attr_next_value_const()
属性の次の値を取得します。
#include "slapi-plugin.h" int slapi_attr_next_value_const( const Slapi_Attr *a, int index, const Slapi_Value **v );
この関数は、次のパラメータを取ります。
目的の値が格納されている属性です。
戻される値の索引です(0からカウント)。
属性の値を保持します。
このファンクションは、次の値のいずれかを戻します。
値が見つかった場合はhint
+ 1
NULL
の場合またはhint
の位置で値が見つからない場合は-1
属性の次の値を取得するには、この関数を使用します。索引に関連付けられた属性の値が、値に格納されます。これは、Slapi_Attr
構造体で繰返し処理を行う関数セットの一部です。
slapi_attr_syntax_normalize()
構文内の属性タイプを検索し、正規化された属性タイプのコピーを戻します。
#include "slapi-plugin.h" char * slapi_attr_syntax_normalize( const char *s );
この関数は、次のパラメータを取ります。
検索する属性タイプです。
この関数は、目的の正規化された属性のコピーまたは渡された属性の正規化されたコピーを戻します。
構文を検索して属性タイプを取得し、その正規化された形式を戻すには、この関数を使用します。属性タイプがスキーマに定義されていない場合、この関数はタイプのコピーを小文字に変換して戻します。
戻された文字列は、slapi_ch_free()
を使用して解放する必要があります。
slapi_attr_type_cmp()
2つの属性タイプを比較し、それらが同じであるかどうかを判別します。
#include "slapi-plugin.h" int slapi_attr_type_cmp( char *t1, char *t2, int opt );
この関数は、次のパラメータを取ります。
t1
比較する最初の属性タイプの名前です。
比較する2番目の属性タイプの名前です。
次のいずれかの値です。
0
- タイプをそのまま比較します。
1
- タイプのベース名のみを比較します(たとえば、タイプがcn;lang-en
の場合は、タイプのcn
部分のみが比較されます)。
2
- 最初のタイプにないオプションを2番目のタイプで無視します。たとえば、最初のタイプがcn
で2番目のタイプがcn;lang-en
の場合、2番目のタイプのlang-en
オプションは最初のタイプに含まれていません。この場合、2つのタイプは同一であるとみなされます。
この関数は、タイプ名が等しい場合は0を戻し、等しくない場合は0以外の値を戻します。
slapi_attr_types_equivalent()
2つの属性名を比較し、それらが同じ属性を表すかどうかを判別します。
#include "slapi-plugin.h" int slapi_attr_types_equivalent( const char *t1, const char *t2 );
この関数は、次のパラメータを取ります。
比較する最初の属性タイプへのポインタです。
比較する2番目の属性タイプへのポインタです。
この関数は、次のいずれかの値を戻します。
t1
とt2
が同じ属性を表す場合は1
t1
とt2
が同じ属性を表さない場合は0
slapi_attr_value_cmp()
指定された属性の2つの値を比較し、それらが等しいかどうかを判別します。
#include "slapi-plugin.h" int slapi_attr_value_cmp( Slapi_Attr *attr, struct berval *v1, struct berval *v2 );
この関数は、次のパラメータを取ります。
このファンクションは、次の値のいずれかを戻します。
値が等しい場合は0
値が等しくない場合は-1
slapi_attr_value_find()
等価一致ルールを使用して、指定した値が属性に含まれているかどうかを確認します。
#include "slapi-plugin.h" int slapi_attr_value_find( Slapi_Attr *a, struct berval *v );
このファンクションは、次の値のいずれかを戻します。
等価一致ルールに基づいて、指定された値と一致する値が属性に含まれている場合は0
たとえば、CNの場合、BABS JENSEN
およびBabs Jensen
は一致します。
指定された値が属性に含まれていない場合は-1
slapi_be_exist()
指定されたDNを含むバックエンドが存在するかどうかをチェックします。
#include "slapi-plugin.h" int slapi_be_exist(const Slapi_DN *sdn);
この関数は、次のパラメータを取ります。
探しているバックエンドのDNへのポインタです。
このファンクションは、次の値のいずれかを戻します。
指定されたDNを含むバックエンドが存在する場合は1
バックエンドが存在しない場合は0
slapi_be_get_name()
指定されたバックエンドの名前を戻します。
#include "slapi-plugin.h" char * slapi_be_get_name(Slapi_Backend * be);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
この関数は、指定されたバックエンドに関連付けられている名前を戻します。
戻されたポインタは解放しないでください。
slapi_be_get_readonly()
バックエンドに関連付けられたデータベースが読取り専用モードであるかどうかを示します。
#include "slapi-plugin.h" int slapi_be_get_readonly(Slapi_Backend *be);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
このファンクションは、次の値のいずれかを戻します。
データベースが読取り専用モードでない場合は0
データベースが読取り専用モードの場合は1
slapi_be_getsuffix()
指定されたバックエンドに関連付けられたn
番目のサフィックスのDNを戻します。
#include "slapi-plugin.h" const Slapi_DN *slapi_be_getsuffix(Slapi_Backend *be, int n);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
索引です(0から開始)。
この関数は、サフィックスのDNが存在する場合はそのDNを戻し、バックエンドにn
番目のサフィックスが存在しない場合はNULL
を戻します。
この関数は、指定されたバックエンドに関連付けられているn
番目のサフィックス(0からカウント)を戻します。この関数は、以前のバージョンのDirectory ServerプラグインAPIとの互換性のために残されています。
戻されたポインタは解放しないでください。
slapi_be_gettype()
バックエンドのタイプを戻します。
#include "slapi-plugin.h" const char * slapi_be_gettype(Slapi_Backend *be);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
この関数は、バックエンドのタイプを戻します。バックエンドのタイプには、次のようなものがあります。
chaining
(チェーン(データベース・リンクとも呼ばれる)に使用します)
default
(バインドのみをサポートし、パススルー認証に使用します)
DSE
(構成パラメータに使用します)
ldbm database
(使用しているディレクトリ・データを格納します)
schema-internal
(スキーマ構成に使用します)
戻されたポインタは解放しないでください。
slapi_be_is_flag_set()
バックエンド構成にフラグが設定されているかどうかをチェックします。
#include "slapi-plugin.h" int slapi_be_is_flag_set(Slapi_Backend * be, int flag);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
チェックするフラグ(SLAPI_BE_FLAG_REMOTE_DATA
、SLAPI_BE_FLAG_SUSPENDED
)です。
このファンクションは、次の値のいずれかを戻します。
バックエンド構成にフラグが設定されていない場合は0
フラグが設定されている場合は1
slapi_be_issuffix()
指定されたサフィックスが、登録されているバックエンド・サフィックスと一致することを検証します。
#include "slapi-plugin.h" int slapi_be_issuffix(const Slapi_Backend *be, const Slapi_DN *suffix);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
探しているサフィックスのDNです。
このファンクションは、次の値のいずれかを戻します。
指定されたバックエンドにサフィックスが含まれていない場合は0
指定されたバックエンドにサフィックスが含まれている場合は1
この関数は、指定されたサフィックスが、指定されたバックエンドに登録されているサフィックスと完全に一致するかどうかをチェックします。
slapi_be_logchanges()
LDBMデータベース・バックエンドに適用された変更を変更ログに記録する必要があるかどうかを示します。この値は読取りのみであり、設定はできません。
#include "slapi-plugin.h" int slapi_be_logchanges(Slapi_Backend *be);
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
このファンクションは、次の値のいずれかを戻します。
特定のバックエンドに適用された変更を変更ログに記録する必要がない場合は0
変更を変更ログに記録する必要がある場合は1
slapi_be_private()
バックエンドがプライベートであるかどうかを検証します。
#include "slapi-plugin.h" int slapi_be_private( Slapi_Backend * be );
この関数は、次のパラメータを取ります。
バックエンド構成が格納されている構造体へのポインタです。
このファンクションは、次の値のいずれかを戻します。
バックエンドがユーザーから隠されていない場合(バックエンド・タイプchaining
およびldbm database
の場合)は0
バックエンドがユーザーから隠されている場合(内部使用のみ、バックエンド・タイプdefault
、DSE
、schema-internal
)は1
slapi_be_select()
指定されたDNを含むエントリの処理に使用する必要のあるバックエンドを検索します。
#include "slapi-plugin.h" Slapi_Backend * slapi_be_select( const Slapi_DN * sdn );
この関数は、次のパラメータを取ります。
バックエンドを取得するDNへのポインタです。
この関数は、デフォルト・バックエンドへのポインタを戻します。適切なサフィックスを持つバックエンドが構成されていない場合、これはバインド操作のみが可能な空のバックエンドとなります。それ以外の場合は、バックエンド構造体へのポインタを戻します。
戻されたポインタは解放しないでください。
slapi_be_select_by_instance_name()
データベースの処理に使用されるバックエンドを検索します。
#include "slapi-plugin.h" Slapi_Backend *slapi_be_select_by_instance_name( const char *name );
この関数は、次のパラメータを取ります。
userRoot
など、必要とする構造体を持つバックエンドのCNの値へのポインタです。
適切な名前のバックエンドが構成されていない場合、この関数はNULL
を戻します。それ以外の場合は、バックエンド構造体へのポインタを戻します。
この関数は、パラメータとして指定されたデータベースの処理に使用する必要のあるバックエンドを検索します。
戻されたポインタは解放しないでください。
slapi_berval_cmp()
2つのberval
構造体を比較します。
#include "slapi-plugin.h" int slapi_berval_cmp(const struct berval* L,const struct berval* R);
この関数は、2つのberval
構造体が等価であるかどうかをチェックします。
2つのberval
構造体が等価である場合、この関数は0
を戻します。L
がR
より短い場合は負の値を戻し、L
がR
より長い場合は正の値を戻します。L
とR
が同じサイズでも内容が異なるとき、L
がR
より小さい場合は負の値を戻し、L
がR
より大きい場合は正の値を戻します。L
およびR
はバイトの配列として比較されます。
slapi_build_control()
BerElement
、OIDおよび重大性フラグに基づいて、LDAPControl
構造体を作成します。
#include "slapi-plugin.h" int slapi_build_control( char const *oid, BerElement const *ber, char iscritical, LDAPControl **ctrlp );
この関数は、次のパラメータを取ります。
作成されるコントロールのOID (オブジェクト識別子)です。
コントロール値が格納されているBerElement
です。コントロールに値がない場合はNULL
を渡します。
重大性フラグです。0以外の場合は、コントロールが重要とマーク付けされます。0
の場合は重要とマーク付けされません。
割り当てられたLDAPControl
構造体を格納するポインタです。
正常終了した場合、この関数はLDAP_SUCCESS
(LDAP結果コード)を戻します。
この関数は、BerElement
、OIDおよび重大性フラグに基づいて、LDAPControl
構造体を作成します。作成されたLDAPControl
は、LDAPクライアント・リクエストまたは内部操作で使用できます。
たとえば、ber_init
(3LDAP)を使用してBerElement
を構築できます。
Directory Serverは、oid
文字列を複製します。
ber
パラメータの内容はコール元が責任を持ちます。
slapi_build_control()
のber
パラメータは、ber_free
(3LDAP)を使用して解放できます。
ctrlp
で戻されたLDAPControl
ポインタは、LDAP API関数のldap_control_free(3LDAP)
をコールして解放する必要があります。
ber_free(3LDAP) ber_init(3LDAP) ldap_control_free(3LDAP)
slapi_build_control_from_berval()
berval
構造体、OIDおよび重大性フラグに基づいて、LDAPControl
構造体を作成します。
#include "slapi-plugin.h" int slapi_build_control_from_berval( char const *oid, struct berval *bvp, char iscritical, LDAPControl **ctrlp );
この関数は、次のパラメータを取ります。
作成されるコントロールのOID (オブジェクト識別子)です。
コントロール値が格納されているberval
です。コントロールに値がない場合はNULL
を渡します。
重大性フラグです。0以外の場合は、コントロールが重要とマーク付けされます。0
の場合は重要とマーク付けされません。
割り当てられたLDAPControl
構造体を格納するポインタです。
この関数は、常にLDAP_SUCCESS
(LDAP結果コード)を戻します。
この関数は、berval
、OIDおよび重大性フラグに基づいて、LDAPControl
構造体を作成します。作成されたLDAPControl
は、LDAPクライアント・リクエストまたは内部操作で使用できます。
Directory Serverは、oid
文字列を複製します。
bvp
パラメータの内容は、この関数で使用されます。そのため、この関数のコールに成功したときは、コール元でbvp->bv_val
ポインタを解放しないでください。
ctrlp
で戻されたLDAPControl
ポインタは、LDAP API関数のldap_control_free(3LDAP)
をコールして解放する必要があります。
slapi_ch_array_free()
既存の配列を解放します。
#include "slapi-plugin.h" void slapi_ch_array_free( char **arrayp );
この関数は、次のパラメータを取ります。
解放する配列へのポインタです。このパラメータにはNULL
を指定できません。
この関数は、arrayp
が参照するchar **
を解放します。たとえば、次のコードでは、array
およびa1
の両方が解放されます。
char **array; char *a1; array = malloc(2*sizeof(char *)); a1 = strdup("hello"); array[0] = a1; array[1] = NULL; slapi_ch_array_free(array);
slapi_ch_bvdup()
既存のberval
構造体のコピーを作成します。
#include "slapi-plugin.h" struct berval* slapi_ch_bvdup( const struct berval *v );
この関数は、berval
構造体の新しいコピーへのポインタを戻します。構造体を複製できない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
v
パラメータの内容は、この関数では変更されません。戻されたberval
構造体は、LDAP API関数のber_bvfree(3LDAP)
をコールして解放する必要があります。
slapi_ch_bvecdup()
既存のberval
構造体の配列のコピーを作成します。
#include "slapi-plugin.h" extern struct berval** slapi_ch_bvecdup (const struct berval **v);
この関数は、berval
構造体の新しいコピーの配列へのポインタを戻します。構造体を複製できない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
v
パラメータの内容は、この関数では変更されません。戻されたberval
構造体は、LDAP API関数のber_bvfree(3LDAP)
をコールして解放する必要があります。
slapi_ch_calloc()
指定されたサイズの要素数を持つ配列に領域を割り当てます。
#include "slapi-plugin.h" char * slapi_ch_calloc( unsigned long nelem, unsigned long size );
この関数は、次のパラメータを取ります。
メモリーを割り当てる要素数です。
メモリーを割り当てる要素のサイズ(バイト)です。
この関数は、新しく割り当てられたメモリー領域へのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、標準のcalloc()
C関数のかわりにコールする必要があります。また、メモリーを割り当てられない場合は、メモリー不足のエラー・メッセージを出力してslapd
サーバーが停止します。
戻されたポインタは、slapi_ch_free()
をコールして解放する必要があります。
slapi_ch_free()
slapi_ch_malloc()
、slapi_ch_realloc()
およびslapi_ch_calloc()
の各関数によって割り当てられた領域を解放し、ポインタをNULL
に設定します。この関数は、標準のfree()
C関数のかわりにコールします。
#include "slapi-plugin.h" void slapi_ch_free( void **ptr );
この関数は、次のパラメータを取ります。
解放するメモリー・ブロックへのポインタのアドレスです。NULL
の場合は処理が行われません。
slapi_ch_free()
に渡すptr
は、slapi_ch_malloc()
、slapi_ch_realloc()
、slapi_ch_calloc()
またはslapi_ch_strdup()
のコールを使用して割り当てられたメモリーへのポインタのアドレスとする必要があります。
slapi_ch_free_string()
slapi_ch_malloc()
、slapi_ch_realloc()
およびslapi_ch_calloc()
によって割り当てられた既存の文字列を解放します。この関数は、標準のfree()
C関数のかわりにコールします。
#include "slapi-plugin.h" void slapi_ch_free_string( char **s );
この関数は、次のパラメータを取ります。
解放する文字列のアドレスです。
この関数は、既存の文字列を解放します。文字列を使用している場合は、slapi_ch_free()
を優先して使用する必要があります。引数を(void**)
にキャストするためコンパイル時のエラー・チェックを行わないslapi_ch_free()
とは異なり、これはコンパイル時のチェックを実行し、不正なエラー引数がないかどうかを確認します。
slapi_ch_malloc()
メモリーに領域を割り当てます。
#include "slapi-plugin.h" char * slapi_ch_malloc( unsigned long size );
この関数は、次のパラメータを取ります。
メモリーを取得する領域のサイズ(バイト)です。
この関数は、新しく割り当てられたメモリー領域へのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、標準のmalloc()
C関数のかわりにコールする必要があります。また、メモリーを割り当てられない場合は、メモリー不足のエラー・メッセージを出力してslapd
サーバーが停止します。
戻されたポインタは、slapi_ch_free()
をコールして解放する必要があります。
slapi_ch_realloc()
割り当てられたメモリー・ブロックのサイズを変更します。
#include "slapi-plugin.h" char * slapi_ch_realloc( char *block, unsigned long size );
この関数は、次のパラメータを取ります。
割り当てられた既存のメモリー・ブロックへのポインタです。
メモリー・ブロックに割り当てる新しいサイズ(バイト)です。
この関数は、再割当てされたメモリー領域へのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、標準のrealloc()
C関数のかわりにコールする必要があります。また、メモリーを割り当てられない場合は、メモリー不足のエラー・メッセージを出力してslapd
サーバーが停止します。
この関数に渡すblock
パラメータは、slapi_ch_malloc()
、slapi_ch_calloc()
、slapi_ch_strdup()
などのslapiのコールを使用して割り当てられたポインタのアドレスとする必要があります。
戻されたポインタは、slapi_ch_free()
をコールして解放する必要があります。
slapi_ch_strdup()
既存の文字列のコピーを作成します。
#include "slapi-plugin.h" char * slapi_ch_strdup( char *s );
この関数は、次のパラメータを取ります。
コピーする文字列へのポインタです。
この関数は、文字列のコピーへのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、標準のstrdup()
C関数のかわりにコールする必要があります。また、メモリーを割り当てられない場合は、メモリー不足のエラー・メッセージを出力してslapd
サーバーが停止します。
戻されたポインタは、slapi_ch_free()
をコールして解放する必要があります。
slapi_compute_add_evaluator()
クライアントに結果を戻すとき、生成およびエントリに追加する算出属性の評価に当たってサーバーが使用するコールバックを設定します。
#include "slapi-plugin.h" int slapi_compute_add_evaluator(slapi_compute_callback_t fcn);
この関数は、次のパラメータを取ります。
fcn
算出属性を評価するときにコールする関数です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合は、コールバックにメモリーを割り当てられなかったことを示すENOMEM
を戻します。
コールバックの詳細は、「slapi_compute_callback_t」
を参照してください。プラグイン初期化の一環としてコールバックを登録します。
slapi_compute_add_search_rewriter_ex()
算出属性を検索するときにサーバーが使用するコールバックを設定します。
#include "slapi-plugin.h" int slapi_compute_add_search_rewriter_ex( slapi_search_rewrite_callback_t function, slapi_search_rewrite_callback_t cleanup_function);
この関数は、次のパラメータを取ります。
function
検索のフィルタを再書き込みするためにコールする関数です。
cleanup_function
再書込み検索実行後のクリーンアップのためにコールする関数です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合は、コールバックにメモリーを割り当てられなかったことを示すENOMEM
を戻します。
コールバックの詳細は、第14章「データ型と構造体のリファレンス」を参照してください。
slapi_control_present()
指定されたオブジェクト識別子(OID)が、コントロールのリストに存在するコントロールを示すかどうかを判別します。
#include "slapi-plugin.h" int slapi_control_present( LDAPControl **controls, char const *oid, struct berval **val, int *iscritical );
この関数は、次のパラメータを取ります。
チェックするコントロールのリストです。
検索するコントロールのOIDです。
コントロールのリストにコントロールが存在する場合、この関数にはコントロールの値が格納されているberval
構造体へのポインタを指定します。コントロール値へのポインタを格納しない場合は、このパラメータにNULL
を渡します。
コントロールのリストにコントロールが存在する場合、この関数にはサーバーの処理にコントロールが重要であるかどうかを指定します。
0は、コントロールが処理にとって重要でないことを示します。
1は、コントロールが処理にとって重要であることを示します。
コントロールが重要であるかどうかの指示を格納しない場合は、このパラメータにNULL
を渡します。
このファンクションは、次の値のいずれかを戻します。
指定されたコントロールがコントロールのリストに存在する場合は1
コントロールのリストにコントロールが存在しない場合は0
val
出力パラメータは、コントロール配列を参照するように設定されます。コントロール値のコピーは作成されません。
slapi_delete_internal_pb()
パラメータ・ブロックに基づいてLDAP削除操作を実行し、ディレクトリ・エントリを削除します。
#include "slapi-plugin.h" int slapi_delete_internal_pb(Slapi_PBlock *pb);
渡されたパラメータがNULL
ポインタの場合、この関数は-1
を戻します。それ以外の場合は0
を戻します。
作成したコードでこの関数をコールすると、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
が適切なLDAP結果コードに設定されます。したがって、パラメータ・ブロックのSLAPI_PLUGIN_INTOP_RESULT
をチェックすると、エラーが発生したかどうかを確認できます。
この関数は、パラメータ・ブロックに基づいて内部削除操作を実行します。パラメータ・ブロックは、slapi_delete_internal_set_pb()
をコールして初期化されている必要があります。
slapi_delete_internal_set_pb()
にどのようなパラメータを渡しても、この関数では変更または使用されません。
slapi_delete_internal_set_pb()
内部削除操作用のパラメータ・ブロックを作成します。
#include "slapi-plugin.h" int slapi_delete_internal_set_pb(Slapi_PBlock *pb, const char *dn, LDAPControl **controls, const char *uniqueid, Slapi_ComponentId *plugin_identity, int operation_flags);
この関数は、次のパラメータを取ります。
pb
内部追加操作用のパラメータ・ブロックです。
dn
削除するエントリの識別名です。
controls
追加操作を要求するコントロールの配列です。
uniqueid
DNではなく、これを使用する場合のエントリの一意の識別子です。
plugin_identity
プラグインの初期化時にSLAPI_PLUGIN_IDENTITY
から取得したプラグイン識別子です。
operation_flags
NULL
またはSLAPI_OP_FLAG_NEVER_CHAIN
です。
この関数は、正常終了した場合は0
を戻します。それ以外の場合はLDAPエラー・コードを戻します。
この関数は、エントリのコンポーネントを使用して、slapi_delete_internal_pb()
で使用するパラメータ・ブロックを作成します。
この関数をコールする前に、slapi_pblock_new()
を使用してパラメータ・ブロックを割り当てます。
Directory Serverは、この関数に渡されたパラメータを解放しません。
slapi_delete_internal_pb()
のコール後はパラメータ・ブロックを解放してください。
slapi_destroy_condvar()
メモリーからSlapi_CondVar
構造体を解放します。
#include "slapi-plugin.h" void slapi_destroy_condvar( Slapi_CondVar *cvar );
この関数は、メモリーからSlapi_CondVar
構造体を解放します。この関数をコールする前に、この状態変数が使用されていないことを確認する必要があります。
slapi_destroy_mutex()
メモリーからSlapi_Mutex
構造体を解放します。
#include "slapi-plugin.h" void slapi_destroy_mutex( Slapi_Mutex *mutex );
この関数は、メモリーからSlapi_Mutex
構造体を解放します。コール側関数は、現在はロック専用関数にスレッドが存在しないことを確認する必要があります。ロックをしても削除に対する自己参照型保護は行われません。
slapi_dn_beparent()
バックエンドの親(サフィックスDN)の識別名(DN)のコピーを取得します。
エントリのDNがローカル・データベースのサフィックスであるかどうかをチェックしない場合は、かわりにslapi_dn_parent()
関数をコールします。
#include "slapi-plugin.h" char *slapi_dn_beparent( Slapi_PBlock *pb, char *dn );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
親を検索するエントリのDNです。
この関数は親エントリのDNを戻し、指定されたDNがNULL
の場合、DNが空文字列の場合、DNに親がない場合(o=example.com
など)または指定されたDNがローカル・データベースのサフィックスである場合は、NULL
を戻します。
slapi_dn_ignore_case()
識別名(DN)のすべての文字を小文字に変換します。
#include "slapi-plugin.h" char *slapi_dn_ignore_case( char *dn );
この関数は、次のパラメータを取ります。
小文字に変換するDNです。
この関数は、小文字のDNを戻します。dn
引数として渡された変数も適宜変換されることに注意してください。
slapi_dn_isbesuffix()
指定された識別名(DN)がローカル・データベースのサフィックスであるかどうかを判別します。この関数をコールする前にslapi_dn_normalize_case()
をコールし、DNを正規化してすべての文字を小文字に変換する必要があります。
#include "slapi-plugin.h" int slapi_dn_isbesuffix( Slapi_PBlock *pb, char *dn );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
チェックするDNです。
この関数は、指定されたDNがローカル・データベースのサフィックスの場合は1
を戻し、DNがサフィックスでない場合は0
を戻します。
slapi_dn_isbesuffix_norm()
指定された識別名(DN)がローカル・データベースのサフィックスであるかどうかを判別します。
#include "slapi-plugin.h" int slapi_dn_isbesuffix_norm( Slapi_PBlock *pb, const char *dn );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
チェックするDNです。
この関数は、指定されたDNがローカル・データベースのサフィックスの場合は1
を戻し、DNがサフィックスでない場合は0
を戻します。
slapi_dn_isparent()
特定のDNが、指定された別のDNの親であるかどうかを判別します。この関数をコールする前にslapi_dn_normalize_case()
をコールし、DNを正規化してすべての文字を小文字に変換する必要があります。
#include "slapi-plugin.h" int slapi_dn_isparent( const char *parentdn, char *childdn );
この関数は、次のパラメータを取ります。
このDNがchilddn
の親であるかどうかを判別します。
このDNがparentdn
の子であるかどうかを判別します。
この関数は、parentdn
がchilddn
の親である場合は0以外の値を戻し、parentdn
がchilddn
の親でない場合は0を戻します。
slapi_dn_isroot()
指定されたDNがこのローカル・データベースのルートDNであるかどうかを判別します。この関数をコールする前にslapi_dn_normalize_case()
をコールし、DNを正規化してすべての文字を小文字に変換する必要があります。
#include "slapi-plugin.h" int slapi_dn_isroot( Slapi_PBlock *pb, char *dn );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
チェックするDNです。
この関数は、指定されたDNがローカル・データベースのルートDNの場合は1
を戻し、DNがルートDNでない場合は0
を戻します。
slapi_dn_issuffix()
DNが、指定されたサフィックスと等しいかどうかを判別します。この関数をコールする前にslapi_dn_normalize_case()
をコールし、DNを正規化してすべての文字を小文字に変換する必要があります。
DNがローカル・データベースのサフィックスと同じであるかどうかを判別する場合は、かわりにslapi_dn_isbesuffix_norm()
関数をコールします。
#include "slapi-plugin.h" int slapi_dn_issuffix( const char *dn, const char *suffix );
この関数は、次のパラメータを取ります。
チェックするDNです。
DNと比較するサフィックスです。
この関数は、指定されたDNが指定されたサフィックスと同じ場合は1を戻し、DNがサフィックスと同じでない場合は0を戻します。
slapi_dn_normalize()
識別名(DN)を正規のフォーマット(先頭または後続のスペースなし、コンポーネント間のスペースなしおよび等号の前後にスペースなし)に変換します。たとえば、次のDNがあるとします。
cn = Moxie Cross , ou = Engineering , dc = example , dc = com
この関数は次の文字列を戻します。
cn=Moxie Cross,ou=Engineering,dc=example,dc=com
#include "slapi-plugin.h" char *slapi_dn_normalize( char *dn );
この関数は、次のパラメータを取ります。
正規化するDNです。
この関数は、正規化されたDNを戻します。dn
引数として渡された変数も適宜変換されることに注意してください。
slapi_dn_normalize_case()
識別名(DN)を正規のフォーマットに変換し、すべての文字を小文字に変換します。この関数のコールは、slapi_dn_normalize()
関数に続けてslapi_dn_ignore_case()
関数をコールするのと同じ効果があります。
#include "slapi-plugin.h" char *slapi_dn_normalize_case( char *dn );
この関数は、次のパラメータを取ります。
正規化して小文字に変換するDNです。
この関数は、すべての文字が小文字の正規化されたDNを戻します。dn
引数として渡された変数も適宜変換されることに注意してください。
slapi_dn_normalize_to_end()
DN値の一部(具体的にはdn
が参照する部分からend
が参照する部分まで)を正規化します。
このルーチンは、関数からの戻り時に、dn
が参照する正規化ビットをNULL
文字で終端しません。
引数の最後にNULL
がある場合、正規化されたDNのNULL
文字終端化を除き、このルーチンはslapi_dn_normalize()
と基本的に同じ処理を行います。
#include "slapi-plugin.h" char *slapi_dn_normalize_to_end( char *dn, char *end );
この関数は、次のパラメータを取ります。
正規化対象のDN値
dn
内のDN値から正規化される部分の最後までのポインタです。この引数がNULL
の場合、dn
内のDN値は全体的に正規化されます。
この関数は、正規化されたdn
の終端へのポインタを戻します。つまり、正規化される部分は* dn
から* (
returnValue - 1)
までです。
slapi_dn_parent()
エントリの親の識別名(DN)のコピーを取得します。この関数をコールする前にslapi_dn_normalize_case()
をコールし、DNを正規化してすべての文字を小文字に変換する必要があります。
DNがローカル・データベースのサフィックスであるかどうかをチェックする場合は、かわりにslapi_dn_beparent()
関数をコールします。
#include "slapi-plugin.h" char *slapi_dn_parent( char *dn );
この関数は、次のパラメータを取ります。
親を検索するエントリのDNです。
この関数は、親エントリのDNを戻します。指定されたDNがNULL
の場合、DNが空文字列の場合またはDNに親がない場合(o=example.com
など)、この関数はNULL
を戻します。
slapi_dn_plus_rdn()
RDNをDNに追加します。
#include "slapi-plugin.h" char *slapi_dn_plus_rdn( const char *dn, const char *rdn);
この関数は、次のパラメータを取ります。
新しいRDNの追加先となるDN値です。
dn
内のDN値に追加されるRDN値です。
この関数は、rdn
内のRDN値をdn
内のDN値に追加して作成された新しいDNを戻します。
戻された文字列は、slapi_ch_free_string()
を使用して解放する必要があります。
slapi_dup_control()
LDAPControl
の割当て済コピーを作成します。
#include "slapi-plugin.h" LDAPControl * slapi_dup_control( LDAPControl const *ctrl );
この関数は、正常終了した場合は割り当てられたLDAPControl
構造体へのポインタを戻し、エラーが発生した場合はNULL
を戻します。
この関数は、LDAPControl
構造体の内容を複製します。LDAPControl
内のすべてのフィールドが、割り当てられた新しい構造体にコピーされ、新しい構造体へのポインタが戻されます。
戻された構造体は、LDAP API関数のldap_control_free(3LDAP)
をコールして解放する必要があります。
ldap_control_free
(3LDAP)
slapi_entry2mods()
Slapi_Entry
からLDAPMod
の配列を作成します。
#include "slapi-plugin.h" int slapi_entry2mods(const Slapi_Entry *e, char **dn, LDAPMod ***attrs);
この関数は、次のパラメータを取ります。
Slapi_Entry
へのポインタです。
戻り時にエントリDNに設定されるchar*
のアドレスです。
戻り時にエントリ属性のコピーに設定されるLDAPMod
の配列のアドレスです。
このファンクションは、次の値のいずれかを戻します。
正常終了した場合は0
正常終了しなかった場合は0
以外
この関数は、Slapi_Entry
からタイプLDAP_MOD_ADD
のLDAPMod
の配列を作成します。この構造体は、プラグイン内部から、クライアントとしてLDAPの追加操作や変更操作を実行する場合などに有効です。
slapi_entry2str()
LDAPエントリのLDIF文字列表現を生成します。
#include "slapi-plugin.h" char *slapi_entry2str( Slapi_Entry const *e, int *len );
この関数は、次のパラメータを取ります。
LDIF文字列に変換するエントリです。
戻されるLDIF文字列の長さです。
指定したエントリのLDIF文字列表現を戻します。エラーが発生した場合はNULL
を戻します。
この関数は、次のフォーマットに準拠したLDIF文字列値を生成します。
dn: dn\n [attr: value\n]*
次に例を示します。
dn: uid=jdoe, ou=People, o=example.com cn: Jane Doe sn: Doe ...
LDIFフォーマットの文字列表現をSlapi_Entry
データ型のエントリに変換するには、slapi_str2entry()
関数をコールします。
文字列を使用する必要がなくなった場合は、slapi_ch_free_string()
関数をコールして、メモリーから文字列を解放する必要があります。
slapi_entry2str_with_options()
エントリのLDIF文字列表現を生成します。この関数の動作はslapi_str2entry()
とほぼ同じです。ただし、この関数では出力オプションを指定できます。
#include "slapi-plugin.h" char *slapi_entry2str_with_options( Slapi_Entry const *e, int *len, int options );
この関数は、次のパラメータを取ります。
LDIF文字列に変換するエントリです。
この関数から戻されるLDIF文字列の長さです。
文字列の変換方法を指定するオプション・セットです。
この関数をコールする場合は、次の任意のオプションのOR
を取ることができます。
フラグ値 | 説明 |
---|---|
SLAPI_DUMP_STATEINFO |
これは、レプリケーションのみで内部的に使用されます。これを使用すると、マルチマスター・レプリケーションで使用する内部データにアクセスできます。 |
SLAPI_DUMP_UNIQUEID |
このオプションは、レプリカの初期化に使用されるLDIFファイルの作成時に使用します。各エントリに |
SLAPI_DUMP_NOOPATTRS |
デフォルトでは、特定の操作属性( |
SLAPI_DUMP_NOWRAP |
デフォルトでは、LDIF仕様の定義に従って行が折り返されます。このオプションを指定すると、行の折返しが無効になります。 |
この関数は、指定したエントリのLDIF文字列表現を戻し、エラーが発生した場合はNULL
を戻します。
この関数は、次の構文に準拠したLDIF文字列値を生成します。
dn: dn\n [attr: value\n]*
次に例を示します。
dn: uid=jdoe, ou=People, o=example.com cn: Jane Doe sn: Doe ...
LDIF文字列フォーマットで表現されたエントリをSlapi_Entry
データ型を使用するLDAPエントリに変換するには、slapi_str2entry()
関数をコールします。
文字列を使用する必要がなくなった場合は、slapi_ch_free_string()
関数をコールして、メモリーから文字列を解放する必要があります。
slapi_entry_add_rdn_values()
エントリの相対識別名(RDN)内のコンポーネントを属性値としてエントリに追加します。(たとえば、エントリのRDNがuid=bjensen
の場合、この関数は属性値としてuid=bjensen
をエントリに追加します。)
#include "slapi-plugin.h" int slapi_entry_add_rdn_values( Slapi_Entry *e );
この関数は、次のパラメータを取ります。
RDN属性を追加するエントリです。
このファンクションは、次の値のいずれかを戻します。
エントリに値が正常に追加された場合はLDAP_SUCCESS
。また、この関数は、エントリがNULL
の場合、エントリのDNがNULL
の場合またはエントリのRDNがNULL
の場合にもLDAP_SUCCESS
を戻します。
エントリのDNを解析できない場合はLDAP_INVALID_DN_SYNTAX
。
RDNに対応する属性タイプに、等価性の点でRDN値と一致する値がすでに存在する場合、値は追加されません。ただし、この関数はRDNに含まれない他の属性タイプを検査しませんが、その値はRDN値と等価的に一致する可能性があります。
エントリがユーザーによって割り当てられた場合は、slapi_entry_free()
を使用して、メモリーからエントリを解放してください。
slapi_entry_add_string()
エントリの属性に文字列値を追加します。
#include "slapi-plugin.h" int slapi_entry_add_string (Slapi_Entry *e, const char *type, const char *value);
この関数は、次のパラメータを取ります。
文字列値を追加するエントリです。
文字列値を追加する属性です。
追加する文字列値です。
この関数は、正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
この関数は、エントリの既存の属性値に文字列値を追加します。指定された属性がエントリに存在しない場合は、指定した文字列値を使用して属性が作成されます。
この関数は、属性に値が存在するかどうかをチェックしません。この関数を使用する前にslapi_entry_attr_delete()
を使用してください。
この関数は、追加される値が既存の値と重複するかどうかもチェックしません。
このルーチンは、パラメータvalue
のコピーを作成します。value
がNULL
の場合、エントリは変更されません。
slapi_entry_add_value()
指定されたSlapi_Value
データ値をエントリの属性に追加します。
#include "slapi-plugin.h" int slapi_entry_add_value (Slapi_Entry *e, const char *type, const Slapi_Value *value);
この関数は、次のパラメータを取ります。
値を追加するエントリです。
値を追加する属性です。
エントリに追加するSlapi_Value
データ値です。
正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
この関数は、エントリの既存の属性値にSlapi_Value
データ値を追加します。指定された属性がエントリに存在しない場合は、指定したSlapi_Value
を使用して属性が作成されます。
この関数は、追加される値が既存の値と重複するかどうかをチェックしません。
このルーチンは、パラメータvalue
のコピーを作成します。value
がNULL
の場合、エントリは変更されません。
slapi_entry_add_values_sv()
エントリ内の指定された属性にSlapi_Value
データ値の配列を追加します。
#include "slapi-plugin.h" int slapi_entry_add_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
この関数は、次のパラメータを取ります。
値を追加するエントリです。
値を追加する属性タイプです。
追加するSlapi_Value
データ値の配列です。
次のいずれかの値を戻します。
属性にSlapi_Value
配列が正常に追加された場合はLDAP_SUCCESS
追加しようとしている値が属性内の既存の値と重複している場合はLDAP_TYPE_OR_VALUE_EXISTS
属性内に既存の重複値が存在する場合はLDAP_OPERATIONS_ERROR
この関数は、Slapi_Value
データ値の配列を属性に追加します。属性が存在しない場合は、属性が作成されてSlapi_Value
配列に格納されている値が設定されます。
非推奨のslapi_entry_add_values()
関数は、この関数で置き換えられます。この関数は、berval
属性値のかわりにSlapi_Value
属性値を使用します。
このルーチンは、パラメータvals
のコピーを作成します。vals
にはNULL
を指定できます。
slapi_entry_add_valueset()
エントリ内の指定された属性にSlapi_ValueSet
データ値を追加します。
#include "slapi-plugin.h" int slapi_entry_add_valueset(Slapi_Entry *e, const char *type, Slapi_ValueSet *vs);
この関数は、次のパラメータを取ります。
値を追加するエントリです。
値を追加する属性タイプです。
エントリに追加するSlapi_ValueSet
データ値です。
正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
この関数は、エントリの属性に一連の値を追加します。追加される値の形式はSlapi_ValueSet
データ型です。指定された属性がエントリに格納されていない場合は、指定したSlapi_ValueSet
値を使用して属性が作成されます。
このルーチンは、パラメータvs
のコピーを作成します。vs
にはNULL
を指定できます。
slapi_entry_alloc()
データ型Slapi_Entry
の新しいエントリにメモリーを割り当てます。
#include "slapi-plugin.h" Slapi_Entry *slapi_entry_alloc();
データ型Slapi_Entry
の新しく割り当てられたエントリへのポインタを戻します。領域を割り当てられない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、空のSlapi_Entry
構造体を戻します。
エントリを使用しなくなった場合は、slapi_entry_free()
関数をコールして、メモリーからエントリを解放する必要があります。
slapi_entry_attr_delete()
エントリから属性(および関連するすべての値)を削除します。
#include "slapi-plugin.h" int slapi_entry_attr_delete( Slapi_Entry *e, const char *type );
この関数は、次のパラメータを取ります。
属性を削除するエントリです。
削除する属性タイプです。
このファンクションは、次の値のいずれかを戻します。
正常終了した場合は0
指定された属性がエントリに含まれていない場合は1
エラーが発生した場合は-1
slapi_entry_attr_find()
指定された属性がエントリに含まれているかどうかを判別します。エントリに属性が含まれている場合、この関数はその属性へのポインタを戻します。
#include "slapi-plugin.h" int slapi_entry_attr_find( const Slapi_Entry *e, const char *type, Slapi_Attr **attr );
この関数は、次のパラメータを取ります。
チェックするエントリです。
チェックする属性の名前です。
属性へのポインタです(その属性がエントリに含まれている場合)。
この関数は、指定された属性がエントリに含まれている場合は0
を戻し、それ以外の場合は-1
を戻します。
戻されたattr
は解放しないでください。これは、内部エントリ・データ構造へのポインタです。通常は、slapi_attr_dup()
を使用して、戻されたattr
のコピーを作成し、attr
へのポインタの使用中にエントリが解放された場合のぶら下がりポインタを回避してください。
slapi_entry_attr_get_charptr()
エントリにある属性の最初の値を文字列として取得します。
#include "slapi-plugin.h" char *slapi_entry_attr_get_charptr(const Slapi_Entry* e, const char *type);
この関数は、次のパラメータを取ります。
文字列値を取得するエントリです。
値を取得する属性タイプです。
この関数は、属性にある最初の値のコピーを戻します。エントリに属性が含まれていない場合はNULL
を戻します。
この値を使用しなくなった場合は、slapi_ch_free()
関数をコールして、メモリーから値を解放する必要があります。
slapi_entry_attr_get_int()
エントリにある属性の最初の値を整数として取得します。
#include "slapi-plugin.h" int slapi_entry_attr_get_int(const Slapi_Entry* e,const char *type);
この関数は、次のパラメータを取ります。
整数値を取得するエントリです。
値を取得する属性タイプです。
属性の最初の値を整数に変換して戻すか、エントリに属性が含まれていない場合は0
を戻します。
slapi_entry_attr_get_long()
エントリにある属性の最初の値をLong整数データ型として取得します。
#include "slapi-plugin.h" long slapi_entry_attr_get_long( const Slapi_Entry* e, const char *type);
この関数は、次のパラメータを取ります。
Long整数値を取得するエントリです。
値を取得する属性タイプです。
この関数は、属性の最初の値をlong
型に変換して戻します。指定された属性がエントリに含まれていない場合は0
を戻します。
slapi_entry_attr_get_uint()
エントリにある属性の最初の値を符号なし整数データ型として取得します。
#include "slapi-plugin.h" unsigned int slapi_entry_attr_get_uint( const Slapi_Entry* e, const char *type);
この関数は、次のパラメータを取ります。
値を取得するエントリです。
値を取得する属性タイプです。
この関数は、属性の最初の値をunsigned integer
に変換して戻します。指定された属性がエントリに含まれていない場合は0
を戻します。
slapi_entry_attr_get_ulong()
エントリにある属性の最初の値を符号なしLong整数データ型として取得します。
#include "slapi-plugin.h" unsigned long slapi_entry_attr_get_ulong( const Slapi_Entry* e, const char *type);
この関数は、次のパラメータを取ります。
値を取得するエントリです。
値を取得する属性タイプです。
この関数は、属性の最初の値をunsigned long
に変換して戻します。指定された属性がエントリに含まれていない場合は0
を戻します。
slapi_entry_attr_hasvalue()
この関数は非推奨です。指定された値を文字列として既存の値と比較し、指定された値がエントリの属性に含まれているかどうかを判別します。等価一致ルールを使用した比較は行いません。
#include "slapi-plugin.h" int slapi_entry_attr_hasvalue(Slapi_Entry *e, const char *type, const char *value);
この関数は、次のパラメータを取ります。
チェックするエントリです。
指定された値をテストする属性タイプです。
属性内で検索する値です。
次のいずれかの値を戻します。
指定された値が属性に含まれている場合は1
指定された値が属性に含まれていない場合は0
value
にはNULL
を指定しないでください。
slapi_entry_attr_merge_sv()
エントリ内の既存の属性値にSlapi_Value
データ値の配列を追加します。属性が存在しない場合は、指定したSlapi_Value
を使用して属性が作成されます。
#include "slapi-plugin.h" int slapi_entry_attr_merge_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
非推奨のslapi_entry_attr_merge()
関数は、この関数で置き換えられます。この関数は、berval
属性値のかわりにSlapi_Value
属性値を使用します。
この関数は、パラメータvals
のコピーを作成します。vals
にはNULL
を指定できます。
slapi_entry_attr_replace_sv()
指定したSlapi_Value
データ値で属性の値を置換します。
#include "slapi-plugin.h" int slapi_entry_attr_replace_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
この関数は、次のパラメータを取ります。
値を置換するエントリです。
置換された値を格納する属性タイプです。
属性の既存の値を置換する必要のあるSlapi_Value
値が格納されている配列です。
この関数は、正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
この関数は、指定されたエントリの既存の属性値を単一のSlapi_Value
データ値で置換します。まずエントリから既存の属性が削除され、次に、指定された新しい値で置換されます。
非推奨のslapi_entry_attr_replace()
関数は、この関数で置き換えられます。この関数は、berval
属性値のかわりにSlapi_Value
属性値を使用します。
この関数は、パラメータvals
のコピーを作成します。vals
にはNULL
を指定できます。
slapi_entry_attr_set_charptr()
エントリの属性の1つ以上の値を、指定された文字列値で置換します。
#include "slapi-plugin.h" void slapi_entry_attr_set_charptr(Slapi_Entry* e, const char *type, const char *value);
この関数は、次のパラメータを取ります。
値を設定するエントリです。
値を設定する属性タイプです。
属性に割り当てる文字列値です。
この関数は、パラメータvalues
のコピーを作成します。values
にはNULL
を指定できます。その場合、この関数はほぼslapi_entry_attr_delete()
と同じになります。
slapi_entry_attr_set_int()
エントリの属性の1つ以上の値を、指定された整数データ値で置換します。
#include "slapi-plugin.h" void slapi_entry_attr_set_int(Slapi_Entry* e, const char *type, int l);
この関数は、次のパラメータを取ります。
値を設定するエントリです。
値を設定する属性タイプです。
属性に割り当てる整数値です。
この関数は、属性の1つ以上の値を、指定したinteger
値で置換します。属性が存在しない場合は、指定した整数値を使用して属性が作成されます。
slapi_entry_attr_set_long()
エントリの属性の1つ以上の値を、指定されたLong整数データ型値で置換します。
#include "slapi-plugin.h" void slapi_entry_attr_set_long(Slapi_Entry* e, const char *type, unsigned long l);
この関数は、次のパラメータを取ります。
値を設定するエントリです。
値を設定する属性タイプです。
属性に割り当てるLong整数値です。
slapi_entry_attr_set_uint()
エントリの属性の1つ以上の値を、指定された符号なし整数データ型値で置換します。
#include "slapi-plugin.h" void slapi_entry_attr_set_uint(Slapi_Entry* e, const char *type, unsigned int l);
この関数は、次のパラメータを取ります。
値を設定するエントリです。
値を設定する属性タイプです。
属性に割り当てる符号なし整数値です。
この関数は、属性の1つ以上の値を、指定したunsigned integer
値で置換します。属性が存在しない場合は、指定した符号なし整数値を使用して属性が作成されます。
slapi_entry_attr_set_ulong()
エントリの属性の1つ以上の値を、指定された符号なしLong整数データ型値で置換します。
#include "slapi-plugin.h" void slapi_entry_attr_set_ulong(Slapi_Entry* e, const char *type, unsigned long l);
この関数は、次のパラメータを取ります。
値を設定するエントリです。
値を設定する属性タイプです。
属性に割り当てる符号なしLong整数値です。
この関数は、属性の1つ以上の値を、指定したunsigned long
値で置換します。属性が存在しない場合は、指定した符号なしLong整数値を使用して属性が作成されます。
slapi_entry_delete_string()
エントリの属性から文字列値を削除します。
#include "slapi-plugin.h" int slapi_entry_delete_string(Slapi_Entry *e, const char *type, const char *value);
この関数は、次のパラメータを取ります。
文字列を削除するエントリです。
文字列を削除する属性タイプです。
削除する文字列値です。
正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
slapi_entry_delete_values_sv()
エントリの属性からSlapi_Value
データ値の配列を削除します。
#include "slapi-plugin.h" int slapi_entry_delete_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
指定された属性およびSlapi_Value
データ値の配列がエントリから削除された場合は、LDAP_SUCCESS
を戻します。
指定された属性にNULL
値が含まれている場合は属性リストからその属性が削除され、LDAP_NO_SUCH_ATTRIBUTE
を戻します。また、指定されたエントリの属性リストに属性が見つからない場合は、LDAP_NO_SUCH_ATTRIBUTE
を戻します。
このコール処理の間に処理エラーが発生した場合は(重複値の検出など)、LDAP_OPERATIONS_ERROR
を戻します。この場合は、サポート・サービスに問題を報告してください。
この関数は、属性/値のセットをエントリから削除します。属性およびそのSlapi_Value
データ値の両方がエントリから削除されることに注意してください。値がNULL
のSlapi_Value
を指定した場合は、指定した属性がエントリから削除されます。いずれの場合もLDAP_SUCCESS
が戻されます。
非推奨のslapi_entry_delete_values()
関数は、この関数で置き換えられます。この関数は、berval
属性値のかわりにSlapi_Value
属性値を使用します。
vals
パラメータにはNULL
を指定できます。その場合、この関数は何も実行しません。
slapi_entry_dup()
エントリおよびそのDNと属性のコピーを作成します。
#include "slapi-plugin.h" Slapi_Entry *slapi_entry_dup( const Slapi_Entry *e );
この関数は、次のパラメータを取ります。
コピーするエントリです。
この関数は、エントリの新しいコピーを戻します。構造体を複製できない場合(仮想メモリーが足りない場合など)は、slapd
プログラムが停止します。
この関数は、既存のSlapi_Entry
構造体のコピーを戻します。他のフロントエンド関数をコールすると、このエントリのDNおよび属性を変更できます。
エントリを使用しなくなった場合は、slapi_entry_free()
関数をコールして、メモリーからエントリを解放する必要があります。
slapi_entry_first_attr()
エントリの最初の属性を検索します。エントリの属性を繰り返して処理するには、この関数とslapi_entry_next_attr()
を使用します。
#include "slapi-plugin.h" int slapi_entry_first_attr( Slapi_Entry *e, Slapi_Attr **attr );
この関数は、次のパラメータを取ります。
属性を取得するエントリです。
エントリの最初の属性へのポインタです。
正常終了した場合は0
を戻し、エラーが発生した場合はそれ以外の値を戻します。
戻されたattr
は解放しないでください。これは、内部エントリ・データ構造へのポインタです。コピーが必要な場合は、slapi_attr_dup()
を使用してください。
slapi_entry_free()
エントリおよびそのDNと属性をメモリーから解放します。
#include "slapi-plugin.h" void slapi_entry_free( Slapi_Entry *e );
この関数は、次のパラメータを取ります。
解放するエントリです。NULL
の場合は処理が行われません。
slapi_entry_alloc()
関数またはslapi_entry_dup()
関数を使用して割り当てられたエントリを解放するには、この関数をコールします。
エントリを解放するには、slapi_ch_free()
またはfree()
ではなく、常にこの関数を使用します。
slapi_entry_get_dn()
指定されたエントリの識別名(DN)を取得します。
#include "slapi-plugin.h" char *slapi_entry_get_dn( Slapi_Entry *e );
この関数は、次のパラメータを取ります。
DNを取得するエントリです。
この関数は、エントリのDNを戻します。これは、DNのコピーではなく、エントリの現在のDNへのポインタを戻すことに注意してください。slapi_entry_set_dn()
をコールして置換する場合を除き、DNを解放する必要はありません。
slapi_entry_set_dn()
を使用してDNを置換する場合は、slapi_ch_free()
を使用してください。
slapi_entry_get_dn_const()
指定したエントリのDN
値をconst
として戻します。
#include "slapi-plugin.h" const char *slapi_entry_get_dn_const( const Slapi_Entry *e );
この関数は、次のパラメータを取ります。
定数としてDNを取得するエントリです。
この関数は、指定したエントリのDN
を戻します。DN
はconst
として戻されます。このDN
値は変更できません。Slapi_DN
オブジェクトのDN
がNULL
である場合は、Slapi_DN
のNDN値が戻されます。
この値は解放しないでください。
slapi_entry_get_ndn()
指定したエントリから正規化されたDNを戻します。
#include "slapi-plugin.h" char *slapi_entry_get_ndn( Slapi_Entry *e );
この関数は、次のパラメータを取ります。
正規化されたDN
を取得するエントリです。
この関数は、指定したエントリから正規化されたDNを戻します。指定したエントリに正規化されたDNが含まれていない場合は、この関数の処理によってDNが作成されます。
この値は解放しないでください。
slapi_entry_get_sdn()
指定したエントリからSlapi_DN
オブジェクトを戻します。
#include "slapi-plugin.h" Slapi_DN *slapi_entry_get_sdn( Slapi_Entry *e );
この関数は、指定したエントリからSlapi_DN
オブジェクトを戻します。
この値は解放しないでください。コピーが必要な場合は、slapi_sdn_dup()
を使用してください。
slapi_entry_get_sdn_const()
指定したエントリからSlapi_DN
オブジェクトの値をconst
として戻します。
#include "slapi-plugin.h" const Slapi_DN *slapi_entry_get_sdn_const ( const Slapi_Entry *e );
指定したエントリからSlapi_DN
オブジェクトの値をconst
として戻します。
この値は解放しないでください。コピーが必要な場合は、slapi_sdn_dup()
を使用してください。
slapi_entry_get_uniqueid()
エントリの一意のID値を取得します。
#include "slapi-plugin.h" const char *slapi_entry_get_uniqueid( const Slapi_Entry *e );
この関数は、次のパラメータを取ります。
一意のIDを取得するエントリです。
この関数は、指定されたエントリの一意のID値を戻します。
この値は解放しないでください。コピーが必要な場合は、slapi_ch_strdup()
を使用してください。
slapi_entry_has_children()
この関数は、指定されたエントリが存在するバックエンドに、そのエントリの子エントリがあるかどうかを判別します。
#include "slapi-plugin.h" int slapi_entry_has_children( const Slapi_Entry *e );
この関数は、次のパラメータを取ります。
子エントリをテストするエントリです。
この関数は、指定したエントリが存在するバックエンドにそのエントリの子エントリがある場合は1
を戻し、それ以外の場合は0
を戻します。サブ・サフィックスが別のバックエンドにある場合、この関数はそのサブ・サフィックスに含まれる子を検索しないことに注意してください。
slapi_entry_init()
指定したDNおよび属性値のペアでエントリの値を初期化します。
#include "slapi-plugin.h" void slapi_entry_init(Slapi_Entry *e, char *dn, Slapi_Attr *a);
この関数は、次のパラメータを取ります。
初期化するエントリです。
初期化しているエントリのDNです。
Slapi_Attr
データ値として指定した、属性値ペアの初期化リストです。
この関数は、エントリの属性および対応する属性値を初期化します。また、処理中にはエントリの一意のIDがNULL
に設定され、フラグ値が0
に設定されます。
Slapi_Entry
ポインタを初期化するには、この関数を使用します。
この関数は、常にslapi_entry_alloc()
の後で使用する必要があります。その逆では使用しないでください。次に例を示します。
Slapi_Entry *e = slapi_entry_alloc(); slapi_entry_init(e, NULL, NULL);
エントリのDNを設定するには、次の関数を実行します。
slapi_sdn_set_dn_passin(slapi_entry_get_sdn(e), dn);
この場合、dn
引数はコピーされませんが、関数では使用されます。引数をコピーする方法は、次の例を参照してください。
char *dn = slapi_ch_strdup(some_dn); Slapi_Entry *e = slapi_entry_alloc(); slapi_entry_init(e, dn, NULL);
このコンテキストではdn
が解放されませんが、slapi_entry_free()
がコールされると最終的に解放されます。
slapi_entry_isroot()
指定されたDNを持つエントリが、ルートDN (ディレクトリ・スーパーユーザー)であるかどうかを判別します。
#include "slapi-plugin.h" into slapi_entry_isroot( const char *dn );
この関数は、次のパラメータを取ります。
チェックするエントリのDNです。
このファンクションは、次の値のいずれかを戻します。
0
指定されたDNを持つエントリは、ルート・ユーザー(ディレクトリ・スーパーユーザー)のエントリです。
1
指定されたDNを持つエントリは、ルート・ユーザーのエントリではありません。
slapi_entry_merge_values_sv()
エントリ内の指定された属性にSlapi_Value
データ値の配列をマージ(追加)します。指定された属性がエントリに含まれていない場合は、指定した値を使用して属性が作成されます。
#include "slapi-plugin.h" int slapi_entry_merge_values_sv( Slapi_Entry *e, const char *type, Slapi_Value **vals );
この関数は、次のパラメータを取ります。
値をマージするエントリです。
マージする値を含む属性タイプです。
エントリにマージする値です。値の型はSlapi_Value
です。
この関数は、LDAP_SUCCESS
またはLDAP_NO_SUCH_ATTRIBUTE
を戻します。
この関数は、属性に格納されている既存の値にSlapi_Value
データ値を追加します。属性タイプが存在しない場合は作成されます。
指定された属性がエントリに存在する場合、この関数は指定された値をマージしてLDAP_SUCCESS
を戻します。エントリに属性が見つからない場合は、指定されたSlapi_Value
を使用して属性が作成され、LDAP_NO_SUCH_ATTRIBUTE
が戻されます。
この関数でエラーが発生した場合、type
の値は未確定の状態でe
へのポインタ内に残されたままであることに注意してください。現在の値セットは切り捨てられる場合があります。
この関数は、vals
のコピーを作成します。vals
にはNULL
を指定できます。
slapi_entry_next_attr()
エントリでprevattr
の次にくる属性を検索します。エントリの属性を繰り返して処理するには、この関数とslapi_entry_first_attr()
を使用します。
#include "slapi-plugin.h" int slapi_entry_next_attr( Slapi_Entry *e, Slapi_Attr *prevattr, Slapi_Attr **attr );
この関数は、次のパラメータを取ります。
属性を取得するエントリです。
エントリの前の属性です。
エントリでprevattr
の次にくる属性へのポインタです。
この関数は、正常終了した場合は0
を戻し、prevattr
がエントリの最後の属性であった場合は-1
を戻します。
戻されたattr
は解放しないでください。コピーが必要な場合にコピーを作成するには、slapi_attr_dup()
を使用します。
slapi_entry_rdn_values_present()
エントリの相対識別名(RDN)の値が、属性値としても存在するかどうかを判別します。(たとえば、エントリのRDNがcn=Barbara Jensen
の場合、この関数は値Barbara Jensen
を持つcn
属性がエントリにあるかどうかを判別します。)
#include "slapi-plugin.h" int slapi_entry_rdn_values_present( Slapi_Entry *e );
この関数は、次のパラメータを取ります。
属性を取得するエントリです。
この関数は、RDN内の値がエントリの属性に存在する場合は1
を戻し、値が存在しない場合は0
を戻します。
slapi_entry_schema_check()
指定されたエントリがオブジェクト・クラスのスキーマに準拠しているかどうかを判別します。
#include "slapi-plugin.h" int slapi_entry_schema_check( Slapi_PBlock *pb, Slapi_Entry *e );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
スキーマをチェックするエントリです。
次のいずれかの値を戻します。
エントリがスキーマに準拠している場合またはスキーマ・チェックがオフの場合は0
。また、この関数は、スキーマで許可されていない追加属性がエントリにあり、オブジェクト・クラスextensibleObject
を保有している場合も0
を戻します。
エントリにobjectclass
属性がない場合、必要な属性がない場合、スキーマで許可されていない属性がある場合(ただし、オブジェクト・クラスextensibleObject
は保有していない)、または単一値属性に複数の値がある場合は1
。
pb
引数にはNULL
を指定できます。これは、SLAPI_IS_REPLICATED_OPERATION
フラグを取得する場合にのみ使用します。このフラグが存在する場合は、スキーマ・チェックが行われません。
slapi_entry_schema_check_ext ()
指定された特定エントリの変更が、そのエントリのオブジェクト・クラスのスキーマに準拠しているかどうかを判別します。この関数は、変更の影響を受けない既存の属性をチェックしません。
#include "slapi-plugin.h" int slapi_entry_schema_check_ext( Slapi_PBlock *pb, Slapi_Entry *e, LDAPMod **mods );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
スキーマをチェックするエントリです。
属性値をチェックする変更構造体へのポインタです。
次のいずれかの値を戻します。
指定されたエントリの変更がスキーマに準拠している場合またはスキーマ・チェックがオフの場合は0
。また、この関数は、スキーマで許可されていない追加属性がエントリにあり、オブジェクト・クラスextensibleObject
を保有している場合も0
を戻します。
変更によってobjectclass
属性またはその他の必須属性が欠落する場合、変更によってスキーマで許可されていない属性が追加される場合または変更によって単一値属性に複数の値が設定される場合は1
。
pb
引数にはNULL
を指定できます。これは、SLAPI_IS_REPLICATED_OPERATION
フラグを取得する場合にのみ使用します。このフラグが存在する場合は、スキーマ・チェックが行われません。
slapi_entry_set_dn()
エントリの識別名(DN)を設定します。
#include "slapi-plugin.h" void slapi_entry_set_dn( Slapi_Entry *e, char *dn );
この関数は、次のパラメータを取ります。
DNを割り当てるエントリです。
エントリに割り当てる識別名です。
この関数は、指定されたエントリで与えられるDNへのポインタを設定します。
dn
は、slapi_entry_free()
がコールされると解放されます。
dn
のコピーを渡す必要があります。次に例を示します。
char *dn = slapi_ch_strdup(some_dn); slapi_entry_set_dn(e, dn);
このコールの結果、古いdn
は解放されます。NULL
値は渡さないでください。
slapi_entry_set_sdn()
エントリにSlapi_DN
値を設定します。
#include "slapi-plugin.h" void slapi_entry_set_sdn( Slapi_Entry *e, const Slapi_DN *sdn );
この関数は、指定したエントリのSlapi_DN
オブジェクトに値を設定します。
この関数は、sdn
引数のコピーを作成します。
slapi_entry_size()
この関数は、最も近い1kに丸めたエントリの近似サイズを戻します。これは、キャッシュ・サイズをチェックしたり、記憶域のニーズを見積もる場合などに有効です。
#include "slapi-plugin.h" size_t slapi_entry_size(Slapi_Entry *e);
この関数は、次のパラメータを取ります。
サイズを戻すエントリです。
この関数は、最も近い1kに丸めたエントリのサイズを戻します。戻されるサイズはsize_t
データ型で、これはu_long
値です。エントリが空の場合、サイズ1kが戻されます。
エントリのサイズを確認すると属性値のサイズのみがカウントされ、他のエントリ値のサイズ(属性名、各種の正規化DN、メタデータのサイズなど)は戻されるサイズには含まれません。メタデータのサイズは、次に大きな1kまで丸めたサイズにかなり一致すると考えられます(これは、特にエントリが大きくなるほど該当します。その場合は、メタデータのサイズよりも属性値の実サイズの方がはるかに重要となります)。
エントリのサイズを確認したときは、削除された値および削除された属性がどちらもカウントに含まれることに注意してください。
slapi_entry_syntax_check()
この関数は、指定されたエントリに存在する属性の値が属性構文ルールに準拠しているかどうかを判別します。
#include "slapi-plugin.h" int slapi_entry_syntax_check( Slapi_PBlock *pb, Slapi_Entry *e );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
属性が構文に準拠しているかをチェックするエントリです。
次のいずれかの値を戻します。
エントリの属性値が準拠している場合または構文チェックがオフの場合は0
エントリの属性値が属性構文ルールに準拠していない場合は1
pb
引数にはNULL
を指定できます。これは、SLAPI_IS_REPLICATED_OPERATION
フラグを取得する場合にのみ使用します。このフラグが存在する場合は、構文チェックが行われません。
slapi_entry_vattr_find()
この関数は、指定された仮想属性が存在するかどうかを判別し、存在する場合はその属性を戻します。
#include "slapi-plugin.h" int slapi_entry_vattr_find(const Slapi_Entry *e, const char *type, Slapi_Attr **a, int *buffer_flags);
この関数は、次のパラメータを取ります。
仮想属性をチェックするエントリです。
仮想属性の属性タイプです。
仮想属性を保持する構造体です。
コール元が属性を解放する必要があるかどうかを示したビットマスクです。
次のいずれかの値を戻します。
タイプで指定された仮想属性がエントリに含まれている場合は0
この場合、aは仮想属性を参照し、buffer_flagsはSLAPI_VIRTUALATTRS_RETURNED_COPIES
(構造体aを解放する必要がある)またはSLAPI_VIRTUALATTRS_RETURNED_POINTERS
(解放する必要がない)を保持します。
属性にエントリが含まれていない場合は-1
slapi_filter_compare()
2つのフィルタが同一であるかどうかを判別します。
#include "slapi-plugin.h" int slapi_filter_compare(struct slapi_filter *f1, struct slapi_filter *f2);
この関数は、次のパラメータを取ります。
比較する最初のフィルタです。
比較する2番目のフィルタです。
この関数は、2つのフィルタが同じ場合は0
を戻し、同じでない場合は0
以外の値を戻します。
この関数を使用すると、2つのフィルタが同じであるかどうかを確認したり、別の順序に設定できます。
slapi_filter_free()
指定されたフィルタおよび(オプションで)それを構成する一連のフィルタ(LDAP_FILTER_AND
型フィルタ内の一連のフィルタなど)を解放します。
#include "slapi-plugin.h" void slapi_filter_free( Slapi_Filter *f, int recurse );
この関数は、次のパラメータを取ります。
解放するフィルタです。
1の場合は、このフィルタを構成するすべてのフィルタを再帰的に解放します。0の場合は、f
で指定されたフィルタのみを解放します。
Description
この関数は、パラメータf
内のフィルタを解放します。
slapi_str2filter()
を使用して作成されたフィルタは、この関数の使用後に解放する必要があります。次のようにパラメータ・ブロックから抽出されたフィルタがあるとします。
slapi_pblock_get( pb, SLAPI_SEARCH_FILTER, &filter );
このようなフィルタは解放しないでください。
slapi_filter_get_attribute_type()
すべての種類の単純なフィルタの属性タイプを取得します。
#include "slapi-plugin.h" int slapi_filter_get_attribute_type( Slapi_Filter *f, char **type );
この関数は、次のパラメータを取ります。
部分文字列値を取得するフィルタです。
フィルタの属性タイプへのポインタです。
この関数は、フィルタの属性タイプを戻します。
この関数は、すべての種類の単純なフィルタの属性タイプを取得します。
LDAP_FILTER_GE
LDAP_FILTER_LE
LDAP_FILTER_APPROX
LDAP_FILTER_EQUALITY
LDAP_FILTER_SUBSTRINGS
LDAP_FILTER_PRESENT
LDAP_FILTER_EXTENDED
LDAP_FILTER_AND
LDAP_FILTER_OR
LDAP_FILTER_NOT
(mail-foo)
などのフィルタは、タイプmail
を戻します。
属性タイプはtype
で戻され、この関数のコール後に解放する必要はありません。これは、slapi_filter_free()
がコールされたとき、Slapi_Filter
構造体と同時に解放されます。
slapi_filter_get_ava()
(タイプLDAP_FILTER_EQUALITY
、LDAP_FILTER_GE
、LDAP_FILTER_LE
、LDAP_FILTER_APPROX
のフィルタにのみ適用)フィルタから属性タイプおよび値を取得します。
#include "slapi-plugin.h" int slapi_filter_get_ava( Slapi_Filter *f, char **type, struct berval **bval );
この関数は、次のパラメータを取ります。
属性および値を取得するフィルタです。
フィルタの属性タイプへのポインタです。
フィルタの値を格納しているberval
構造体のアドレスへのポインタです。
この関数は、正常終了した場合は0を戻し、フィルタが前述のタイプのいずれでもない場合は-1を戻します。
通常、タイプLDAP_FILTER_EQUALITY
、LDAP_FILTER_GE
、LDAP_FILTER_LE
およびLDAP_FILTER_APPROX
のフィルタは、値を属性と比較します。次に例を示します。
(cn=Barbara Jensen)
このフィルタは、cn
属性の値がBarbara Jensen
と一致するエントリを検索します。
属性type
はパラメータ・タイプで戻され、値はパラメータbval
で戻されます。
パラメータtype
およびbval
内の文字列はSlapi_Filter
内のメモリーへの直接のポインタであるため、使用後に解放しないでください。これらは、Slapi_Filter
構造体の使用後に、サーバー・エントリでslapi_filter_free()
がコールされたときに解放されます。
slapi_filter_get_choice()
LDAP_FILTER_EQUALITY
など、指定したフィルタのタイプを取得します。
#include "slapi-plugin.h" int slapi_filter_get_choice( Slapi_Filter *f );
この関数は、次のパラメータを取ります。
取得するフィルタ・タイプです。
このファンクションは、次の値のいずれかを戻します。
LDAP_FILTER_AND
(ANDフィルタ)
例: (&(ou=Accounting)(l=Sunnyvale))
LDAP_FILTER_OR
(ORフィルタ)
例: (|(ou=Accounting)(l=Sunnyvale))
LDAP_FILTER_NOT
(NOTフィルタ)
例: (!(l=Sunnyvale))
LDAP_FILTER_EQUALITY
(等価フィルタ)
例: (ou=Accounting)
LDAP_FILTER_SUBSTRINGS
(部分文字列フィルタ)
例: (ou=Account*Department)
LDAP_FILTER_GE
(以上のフィルタ)
例: (supportedLDAPVersion>=3)
LDAP_FILTER_LE
(以下のフィルタ)
例: (supportedLDAPVersion<=2)
LDAP_FILTER_PRESENT
(存在フィルタ)
例: (mail=*)
LDAP_FILTER_APPROX
(近似処理フィルタ)
例: (ou~=Sales)
LDAP_FILTER_EXTENDED
(拡張可能フィルタ)
例: (o:dn:=Example)
slapi_filter_get_subfilt()
(タイプLDAP_FILTER_SUBSTRINGS
のフィルタのみに適用)フィルタから部分文字列値を取得します。
#include "slapi-plugin.h" int slapi_filter_get_subfilt( Slapi_Filter *f, char **type, char **initial, char ***any, char **final );
この関数は、次のパラメータを取ります。
部分文字列値を取得するフィルタです。
フィルタの属性タイプへのポインタです。
フィルタの開始部分文字列(で始まる)へのポインタです。
フィルタの部分文字列(含む)の配列へのポインタです。
フィルタの終了部分文字列(で終わる)へのポインタです。
このファンクションは、次の値のいずれかを戻します。
正常終了した場合は0
フィルタが前述のタイプのいずれでもない場合は-1
通常、タイプLDAP_FILTER_SUBSTRINGS
のフィルタは部分文字列のセットを属性と比較します。次に例を示します。
(cn=John*Q*Public)
このフィルタは、cn
属性の値がJohn
で始まり、Q
を含み、Public
で終わるエントリを検索します。
これらの部分文字列値および属性タイプをこのフィルタから取得するには、この関数をコールします。前述の例でこの関数をコールすると、属性タイプcn
の他、initial
部分文字列のJohn
、any
部分文字列のQ
およびfinal
部分文字列のPublic
が取得されます。
slapi_filter_get_type()
(タイプLDAP_FILTER_PRESENT
のフィルタのみに適用)フィルタで指定された属性タイプを取得します。
#include "slapi-plugin.h" int slapi_filter_get_type( Slapi_Filter *f, char **type );
この関数は、次のパラメータを取ります。
部分文字列値を取得するフィルタです。
フィルタの属性タイプへのポインタです。
この関数は、正常終了した場合は0を戻し、フィルタが前述のタイプのいずれでもない場合は-1を戻します。
通常、タイプLDAP_FILTER_PRESENT
のフィルタは、指定された属性に値が割り当てられているかどうかを判別します。次に例を示します。
(mail=*)
このフィルタは、mail
属性に値が割り当てられているエントリを検索します。
このフィルタから属性タイプを取得するには、この関数をコールします。前述の例の場合は、この関数をコールすると属性タイプmail
が取得されます。
この関数のコール後は、パラメータtype
で戻された文字列を解放しないでください。この文字列は、slapi_filter_free()
をコールして構造体Slapi_Filter
が解放されるときに解放されます。
slapi_filter_join()
LDAP_FILTER_AND
、LDAP_FILTER_OR
またはLDAP_FILTER_NOT
の各フィルタ・タイプのいずれかを使用して、指定された2つのフィルタを結合します。フィルタ・タイプLDAP_FILTER_NOT
を指定する場合は、2番目のフィルタをNULL
にする必要があります。
#include "slapi-plugin.h" Slapi_Filter *slapi_filter_join( int ftype, Slapi_Filter *f1, Slapi_Filter *f2 );
この関数は、次のパラメータを取ります。
作成する複合フィルタのタイプです。
結合する最初のフィルタです。
結合する2番目のフィルタです。ftype
がLDAP_FILTER_NOT
である場合は、この引数にNULL
を指定します。
この関数は、他の2つのフィルタから作成された新しいフィルタを戻します。
通常、タイプLDAP_FILTER_AND
、LDAP_FILTER_OR
およびLDAP_FILTER_NOT
のフィルタは、1つ以上の他のフィルタで構成されます。次に例を示します。
(&(ou=Accounting)(l=Sunnyvale)) (|(ou=Accounting)(l=Sunnyvale)) (!(l=Sunnyvale))
前述の例のそれぞれには、1つ以上のLDAP_FILTER_EQUALITY
フィルタが含まれています。
タイプLDAP_FILTER_AND
、LDAP_FILTER_OR
またはLDAP_FILTER_NOT
の新しいフィルタを作成するには、slapi_filter_join()
関数をコールします。
f1
およびf2
のフィルタは結合処理中にコピーも解放もされませんが、生成されるフィルタはこれらの2つのフィルタを指す参照を保持しています。
slapi_filter_list_first()
(タイプLDAP_FILTER_EQUALITY
、LDAP_FILTER_GE
、LDAP_FILTER_LE
、LDAP_FILTER_APPROX
のフィルタにのみ適用)指定されたフィルタを構成する最初のフィルタを取得します。
#include "slapi-plugin.h" Slapi_Filter *slapi_filter_list_first( Slapi_Filter *f );
この関数は、次のパラメータを取ります。
最初のコンポーネントを取得するフィルタです。
指定されたフィルタf
を構成する最初のフィルタ。
指定されたフィルタを構成するすべてのフィルタを繰り返して処理するには、この関数とslapi_filter_list_next()
関数を使用します。
通常、タイプLDAP_FILTER_AND
、LDAP_FILTER_OR
およびLDAP_FILTER_NOT
のフィルタは、1つ以上の他のフィルタで構成されます。たとえば、次のようなフィルタがあるとします。
(&(ou=Accounting)(l=Sunnyvale))
このリストの最初のフィルタは次のとおりです。
(ou=Accounting)
リストの最初のフィルタを取得するには、この関数をコールします。
フィルタの複製は行われません。このため、このフィルタを元のフィルタと無関係に解放しないでください。
slapi_filter_list_next()
(タイプLDAP_FILTER_EQUALITY
、LDAP_FILTER_GE
、LDAP_FILTER_LE
、LDAP_FILTER_APPROX
のフィルタにのみ適用)指定されたフィルタf
を構成する次のフィルタ(fprev
に続く)を取得します。
#include "slapi-plugin.h" Slapi_Filter *slapi_filter_list_next(Slapi_Filter *f, Slapi_Filter *fprev);
この関数は、次のパラメータを取ります。
次にくるコンポーネント(fprev
の後の)を取得するフィルタです。
指定されたフィルタf
内のフィルタです。
指定されたフィルタf
を構成する次のフィルタ(fprev
の後の)。
指定されたフィルタを構成するすべてのフィルタを繰り返して処理するには、この関数とslapi_filter_list_first()
関数を使用します。
通常、タイプLDAP_FILTER_AND
、LDAP_FILTER_OR
およびLDAP_FILTER_NOT
のフィルタは、1つ以上の他のフィルタで構成されます。たとえば、次のようなフィルタがあるとします。
(&(ou=Accounting)(l=Sunnyvale))
このリストで(ou=Accounting)
より後の次のフィルタは、次のとおりです。
(l=Sunnyvale)
リストからフィルタを取得するには、slapi_filter_list_next()
関数をコールします。
フィルタの複製は行われません。このため、このフィルタを元のフィルタと無関係に解放しないでください。
slapi_filter_test()
指定されたエントリが特定のフィルタに一致するかどうかを判別します。
#include "slapi-plugin.h" int slapi_filter_test( Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Filter *f, int verify_access );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
テストするエントリです。
エントリをテストするときに照合するフィルタです。
1の場合は、指定されたエントリを検索するアクセス権が現在のユーザーにあるかどうかを検証します。0の場合は、アクセス制御を無視します。
次のいずれかの値です。
エントリがフィルタに一致した場合または指定されたフィルタがNULL
の場合は0
フィルタ・タイプが不明の場合は-1
エラーが発生した場合は正の値(LDAPエラー・コード)
slapi_filter_test_ext()
エントリが指定されたフィルタに一致するかどうかを判別します。
#include "slapi-plugin.h" int slapi_filter_test_ext( Slapi_PBlock *pb, Slapi_Entry *e, Slapi_Filter *f, int verify_access, int only_test_access)
この関数は、次のパラメータを取ります。
ユーザーを抽出したパラメータ・ブロックです。
フィルタ一致を検証する必要のあるエントリです。
フィルタ一致に使用するフィルタです。
アクセス・チェックを行う必要がない場合は0
アクセス・チェックを行う必要がある場合は1
フィルタ一致を行う必要がある場合は0
フィルタ一致を行う必要がない場合は1
このファンクションは、次の値のいずれかを戻します。
エントリがフィルタに一致した場合または指定されたフィルタがNULL
の場合は0
フィルタ・タイプが不明の場合またはエントリがフィルタに一致しない場合は-1
エラーが発生した場合または指定されたエントリを検索するアクセス権が現在のユーザーにない場合は正の値(LDAPエラー・コード)
この関数を使用すると、エントリが指定したフィルタに一致するかどうか、または現在のユーザーにエントリへのアクセス権があることを確認できます。
slapi_filter_test_simple()
エントリがフィルタに一致するかどうかを判別します。
#include "slapi-plugin.h" int slapi_filter_test_simple( Slapi_Entry *e, Slapi_Filter *f);
この関数は、次のパラメータを取ります。
テストするエントリです。
エントリを照合するフィルタです。
このファンクションは、次の値のいずれかを戻します。
エントリがフィルタに一致した場合または指定されたフィルタがNULL
の場合は0
フィルタ・タイプが不明の場合またはエントリがフィルタに一致しない場合は-1
エラーが発生した場合は正の値(LDAPエラー・コード)
この関数を使用すると、エントリe
がフィルタf
に一致するかどうかをチェックできます。
slapi_find_matching_paren()
左カッコに対応する右カッコを検索します。
#include "slapi-plugin.h" char *slapi_find_matching_paren( const char *str );
この関数は、次のパラメータを取ります。
str
左カッコで始まる文字列へのポインタです。
この関数は、正常終了すると右カッコへのポインタを戻します。それ以外の場合は、対応する右カッコが見つからなかったことを示すNULL
を戻します。
この関数は、左カッコ(
で始まる文字列へのポインタを取り、対応する右カッコ)
へのポインタを戻します。これは、複雑な検索フィルタ文字列を評価する場合に有効です。
slapi_free_search_results_internal()
slapi_search_internal_pb()
およびslapi_search_internal_callback_pb()
関数によって戻された検索結果を解放します。
#include "slapi-plugin.h" void slapi_free_search_results_internal(Slapi_PBlock *pb);
この関数は、次のパラメータを取ります。
slapi_search_internal_pb()
およびslapi_search_internal_callback_pb()
関数によって戻されたパラメータ・ブロックです。
この関数は、エントリが不要になった場合に、パラメータ・ブロックを解放する前にコールする必要があります。
slapi_free_suffix_list()
slapi_get_suffix_list()
を使用して取得したリストなど、ディレクトリ・サフィックスのリストを解放します。
#include "slapi-plugin.h" void slapi_free_suffix_list(Slapi_DN ** suffix_list);
この関数は、次のパラメータを取ります。
suffix_list
解放するサフィックスの識別名の配列です。
この関数は、suffix_list
の各エントリおよびsuffix_list
自身を解放します。サフィックスに関連付けられているデータは、データベースから削除されません。
slapi_get_first_backend()
最初のバックエンドのバックエンド構造体へのポインタを戻します。
#include "slapi-plugin.h" Slapi_Backend* slapi_get_first_backend(char **cookie);
この関数は、次のパラメータを取ります。
戻されたバックエンドの索引を含む出力パラメータです。これは、slapi_get_next_backend()
をコールする場合に役立ちます。バックエンドが戻されなかった場合は、出力に0
が格納されます。
この関数は、cookie
パラメータで最初のバックエンドのバックエンド構造体へのポインタおよびその索引を戻し、バックエンドが存在しない場合はNULL
を戻します。
この関数は、最初のバックエンドのバックエンド構造体へのポインタを戻します。すべてのバックエンドを繰り返して処理する場合は、この関数とslapi_get_next_backend()
を使用します。次に例を示します。
Slapi_Backend *be = NULL; char *cookie = NULL; be = slapi_get_first_backend (&cookie); while (be) { ... be = slapi_get_next_backend (cookie); } slapi_ch_free ((void**)&cookie);
繰返し後は、slapi_ch_free()
を使用してcookie
パラメータを解放してください。
slapi_get_object_extension()
オブジェクト拡張にアクセスします。
#include "slapi-plugin.h" void *slapi_get_object_extension(int objecttype, void *object, int extensionhandle);
この関数は、次のパラメータを取ります。
objecttype
サーバーによって設定されるタイプです。
object
拡張したオブジェクトへのポインタです。
extensionhandle
サーバーによって設定されるハンドルです。
この関数は、slapi_register_object_extension()
を使用して登録されたオブジェクト拡張へのポインタを戻します。
slapi_get_next_backend()
次のバックエンドへのポインタを戻します。
#include "slapi-plugin.h" Slapi_Backend* slapi_get_next_backend(char *cookie);
この関数は、次のパラメータを取ります。
入力時は、次にくるバックエンドの検索が行われる索引を格納します。出力時は、戻されたバックエンドの索引を格納します。
この関数は、次のバックエンドが存在する場合はそのバックエンドへのポインタを戻し、cookie
パラメータを更新します。それ以外の場合はNULL
を戻し、cookie
は変更されません。
この関数は、次のバックエンドへのポインタを戻します。すべてのバックエンドを繰り返して処理する場合は、この関数とslapi_get_first_backend()
を使用します。次に例を示します。
Slapi_Backend *be = NULL; char *cookie = NULL; be = slapi_get_first_backend (&cookie); while (be ) { ... be = slapi_get_next_backend (cookie); } slapi_ch_free ((void**)&cookie);
繰返し後は、slapi_ch_free()
を使用してcookie
パラメータを解放してください。
slapi_get_suffix_list()
サーバーによって処理されるサフィックスDNの配列を戻します。
#include "slapi-plugin.h" Slapi_DN ** slapi_get_suffix_list(int show_private, int *count);
この関数は、次のパラメータを取ります。
1
に設定された場合、戻されたDNリストには、Directory Serverが使用する、ユーザー・データが格納されていないサフィックスが含まれています。それ以外の場合は、ユーザー・データが格納されたサフィックスのDNのみが戻されます。
リスト内のサフィックスの数を格納するプレースホルダです。
この関数は、サフィックスのベースDNが格納されているSlapi_DN
構造体の配列へのポインタを戻します。countパラメータには、DNが戻されるサフィックスの数が格納されます。
戻されたリストはslapi_free_suffix_list()
を使用して解放してください。
slapi_get_supported_controls_copy()
Directory Serverがサポートするコントロールを示す、オブジェクト識別子(OID)の割当て済配列を取得します。slapi_register_supported_control()
をコールすると、新しいコントロールを登録できます。
#include "slapi-plugin.h" int slapi_get_supported_controls_copy( char ***ctrloidsp, unsigned long **ctrlopsp );
この関数は、次のパラメータを取ります。
サポートされている一連のコントロールOIDを格納する文字配列へのポインタです。OIDを格納しない場合は、このパラメータにNULL
を渡します。
ctrloidsp
配列内のコントロールごとにサポートされている操作値を格納する、符号なしLong整数配列へのポインタです。サポートされている操作値を格納しない場合は、このパラメータにNULL
を渡します。
この関数は、正常終了した場合は0
を戻し、エラーが発生した場合は0以外の値を戻します。
マルチスレッド・セーフではないため以前のリリースから非推奨のslapi_get_supported_controls()
関数は、この関数で置き換えられます。
slapi_register_supported_control()
をコールしてコントロールを登録する場合は、コントロールのOIDおよびそのコントロールがサポートする操作のIDを指定します。サーバーは、コントロールのOIDの配列およびコントロールがサポートする操作の配列という2つの配列に、この情報を記録します。slapi_entry_get_uniqueid()
をコールすると、これらの配列のコピーを取得できます。
ctrloidsp
配列で戻されるOIDごとに、ctrlopsp
配列内の対応する配列要素(同じ索引を持つ)によって、コントロールをサポートする操作が識別されます。操作に指定できるIDのリストは、「slapi_register_supported_control()」
を参照してください。
戻されたctrloidsp
配列は、slapi_ch_array_free()
をコールして解放する必要があります。戻されたctrlopsp
配列は、slapi_ch_free()
をコールして解放する必要があります。
slapi_get_supported_extended_ops_copy()
拡張操作のオブジェクトID (OID)のコピーを取得します。
#include "slapi-plugin.h" char **slapi_get_supported_extended_ops_copy ( void );
この関数にパラメータはありません。
この関数は、サーバーがサポートする拡張操作のOIDの配列へのポインタを戻します。
以前のリリースから非推奨のslapi_get_supported_extended_ops()
関数は、この関数で置き換えられます。slapi_get_supported_extended_ops()
はマルチスレッド・セーフではありません。
この関数は、サーバーがサポートする拡張操作のオブジェクトID (OID)のコピーを取得します。SLAPI_PLUGIN_EXT_OP_OIDLIST
パラメータにOIDを格納し、slapi_pblock_set()
をコールすると、新しい拡張操作を登録できます。
この関数から戻された配列は、slapi_ch_array_free()
関数をコールして解放する必要があります。
slapi_get_supported_saslmechanisms_copy()
サポートされているSimple Authentication and Security Layer (SASL)メカニズムの名前の配列を取得します。新しいSASLメカニズムを登録するには、slapi_register_supported_saslmechanism()
関数をコールします。
#include "slapi-plugin.h" char ** slapi_get_supported_saslmechanisms_copy( void );
この関数は、サーバーがサポートするSASLメカニズムの名前の配列へのポインタを戻します。
slapi_has8thBit()
文字列に8ビット文字が含まれているかどうかをチェックします。
#include "slapi-plugin.h" int slapi_has8thBit(unsigned char *s);
この関数は、次のパラメータを取ります。
テスト対象の、NULL
で終了する文字列へのポインタです。
この関数は、文字列に8ビット文字が含まれている場合は1
を戻し、含まれていない場合は0
を戻します。
slapi_is_rootdse()
この関数は、エントリがルートDSEであるかどうかを判別します。ルートDSEは、機能や構成など、Directory Serverに関する情報が含まれる特殊なエントリです。
#include "slapi-plugin.h" int slapi_is_rootdse ( const char *dn );
この関数は、次のパラメータを取ります。
ルートDSEエントリであるかどうかを確認するためにテストするDNです。
この関数は、dn
がルートDSEの場合は1
を戻し、それ以外の場合は0
を戻します。
slapi_is_root_suffix()
サフィックスがDITのルート・サフィックスであるかどうかをチェックします。
#include "slapi-plugin.h" int slapi_is_root_suffix(Slapi_DN * dn);
この関数は、次のパラメータを取ります。
チェックするDNです。
このファンクションは、次の値のいずれかを戻します。
DNがルート・サフィックスでない場合は0
DNがルート・サフィックスである場合は1
slapi_ldap_init()
LDAP接続へのスレッドセーフ・ハンドルを取得します。
#include "slapi-plugin.h" LDAP *slapi_ldap_init(char *ldaphost, int ldapport, int secure, int shared);
この関数は、次のパラメータを取ります。
ldaphost
LDAPサーバーが実行されているホストです。
ldapport
LDAPサーバーがリスニングするポートです。
secure
SSL経由のセキュアな接続の場合は1
、それ以外の場合はNULL
です。
shared
NULL
でない場合は、スレッド間で接続を共有できます。
この関数を使用すると、LDAP接続へのスレッドセーフ・ハンドルをプラグインで取得できます。ハンドルの使用が済んだら、slapi_ldap_unbind()
をコールしてください。
接続には、Directory Server Resource Kitに同梱されているDirectory SDK for Cを使用してタイムアウトが設定されている場合があります。例15-1に、タイムアウトを設定する方法を示します。
例15-1 タイムアウトの設定
#include "slapi-plugin.h" #include "ldap.h" void my_ldap_function(void) { LDAP * ld; int to = 5000; /* 5000 ms == 5 s timeout */ if ((ld = slapi_ldap_init(host, port, 0, 1)) == NULL) { /* error trying to create an LDAP session */ return -1; } if (ldap_set_option(ld, LDAP_X_OPT_CONNECT_TIMEOUT, &to) != 0) { /* error setting timeout */ slapi_ldap_unbind(ld); return -1; } /* Use the handle for a search for example. */ slapi_ldap_unbind(ld); return 0; }
正常終了した場合、この関数はLDAP接続ハンドルを戻します。それ以外の場合はNULL
を戻します。
slapi_ldap_unbind()
slapi_ldap_init()
を使用して取得したLDAP接続を解放します。
#include "slapi-plugin.h" void slapi_ldap_unbind( LDAP *ld );
この関数は、次のパラメータを取ります。
ld
LDAP接続へのハンドルです。
この関数を使用すると、slapi_ldap_init()
を使用して取得したLDAP接続をプラグインで解放できます。
slapi_ldapmods_syntax_check ()
指定された変更が属性構文ルールに準拠しているかどうかを判別します。
#include "slapi-plugin.h" int slapi_ldapmods_syntax_check( Slapi_PBlock *pb, LDAPMod **mods );
この関数は、次のパラメータを取ります。
パラメータ・ブロックです。
属性値をチェックする変更構造体へのポインタです。
次のいずれかの値を戻します。
指定された変更が属性構文ルールに準拠している場合または構文チェックがオフの場合は0
変更が属性構文ルールに準拠していない場合は1
pb
引数にはNULL
を指定できます。これは、SLAPI_IS_REPLICATED_OPERATION
フラグを取得する場合にのみ使用します。このフラグが存在する場合は、構文チェックが行われません。
slapi_lock_mutex()
mutexをロックします。
#include "slapi-plugin.h" void slapi_lock_mutex( Slapi_Mutex *mutex );
この関数は、次のパラメータを取ります。
mutex
スレッド同期のMutex
この関数はスレッド同期を許可します。この関数を使用してスレッドがmutexをロックした場合は、mutexを保持するスレッドがslapi_unlock_mutex()
をコールするまで、ロックを取得しようとする他のスレッドがブロックされます。
slapi_log_error_ex()
サーバー・エラー・ログにエラー・メッセージを書き込みます。
#include "slapi-plugin.h" int slapi_log_error_ex(long errorId, long msgId, int connId, int opId, char const * subsystem, char const * humanReadableMsg, char const * fmt, /* args */ ...);
この関数は、次のパラメータを取ります。
errorId
このエラー・メッセージに指定する一意の識別子です。
msgId
SLAPI_OPERATION_MSGID
を使用して取得した、現在のメッセージの識別子です。
connId
SLAPI_CONN_ID
を使用して取得した、現在の接続の識別子です。
opId
SLAPI_OPERATION_ID
を使用して取得した、現在の操作の識別子です。
subsystem
メッセージを記録するプラグイン関数の名前など、発生した警告のコンテキストを示す文字列です。
humanReadableMsg
この警告を識別する文字列メッセージです。
fmt
printf()
の形式でのフォーマット指定です。
args
fmt
でフォーマットを指定する場合の引数です。
この関数は、指定されたエラー・メッセージをサーバー・エラー・ログに同期的に書き込みます。この関数は、ログ・メッセージがディスクに書き込まれるまで復帰しません。したがって、書込み処理中はサーバーがブロックされます。デフォルトのエラー・ログは$INSTANCE_PATH/logs/errors
です。
slapi_log_info_ex()
とは異なり、この関数はオフにできません。
通常、エラー・メッセージは致命的エラーと関係があります。警告の場合は、slapi_log_warning_ex()
を使用します。情報ログ・メッセージの場合は、slapi_log_info_ex()
を使用します。
例15-2に、slapi_log_error_ex()
のコールを示します。
例15-2 エラーのロギング
#include "slapi-plugin.h" #include "example-com-error-ids.h" /* example.com unique error IDs file */ int foobar(Slapi_PBlock * pb) { char * error_cause; int apocalypse = 1; /* Expect the worst. */ /* ... */ if (apocalypse) { /* Server to crash soon */ slapi_log_error_ex( EXCOM_SERVER_MORIBUND, /* Unique error ID */ SLAPI_LOG_NO_MSGID, SLAPI_LOG_NO_CONNID, SLAPI_LOG_NO_OPID, "example.com: foobar in baz plug-in", "cannot write to file system: %s\n", error_cause ); return -1; } return 0; }
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_log_info_ex()
サーバー・エラー・ログに情報メッセージを書き込みます。
#include "slapi-plugin.h" int slapi_log_info_ex(slapi_log_info_area_t area, slapi_log_info_level_t level, long msgId, int connId, int opId, char const * subsystem, char const * fmt, /* args */, ...);
この関数は、次のパラメータを取ります。
area
nsslapd-infolog-area
の値に領域の10進値を加算して、ロギングを有効にするサーバー・コンポーネントを指定します。情報ロギングを無効にするには、値から減算します。
level
area
で情報ロギングが有効化されている場合に、サーバーがこのメッセージを記録する必要があるかどうかを指定します。
情報ロギングが有効化されている場合は、次のようにレベルを設定します。
SLAPI_LOG_INFO_LEVEL_DEFAULT
は、メッセージを常に記録します。
SLAPI_LOG_INFO_LEVEL_EXTRA
は、nsslapd-infolog-level
の値が0より大きい場合にのみ記録します。
msgId
SLAPI_OPERATION_MSGID
を使用して取得した、現在のメッセージの識別子です。
connId
SLAPI_CONN_ID
を使用して取得した、現在の接続の識別子です。
opId
SLAPI_OPERATION_ID
を使用して取得した、現在の操作の識別子です。
subsystem
メッセージを記録するプラグイン関数の名前など、発生した警告のコンテキストを示す文字列です。
fmt
printf()
の形式でのフォーマット指定です。
args
fmt
でフォーマットを指定する場合の引数です。
この関数は、指定されたエラー・メッセージをサーバー・エラー・ログに同期的に書き込みます。この関数は、ログ・メッセージがディスクに書き込まれるまで復帰しません。したがって、書込み処理中はサーバーがブロックされます。デフォルトのエラー・ログは$INSTANCE_PATH/logs/errors
です。
この関数は、デフォルトでは無効化されています。メッセージのロギングを有効にするには、dsconf set-log-prop
コマンドを使用します。
ログの管理には、Directory Service Control Centerを使用することもできます
通常、サーバーの動作をデバッグする場合を除き、システム管理者は情報メッセージを無視できます。エラーの場合は、slapi_log_error_ex()
を使用します。警告の場合は、slapi_log_warning_ex()
を使用します。
例15-3に、slapi_log_info_ex()
のコールを示します。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_log_warning_ex()
サーバー・エラー・ログに警告メッセージを書き込みます。
#include "slapi-plugin.h" int slapi_log_warning_ex(long warningId, long msgId, int connId, int opId, char const * subsystem, char const * humanReadableMsg, char const * fmt, /* args */ ...);
この関数は、次のパラメータを取ります。
warningId
この警告メッセージに指定する一意の識別子です。
msgId
SLAPI_OPERATION_MSGID
を使用して取得した、現在のメッセージの識別子です。
connId
SLAPI_CONN_ID
を使用して取得した、現在の接続の識別子です。
opId
SLAPI_OPERATION_ID
を使用して取得した、現在の操作の識別子です。
subsystem
メッセージを記録するプラグイン関数の名前など、発生した警告のコンテキストを示す文字列です。
humanReadableMsg
この警告を識別する文字列メッセージです。
fmt
printf()
の形式でのフォーマット指定です。
args
fmt
でフォーマットを指定する場合の引数です。
この関数は、指定されたエラー・メッセージをサーバー・エラー・ログに同期的に書き込みます。この関数は、ログ・メッセージがディスクに書き込まれるまで復帰しません。したがって、書込み処理中はサーバーがブロックされます。デフォルトのエラー・ログは$INSTANCE_PATH/logs/errors
です。
slapi_log_info_ex()
とは異なり、この関数はオフにできません。
通常、警告メッセージは重大となりうるエラーと関係がありますが、致命的エラーとは関係していません。致命的エラーの場合は、slapi_log_error_ex()
を使用します。情報ログ・メッセージの場合は、slapi_log_info_ex()
を使用します。
例15-4に、slapi_log_warning_ex()
のコールを示します。
例15-4 警告のロギング
#include "slapi-plugin.h" #include "example-com-warning-ids.h" /* example.com unique warning IDs file */ int foobar() { int disk_use_percentage; /* ... */ if (disk_use_percentage>= 95){ slapi_log_warning_ex( EXCOM_DISK_FULL_WARN, /* unique warning ID */ SLAPI_LOG_NO_MSGID, SLAPI_LOG_NO_CONNID, SLAPI_LOG_NO_OPID, "example.com: foobar in baz plug-in", "disk %.0f%% full, find more space\n", (float)disk_use_percentage ); } return 0; }
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_matchingrule_free()
一致ルールの登録後にSlapi_MatchingRuleEntry
を解放します。
#include "slapi-plugin.h" void slapi_matchingrule_free(Slapi_MatchingRuleEntry **mrEntry, int freeMembers);
この関数は、次のパラメータを取ります。
mrEntry
一致ルールの登録オブジェクトです。
freeMembers
Slapi_MatchingRuleEntry
のメンバーを解放するかどうかです。
0
の場合は、Slapi_MatchingRuleEntry
のメンバーを解放しません。
この関数は、構造体を使用して一致ルールが登録された後、Slapi_MatchingRuleEntry
に割り当てられたメモリーを解放します。
slapi_matchingrule_get()
Slapi_MatchingRuleEntry
メンバーにアクセスします。
#include "slapi-plugin.h" int slapi_matchingrule_get(Slapi_MatchingRuleEntry *mr, int arg, void *value);
この関数は、次のパラメータを取ります。
mr
一致ルールの登録オブジェクトです。
arg
次のSlapi_MatchingRuleEntry
メンバーの識別子です。
SLAPI_MATCHINGRULE_DESC
(一致ルールを説明する文字列)
SLAPI_MATCHINGRULE_NAME
(一致ルールを識別する名前)
SLAPI_MATCHINGRULE_OID
(一致ルールのオブジェクト識別子を表す文字列)
SLAPI_MATCHINGRULE_SYNTAX
(一致ルール構文のOID文字列1.3.6.1.4.1.1466.115.121.1.15
)
SLAPI_MATCHINGRULE_OBSOLETE
(ルールが古いかどうかを示すint
)
value
メンバーから取得した値です。
この関数は、arg
の識別子に基づいてSlapi_MatchingRuleEntry
メンバーにアクセスします。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_matchingrule_new()
Slapi_MatchingRuleEntry
を割り当てます。
#include "slapi-plugin.h" Slapi_MatchingRuleEntry *slapi_matchingrule_new(void);
この関数は、一致ルールの登録に使用されるSlapi_MatchingRuleEntry
を割り当てます。
この関数は、正常終了すると一致ルール登録オブジェクトへのポインタを戻します。それ以外の場合はNULL
を戻します。
slapi_matchingrule_register()
一致ルールをサーバーに登録します。
#include "slapi-plugin.h" int slapi_matchingrule_register(Slapi_MatchingRuleEntry *mrEntry);
この関数は、次のパラメータを取ります。
mrEntry
一致ルールの登録オブジェクトです。
この関数は、Slapi_MatchingRuleEntry
をサーバーに登録します。プラグイン初期化関数の一環として一致ルールを登録します。
まず、slapi_matchingrule_new()
を使用して構造体を割り当てます。次に、slapi_matchingrule_set()
を使用して一致ルール・エントリのメンバーを設定します。メンバーの設定後、この関数を使用して一致ルールをサーバーに登録します。最後に、slapi_matchingrule_free()
を使用して、割り当てられたメモリーを解放します。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_matchingrule_set()
Slapi_MatchingRuleEntry
メンバーを変更します。
#include "slapi-plugin.h" int slapi_matchingrule_set(Slapi_MatchingRuleEntry *mr, int arg, void *value);
この関数は、次のパラメータを取ります。
mr
一致ルールの登録オブジェクトです。
arg
次のSlapi_MatchingRuleEntry
メンバーの識別子です。
SLAPI_MATCHINGRULE_DESC
(一致ルールを説明する文字列)
SLAPI_MATCHINGRULE_NAME
(一致ルールを識別する名前)
SLAPI_MATCHINGRULE_OID
(一致ルールのオブジェクト識別子を表す文字列)
SLAPI_MATCHINGRULE_SYNTAX
(一致ルール構文のOID文字列1.3.6.1.4.1.1466.115.121.1.15
)
SLAPI_MATCHINGRULE_OBSOLETE
(ルールが古いかどうかを示すint
)
value
メンバーに適用する値です。
この関数は、arg
の識別子に基づいてSlapi_MatchingRuleEntry
メンバーを変更します。
この関数は、正常終了した場合は0
を戻します。そうでない場合は、-1
を戻します。
slapi_mod_add_value()
Slapi_Mod
構造体に値を追加します。
#include "slapi-plugin.h" void slapi_mod_add_value(Slapi_Mod *smod, const struct berval *val);
指定された属性のコピーをSlapi_Mod
に追加します。
slapi_mod_done()
Slapi_Mod
構造体の内部を解放します。
#include "slapi-plugin.h" void slapi_mod_done(Slapi_Mod *mod);
この関数は、Slapi_Mod
の内部を解放し、初期化されていない状態にします。
スタックから割り当てられたSlapi_Mod
の使用が終了した場合またはこれを再利用する場合に、この関数を使用します。
slapi_mod_dump()
LDAPMod
の内容をサーバー・ログにダンプします。
#include "slapi-plugin.h" void slapi_mod_dump(LDAPMod *mod, int n);
この関数は、LDAP_DEBUG_ANY
ログ・レベルを使用して、デバッグ向けにLDAPMod
の内容を$INSTANCE_PATH/logs/errors
にダンプします。
slapi_mod_free()
Slapi_Mod
構造体を解放します。
#include "slapi-plugin.h" void slapi_mod_free(Slapi_Mod **smod);
この関数は、slapi_mod_new()
によって割り当てられたSlapi_Mod
構造体を解放します。
slapi_mod_get_first_value()
Slapi_Mod
イテレータを初期化し、最初の属性値を戻します。
#include "slapi-plugin.h" struct berval *slapi_mod_get_first_value(Slapi_Mod *smod);
この関数は、Slapi_Mod
の最初の属性値へのポインタを戻し、値が存在しない場合はNULL
を戻します。
Slapi_Mod
構造体の属性値を繰り返して処理するには、この関数とslapi_mod_get_next_value()
を使用します。
slapi_mod_get_ldapmod_byref()
Slapi_Mod
構造体のLDAPMod
への参照を取得します。
#include "slapi-plugin.h" const LDAPMod *slapi_mod_get_ldapmod_byref(const Slapi_Mod *smod);
slapi_mod_get_ldapmod_passout()
Slapi_Mod
構造体に格納されているLDAPMod
を取得します。
#include "slapi-plugin.h" LDAPMod *slapi_mod_get_ldapmod_passout(Slapi_Mod *smod);
この関数は、コール元が保持するLDAPMod
へのポインタを戻します。
slapi_mod_get_next_value()
Slapi_Mod
イテレータを増分し、次の属性値を戻します。
#include "slapi-plugin.h" struct berval *slapi_mod_get_next_value(Slapi_Mod *smod);
この関数は、Slapi_Mod
の次の属性値へのポインタを戻し、それ以上値がない場合はNULL
を戻します。
Slapi_Mod
内の属性値を繰り返して処理するには、この関数とslapi_mod_get_first_value()
を使用します。
slapi_mod_get_num_values()
Slapi_Mod
構造体の値の数を取得します。
#include "slapi-plugin.h" int slapi_mod_get_num_values(const Slapi_Mod *smod);
この関数は、Slapi_Mod
内の属性値の数を戻します。
slapi_mod_get_operation()
Slapi_Mod
構造体の操作タイプを取得します。
#include "slapi-plugin.h" int slapi_mod_get_operation(const Slapi_Mod *smod);
この関数は、ビット単位のOR演算子とLDAP_MOD_BVALUES
を使用するときに組み合せられる、LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれかを戻します。
slapi_mod_get_type()
Slapi_Mod
構造体の属性タイプを取得します。
#include "slapi-plugin.h" const char *slapi_mod_get_type(const Slapi_Mod *smod);
この関数は、Slapi_Mod
内の属性タイプへの読取り専用ポインタを戻します。
Slapi_Mod
のLDAP属性タイプを取得します。
slapi_mod_init()
Slapi_Mod
構造体を初期化します。
#include "slapi-plugin.h" void slapi_mod_init(Slapi_Mod *smod, int initCount);
この関数は、次のパラメータを取ります。
初期化されていないSlapi_Mod
へのポインタです。
領域を確保するために指定した属性値の数です。最小値は0
です。
この関数はSlapi_Mod
を初期化して空にしますが、指定された数の属性値を格納する初期領域は確保します。
必要な領域が不明な場合には、initCount
に0
を使用できます。Slapi_Mod
は必要に応じて拡張されます。
slapi_mod_init_byref()
既存のLDAPMod
のラッパーであるSlapi_Mod
構造体を初期化します。
#include "slapi-plugin.h" void slapi_mod_init_byref(Slapi_Mod *smod, LDAPMod *mod);
この関数は、LDAPMod
への参照が格納されているSlapi_Mod
を初期化します。LDAPMod
を使用していて、Slapi_Mod
関数でこの構造体に簡単にアクセスする場合に、この関数を使用します。
slapi_mod_init_byval()
LDAPMod
のコピーを使用してSlapi_Mod
構造体を初期化します。
#include "slapi-plugin.h" void slapi_mod_init_byval(Slapi_Mod *smod, const LDAPMod *mod);
slapi_mod_init_passin()
#include "slapi-plugin.h" void slapi_mod_init_passin(Slapi_Mod *smod, LDAPMod *mod);
slapi_mod_isvalid()
Slapi_Mod
構造体が有効であるかどうかを判別します。
#include "slapi-plugin.h" int slapi_mod_isvalid(const Slapi_Mod *mod);
Slapi_Mod
の内容が有効であることを確認するには、この関数を使用します。操作タイプがビット単位のOR演算子とLDAP_MOD_BVALUES
を使用するときに組み合せられる、LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれかである場合、属性タイプがNULL
でない場合、および追加と置換の操作に1つ以上の属性値がある場合に、有効であるとみなされます。
slapi_mod_new()
新しいSlapi_Mod
構造体を割り当てます。
#include "slapi-plugin.h" Slapi_Mod* slapi_mod_new( void );
この関数にパラメータはありません。
この関数は、初期化されていない、割当て済のSlapi_Mod
へのポインタを戻します。
この関数は、初期化されていない新しいSlapi_Mod
を割り当てます。スタックからではなく、ヒープから割り当てられたSlapi_Mod
が必要な場合に、この関数を使用します。
slapi_mod_remove_value()
Slapi_Mod
イテレータの現在位置で値を削除します。
#include "slapi-plugin.h" void slapi_mod_remove_value(Slapi_Mod *smod);
slapi_mod_set_operation()
Slapi_Mod
構造体の操作タイプを設定します。
#include "slapi-plugin.h" void slapi_mod_set_operation(Slapi_Mod *smod, int op);
この関数は、次のパラメータを取ります。
初期化されたSlapi_Mod
へのポインタです。
ビット単位のOR演算子とLDAP_MOD_BVALUES
を使用するときに組み合せられる、LDAP_MOD_ADD
、LDAP_MOD_DELETE
、LDAP_MOD_REPLACE
のいずれかです。
slapi_mod_set_type()
Slapi_Mod
の属性タイプを設定します。
#include "slapi-plugin.h" void slapi_mod_set_type(Slapi_Mod *smod, const char *type);
Slapi_Mod
の属性タイプを、指定された値のコピーに設定します。
slapi_moddn_get_newdn()
エントリの新しいDNを構築します。
#include "slapi-plugin.h" char * slapi_moddn_get_newdn(Slapi_DN *dn_olddn, char *newrdn, char *newsuperiordn);
この関数は、次のパラメータを取ります。
古いDN値です。
新しいRDN値です。
NULL
でない場合は、新しいDNの将来の上位エントリとなるDNです。これは、このパラメータの内容の前にnewrdn
の値を追加して求められます。
この関数は、前のDNがdn_olddn
であったエントリの新しいDNを戻します。
この関数はmoddn
操作に使用され、新しいRDNおよび新しい親のDNから新しいDNを構築します。
新しいDNは、newrdn
の新しいRDNを親DNに追加して求められます。NULL
でない場合、親はnewsuperiordn
内の値となります。それ以外の場合は、古いRDNを削除してdn_olddn
から取得されます(エントリの親は新しいDNと同じままです)。
戻されたDNは、slapi_ch_free_string()
を使用して解放する必要があります。