851edafe54ad2efe78f756cde0940c4d0fa1d301
[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 #include "olsr_types.h"
9
10 /* System includes */
11 #include <stdbool.h>
12 #include <stddef.h>
13 #include <OlsrdPudWireFormat/wireFormat.h>
14
15 /*
16  * Global Parameters
17  */
18
19 /** The name of the nodeIdType plugin parameter */
20 #define PUD_NODE_ID_TYPE_NAME                                   "nodeIdType"
21
22 /** The default value of the nodeIdType plugin parameter */
23 #define PUD_NODE_ID_TYPE_DEFAULT                                PUD_NODEIDTYPE_IPV4
24
25 NodeIdType getNodeIdTypeNumber(void);
26 int setNodeIdType(const char *value, void *data,
27                 set_plugin_parameter_addon addon);
28
29 /** The name of the nodeId plugin parameter */
30 #define PUD_NODE_ID_NAME                                                "nodeId"
31
32 unsigned char * getNodeId(void);
33 unsigned char * getNodeIdWithLength(size_t *length);
34 nodeIdBinaryType * getNodeIdBinary(void);
35 int setNodeId(const char *value, void *data, set_plugin_parameter_addon addon);
36
37 /*
38  * RX Parameters
39  */
40
41 /** The name of the receive non-OLSR interfaces plugin parameter */
42 #define PUD_RX_NON_OLSR_IF_NAME                                 "rxNonOlsrIf"
43
44 bool isRxNonOlsrInterface(const char *ifName);
45 int addRxNonOlsrInterface(const char *value, void *data,
46                 set_plugin_parameter_addon addon);
47
48 /** The name of the allowed source IP address plugin parameter */
49 #define PUD_RX_ALLOWED_SOURCE_IP_NAME                   "rxAllowedSourceIpAddress"
50
51 bool isRxAllowedSourceIpAddress(union olsr_sockaddr * sender);
52 int addRxAllowedSourceIpAddress(const char *value, void *data,
53                 set_plugin_parameter_addon addon);
54
55 /** The name of the receive multicast address plugin parameter */
56 #define PUD_RX_MC_ADDR_NAME                                             "rxMcAddr"
57
58 /** The default value of the receive multicast address plugin parameter for IPv4 */
59 #define PUD_RX_MC_ADDR_4_DEFAULT                                "224.0.0.224"
60
61 /** The default value of the receive multicast address plugin parameter for IPv6 */
62 #define PUD_RX_MC_ADDR_6_DEFAULT                                "FF02:0:0:0:0:0:0:1"
63
64 union olsr_sockaddr * getRxMcAddr(void);
65 int
66 setRxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
67
68 /** The name of the receive multicast port plugin parameter */
69 #define PUD_RX_MC_PORT_NAME                                             "rxMcPort"
70
71 /** The default value of the receive multicast port plugin parameter */
72 #define PUD_RX_MC_PORT_DEFAULT                                  2240
73
74 unsigned short getRxMcPort(void);
75 int
76 setRxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
77
78 /** The name of the positionFile plugin parameter */
79 #define PUD_POSFILE_NAME                                                "positionFile"
80
81 char * getPositionFile(void);
82 int setPositionFile(const char *value, void *data, set_plugin_parameter_addon addon);
83
84 /*
85  * TX Parameters
86  */
87
88 /** The name of the transmit non-OLSR interfaces plugin parameter */
89 #define PUD_TX_NON_OLSR_IF_NAME                                 "txNonOlsrIf"
90
91 bool isTxNonOlsrInterface(const char *ifName);
92 int addTxNonOlsrInterface(const char *value, void *data,
93                 set_plugin_parameter_addon addon);
94
95 /** The name of the transmit multicast address plugin parameter */
96 #define PUD_TX_MC_ADDR_NAME                                             "txMcAddr"
97
98 /** The default value of the transmit multicast address plugin parameter fro IPv4*/
99 #define PUD_TX_MC_ADDR_4_DEFAULT                                "224.0.0.224"
100
101 /** The default value of the transmit multicast address plugin parameter for IPv6 */
102 #define PUD_TX_MC_ADDR_6_DEFAULT                                "FF02:0:0:0:0:0:0:1"
103
104 union olsr_sockaddr * getTxMcAddr(void);
105 int
106 setTxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
107
108 /** The name of the transmit multicast port plugin parameter */
109 #define PUD_TX_MC_PORT_NAME                             "txMcPort"
110
111 /** The default value of the transmit multicast port plugin parameter */
112 #define PUD_TX_MC_PORT_DEFAULT                          2240
113
114 unsigned short getTxMcPort(void);
115 int
116 setTxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
117
118 /** The name of the transmit multicast time-to-live plugin parameter */
119 #define PUD_TX_TTL_NAME                                                 "txTtl"
120
121 /** The default value of the transmit multicast time-to-live plugin parameter */
122 #define PUD_TX_TTL_DEFAULT                                              1
123
124 unsigned char getTxTtl(void);
125 int setTxTtl(const char *value, void *data, set_plugin_parameter_addon addon);
126
127 /** The name of the transmit multicast NMEA message prefix plugin parameter */
128 #define PUD_TX_NMEAMESSAGEPREFIX_NAME                   "txNmeaMessagePrefix"
129
130 /** The default value of the transmit multicast NMEA message prefix plugin parameter */
131 #define PUD_TX_NMEAMESSAGEPREFIX_DEFAULT                "NBSX"
132
133 unsigned char * getTxNmeaMessagePrefix(void);
134 int setTxNmeaMessagePrefix(const char *value, void *data,
135                 set_plugin_parameter_addon addon);
136
137 /*
138  * Uplink Parameters
139  */
140
141 /** The name of the uplink address plugin parameter */
142 #define PUD_UPLINK_ADDR_NAME                                    "uplinkAddr"
143
144 /** The default value of the uplink address plugin parameter for IPv4*/
145 #define PUD_UPLINK_ADDR_4_DEFAULT                               "0.0.0.0"
146
147 /** The default value of the uplink address plugin parameter for IPv6 */
148 #define PUD_UPLINK_ADDR_6_DEFAULT                               "0:0:0:0:0:0:0:0"
149
150 bool isUplinkAddrSet(void);
151 union olsr_sockaddr * getUplinkAddr(void);
152 int
153 setUplinkAddr(const char *value, void *data, set_plugin_parameter_addon addon);
154
155 /** The name of the uplink port plugin parameter */
156 #define PUD_UPLINK_PORT_NAME                            "uplinkPort"
157
158 /** The default value of the uplink port plugin parameter */
159 #define PUD_UPLINK_PORT_DEFAULT                         2241
160
161 unsigned short getUplinkPort(void);
162 int
163 setUplinkPort(const char *value, void *data, set_plugin_parameter_addon addon);
164
165 /*
166  * Downlink Parameters
167  */
168
169 /** The name of the downlink port plugin parameter */
170 #define PUD_DOWNLINK_PORT_NAME                          "downlinkPort"
171
172 /** The default value of the downlink port plugin parameter */
173 #define PUD_DOWNLINK_PORT_DEFAULT                       2242
174
175 unsigned short getDownlinkPort(void);
176 int
177 setDownlinkPort(const char *value, void *data, set_plugin_parameter_addon addon);
178
179 /*
180  * OLSR Parameters
181  */
182
183 /** The name of the OLSR multicast time-to-live plugin parameter */
184 #define PUD_OLSR_TTL_NAME                                               "olsrTtl"
185
186 /** The default value of the OLSR multicast time-to-live plugin parameter */
187 #define PUD_OLSR_TTL_DEFAULT                                    64
188
189 unsigned char getOlsrTtl(void);
190 int setOlsrTtl(const char *value, void *data, set_plugin_parameter_addon addon);
191
192 /*
193  * Update Parameters
194  */
195
196 /** The name of the stationary update interval plugin parameter */
197 #define PUD_UPDATE_INTERVAL_STATIONARY_NAME             "updateIntervalStationary"
198
199 /** The default value of the stationary update interval plugin parameter */
200 #define PUD_UPDATE_INTERVAL_STATIONARY_DEFAULT  60
201
202 unsigned long long getUpdateIntervalStationary(void);
203 int setUpdateIntervalStationary(const char *value, void *data,
204                 set_plugin_parameter_addon addon);
205
206 /** The name of the moving update interval plugin parameter */
207 #define PUD_UPDATE_INTERVAL_MOVING_NAME                 "updateIntervalMoving"
208
209 /** The default value of the moving update interval plugin parameter */
210 #define PUD_UPDATE_INTERVAL_MOVING_DEFAULT              5
211
212 unsigned long long getUpdateIntervalMoving(void);
213 int setUpdateIntervalMoving(const char *value, void *data,
214                 set_plugin_parameter_addon addon);
215
216 /** The name of the uplink stationary update interval plugin parameter */
217 #define PUD_UPLINK_UPDATE_INTERVAL_STATIONARY_NAME      "uplinkUpdateIntervalStationary"
218
219 /** The default value of the uplink stationary update interval plugin parameter */
220 #define PUD_UPLINK_UPDATE_INTERVAL_STATIONARY_DEFAULT   180
221
222 unsigned long long getUplinkUpdateIntervalStationary(void);
223 int setUplinkUpdateIntervalStationary(const char *value, void *data,
224                 set_plugin_parameter_addon addon);
225
226 /** The name of the uplink moving update interval plugin parameter */
227 #define PUD_UPLINK_UPDATE_INTERVAL_MOVING_NAME          "uplinkUpdateIntervalMoving"
228
229 /** The default value of the uplink moving update interval plugin parameter */
230 #define PUD_UPLINK_UPDATE_INTERVAL_MOVING_DEFAULT               15
231
232 unsigned long long getUplinkUpdateIntervalMoving(void);
233 int setUplinkUpdateIntervalMoving(const char *value, void *data,
234                 set_plugin_parameter_addon addon);
235
236 /** The name of the gateway determination interval plugin parameter */
237 #define PUD_GATEWAY_DETERMINATION_INTERVAL_NAME                 "gatewayDeterminationInterval"
238
239 /** The default value of the gateway determination interval plugin parameter */
240 #define PUD_GATEWAY_DETERMINATION_INTERVAL_DEFAULT              1
241
242 unsigned long long getGatewayDeterminationInterval(void);
243 int setGatewayDeterminationInterval(const char *value, void *data,
244                 set_plugin_parameter_addon addon);
245
246 /** The name of the moving speed threshold plugin parameter */
247 #define PUD_MOVING_SPEED_THRESHOLD_NAME                 "movingSpeedThreshold"
248
249 /** The default value of the moving speed threshold plugin parameter */
250 #define PUD_MOVING_SPEED_THRESHOLD_DEFAULT              9
251
252 unsigned long long getMovingSpeedThreshold(void);
253 int setMovingSpeedThreshold(const char *value, void *data,
254                 set_plugin_parameter_addon addon);
255
256 /** The name of the moving distance threshold plugin parameter */
257 #define PUD_MOVING_DISTANCE_THRESHOLD_NAME              "movingDistanceThreshold"
258
259 /** The default value of the moving distance threshold plugin parameter */
260 #define PUD_MOVING_DISTANCE_THRESHOLD_DEFAULT   50
261
262 unsigned long long getMovingDistanceThreshold(void);
263 int setMovingDistanceThreshold(const char *value, void *data,
264                 set_plugin_parameter_addon addon);
265
266 /** The name of the DOP multiplier plugin parameter */
267 #define PUD_DOP_MULTIPLIER_NAME         "dopMultiplier"
268
269 /** The default value of the DOP multiplier plugin parameter */
270 #define PUD_DOP_MULTIPLIER_DEFAULT      2.5
271
272 double getDopMultiplier(void);
273 int setDopMultiplier(const char *value, void *data,
274                 set_plugin_parameter_addon addon);
275
276 /** The name of the default HDOP plugin parameter */
277 #define PUD_DEFAULT_HDOP_NAME           "defaultHdop"
278
279 /** The default value of the default HDOP plugin parameter */
280 #define PUD_DEFAULT_HDOP_DEFAULT        50
281
282 unsigned long long getDefaultHdop(void);
283 int setDefaultHdop(const char *value, void *data,
284                 set_plugin_parameter_addon addon);
285
286 /** The name of the default VDOP plugin parameter */
287 #define PUD_DEFAULT_VDOP_NAME           "defaultVdop"
288
289 /** The default value of the default VDOP plugin parameter */
290 #define PUD_DEFAULT_VDOP_DEFAULT        50
291
292 unsigned long long getDefaultVdop(void);
293 int setDefaultVdop(const char *value, void *data,
294                 set_plugin_parameter_addon addon);
295
296 /** The name of the average depth plugin parameter */
297 #define PUD_AVERAGE_DEPTH_NAME                                  "averageDepth"
298
299 /** The default value of the average depth plugin parameter */
300 #define PUD_AVERAGE_DEPTH_DEFAULT                               5
301
302 unsigned long long getAverageDepth(void);
303 int setAverageDepth(const char *value, void *data,
304                 set_plugin_parameter_addon addon);
305
306 /** The name of the hysteresis count to stationary plugin parameter */
307 #define PUD_HYSTERESIS_COUNT_2STAT_NAME                 "hysteresisCountToStationary"
308
309 /** The default value of the hysteresis count to stationary plugin parameter */
310 #define PUD_HYSTERESIS_COUNT_2STAT_DEFAULT              17
311
312 unsigned long long getHysteresisCountToStationary(void);
313 int setHysteresisCountToStationary(const char *value, void *data,
314                 set_plugin_parameter_addon addon);
315
316 /** The name of the hysteresis count to moving plugin parameter */
317 #define PUD_HYSTERESIS_COUNT_2MOV_NAME                  "hysteresisCountToMoving"
318
319 /** The default value of the hysteresis count to moving plugin parameter */
320 #define PUD_HYSTERESIS_COUNT_2MOV_DEFAULT               5
321
322 unsigned long long getHysteresisCountToMoving(void);
323 int setHysteresisCountToMoving(const char *value, void *data,
324                 set_plugin_parameter_addon addon);
325
326 /** The name of the hysteresis count to stationary plugin parameter */
327 #define PUD_GAT_HYSTERESIS_COUNT_2STAT_NAME                     "gatewayHysteresisCountToStationary"
328
329 /** The default value of the hysteresis count to stationary plugin parameter */
330 #define PUD_GAT_HYSTERESIS_COUNT_2STAT_DEFAULT          17
331
332 unsigned long long getGatewayHysteresisCountToStationary(void);
333 int setGatewayHysteresisCountToStationary(const char *value, void *data,
334                 set_plugin_parameter_addon addon);
335
336 /** The name of the hysteresis count to moving plugin parameter */
337 #define PUD_GAT_HYSTERESIS_COUNT_2MOV_NAME                      "GatewayHysteresisCountToMoving"
338
339 /** The default value of the hysteresis count to moving plugin parameter */
340 #define PUD_GAT_HYSTERESIS_COUNT_2MOV_DEFAULT           5
341
342 unsigned long long getGatewayHysteresisCountToMoving(void);
343 int setGatewayHysteresisCountToMoving(const char *value, void *data,
344                 set_plugin_parameter_addon addon);
345
346 /*
347  * Other Plugin Settings
348  */
349
350 /** The name of the deduplication usage plugin parameter */
351 #define PUD_USE_DEDUP_NAME                                              "useDeDup"
352
353 /** The default value of the deduplication usage plugin parameter */
354 #define PUD_USE_DEDUP_DEFAULT                                   true
355
356 bool getUseDeDup(void);
357 int
358 setUseDeDup(const char *value, void *data, set_plugin_parameter_addon addon);
359
360 /** The name of the deduplication depth plugin parameter */
361 #define PUD_DEDUP_DEPTH_NAME                                    "deDupDepth"
362
363 /** The default value of the deduplication depth plugin parameter */
364 #define PUD_DEDUP_DEPTH_DEFAULT                                 256
365
366 unsigned long long getDeDupDepth(void);
367 int
368 setDeDupDepth(const char *value, void *data, set_plugin_parameter_addon addon);
369
370 /** The name of the loopback usage plugin parameter */
371 #define PUD_USE_LOOPBACK_NAME                                   "useLoopback"
372
373 /** The default value of the loopback usage plugin parameter */
374 #define PUD_USE_LOOPBACK_DEFAULT                                false
375
376 bool getUseLoopback(void);
377 int
378 setUseLoopback(const char *value, void *data, set_plugin_parameter_addon addon);
379
380 /*
381  * Check Functions
382  */
383
384 unsigned int checkConfig(void);
385
386 unsigned int checkRunSetup(void);
387
388 #endif /* _PUD_CONFIGURATION_H_ */