亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? radius_pdu.c

?? The Kannel Open Source WAP and SMS gateway works as both an SMS gateway, for implementing keyword b
?? C
?? 第 1 頁 / 共 2 頁
字號:
    */    switch (pdu->type) {    #define INTEGER(name, octets) \    	append_encoded_integer(os, p->name, octets);    #define OCTETS(name, field_giving_octets) \    	octstr_append(os, p->name);    #define PDU(name, id, fields) \    	case id: { struct name *p = &pdu->u.name; fields; oos = radius_attr_pack(pdu); \                   octstr_append(os, oos);octstr_destroy(oos); } break;    #include "radius_pdu.def"    default:    	error(0, "Unknown RADIUS_PDU type, internal error while packing.");    }    /* now set PDU length */    temp = octstr_create("");    append_encoded_integer(temp, octstr_len(os), 2);    octstr_delete(os, 2, 2);    octstr_insert(os, temp, 2);    octstr_destroy(temp);        return os;}static Octstr *radius_type_convert(int type, Octstr *value){    Octstr *ret = NULL;    int i;    switch (type) {        case t_int:            ret = octstr_format("%ld", decode_integer(value, 0, 4));            break;        case t_string:            ret = octstr_format("%s", octstr_get_cstr(value));            break;        case t_ipaddr:            ret = octstr_create("");            for (i = 0; i < 4; i++) {                int c = octstr_get_char(value, i);                Octstr *b = octstr_format("%d", c);                octstr_append(ret, b);                i < 3 ? octstr_append_cstr(ret, ".") : NULL;                octstr_destroy(b);            }            break;        default:            panic(0, "RADIUS: Attribute type %d does not exist.", type);            break;    }    return ret;}static void radius_attr_unpack(ParseContext **context, RADIUS_PDU **pdu) {    #define ATTR(atype, type, string, pmin, pmax) \                if (atype == attr_type) {  \                    Octstr *tmp, *value; \                    if ((attr_len-2) < pmin || (attr_len-2) > pmax) { \                        error(0, "RADIUS: Attribute (%d) `%s' has invalid len %d, droppped.", \                              attr_type, string, (attr_len-2)); \                        continue;  \                    } \                    attr_val = parse_get_octets(*context, attr_len - 2); \                    tmp = octstr_format("RADIUS: Attribute (%d) `%s', len %d", \                          attr_type, string, attr_len - 2); \                    value = radius_type_convert(type, attr_val); \                    octstr_destroy(attr_val); \                    octstr_dump_short(value, 0, octstr_get_cstr(tmp)); \                    octstr_destroy(tmp); \                    attr_str = octstr_create(string);  \                    dict_put((*pdu)->attr, attr_str, value);  \                    octstr_destroy(attr_str);  \                    value = NULL;  \                } else     #define UNASSIGNED(attr)  \                if (attr == attr_type) {  \                    error(0, "RADIUS: Attribute (%d) is unassigned and should not be used.", \                              attr_type); \                    continue;  \                } else     #define ATTRIBUTES(fields)                                                                       \        while (parse_octets_left(*context) > 0 && !parse_error(*context)) {                          \            int attr_type, attr_len;                                                                 \            Octstr *attr_val = NULL;                                                                 \            Octstr *attr_str = NULL;                                                                 \            attr_type = parse_get_char(*context);                                                    \            attr_len = parse_get_char(*context);                                                     \            fields                                                                                   \            {                                                                                        \                debug("radius.unpack", 0, "RADIUS: Unknown attribute type (0x%03lx) "                \                      "len %d in PDU `%s'.",                                                         \                        (long unsigned int)attr_type, attr_len, (*pdu)->type_name);                  \                parse_skip(*context, attr_len - 2);                                                  \            }                                                                                        \        }                                                                                              #include "radius_attributes.def"}RADIUS_PDU *radius_pdu_unpack(Octstr *data_without_len){    RADIUS_PDU *pdu;    int type, ident;    long len, pos;    ParseContext *context;    Octstr *authenticator;     len = octstr_len(data_without_len);    if (len < 20) {        error(0, "RADIUS: PDU was too short (%ld bytes).",              octstr_len(data_without_len));        return NULL;    }    context = parse_context_create(data_without_len);    type = parse_get_char(context);    ident = parse_get_char(context);    pdu = radius_pdu_create(type, NULL);    if (pdu == NULL)        return NULL;    len = decode_integer(data_without_len, 2, 2) - 19;    parse_skip(context, 2);    debug("radius", 0, "RADIUS: Attributes len is %ld", len);    authenticator = parse_get_octets(context, 16);    octstr_dump_short(authenticator, 0, "RADIUS: Authenticator (md5) is:");    /* skipping back to context start for macro magic */    parse_context_destroy(context);    context = parse_context_create(data_without_len);    switch (type) {    #define INTEGER(name, octets) \        pos = octstr_len(data_without_len) - parse_octets_left(context); \    	p->name = decode_integer(data_without_len, pos, octets); \        parse_skip(context, octets);    #define OCTETS(name, field_giving_octets) \        p->name = parse_get_octets(context, field_giving_octets);     #define PDU(name, id, fields) \    	case id: { struct name *p = &pdu->u.name; fields; \                   radius_attr_unpack(&context, &pdu); } break;    #include "radius_pdu.def"    default:    	error(0, "Unknown RADIUS_PDU type, internal error while unpacking.");    }    parse_context_destroy(context);    octstr_destroy(authenticator);    return pdu;}int radius_authenticate_pdu(RADIUS_PDU *pdu, Octstr **data, Octstr *secret){    int rc = 0;    Octstr *stream;     Octstr *attributes;    Octstr *digest;    stream = attributes = digest = NULL;    /* first extract attributes from raw data */    if (octstr_len(*data) > 20)        attributes = octstr_copy(*data, 20, octstr_len(*data)-20);      switch (pdu->type) {        case 0x04:  /* Accounting-Request, see RFC2866, page 6 */            stream = octstr_copy(*data, 0, 4);            octstr_append_cstr(stream, "0000000000000000");            octstr_append(stream, attributes);            octstr_append(stream, secret);            digest = md5(stream);            rc = octstr_compare(pdu->u.Accounting_Request.authenticator,                                 digest) == 0 ? 1 : 0;            debug("",0,"XXXX authenticator:");            octstr_dump(pdu->u.Accounting_Request.authenticator, 0);            debug("",0,"XXXX re-calc'ed digest:");            octstr_dump(digest, 0);            break;        case 0x05:  /* Accounting-Response, create Response authenticator */            stream = octstr_duplicate(*data);            octstr_append(stream, secret);            digest = md5(stream);            octstr_delete(*data, 4, 16);            octstr_insert(*data, digest, 4);            break;        default:            break;    }    octstr_destroy(attributes);    octstr_destroy(stream);    octstr_destroy(digest);    return rc;}static void radius_attr_dump(RADIUS_PDU *pdu){    #define UNASSIGNED(attr)    #define ATTR(atype, type, string, pmin, pmax)  \        id = atype; \        key = octstr_create(string); \        val = dict_get(pdu->attr, key); \        if (val != NULL) \            octstr_dump_short(val, 2, #atype); \        octstr_destroy(key);    #define ATTRIBUTES(fields) \	if (pdu->attr != NULL) { \	    Octstr *key = NULL, *val = NULL; \        int id; \        fields \	}    #include "radius_attributes.def"}void radius_pdu_dump(RADIUS_PDU *pdu){    debug("radius", 0, "RADIUS PDU %p dump:", (void *) pdu);    debug("radius", 0, "  type_name: %s", pdu->type_name);    switch (pdu->type) {    #define INTEGER(name, octets) \    	debug("radius", 0, "  %s: %lu = 0x%08lx", #name, p->name, p->name);    #define OCTETS(name, field_giving_octets) \        octstr_dump_short(p->name, 2, #name);    #define PDU(name, id, fields) \    	case id: { struct name *p = &pdu->u.name; fields; \                   radius_attr_dump(pdu); } break;    #include "radius_pdu.def"    default:    	error(0, "Unknown RADIUS_PDU type, internal error.");	break;    }    debug("radius", 0, "RADIUS PDU dump ends.");}Octstr *radius_get_attribute(RADIUS_PDU *pdu, Octstr *attribute){    gw_assert(pdu != NULL);        if (pdu->attr == NULL)        return NULL;    return dict_get(pdu->attr, attribute);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线porny国产在线看| 精品国产一区二区三区久久久蜜月| 在线观看成人免费视频| 91精品国产91热久久久做人人 | 国产女主播视频一区二区| 亚洲日本va午夜在线电影| 亚洲国产美女搞黄色| 成人精品国产免费网站| 欧美sm美女调教| 视频在线观看91| 欧美日韩久久久| 亚洲欧美韩国综合色| 高清免费成人av| 精品国产免费人成在线观看| 午夜视频在线观看一区二区三区| www.欧美精品一二区| 国产午夜精品久久久久久免费视| 免费久久精品视频| 欧美视频一区在线| 亚洲蜜桃精久久久久久久| 99视频精品全部免费在线| 国产片一区二区| 国产一区二区免费视频| 日韩欧美高清一区| 美国十次综合导航| 欧美一级久久久| 丝袜美腿成人在线| 免费在线观看不卡| 久久精品一区二区三区不卡牛牛| 欧美性受xxxx黑人xyx性爽| 黄网站免费久久| 婷婷久久综合九色综合伊人色| 国产午夜精品福利| 日韩精品一区二区三区四区视频| 91在线视频免费91| 色94色欧美sute亚洲线路一久 | 欧美成人精精品一区二区频| 亚洲制服丝袜一区| 欧美日韩国产高清一区二区三区 | 久久亚洲免费视频| 国产自产高清不卡| 国产日韩欧美不卡在线| 风间由美一区二区av101| 国产精品你懂的在线欣赏| 成人av在线网站| 亚洲免费av观看| 欧美日韩国产综合视频在线观看| 五月天精品一区二区三区| 日韩欧美国产1| 国产精品91一区二区| 18成人在线观看| 精品第一国产综合精品aⅴ| 狂野欧美性猛交blacked| 久久久久久亚洲综合影院红桃 | www.亚洲色图.com| 亚洲一区二区在线观看视频| 欧美午夜精品久久久久久超碰 | 亚洲女人的天堂| 欧美日韩精品系列| 黄色精品一二区| 亚洲免费伊人电影| 日韩亚洲欧美一区二区三区| 国产一区二区在线观看视频| 日韩伦理免费电影| 91麻豆精品国产91久久久更新时间| 国产永久精品大片wwwapp| 麻豆精品新av中文字幕| 91麻豆精品一区二区三区| 自拍av一区二区三区| 日韩vs国产vs欧美| 波多野结衣中文字幕一区| 9191精品国产综合久久久久久| 国产精品视频免费| 日韩黄色免费电影| 色婷婷亚洲婷婷| 国产精品久久午夜夜伦鲁鲁| 亚洲国产va精品久久久不卡综合| 中文字幕不卡在线| 3atv在线一区二区三区| 成人av先锋影音| 免费在线观看日韩欧美| 亚洲黄一区二区三区| 日韩精品一区二区三区在线播放 | 91麻豆精品国产自产在线观看一区 | 成人性视频免费网站| 午夜成人免费视频| 亚洲欧美自拍偷拍色图| 亚洲精品在线三区| 欧美高清www午色夜在线视频| www.在线成人| 国产sm精品调教视频网站| 日韩和欧美一区二区| 一区二区三区**美女毛片| 中文字幕欧美三区| 精品国产sm最大网站免费看| 欧美日韩三级在线| 久久久久久久精| 欧美日韩的一区二区| 97精品久久久久中文字幕| 国模套图日韩精品一区二区| 天天色图综合网| 亚洲综合男人的天堂| 亚洲天堂成人网| 欧美国产国产综合| 国产亚洲一区二区三区| 精品久久久网站| 日韩午夜在线观看| 欧美一区二区视频在线观看| 欧美日韩国产高清一区二区三区 | 久久综合综合久久综合| 日韩欧美一区二区在线视频| 国产老肥熟一区二区三区| 久久日韩精品一区二区五区| 97国产一区二区| 麻豆久久一区二区| 亚洲天堂成人网| 亚洲一区二区综合| 99re6这里只有精品视频在线观看| 蓝色福利精品导航| 国模少妇一区二区三区| 久久9热精品视频| 国产一区亚洲一区| 欧美日韩一区二区三区在线看| 精品福利av导航| 日韩和欧美的一区| 日本欧美大码aⅴ在线播放| 亚洲国产精品嫩草影院| 亚洲电影你懂得| 秋霞电影网一区二区| 久久99精品久久只有精品| 国产真实乱偷精品视频免| 国产精品69毛片高清亚洲| 不卡一区二区三区四区| 色综合视频在线观看| 欧美性一级生活| 日韩欧美成人激情| 国产欧美va欧美不卡在线| 国产精品伦理在线| 午夜视频在线观看一区二区三区| 美女在线视频一区| 成人深夜福利app| 欧美视频在线观看一区| 欧美一区二区精品在线| 久久亚洲精品小早川怜子| 日韩一区欧美小说| 午夜精品在线看| 国产一区二区电影| 色综合中文字幕国产 | 精品视频在线免费| 精品电影一区二区| 1区2区3区精品视频| 肉色丝袜一区二区| 国产成人av电影在线观看| 91久久精品一区二区二区| 日韩欧美国产午夜精品| 中文字幕亚洲欧美在线不卡| 日日骚欧美日韩| 国产成人精品亚洲午夜麻豆| 欧美怡红院视频| 欧美影院精品一区| 亚洲免费av在线| 不卡在线观看av| 性感美女极品91精品| 一本一道久久a久久精品| 91精品欧美一区二区三区综合在 | 91麻豆国产在线观看| 欧美在线你懂的| 一区二区三区四区不卡在线| 欧美色综合影院| 欧美色视频在线| 国产精品午夜在线观看| 蜜桃视频第一区免费观看| 99在线精品一区二区三区| 精品播放一区二区| 亚洲va欧美va人人爽午夜| 国产成人夜色高潮福利影视| 欧美日本在线视频| 亚洲色欲色欲www在线观看| 激情偷乱视频一区二区三区| 欧美撒尿777hd撒尿| 成人免费在线播放视频| 国产一区999| 精品蜜桃在线看| 免费成人小视频| 在线观看91av| 亚洲国产精品一区二区久久恐怖片| 不卡视频免费播放| 国产三级精品视频| 国产尤物一区二区| 久久久噜噜噜久久中文字幕色伊伊| 亚洲午夜视频在线观看| 色一情一乱一乱一91av| 国产精品久久久久久久第一福利| 国产一区二区三区四区五区入口| 日韩欧美精品三级| 韩国av一区二区三区四区| 91麻豆精品国产91久久久更新时间| 亚洲超碰97人人做人人爱| 欧美日韩中文字幕一区| 亚洲一区二区在线视频|