22#pragma comment(lib,"NetworkStack.lib")
25#define OPENFLOW_SDN_CONTROLLER_DEFAULT false
26#define OPENFLOW_OPEN_FLOW_ENABLE_DEFAULT false
27#define OPENFLOW_SDN_CONTROLLER_DEVICE_DEFAULT _strdup("unknown")
33 NETSIM_IPAddress clientIP;
34 ptrSOCKETINTERFACE sock;
35 struct stru_clientInfo* next;
36 }SDNCLIENTINFO,*ptrSDNCLIENTINFO;
40 NETSIM_ID controllerId;
41 NETSIM_IPAddress controllerIP;
43 ptrSOCKETINTERFACE sock;
44 }SDNCONTROLLERINFO, *ptrSDNCONTROLLERINFO;
51 }HANDLEINFO, *ptrHANDLEINFO;
58 NETSIM_IPAddress myIP;
60 char* sdnControllerDev;
61 NETSIM_ID sdnControllerId;
65 ptrSDNCONTROLLERINFO controllerInfo;
66 ptrSDNCLIENTINFO clientInfo;
70 ptrHANDLEINFO handleInfo;
71 }OPENFLOW, *ptrOPENFLOW;
72#define GET_OPENFLOW_VAR(d) ((ptrOPENFLOW)(DEVICE_APPVAR(d,APP_PROTOCOL_OPENFLOW)))
73#define SET_OPENFLOW_VAR(d,var) (fn_NetSim_Stack_SetAppProtocolData(d,APP_PROTOCOL_OPENFLOW,var))
75#define OFMSG_OVERHEAD 50
77 typedef enum enumOpenFlowMsgType
79 OFMSGTYPE_COMMAND = APP_PROTOCOL_OPENFLOW * 100 + 1,
90 }OPENFLOWMSG, *ptrOPENFLOWMSG;
93 bool isOPENFLOWConfigured(NETSIM_ID d);
94 NETSIM_IPAddress openFlow_find_client_IP(NETSIM_ID d);
97 void handle_cli_input();
98 char* openFlow_execute_command(
void* handle, NETSIM_ID d, UINT
id,
int* len,
bool* isMore);
99 void openFlow_saveHandle(NETSIM_ID d,
102 ptrHANDLEINFO openFlow_getHandle(NETSIM_ID d,
106 bool isSDNController(NETSIM_ID d);
107 void openFlow_add_new_client(NETSIM_ID ct,
110 ptrSDNCLIENTINFO openFlow_find_clientInfo(NETSIM_ID ct, NETSIM_ID ci);
113 bool fn_NetSim_OPEN_FLOW_SendCommand(NETSIM_ID dest,
117 void openFlow_send_response(NETSIM_ID dev,
122 void openFlow_print_response(NETSIM_ID d,