ページの先頭行へ戻る
Interstage Application Server ディレクトリサービス運用ガイド

9.3.6 エントリの変更

  エントリの変更では、指定された属性を追加、削除、置換することができます。このとき、指定されなかった属性は変更しません。

  エントリを変更するには、以下の関数を使用します。

  パラメタとして以下のものを指定します。

  Interstage ディレクトリサービスは、指定された変更操作の種類に従って以下の処理をします。

9.3.6.1 属性値の追加

  エントリに、指定された属性と属性値を追加します。属性を追加するには、ldap_modify_s()関数を使用します。LDAPMod構造体のmod_opメンバにはLDAP_MOD_ADDを指定します。
  属性値の追加処理の図を以下に示します。

  既存の属性を指定した場合、指定された属性に属性値を追加します。

  

属性値にバイナリを指定する

  属性値にバイナリを指定するには、berval構造体を使用します。バイナリデータを登録することを示すため、LDAPMod構造体のmod_opメンバにLDAP_MOD_BVALUESを論理和で指定し、mod_bvaluesメンバにberval構造体を指定します。
  属性値にバイナリを指定する例です。

  LDAPMod  **mods[];
  struct berval  berval;
  struct berval  *ber_array[2];

  readBinary( filename, &berval);
  ber_array[0] =berval;
  ber_array[1] =NULL;

  mods[0]->mod_op   = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
  mods[0]->mod_type = "jpegPhoto";
  mods[0]->mod_bvalues = ber_array;

  rtn = ldap_modify_s( ld, mod_dn, mods );

9.3.6.2 属性値の置換

  指定された属性の値を、クライアントが指定した値と置き換えます。
  属性値の置換処理の図を以下に示します。

  コード例です。

  LDAPMod **mod;
  char    *vals[] = {"5555-0123", "5555-6789", NULL};

  mod[0]->mod_op   = LDAP_MOD_REPLACE;
  mod[0]->mod_type = "telephoneNumber";
  mod[0]->mod_values = vals;

  rtn = ldap_modify_s( ld, mod_dn, mod );

9.3.6.3 属性値の削除

  指定された属性から、クライアントが指定した属性値を削除します。このとき、エントリの属性値の数が1個の場合には、属性を削除します。
  属性値の削除処理の図を以下に示します。

  コード例です。

  LDAPMod mod1;
  char    *vals1[ 2 ];
  vals1[0] = "5555-0123";
  vals1[1] = NULL;
  mod1.mod_op   = LDAP_MOD_DELETE;
  mod1.mod_type = "telephoneNumber";
  mod1.mod_values = vals1;

  rtn = ldap_modify_s( ld, mod_dn, mod1 );

  また、属性名だけを指定し、属性値を省略した場合には、指定された属性を削除します。