d61ad6d0d7ae4ea96e0f07ff74b9f0b71ce955a9
[olsrd.git] / src / cfgparser / olsrd_cfgparser.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: olsrd_cfgparser.h,v 1.2 2004/10/16 23:17:48 kattemat Exp $
23  *
24  */
25
26
27 #ifndef _OLSRD_CFGPARSER_H
28 #define _OLSRD_CFGPARSER_H
29
30
31 #include "olsr_protocol.h"
32
33 struct olsr_msg_params
34 {
35   float                    emission_interval;
36   float                    validity_time;
37 };
38
39 struct if_config_options
40 {
41   char                     *name;
42   union olsr_ip_addr       ipv4_broadcast;
43   int                      ipv6_addrtype;
44   union olsr_ip_addr       ipv6_multi_site;
45   union olsr_ip_addr       ipv6_multi_glbl;
46   struct olsr_msg_params   hello_params;
47   struct olsr_msg_params   tc_params;
48   struct olsr_msg_params   mid_params;
49   struct olsr_msg_params   hna_params;
50   struct if_config_options *next;
51 };
52
53 struct olsr_if
54 {
55   char                     *name;
56   char                     *config;
57   struct if_config_options *if_options;
58   struct olsr_if           *next;
59 };
60
61 struct hna4_entry
62 {
63   olsr_u32_t               net;
64   olsr_u32_t               netmask;
65   struct hna4_entry        *next;
66 };
67
68 struct hna6_entry
69 {
70   union olsr_ip_addr       net;
71   olsr_u16_t               prefix_len;
72   struct hna6_entry        *next;
73 };
74
75 struct hyst_param
76 {
77   float                    scaling;
78   float                    thr_high;
79   float                    thr_low;
80 };
81
82 struct plugin_entry
83 {
84   char                     *name;
85   struct plugin_entry      *next;
86 };
87
88 /*
89  * The config struct
90  */
91
92 struct olsrd_config
93 {
94   olsr_u8_t                debug_level;
95   olsr_u8_t                ip_version;
96   olsr_u8_t                allow_no_interfaces;
97   olsr_u16_t               tos;
98   olsr_u8_t                auto_willingness;
99   olsr_u8_t                fixed_willingness;
100   olsr_u8_t                open_ipc;
101   olsr_u8_t                use_hysteresis;
102   struct hyst_param        hysteresis_param;
103   float                    pollrate;
104   olsr_u8_t                tc_redundancy;
105   olsr_u8_t                mpr_coverage;
106   struct plugin_entry      *plugins;
107   struct hna4_entry        *hna4_entries;
108   struct hna6_entry        *hna6_entries;
109   struct olsr_if           *interfaces;
110   struct if_config_options *if_options;
111 };
112
113
114 /*
115  * Interface to parser
116  */
117
118 struct olsrd_config *
119 olsrd_parse_cnf(char *);
120
121 void
122 olsrd_free_cnf(struct olsrd_config *);
123
124 void
125 olsrd_print_cnf(struct olsrd_config *);
126
127 int
128 olsrd_write_cnf(struct olsrd_config *, char *);
129
130 #endif