24#ifndef _NETSIM_APPLICATION_H_
25#define _NETSIM_APPLICATION_H_
32#define roundoff(d) ((long)(d+0.5))
36#define VANET_APP_RANDOM_WAIT_TIME_DEFAULT 5*MILLISECOND
37#define RANDOM_STARTUP_DELAY 0.1*SECOND
39unsigned int nApplicationCount;
54 event_APP_START = PROTOCOL_APPLICATION * 100 + 1,
71 packet_HTTP_REQUEST = PROTOCOL_APPLICATION * 100 + 1,
72 packet_COAP_REQUEST = PROTOCOL_APPLICATION * 100 + 2,
88 NETSIM_ID* nDestinationId;
89 NETSIM_ID nSourcePort;
94#define SOCKETINFO_ALLOC() (struct stru_SocketInfo*)list_alloc(sizeof(struct stru_SocketInfo),offsetof(struct stru_SocketInfo,ele))
101 TRANSMISSION_TYPE nTransmissionType;
102 APPLICATION_TYPE nAppType;
103 unsigned int nSourceCount;
104 unsigned int nDestCount;
105 NETSIM_ID* sourceList;
109 double* dGenerationRate;
111 QUALITY_OF_SERVICE qos;
112 TRANSPORT_LAYER_PROTOCOL trxProtocol;
113 APPLICATION_LAYER_PROTOCOL protocol;
114 NETSIM_ID applicationInstanceCount;
116 unsigned long long int nPacketId;
123 ENCRYPTION encryption;
128 unsigned int* recvPort;
136 double prevPacketLatency;
137 double prevStartTime;
139 UINT64 firstPacketReceived;
145 double lastPacketTime;
146 double lastPacketSize;
147 double prevLastPacketTime;
151 NETSIM_IPAddress multicastDestIP;
152}APPLICATION_INFO, * ptrAPPLICATION_INFO;
153ptrAPPLICATION_INFO* applicationInfo;
158 DISTRIBUTION packetSizeDistribution;
160 DISTRIBUTION IATDistribution;
167 DISTRIBUTION packetSizeDistribution;
169 DISTRIBUTION IATDistribution;
171 double dRandomWaitTime;
172}APP_BSM_INFO, * PAPP_BSM_INFO;
177 DISTRIBUTION packetSizeDistribution;
179 DISTRIBUTION IATDistribution;
181 SERVICE_TYPE nServiceType;
182 SUPPRESSION_MODEL nSuppressionModel;
194 VidModel_INDEPENDENT_GAUSSIAN = 1,
195 VidModel_FIRST_ORDER_DEPENDENT_GAUSSIAN,
198 VidModel_MPEG1_Low_Res,
199 VidModel_MPEG1_High_Res,
200 VidModel_MPEG2_Low_Res,
201 VidModel_MPEG2_High_Res,
202 VidModel_BUFFERED_VIDEO_STREAMING_1,
203 VidModel_BUFFERED_VIDEO_STREAMING_2,
204 VidModel_BUFFERED_VIDEO_STREAMING_3,
205 VidModel_BUFFERED_VIDEO_STREAMING_4,
206 VidModel_BUFFERED_VIDEO_STREAMING_5,
207 VidModel_BUFFERED_VIDEO_STREAMING_6,
210static const char* strVIDEOMODEL[] = {
"",
"INDEPENDENT_GAUSSIAN",
211"FIRST_ORDER_DEPENDENT_GAUSSIAN",
"H_261",
"H_263",
"MPEG1_Low_Res",
212"MPEG1_High_Res",
"MPEG2_Low_Res",
"MPEG2_High_Res",
"BUFFERED_VIDEO_STREAMING_1",
213"BUFFERED_VIDEO_STREAMING_2",
"BUFFERED_VIDEO_STREAMING_3",
214"BUFFERED_VIDEO_STREAMING_4",
"BUFFERED_VIDEO_STREAMING_5",
215"BUFFERED_VIDEO_STREAMING_6",
"Unknown" };
220 VIDEOMODEL nVidModel;
229 DISTRIBUTION packetSizeDistribution;
230 double* dPacketSizeArgs;
234 DISTRIBUTION IATDistribution;
243 NETSIM_ID nDestinationId;
244 NETSIM_ID* nSourceId;
245 NETSIM_ID nSourcePort;
246 NETSIM_ID nDestinationPort;
247 NETSIM_IPAddress* realSourceIP;
248 NETSIM_IPAddress realDestIP;
249 NETSIM_IPAddress* simSourceIP;
250 NETSIM_IPAddress simDestIP;
261 DISTRIBUTION pageIATDistribution;
262 unsigned int pageCount;
264 DISTRIBUTION pageSizeDistribution;
286 DISTRIBUTION pageIATDistribution;
288 DISTRIBUTION pageSizeDistribution;
290 bool multicastResponse;
291 int variableResponseTime;
295 double ackRandomFactor;
309 DISTRIBUTION durationDistribution;
311 DISTRIBUTION sizeDistribution;
318 NetSim_PACKET* packet;
319 unsigned int nSeederCount;
320 NETSIM_ID* nDeviceIds;
326 unsigned int yetToReceiveCount;
333 DISTRIBUTION fizeSizeDistribution;
336 unsigned int nPieceCount;
337 NetSim_PACKET** pieceList;
338 SEEDER_LIST** seederList;
339 PEER_LIST** peerList;
344 DISTRIBUTION callDurationDistribution;
345 double dCallDuration;
346 DISTRIBUTION callIATDistribution;
349 double** dCallEndTime;
350 NetSim_PACKET*** nextPacket;
351 APP_VOICE_INFO VoiceInfo;
353 unsigned long long int** nEventId;
354 unsigned long long int** nAppoutevent;
355 int(*fn_BlockCall)(ptrAPPLICATION_INFO appInfo, NETSIM_ID nSourceId, NETSIM_ID nDestinationId,
double time);
362 ptrAPPLICATION_INFO appInfo;
365#include "NetSim_Plot.h"
367bool nApplicationThroughputPlotFlag;
368char* szApplicationThroughputPlotVal;
369bool nApplicationThroughputPlotRealTime;
370PNETSIMPLOT* applicationThroughputPlots;
373NetSim_PACKET* fn_NetSim_Application_GeneratePacket(ptrAPPLICATION_INFO info,
374 double ldArrivalTime,
377 NETSIM_ID* nDestination,
378 unsigned long long int nPacketId,
379 APPLICATION_TYPE nAppType,
380 QUALITY_OF_SERVICE nQOS,
381 unsigned int sourcePort,
382 unsigned int destPort);
384int fn_NetSim_Application_GenerateNextPacket(ptrAPPLICATION_INFO appInfo,
387 NETSIM_ID* nDestination,
391_declspec(dllexport)
int fnDistribution(DISTRIBUTION nDistributionType,
double* fDistOut,
392 unsigned long* uSeed,
unsigned long* uSeed1,
double* args);
395_declspec(dllexport)
int fnRandomNo(
long lm,
double* fRandNo,
unsigned long* uSeed,
unsigned long* uSeed1);
398int fn_NetSim_Application_StartHTTPAPP(ptrAPPLICATION_INFO appInfo,
double time);
399int fn_NetSim_Application_ConfigureHTTPTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
400int fn_NetSim_Application_HTTP_ProcessRequest(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* pstruPacket);
403int fn_NetSim_Application_ConfigureInteractiveGamingTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
404int fn_NetSim_Application_StartInteractiveGamingULAPP(ptrAPPLICATION_INFO appInfo,
double time);
405int fn_NetSim_Application_StartInteractiveGamingDLAPP(ptrAPPLICATION_INFO appInfo,
double time);
406int fn_NetSim_Application_InteractiveGamingUL_GenerateNextPacket(ptrAPPLICATION_INFO appInfo, NetSim_PACKET* pstruPacket,
double time);
407int fn_NetSim_Application_InteractiveGamingDL_GenerateNextPacket(ptrAPPLICATION_INFO appInfo, NetSim_PACKET* pstruPacket,
double time);
410int fn_NetSim_Application_StartCOAPAPP(ptrAPPLICATION_INFO appInfo,
double time);
411int fn_NetSim_Application_ConfigureCOAPTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
412int fn_NetSim_Application_COAP_ProcessRequest(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* pstruPacket);
415int fn_NetSim_Application_StartVideoAPP(ptrAPPLICATION_INFO appInfo,
double time);
416int fn_NetSim_Application_ConfigureVideoTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
417_declspec(dllexport)
int fn_NetSim_TrafficGenerator_Video(APP_VIDEO_INFO* info,
420 unsigned long* uSeed,
421 unsigned long* uSeed1);
424int fn_NetSim_TrafficGenerator_MPEGVideo(APP_VIDEO_INFO* info,
427 unsigned long* uSeed,
428 unsigned long* uSeed1);
429int fn_NetSim_Application_ConfigureMPEGVideo(APP_VIDEO_INFO* info,
void* xmlNetSimNode);
432int fn_NetSim_Application_StartVoiceAPP(ptrAPPLICATION_INFO appInfo,
double time);
433int fn_NetSim_Application_ConfigureVoiceTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
434_declspec(dllexport)
int fn_NetSim_TrafficGenerator_Voice(APP_VOICE_INFO* info,
437 unsigned long* uSeed,
438 unsigned long* uSeed1);
441int fn_NetSim_Application_P2P_GenerateFile(ptrAPPLICATION_INFO appInfo);
442int fn_NetSim_Application_P2P_InitSeederList(ptrAPPLICATION_INFO appInfo);
443int fn_NetSim_Application_P2P_InitPeers(ptrAPPLICATION_INFO appInfo);
444int fn_NetSim_Application_P2P_SendNextPiece(ptrAPPLICATION_INFO appInfo, NETSIM_ID destination,
double time);
445int fn_NetSim_Application_StartP2PAPP(ptrAPPLICATION_INFO appInfo,
double time);
446int fn_NetSim_Application_ConfigureP2PTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
447int fn_NetSim_Application_P2P_MarkReceivedPacket(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* pstruPacket);
450int fn_NetSim_Application_StartEmailAPP(ptrAPPLICATION_INFO appInfo,
double time);
451int fn_NetSim_Application_ConfigureEmailTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
452ptrAPPLICATION_INFO fn_NetSim_Application_Email_GenerateNextPacket(DETAIL* detail, NETSIM_ID nSourceId, NETSIM_ID nDestinationId,
double time);
453ptrAPPLICATION_INFO get_email_app_info(
void* detail);
456int fn_NetSim_Application_StartDataAPP(ptrAPPLICATION_INFO appInfo,
double time);
457int fn_NetSim_Application_ConfigureDataTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
458int fn_NetSim_Application_ConfigureDatabaseTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
459int fn_NetSim_Application_ConfigureFTPTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
460_declspec(dllexport)
int fn_NetSim_TrafficGenerator_Custom(APP_DATA_INFO* info,
463 unsigned long* uSeed,
464 unsigned long* uSeed1,
465 unsigned long* uSeed2,
466 unsigned long* uSeed3);
469int fn_NetSim_Application_ErlangCall_StartCall(NetSim_EVENTDETAILS* pstruEventDetails);
470int fn_NetSim_Application_ErlangCall_EndCall(NetSim_EVENTDETAILS* pstruEventDetails);
471int fn_NetSim_Application_StartErlangCallAPP(ptrAPPLICATION_INFO appInfo,
double time);
472int fn_NetSim_Application_ConfigureErlangCallTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
475int fn_NetSim_Application_ConfigureEmulationTraffic(ptrAPPLICATION_INFO appInfo,
void* xmlNetSimNode);
476void fn_NetSim_Emulation_StartApplication(ptrAPPLICATION_INFO appInfo);
479int fn_NetSim_Application_StartBSM(ptrAPPLICATION_INFO appInfo,
double time);
480int fn_NetSim_Application_BSM(PAPP_BSM_INFO info,
483 unsigned long* uSeed,
484 unsigned long* uSeed1,
485 unsigned long* uSeed2,
486 unsigned long* uSeed3);
487bool add_sae_j2735_payload(NetSim_PACKET* packet, ptrAPPLICATION_INFO info);
488void process_saej2735_packet(NetSim_PACKET* packet);
491void add_multicast_route(ptrAPPLICATION_INFO info);
492void join_multicast_group(ptrAPPLICATION_INFO info,
double time);
495_declspec(dllexport)
int fn_NetSim_Application_Init_F();
496_declspec(dllexport)
int fn_NetSim_Application_Configure_F(
void** var);
497_declspec(dllexport)
int fn_NetSim_Application_Metrics_F(PMETRICSWRITER metricsWriter);
498int fn_NetSim_App_RestartApplication();
499_declspec(dllexport)
int fn_NetSim_Application_Plot(NetSim_PACKET* pstruPacket);
500PACKET_TYPE fn_NetSim_Application_GetPacketTypeBasedOnApplicationType(APPLICATION_TYPE nAppType);
501ptrSOCKETINTERFACE fnGetSocket(NETSIM_ID nAppId,
503 NETSIM_ID nSourcePort,
504 NETSIM_ID nDestPort);
507void free_app_metrics(ptrAPPLICATION_INFO appInfo);
508void appmetrics_src_add(ptrAPPLICATION_INFO appInfo, _In_ NetSim_PACKET* packet);
509void appmetrics_dest_add(ptrAPPLICATION_INFO appInfo, NetSim_PACKET* packet, NETSIM_ID dest);
510int fn_NetSim_Application_Metrics_F(PMETRICSWRITER metricsWriter);
513void fnCreatePort(ptrAPPLICATION_INFO info);
514int fnCreateSocketBuffer(ptrAPPLICATION_INFO appInfo);
515void P2P_create_socket(ptrAPPLICATION_INFO appInfo, NETSIM_ID src, NETSIM_ID dest);
516void Interactive_Gaming_createUL_socket(ptrAPPLICATION_INFO appInfo, NETSIM_ID src, NETSIM_ID dest);
517void Interactive_Gaming_createDL_socket(ptrAPPLICATION_INFO appInfo, NETSIM_ID src, NETSIM_ID dest);
519int fn_NetSim_Add_DummyPayload(NetSim_PACKET* packet, ptrAPPLICATION_INFO);
522char xor_encrypt(
char ch,
long key);
523int aes256(
char* str,
int* len);
524int des(
char* buf,
int* len);
527void handle_app_out();
530void init_application_log();
531void print_application_log(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* pstruPacket);
532void close_application_log();
533bool get_protocol_log_status(
char* logname);
534void update_latency();
537void init_application_generation_log();
538double get_generation_rate(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* packet);
539void close_application_generation_log();
540void print_application_generation_log(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* packet);
541double calculate_generation_rate(ptrAPPLICATION_INFO pstruappinfo, NetSim_PACKET* packet);
Structure for Data information such as packet size and inter arrival time,this is applicable for Vane...
Structure to store the COAP application information.
Structure for Erlang_call application.
Structure for Data information such as packet size and inter arrival time,this is applicable for cust...
Structure to store email application information.
Structure to store the emulation application information.
Structure to store the HTTP application information.
Structure to store application information.
Structure to store the Interactive Gaming application information.
Structure for Seeder list of peer_to_peer traffic.
Structure fot peer_to_peer application.
structure to store the video application information
Structure for voice information such as packet size, inter arrival time and service type,...
Structure for peer list of peer_to_peer traffic.
Structure to store socket information.