PUD: introduce getNodeIdAsNumber
[olsrd.git] / lib / pud / src / configuration.h
1 #ifndef _PUD_CONFIGURATION_H_
2 #define _PUD_CONFIGURATION_H_
3
4 /* Plugin includes */
5 #include "wireFormat.h"
6
7 /* OLSR includes */
8 #include "olsrd_plugin.h"
9
10 /* System includes */
11 #include <stdbool.h>
12 #include <sys/socket.h>
13
14 /*
15  * Global Parameters
16  */
17
18 /** The name of the nodeIdType plugin parameter */
19 #define PUD_NODE_ID_TYPE_NAME                                   "nodeIdType"
20
21 /** The default value of the nodeIdType plugin parameter */
22 #define PUD_NODE_ID_TYPE_DEFAULT                                PUD_NODEIDTYPE_IPV4
23
24 /** The maximum value of the nodeIdType plugin parameter */
25 #define PUD_NODE_ID_TYPE_MAX                                    254
26
27 NodeIdType getNodeIdTypeNumber(void);
28 int setNodeIdType(const char *value, void *data,
29                 set_plugin_parameter_addon addon);
30
31 /** The name of the nodeId plugin parameter */
32 #define PUD_NODE_ID_NAME                                                "nodeId"
33
34 unsigned char * getNodeId(void);
35 bool getNodeIdAsNumber(unsigned long long * value);
36 unsigned char * getNodeIdWithLength(size_t *length);
37 int setNodeId(const char *value, void *data, set_plugin_parameter_addon addon);
38
39 /*
40  * RX Parameters
41  */
42
43 /** The name of the receive non-OLSR interfaces plugin parameter */
44 #define PUD_RX_NON_OLSR_IF_NAME                                 "rxNonOlsrIf"
45
46 bool isRxNonOlsrInterface(const char *ifName);
47 int addRxNonOlsrInterface(const char *value, void *data,
48                 set_plugin_parameter_addon addon);
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(struct 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 /*
81  * TX Parameters
82  */
83
84 /** The name of the transmit non-OLSR interfaces plugin parameter */
85 #define PUD_TX_NON_OLSR_IF_NAME                                 "txNonOlsrIf"
86
87 bool isTxNonOlsrInterface(const char *ifName);
88 int addTxNonOlsrInterface(const char *value, void *data,
89                 set_plugin_parameter_addon addon);
90
91 /** The name of the transmit multicast address plugin parameter */
92 #define PUD_TX_MC_ADDR_NAME                                             "txMcAddr"
93
94 /** The default value of the transmit multicast address plugin parameter fro IPv4*/
95 #define PUD_TX_MC_ADDR_4_DEFAULT                                "224.0.0.224"
96
97 /** The default value of the transmit multicast address plugin parameter for IPv6 */
98 #define PUD_TX_MC_ADDR_6_DEFAULT                                "FF02:0:0:0:0:0:0:1"
99
100 union olsr_sockaddr * getTxMcAddr(void);
101 int
102 setTxMcAddr(const char *value, void *data, set_plugin_parameter_addon addon);
103
104 /** The name of the transmit multicast port plugin parameter */
105 #define PUD_TX_MC_PORT_NAME                             "txMcPort"
106
107 /** The default value of the transmit multicast port plugin parameter */
108 #define PUD_TX_MC_PORT_DEFAULT                          2240
109
110 unsigned short getTxMcPort(void);
111 int
112 setTxMcPort(const char *value, void *data, set_plugin_parameter_addon addon);
113
114 /** The name of the transmit multicast time-to-live plugin parameter */
115 #define PUD_TX_TTL_NAME                                                 "txTtl"
116
117 /** The default value of the transmit multicast time-to-live plugin parameter */
118 #define PUD_TX_TTL_DEFAULT                                              1
119
120 unsigned char getTxTtl(void);
121 int setTxTtl(const char *value, void *data, set_plugin_parameter_addon addon);
122
123 /** The name of the transmit multicast NMEA message prefix plugin parameter */
124 #define PUD_TX_NMEAMESSAGEPREFIX_NAME                   "txNmeaMessagePrefix"
125
126 /** The default value of the transmit multicast NMEA message prefix plugin parameter */
127 #define PUD_TX_NMEAMESSAGEPREFIX_DEFAULT                "NBSX"
128
129 unsigned char * getTxNmeaMessagePrefix(void);
130 int setTxNmeaMessagePrefix(const char *value, void *data,
131                 set_plugin_parameter_addon addon);
132
133 /*
134  * OLSR Parameters
135  */
136
137 /** The name of the OLSR multicast time-to-live plugin parameter */
138 #define PUD_OLSR_TTL_NAME                                               "olsrTtl"
139
140 /** The default value of the OLSR multicast time-to-live plugin parameter */
141 #define PUD_OLSR_TTL_DEFAULT                                    64
142
143 unsigned char getOlsrTtl(void);
144 int setOlsrTtl(const char *value, void *data, set_plugin_parameter_addon addon);
145
146 /*
147  * Update Parameters
148  */
149
150 /** The name of the stationary update interval plugin parameter */
151 #define PUD_UPDATE_INTERVAL_STATIONARY_NAME             "updateIntervalStationary"
152
153 /** The default value of the stationary update interval plugin parameter */
154 #define PUD_UPDATE_INTERVAL_STATIONARY_DEFAULT  60
155
156 unsigned long long getUpdateIntervalStationary(void);
157 int setUpdateIntervalStationary(const char *value, void *data,
158                 set_plugin_parameter_addon addon);
159
160 /** The name of the moving update interval plugin parameter */
161 #define PUD_UPDATE_INTERVAL_MOVING_NAME                 "updateIntervalMoving"
162
163 /** The default value of the moving update interval plugin parameter */
164 #define PUD_UPDATE_INTERVAL_MOVING_DEFAULT              5
165
166 unsigned long long getUpdateIntervalMoving(void);
167 int setUpdateIntervalMoving(const char *value, void *data,
168                 set_plugin_parameter_addon addon);
169
170 /** The name of the moving speed threshold plugin parameter */
171 #define PUD_MOVING_SPEED_THRESHOLD_NAME                 "movingSpeedThreshold"
172
173 /** The default value of the moving speed threshold plugin parameter */
174 #define PUD_MOVING_SPEED_THRESHOLD_DEFAULT              5
175
176 unsigned long long getMovingSpeedThreshold(void);
177 int setMovingSpeedThreshold(const char *value, void *data,
178                 set_plugin_parameter_addon addon);
179
180 /** The name of the moving distance threshold plugin parameter */
181 #define PUD_MOVING_DISTANCE_THRESHOLD_NAME              "movingDistanceThreshold"
182
183 /** The default value of the moving distance threshold plugin parameter */
184 #define PUD_MOVING_DISTANCE_THRESHOLD_DEFAULT   50
185
186 unsigned long long getMovingDistanceThreshold(void);
187 int setMovingDistanceThreshold(const char *value, void *data,
188                 set_plugin_parameter_addon addon);
189
190 /** The name of the DOP multiplier plugin parameter */
191 #define PUD_DOP_MULTIPLIER_NAME         "dopMultiplier"
192
193 /** The default value of the DOP multiplier plugin parameter */
194 #define PUD_DOP_MULTIPLIER_DEFAULT      1.0
195
196 double getDopMultiplier(void);
197 int setDopMultiplier(const char *value, void *data,
198                 set_plugin_parameter_addon addon);
199
200 /** The name of the default HDOP plugin parameter */
201 #define PUD_DEFAULT_HDOP_NAME           "defaultHdop"
202
203 /** The default value of the default HDOP plugin parameter */
204 #define PUD_DEFAULT_HDOP_DEFAULT        50
205
206 unsigned long long getDefaultHdop(void);
207 int setDefaultHdop(const char *value, void *data,
208                 set_plugin_parameter_addon addon);
209
210 /** The name of the default VDOP plugin parameter */
211 #define PUD_DEFAULT_VDOP_NAME           "defaultVdop"
212
213 /** The default value of the default VDOP plugin parameter */
214 #define PUD_DEFAULT_VDOP_DEFAULT        50
215
216 unsigned long long getDefaultVdop(void);
217 int setDefaultVdop(const char *value, void *data,
218                 set_plugin_parameter_addon addon);
219
220 /** The name of the average depth plugin parameter */
221 #define PUD_AVERAGE_DEPTH_NAME                                  "averageDepth"
222
223 /** The default value of the average depth plugin parameter */
224 #define PUD_AVERAGE_DEPTH_DEFAULT                               5
225
226 unsigned long long getAverageDepth(void);
227 int setAverageDepth(const char *value, void *data,
228                 set_plugin_parameter_addon addon);
229
230 /** The name of the hysteresis count to stationary plugin parameter */
231 #define PUD_HYSTERESIS_COUNT_2STAT_NAME                 "hysteresisCountToStationary"
232
233 /** The default value of the hysteresis count to stationary plugin parameter */
234 #define PUD_HYSTERESIS_COUNT_2STAT_DEFAULT              17
235
236 unsigned long long getHysteresisCountToStationary(void);
237 int setHysteresisCountToStationary(const char *value, void *data,
238                 set_plugin_parameter_addon addon);
239
240 /** The name of the hysteresis count to moving plugin parameter */
241 #define PUD_HYSTERESIS_COUNT_2MOV_NAME                  "hysteresisCountToMoving"
242
243 /** The default value of the hysteresis count to moving plugin parameter */
244 #define PUD_HYSTERESIS_COUNT_2MOV_DEFAULT               5
245
246 unsigned long long getHysteresisCountToMoving(void);
247 int setHysteresisCountToMoving(const char *value, void *data,
248                 set_plugin_parameter_addon addon);
249
250 /*
251  * Other Plugin Settings
252  */
253
254 /** The name of the deduplication usage plugin parameter */
255 #define PUD_USE_DEDUP_NAME                                              "useDeDup"
256
257 /** The default value of the deduplication usage plugin parameter */
258 #define PUD_USE_DEDUP_DEFAULT                                   true
259
260 bool getUseDeDup(void);
261 int
262 setUseDeDup(const char *value, void *data, set_plugin_parameter_addon addon);
263
264 /** The name of the deduplication depth plugin parameter */
265 #define PUD_DEDUP_DEPTH_NAME                                    "deDupDepth"
266
267 /** The default value of the deduplication depth plugin parameter */
268 #define PUD_DEDUP_DEPTH_DEFAULT                                 56
269
270 unsigned long long getDeDupDepth(void);
271 int
272 setDeDupDepth(const char *value, void *data, set_plugin_parameter_addon addon);
273
274 /** The name of the loopback usage plugin parameter */
275 #define PUD_USE_LOOPBACK_NAME                                   "useLoopback"
276
277 /** The default value of the loopback usage plugin parameter */
278 #define PUD_USE_LOOPBACK_DEFAULT                                false
279
280 bool getUseLoopback(void);
281 int
282 setUseLoopback(const char *value, void *data, set_plugin_parameter_addon addon);
283
284 /*
285  * Check Functions
286  */
287
288 unsigned int checkConfig(void);
289
290 unsigned int checkRunSetup(void);
291
292 #endif /* _PUD_CONFIGURATION_H_ */