Removed GW tunneling code
[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.27 2004/11/17 19:21:41 kattemat Exp $
23  *
24  */
25
26 #ifndef _OLSR_DEFS
27 #define _OLSR_DEFS
28
29 /* Common includes */
30 #include <sys/time.h>
31 #include <sys/socket.h>
32 #include <netinet/in.h>
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 #include "log.h"
41 #include "olsr_protocol.h"
42 #include "process_routes.h" /* Needed for rt_entry */
43 #include "net.h" /* IPaddr -> string conversions is used by everyone */
44 #include "olsr.h" /* Everybody uses theese */
45 #include "olsr_cfg.h"
46
47 #if defined USE_LINK_QUALITY
48 #include "lq_packet.h"
49 #endif
50
51 #define VERSION "0.4.8-pre"
52 #define SOFTWARE_VERSION "olsr.org - " VERSION
53
54 #define OLSRD_CONF_FILE_NAME "olsrd.conf"
55 #define OLSRD_GLOBAL_CONF_FILE "/etc/" OLSRD_CONF_FILE_NAME
56
57 #define HOPCNT_MAX              16      /* maximum hops number */
58 #define MAXMESSAGESIZE          1500    /* max broadcast size */
59 #define UDP_IP_HDRSIZE          28
60
61 #define OLSR_SELECT_TIMEOUT     2       /* The timeout for the main select loop */
62
63 #define MAX_IFS                 32
64
65
66 /* Debug helper macro */
67 #ifdef DEBUG
68 #define debug(format,args...) \
69    olsr_printf(1, "%s (%s:%d): ", __func__, __FILE__, __LINE__); \
70    olsr_printf(1, format, ##args);
71 #endif
72
73
74 /*
75  * Global olsrd configuragtion
76  */
77
78 struct olsrd_config *olsr_cnf;
79
80 /*
81  * Generic address list elem
82  */
83 struct addresses 
84 {
85   union olsr_ip_addr address;
86   struct addresses *next;
87 };
88
89
90 int exit_value; /* Global return value for process termination */
91
92
93 /* Timer data */
94 struct timeval now;             /* current idea of time */
95 struct tm *nowtm;               /* current idea of time (in tm) */
96
97 char ipv6_buf[100];             /* buffer for IPv6 inet_htop */
98
99 olsr_bool disp_pack_in;               /* display incoming packet content? */
100 olsr_bool disp_pack_out;               /* display outgoing packet content? */
101
102 int llinfo;
103
104 olsr_bool del_gws;
105
106 /*
107  * Timer values
108  */
109
110 extern float will_int;
111 extern float dup_hold_time;
112 extern float max_jitter;
113
114 size_t ipsize;
115
116 /*
117  * Address of this hosts OLSR interfaces
118  * and main address of this node
119  * and number of OLSR interfaces on this host
120  */
121 union olsr_ip_addr main_addr;
122 /*
123  * OLSR UPD port
124  */
125
126 int olsr_udp_port;
127
128 /* The socket used for all ioctls */
129 int ioctl_s;
130
131 /* routing socket */
132
133 #if defined __FreeBSD__ || defined __MacOSX__
134 int rts;
135 #endif
136
137 float max_tc_vtime;
138
139 struct timeval fwdtimer[MAX_IFS];       /* forwarding timer */
140
141 extern struct timeval hold_time_fwd;
142
143 struct sockaddr_in6 null_addr6;      /* Address used as Originator Address IPv6 */
144
145 int minsize;
146
147 olsr_bool changes;                /* is set if changes occur in MPRS set */ 
148
149 /* TC empty message sending */
150 extern struct timeval send_empty_tc;
151
152
153 /* Used by everyone */
154
155 extern int
156 olsr_printf(int, char *, ...);
157
158 /*
159  *IPC functions
160  *These are moved to a plugin soon
161  * soon... duh!
162  */
163
164 int
165 ipc_init(void);
166
167 int
168 ipc_input(int);
169
170 int
171 shutdown_ipc(void);
172
173 int
174 ipc_output(struct olsr *);
175
176 int
177 ipc_send_net_info(void);
178
179 int
180 ipc_route_send_rtentry(union olsr_ip_addr*, union olsr_ip_addr *, int, int, char *);
181
182
183
184
185 #endif