28int fn_NetSim_DSR_GeneralPacketProcessing(NetSim_EVENTDETAILS* pstruEventDetails)
30 NETSIM_IPAddress nextHop;
32 DSR_ROUTE_CACHE* cache=NULL;
33 DSR_DEVICE_VAR* pstruDevVar = DSR_DEV_VAR(pstruEventDetails->nDeviceId);
34 pstruEventDetails->pPacket->pstruNetworkData->szGatewayIP = IP_COPY(dsr_get_curr_ip());
35 if(DSR_CHECK_ROUTE_FOUND(pstruEventDetails->pPacket->pstruNetworkData->szDestIP,
36 pstruDevVar,&nextHop,pstruEventDetails->dEventTime,&cache))
39 DSR_ADD_SRC_ROUTE(pstruEventDetails->pPacket,cache);
40 DSR_ADD_ACK_REQUEST(pstruEventDetails->pPacket);
41 IP_FREE(pstruEventDetails->pPacket->pstruNetworkData->szNextHopIp);
42 pstruEventDetails->pPacket->pstruNetworkData->szNextHopIp = IP_COPY(nextHop);
43 pstruEventDetails->pPacket->pstruNetworkData->szGatewayIP = IP_COPY(dsr_get_curr_ip());
44 pstruEventDetails->pPacket->nTransmitterId = pstruEventDetails->nDeviceId;
45 pstruEventDetails->pPacket->nReceiverId = fn_NetSim_Stack_GetDeviceId_asIP(nextHop,&nInterface);
46 DSR_ADD_TO_MAINT_BUFFER(pstruEventDetails->nDeviceId,pstruEventDetails->pPacket,pstruEventDetails->dEventTime);
47 DSR_DEV_VAR(pstruEventDetails->nDeviceId)->dsrMetrics.packetTransmitted++;
48 if(pstruEventDetails->pPacket->nSourceId == pstruEventDetails->nDeviceId)
49 DSR_DEV_VAR(pstruEventDetails->nDeviceId)->dsrMetrics.packetOrginated++;
50 if(DSR_DEV_VAR(pstruEventDetails->nDeviceId)->AckType == LINK_LAYER_ACK)
51 pstruEventDetails->pPacket->ReceiveAckNotification = fn_NetSim_DSR_LinkLayerAck;
57 pstruEventDetails->pPacket,
58 pstruEventDetails->dEventTime))
61 NetSim_PACKET* packet = DSR_INIT_RREQ(pstruEventDetails->pPacket->pstruNetworkData->szDestIP,
63 pstruEventDetails->nDeviceId,
64 pstruEventDetails->dEventTime);
65 pstruEventDetails->pPacket = packet;
66 pstruEventDetails->dPacketSize = packet->pstruNetworkData->dPacketSize;
67 pstruEventDetails->nApplicationId = 0;
68 pstruEventDetails->nPacketId = 0;
73 pstruEventDetails->pPacket = NULL;
struct stru_DSR_SendBuffer * pstruSendBuffer
Buffer in which packets are added if route to target is not known.
struct stru_DSR_RouteRequestTable * pstruRREQTable
A table in which entry of RREQ initiated is made.