26#include "Ethernet_enum.h"
27#include "AdvancedPlots.h"
28#pragma comment(lib,"AdvancedPlots.lib")
29char* GetStringEthernet_Subevent(NETSIM_ID);
31#pragma comment(lib,"Ethernet.lib")
34int fn_NetSim_Ethernet_Configure_F(
void **var);
36 NetSim_EVENTDETAILS* pevent,
41int fn_NetSim_Ethernet_CopyPacket_F(NetSim_PACKET* dst,
43int fn_NetSim_Ethernet_FreePacket_F(NetSim_PACKET* packet);
44int fn_NetSim_Ethernet_Finish_F();
45int fn_NetSim_Ethernet_Metrics_F(PMETRICSWRITER metricsWriter);
46char* fn_NetSim_Ethernet_ConfigPacketTrace_F(
const void* xmlNetSimNode);
47int fn_NetSim_Ethernet_WritePacketTrace_F(NetSim_PACKET* pstruPacket,
char** ppszTrace);
49int fn_NetSim_Ethernet_HandleMacOut();
50int fn_NetSim_Ethernet_HandleMacIn();
51int fn_NetSim_Ethernet_HandlePhyOut();
52int fn_NetSim_Ethernet_HandlePhyIn();
53static int fn_NetSim_Ethernet_HandleTimer();
60_declspec (dllexport)
int fn_NetSim_Ethernet_Run()
62 switch (pstruEventDetails->nEventType)
65 return fn_NetSim_Ethernet_HandleMacOut();
68 return fn_NetSim_Ethernet_HandleMacIn();
70 case PHYSICAL_OUT_EVENT:
71 return fn_NetSim_Ethernet_HandlePhyOut();
73 case PHYSICAL_IN_EVENT:
74 return fn_NetSim_Ethernet_HandlePhyIn();
77 return fn_NetSim_Ethernet_HandleTimer();
80 fnNetSimError(
"Unknown event %d for Ethernet protocolin %s\n",
81 pstruEventDetails->nEventType,
91_declspec(dllexport)
int fn_NetSim_Ethernet_Configure(
void** var)
93 return fn_NetSim_Ethernet_Configure_F(var);
99_declspec (dllexport)
int fn_NetSim_Ethernet_Init(
struct stru_NetSim_Network *NETWORK_Formal,
100 NetSim_EVENTDETAILS *pstruEventDetails_Formal,
101 char *pszAppPath_Formal,
102 char *pszWritePath_Formal,
106 init_linkpacketlog();
107 return fn_NetSim_Ethernet_Init_F(NETWORK_Formal,
108 pstruEventDetails_Formal,
119_declspec(dllexport)
int fn_NetSim_Ethernet_Finish()
121 return fn_NetSim_Ethernet_Finish_F();
128_declspec (dllexport)
char *fn_NetSim_Ethernet_Trace(
int nSubEvent)
130 return (GetStringEthernet_Subevent(nSubEvent));
136_declspec(dllexport)
int fn_NetSim_Ethernet_FreePacket(NetSim_PACKET* pstruPacket)
138 return fn_NetSim_Ethernet_FreePacket_F(pstruPacket);
144_declspec(dllexport)
int fn_NetSim_Ethernet_CopyPacket(NetSim_PACKET* pstruDestPacket, NetSim_PACKET* pstruSrcPacket)
146 return fn_NetSim_Ethernet_CopyPacket_F(pstruDestPacket, pstruSrcPacket);
152_declspec(dllexport)
int fn_NetSim_Ethernet_Metrics(PMETRICSWRITER metricsWriter)
154 return fn_NetSim_Ethernet_Metrics_F(metricsWriter);
160_declspec(dllexport)
char* fn_NetSim_Ethernet_ConfigPacketTrace(
const void* xmlNetSimNode)
162 return fn_NetSim_Ethernet_ConfigPacketTrace_F(xmlNetSimNode);
168_declspec(dllexport)
int fn_NetSim_Ethernet_WritePacketTrace(NetSim_PACKET* pstruPacket,
char** ppszTrace)
170 return fn_NetSim_Ethernet_WritePacketTrace_F(pstruPacket, ppszTrace);
173static int fn_NetSim_Ethernet_HandleTimer()
175 switch (pstruEventDetails->nSubEventType)
178 notify_interface_up(pstruEventDetails->nDeviceId, pstruEventDetails->nInterfaceId);
181 fnNetSimError(
"Unknown subevent %d in %s\n",
182 pstruEventDetails->nSubEventType,
204double get_ifg(
double link_speed)
208 if (link_speed <= 10)
210 else if (link_speed <= 100)
212 else if (link_speed <= 1000)
214 else if (link_speed <= 25000)
221 return ((
double)ifg_bits) / link_speed;