NetSim Source Code Help v14.4
All 13 Components
 
Loading...
Searching...
No Matches
CLI.h
1#pragma once
2
3#include "CLIInterface.h"
4
5#pragma comment(lib,"NetworkStack.lib")
6#ifndef NETSIM_ID
7#define NETSIM_ID UINT
8#endif
9
10#define DEFAULT_PROMPT "NetSim"
11//Default command list
12#define CMD_CHANGEPROMPT "CHANGEPROMPT"
13#define CMD_STOP "STOP"
14#define CMD_CONTINUE "CONTINUE"
15#define CMD_PAUSE "PAUSE"
16#define CMD_PAUSEAT "PAUSEAT"
17#define CMD_EXIT "EXIT"
18#define CMD_ACLCONFIG "ACLCONFIG"
19
20void free_commandArray(ptrCOMMANDARRAY c);
21
22typedef enum enum_clientType
23{
24 CLIENTTYPE_NONE,
25 CLIENTTYPE_FILE,
26 CLIENTTYPE_SOCKET,
27 CLIENTTYPE_STRING,
28}CLIENTTYPE;
29
30typedef enum
31{
32 HT_NONE,
33 HT_DEVICE,
34 HT_CMD,
35}HT;
36typedef struct stru_headingInfo
37{
38 char* name;
39 HT headingType;
40}HEADINGINFO,*ptrHEADINGINFO;
41
42typedef struct stru_fileClientInfo
43{
44 char* inputFile;
45 FILE* fpInputFile;
46 char* outputFile;
47 FILE* fpOutputFile;
48}FILECLIENTINFO, *ptrFILECLIENTINFO;
49
50typedef struct stru_sockClientInfo
51{
52 SOCKET clientSocket;
53
54 //Receive Thread info
55 HANDLE clientRecvHandle;
56 DWORD clientRecvId;
57
58 //Sync variable
59 bool iswait;
60 bool dontUseMe;
61}SOCKCLIENTINFO, *ptrSOCKCLIENTINFO;
62
64{
65 char* buffer;
66 UINT len;
67}STRINGCLIENTINFO, *ptrSTRINGCLIENTINFO;
68
69typedef struct stru_clientInfo
70{
71 CLIENTTYPE clientType;
72 union client
73 {
74 SOCKCLIENTINFO sockClient;
75 FILECLIENTINFO fileClient;
76 STRINGCLIENTINFO stringClient;
77 }CLIENT;
78
79 NETSIM_ID deviceId;
80 char* deviceName;
81
82 char* promptString;
83
84 bool isMultResp;
85 bool(*multResp)(void*, char*, int, bool);
86 void* multRespArg;
87 struct stru_clientInfo* next;
88}CLIENTINFO, *ptrCLIENTINFO;
89
90typedef struct str_cli_handle
91{
92 ptrCOMMANDARRAY cmdArray;
93 ptrCLIENTINFO clientInfo;
94}*ptrCLIHANDLE;
95#define CLIHANDLE ptrCLIHANDLE
96
97void* add_new_socket_client(SOCKET s, char* name);
98
99void process_command(ptrCLIENTINFO clientInfo, char* command, int len);
100void send_to_socket(ptrCLIENTINFO info, char* buf, int len);
101void write_to_file(ptrCLIENTINFO info, char* msg, int len);
102
103//
104void send_message(ptrCLIENTINFO info, char* msg, ...);
105
106//Simulation process
107void cli_stop_simulation(ptrCLIENTINFO info);
108void cli_pause_simulation(ptrCLIENTINFO info);
109void cli_continue_simulation(ptrCLIENTINFO info);
110void cli_pause_simulation_at(ptrCLIENTINFO info, double time);
111
112//Command
113bool validate_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command);
114void cli_clear_prompt(ptrCLIENTINFO info);
115void execute_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, NETSIM_ID d);
116void pass_to_SDNModule(ptrCLIENTINFO info, ptrCOMMANDARRAY command);
117
118// Route Command
119bool validate_route_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index);
120void execute_route_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index, NETSIM_ID d);
121
122//ACL Command
123bool validate_acl_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index);
124void execute_acl_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index, NETSIM_ID d);
125void execute_aclconfig_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index, NETSIM_ID d);
126bool validate_aclconfig_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index);
127void execute_prompt_aclconfig_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index, NETSIM_ID d);
128
129//Ping command
130bool validate_ping_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index);
131void execute_ping_command(ptrCLIENTINFO info, ptrCOMMANDARRAY command, int index, NETSIM_ID d);
132
133//CLI Handle
134CLIHANDLE FORM_CLI_HANDLE(ptrCOMMANDARRAY cmd,
135 ptrCLIENTINFO info);
136
137int fn_NetSim_CLI_HandleTimerEvent();
138
139ptrCOMMANDARRAY get_commandArray(char *text);
140bool isCommandAsDeviceName(char* name);
141
142//File Client
143void set_fileClientInfo(ptrCLIENTINFO info);
144ptrCLIENTINFO get_fileClientInfo();
145void read_file_and_execute(FILE* fp);
146
147//String client
148void add_to_string(ptrCLIENTINFO info, char* sendMsg, int len);