资源说明:AODV中aodv.cc是最重要的,通过了解几个重要的函数,可以进一步理解AODV的基本思想。
1. Void AODV::recv(Packet *p, Handler*)
//判断是否是aodv包,是则调用函数recvAODV(p)
if(ch->ptype() == PT_AODV) { recvAODV(p);
//本节点产生的数据包,添加IP头
if((ih->saddr() == index) && (ch->num_forwards() == 0)) Add the IP Header
//收到本节点发送的包,说明有路由环路,丢包
else if(ih->saddr() == index) drop(p, DROP_RTR_ROUTE_LOOP);
//本节点是中间节点
else {//TTL是分组最多能转发的次数 if(--ih->ttl_ == 0) drop(p, DROP_RTR_TTL);
//收到的不是广播分组,解析分组
if ( (u_int32_t)ih->daddr() != IP_BROADCAST) rt_resolve(p);
//转发 else forward((aodv_rt_entry*) 0, p, NO_DELAY);
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。