New configfile parser and configuration scheme integrated
[olsrd.git] / src / defs.h
1 /*
2  * OLSR ad-hoc routing table management protocol
3  * Copyright (C) 2004 Andreas T√łnnesen (andreto@ifi.uio.no)
4  *
5  * This file is part of the olsr.org OLSR daemon.
6  *
7  * olsr.org is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * olsr.org is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with olsr.org; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20  * 
21  * 
22  * $Id: defs.h,v 1.15 2004/10/18 13:13:36 kattemat Exp $
23  *
24  */
25
26 #ifndef _OLSR_DEFS
27 #define _OLSR_DEFS
28
29
30 #include <sys/time.h>
31 #include <net/route.h>
32
33 #include <stdio.h>
34 #include <stdlib.h>
35 #include <string.h>
36 #include <unistd.h>
37 #include <errno.h>
38 #include <time.h>
39
40 #define UP             1
41 #define DOWN           0
42
43 #include "log.h"
44 #include "olsr_protocol.h"
45 #include "process_routes.h" /* Needed for rt_entry */
46 #include "net.h" /* IPaddr -> string conversions is used by everyone */
47 #include "olsr.h" /* Everybody uses theese */
48 #include "olsrd_cfgparser.h"
49
50 #define VERSION "0.4.8-pre"
51 #define SOFTWARE_VERSION "olsr.org - " VERSION
52
53 #define HOPCNT_MAX              16      /* maximum hops number */
54 #define MAXMESSAGESIZE          1500    /* max broadcast size */
55 #define UDP_IP_HDRSIZE          28
56
57 #define OLSR_SELECT_TIMEOUT     2       /* The timeout for the main select loop */
58
59 #define MAX_IFS                 32
60
61
62 /* Debug helper macro */
63 #ifdef DEBUG
64 #define debug(format,args...) \
65    olsr_printf(1, "%s (%s:%d): ", __func__, __FILE__, __LINE__); \
66    olsr_printf(1, format, ##args);
67 #endif
68
69
70 /*
71  * Global olsrd configuragtion
72  */
73
74 struct olsrd_config *olsr_cnf;
75
76 /*
77  * Address list
78  */
79 struct addresses 
80 {
81   union olsr_ip_addr address;
82   struct addresses *next;
83 };
84
85
86 int exit_value; /* Global return value for process termination */
87
88
89 /* Timer data */
90 struct timeval now;             /* current idea of time */
91 struct tm *nowtm;               /* current idea of time (in tm) */
92
93 char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
94
95 int disp_pack_in;               /* display incoming packet content? */
96 int disp_pack_out;               /* display outgoing packet content? */
97
98
99 int use_ipc; /* Should we use the ipc socket for the front-end */
100
101 int llinfo;
102
103 int inet_tnl_added; /* If Internet gateway tunnel is added */
104 int use_tunnel; /* Use Internet gateway tunneling */
105 int gw_tunnel; /* Work as Internet gateway */
106
107 /*
108  * Timer values
109  */
110
111 extern float will_int;
112 extern float dup_hold_time;
113 extern float max_jitter;
114
115 size_t ipsize;
116
117 /*
118  * Address of this hosts OLSR interfaces
119  * and main address of this node
120  * and number of OLSR interfaces on this host
121  */
122 union olsr_ip_addr main_addr;
123 int nbinterf;
124
125 int sending_tc;
126
127 /*
128  * OLSR UPD port
129  */
130
131 int olsr_udp_port;
132
133 /* Timeout multipliers */
134
135 int neighbor_timeout_mult;
136 int topology_timeout_mult;
137 int neighbor_timeout_mult_nw;
138 int mid_timeout_mult;
139 int hna_timeout_mult;
140
141 /* The socket used for all ioctls */
142
143 int ioctl_s;
144
145 float max_tc_vtime;
146
147 struct timeval fwdtimer[MAX_IFS];       /* forwarding timer */
148
149 extern struct timeval hold_time_fwd;
150
151 extern struct sockaddr_in6 null_addr6;
152
153
154 extern int del_gws;
155 extern int inet_gw; /* Are we an internet gateway? */
156
157 extern int minsize;
158
159
160 extern struct hna_entry *hna_old;
161
162
163
164 extern struct ip_tunnel_parm ipt;
165 extern union olsr_ip_addr tnl_addr; /* The gateway address if inet_tnl_added==1 */
166
167 olsr_u8_t changes;                /* is set if changes occur in MPRS set */ 
168
169 extern float                  topology_hold_time, neighbor_hold_time;
170
171
172 /* TC empty message sending */
173 extern struct timeval send_empty_tc;
174
175
176 /* Used by everyone */
177
178 extern int
179 olsr_printf(int, char *, ...);
180
181 /*
182  *IPC functions
183  *These are moved to a plugin soon
184  */
185
186 int
187 ipc_init(void);
188
189 int
190 ipc_input(int);
191
192 int
193 shutdown_ipc(void);
194
195 int
196 ipc_output(struct olsr *);
197
198 int
199 ipc_send_net_info(void);
200
201 int
202 ipc_route_send_rtentry(union olsr_kernel_route *, int, char *);
203
204
205
206
207 #endif