19#define SIMCLICK_PTYPE_UNKNOWN 0
20#define SIMCLICK_PTYPE_ETHER 1
21#define SIMCLICK_PTYPE_IP 2
38} simclick_simpacketinfo;
44typedef struct simclick_node {
46 struct timeval curtime;
49int simclick_click_create(simclick_node_t *sim,
const char *router_file);
51int simclick_click_send(simclick_node_t *sim,
52 int ifid,
int type,
const unsigned char* data,
int len,
53 simclick_simpacketinfo* pinfo);
54int simclick_sim_send(simclick_node_t *sim,
55 int ifid,
int type,
const unsigned char* data,
int len,
56 simclick_simpacketinfo*);
58void simclick_click_run(simclick_node_t *sim);
60void simclick_click_kill(simclick_node_t *sim);
71typedef void* (*SIMCLICK_MEM_ALLOC)(size_t,
void*);
72char* simclick_click_read_handler(simclick_node_t *sim,
73 const char* elementname,
74 const char* handlername,
75 SIMCLICK_MEM_ALLOC memalloc,
78int simclick_click_write_handler(simclick_node_t *sim,
79 const char* elemname,
const char* handlername,
80 const char* writestring);
86int simclick_gettimeofday(
struct timeval* tv);
95#define SIMCLICK_VERSION 0
96#define SIMCLICK_SUPPORTS 1
97#define SIMCLICK_IFID_FROM_NAME 2
98#define SIMCLICK_IPADDR_FROM_NAME 3
99#define SIMCLICK_MACADDR_FROM_NAME 4
100#define SIMCLICK_SCHEDULE 5
101#define SIMCLICK_GET_NODE_NAME 6
102#define SIMCLICK_IF_READY 7
103#define SIMCLICK_TRACE 8
104#define SIMCLICK_GET_NODE_ID 9
105#define SIMCLICK_GET_NEXT_PKT_ID 10
106#define SIMCLICK_CHANGE_CHANNEL 11
107#define SIMCLICK_IF_PROMISC 12
108#define SIMCLICK_IPPREFIX_FROM_NAME 13
109#define SIMCLICK_GET_RANDOM_INT 14
110#define SIMCLICK_GET_DEFINES 15
112int simclick_sim_command(simclick_node_t *sim,
int cmd, ...);
113int simclick_click_command(simclick_node_t *sim,
int cmd, ...);