21bool fn_NetSim_AODV_AddToFIFOBuffer(NetSim_PACKET* packet,
22 AODV_FIFO** fifoBuffer,
25 AODV_FIFO* fifo = *fifoBuffer;
28 if(!IP_COMPARE(fifo->
destination,packet->pstruNetworkData->szDestIP))
37 while(packetList->pstruNextPacket)
38 packetList = packetList->pstruNextPacket;
39 packetList->pstruNextPacket = packet;
42 fifo = LIST_NEXT(fifo);
45 fifo->
destination = IP_COPY(packet->pstruNetworkData->szDestIP);
48 LIST_ADD_LAST(fifoBuffer,fifo);
54int fnEmptyFIFOBuffer(AODV_DEVICE_VAR* devVar,NETSIM_IPAddress dest)
56 AODV_FIFO* fifo = devVar->fifo;
65 packet->pstruNextPacket = NULL;
66 fn_NetSim_Packet_FreePacket(packet);
68 AODV_METRICS_VAR(pstruEventDetails->nDeviceId).packetDropped++;
71 LIST_FREE(&devVar->fifo,fifo);
81int fn_NetSim_AODV_TransmitFIFOBuffer(AODV_DEVICE_VAR* devVar,
82 NetSim_EVENTDETAILS* pstruEventDetails)
84 NetSim_EVENTDETAILS pevent;
85 AODV_FIFO* fifo = devVar->fifo;
86 memcpy(&pevent,pstruEventDetails,
sizeof pevent);
95 packet->pstruNextPacket = NULL;
96 pevent.dPacketSize = fnGetPacketSize(packet);
97 if(packet->pstruAppData)
99 pevent.nApplicationId = packet->pstruAppData->nApplicationId;
100 pevent.nSegmentId = packet->pstruAppData->nSegmentId;
102 pevent.nInterfaceId = 0;
103 pevent.nEventType = NETWORK_OUT_EVENT;
104 pevent.nPacketId = packet->nPacketId;
105 pevent.nProtocolId = fn_NetSim_Stack_GetNWProtocol(pstruEventDetails->nDeviceId);
106 pevent.nSubEventType = 0;
107 pevent.pPacket = packet;
108 pevent.szOtherDetails = NULL;
109 fnpAddEvent(&pevent);
112 fifo = (AODV_FIFO*)LIST_NEXT(fifo);
NetSim_PACKET * packetList
PacketList - List of packets added to the FIFO buffer.
NETSIM_IPAddress destination
Destination - destination ip address.