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