15#include "NetSim_utility.h"
20#pragma warning(disable:4028)
21char* GetStringOSPF_Subevent(NETSIM_ID);
22#pragma warning(default:4028)
23int fn_NetSim_OSPF_Configure_F(
void** var);
25 NetSim_EVENTDETAILS* pevent,
30int fn_NetSim_OSPF_Finish_F();
31int fn_NetSim_OSPF_FreePacket_F(NetSim_PACKET* packet);
32int fn_NetSim_OSPF_CopyPacket_F(NetSim_PACKET* dst,
34int fn_NetSim_OSPF_Metrics_F(PMETRICSWRITER metricsWriter);
35char* fn_NetSim_OSPF_ConfigPacketTrace_F(
const void* xmlNetSimNode);
36int fn_NetSim_OSPF_WritePacketTrace_F(NetSim_PACKET* pstruPacket,
char** ppszTrace);
37static void register_ospf_log();
39#pragma comment(lib,"OSPF.lib")
42static void ospf_handle_appin_event();
43static void ospf_handle_timer_event();
44void ospf_handle_InterfaceUp_Event();
46_declspec (dllexport)
int fn_NetSim_OSPF_Run()
48 switch (pstruEventDetails->nEventType)
51 ospf_handle_timer_event();
53 case APPLICATION_IN_EVENT:
54 ospf_handle_appin_event();
57 fnNetSimError(
"Unknown event type %d for OSPF protocol\n",
58 pstruEventDetails->nEventType);
64_declspec(dllexport)
int fn_NetSim_OSPF_Configure(
void** var)
66 return fn_NetSim_OSPF_Configure_F(var);
70 NetSim_EVENTDETAILS *pstruEventDetails_Formal,
71 char *pszAppPath_Formal,
72 char *pszWritePath_Formal,
77 return fn_NetSim_OSPF_Init_F(NETWORK_Formal,
78 pstruEventDetails_Formal,
85_declspec(dllexport)
int fn_NetSim_OSPF_Finish()
87 return fn_NetSim_OSPF_Finish_F();
90_declspec (dllexport)
char *fn_NetSim_OSPF_Trace(
int nSubEvent)
92 return (GetStringOSPF_Subevent(nSubEvent));
95_declspec(dllexport)
int fn_NetSim_OSPF_FreePacket(NetSim_PACKET* pstruPacket)
97 return fn_NetSim_OSPF_FreePacket_F(pstruPacket);
100_declspec(dllexport)
int fn_NetSim_OSPF_CopyPacket(NetSim_PACKET* pstruDestPacket, NetSim_PACKET* pstruSrcPacket)
102 return fn_NetSim_OSPF_CopyPacket_F(pstruDestPacket, pstruSrcPacket);
105_declspec(dllexport)
int fn_NetSim_OSPF_Metrics(PMETRICSWRITER metricsWriter)
107 return fn_NetSim_OSPF_Metrics_F(metricsWriter);
110_declspec(dllexport)
char* fn_NetSim_OSPF_ConfigPacketTrace(
const void* xmlNetSimNode)
112 return fn_NetSim_OSPF_ConfigPacketTrace_F(xmlNetSimNode);
115_declspec(dllexport)
int fn_NetSim_OSPF_WritePacketTrace(NetSim_PACKET* pstruPacket,
char** ppszTrace)
117 return fn_NetSim_OSPF_WritePacketTrace_F(pstruPacket, ppszTrace);
120static void ospf_handle_timer_event()
122 if (OSPF_IS_SUBEVENT(pstruEventDetails->nSubEventType))
123 OSPF_CALL_SUBEVENT(pstruEventDetails->nSubEventType);
126 fnNetSimError(
"OSPF: Event call back function is not defined for %s event\n",
127 GetStringOSPF_Subevent(pstruEventDetails->nSubEventType));
131static void ospf_handle_appin_event()
133 NetSim_PACKET* packet = pstruEventDetails->pPacket;
134 NETSIM_ID d = pstruEventDetails->nDeviceId;
135 NETSIM_ID in = pstruEventDetails->nInterfaceId;
136 if (!validate_ospf_packet(packet, d, in))
138 fnNetSimError(
"OSPF Packet validation is failed received on %d-%d\n", d, in);
142 ptrOSPFPACKETHDR hdr = OSPF_PACKET_GET_HDR(packet);
146 ospf_process_hello();
151 case OSPFMSG_LSUPDATE:
152 ospf_handle_LSUPDATE();
154 case OSPFMSG_LSREQUEST:
155 ospf_handle_LSRequest();
161 fnNetSimError(
"Unknown ospf msg %d arrives to router %d-%d\n",
169char* form_dlogId(
char* name,
172 sprintf(logId,
"%s_%d",
177static void register_ospf_log()
197bool get_ospf_log_status()
199 if (get_protocol_log_status(
"OSPF_LOG"))
205bool get_ospf_hello_log_status()
207 if (get_protocol_log_status(
"OSPF_HELLO_LOG"))
213bool get_protocol_log_status(
char* logname)
219 sprintf(str,
"%s/%s", pszIOPath,
"ProtocolLogsConfig.txt");
220 fp = fopen(str,
"r");
224 sprintf(str,
"%s=true", logname);
226 while (fgets(data, BUFSIZ, fp))
229 if (!_strnicmp(data, str, strlen(str)))