NetSim Source Code Help
Loading...
Searching...
No Matches
main.h
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
15
16#ifndef main_header_
17#define main_header_
18#ifndef _CRT_SECURE_NO_DEPRECATE
19#define _CRT_SECURE_NO_DEPRECATE
20#endif
21#ifndef _CRT_SECURE_NO_WARNINGS
22#define _CRT_SECURE_NO_WARNINGS
23#endif
24#define _LICENSE_CHECK
25#pragma warning(disable:4459)
26#ifndef _DEBUG
27#pragma warning(disable:4100)
28#endif
29/* Macro definition for memory leak testing. Must use visual studio.*/
30# define _NETSIM_MEMORY_LEAK_TEST_ //Uncomment this line for memory leak testing
31# define _CRTDBG_MAP_ALLOC
32# include <stdio.h>
33# include <stdlib.h>
34# include <math.h>
35# include <string.h>
36# include <errno.h>
37# include <stdint.h>
38#include <stdbool.h>
39#include <direct.h>
40#include<malloc.h>
41#include<assert.h>
42#ifdef _WIN32
43#ifdef _DEBUG
44#include<crtdbg.h>
45#endif
46#include <windows.h>
47#include <conio.h>
48#include <process.h>
49#else
50#include <dlfcn.h>
51#include "Linux.h"
52#endif
53#ifndef _NETSIM_MAIN_H_
54#define _NETSIM_MAIN_H_
55#ifdef __cplusplus
56extern "C" {
57#endif
58/*Global variable specific to OS -- Used for poratability*/
59#ifdef _WIN32
60# include <windows.h>
61#ifndef _MSC_VER
62#define _declspec(dllexport)
63#endif
64# define fnDlError(x,...) ReportError(false,x,__LINE__,__FILE__,1,__VA_ARGS__)
65#define fnSystemError(x,...) ReportError(false,x,__LINE__,__FILE__,1,__VA_ARGS__)
66# define fnNetSimError(x,...) ReportError(false,x,__LINE__,__FILE__,0,__VA_ARGS__)
67#define fnNetSimErrorandStop(x,...) ReportError(true,x,__LINE__,__FILE__,0,__VA_ARGS__)
68static const char pathSeperator[]="\\";
69static const char libext[]=".dll";
70#ifdef _cplusplus
71# define _declspec(dllexport) extern "C" _declspec(dllexport)
72#endif
73#else
74#include <dlfcn.h>
75#include<errno.h>
76# define HINSTANCE void*
77static const char libext[] = ".so";
78#endif
79
80
81#pragma warning(disable:4471)
82
83#ifndef VERSION
84#define VERSION 132
85#endif
86
87#define __CALLBACK__ // Indication of callback function
88#define __IN__ // Indication of Input in function args
89#define __OUT__ // Indication of Output in function args
90
91#include "Memory.h"
92#include "IP_Addressing.h"
93
94#ifndef _NETSIM_IP_ADDRESSING_CODE_
95#pragma comment(lib,"IP_Addressing.lib")
96#endif
97
98/* Typedef declaration of structure */
107typedef struct stru_NetSim_MAC_NW_Interface NetSim_MAC_NW_INTERFACE;
110typedef struct stru_ApplicationInformation NetSim_APPLICATIONINFO;
120
121/* typedef for enumerator */
138typedef enum enum_DeviceType netsimDEVICE_TYPE; //Because windows.h has already have the definition of DEVICE_TYPE
147
148//typedef for netsim special variable type
149#ifndef NETSIM_ID
150 typedef unsigned int NETSIM_ID; //unique id
151#endif
152typedef char* NETSIM_Name; //Unique name
153typedef char* string;
154typedef enum enum_Flag FLAG;
155
156//Definition of version type
157typedef enum
158{
165
166# include "Stack.h"
167# include "Packet.h"
168# include "MetricsWriter.h"
169#define fn_NetSim_LoadAppDllFunction(hsharedlib,path,sharedlibName,funName) fn_NetSim_LoadAppDllFunction_dbg(hsharedlib,path,sharedlibName,funName,__LINE__,__FILE__);
170_declspec(dllexport) FARPROC fn_NetSim_LoadAppDllFunction_dbg(HINSTANCE* hdll, const char* path, const char* dllName, const char* funName, int line, char* file);
171
172# define fn_NetSim_Utilities_LoadSharedlibFunction(hsharedlib,sharedlibName,funName) fn_NetSim_Utilities_LoadSharedlibFunction_dbg(hsharedlib,sharedlibName,funName,__LINE__,__FILE__)
173_declspec(dllexport) FARPROC fn_NetSim_Utilities_LoadSharedlibFunction_dbg(HINSTANCE* hsharedlib,const char* sharedlibName,const char* funName,int line,const char* file);
174
175_declspec(dllexport) int ReportError(bool isStopOnError, const char* msg, int line, const char* file, int flag, ...);
176#pragma warning(disable:4213)
177#define fn_NetSim_Packet_FreePacket(pstruPacket) fn_NetSim_Packet_FreePacket_dbg(&(pstruPacket),__LINE__,__FILE__)
178
179#define fn_NetSim_Packet_AddPacketToList(pstruBuffer,pstruPacket,nInsertionType /* 1- head,2-Tail,3-Order of event time*/) fn_NetSim_Packet_AddPacketToList_dbg(pstruBuffer,pstruPacket,nInsertionType /* 1- head,2-Tail,3-Order of event time*/,__LINE__,__FILE__)
180_declspec(dllexport) int fn_NetSim_Packet_AddPacketToList_dbg(NetSim_BUFFER* pstruBuffer,NetSim_PACKET* pstruPacket, int nInsertionType /* 1- head,2-Tail,3-Order of event time*/,int line,const char* file);
181
182#define fn_NetSim_Packet_CopyPacket(pstruPacket) fn_NetSim_Packet_CopyPacket_dbg(pstruPacket,__LINE__,__FILE__)
183
184#define fn_NetSim_Packet_CopyPacketList(pstruPacket) fn_NetSim_Packet_CopyPacketList_dbg(pstruPacket,__LINE__,__FILE__)
185
186#define fn_NetSim_Packet_CreatePacket(layer) fn_NetSim_Packet_CreatePacket_dbg(layer,__LINE__,__FILE__)
187
188#define fn_NetSim_WritePacketTrace(pstruPacket) fn_NetSim_WritePacketTrace_dbg(pstruPacket,__LINE__,__FILE__)
189
190#ifndef fnpAddEvent
191#define fnpAddEvent(pstruEvent) fnAddEvent_F(pstruEvent,__LINE__,__FILE__)
192#endif
193
194_declspec(dllexport) unsigned long long int fnAddEvent_F(struct stru_NetSim_EventDetails* pstruEvent,int line,const char* file);
195
196_declspec(dllexport) bool fn_NetSim_Stack_RegisterCallBackFunction(int nSubeventId,int (*_fnCallBack)());
197
198_declspec(dllexport) int fn_NetSim_Anim_MoveNode(NETSIM_ID src,double x,double y,double time);
199
200#define ANSI_COLOR_RED "\x1b[31m"
201#define ANSI_COLOR_GREEN "\x1b[32m"
202#define ANSI_COLOR_YELLOW "\x1b[33m"
203#define ANSI_COLOR_BLUE "\x1b[34m"
204#define ANSI_COLOR_MAGENTA "\x1b[35m"
205#define ANSI_COLOR_CYAN "\x1b[36m"
206#define ANSI_COLOR_RESET "\x1b[0m"
207
208#define ANSI_BOLD_TEXT "\x1b[1m"
209
210_declspec(dllexport) bool CHECK_FOR_USER_DLL(const char* dllName);
211
212
213#ifdef _WIN32
214#ifndef _NETSIM_CODE_
215#define printf(x,...) {printf("\n%s:%d: ",__FILE__,__LINE__);printf(x,__VA_ARGS__);}
216#endif
217#endif
218#endif
219
220#ifdef __cplusplus
221}
222#endif
223#endif //_NETSIM_MAIN_H_
unsigned int NETSIM_ID
Definition: Animation.h:45
#define FARPROC
Definition: Linux.h:98
#define _declspec(dllexport)
This function is used to trigger the update.
Definition: Linux.h:41
static const char pathSeperator[5]
Definition: Linux.h:71
enum_Packet_QOS
Definition: Packet.h:87
enum_ServiceType
Definition: Packet.h:70
enum_SuppressionModel
Definition: Packet.h:31
enum_PacketType
Definition: Packet.h:51
enum_Segment
Definition: Packet.h:111
enum_Distribution
Definition: Packet.h:38
enum_PacketPriority
Definition: Packet.h:78
enum_PacketStatus
Definition: Packet.h:100
enum_isConfigured
Definition: Protocol.h:22
enum_LinkMode
Definition: Stack.h:329
enum_SchedulingType
Definition: Stack.h:343
enum_Flag
Definition: Stack.h:75
enum_PhyMedium
Definition: Stack.h:240
enum_NWProtocol
Definition: Stack.h:187
enum_DeviceType
Definition: Stack.h:270
enum_AppProtocol
Definition: Stack.h:150
enum_TrxProtocol
Definition: Stack.h:178
enum_MACProtocol
Definition: Stack.h:205
enum_EventType
Definition: Stack.h:102
enum_LayerType
Definition: Stack.h:92
emum_wireshark_option
Definition: Stack.h:370
enum_TransmissionType
Definition: Stack.h:362
enum_InterfaceType
Definition: Stack.h:248
enum_LinkType
Definition: Stack.h:313
enum_LinkState
Definition: Stack.h:322
enum_SimulationEndType
Definition: Stack.h:337
enum enum_SchedulingType SCHEDULING_TYPE
Definition: main.h:143
enum enum_TransmissionType TRANSMISSION_TYPE
Definition: main.h:144
enum enum_LayerType LAYER_TYPE
Definition: main.h:136
enum enum_LinkMode LINK_MODE
Definition: main.h:140
FARPROC fn_NetSim_Utilities_LoadSharedlibFunction_dbg(HINSTANCE *hsharedlib, const char *sharedlibName, const char *funName, int line, const char *file)
enum enum_MACProtocol MAC_LAYER_PROTOCOL
Definition: main.h:134
#define VERSION
Definition: main.h:84
enum enum_Packet_QOS QUALITY_OF_SERVICE
Definition: main.h:127
enum enum_DeviceType netsimDEVICE_TYPE
Definition: main.h:138
enum enum_isConfigured ISCONFIGURED
Definition: main.h:145
unsigned long long int fnAddEvent_F(struct stru_NetSim_EventDetails *pstruEvent, int line, const char *file)
int fn_NetSim_Anim_MoveNode(NETSIM_ID src, double x, double y, double time)
enum enum_PacketStatus PACKET_STATUS
Definition: main.h:128
enum enum_Distribution DISTRIBUTION
Definition: main.h:122
char * NETSIM_Name
Definition: main.h:152
char * string
Definition: main.h:153
enum enum_ServiceType SERVICE_TYPE
Definition: main.h:125
enum enum_SimulationEndType SIMULATION_END_TYPE
Definition: main.h:142
enum enum_NWProtocol NETWORK_LAYER_PROTOCOL
Definition: main.h:133
enum enum_InterfaceType INTERFACE_TYPE
Definition: main.h:137
enum enum_PacketType PACKET_TYPE
Definition: main.h:123
struct stru_NetSim_Interface * ptrNetSim_DEVICEINTERFACE
Definition: main.h:101
enum enum_PacketPriority PACKET_PRIORITY
Definition: main.h:126
#define HINSTANCE
Definition: main.h:76
int fn_NetSim_Packet_AddPacketToList_dbg(NetSim_BUFFER *pstruBuffer, NetSim_PACKET *pstruPacket, int nInsertionType, int line, const char *file)
FARPROC fn_NetSim_LoadAppDllFunction_dbg(HINSTANCE *hdll, const char *path, const char *dllName, const char *funName, int line, char *file)
struct stru_NetSim_MAC_NW_Interface NetSim_MAC_NW_INTERFACE
Definition: main.h:107
enum enum_Flag FLAG
Definition: main.h:154
static const char libext[]
Definition: main.h:77
bool fn_NetSim_Stack_RegisterCallBackFunction(int nSubeventId, int(*_fnCallBack)())
int ReportError(bool isStopOnError, const char *msg, int line, const char *file, int flag,...)
NETSIM_VERSIONTYPE
Definition: main.h:158
@ NETSIM_STANDARD
Definition: main.h:160
@ NETSIM_DEMO
Definition: main.h:162
@ NETSIM_ACEDEMIC
Definition: main.h:161
@ NETSIM_COMER
Definition: main.h:163
@ NETSIM_PRO
Definition: main.h:159
unsigned int NETSIM_ID
Definition: main.h:150
enum enum_SuppressionModel SUPPRESSION_MODEL
Definition: main.h:124
enum enum_PhyMedium PHYSICAL_LAYER_MEDIUM
Definition: main.h:135
enum enum_Segment PACKET_FRAGMENT
Definition: main.h:129
enum enum_LinkType LINK_TYPE
Definition: main.h:139
enum enum_EventType EVENT_TYPE
Definition: main.h:130
enum enum_TrxProtocol TRANSPORT_LAYER_PROTOCOL
Definition: main.h:132
enum enum_AppProtocol APPLICATION_LAYER_PROTOCOL
Definition: main.h:131
enum emum_wireshark_option WIRESHARK_OPTION
Definition: main.h:146
struct stru_ApplicationInformation NetSim_APPLICATIONINFO
Definition: main.h:110
struct stru_NetSim_Device * ptrNetSim_DEVICE
Definition: main.h:100
enum enum_LinkState LINK_STATE
Definition: main.h:141
bool CHECK_FOR_USER_DLL(const char *dllName)