simclick.h

来自「Click is a modular router toolkit. To us」· C头文件 代码 · 共 115 行

H
115
字号
#ifndef SIMCLICK_H#define SIMCLICK_H/* * simclick.h * * API for sending packets to Click. Mostly intended for use * by a network simulator which wants to use Click to do routing. * */#ifdef __cplusplusextern "C" {#endif/* * Packet types used - generally going to be ethernet, but could * possibly be something else I suppose... */#define SIMCLICK_PTYPE_UNKNOWN 0#define SIMCLICK_PTYPE_ETHER 1#define SIMCLICK_PTYPE_IP 2/* * Not a whole lot to this. We have to create a click router object * and also send packets and trigger events. *//* * This contains per packet data we need to preserve when the packet gets * dragged through click. Heavily biased towards ns-2 right now. */typedef struct {    int id;			/* Simulator ID number for the packet */    int fid;			/* Simulator flow ID number for the packet */    int simtype;		/* Original simulator packet type - useful				 * for morphing between raw and simulator				 * packet types */} simclick_simpacketinfo;/* * Opaque handles for the sim and click instances */typedef struct simclick_node {    void *clickinfo;    struct timeval curtime;} simclick_node_t;int simclick_click_create(simclick_node_t *sim, const char *router_file);int simclick_click_send(simclick_node_t *sim,			int ifid,int type,const unsigned char* data,int len,			simclick_simpacketinfo* pinfo);int simclick_sim_send(simclick_node_t *sim,		      int ifid,int type, const unsigned char* data,int len,		      simclick_simpacketinfo*);void simclick_click_run(simclick_node_t *sim);void simclick_click_kill(simclick_node_t *sim);/* * simclick_click_read_handler will allocate a buffer of adequate length * to receive the handler information. This buffer must be freed * by the caller. If a non-null value for the "memalloc" parameter * is passed in, simclick_click_read_handler will use that function * to allocate the memory. If there's a null value there, "malloc" will * be used by default. The "memparam" parameter is a caller-specified * value which will be passed back to the memory allocation function. */typedef void* (*SIMCLICK_MEM_ALLOC)(size_t,void*);char* simclick_click_read_handler(simclick_node_t *sim,				  const char* elementname,				  const char* handlername,				  SIMCLICK_MEM_ALLOC memalloc,				  void* memparam);int simclick_click_write_handler(simclick_node_t *sim,				 const char* elemname, const char* handlername,				 const char* writestring);/* * We also provide a gettimeofday substitute which utilizes the * state info passed to us by the simulator. */int simclick_gettimeofday(struct timeval* tv);/* * The simulated system also has to provide a few services to click, * notably some way of injecting packets back into the system, * mapping interface names to id numbers, and arranging for click * to execute at a specified time in the future. * We implement */#define SIMCLICK_VERSION		0  // none#define SIMCLICK_SUPPORTS		1  // int call#define SIMCLICK_IFID_FROM_NAME		2  // const char *ifname#define SIMCLICK_IPADDR_FROM_NAME	3  // const char *ifname, char *buf, int len#define SIMCLICK_MACADDR_FROM_NAME	4  // const char *ifname, char *buf, int len#define SIMCLICK_SCHEDULE		5  // struct timeval *when#define SIMCLICK_GET_NODE_NAME		6  // char *buf, int len#define SIMCLICK_IF_READY		7  // int ifid#define SIMCLICK_TRACE			8  // const char *event#define SIMCLICK_GET_NODE_ID		9  // none#define SIMCLICK_GET_NEXT_PKT_ID	10 // none#define SIMCLICK_CHANGE_CHANNEL		11 // int ifid, int channelidint simclick_sim_command(simclick_node_t *sim, int cmd, ...);int simclick_click_command(simclick_node_t *sim, int cmd, ...);#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?