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