1.void AODVRouting::initialize(int stage)//初始化操作
2.void AODVRouting::handleMessage(cMessage *msg)//消息处理主函数
3.INetfilter::IHook::Result AODVRouting::ensureRouteForDatagram(INetworkDatagram *datagram)//这个函数应该是本节点模型开始路由发现的入口,先确定路由,“从这里开始让节点动起来”
4.AODVRouting::AODVRouting()//构造函数
5.bool AODVRouting::hasOngoingRouteDiscovery(const L3Address& target)//判断是不是正在执行对该目的地址的路由发现,也就是是否存在已发送且没返回的RREQ,是则True,否则Flase(bool :0为假,非0为真)
6.void AODVRouting::startRouteDiscovery(const L3Address& target, unsigned timeToLive)//开始路由发现,发RREQ
7.L3Address AODVRouting::getSelfIPAddress() const//获取自身IP地址
8.void AODVRouting::delayDatagram(INetworkDatagram *datagram)//准备开始路由发现之前,先缓存数据包操作(防止丢失)
9.void AODVRouting::sendRREQ(AODVRREQ *rreq, const L3Address& destAddr, unsigned int timeToLive)//发送RREQ,大部分操作为计算TTL,然后赋值给数据包RREQ和自消息WaitForRREP
10.void AODVRouting::sendRREP(AODVRREP *rrep, const L3Address& destAddr, unsigned int timeToLive)//发送RREP,准备RREPACK定时器
11.AODVRREQ *AODVRouting::createRREQ(const L3Address& destAddr)//创建一个新的RREQ包,大部分操作是在查本地有无目的节点序列号,然后设置一个新本节点的RREQ包ID号(对于源节点的RREP,对应到目的节点或中间节点就是RREQ)
12.AODVRREP *AODVRouting::createRREP(AODVRREQ *rreq, IRoute *destRoute, IRoute *originatorRoute, const L3Address& lastHopAddr)//制作RREP
13.AODVRREP *AODVRouting::createGratuitousRREP(AODVRREQ *rreq, IRoute *originatorRoute)//中间节点发现有到目的节点的路由后,继续发送一个RREP包到目的节点
14.void AODVRouting::handleRREP(AODVRREP *rrep, const L3Address& sourceAddr)//处理RREP
15.void AODVRouting::updateRoutingTable(IRoute *route, const L3Address& nextHop, unsigned int hopCount, bool hasValidDestNum, unsigned int destSeqNum, bool isActive, simtime_t lifeTime)//更新路由表记录信息,按照后面的参数更新route
16.void AODVRouting::sendAODVPacket(AODVControlPacket *packet, const L3Address& destAddr, unsigned int timeToLive, double delay)//实际的发包函数,使用了UDP,这是因为AODV的应用环境就是如此
17.void AODVRouting::handleRREQ(AODVRREQ *rreq, const L3Address& sourceAddr, unsigned int timeToLive)//处理RREQ
18.IRoute *AODVRouting::createRoute(const L3Address& destAddr, const L3Address& nextHop, unsigned int hopCount, bool hasValidDestNum, unsigned int destSeqNum,
void AODVRouting::receiveSignal(cComponent *source, simsignal_t signalID, cObject *obj DETAILS_ARG)//其它模块有变化,便调用这个函数,使节点做出调整
19.void AODVRouting::handleLinkBreakSendRERR(const L3Address& unreachableAddr)// 处理链路层反馈的通往某节点的链路断开,处理完本节点后,开始发送RERR
20.AODVRERR *AODVRouting::createRERR(const std::vector& unreachableNodes) //建立报错RERR
21.void AODVRouting::handleRERR(AODVRERR *rerr, const L3Address& sourceAddr)//处理RERR,把自己去往这些地址的下一跳是RERR发送节点的路由置成不活动,准备删除
22.bool AODVRouting::handleOperationStage(LifecycleOperation *operation, int stage, IDoneCallback *doneCallback)//改变本节点工作状态,由LifeCycle模块执行,ScenarioManager模块来配置调度
23.void AODVRouting::clearState()//关闭本节点前需要清理状态
24.void AODVRouting::handleWaitForRREP(WaitForRREP *rrepTimer)//等待RREP的超时时间已到,看看是否到了次数限制,没有的话则继续发RREQ
25.void AODVRouting::forwardRREP(AODVRREP *rrep, const L3Address& destAddr, unsigned int timeToLive)//向着源节点继续返回RREP
26.void AODVRouting::forwardRREQ(AODVRREQ *rreq, unsigned int timeToLive)//向前继续广播RREQ
27.void AODVRouting::completeRouteDiscovery(const L3Address& target)//完成路由发现,这里有模拟传输数据的一些命令,一定要记住!!!
28.void AODVRouting::sendGRREP(AODVRREP *grrep, const L3Address& destAddr, unsigned int timeToLive)//发送给目的节点GRREP,为了使目的节点建立到源节点的路由
29.AODVRREP *AODVRouting::createHelloMessage()//创建HelloMessage包
30.void AODVRouting::sendHelloMessagesIfNeeded()//一个HELLO_INTERVAL内发送一个1跳的RREP消息给邻居节点建立1跳的“路由”,只有当处于一个活动路由之中的时候,节点才会发送HELLO消息
31.void AODVRouting::handleHelloMessage(AODVRREP *helloMessage)//这里来处理beacon信息
32.void AODVRouting::expungeRoutes()//用来定期清理路由表内的过期路由记录
33.void AODVRouting::scheduleExpungeRoutes()//设定清理过期路由的自消息计时器
34.INetfilter::IHook::Result AODVRouting::datagramForwardHook(INetworkDatagram *datagram, const InterfaceEntry *inputInterfaceEntry, const InterfaceEntry *& outputInterfaceEntry, L3Address& nextHopAddress)//如果节点收到一个传送中数据包,则此函数被调用,首先查看本节点是否是目的节点,然后更新1跳和去源目的节点的路由生存时间,然后如果本地没有到该目的节点的活动路由,则要发送RERR
35.void AODVRouting::sendRERRWhenNoRouteToForward(const L3Address& unreachableAddr)//把这个不可到达的节点加入到不可到达节点集合,然后发送RERR
36.void AODVRouting::cancelRouteDiscovery(const L3Address& destAddr)//用来停止发送数据包,估计可以外部调用!!!
37.bool AODVRouting::updateValidRouteLifeTime(const L3Address& destAddr, simtime_t lifetime)//更新路由表中某目的节点路由的生存时间
38.AODVRREPACK *AODVRouting::createRREPACK()//建立RREPACK
void AODVRouting::sendRREPACK(AODVRREPACK *rrepACK, const L3Address& destAddr)//发送RREPACK
39.void AODVRouting::handleRREPACK(AODVRREPACK *rrepACK, const L3Address& neighborAddr)//处理RREPACK,把到发ack包的这个邻居节点路由设置为活动的,并且取消等待rrepack计时器
40.void AODVRouting::handleRREPACKTimer()//当RREPACK没有按时收到,则把当初发出RREP的下一跳节点加入黑名单,并启动黑名单消除计时器,在一定时间后回复它的正常
41.void AODVRouting::handleBlackListTimer()//搜索黑名单节点的解禁时间,如果到时的节点则解禁,然后找到最近要解禁的节点解禁时间,赋值启动黑名单解禁计时器
42.AODVRouting::~AODVRouting()//析构函数