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