8721bb634b36b11df9c0218195b6a3aa0d153a64
[olsrd.git] / lib / pud / src / configuration.h
1 #ifndef _PUD_CONFIGURATION_H_
2 #define _PUD_CONFIGURATION_H_
3
4 /* Plugin includes */
5
6 /* OLSR includes */
7 #include "olsrd_plugin.h"
8
9 /* System includes */
10 #include <stddef.h>
11 #include <stdbool.h>
12 #include <sys/socket.h>
13
14 /*
15  * Utility Functions
16  */
17
18 bool readULL(const char * valueName, const char * value,
19                 unsigned long long * valueNumber);
20
21 /*
22  * Global Parameters
23  */
24
25 /** nodeIdType legal values */
26 typedef enum {
27         /** MAC address, 48 bits, 6 bytes */
28         PUD_NODEIDTYPE_MAC = 0,
29
30         /** MSISDN number, 15 digits, 50 bits, 7 bytes */
31         PUD_NODEIDTYPE_MSISDN = 1,
32
33         /** TETRA number, 17 digits, 57 bits, 8 bytes */
34         PUD_NODEIDTYPE_TETRA = 2,
35
36         /** DNS name, variable length */
37         PUD_NODEIDTYPE_DNS = 3,
38
39         /** IPv4 address, 32 bits, 4 bytes */
40         PUD_NODEIDTYPE_IPV4 = 4,
41
42         /** IPv6 address, 128 bits, 16 bytes */
43         PUD_NODEIDTYPE_IPV6 = 6,
44
45         /** Brandweer number, 7 digits, 24 bits, 3 bytes */
46         PUD_NODEIDTYPE_192 = 192,
47
48         /** Ambulance number, 6 digits, 20 bits, 3 bytes */
49         PUD_NODEIDTYPE_193 = 193,
50
51         /** Number in the range [1, 8191], 4 digits, 13 bits, 2 bytes */
52         PUD_NODEIDTYPE_194 = 194
53 } NodeIdType;
54
55 /** The name of the nodeIdType plugin parameter */
56 #define PUD_NODE_ID_TYPE_NAME                                   "nodeIdType"
57
58 /** The default value of the nodeIdType plugin parameter */
59 #define PUD_NODE_ID_TYPE_DEFAULT                                PUD_NODEIDTYPE_IPV4
60
61 /** The maximum value of the nodeIdType plugin parameter */
62 #define PUD_NODE_ID_TYPE_MAX                                    254
63
64 NodeIdType getNodeIdTypeNumber(void);
65 int setNodeIdType(const char *value, void *data,
66                 set_plugin_parameter_addon addon);
67
68 /** The name of the nodeId plugin parameter */
69 #define PUD_NODE_ID_NAME                                                "nodeId"
70
71 unsigned char * getNodeId(void);
72 unsigned char * getNodeIdWithLength(size_t *length);
73 int setNodeId(const char *value, void *data, set_plugin_parameter_addon addon);
74
75 /*
76  * RX Parameters
77  */
78
79 /** The name of the receive non-OLSR interfaces plugin parameter */
80 #define PUD_RX_NON_OLSR_IF_NAME                                 "rxNonOlsrIf"
81
82 bool isRxNonOlsrInterface(const char *ifName);
83 int addRxNonOlsrInterface(const char *value, void *data,
84                 set_plugin_parameter_addon addon);
85
86 /** The name of the allowed source IP address plugin parameter */
87 #define PUD_RX_ALLOWED_SOURCE_IP_NAME                   "rxAllowedSourceIpAddress"
88
89 bool isRxAllowedSourceIpAddress(struct sockaddr * sender);
90 int addRxAllowedSourceIpAddress(const char *value, void *data,
91                 set_plugin_parameter_addon addon);
92
93 /** The name of the receive multicast address plugin parameter */
94 #define PUD_RX_MC_ADDR_NAME                                             "rxMcAddr"
95
96 /** The default value of the receive multicast address plugin parameter for IPv4 */
97 #define PUD_RX_MC_ADDR_4_DEFAULT                                "224.0.0.224"
98
99 /** The default value of the receive multicast address plugin parameter for IPv6 */
100 #define PUD_RX_MC_ADDR_6_DEFAULT                                "FF02:0:0:0:0:0:0:1"
101
102 union olsr_sockaddr * getRxMcAddr(void);
103 int
104 setRxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
105
106 /** The name of the receive multicast port plugin parameter */
107 #define PUD_RX_MC_PORT_NAME                                             "rxMcPort"
108
109 /** The default value of the receive multicast port plugin parameter */
110 #define PUD_RX_MC_PORT_DEFAULT                                  2240
111
112 unsigned short getRxMcPort(void);
113 int
114 setRxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
115
116 /*
117  * TX Parameters
118  */
119
120 /** The name of the transmit non-OLSR interfaces plugin parameter */
121 #define PUD_TX_NON_OLSR_IF_NAME                                 "txNonOlsrIf"
122
123 bool isTxNonOlsrInterface(const char *ifName);
124 int addTxNonOlsrInterface(const char *value, void *data,
125                 set_plugin_parameter_addon addon);
126
127 /** The name of the transmit multicast address plugin parameter */
128 #define PUD_TX_MC_ADDR_NAME                                             "txMcAddr"
129
130 /** The default value of the transmit multicast address plugin parameter fro IPv4*/
131 #define PUD_TX_MC_ADDR_4_DEFAULT                                "224.0.0.224"
132
133 /** The default value of the transmit multicast address plugin parameter for IPv6 */
134 #define PUD_TX_MC_ADDR_6_DEFAULT                                "FF02:0:0:0:0:0:0:1"
135
136 union olsr_sockaddr * getTxMcAddr(void);
137 int
138 setTxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
139
140 /** The name of the transmit multicast port plugin parameter */
141 #define PUD_TX_MC_PORT_NAME                             "txMcPort"
142
143 /** The default value of the transmit multicast port plugin parameter */
144 #define PUD_TX_MC_PORT_DEFAULT                          2240
145
146 unsigned short getTxMcPort(void);
147 int
148 setTxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
149
150 /** The name of the transmit multicast time-to-live plugin parameter */
151 #define PUD_TX_TTL_NAME                                                 "txTtl"
152
153 /** The default value of the transmit multicast time-to-live plugin parameter */
154 #define PUD_TX_TTL_DEFAULT                                              1
155
156 unsigned char getTxTtl(void);
157 int setTxTtl(const char *value, void *data, set_plugin_parameter_addon addon);
158
159 /** The name of the transmit multicast NMEA message prefix plugin parameter */
160 #define PUD_TX_NMEAMESSAGEPREFIX_NAME                   "txNmeaMessagePrefix"
161
162 /** The default value of the transmit multicast NMEA message prefix plugin parameter */
163 #define PUD_TX_NMEAMESSAGEPREFIX_DEFAULT                "NBSX"
164
165 unsigned char * getTxNmeaMessagePrefix(void);
166 int setTxNmeaMessagePrefix(const char *value, void *data,
167                 set_plugin_parameter_addon addon);
168
169 /*
170  * OLSR Parameters
171  */
172
173 /** The name of the OLSR multicast time-to-live plugin parameter */
174 #define PUD_OLSR_TTL_NAME                                               "olsrTtl"
175
176 /** The default value of the OLSR multicast time-to-live plugin parameter */
177 #define PUD_OLSR_TTL_DEFAULT                                    64
178
179 unsigned char getOlsrTtl(void);
180 int setOlsrTtl(const char *value, void *data, set_plugin_parameter_addon addon);
181
182 /*
183  * Update Parameters
184  */
185
186 /** The name of the stationary update interval plugin parameter */
187 #define PUD_UPDATE_INTERVAL_STATIONARY_NAME             "updateIntervalStationary"
188
189 /** The default value of the stationary update interval plugin parameter */
190 #define PUD_UPDATE_INTERVAL_STATIONARY_DEFAULT  60
191
192 unsigned long long getUpdateIntervalStationary(void);
193 int setUpdateIntervalStationary(const char *value, void *data,
194                 set_plugin_parameter_addon addon);
195
196 /** The name of the moving update interval plugin parameter */
197 #define PUD_UPDATE_INTERVAL_MOVING_NAME                 "updateIntervalMoving"
198
199 /** The default value of the moving update interval plugin parameter */
200 #define PUD_UPDATE_INTERVAL_MOVING_DEFAULT              5
201
202 unsigned long long getUpdateIntervalMoving(void);
203 int setUpdateIntervalMoving(const char *value, void *data,
204                 set_plugin_parameter_addon addon);
205
206 /** The name of the moving speed threshold plugin parameter */
207 #define PUD_MOVING_SPEED_THRESHOLD_NAME                 "movingSpeedThreshold"
208
209 /** The default value of the moving speed threshold plugin parameter */
210 #define PUD_MOVING_SPEED_THRESHOLD_DEFAULT              5
211
212 unsigned long long getMovingSpeedThreshold(void);
213 int setMovingSpeedThreshold(const char *value, void *data,
214                 set_plugin_parameter_addon addon);
215
216 /** The name of the moving distance threshold plugin parameter */
217 #define PUD_MOVING_DISTANCE_THRESHOLD_NAME              "movingDistanceThreshold"
218
219 /** The default value of the moving distance threshold plugin parameter */
220 #define PUD_MOVING_DISTANCE_THRESHOLD_DEFAULT   50
221
222 unsigned long long getMovingDistanceThreshold(void);
223 int setMovingDistanceThreshold(const char *value, void *data,
224                 set_plugin_parameter_addon addon);
225
226 /** The name of the default HDOP plugin parameter */
227 #define PUD_DEFAULT_HDOP_NAME           "defaultHdop"
228
229 /** The default value of the default HDOP plugin parameter */
230 #define PUD_DEFAULT_HDOP_DEFAULT        50
231
232 unsigned long long getDefaultHdop(void);
233 int setDefaultHdop(const char *value, void *data,
234                 set_plugin_parameter_addon addon);
235
236 /** The name of the default VDOP plugin parameter */
237 #define PUD_DEFAULT_VDOP_NAME           "defaultVdop"
238
239 /** The default value of the default VDOP plugin parameter */
240 #define PUD_DEFAULT_VDOP_DEFAULT        50
241
242 unsigned long long getDefaultVdop(void);
243 int setDefaultVdop(const char *value, void *data,
244                 set_plugin_parameter_addon addon);
245
246 /** The name of the average depth plugin parameter */
247 #define PUD_AVERAGE_DEPTH_NAME                                  "averageDepth"
248
249 /** The default value of the average depth plugin parameter */
250 #define PUD_AVERAGE_DEPTH_DEFAULT                               5
251
252 unsigned long long getAverageDepth(void);
253 int setAverageDepth(const char *value, void *data,
254                 set_plugin_parameter_addon addon);
255
256 /** The name of the hysteresis count to stationary plugin parameter */
257 #define PUD_HYSTERESIS_COUNT_2STAT_NAME                 "hysteresisCountToStationary"
258
259 /** The default value of the hysteresis count to stationary plugin parameter */
260 #define PUD_HYSTERESIS_COUNT_2STAT_DEFAULT              17
261
262 unsigned long long getHysteresisCountToStationary(void);
263 int setHysteresisCountToStationary(const char *value, void *data,
264                 set_plugin_parameter_addon addon);
265
266 /** The name of the hysteresis count to moving plugin parameter */
267 #define PUD_HYSTERESIS_COUNT_2MOV_NAME                  "hysteresisCountToMoving"
268
269 /** The default value of the hysteresis count to moving plugin parameter */
270 #define PUD_HYSTERESIS_COUNT_2MOV_DEFAULT               5
271
272 unsigned long long getHysteresisCountToMoving(void);
273 int setHysteresisCountToMoving(const char *value, void *data,
274                 set_plugin_parameter_addon addon);
275
276 /*
277  * Other Plugin Settings
278  */
279
280 /** The name of the deduplication usage plugin parameter */
281 #define PUD_USE_DEDUP_NAME                                              "useDeDup"
282
283 /** The default value of the deduplication usage plugin parameter */
284 #define PUD_USE_DEDUP_DEFAULT                                   true
285
286 bool getUseDeDup(void);
287 int
288 setUseDeDup(const char *value, void *data, set_plugin_parameter_addon addon);
289
290 /** The name of the deduplication depth plugin parameter */
291 #define PUD_DEDUP_DEPTH_NAME                                    "deDupDepth"
292
293 /** The default value of the deduplication depth plugin parameter */
294 #define PUD_DEDUP_DEPTH_DEFAULT                                 56
295
296 unsigned long long getDeDupDepth(void);
297 int
298 setDeDupDepth(const char *value, void *data, set_plugin_parameter_addon addon);
299
300 /** The name of the loopback usage plugin parameter */
301 #define PUD_USE_LOOPBACK_NAME                                   "useLoopback"
302
303 /** The default value of the loopback usage plugin parameter */
304 #define PUD_USE_LOOPBACK_DEFAULT                                false
305
306 bool getUseLoopback(void);
307 int
308 setUseLoopback(const char *value, void *data, set_plugin_parameter_addon addon);
309
310 /*
311  * Check Functions
312  */
313
314 unsigned int checkConfig(void);
315
316 unsigned int checkRunSetup(void);
317
318 #endif /* _PUD_CONFIGURATION_H_ */