e94e86ab87eae6fcc1d419ebc871953ef121c8b7
[olsrd.git] / src / cfgparser / olsrd_cfgparser.h
1
2
3 #ifndef _OLSRD_CFGPARSER_H
4 #define _OLSRD_CFGPARSER_H
5
6
7 #include "olsr_protocol.h"
8
9 struct olsr_msg_params
10 {
11   float                    emission_interval;
12   float                    validity_time;
13 };
14
15 struct if_config_options
16 {
17   char                     *name;
18   union olsr_ip_addr       ipv4_broadcast;
19   int                      ipv6_addrtype;
20   union olsr_ip_addr       ipv6_multi_site;
21   union olsr_ip_addr       ipv6_multi_glbl;
22   struct olsr_msg_params   hello_params;
23   struct olsr_msg_params   tc_params;
24   struct olsr_msg_params   mid_params;
25   struct olsr_msg_params   hna_params;
26   struct if_config_options *next;
27 };
28
29 struct olsr_if
30 {
31   char                     *name;
32   char                     *config;
33   struct if_config_options *if_options;
34   struct olsr_if           *next;
35 };
36
37 struct hna4_entry
38 {
39   olsr_u32_t               net;
40   olsr_u32_t               netmask;
41   struct hna4_entry        *next;
42 };
43
44 struct hna6_entry
45 {
46   union olsr_ip_addr       net;
47   olsr_u16_t               prefix_len;
48   struct hna6_entry        *next;
49 };
50
51 struct hyst_param
52 {
53   float                    scaling;
54   float                    thr_high;
55   float                    thr_low;
56 };
57
58 struct plugin_entry
59 {
60   char                     *name;
61   struct plugin_entry      *next;
62 };
63
64 /*
65  * The config struct
66  */
67
68 struct olsrd_config
69 {
70   olsr_u8_t                debug_level;
71   olsr_u8_t                ip_version;
72   olsr_u8_t                allow_no_interfaces;
73   olsr_u16_t               tos;
74   olsr_u8_t                auto_willingness;
75   olsr_u8_t                fixed_willingness;
76   olsr_u8_t                open_ipc;
77   olsr_u8_t                use_hysteresis;
78   struct hyst_param        hysteresis_param;
79   float                    pollrate;
80   olsr_u8_t                tc_redundancy;
81   olsr_u8_t                mpr_coverage;
82   struct plugin_entry      *plugins;
83   struct hna4_entry        *hna4_entries;
84   struct hna6_entry        *hna6_entries;
85   struct olsr_if           *interfaces;
86   struct if_config_options *if_options;
87 };
88
89
90 /*
91  * Interface to parser
92  */
93
94 struct olsrd_config *
95 olsrd_parse_cnf(char *);
96
97 void
98 olsrd_free_cnf(struct olsrd_config *);
99
100 void
101 olsrd_print_cnf(struct olsrd_config *);
102
103 int
104 olsrd_write_cnf(struct olsrd_config *, char *);
105
106 #endif