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