现在的位置: 首页 > 综合 > 正文

AAA3.0

2013年09月25日 ⁄ 综合 ⁄ 共 1292字 ⁄ 字号 评论关闭

1.真是好久不写代码了,一个memcpy也能写错。。。

编译后告警:warning: passing arg 2 of `memcpy' makes pointer from integer without a cast

 

原来写的是 memcpy(ess->keys.sres[chalno], simoutbuf[0], 4*sizeof(unsigned char));

                 memcpy(ess->keys.Kc[chalno], simoutbuf[4], 8*sizeof(unsigned char));

这当然出错啊,第二个不是地址了,是数了。数组名是地址,而simoutbuf[0]这个就是数了,要&simoutbuf[0]才行。。。

所以memcpy(ess->keys.sres[chalno], &simoutbuf[0], 4*sizeof(unsigned char));
        memcpy(ess->keys.Kc[chalno], &simoutbuf[4], 8*sizeof(unsigned char));

哎。。悲剧啊。。

 

 

2.#define PW_GROUP_ID                     ((VENDORPEC_CAP*** << 16) | 28)

这种定义的用意,有通用ID 和厂商ID,这里面VENDORPEC_CAP***就是厂商ID ,左移16位加上后面的,28代表厂商内部ID

所以这就构成了一个唯一的ID

 

3.Called_Id被叫号码

clrid主叫号码

 

4

    if( (pair = pairfind(request->packet->vps, PW_CALLING_STATION_ID) ) != NULL && pair->length > 0) {
        user_type = USERTYPE_CALLERID;// what're USERTYPE_CALLERID PW_CALLING_STATION_ID ??
        strNcpy(clrid, pair->strvalue, MAXSTRLEN);
    }
    /*
     * Fall through, which means user_name would be user identifier if USER_NAME
     * attribute is present, no matter caller_id is present or not.
     */
    memset(username, 0x0, MAXSTRLEN);
    if ( (pair = pairfind(request->packet->vps, PW_USER_NAME) ) != NULL && pair->length > 0) {
        user_type = USERTYPE_USERNAME;
        strNcpy(username, pair->strvalue, MAXSTRLEN);
    }

 

就是说如果没有PW_CALLING_STATION_ID,那么user_type就是下面的USERTYPE_USERNAME

如果两个都有的话,USERTYPE_USERNAME这个优先的意思

抱歉!评论已关闭.