blob: b1b279f851357479d9de449c78553b8b8546c75e [file] [log] [blame]
akmhoque8fdd6412012-12-04 15:05:33 -06001#ifndef _NLSR_H_
2#define _NLSR_H_
3
4
5#define LSDB_SYNCH_INTERVAL 300
6#define INTEREST_RETRY 3
7#define INTEREST_RESEND_TIME 15
8#define NLSR_LOCKED 1
9#define NLSR_UNLOCKED 0
10#define LSA_REFRESH_TIME 1800
11#define ROUTER_DEAD_INTERVAL 3600
12#define MULTI_PATH_FACE_NUM 0
13
14#define LINK_METRIC 10
15
16#define NAME_LSA_VALID 1
17#define NAME_LSA_INVALID 0
18
akmhoquea37b52c2012-12-14 11:16:36 -060019#define API_PORT 9999
akmhoque8fdd6412012-12-04 15:05:33 -060020
21
22struct name_prefix
23{
24 char *name;
25 int length;
26};
27
28struct linkStateDatabase
29{
30 struct hashtb *name_lsdb;
31 struct hashtb *adj_lsdb;
akmhoqueed418f32013-01-30 12:25:04 -060032 struct hashtb *cor_lsdb;
33
akmhoque8fdd6412012-12-04 15:05:33 -060034 char *lsdb_version;
35};
36
37struct pending_interest
38{
39 char *int_name;
40 int timed_out;
41};
42
43struct nlsr
44{
45
46 struct ccn_closure in_interest;
47 struct ccn_closure in_content;
48
49 struct ccns_name_closure *closure;
50
51 struct ccns_slice *slice;
52 struct ccns_handle *ccns;
53
54 struct ccn_schedule *sched;
55 struct ccn_scheduled_event *event;
56 struct ccn_scheduled_event *event_send_lsdb_interest;
57 struct ccn_scheduled_event *event_send_info_interest;
58 struct ccn_scheduled_event *event_build_name_lsa;
59 struct ccn_scheduled_event *event_build_adj_lsa;
60 struct ccn_scheduled_event *event_calculate_route;
61
62 struct hashtb *adl;
63 struct hashtb *npl;
64 struct hashtb *pit_alsa;
65 struct hashtb *map;
66 struct hashtb *rev_map;
67 struct hashtb *npt;
68 struct hashtb *routing_table;
69
akmhoque09c0afa2012-12-14 09:27:00 -060070
akmhoque8fdd6412012-12-04 15:05:33 -060071 struct linkStateDatabase *lsdb;
72
73 struct ccn *ccn;
74 char *router_name;
75
76
77
78 int is_synch_init;
79 long int nlsa_id;
80 int adj_build_flag;
81 long int adj_build_count;
82 int is_build_adj_lsa_sheduled;
83 int is_send_lsdb_interest_scheduled;
84 int is_route_calculation_scheduled;
85
86 long int lsdb_synch_interval;
87 int interest_retry;
88 long int interest_resend_time;
89 long int lsa_refresh_time;
90 long int router_dead_interval;
91 long int multi_path_face_num;
92 char *logDir;
93 int detailed_logging;
94 int debugging;
95
96 int semaphor;
97
98 int nlsr_api_server_sock_fd;
99 fd_set readfds;
100 int api_port;
101
102 char *topo_prefix;
103 char *slice_prefix;
akmhoque09c0afa2012-12-14 09:27:00 -0600104
105 int is_hyperbolic_calc;
akmhoqueed418f32013-01-30 12:25:04 -0600106 double cor_r;
107 double cor_theta;
akmhoque596f7082013-02-04 13:34:13 -0600108
109 int tunnel_type;
akmhoqueed418f32013-01-30 12:25:04 -0600110
akmhoque8fdd6412012-12-04 15:05:33 -0600111
112};
113
114struct nlsr *nlsr;
115
116void process_command_ccnneighbor(char *command);
117void process_command_ccnname(char *command);
118void process_command_lsdb_synch_interval(char *command);
119void process_command_interest_retry(char *command);
120void process_command_interest_resend_time(char *command);
121void process_conf_command(char *command);
122int readConfigFile(const char *filename);
123
124void nlsr_lock(void);
125void nlsr_unlock(void);
126
127int init_nlsr(void);
128void nlsr_destroy( void );
129void nlsr_stop_signal_handler(int sig);
130
131#endif