欢迎来到天天文库
浏览记录
ID:6355888
大小:46.89 KB
页数:7页
时间:2018-01-11
《ns2 aodv协议添加新的数据包类型》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、2011-06-2812:28 1289人阅读 评论(8) 收藏 举报structaccessclasstimertclmacros在AODV协议基础上添加一种新的控制包类型,可以模仿AODV协议本身的RREQ、RREP、HELLO等来实现。这里我要在AODV协议中添加一个ISOLATE的数据包类型。首先在aodv_packet.h中[cpp] viewplaincopy1.#define AODVTYPE_HELLO 0x01 2.#define AODVTYPE_RREQ 0x02
2、 3.#define AODVTYPE_RREP 0x04 4.#define AODVTYPE_RERR 0x08 5.#define AODVTYPE_RREP_ACK 0x10 6.#define AODVTYPE_ISOLATE 0x20 加入AODVTYPE_ISOLATE 0x20接着添加数据包申请内存空间的宏[c-sharp] viewplaincopy1./* 2. * AODV Rou
3、ting Protocol Header Macros 3. */ 4.#define HDR_AODV(p) ((struct hdr_aodv*)hdr_aodv::access(p)) 5.#define HDR_AODV_REQUEST(p) ((struct hdr_aodv_request*)hdr_aodv::access(p)) 6.#define HDR_AODV_REPLY(p) ((struct hdr_aodv_reply*)hdr_aodv::access(
4、p)) 7.#define HDR_AODV_ERROR(p) ((struct hdr_aodv_error*)hdr_aodv::access(p)) 8.#define HDR_AODV_RREP_ACK(p) ((struct hdr_aodv_rrep_ack*)hdr_aodv::access(p)) 9.#define HDR_AODV_ISOLATE(p) ((struct hdr_aodv_isolate*) hdr_aodv::access(p)) 接着要具体定义新
5、的数据包格式了。我这里定义的AODV的格式如下所示:[c-sharp] viewplaincopy1.struct hdr_aodv_isolate { 2.u_int8_t iso_type; //类型编号 3.u_int8_t reserved[3]; //保留字,没用到 4.u_int8_t mal_count; //Malicious node number u_int32_t iso_bcast_id; // Broadcast ID 5.nsaddr
6、_t malicious_node_addr[AODV_MAX_ISOLATE]; //malicious 6.double obs[AODV_MAX_ISOLATE]; 7.nsaddr_t src_addr; //源节点 8.inline int size() //计算数据包的大小 9.{ 10. int sz = 0; 11. /* 12. sz = sizeof(u_int8_t) //type 13. + sizeof(ns
7、addr_t) //malicious_node_addr 14. + sizeof(nsaddr_t) //src_addr 15. + sizeof(u_int32_t) //iso_bcast_id 16. */ 17. sz = (2*mal_count+3) *sizeof(u_int32_t); 18. assert(sz); 19. return sz; 20. } 2
8、1.}; 然后是在hdr_all_aodv添加hdr_aodv_isolate,如下所示:[c-sharp] viewplaincopy1.// for size calculation of header-space reservation 2.union hdr_all_aodv { 3. hdr_aodv ah; 4. hdr_aodv_request rre
此文档下载收益归作者所有