GBase8d_C_API_06_添加条目_创建新属性

GBase8d_C_API_06_添加条目_创建新属性

条目由分辨名和属性组成,在目录服务器中以分辨名作唯一标识符。在GBase 8d C API中使用同步函数ldap_add_s()和异步函数ldap_add()添加条目。

新建条目的完整步骤如下:

  1. 创建条目中所包含的每个单独的属性(见3.1 节)
  2. 创建组成条目的指针数组,并将属性加入到指针数组中(见3.2 节)
  3. 创建新的条目,指定一个固定的分辨名(DN) 并将条目添加到目录中(见3.3 节)
    1. 创建新属性

属性既可能是单值也可能是多值,属性值既可能是字符串也可能是二进制数据,由具体的schema来决定。在GBase 8d C API中,每种属性及其属性值用一个LDAPMod类型结构表示。

添加普通的多值属性。

//初始化属性值

char *cn_values[] = {"Richard Petersen","Gil Petersen", NULL};

//将属性值赋给属性

LDAPMod cnattr = {LDAP_MOD_ADD, "cn", cn_values};

添加二进制数据的属性:

//初始化二进制属性值

    char jpegPhoto[] = "IIF2AIBAzCCBZQGCSqGSIb3DQEHAaCCBYUEggWBMIIFfTCCA\

t4GCSqGSIb3DQEHAaCCAs8EggLLMIICxzCCAsMGCyqGSIb3DQEM\CgECoIIBljCCAZIwHAYKKoZIhvcNAQwBAzAOBAgLPpypNGikQQI\CB9AEggFw09FtmYVN6E93f8fe6uJDsWEHbspVx3gLOj1LzVhpRXopv\9VpCyHsmchQjAZ3NBI79mlA2D7CxkQ4iZBAx7KBqFrPJJIk5ycm9XS\ZTv/mTCGdSy0cif+/HLG2EcbqcwGcn5A+Byd27kXFVfQ6MUZ0rTlh5a\52nZ1ixiyEqpPX0eOOnjypECbPNnGqaIGk4psGR”;

binval[0] = (struct berval*)malloc(sizeof(struct berval*));

    binval[0]->bv_val = certificateRevocationList;

    binval[0]->bv_len = sizeof(certificateRevocationList);

    binval[1] = NULL;

//将二进制属性值赋给二进制属性。

mods[1]->mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;

    mods[1]->mod_type = "certificateRevocationList";

    mods[1]->mod_values = (char**)binval;

    1. 新建属性的指针数组

       建立一个指针数组,将属性添加到指针数组中。

LDAPMod *attrs[] = {&objectClassattr, &cnattr, &oattr, &snattr,

                        &telephoneNumberattr, &postalCodeattr, NULL};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值