Added the olsr_bool type, using TRUE and FALSE instead of UP and DOWN
[olsrd.git] / src / olsr_cfg.h
1 /*
2  * OLSR ad-hoc routing table management protocol config parser
3  * Copyright (C) 2004 Andreas T√łnnesen (andreto@olsr.org)
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: olsr_cfg.h,v 1.4 2004/11/03 09:22:59 kattemat Exp $
23  *
24  */
25
26
27 #ifndef _OLSRD_CFGPARSER_H
28 #define _OLSRD_CFGPARSER_H
29
30 #include "olsr_protocol.h"
31
32 /* Default valuse not declared in olsr_protocol.h */
33 #define DEF_POLLRATE       0.1
34 #define DEF_WILL_AUTO      TRUE
35 #define DEF_ALLOW_NO_INTS  TRUE
36 #define DEF_TOS            16
37 #define DEF_DEBUGLVL       1
38 #define DEF_OPEN_IPC       FALSE
39 #define DEF_USE_HYST       TRUE
40
41 #ifndef IPV6_ADDR_SITELOCAL
42 #define IPV6_ADDR_SITELOCAL    0x0040U
43 #endif
44
45
46 #ifdef MAKELIB
47
48 struct interface 
49 {
50   int foo;
51 };
52
53 #else 
54
55 #ifdef MAKEBIN
56
57 struct interface 
58 {
59   int foo;
60 };
61
62 #else
63
64 /* Part of olsrd */
65
66 #include "interfaces.h"
67
68 #endif
69
70 #endif
71
72 struct olsr_msg_params
73 {
74   float                    emission_interval;
75   float                    validity_time;
76 };
77
78 struct if_config_options
79 {
80   union olsr_ip_addr       ipv4_broadcast;
81   int                      ipv6_addrtype;
82   union olsr_ip_addr       ipv6_multi_site;
83   union olsr_ip_addr       ipv6_multi_glbl;
84   struct olsr_msg_params   hello_params;
85   struct olsr_msg_params   tc_params;
86   struct olsr_msg_params   mid_params;
87   struct olsr_msg_params   hna_params;
88   struct if_config_options *next;
89 };
90
91
92
93 struct olsr_if
94 {
95   char                     *name;
96   char                     *config;
97   int                      index;
98   olsr_bool                configured;
99   struct interface         *interf;
100   struct if_config_options *cnf;
101   struct olsr_if           *next;
102 };
103
104 struct hna4_entry
105 {
106   union olsr_ip_addr       net;
107   union olsr_ip_addr       netmask;
108   struct hna4_entry        *next;
109 };
110
111 struct hna6_entry
112 {
113   union olsr_ip_addr       net;
114   olsr_u16_t               prefix_len;
115   struct hna6_entry        *next;
116 };
117
118 struct hyst_param
119 {
120   float                    scaling;
121   float                    thr_high;
122   float                    thr_low;
123 };
124
125 struct plugin_param
126 {
127   char                     *key;
128   char                     *value;
129   struct plugin_param      *next;
130 };
131
132 struct plugin_entry
133 {
134   char                     *name;
135   struct plugin_param      *params;
136   struct plugin_entry      *next;
137 };
138
139 /*
140  * The config struct
141  */
142
143 struct olsrd_config
144 {
145   int                      debug_level;
146   int                      ip_version;
147   olsr_bool                allow_no_interfaces;
148   olsr_u16_t               tos;
149   olsr_bool                willingness_auto;
150   olsr_u8_t                willingness;
151   olsr_bool                open_ipc;
152   olsr_bool                use_hysteresis;
153   struct hyst_param        hysteresis_param;
154   float                    pollrate;
155   olsr_u8_t                tc_redundancy;
156   olsr_u8_t                mpr_coverage;
157   struct plugin_entry      *plugins;
158   struct hna4_entry        *hna4_entries;
159   struct hna6_entry        *hna6_entries;
160   struct olsr_if           *interfaces;
161   olsr_u16_t               ifcnt;
162 };
163
164
165 /*
166  * Interface to parser
167  */
168
169 struct olsrd_config *
170 olsrd_parse_cnf(char *);
171
172 void
173 olsrd_free_cnf(struct olsrd_config *);
174
175 void
176 olsrd_print_cnf(struct olsrd_config *);
177
178 int
179 olsrd_write_cnf(struct olsrd_config *, char *);
180
181 struct if_config_options *
182 get_default_if_config(void);
183
184 struct olsrd_config *
185 olsrd_get_default_cnf(void);
186
187 #endif