NetSim Source Code Help
Loading...
Searching...
No Matches
OSPF.c
Go to the documentation of this file.
1/************************************************************************************
2* Copyright (C) 2020 *
3* TETCOS, Bangalore. India *
4* *
5* Tetcos owns the intellectual property rights in the Product and its content. *
6* The copying, redistribution, reselling or publication of any or all of the *
7* Product or its content without express prior written consent of Tetcos is *
8* prohibited. Ownership and / or any other right relating to the software and all *
9* intellectual property rights therein shall remain at all times with Tetcos. *
10* *
11* Author: Shashi Kant Suman *
12* *
13* ---------------------------------------------------------------------------------*/
14#include "main.h"
15#include "OSPF.h"
16#include "OSPF_enum.h"
17#include "OSPF_Msg.h"
18
19#pragma warning(disable:4028)
21#pragma warning(default:4028)
24 NetSim_EVENTDETAILS* pevent,
25 char* appPath,
26 char* iopath,
27 int version,
28 void** fnPointer);
32 NetSim_PACKET* src);
34char* fn_NetSim_OSPF_ConfigPacketTrace_F(const void* xmlNetSimNode);
35int fn_NetSim_OSPF_WritePacketTrace_F(NetSim_PACKET* pstruPacket, char** ppszTrace);
36static void register_ospf_log();
37
38#pragma comment(lib,"OSPF.lib")
39
40//Function prototype
41static void ospf_handle_appin_event();
42static void ospf_handle_timer_event();
44
46{
48 {
49 case TIMER_EVENT:
51 break;
54 break;
55 default:
56 fnNetSimError("Unknown event type %d for OSPF protocol\n",
58 break;
59 }
60 return 0;
61}
62
63_declspec(dllexport) int fn_NetSim_OSPF_Configure(void** var)
64{
66}
67
68_declspec (dllexport) int fn_NetSim_OSPF_Init(struct stru_NetSim_Network *NETWORK_Formal,
72 int nVersion_Type,
73 void **fnPointer)
74{
76 return fn_NetSim_OSPF_Init_F(NETWORK_Formal,
81 fnPointer);
82}
83
85{
87}
88
89_declspec (dllexport) char *fn_NetSim_OSPF_Trace(int nSubEvent)
90{
91 return (GetStringOSPF_Subevent(nSubEvent));
92}
93
95{
96 return fn_NetSim_OSPF_FreePacket_F(pstruPacket);
97}
98
99_declspec(dllexport) int fn_NetSim_OSPF_CopyPacket(NetSim_PACKET* pstruDestPacket, NetSim_PACKET* pstruSrcPacket)
100{
101 return fn_NetSim_OSPF_CopyPacket_F(pstruDestPacket, pstruSrcPacket);
102}
103
105{
106 return fn_NetSim_OSPF_Metrics_F(metricsWriter);
107}
108
109_declspec(dllexport) char* fn_NetSim_OSPF_ConfigPacketTrace(const void* xmlNetSimNode)
110{
111 return fn_NetSim_OSPF_ConfigPacketTrace_F(xmlNetSimNode);
112}
113
114_declspec(dllexport) int fn_NetSim_OSPF_WritePacketTrace(NetSim_PACKET* pstruPacket, char** ppszTrace)
115{
116 return fn_NetSim_OSPF_WritePacketTrace_F(pstruPacket, ppszTrace);
117}
118
120{
123 else
124 {
125 fnNetSimError("OSPF: Event call back function is not defined for %s event\n",
127 }
128}
129
131{
135 if (!validate_ospf_packet(packet, d, in))
136 {
137 fnNetSimError("OSPF Packet validation is failed received on %d-%d\n", d, in);
138 return;
139 }
140
142 switch (hdr->Type)
143 {
144 case OSPFMSG_HELLO:
146 break;
147 case OSPFMSG_DD:
149 break;
150 case OSPFMSG_LSUPDATE:
152 break;
155 break;
156 case OSPFMSG_LSACK:
158 break;
159 default:
160 fnNetSimError("Unknown ospf msg %d arrives to router %d-%d\n",
161 hdr->Type,
162 d, in);
163 break;
164 }
165}
166
168{
169 return isOSPFHelloDebug;
170}
171
173{
174 return isOSPFSPFDebug;
175}
176
177char logId[BUFSIZ];
178char* form_dlogId(char* name,
179 NETSIM_ID d)
180{
181 sprintf(logId, "%s_%d",
182 name, d);
183 return logId;
184}
185
186static void register_ospf_log()
187{
188 /*
189 init_ospf_dlog("OSPFROUTE_6", "OSPFROUTE_6");
190 init_ospf_dlog("LSDB_6", "LSDB_6");
191 init_ospf_dlog("OSPFSPF_6", "OSPFSPF_6");
192 init_ospf_dlog("LSDB_1", "LSDB_1");
193 init_ospf_dlog("RCVLSU_1", "RCVLSU_1");
194 init_ospf_dlog("OSPFROUTE_1", "OSPFROUTE_1");
195 init_ospf_dlog("LSULIST_1", "LSULIST_1");
196 init_ospf_dlog("OSPFSPF_1", "OSPFSPF_1");
197 init_ospf_dlog("RXTLIST_1", "RXTLIST_1");
198 init_ospf_dlog("RLSALOG_2", "RLSALOG_2");
199 init_ospf_dlog("RXTLIST_2", "RXTLIST_2");
200 init_ospf_dlog("RCVLSU_1", "RCVLSU_1");
201 init_ospf_dlog("RCVLSU_2", "RCVLSU_2");*/
202 //
203 //init_ospf_dlog("OSPFROUTE_1", "OSPFROUTE_1");
204}
205
207{
208 return false;
209 //return true;
210}
unsigned int NETSIM_ID
Definition: Animation.h:45
#define _declspec(dllexport)
This function is used to trigger the update.
Definition: Linux.h:41
#define fnNetSimError(x,...)
Definition: Linux.h:56
void * PMETRICSWRITER
Definition: MetricsWriter.h:27
void ospf_handle_InterfaceUp_Event()
int fn_NetSim_OSPF_Configure_F(void **var)
bool isOSPFSPFLog()
Definition: OSPF.c:172
char * fn_NetSim_OSPF_ConfigPacketTrace(const void *xmlNetSimNode)
Definition: OSPF.c:109
int fn_NetSim_OSPF_Run()
Definition: OSPF.c:45
char * fn_NetSim_OSPF_ConfigPacketTrace_F(const void *xmlNetSimNode)
char * fn_NetSim_OSPF_Trace(int nSubEvent)
Definition: OSPF.c:89
int fn_NetSim_OSPF_Init_F(struct stru_NetSim_Network *net, NetSim_EVENTDETAILS *pevent, char *appPath, char *iopath, int version, void **fnPointer)
int fn_NetSim_OSPF_Metrics_F(PMETRICSWRITER metricsWriter)
char * GetStringOSPF_Subevent(NETSIM_ID)
int fn_NetSim_OSPF_Configure(void **var)
Definition: OSPF.c:63
char logId[BUFSIZ]
Definition: OSPF.c:177
int fn_NetSim_OSPF_FreePacket(NetSim_PACKET *pstruPacket)
Definition: OSPF.c:94
int fn_NetSim_OSPF_Finish()
Definition: OSPF.c:84
int fn_NetSim_OSPF_WritePacketTrace(NetSim_PACKET *pstruPacket, char **ppszTrace)
Definition: OSPF.c:114
int fn_NetSim_OSPF_FreePacket_F(NetSim_PACKET *packet)
static void ospf_handle_timer_event()
Definition: OSPF.c:119
int fn_NetSim_OSPF_Metrics(PMETRICSWRITER metricsWriter)
Definition: OSPF.c:104
int fn_NetSim_OSPF_Init(struct stru_NetSim_Network *NETWORK_Formal, NetSim_EVENTDETAILS *pstruEventDetails_Formal, char *pszAppPath_Formal, char *pszWritePath_Formal, int nVersion_Type, void **fnPointer)
Definition: OSPF.c:68
int fn_NetSim_OSPF_CopyPacket_F(NetSim_PACKET *dst, NetSim_PACKET *src)
char * form_dlogId(char *name, NETSIM_ID d)
Definition: OSPF.c:178
int fn_NetSim_OSPF_CopyPacket(NetSim_PACKET *pstruDestPacket, NetSim_PACKET *pstruSrcPacket)
Definition: OSPF.c:99
int fn_NetSim_OSPF_Finish_F()
bool get_ospf_log_status()
Definition: OSPF.c:206
int fn_NetSim_OSPF_WritePacketTrace_F(NetSim_PACKET *pstruPacket, char **ppszTrace)
static void ospf_handle_appin_event()
Definition: OSPF.c:130
bool isOSPFHelloLog()
Definition: OSPF.c:167
static void register_ospf_log()
Definition: OSPF.c:186
void ospf_process_hello()
Definition: OSPF_Hello.c:258
void ospf_handle_LSAck()
Definition: OSPF_LSAACK.c:217
static bool isOSPFSPFDebug
Definition: OSPF.h:28
void ospf_handle_LSRequest()
Definition: OSPF_LSREQ.c:269
void ospf_handle_DD()
Definition: OSPF_DD.c:510
void ospf_handle_LSUPDATE()
static bool isOSPFHelloDebug
Definition: OSPF.h:27
#define OSPF_CALL_SUBEVENT(subevent)
Definition: OSPF_Enum.h:90
#define OSPF_IS_SUBEVENT(subevent)
Definition: OSPF_Enum.h:91
bool validate_ospf_packet(NetSim_PACKET *packet, NETSIM_ID d, NETSIM_ID in)
Definition: OSPF_Msg.c:202
@ OSPFMSG_DD
Definition: OSPF_Msg.h:34
@ OSPFMSG_HELLO
Definition: OSPF_Msg.h:33
@ OSPFMSG_LSUPDATE
Definition: OSPF_Msg.h:36
@ OSPFMSG_LSACK
Definition: OSPF_Msg.h:37
@ OSPFMSG_LSREQUEST
Definition: OSPF_Msg.h:35
#define OSPF_PACKET_GET_HDR(packet)
Definition: OSPF_Msg.h:91
NetSim_EVENTDETAILS * pstruEventDetails_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char * pszAppPath_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char char int nVersion_Type
Definition: RIP.h:178
NetSim_EVENTDETAILS char char * pszWritePath_Formal
Definition: RIP.h:178
NetSim_EVENTDETAILS char char int void ** fnPointer
Definition: RIP.h:178
@ TIMER_EVENT
Definition: Stack.h:114
@ APPLICATION_IN_EVENT
Definition: Stack.h:113
EXPORTED struct stru_NetSim_EventDetails * pstruEventDetails
Definition: Stack.h:837
EVENT_TYPE nEventType
Definition: Stack.h:747
struct stru_NetSim_Packet * pPacket
Definition: Stack.h:754
NETSIM_ID nSubEventType
Definition: Stack.h:757
NETSIM_ID nDeviceId
Definition: Stack.h:750
NETSIM_ID nInterfaceId
Definition: Stack.h:751