Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101417
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: C/C++

2014-09-29 09:11:15

1、packet_type类型的定义
     typedef struct _packet_type{
    uint8_t label_count ;//是对域名中数字个数或者是说域名分级数的计数
    uchar   domain[256];
    uint8_t *label[64];//指针数组,每个指针指向每级域名的首个字符之前的数字字符
    uint8_t label_offsets[64];//每级域名中的数字字符的偏移量
    uint8_t label_len[64];
    hashval_t hash[64];
//     uchar   origindomain[256];
     } packet_type;
2、check_dns_name()
    该函数返回域名的长度=数字个数+字符个数
3、结构体struct mvalue
struct mvalue {
    uint16_t len; //记录了缓冲区中域名(对应ns记录)和ip地址(对应A或AAAA记录)的总长度
    uint16_t num;//记录了缓冲区中域名(对应ns记录)和ip地址(对应A或AAAA记录)的总个数
    uint32_t ttl;
    uint32_t hits;
    uint16_t seg;               //when there is no memory segment, seg == 0
    //uint16_t off.
    //something...
};
4、struct hentry {
    union {
        uchar *vals[SUPPORT_TYPE_NUM];
        type_value val; //该结构体是有指针够成的,里面每个指针都与记录类型对应,且每个指针指向一个缓冲区,
                              //该缓冲区由mvalue和记录类型后的字段(域名或者ip,可能有多个,他们均是一个待解析的域名对应的)够成。
    };
    struct hentry *next;
    int count;
    uchar key[0];//柔性数组,里存储了待解析的域名
     };
  


阅读(555) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~