/* *Author ljp *V1.01 2015-01-05 修改头文件,包含最新的stream.h *V1.02 2015-01-16 修改dns_compress_domain函数while循环条件,由\0改为\n * 添加对TCP DNS查询的支持 *V1.03 2015-01-26 cheat pkt TTL set 0.5->1hour *V1.04 2015-02-05 修改DNS构造数据包BUG *V1.05 2015-02-12 build_dns_payload中添加对AAAA类型应答的支持 *V1.06 2015-03-05 修复解析TCP DNS时parse_dns中msg赋值小BUG *V1.07 2015-03-16 修复A/AAAA应答包域名信息BUG *V1.08 2015-05-07 修复au/ad应答包域名信息BUG *V1.09 2015-07-15 修复qtype和qclass两种类型未转换成网络序错误 -------------------------------------------------------------------------- *2015-09-07, LiJia, 修改注册获取flag_id BUG. *2015-09-29, LiJia, 修改TCP协议, 没有跳过长度字段BUG. *2015-10-10, LiJia, 修改FLAG_CHANGE()函数没有copy字符串最后EOF的BUG. */ liuxueli: 20160920 1、修复分析应答类型NSEC3的BUG,type_bit_maps有点问题。 20160921 1、修复解析请求域名时的BUG,当遇到异常包,请求域名最后一个字符是一个".",目前是将异常包丢弃不处理。 20160922 1、解析层提供拼接所有的资源记录的函数 2、修复TXT应答类型的BUG,在将TXT的指针改为数组(最大长度为256),最后一个字符为'\0' 3、修复null应答类型的BUG,在将null的指针改为数组(最大长度为256),最后一个字符为'\0' 4、修复AAAA有的类型的BUG,在解析层拷贝的数组没有以‘\0’结尾,在转字符串的时候转的不正确 5、增加对NSEC3PARAM应答类型支持 20160923 1、修复NSEC应答类型的BUG,next_domain_name显示字符串不是十六进制 2、修复NSEC3应答类型的BUG,salt_value显示是十六进制,不是字符串 3、修复域名多层嵌套压缩的BUG 20160927 1、修复保存原始包的BUG,根据佳哥的获取原始包的函数,判断其返回值,0:是原始包,1:IP分片包,返回的是链表 20160928 1、添加DNS协议的统计信息 2、修改判断错包的条件,DNS中的FLAG_Z标志位不等于0,不一定是错包 20160929 1、在有可能越界的地方加上长度限制 20160930-20161008 1、更新DNS解析层的配置文件 2、修复在7.2操作系统上编译warning 20161013 1、修改资源记录的分隔符,去掉“\n” 2、删除测试用例中的保存原始包的函数 20161018 1、删除多余无用代码 2、调整解压缩函数的参数 20161117 1、修改解析的返回值,始终返回APP_STATE_GIVEME,DNS UDP包也是有流的概念,防止同一四元组发起多次DNS查询,返回APP_STATE_GIVEME可以进行多次欺骗,否则只能欺骗第一次查询 2、修改回调业务层的SESSION_STATE_PENDING,SESSION_STATE_DATA,SESSION_STATE_CLOSE状态 3、申请pme空间,1、用来保存业务层的pme;2、没有pme空间,SESSION_STATE_CLOSE状态回调不到业务层 20161121 1、删除调试信息 2、修改memset的参数,sizeof使用结构体,而不是用变量 3、修复越界的BUG,解析DNS_TYPE_NSEC3应答类型时,获取salt_len和hash_len时需要将ptr转换为(unsigned char *) 20161123 1、查看代码,修改内存容易越界的地方 20161129 1、解决内存泄露问题 20171103 1、同步在线代码 20180615 1、修复解析NSEC3应答码解析错误 2、修复DNS_TCP解析失败问题,即只有在pending状态时减去2字节DNS包长度 3、修改版本号 20190419 1、支持解析请求包中缺少请求域名的数据包 2、支持未知应答类型的应答记录 3、支持RP应答记录 4、支持解析请求包中的应答记录 5、修改版本号 20190419 1、支持标示TCP负载长度字段跨包传输