15#define _CRT_SECURE_NO_DEPRECATE
22_declspec (dllexport)
int fn_NetSim_ARP_Run()
24 SUB_EVENT nSub_Event_Type;
27 nEventType=pstruEventDetails->nEventType;
28 nSub_Event_Type = pstruEventDetails->nSubEventType;
32 case NETWORK_OUT_EVENT:
33 switch(nSub_Event_Type)
35 case GENERATE_ARP_REQUEST:
36 fn_NetSim_Generate_ARP_Request(pstruEventDetails,NETWORK);
39 fn_NetSim_Read_ARP_Table(pstruEventDetails,NETWORK);
45 switch(nSub_Event_Type)
47 case ARP_REQUEST_TIMEOUT:
48 fn_NetSim_ARP_Request_Timeout(pstruEventDetails,NETWORK);
53 case NETWORK_IN_EVENT:
54 switch(nSub_Event_Type)
56 case GENERATE_ARP_REPLY:
58 fn_NetSim_Generate_ARP_Reply(pstruEventDetails,NETWORK);
60 case UPDATE_ARP_TABLE_FWD_PKT:
61 fn_NetSim_Update_ARP_Table_ForwardPacket(pstruEventDetails,NETWORK);
64 switch(pstruEventDetails->pPacket->nControlDataType)
67 nDestionation = fn_Netsim_ARP_CheckDestinationDevice(pstruEventDetails,NETWORK);
70 pstruEventDetails->nSubEventType = GENERATE_ARP_REPLY;
71 fnpAddEvent(pstruEventDetails);
73 pstruEventDetails->pPacket = NULL;
76 pstruEventDetails->nSubEventType = UPDATE_ARP_TABLE_FWD_PKT;
77 fnpAddEvent(pstruEventDetails);
78 pstruEventDetails->pPacket = NULL;
88 fnNetSimError(
"Unknown event type for ARP protocol");
100 NetSim_EVENTDETAILS *pstruEventDetails_Formal,
char *pszAppPath_Formal,\
101 char *pszWritePath_Formal,
int nVersion_Type,
void **fnPointer)
103 fn_NetSim_ARP_Init_F(NETWORK_Formal,pstruEventDetails_Formal,pszAppPath_Formal,\
104 pszWritePath_Formal,nVersion_Type,fnPointer);
111_declspec(dllexport)
int fn_NetSim_ARP_Finish()
113 fn_NetSim_ARP_Finish_F();
120_declspec (dllexport)
char *fn_NetSim_ARP_Trace(
int nSubEvent)
122 return (fn_NetSim_ARP_Trace_F(nSubEvent));
128_declspec(dllexport)
int fn_NetSim_ARP_Configure(
void** var)
130 return fn_NetSim_ARP_Configure_F(var);
135_declspec(dllexport)
int fn_NetSim_ARP_FreePacket(NetSim_PACKET* pstruPacket)
137 return fn_NetSim_ARP_FreePacket_F(pstruPacket);
143_declspec(dllexport)
int fn_NetSim_ARP_CopyPacket(NetSim_PACKET* pstruDestPacket,NetSim_PACKET* pstruSrcPacket)
145 return fn_NetSim_ARP_CopyPacket_F(pstruDestPacket,pstruSrcPacket);
150_declspec(dllexport)
int fn_NetSim_ARP_Metrics(PMETRICSWRITER writer)
157_declspec(dllexport)
char* fn_NetSim_ARP_ConfigPacketTrace()
164_declspec(dllexport)
char* fn_NetSim_ARP_WritePacketTrace(NetSim_PACKET* pstruPacket,
char** ppszTrace)
176int fn_Netsim_ARP_CheckDestinationDevice(NetSim_EVENTDETAILS *pstruEventDetails,
struct stru_NetSim_Network *NETWORK)
179 NETSIM_ID nInterfaceId;
182 NETSIM_IPAddress szSrcIPadd;
183 NetSim_PACKET *pstruTemp_Data;
184 ARP_PACKET *pstruArpRequestPkt;
185 ARP_TABLE *pstruTableHead,*pstruCurrentTable;
186 ARP_VARIABLES *pstruArpVariables;
189 pstruTemp_Data =pstruEventDetails->pPacket;
191 nInterfaceId = pstruEventDetails->nInterfaceId;
192 nDeviceId = pstruEventDetails->nDeviceId;
194 pstruArpRequestPkt = pstruTemp_Data->pstruNetworkData->Packet_NetworkProtocol;
196 if(IP_COMPARE(pstruArpRequestPkt->
sz_ar$tpa,DEVICE_NWADDRESS(nDeviceId,nInterfaceId)) == 0)
203 pstruArpVariables = DEVICE_INTERFACE(nDeviceId,nInterfaceId)->ipVar;
204 pstruTableHead = pstruArpVariables->pstruArpTable;
205 pstruCurrentTable = pstruTableHead;
207 szSrcIPadd = IP_COPY(pstruArpRequestPkt->
sz_ar$spa);
209 while(pstruCurrentTable != NULL)
211 if(IP_COMPARE(pstruCurrentTable->
szIPAddress,szSrcIPadd)== 0)
223 fn_NetSim_Add_IP_MAC_AddressTo_ARP_Table(&pstruTableHead,pstruArpRequestPkt->
sz_ar$spa,pstruArpRequestPkt->
sz_ar$sha,nType);
224 pstruArpVariables->pstruArpTable = pstruTableHead;
229 fn_NetSim_Packet_FreePacket(pstruTemp_Data);
230 pstruTemp_Data = NULL;
231 pstruEventDetails->pPacket = NULL;
struct stru_ARP_Table * pstruNextEntry
Next entry pointer.
NETSIM_IPAddress szIPAddress
IP address of the deivce.
NETSIM_IPAddress sz_ar$spa
Protocol address of the sender.
PNETSIM_MACADDRESS sz_ar$sha
Hardware address of the sender.
NETSIM_IPAddress sz_ar$tpa
Protocol address of target.