|
| #define | AODV_ACTIVE_ROUTE_TIMEOUT 3000* MILLISECOND |
| |
| #define | AODV_ALLOWED_HELLO_LOSS 2 |
| |
| #define | AODV_BLACKLIST_TIMEOUT AODV_RREQ_RETRIES * AODV_NET_TRAVERSAL_TIME |
| |
| #define | AODV_DELETE_PERIOD K * max (AODV_ACTIVE_ROUTE_TIMEOUT, AODV_HELLO_INTERVAL) |
| |
| #define | K 5 |
| |
| #define | AODV_HELLO_INTERVAL 1000* MILLISECOND |
| |
| #define | AODV_LOCAL_ADD_TTL 2 |
| |
| #define | AODV_MAX_REPAIR_TTL 0.3 * AODV_NET_DIAMETER |
| |
| #define | AODV_MIN_REPAIR_TTL |
| |
| #define | AODV_MY_ROUTE_TIMEOUT (2 * AODV_ACTIVE_ROUTE_TIMEOUT) |
| |
| #define | AODV_NET_DIAMETER 35 |
| |
| #define | AODV_NET_TRAVERSAL_TIME 2 * AODV_NODE_TRAVERSAL_TIME * AODV_NET_DIAMETER |
| |
| #define | AODV_NEXT_HOP_WAIT AODV_NODE_TRAVERSAL_TIME + 10 |
| |
| #define | AODV_NODE_TRAVERSAL_TIME 40 * MILLISECOND |
| |
| #define | AODV_PATH_DISCOVERY_TIME 2 * AODV_NET_TRAVERSAL_TIME |
| |
| #define | AODV_RERR_RATELIMIT 10 |
| |
| #define | AODV_RING_TRAVERSAL_TIME(ttl) 2 * AODV_NODE_TRAVERSAL_TIME *(ttl + AODV_TIMEOUT_BUFFER) |
| |
| #define | AODV_RREQ_RETRIES 2 |
| |
| #define | AODV_RREQ_RATELIMIT 10 |
| |
| #define | AODV_TIMEOUT_BUFFER 2 |
| |
| #define | AODV_TTL_START 1 |
| |
| #define | AODV_TTL_INCREMENT 2 |
| |
| #define | AODV_TTL_THRESHOLD 7 |
| |
| #define | AODV_RREQ_SIZE_IPV4 24 |
| | AODV route request size in bytes. More...
|
| |
| #define | AODV_RREQ_SIZE_IPV6 72 |
| |
| #define | AODV_RREQ_SIZE(dev) DEVICE_NWPROTOCOL(dev,1) == NW_PROTOCOL_IPV4 ? AODV_RREQ_SIZE_IPV4:AODV_RREQ_SIZE_IPV6 |
| |
| #define | AODV_RREP_SIZE_IPV4 20 |
| | AODV route reply size in bytes. More...
|
| |
| #define | AODV_RREP_SIZE_IPV6 56 |
| |
| #define | AODV_RREP_SIZE(dev) DEVICE_NWPROTOCOL(dev,1) == NW_PROTOCOL_IPV4 ? AODV_RREP_SIZE_IPV4:AODV_RREP_SIZE_IPV6 |
| |
| #define | AODV_RERR_SIZE_FIXED 4 |
| | AODV route error size in bytes. More...
|
| |
| #define | AODV_PACKET_PROCESSING() fn_NetSim_AODV_GeneralPacketProcessing(pstruEventDetails) |
| |
| #define | AODV_CHECK_ROUTE_FOUND(destIP) fn_NetSim_AODV_CheckRouteFound(destIP,pstruEventDetails) |
| |
| #define | AODV_ADD_TO_FIFO(packet, fifoBuffer, time) fn_NetSim_AODV_AddToFIFOBuffer(packet,fifoBuffer,time) |
| |
| #define | AODV_GEN_RREQ() fn_NetSim_AODV_GenerateRREQ(pstruEventDetails) |
| |
| #define | AODV_RETRY_RREQ() fn_NetSim_AODV_RetryRREQ(pstruEventDetails) |
| |
| #define | AODV_PROCESS_RREQ() fn_NetSim_AODV_ProcessRREQ(pstruEventDetails) |
| |
| #define | AODV_INSERT_ROUTE_TABLE(ip, seq, hopcount, nexthop, lifeTime) fn_NetSim_AODV_InsertInRouteTable(ip,seq,hopcount,nexthop,lifeTime,pstruEventDetails) |
| |
| #define | AODV_INSERT_PRECURSOR(ip) fn_NetSim_AODV_InsertInPrecursorsList(ip,pstruEventDetails) |
| |
| #define | AODV_FORWARD_RREQ() fn_NetSim_AODV_ForwardRREQ(pstruEventDetails) |
| |
| #define | AODV_GENERATE_RREP() fn_NetSim_AODV_GenerateRREP(pstruEventDetails) |
| |
| #define | AODV_TRANSMIT_FIFO(devVar) fn_NetSim_AODV_TransmitFIFOBuffer(devVar,pstruEventDetails) |
| |
| #define | AODV_PROCESS_RREP() fn_NetSim_AODV_ProcessRREP(pstruEventDetails) |
| |
| #define | AODV_FORWARD_RREP() fn_NetSim_AODV_ForwardRREP(pstruEventDetails) |
| |
| #define | AODV_FIND_NEXT_HOP(devVar, dest) fn_NetSim_AODV_FindNextHop(devVar,dest,pstruEventDetails) |
| |
| #define | AODV_GENERATE_RREP_BY_IN() fn_NetSim_AODV_GenerateRREPByIntermediate(pstruEventDetails) |
| |
| #define | AODV_TRANSMIT_HELLO() fn_NetSim_AODV_TransmitHelloMessage(pstruEventDetails) |
| |
| #define | AODV_UPDATE_ROUTE_TABLE(ip, lifetime) fn_NetSim_AODV_UpdateRouteTable(ip,lifetime,pstruEventDetails) |
| |
| #define | AODV_ACTIVE_ROUTE_TIMEOUT_EVENT() fn_NetSim_AODV_ActiveRouteTimeout(pstruEventDetails) |
| |
| #define | AODV_GENERATE_RERR(DevId, UnreachableIP) fn_NetSim_AODV_GenerateRERR(DevId,UnreachableIP,pstruEventDetails) |
| |
| #define | AODV_PROCESS_RERR() fn_NetSim_AODV_ProcessRERR(pstruEventDetails) |
| |
| #define | AODV_DEV_VAR(devId) ((AODV_DEVICE_VAR*)NETWORK->ppstruDeviceList[devId-1]->pstruNetworkLayer->RoutingVar) |
| |
| #define | AODV_METRICS_VAR(devId) (AODV_DEV_VAR(devId)->aodvMetrics) |
| |
| #define | FIFO_ALLOC() (AODV_FIFO*)list_alloc(sizeof(AODV_FIFO),offsetof(AODV_FIFO,ele)) |
| |
| #define | RREQSEENTABLE_ALLOC() (AODV_RREQ_SEEN_TABLE*)list_alloc(sizeof(AODV_RREQ_SEEN_TABLE),offsetof(AODV_RREQ_SEEN_TABLE,ele)) |
| |
| #define | RREQSENTTABLE_ALLOC() (AODV_RREQ_SENT_TABLE*)list_alloc(sizeof(AODV_RREQ_SENT_TABLE),offsetof(AODV_RREQ_SENT_TABLE,ele)) |
| |
| #define | ROUTETABLE_ALLOC() (AODV_ROUTETABLE*)list_alloc(sizeof(AODV_ROUTETABLE),offsetof(AODV_ROUTETABLE,ele)) |
| |
|
| void | set_aodv_curr () |
| |
| NETSIM_IPAddress | aodv_get_curr_ip () |
| |
| NETSIM_ID | aodv_get_curr_if () |
| |
| NETSIM_IPAddress | aodv_get_dev_ip (NETSIM_ID d) |
| |
| bool | isAodvConfigured (NETSIM_ID d, NETSIM_ID in) |
| |
| unsigned int | fnFindSequenceNumber (AODV_DEVICE_VAR *devVar, NETSIM_IPAddress ip) |
| |
| int | fnEmptyFIFOBuffer (AODV_DEVICE_VAR *devVar, NETSIM_IPAddress dest) |
| |
| AODV_ROUTETABLE * | fnFindRouteTable (AODV_ROUTETABLE *table, NETSIM_IPAddress dest) |
| |
| NetSim_PACKET * | fn_NetSim_AODV_GenerateCtrlPacket (NETSIM_ID src, NETSIM_ID dest, NETSIM_ID recv, double dTime, AODV_CONTROL_PACKET type) |
| |
| int | fn_NetSim_AODV_InsertInRouteTable (NETSIM_IPAddress ip, unsigned int seqNumber, unsigned int hopCount, NETSIM_IPAddress nextHop, double lifeTime, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_TransmitFIFOBuffer (AODV_DEVICE_VAR *devVar, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_InsertInPrecursorsList (NETSIM_IPAddress ip, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_UpdateRouteTable (NETSIM_IPAddress ip, double lifetime, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ForwardRREP (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| bool | fn_NetSim_AODV_CheckRouteFound (NETSIM_IPAddress ip, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| NETSIM_IPAddress | fn_NetSim_AODV_FindNextHop (AODV_DEVICE_VAR *devVar, NETSIM_IPAddress dest, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ForwardRREQ (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_GeneralPacketProcessing (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| bool | fn_NetSim_AODV_AddToFIFOBuffer (NetSim_PACKET *packet, AODV_FIFO **fifoBuffer, double time) |
| |
| NetSim_PACKET * | fn_NetSim_AODV_GenerateRREQ (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_RetryRREQ (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ProcessRREQ (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_GenerateRREP (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ProcessRREP (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_GenerateRREPByIntermediate (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_TransmitHelloMessage (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ReceiveHelloMessage (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ActiveRouteTimeout (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_GenerateRERR (NETSIM_ID nDeviceId, NETSIM_IPAddress UnreachableIP, NetSim_EVENTDETAILS *pstruEventDetails) |
| |
| int | fn_NetSim_AODV_ProcessRERR (NetSim_EVENTDETAILS *pstruEventDetails) |
| |
This function is called in the Network Out Event for routing of the packet.
If the Device route table has a route to the target, then the packet is added to sent to the next hop ip
Whenever a packet is to be routed to a destination and the device route cache doesnt have a route to the target, the Packet is added to the FIFO and a Route Discovery is iitiated if not already.
Update the life time
Update the metrics
No route found but RREQ is already sent
No route found. generate RREQ
Definition at line 30 of file GeneralPacketProcessing.c.
This function process the AODV RREQ. It checks for duplicate entry of the received RREQ packet. If the RREQ packet was received previously, it frees the packet. Else, it adds the RREQ in the AODV seen table, Inserts the reverse route in the Route table. If the device has the Route to the target, it generates a RREP. else it forwards the RREQ.
Definition at line 285 of file RREQ.c.