release: minor improvements to the release script
[olsrd.git] / CHANGELOG
1 * The versions of the following plugins have changed:
2   - jsoninfo    :   0.0 -->   1.1
3   - nameservice :   0.3 -->   0.4
4   - netjson     :   1.0 -->   1.1
5   - pud         : 2.0.0 --> 3.0.0 (including its extra libraries)
6   - txtinfo     :   0.1 -->   1.1
7
8 * All info plugins (jsoninfo, netjson and txtinfo) now support a number of
9   request prefixes:
10   - /http : forces output WITH    http headers, temporarily overriding the
11             configured "httpheaders" value.
12   - /plain: forces output WITHOUT http headers, temporarily overriding the
13             configured "httpheaders" value.
14
15   These prefixes have to be at the start of the request string, can occur
16   only there, and can occur only once.
17
18 0.9.5 -------------------------------------------------------------------
19
20 Note: The txtinfo and jsoninfo plugins were 'merged' to use a common
21       codebase for receiving requests and dispatching replies. Also,
22       these plugins were subjected to review and fixes. As a result:
23       - request handling has become much stricter, e.g. a txtinfo
24         request '/links' will no longer work since the correct request is
25         (and has always been) '/lin'.
26       - some fixes change the format and/or content of txtinfo and/or
27         jsoninfo output. An example is the txtinfo output of the request
28         '/mid' when 'vtime' is enabled on txtinfo; this has been broken
29         since the end of 2009 (c555a44).
30       - invalid requests will return HTTP error status code
31         "Not Found" (404) when HTTP headers are enabled, and report
32         an error in the output when they are not enabled.
33       - requests without output will return HTTP error status code
34         "No Content" (204) when HTTP headers are enabled, and report
35         an error in the output when they are not enabled.
36
37       It is VERY strongly advised to check your scripts and applications
38       interfacing with olsrd txtinfo and/or jsoninfo before switching
39       to this version of olsrd.
40
41
42 Ferry Huberts (824):
43       Update version after branch of v0.9.0
44       Merge branch 'release-0.9.0'
45       neighbors: signal link changes when deleting a neighbor
46       Merge branch 'release-0.6.8'
47       Merge branch 'release-0.9.0'
48       conf: lock_file is derived config.
49       jsoninfo: fix a crash when there are no gateways
50       txtinfo: fix a crash when there are no gateways
51       Merge branch 'release-0.9.0'
52       Merge branch 'release-0.9.0'
53       Merge branch 'release-0.9.0'
54       files: regenerate the generated default full configuration
55       Fixup CHANGELOG file
56       Merge branch 'release-0.6.8'
57       Merge branch 'release-0.9.0'
58       jsoninfo: fix a Coverity warning
59       txtinfo: similar fix as the previous commit
60       make: add NOSTRIP option
61       files: minor improvement to config file generation script
62       sgw: add SmartGatewayMaxCostMaxEtx configuration setting
63       jsoninfo: fix a Coverity warning
64       txtinfo: similar fix as the previous commit
65       Merge branch 'release-0.9.0'
66       files: regenerate the generated default full configuration
67       files: minor improvement to config file generation script
68       sgw: add SmartGatewayMaxCostMaxEtx configuration setting
69       Merge branch 'release-0.9.0'
70       egressFile: use a define for the line length
71       pud: clear the cached timestamp when the position file can't be read
72       pud: increase the resolution of the cached timestamp of the position file
73       pud: minor fix in the function reading the position file
74       pud: cache the correct timestamp
75       sgwdynspeed: clear the cached timestamp when the speed file can't be read
76       sgwdynspeed: increase the resolution of the cached timestamp
77       sgwdynspeed: properly close the speed file
78       sgwdynspeed: cache the correct timestamp
79       sgw: cache timestamp of egress file earlier
80       sgw: cache the correct timestamp
81       sgw: remove unneeded check against 0 for cached timestamp
82       sgw: properly close the egress file
83       sgw: do not clear egress data in the read race
84       sgw: properly open and stat the egress file
85       Merge branch 'release-0.9.0'
86       sgwdynspeed: let the out block close the file
87       sgw: fix EOL stripping of the egress file
88       Merge branch 'release-0.9.0'
89       quagga: zero-out the extra allocated buffer size
90       conf: clean up interface names on config file read failure
91       cookie: fix loop invariant assert and exit on cookie exhaustion
92       quagga: zero-out the extra allocated buffer size
93       quagga: restore socket status on error paths in zclient_read function
94       Merge branch 'release-0.9.0'
95       sgw: do not program routes on interfaces that are not up
96       sgw: policy script: fix error reports when too many arguments
97       sgw: policy script: fix some comparisons
98       sgw: policy script: move some declarations
99       sgw: policy script: minor improvement
100       sgw: policy script: fix cosmetic rebase  issue of the previous commit
101       cfg: minor fixup to printing of SmartGatewayPolicyRoutingScript
102       dyn_gw: fix a mistake in 36111ca
103       cfg: fix printing of a few <not set> settings
104       sgw: add SmartGatewayInstanceId setting
105       sgw: policy script: add the instance id to the script
106       sgw: policy script: log invocations and add cleanup mode
107       sgw: invoke the cleanup mode of the policy script on start and stop
108       jsoninfo: also output SmartGatewayInstanceId
109       olsr_exit: protect against a NULL olsr_cnf
110       olsr_exit: protect against a NULL message
111       olsr_exit: also flush stderr on exit
112       olsr_exit: clarify why the explicit exit is needed
113       olsr: make sure olsr_cnf is initialised
114       mdns: update a comment about exit
115       p2pd: update a comment about exit
116       dyngw: call olsr_exit() instead of exit()
117       httpinfo: call olsr_exit() instead of exit()
118       pgraph: call olsr_exit() instead of exit()
119       secure: call olsr_exit() instead of exit()
120       linux: call olsr_exit() instead of exit()
121       unix: call olsr_exit() instead of exit()
122       win32: call olsr_exit() instead of exit()
123       olsr: call olsr_exit() instead of exit()
124       plugin_loader: call olsr_exit() instead of exit()
125       quagga: clean up invocation of olsr_exit
126       build_msg: clean up invocation of olsr_exit
127       cookie: clean up invocation of olsr_exit
128       interfaces: clean up invocation of olsr_exit
129       lq_plugin: clean up invocation of olsr_exit
130       main: clean up invocation of olsr_exit
131       olsr: clean up invocation of olsr_exit
132       parser: clean up invocation of olsr_exit
133       quagga: clean up olsr_exit messages
134       linux: clean up olsr_exit messages
135       ipc_frontend: clean up olsr_exit messages
136       main: clean up olsr_exit messages
137       httpinfo: remove unused copyright_string
138       conf: remove unused copyright_string
139       main: remove unused copyright_string
140       main: remove pointless type size asserts
141       main: make sure all variables are initialised
142       main: move some initialisation to the beginning of main
143       main: always store argv
144       random: remove pointless olsr_init_random, only invoked in main
145       conf: fix determining the lock file, mirror what main does
146       main: no need to re-determine lock_file; already setup by set_derived_cnf
147       main: use olsr_cnf->lock_file directly
148       lock_file: move olsrd_get_default_lockfile into its own file
149       main: move olsr_create_lock_file into its own file
150       lock_file: add olsr_remove_lock_file function
151       main: remove the lock file in olsr_shutdown
152       main: move printing of version into a function
153       main: move loading the config into the loadConfig function
154       main: minor improvements to loadConfig
155       main: initialise timers after processing the configuration
156       main: process olsrd options in a block
157       main: minor improvements
158       conf: remove an unneeded printf
159       conf: move loadConfig function here from main
160       pid: move pid file handling into its own file
161       main: move lock file creation into the lock_file file
162       main: move conf_file_name variable into cfgparser
163       main: limit the scope of 2 variables to where they are needed
164       main: invoke olsr_exit at the end of main
165       main: minor update
166       main: initialise IPC a bit earlier
167       main: call olsr_exit when writing the PID file fails
168       main: minor update
169       link_set: make sure link_changes is initialised
170       main: minor update
171       main: call olsr_exit in olsr_reconfigure
172       main: track the heartbeat timer
173       main: stop the heartbeat timer during shutdown
174       pid_file: add removePidFile function
175       log: add olsr_closelog function
176       main: close the log in olsr_shutdown
177       main: stop the scheduler in olsr_shutdown
178       main: move CLI related function into their own file
179       main: move some functions around
180       lock_file: explicitly ignore failure of file removal
181       conf: avoid memory leaks during parsing
182       conf: make sure debug_handle is initialised
183       conf: ensure all config fields are explicitly initialised
184       conf: add ip_prefix_list_clear function
185       conf: olsrd_free_cnf: set pointers back to NULL after freeing
186       conf: olsrd_free_cnf: refactor a bit to use the lists directly
187       conf: olsrd_free_cnf: reorder a bit
188       conf: olsrd_free_cnf: free everything
189       conf: do not leak the configuration when freeing it
190       conf: initialise sgw uplink & downlink before setting them
191       main: open syslog right at the start
192       main: minor update
193       sgw: only select an olsr or egress interface when it is up
194       jsoninfo: sgw field in /sgw response is not an array
195       jsoninfo: sgw: simplify prefix output
196       jsoninfo: sgw: show tableNr, ruleNr and bypassRuleNr too
197       jsoninfo: sgw: show entries without tc too
198       jsoninfo: sgw: minor simplification reducing memory usage
199       txtinfo: sgw: show entries without tc too
200       txtinfo: sgw: line-up to jsoninfo
201       txtinfo: sgw: do not access uninitialised memory
202       txtinfo: sgw: print the prefix length for IPv6
203       txtinfo: format code
204       txtinfo: use the same c-basic-offset: 2 as jsoninfo
205       txtinfo: simplify an ifdef
206       txtinfo: simplify some string comparisons
207       txtinfo: simplify some send_what checks
208       txtinfo: use a define for the plugin name
209       txtinfo: rename some functions
210       txtinfo: use defines for some variables
211       txtinfo: use a define to rename TXTINFO_ALLOW_LOCALHOST
212       txtinfo: rename some SIW_x flags
213       txtinfo: move ipc_print_mid function up a bit
214       txtinfo: move ipc_print_gateways function up a bit
215       txtinfo: move ipc_print_version function up a bit
216       txtinfo: rename txtinfo_write_data function
217       txtinfo: use the plugin name in a malloc call
218       txtinfo: re-order the sent information
219       txtinfo: simplify some comparisons
220       txtinfo: add httpheaders configuration parameter
221       txtinfo: http headers must use \r\n line endings
222       txtinfo: use HTTP/1.1
223       txtinfo: use a bigger (2 CPU pages) initial buffer
224       txtinfo: renumber SIW_x defines and put them in 'groups'
225       txtinfo: the configuration is a special case
226       txtinfo: send everything on an unknown option
227       txtinfo: some more formatting
228       txtinfo: remove superfluous forward declarations
229       txtinfo: expand SIW_RUNTIME_ALL to include all runtime information
230       txtinfo: remove personal copyrights, just check the git log
231       jsoninfo: use a define for the plugin name
232       jsoninfo: use defines for some variables
233       jsoninfo: use a define to rename TXTINFO_ALLOW_LOCALHOST
234       jsoninfo: use the set_plugin_boolean function
235       jsoninfo: initialise outbuffer_count
236       jsoninfo: update some comments
237       jsoninfo: move some functions around
238       jsoninfo: use the plugin name in a malloc call
239       jsoninfo: use a smaller (2 CPU pages) initial buffer
240       jsoninfo: limit the number of in-flight connection to 3, like txtinfo
241       jsoninfo: rename a function
242       jsoninfo: more formatting
243       jsoninfo: fix content type of http headers for /olsr.conf
244       jsoninfo: remove personal copyrights, just check the git log
245       jsoninfo: move some variables around
246       jsoninfo: move json support functions into their own file
247       txtinfo: fixup the Content-Type http header
248       jsoninfo: ensure date in http header is in GMT, as advertised
249       jsoninfo: fixup the Server http header
250       jsoninfo: fixup the Connection http header
251       jsoninfo: fixup the Content-Type http header
252       jsoninfo: fixup the Content-Length http header
253       txtinfo: remove a pointless assert
254       txtinfo: also send the (UTF-8) charset in the content type
255       txtinfo: avoid a memcpy: just move the abuf.buf pointer and clear abuf
256       jsoninfo: refactor generation of the headers
257       jsoninfo: also send the (UTF-8) charset in the content type
258       jsoninfo: avoid a memcpy: just move the abuf.buf pointer and clear abuf
259       jsoninfo: send http headers by default
260       txtinfo: bring over proper http header support from jsoninfo
261       olsr_exit: use EXIT_SUCCESS or EXIT_FAILURE exclusively
262       olsr_exit: fix some exit codes
263       exit: use EXIT_SUCCESS or EXIT_FAILURE exclusively
264       exit: fix some exit codes
265       txtinfo: undo output re-ordering of 4563faa
266       jsoninfo: use the same order as txtinfo
267       jsoninfo: remove an unused define
268       src: add some forgotten includes
269       txtinfo: use the same 'c-basic-offset: 2' as jsoninfo
270       txtinfo: treat the olsrd configuration differently
271       txtinfo: catch '/all' earlier when determining the action
272       txtinfo: send the information in the runtime and startup groups for '/all'
273       txtinfo: '/ver' and '/neighbours' are specials when determining the action
274       txtinfo: add (unsupported) commands '/config' and '/plugins'
275       txtinfo: add /runtime and /startup commands
276       jsoninfo: INADDR_LOOPBACK is in host format and the socket address is not
277       jsoninfo: fix PLUGIN_NAME that is reported on plugin init
278       jsoninfo: initialise uuidfile as well
279       jsoninfo: use standard set_plugin_string function for uuidfile parameter
280       jsoninfo: reorder some includes
281       jsoninfo: fix some indents
282       jsoninfo: add Freifunk neighbours special case, like txtinfo
283       txtinfo: move http header related functions into common code
284       jsoninfo: move http header related functions into common code
285       txtinfo: move determining the action into a separate function
286       jsoninfo: move determining the action into a separate function
287       txtinfo: add plugin_init hook
288       jsoninfo: add plugin_init hook
289       txtinfo: move ipc_print_* functions into a 'printers' unit
290       jsoninfo: move ipc_print_* functions into a 'printers' unit
291       txtinfo: use a table of function pointers in send_info
292       jsoninfo: use a table of function pointers in send_info
293       txtinfo: move SIW_x defines into common code
294       jsoninfo: move SIW_x defines into common code
295       txtinfo: wrap the outbuffer in a struct for easier usage
296       jsoninfo: wrap the outbuffer in a struct for easier usage
297       jsoninfo: only need to reset entry number for json output
298       txtinfo: determine the mime type via the functions table
299       jsoninfo: determine the mime type via the functions table
300       txtinfo: put the plugin init hook in the functions table
301       jsoninfo: put the plugin init hook in the functions table
302       txtinfo: put command parsing in the functions table
303       jsoninfo: put command parsing in the functions table
304       txtinfo: put output start/end in the functions table
305       jsoninfo: put output start/end in the functions table
306       txtinfo: convert INFO_ALLOW_LOCALHOST define into a plugin parameter
307       jsoninfo: convert INFO_ALLOW_LOCALHOST define into a plugin parameter
308       txtinfo: convert ACTIVATE_VTIME_TXTINFO into a plugin parameter
309       txtinfo: wrap generic info plugin configuration in a struct
310       jsoninfo: wrap generic info plugin configuration in a struct
311       info: merge jsoninfo and txtinfo common code
312       Makefile: add pseudo plugin info
313       txtinfo: move code from olsr_txtinfo into olsr_plugin
314       jsoninfo: move code from olsr_jsoninfo into olsr_plugin
315       info: code formatting
316       info: rename some http header function parameters
317       info: rename type printer_functions_t to info_plugin_functions_t
318       info: rename variable printer_functions to functions
319       txtinfo: rename variable printer_functions to functions
320       jsoninfo: rename variable printer_functions to functions
321       info: rename type outbuffer_t to info_plugin_outbuffer_t
322       info: do not export info_plugin_outbuffer_t, only used internally
323       info: rename header files recursive include guards
324       info: rename a http header function
325       info: update copyrights
326       jsoninfo: rename info_plugin_config to config
327       txtinfo: rename info_plugin_config to config
328       info: rename a function parameter
329       info: rename info_plugin_config to config
330       info: rename PLUGIN_NAME to name
331       info: rename a function
332       info: add some asserts
333       info: remove some comments
334       info: ensure all variables are correctly initialised and cleaned up
335       info: use a define for the info_plugin_config_t plugin parameters
336       jsoninfo: rename 'printers' unit
337       txtinfo: rename 'printers' unit
338       info: split out neighbors and 2hop printer functions
339       info: rename a function prototype
340       info: minor formatting fix
341       info: there can only be a single command, optimise determine_action
342       info: write_data: exit early if there is nothing to send
343       info: write_data: do not add invalid sockets to the FD set
344       info: write_data: add a comment
345       info: write_data: properly clean up an output buffer
346       info: write_data: do not consider an invalid socket for send
347       info: write_data: use a safer 'close the socket' condition
348       info: write_data: do not move buffers around
349       info: ipc_action: rename 2 variables
350       info: ipc_action: move inet_ntop out of condition blocks
351       info: ipc_action: only use addr in debug builds
352       info: ipc_action: minor simplification
353       info: ipc_action: merge 2 if statements
354       info: ipc_action: make the IPv6 if statement like the IPv4 one
355       info: ipc_action: use a static sink buffer
356       info: ipc_action: use a safer 'oversize' comparison
357       info: ipc_action: minor fix
358       info: plugin_ipc_init: rename 2 variables
359       info: plugin_ipc_init: 'unelse' an else branch, the if already returns
360       info: plugin_ipc_init: close the ipc_socket on the error paths
361       info: plugin_ipc_init: fix a perror message
362       info: plugin_ipc_init: merge 2 if statements
363       info: http headers: add some asserts
364       info: check against the correct __linux__ define
365       txtinfo: rename header files recursive include guards
366       jsoninfo: rename header files recursive include guards
367       txtinfo: remove some unused includes
368       jsoninfo: remove some unused includes
369       info: add a function to initialise the config
370       txtinfo: use the function to initialise the config
371       jsoninfo: use the function to initialise the config
372       jsoninfo: helpers: minor simplification of abuf_json_new_indent
373       jsoninfo: helpers: firm up asserts on currentjsondepth
374       jsoninfo: helpers: use abuf_json_insert_comma
375       jsoninfo: helpers: output floats in full precision
376       jsoninfo: helpers: fix output format for int/long
377       jsoninfo: helpers: use an actual bool as parameter for abuf_json_boolean
378       jsoninfo: helpers: get_string_from_file ensures '\0' in the first byte
379       jsoninfo: helpers: use sizeof() for buffers
380       jsoninfo: helpers: use a double as parameter for abuf_json_float
381       jsoninfo: helpers: use sizeof() for uuid size
382       txtinfo: define the vtime extern in the proper place
383       jsoninfo: define the uuidfile extern in the proper place
384       info: minor reordering in send_info to reflect SIW_x order
385       info: simplify use of the functions table
386       txtinfo: simplify setup of the functions table
387       jsoninfo: simplify setup of the functions table
388       info: simplify use of the functions table further
389       info: simplify determine_action
390       info: update README
391       txtinfo: update README
392       jsoninfo: update README
393       info: remove unused nompr field from the configuration
394       txtinfo: minor improvements to /sgw printing
395       jsoninfo: helpers: add abuf_json_ip_address
396       jsoninfo: use the new ip address helper in /sgw printing
397       jsoninfo: minor improvement to /sgw printing
398       lq plugins: ensure string termination in lq_print_cost functions
399       jsoninfo: minor field reordering for /sgw
400       jsoninfo: add 'selectable' field to /sgw
401       jsoninfo: refactor /gateways
402       jsoninfo: move duplicated 'selectable' code into a function
403       txtinfo: simplify some code for /gat
404       txtinfo: minor formatting in /gat
405       txtinfo: also print gateways without a tc in /gat
406       txtinfo: do not use tabs in the /gat table, use fixed widths
407       txtinfo: minor scope change of 2 variable in /gat
408       jsoninfo: only show gateways of the request IP version in /gateways
409       jsoninfo: neighbors/2hop: show more information
410       files: clarify why jsoninfo is in the example configuration files
411       make: support building with clang (on Linux)
412       all: fixes resulting from building with clang
413       txtinfo: use strcmp instead of strstr
414       jsoninfo: use strcmp instead of strstr
415       jsoninfo: review of /hna
416       txtinfo: review of /hna
417       info: strip EOLs from the command
418       CHANGELOG: add a note about txtinfo and jsoninfo being merged
419       cookie: split assert to see which part actually triggers the assert
420       info: do not try to interpret the request when it is too large
421       info: fix processing of command per HTTP request
422       main: add & enable a new SEGV handler (Linux only)
423       Add a safety net in the segfault handler
424       ifnet: remove unused function set_flag
425       linux: netlink_process_link: simplify NULL comparisons and add some braces
426       linux: netlink_process_link: always determine the interface name
427       linux: netlink_process_link: always determine the oif
428       linux: netlink_process_link: simplify a comparison
429       linux: netlink_process_link: compute up status only once
430       linux: netlink_process_link: simplify an if/else
431       ifnet: add getInterfaceLinkState function
432       all: use the getInterfaceLinkState function
433       Fix 2 Coverity warnings
434       ifnet: ensure string termination
435       pud: nmealib: be less strict about satellite elevation
436       txtinfo: review /lin
437       txtinfo: review /nei and /2ho
438       txtinfo: review /hna
439       txtinfo: add forgotten 2hop  in function table
440       jsoninfo: add forgotten 2hop  in function table
441       jsoninfo: protect abuf_json_ip_address against a NULL IP address
442       jsoninfo: protect against a possible null-deref in ipc_print_neighbors
443       jsoninfo: also show the hops for /sgw, like for /gateways
444       jsoninfo: also show local HNAs, like txtinfo does
445       jsoninfo: review /links and show more information
446       jsoninfo: extract printing a gateway to a function
447       info: minor update to the README
448       info: fix send result error check in write_data
449       info: do not send buffers of zero length, wget can't handle that
450       info: introduce and use ARRAY_SIZE define
451       info: simplify send_info function
452       jsoninfo: simplify isCommand function
453       jsoninfo / sgw: isGwSelectable function is common, use it as such
454       jsoninfo: minor improvements
455       jsoninfo: be a bit more explicit in determine_mime_type
456       txtinfo: minor fixes to the README
457       txtinfo: simplify isCommand function
458       txinfo: fix 2-hop output
459       txtinfo: avoid a potential null deref in 2-hop
460       txtinfo: simplify printing links
461       txtinfo: avoid a potential null deref in links
462       txtinfo: simplify printing routes
463       txtinfo: avoid a potential null deref in routes
464       txtinfo: simplify printing topology
465       txtinfo: simplify printing HNAs
466       txtinfo: simplify and fix printing MIDs
467       txtinfo: clarify that using /gat and /sgw on non-Linux is an error
468       txtinfo: simplify gateways
469       txtinfo: simplify sgw
470       txtinfo: add an empty line after the version, like all other tables
471       txtinfo: simplify interfaces
472       changelog: update the warning about txtinfo/jsoninfo
473       main: musl does not support execinfo.h (the backtrace functions)
474       make: preserve debugging info when NOSTRIP is set
475       info: requests that are too large must set s to < 0
476       info: also handle empty requests
477       info: rename an HTTP status define
478       info: requesting / now is equivalent to /all
479       info: prepare for more HTTP status codes
480       info: add function to the function table to output an error
481       info: respond with "not found" (404) on invalid commands
482       info: respond with "no content" (204) on empty output
483       txtinfo: /config & /plugins are not implemented: return "not found" (404)
484       changelog: update for info/jsoninfo/txtinfo changes
485       make: add more recognised formats to the gcc-warnings script
486       make: need to load the OS specific makefile before evaluating WARNINGS
487       make: remove conditionals in WARNINGS section, no longer needed
488       make: sort warnings flags and make that section a bit easier to read
489       unix: fix GCC 6 warnings
490       link_set: fix GCC 6 warnings
491       sgw: fix GCC 6 warnings
492       parser: fix GCC 6 warnings
493       bmf: fix GCC 6 warnings
494       mdns: fix GCC 6 warnings
495       p2pd: fix GCC 6 warnings
496       pud: fix GCC 6 warnings
497       quagga: fix GCC 6 warnings
498       make: add new GCC 6 warning flags
499       scheduler: fix a typo
500       scheduler: mark timers for removal and only remove them in a cleanup walk
501       main: ensure all timers are stopped in shutdown
502       cfgparser: remove some unreachable code
503       scheduler: mark timers for removal and only remove them in a cleanup walk
504       main: ensure all timers are stopped in shutdown
505       scheduler: fix olsr_flush_timers to not hang
506       main: print the received signal name instead of the signal number
507       main: cleanup the gateways earlier on shutdown
508       scheduler: fix olsr_flush_timers to not hang
509       main: cleanup the gateways earlier on shutdown
510       txtinfo: output an error on unknown status codes too
511       txtinfo: move a function
512       jsoninfo: output an error on unknown status codes too
513       jsoninfo: re-arrange some imports
514       jsoninfo: all neighbour entries now have twoHopNeighborCount
515       jsoninfo: add hysteresis to /links
516       jsoninfo: add etx to /routes
517       jsoninfo: improve /topology, show more information
518       jsoninfo: improve /hna
519       info: add a comment about why info_plugin_outbuffer_t is there
520       info: try to send the response immediately
521       info: speed up sending pending responses
522       info: check for retry after trying to send
523       jsoninfo: remove some dead code
524       txtinfo: check INFO_HTTP_OK upon entry of the function
525       main: add noreturn attribute on olsr_segv_handler
526       make: improve clang support
527       make: do not add -Wcast-qual on Windows
528       make: move -Werror flag into the normal list of warnings
529       make: fix compiler flags probing
530       gui: fix a few clang warnings
531       jsoninfo: improve /mid and add validityTime of mid entry itself
532       jsoninfo: improve printing a gateway entry, and add expiry/cleanup timers
533       jsoninfo: improve the ipc_print_gateways_ipvx function
534       jsoninfo: improve the skip condition in ipc_print_gateways_ipvx
535       builddata: generate more build information
536       jsoninfo: show more information in /version
537       config: always lower-case plugin parameter names
538       bmf: ignore case on the BmfMechanism plugin parameter value
539       jsoninfo: make abuf_json_int take a long long value
540       jsoninfo: simplify /plugins
541       jsoninfo: fix a windows compile error
542       scheduler: fix a typo
543       scheduler: do not stop timers that are not running
544       scheduler: make olsr_flush_timers more robust
545       main: do not allow nested shutdown
546       scheduler: fix a typo
547       scheduler: do not stop timers that are not running
548       scheduler: make olsr_flush_timers more robust
549       jsoninfo: minor improvement to /2hop
550       jsoninfo: helpers: move a static string declaration
551       jsoninfo: helpers: add asserts
552       jsoninfo: helpers: output an empty string when the string is null
553       jsoninfo: helpers: account for NaN and INF in float printing
554       jsoninfo: add some comments
555       jsoninfo: simplify output_error by using an abuf
556       jsoninfo: minor improvements
557       jsoninfo: put printing a hna entry into a function and use it
558       jsoninfo: improve and update /config
559       jsoninfo: use the abuf_json_ip_address helper
560       jsoninfo: use print_link_quality_multipliers_array_entry in /interfaces
561       jsoninfo: add print_interface_config function and use it
562       jsoninfo: improve /interfaces
563       jsoninfo: do not show interface /sys/class/net/data in /interfaces
564       jsoninfo: move some static functions around
565       info: strip trailing slashes from the command
566       info: skip multiple leading slashes on the command
567       info: re-introduce composite commands
568       jsoninfo: add some asserts
569       jsoninfo: protect against nulll-deref in print_interface_config
570       jsoninfo: protect against out-of-bounds accesses of TXT array
571       jsoninfo: in /plugins list plugin parameters as array entries
572       jsoninfo: in /plugins show parameters as name/value
573       jsoninfo: simplify /mid output
574       jsoninfo: in /plugins list plugin parameters as map entries
575       jsoninfo: allow key to be NULL when printing an IP address
576       jsoninfo: print the 2-hops neighbors as a simple list of IP addresses
577       jsoninfo: minor simplification in /2hop
578       info: create more space for more info commands
579       jsoninfo: add a function to directly convert an IP address
580       jsoninfo: in /interfaces show 'state' text as 'up' boolean
581       jsoninfo: in /interfaces use the new IP address helper function
582       jsoninfo: remove an obsolete comment
583       jsoninfo: in /interfaces show message times like validity times
584       jsoninfo: allow key to be NULL when printing a string
585       jsoninfo: improve /config
586       jsoninfo: in /config rename sgw weight section to costsCalculation
587       jsoninfo: remove a derived field from the /config output
588       jsoninfo: fix a typo in /config
589       sgw: fix a mask in the sgw status file
590       Revert "sgw: fix a mask in the sgw status file"
591       sgw: update a comment
592       info: move json helpers here from jsoninfo
593       info: add abuf_json_prefix json helper
594       info: minor layout improvements
595       info: move iterating over a table of siw/function entries into a function
596       info: rename json helpers files
597       sgw: add isEgressSelected function
598       jsoninfo: also show egress information in /sgw
599       jsoninfo: do not null-deref prefix in abuf_json_prefix
600       jsoninfo: in /sgw separate prefixes and their lengths
601       make: improve jsoninfo and txtinfo dependencies on info
602       sgw: do not show unused tunnels in the status file
603       sgw: remove some dead code left over in the previous commit
604       info: minor layout improvements
605       info: use AUTOBUFCHUNK instead of hard-coding it
606       info: fix a type
607       info: move some type delcarations up in a header file
608       info: make the INFO_PLUGIN_CONFIG_PLUGIN_PARAMETERS a bit safer
609       info: make SIW_ENTRIES accessible from other functions
610       plugin util: make set_plugin_boolean actually set a bool
611       plugin util: add set_plugin_long function
612       abuf: add abuf_concat function
613       cfgfile: cache the generated configuration file
614       scheduler: export the olsr_times function
615       info: add support for caching and use it
616       info: minor fix
617       info: reflect that the SIW defines are 64 bit wide
618       info: completely switch of caching for timeouts <= 0
619       info: lazily initialise the cache
620       sgw: remove struct costs_weights and max_cost_etx_max from the costs API
621       spf: tc->path_cost is a route cost, fix level 2 OLSR_PRINTF messages
622       spf: safer checking against LINK_COST_BROKEN and ROUTE_COST_BROKEN
623       routing table: safer checking against LINK_COST_BROKEN & ROUTE_COST_BROKEN
624       pud: safer checking against LINK_COST_BROKEN and ROUTE_COST_BROKEN
625       sgw: safer checking against LINK_COST_BROKEN and ROUTE_COST_BROKEN
626       lq plugins: safer checking against LINK_COST_BROKEN and ROUTE_COST_BROKEN
627       lq plugins: explicit unsigned for LINK_COST_BROKEN and ROUTE_COST_BROKEN
628       fpm: add fpmtod function
629       lq plugins: add get_cost_scaled function
630       lq plugins: make the print_cost_float functions behave the same
631       lq plugins: remove print_cost, use get_cost_scaled in generic function
632       lq: add get_linkcost_scaled function
633       lq: minor optimisation
634       main: initialise sgw system after the tables
635       bmf: fix currEtx type and link/route confusion
636       sgw: show the route costs text in log messages
637       sgw: add get_gwcost_scaled and get_gwcost_text functions
638       sgw: show the scaled route cost in the program status file
639       sgw: show the scaled gw cost in the program status file
640       httpinfo: show the scaled route cost in the sgw pane
641       httpinfo: show the scaled gw cost in the sgw pane
642       txtinfo: show the scaled route cost in the sgw output
643       txtinfo: show the scaled gw cost in the sgw output
644       jsoninfo: show scaled route/link cost in
645          gateways|sgw|links|routes|topology
646       jsoninfo: show the scaled gw cost in gateways|sgw
647       sgw: simplify get_gwcost_scaled
648       info: make defines for SIW_* constants a bit clearer
649       info: add the define SIW_EVERYTHING
650       info: fix send_what for empty requests
651       info: stop evaluating send_what when all information has been processed
652       info: only try to match supported commands
653       arprefresh: show Git SHA in plugin constructor
654       bmf: use PLUGIN_NAME_SHORT in logs
655       bmf: do no show version in plugin constructor
656       bmf: remove PLUGIN_AUTHOR, Git shows who worked on it
657       bmf: plugin name like other plugins and minor layout change
658       bmf: show Git SHA in plugin constructor
659       bmf: do not show copyright in constructor, Git shows who has copyright
660       dot_draw: remove PLUGIN_AUTHOR, Git shows who worked on it
661       dot_draw: do no show version in plugin constructor
662       dot_draw: show Git SHA in plugin constructor
663       dyn_gw: remove PLUGIN_AUTHOR, Git shows who worked on it
664       dyn_gw: show Git SHA and no version in plugin constructor
665       dyn_gw_plain: show Git SHA and no author in plugin constructor
666       httpinfo: remove PLUGIN_AUTHOR, Git shows who worked on it
667       httpinfo: show Git SHA and no version and no author in plugin constructor
668       jsoninfo: remove PLUGIN_AUTHOR, Git shows who worked on it
669       jsoninfo: show Git SHA and no version in plugin constructor
670       mdns: remove PLUGIN_AUTHOR, Git shows who worked on it
671       mdns: show Git SHA and no version and no copyright in plugin constructor
672       mini: cleanup
673       nameservice: remove PLUGIN_AUTHOR, Git shows who worked on it
674       nameservice: show Git SHA and no version in plugin constructor
675       p2pd: show Git SHA and no version in plugin constructor
676       pgraph: remove PLUGIN_AUTHOR, Git shows who worked on it
677       pgraph: show Git SHA and no version in plugin constructor
678       pud: use Git SHA from builddata
679       quagga: remove PLUGIN_AUTHOR, Git shows who worked on it
680       quagga: show plugin name and Git SHA in plugin constructor
681       sgwdynspeed: use Git SHA from builddata
682       secure: remove PLUGIN_AUTHOR, Git shows who worked on it
683       secure: show Git SHA and no version in plugin constructor
684       txtinfo: remove PLUGIN_AUTHOR, Git shows who worked on it
685       txtinfo: show Git SHA and no version in plugin constructor
686       watchdog: show plugin name and Git SHA in plugin constructor
687       jsoninfo: simplify setup of plugin functions
688       txtinfo: simplify setup of plugin functions
689       all: ensure all files have the same license header
690       Remove list-excludes
691       all: avoid includes with relative paths whenever possible
692       info: be more paranoid when handling received data
693       info: fix mistake in previous commit
694       quagga: fixup include files
695       quagga: use AUTOBUFCHUNK as allocation unit
696       info: do not include INFO_HTTP_VERSION in httpStatusToReply return
697       info: add INFO_HTTP_REQUEST_ENTITY_TOO_LARGE http code
698       info: add INFO_HTTP_INTERNAL_SERVER_ERROR http code
699       info: add INFO_HTTP_FORBIDDEN http code
700       info: add INFO_HTTP_SERVICE_UNAVAILABLE http code
701       jsoninfo: use httpStatusToReply in output_error
702       txtinfo: use httpStatusToReply in output_error
703       info: refactor ipc_action to be much clearer and safer
704       info: add netjson commands
705       netjson: add plugin
706       info: use a session struct in the JSON helpers
707       netjson: various fixes
708       all: allocate autobuf memory in AUTOBUFCHUNK sized chunks
709       httpinfo: reduce memory usage
710       info: start with a single AUTOBUFCHUNK sized chunk of memory
711       autobuf: work around a warning
712       autobuf: simplify abuf_vappendf
713       android: minor improvements to the Makefile and README
714       info: fail info_plugin_init when plugin_ipc_init fails
715       link_set: fix a crash: use the entry name in a printf
716       olsr: add olsr_realloc function
717       quagga: refactor zclient_read to be much more readable and safer
718       quagga: improve zparse function a bit
719       bmf: use the new olsr_realloc function
720       mdns: use the new olsr_realloc function
721       p2pd: use the new olsr_realloc function
722       quagga: use the new olsr_realloc function
723       scheduler: use the monotonic clock
724       spf: use the monotonic clock in profiling code
725       scheduler: fix Debian compilation problem
726       make: need to link with -lrt on Debian for clock_gettime
727       make: only link to -lrt on Linux
728       openwrt: fixup the git repository link to point to GitHub
729       make: add defines for leak and undefined sanitize compiler warnings
730       all: ensure unsigned numbers are used in shifts
731       all: use the INLINE define
732       all: move definitions of INLINE into compiler.h
733       config: fix memory leaks on the shutdown path
734       dyn_gw: fix memory leaks on the shutdown path
735       sgw: fix memory leaks on the shutdown path
736       make: continue running when a sanitizer reports an error
737       info: increase the number of in-flight replies to 8
738       info: fix a use-after-free for incomplete immediate sends
739       info: fix detection of whether the reply was fully sent
740       info: fix outbuffer slot determination
741       info: fix an assert
742       info: make a bit of code more defensive
743       info: saved_count is used as 'this is the first reply', so rename it
744       info: send 'service unavailable' when there are too many replies in-flight
745       netjson: clear allocated memory before setting fields in it
746       netjson: do not duplicate nodes when adding a mid
747       netjson: improve node_self detection for cleanup
748       netjson: fix NetworkGraph output
749       info: add 'pretty' parameter to jsoninfo and netjson modules
750       info: only set the 'name' const once
751       info: make cache_timeout_generic more robust
752       info: better initialisation of the cache structures
753       info: ensure all cache structures are always initialised
754       avl: protect against NULL pointers
755       interfaces: protect against a NULL pointer
756       main: separate shutdown and cleanup up gateways
757       egress: clear a variable after freeing it
758       sgw: do not iterate over NULL gw entries in OLSR_FOR_ALL_GATEWAY_ENTRIES
759       sgw: do not iterate over NULL gw entries in OLSR_FOR_ALL_GWS
760       sgw: gw NULL check no longer needed when using OLSR_FOR_ALL_GWS
761       info: add some asserts
762       info: disable caching for now, it somehow causes memory corruption
763       sgw: harden isGwSelectable function
764       Revert "autobuf: simplify abuf_vappendf"
765       Revert "info: disable caching for now, it somehow causes memory
766          corruption"
767       autobuf: make 2 functions more robust
768       sgw: use iptables '-w' option
769       sgw: preserve egress interface ordering in iptables rules
770       sgw: preserve sgw tunnel ordering in iptables rules
771       sgw: optimise iptables rule ordering
772       linux: merge 2 functions
773       linux: export os_ip_tunnel function
774       sgw: remove any left-over sgw tunnels during startup and shutdown
775       sgw: add a policy rule for the server-end tunnel
776       sgw: egress interface routes must also be programmed on interface up/down
777       sgw: egress interface routes must always be present when interface is up
778       sgw: track whether network/gateway are required per egress interfaces
779       sgw: fix egress route programming
780       jsoninfo: output require(Network|Gateway) status for egress interfaces
781       sgw: adjust egress to include requireNetwork and requireGateway settings
782       sgw: fix use of uninitialised value
783       info: fix cache age calculation
784       quagga: fix some clang alignment warnings
785       pud: only update the timestamp if the position is invalid and not updated
786       pud: do not report uplink send errors, they're not really relevant
787       pud: write the position to an output file when so configured
788       pud: remove satellite info from the position output file
789       pud: fixup of the README
790       ipcalc: protect prefix_to_netmask against invalid input
791       cfgparser: simplify Makefile a bit
792       Move strscat/cpy to a file of their own and clean them up
793       defs: remove an unused include
794       common: fix file headers
795       common: fix an include file guard
796       common: code formatting
797       common: add a comment
798       common: more asserts
799       common: make an exit condition in strscat more readable
800       common: remove some comments on asserts
801       common: make the paranoid check exit a bit friendlier
802       ipcalc: protect prefix_to_netmask against invalid input
803       cfgparser: simplify Makefile a bit
804       common: move strscat/cpy to a file of their own
805       common: add comments to strscat/cpy functions
806       common: strscat/cpy are simple wrappers around the same function
807       common: add some asserts to strscat/cpy
808       common: rename a variable in strscat/cpy
809       common: let the compiler decide how to place variables in strscat/cpy
810       common: do not invoke _internal_strscpy in strscat when not enough space
811       common: rename a variable in strscat/cpy
812       common: be paranoid about incoming parameters in strscat/cpy
813       common: refactor _internal_strscpy in strscat/cpy
814       autobuf: just use memcpy instead of strcpy
815       quagga: improve some strscy() calls
816       linux: improve some strscy() calls
817       lq_plugin: do not confuse malloc size with name size
818       Merge branch 'fixes-pulled-apart' into fixes
819       autobuf: format code
820       abuf: no need to set buf[0] to '\0', calloc already did that
821       abuf: use a define for the maximum size
822       README-Olsr-Extensions: add the -w option to the iptables examples
823       Merge branch 'release-0.9.0'
824       jsoninfo: always output the PID
825       nmealib: fix an extern C
826       nmealib: make nmea_INFO_is_present an INLINE function
827       nmealib: add some *_to_string helper functions
828       build: get rid of HTTPINFO_PUD define
829       httpinfo: use the normal nmea_INFO_is_present function
830       httpinfo: use new nmealib *_to_string helper functions
831       jsoninfo: allow all 'type' helpers without a key
832       nmealib: fix a warning
833       jsoninfo: be a bit more lenient in the helpers w.r.t. NULL values
834       info: add support for the pud plugin position
835       jsoninfo: add support for the pud plugin position
836       build: add -Wmissing-include-path
837       build: fix GCC 6 warning about EAGAIN and EWOULDBLOCK being equal
838       autobuf: let's limit the maximum size to 16MB
839       pud: update nmealib to 3.0.0
840       pud: nmealib: minor update
841       pud: nmealib now sets year and month correctly
842       pud: further adjustments for new nmealib
843       jsoninfo: nmealib now sets year and month correctly
844       jsoninfo: further adjustments for new nmealib
845       httpinfo: nmealib now sets year and month correctly
846       httpinfo: further adjustments for new nmealib
847       jsoninfo: fix mistakes introduced in 0db233f
848       pud: minor layout improvement
849       pud: minor layout fix
850       pud: move to stationary on undetermined moving state
851       pud: force a state change to moving when 'no info received' changes
852       pud: split a function
853       pud: add gpsd related configuration parameters
854       pud: timers: add gpsd fetch timer functions
855       pud: use gpsd fetch timer
856       pud: add gpsd functions
857       pud: hook up gpsd timer
858       pud: remove rx path
859       pud: update documentation
860       pud: make sure to actually count inUse satellites (on older gpsd)
861       pud: fix extracting position information from gpsd
862       pud: remove the instance of the nmea parser, no longer used
863       info: integrate java OSGi bundles
864       info: release java OSGi bundles
865       Merge pull request #2 from kakru/fix-shadow-error-in-pud
866       ohs_cmd: avoid compiler warning
867       release: fix the release script's git repository check
868       Branch v0.9.5
869
870 Henning Rogge (15):
871       Handle interface broadcast/multicast address zero
872       Handle interface broadcast/multicast address zero
873       Release v0.6.8.1
874       Update version after release of v0.6.8.1
875       Update version after release of v0.9.0.3
876       Configuration file cleanup
877       Merge branch 'master' of git://olsr.org/olsrd
878       Modify .gitignore file to keep full default example
879       Change README Git on Github
880       Don't use strcpy, we don't need checks there anyways.
881       Allow for a "soft fail" in non-debug builds
882       Fix some strscy() calls or make them more readable
883       Buffer for quagga was too long (1 byte)
884       Fix cfgparser makefile
885       Release v0.9.5
886
887 Karol Kruzelecki (1):
888       pud: fix of 'time' shadowing a global declaration (that causes a
889          compilation error on older Ubuntu)
890
891 0.9.0.3 -------------------------------------------------------------------
892
893 Alex Dunn (1):
894       Makefile.osx: create .dylibs
895
896 Ferry Huberts (1):
897       Fix CHANGELOG
898
899 Henning Rogge (3):
900       Update version after release of v0.9.0.2
901       Handle interface broadcast/multicast address zero
902       Release v0.9.0.3
903
904 0.9.0.2 -------------------------------------------------------------------
905
906 Ferry Huberts (4):
907       conf: lock_file is derived config.
908       jsoninfo: fix a crash when there are no gateways
909       txtinfo: fix a crash when there are no gateways
910       release: fix release script
911
912 Henning Rogge (2):
913       Update version after release of v0.9.0.1
914       Release v0.9.0.2
915
916 0.9.0.1 -------------------------------------------------------------------
917
918 Ferry Huberts (3):
919       neighbors: signal link changes when deleting a neighbor
920       jsoninfo: do not output smart-gateway info when not enabled.
921       txtinfo: jsoninfo: do not output smart-gateway info when not enabled.
922
923 Henning Rogge (2):
924       Update version after release of v0.9.0
925       Release v0.9.0.1
926
927 0.9.0 -------------------------------------------------------------------
928
929 Daniel Golle (4):
930       plugins: fix build with musl
931       plugins: fix build on some glibc systems
932       plugins: use previous definition of struct udphdr on Android
933       plugins: fix precompiled syntax
934
935 Ferry Huberts (98):
936       build: uberclean must also remove builddata.txt
937       build: add some pud targets
938       Rename 'struct interface' to 'struct interface_olsr'
939       Merge branch 'release-0.6.8'
940       pud: wireformat-java: improve java detection
941       pud: wireformat-java: improve java detection
942       sgw: ensure a bandwidth of 1 does not alias onto 0 when serialising
943       sgw: minor improvement
944       sgw: gwContainer can't be null here
945       dyn_gw: fix a Coverity warning
946       pud: nmealib: fix a Coverity warning
947       pud: nmealib: fix a Coverity warning
948       httpinfo: fix a Coverity warning
949       parser: fix a Coverity warning
950       quagga: minor readability fixes
951       olsr_random: introduce better random functions
952       main: replace random() by our own function
953       unix: replace random() by our own function
954       bsd: replace random() by our own function
955       win32: replace random() by our own function
956       pud: nmealib: replace random() by our own function
957       secure: replace random() by our own function
958       contrib: fix the build
959       contrib: replace random() by our own function
960       olsr_switch: replace random() by our own function
961       olsr_random: need to include time.h
962       pud: nmealib: align nmea_random to olsrd _random
963       pud: nmealib: doc: disable generation of the PDF; pdflatex somehow fails
964       pud: nmealib: doc: upgrade doxygen configuration file
965       sgw: egress file: use full time resolution on Linux
966       sgw: egress: Android is not Linux
967       jsoninfo: formatting
968       jsoninfo: some comparison simplifications
969       jsoninfo: clearer distinction between JSON and non-JSON blocks
970       jsoninfo: more comparison simplifications
971       jsoninfo: refactor outputting JSON
972       sgw: fix a shadowing warning
973       jsoninfo: formatting fixup
974       jsoninfo: systemTime and timeSinceStartup can be first
975       jsoninfo: minor fixup
976       jsoninfo: the IP address for a neighbour can also be an IPv6 address
977       jsoninfo: add version, 2hop and sgw. now in sync with txtinfo
978       arprefresh: update the readme
979       dyngw: update the readme
980       dyngw_plain: update the readme
981       httpinfo: update the readme
982       jsoninfo: update the readme
983       secure: update the readme
984       txtinfo: update the readme
985       pud: move the config sample into the readme
986       ipcalc: fix a double slash for IPv6 in olsr_ip_prefix_to_string
987       cfg: make sure lockfile has a default as specified in the cfg file
988       cfgfile_gen: whitespace and typo fixes
989       cfgfile_gen: better LinkQualityMult examples
990       cfgfile_gen: make sure to print IPv6Src as an IPv6 prefix
991       cfgfile_gen: fix default for RtProto
992       cfgfile_gen: add some comments to the generated configuration file
993       cfgfile_gen: print comments when the are no ipc_nets
994       cfgfile_gen: improve printing of HNAs
995       cfgfile_gen: improve printing of MainIp
996       cfgfile_gen: improve printing of SmartGatewayPrefix
997       cfgfile_gen: improve printing of SmartGatewayEgressFile
998       cfgfile_gen: update comments file SmartGatewayEgressFilePeriod
999       cfgfile_gen: improve printing of SmartGatewayEgressInterfaces
1000       cfgfile_gen: improve printing of SmartGatewayPolicyRoutingScript
1001       cfgfile_gen: improve printing of UseNiit
1002       cfgfile_gen: improve printing of routing tables
1003       cfgfile_gen: improve printing of routing table priorities
1004       files: remove olsrd.conf.default.lq-fisheye
1005       files: minor improvements to the FunkFeuer configuration files
1006       files: minor improvements to the commotion configuration file
1007       files: rename the generated configuration files
1008       files: add configurations files corresponding to generated (txt) files
1009       files: add a README, explaining generation of effective config files
1010       files: remove lq and rfc effective config files
1011       files: add a script to generate an effective configuration file
1012       files: update the default effective configuration file to current state
1013       mantissa: fix a typo in a comment
1014       mantissa: add a function to query the minimum interval
1015       sgw: fill HNA header in the same order as the fields in the packet
1016       sgw: extract appending a sgw HNA into its own function
1017       sgw: olsr_modifiy_inetgw_netmask can choose between normal and zero bw
1018       jsoninfo: validity times are in 'me' format, convert them to msec first
1019       sgw: fix a typo in an assert
1020       sgw: sgw HNAs are not considered normal HNAs during processing
1021       sgw: implement HNA expiry
1022       sgw: update the status file when a sgw HNA is removed (multi-sgw mode
1023          only)
1024       ifnet: also store the HNA validity time in msec
1025       sgw: do not write uplink/downlink speed directly
1026       sgw: immediately remove sgw HNAs with zero bandwidth
1027       sgw: send sgw HNAs with zero bandwidth after local gw has gone away
1028       sgw: do not send zero bandwidth sgw HNAs by default
1029       pud: doc: update the documentation
1030       release: stricter matching of release tags
1031       autobuf: fix warning in Windows release builds
1032       Merge branch 'release-0.6.7'
1033       Merge branch 'release-0.6.8'
1034       Branch v0.9.0
1035
1036 Henning Rogge (7):
1037       Update version after release of v0.6.8
1038       Update version after release of v0.6.8
1039       tc: properly initialise the path_costs field in a new tc
1040       tc: properly initialise the path_costs field in a new tc
1041       keep pushing data through dotdraw plugin
1042       Restrict maxmimum message size (not packet size) to IPv6 minimal MTU.
1043       Release v0.9.0
1044
1045 Sebastian Kürten (2):
1046       Added simple hard-coded whitelist
1047       Revert "Added simple hard-coded whitelist"
1048
1049 Teco Boot (1):
1050       arprefresh: README adjusted for plugin name
1051
1052 0.6.8.1 -------------------------------------------------------------------
1053
1054 Ferry Huberts (4):
1055       pud: wireformat-java: improve java detection
1056       release: stricter matching of release tags
1057       autobuf: fix warning in Windows release builds
1058       neighbors: signal link changes when deleting a neighbor
1059
1060 Henning Rogge (4):
1061       Update version after release of v0.6.8
1062       tc: properly initialise the path_costs field in a new tc
1063       Handle interface broadcast/multicast address zero
1064       Release v0.6.8.1
1065
1066 0.6.8 -------------------------------------------------------------------
1067
1068 Ferry Huberts (81):
1069       linux: increase the netlink buffer size
1070       linux: fix using tables >= 256
1071       linux: fix type of af_family
1072       linux: do not try to set routes with negative metric
1073       linux: add 'flags' parameter to olsr_new_netlink_route function
1074       linux: add 'scope' parameter to olsr_new_netlink_route function
1075       linux: make it possible to add/remove blackhole routes
1076       linux: export the olsr_new_netlink_route function
1077       Update version after branch of v0.6.7
1078       android: use the machine specific NDK instead of always the 32bit variant
1079       Merge branch 'linux-routes.v1'
1080       android: fix build on 32 bit platform (see 0295e11)
1081       linux: olsr_if_isup: fix return code in error path
1082       conf parser: fix a warning
1083       Merge branch 'release-0.6.7'
1084       linux: fix a typo
1085       sgw: move add/remove of ifchange handler to better place
1086       sgw: export multi_gateway_mode method
1087       sgw: make sure gw->ipv6 is always set for a new gateway
1088       sgw: cost calculation can now directly account for interface up/down
1089          status
1090       config parser: minor improvement for SmartGatewayEgressInterfaces
1091       pud: fix strto* result checking for out-of-range situations
1092       sgwdynspeed: fix strto* result checking for out-of-range situations
1093       Merge branch 'release-0.6.7'
1094       Merge branch 'release-0.6.7'
1095       release: fix up the CHANGELOG
1096       Merge branch 'release-0.6.7'
1097       sgw: fix deserialize_gw_speed
1098       txtinfo: fix formatting in ipc_print_sgw
1099       sgw: move 'struct sgw_egress_if' type into a separate include file
1100       sgw: store table & rule numbers in the sgw_egress_if structure
1101       sgw: add egress file reader settings
1102       sgw: add egress file reader
1103       sgw: track the interface index of an egress interface
1104       sgw: track the up status of an egress interface
1105       sgw: use the smartgw_tunnel_monitor to track up/down of egress interfaces
1106       sgw: introduce function to process multi-sgw changes
1107       sgw: determine best exit link in doRoutesMultiGw
1108       sgw: determine best overall link in doRoutesMultiGw
1109       sgw: add SmartGatewayStatusFile setting
1110       sgw: add the smart gateway status file writer
1111       sgw: add reportNewGateway function
1112       sgw: program best overall link routes
1113       sgw: program best egress link route
1114       sgw: program egress link routes
1115       sgwdynspeed: only allow the plugin in single-sgw mode
1116       sgw: fix default path costs for egress interfaces
1117       sgw: initialise the egress interfaces earlier
1118       sgw: lazily determine the sgw costs weights
1119       sgw: show all sgw tunnels in the output file instead of only the active
1120          one
1121       sgw: reset cached egress file timestamp on file access errors
1122       sgw: do not prematurely exit doRoutesMultiGw
1123       Merge branch 'msgw'
1124       sgw: do not make the egress types available only on linux
1125       sgw: initialise the egress best routes differently
1126       sgw: remove an unused variable
1127       sgw: unshadow a variable
1128       sgw: change the cached timestamp
1129       build: make TOPDIR an absolute path
1130       sgw: android has no getline(), implement it
1131       android: bump the NDK compiler version
1132       android: fixup regex makefile
1133       sgw: fix android build
1134       pud: duplicate android regex trick from nameservice
1135       sgw: always clear egress settings when this egress file is not readable
1136       Revert "sgw: always clear egress settings when this egress file is not
1137          readable"
1138       sgw: always clear egress settings when this egress file is not readable
1139       sgw: refresh the advertised speed when the best overall link changes
1140       sgw: when there is no best overall link advertise 0 bandwidth
1141       sgw: only advertise egress speeds
1142       sgw: refactor egress file change detection
1143       sgw: uplink and downlink fields can be 9 chars wide in the output file
1144       sgw: tune the status file for IPv4, making it a bit more compact
1145       sgw: use MAX_SMARTGW_SPEED instead of hard-coding it
1146       sgw: fix cost calculation for advertised speeds greater or equal than MAX
1147       sgw: the costs are signed numbers
1148       sgw: react to path cost changes on all active gateways
1149       txtinfo: fix output of /sgw command
1150       build: uberclean must also remove builddata.txt
1151       build: add some pud targets
1152       Rename 'struct interface' to 'struct interface_olsr'
1153
1154 Henning Rogge (6):
1155       Update version after release of v0.6.7.1
1156       Only use IPV6_TCLASS and IPV6_V6ONLY when defined
1157       Merge branch 'master' of git://olsr.org/olsrd
1158       Prevent memory leak when setting up new interface
1159       Fix bug of former commit
1160       Release v0.6.8
1161
1162 Nico Geyso (1):
1163       dyn gw plugin - add PingCmd parameter
1164
1165 0.6.7.1 -------------------------------------------------------------------
1166
1167 Ferry Huberts (6):
1168       android: use the machine specific NDK instead of always the 32bit variant
1169       android: fix build on 32 bit platform (see 0295e11)
1170       plugins: add a comment to clarify strange behaviour
1171       txtinfo: duplicate code in branch
1172       txtinfo: ensure null termination of string buffer
1173       jsoninfo: fix indentation
1174
1175 Henning Rogge (2):
1176       Update version after release of v0.6.7
1177       Release v0.6.7.1
1178
1179 Nico Geyso (2):
1180       jsoninfo: set_plugin_boolean stores into an int
1181       txtinfo: set_plugin_boolean stores into an int
1182
1183 0.6.7 -------------------------------------------------------------------
1184
1185 Note: In this release the configuration files have been moved from /etc into
1186       /etc/olsrd.
1187
1188 Note: In this release the pud plugin was upgraded to version 2.0.0.
1189       This is because of a breaking change in its wire format. If you have
1190       deployed the pud plugin on your mesh then you should update all nodes
1191       to the new pud plugin at the same time since there is no interoperability
1192       between the old version and the new version.
1193
1194 Alessio Caiazza (4):
1195       Hotfix for very long http headers also for jsoninfo
1196       Hotfix for very long http headers also for jsoninfo
1197       jsoninfo: HTTP headers with CORS (if requested)
1198       jsoninfo: HTTP headers with CORS (if requested)
1199
1200 Bernhard Marker (2):
1201       added json plugin to openwrt build Makefile
1202       json openwrt Makefile update
1203
1204 Charlie Root (1):
1205       Small fixes to allow compilation with OpenBSD
1206
1207 David Dahlberg (4):
1208       Adjusted OpenBSD installation paths
1209       An rc.d file for OpenBSD
1210       Remove linux-isms from Makefile
1211       Install openbsd/olsrd.rcd to /etc/rc.d/olsrd.
1212
1213 Ferry Huberts (170):
1214       release: use olsrd-version prefix for files in the tarballs
1215       Update version after branch of v0.6.6
1216       Remove mercurial ignore file; we use git
1217       build: ignore builddata.c when hashing sources
1218       Remove mercurial ignore file; we use git
1219       build: ignore builddata.c when hashing sources
1220       Revert "Update version after release of v0.6.5.3"
1221       Merge branch 'release-0.6.5'
1222       Merge branch 'release-0.6.6'
1223       release: fix the list of generated files
1224       release: update some comments
1225       release: refactor the checkVersionIncrementing function
1226       release: do not update the version on master when it's already higher
1227       release: only report that master changed when it was actually changed
1228       release: fix the list of generated files
1229       release: update some comments
1230       release: refactor the checkVersionIncrementing function
1231       release: do not update the version on master when it's already higher
1232       release: only report that master changed when it was actually changed
1233       release: checkVersionIncrementing: optionally allow equal versions
1234       release: also check against the Makefile version when branching
1235       release: checkVersionIncrementing: optionally allow equal versions
1236       release: also check against the Makefile version when branching
1237       Merge branch 'release-0.6.4'
1238       Merge branch 'release-0.6.5'
1239       Merge branch 'release-0.6.6'
1240       txtinfo: prevent buffer overflow
1241       Merge branch 'release-0.6.6'
1242       pud: wireformat-java: Makefile: also clean up the generated headers
1243       pud: wireformat: java: rename Git-SHA1 manifest header to Git-SHA
1244       pud: wireformat: java: also add a Git-Descriptor manifest header
1245       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
1246       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
1247       quagga: add some parentheses
1248       httpinfo: add smart gateway information tab
1249       txtinfo: add sgw command
1250       cfgfile: don't hard-code defaults in texts
1251       txtinfo: mention the /sgw command in the README
1252       Makefile: add cfgparser_install and cfgparser_clean targets
1253       linux: add -rdynamic to linker options for debug builds
1254       linux: fix 'add -rdynamic to linker options for debug builds'
1255       build: really _ignore_ builddata.c when hashing sources
1256       build: only print the md5 hash in hash_source.sh
1257       Makefile: fix builddata when building from tarball
1258       build: really _ignore_ builddata.c when hashing sources
1259       build: only print the md5 hash in hash_source.sh
1260       Makefile: fix builddata when building from tarball
1261       build: only re-generate src/builddata.c when needed
1262       cfgfile: no more magic numbers for RtTable* defaults
1263       sgw: move cost calculation into it own unit
1264       sgw: minor comment fixup
1265       make: fixup bashisms in hash_source.sh
1266       Move the configuration files into /etc/olsrd/
1267       pud: install configuration files under ETCDIR
1268       sgwdynspeed: install configuration files under ETCDIR
1269       build: hash_source.sh: specify the mktemp template
1270       pud: fix readIPAddress function
1271       pud: fix readIPAddress function
1272       httpinfo: center the header row of the smart gateway tables
1273       Merge branch 'release-0.6.5'
1274       Merge branch 'release-0.6.6'
1275       Fix #34: Description of "timeout" parameter in "nameservice" plugin...
1276       pud: remove getNodeId, rename getNodeIdWithLength to getNodeId
1277       pud: firm up setupNodeIdBinaryAndValidate
1278       pud: merge nodeIdType and nodeId parameters into nodeId parameter
1279       pud: remove some strlen's in nettools
1280       pud: remove a strlen in the DNS name handling of the wire format.
1281       pud: make wireformat constants unsigned
1282       pud: clarify the URN number
1283       pud: add MIP OID nodeId type
1284       pud: add an assert to silence a Coverity false positive
1285       pud: specify conversion base in readULL
1286       pud: don't copy memory we're not allowed to access
1287       pud: specify where to store the result in
1288          intSetupNodeIdBinaryDoubleLongLong
1289       pud: fix intSetupNodeIdBinaryDoubleLongLong for short values
1290       pud: add UUID nodeId type
1291       httpinfo: rename a function
1292       pud: make sure to only use accessor functions in the 'present' nmea field
1293       httpinfo: also show the present field on the nmea info
1294       Merge branch 'release-0.6.6'
1295       pud: fix java detection in the wireformat java bindings (again)
1296       pud: fix java detection in the wireformat java bindings (again)
1297       Merge branch 'release-0.6.5'
1298       Merge branch 'release-0.6.6'
1299       pud: do the same fix as in the previous commit, now for i386
1300       pud: do the same fix as in the previous commit, now for i386
1301       Merge branch 'release-0.6.5'
1302       Merge branch 'release-0.6.6'
1303       Make sure to save/restore errno in signal handlers
1304       Make sure to save/restore errno in signal handlers
1305       Merge branch 'release-0.6.5'
1306       Merge branch 'release-0.6.6'
1307       main: olsr_create_lock_file: fix return value check on 'open' call
1308       main: add some extra braces
1309       main: olsr_create_lock_file: fix return value check on 'open' call
1310       pud: use the nmea present field in the wireformat
1311       pud: fix readIPAddress function
1312       pud: fix readIPAddress function
1313       Merge branch 'release-0.6.5'
1314       Merge branch 'release-0.6.6'
1315       tok: improve the nmea_calc_crc function a bit
1316       tok: improve the nmea_calc_crc function a bit
1317       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
1318       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
1319       win32: accomodate old and new mingw setups
1320       mingw: fix Ubuntu 13.10 / Debian Wheezy mingw mess
1321       p2pd: add UseTTLDecrement configuration setting
1322       httpinfo: also show the path costs in the SmartGateway table
1323       txtinfo: also show the path costs in the SmartGateway table
1324       gw: make SmartGatewayDividerEtx a 32 bit number
1325       doc: add a gnuplot file to show the smart gateway cost calculation
1326       Fix some eclipse warnings
1327       p2pd: recompute the IPv4 header checksum after adjusting the TTL
1328       sgwdynspeed: ignore unknown options
1329       sgw: adjust policy routing script a bit
1330       sgw: rename a variable in parsing of sgw_egress_if
1331       sgw: preserve order of declared SmartGatewayEgressInterfaces
1332       sgwdynspeed: avoid spamming the log with 'unknown option' messages
1333       sgw: fix the policy routing script
1334       sgwdynspeed: allow string values and empty values in the speed file
1335       sgwdynspeed: fgets includes EOLs in the read string, strip them off
1336       sgwdynspeed: do not go outside of the string when stripping EOLs
1337       sgwdynspeed: rename 2 variables
1338       sgwdynspeed: ignore everything we don't understand when reading the file
1339       sgwdynspeed: make the EOL stripping much faster
1340       sgwdynspeed: remove some dead code
1341       gw: remove commands in comments concerning the policy routing script
1342       gw: fix the 'ip' delete argument in the policy routing script
1343       gw: simplify overlap checking code
1344       gw: Add endif comments
1345       gw: fix gateway takedown calculation
1346       gw: fix a typo
1347       gw: move path_cost into the gateway struct, ensure it's always up-to-date
1348       gw: add SmartGatewayMarkOffsetServerTunnel configuration parameter
1349       gw: fix null pointer dereferences in cost calculation
1350       gw: fix a minor copy/paste typo
1351       gw: when a node advertises maximum bandwidth then only consider path costs
1352       README-Olsr-Extensions: Fix some typos
1353       pud: update  nmealib samples Makefile
1354       sgw: rework policy rules setup
1355       sgwdynspeed: rename a function parameter to avoid a compiler warning
1356       common: add an extra check in autobuf_enlarge to avoid a compiler warning
1357       pud: update nmealib to 2.0.0
1358       pud: nmealib: Fix a typo in Tobias's surname
1359       txtinfo: make the sgw output better machine parseable
1360       pud: nmealib: include latest fixes
1361       pud: nmealib: fix isInvalidNMEACharacter function
1362       p2pd: fix recomputeIPv4HeaderChecksum function
1363       Revert "Use strscpy instead of strcpy"
1364       pud: nmealib: fix return value of nmea_parser_init
1365       pud: disable distribution of position updates over OLSR when olsrTtl is 0
1366       Fix strange coding in the 'long headers' fix
1367       Fix strange coding in the 'long headers' fix
1368       httpinfo: the position timestamp month is zero based
1369       Merge tag 'v0.6.5.6'
1370       Merge tag 'v0.6.6.2'
1371       Revert "Fix for win32 compiling with i686-w64-mingw32-gcc on ubuntu"
1372       pud: nmealib: NMEA String Length Override Support
1373       Fix a signed/unsigned warning
1374       gw: change the costs type to signed 64bits
1375       build: gui: do not overwrite the LDFLAGS but append to it
1376       build: add address santizer, compile with SANITIZE_ADDRESS=1
1377       p2pd: fir compile warning, initialise ipHeader
1378       gui: fix 'warning: multiple common of ...' warnings
1379       conf: ensure the egress interface names have a valid length
1380       README: improve the smart gateway text a bit
1381       sgw: multi-sgw mode is only supported on IPv4
1382       CHANGELOG: add a note about the configuration files
1383       Merge remote-tracking branch 'olsr/openbsd'
1384       Branch v0.6.7
1385
1386 Hans-Christoph Steiner (3):
1387       purge ancient debian/ folder, people should use the current files
1388       add instructions for building Debian package from canonical sources
1389       clarify instructions for http:// downloading of debian/ folder
1390
1391 Henning Rogge (32):
1392       Fix multicast join for IPv6
1393       Release v0.6.5.3
1394       Update version after release of v0.6.5.3
1395       Update version after release of v0.6.5.3
1396       Release v0.6.5.4
1397       Update version after release of v0.6.5.4
1398       Fix segfault in cfgparser standalone executable
1399       Fix build break for MinGW compilation on Fedora 19.
1400       Fix build break for MinGW compilation on Fedora 19.
1401       Release v0.6.5.5
1402       Update version after release of v0.6.5.5
1403       Ignore IFF_RUNNING when checking if an interface is up or down.
1404       use inet_pton instead of inet_aton
1405       win32: do not add -Wcast-qual to compiler warning flags
1406       Fix processing error for fragmented hellos
1407       Fix some spelling mistakes
1408       Merge branch 'master' of http://olsr.org/git/olsrd
1409       Fix processing error for fragmented hellos
1410       Fix some spelling mistakes
1411       Try to delete and retry for BSD ipv4 too
1412       Use strscpy instead of strcpy
1413       Smooth LQ calculation if link suddenly breaks.
1414       Clean before compile when using Openwrt olsrd-stable-git makefile
1415       Fix copypaste error
1416       Hotfix for very long http headers
1417       Fix stupid mistake, don't know why gcc didn't complained locally
1418       Hotfix for much too long http headers
1419       Release v0.6.5.6
1420       Make link debug output source a bit more readable
1421       Add LQ/NLQ/ETX to neighbor table debug output
1422       Add boolean ipv6only parameter to txtinfo and jsoninfo
1423       Release v0.6.7
1424
1425 Manuel Munz (1):
1426       Fix jsoninfo again after a regression which was introduced with
1427
1428 Markus Kittenberger (1):
1429       fix: TXTINFO_ALLOW_LOCALHOST - add missing ntohl()
1430
1431 Patrick Grimm (2):
1432       jsoninfo: only listen on IPv6 when running under IPv6
1433       txtinfo: only listen on IPv6 when running under IPv6
1434
1435 Ronald in 't Velt (2):
1436       Fix setsockopt for setting Traffic Class in IPv6
1437       Fix setsockopt for setting Traffic Class in IPv6
1438
1439 Saverio Proto (2):
1440       txtinfo: update README file
1441       Missing patch of header files for "Add boolean ipv6only parameter to
1442          txtinfo and jsoninfo"
1443
1444 Scott Kidder (2):
1445       jsoninfo: ensure output is wrapped in curly braces.
1446       jsoninfo: ensure output is wrapped in curly braces.
1447
1448 Teco Boot (2):
1449       Added LINUX_NL80211 readme file
1450       Support for FIB metric configuration, other than 2
1451
1452 Yury Popov (1):
1453       Fix for win32 compiling with i686-w64-mingw32-gcc on ubuntu
1454
1455 0.6.6.2 -------------------------------------------------------------------
1456
1457 Alessio Caiazza (2):
1458       Hotfix for very long http headers also for jsoninfo
1459       jsoninfo: HTTP headers with CORS (if requested)
1460
1461 Ferry Huberts (8):
1462       pud: fix java detection in the wireformat java bindings (again)
1463       pud: do the same fix as in the previous commit, now for i386
1464       Make sure to save/restore errno in signal handlers
1465       main: olsr_create_lock_file: fix return value check on 'open' call
1466       pud: fix readIPAddress function
1467       tok: improve the nmea_calc_crc function a bit
1468       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
1469       Fix strange coding in the 'long headers' fix
1470
1471 Henning Rogge (5):
1472       Update version after release of v0.6.6.1
1473       Fix processing error for fragmented hellos
1474       Fix some spelling mistakes
1475       Hotfix for much too long http headers
1476       Release v0.6.6.2
1477
1478 0.6.6.1 -------------------------------------------------------------------
1479
1480 Henning Rogge (2):
1481       Update version after release of v0.6.6
1482       Release v0.6.6.1
1483
1484 Manuel Munz (1):
1485       Fix jsoninfo again after a regression which was introduced with
1486
1487 0.6.6 -------------------------------------------------------------------
1488
1489 Bastian Bittorf (3):
1490       [hotfix] plugin: httpinfo: in case of an unrecoverable error ("could not
1491          initialize HTTP socket") exit for returnvalue != 0
1492       plugin: dot_draw: readme: make it clear, that it only opens an
1493          IPv4-socket, so a 'telnet ::1 2004' is not possible
1494       plugin: dot_draw: readme: replaced a b0rken link
1495
1496 Ferry Huberts (146):
1497       Update version after branch of v0.6.5
1498       gateway: store current gateway(s) in a struct
1499       gateway: lazily allocate the current gateway structs
1500       gateway: add path_cost to 'set gateway' interface
1501       gateway: add interface to get the gateway costs
1502       gateway: simplify by using the new costs interface
1503       gateway: add gateway_list.{c,h}
1504       gateway: keep track of the active gateways in a list
1505       Merge branch 'release-0.6.5'
1506       pud: java make target is dependent on library make target
1507       Merge branch 'release-0.6.5'
1508       Merge branch 'release-0.6.5'
1509       json_info: only output smart gateway info on Linux
1510       kernel_route: olsr_os_inetgw_tunnel_route can now take the table
1511       gateway: let the gateway code determine the tunnel name
1512       gateway: remove the worst gateway before adding new one
1513       gateway: add SmartGatewayUseCount configuration parameter
1514       gateway: use SmartGatewayUseCount setting the the gateway lists
1515       gateway: add SmartGatewayEgressInterfaces configuration parameter
1516       gateway: add SmartGatewayMarkOffset{Egress,Tunnels} configuration
1517          parameters
1518       gateway: add SmartGatewayPolicyRoutingScript configuration parameter
1519       gateway: initialise a set of fixed tunnel names in/for multi-gateway mode
1520       gateway: initialise the egress interface names in/for multi-gateway mode
1521       gateway: use fixed tunnel names in/for multi-gateway mode
1522       gateway: setup and clear table specific default routes in/for
1523          multi-gateway mode
1524       gateway: setup/cleanup multi-gateway mode during startup/shutdown of olsrd
1525       gateway: introduce and use MULTI_GW_MODE define
1526       gateway: enable multi-gateway mode
1527       gateway: convert some defines into inline functions
1528       kernel_route: olsr_os_inetgw_tunnel_route now needs the table explicitly
1529       Merge branch 'multigw'
1530       gateway: remove 2 superfluous asserts
1531       gateway: add an assert to prevent an 'unused' warning
1532       gateway: also adjust the IPv6 gateway list in olsr_update_gateway_entry
1533       gateway: fix policy script permissions checking
1534       gateway: the gateway policy script really is a bash script
1535       gateway: minor indentation fixes in the gateway script
1536       gateway: fix copy/paste mistake in setting up the egress rules
1537       gateway: remove policy rules before adding them
1538       gateway: ignore errors in remove-before-add rule removals
1539       Revert "linux: name is required to be non-null in
1540          olsr_os_cleanup_iptunnel"
1541       gateway: do not show (bogus) errors
1542       gateway: cleanup the server tunnel later
1543       cfgparser: add SmartGatewayAlwaysRemoveServerTunnel configuration
1544          parameter
1545       gateway: use SmartGatewayAlwaysRemoveServerTunnel configuration parameter
1546       gateway: fix a revert problem
1547       gateway: use tnl_(4|6) tunnel names instead of tnl(4|6)_
1548       gateway: properly set the egress interface names
1549       json_info: do not loop forever on smart gateway egress interfaces
1550       pud: the best uplink gateway is the same as the current (smart) gateway
1551       pud: there is no hard dependency on smart gateway
1552       pud: only forward downlinked messages when the smart gateway system is
1553          enabled
1554       pud: update documentation about smart gateway changes
1555       gateway: fix 2 small typos in a comment
1556       Revert "pud: the best uplink gateway is the same as the current (smart)
1557          gateway"
1558       pud: minor update resulting from the previous revert
1559       pud: minor update to getBestUplinkGateway
1560       gateway: minor improvement to get_unused_iptunnel_name
1561       gateway: update some comments
1562       gateway: remove 2 unneeded asserts
1563       gateway: use standard macro to loop over the gateway tree in
1564          olsr_cleanup_gateways
1565       gateway: fix 'eligible' conditions in gw_default_choose_gateway
1566       gateway: minor speed improvement in gw_default_choose_gateway
1567       android: fix the path of the tunnel node in the /dev tree
1568       pud: use the proper __ANDROID__ define
1569       gateway: allow advertisement of zero bandwidth
1570       gateway: add some comments
1571       gateway: also set (update) the gateway when costs have changed
1572       gateway: find_interfaceName only works in multi-gateway mode
1573       gateway: simplify gw_default_calc_threshold
1574       gateway: improve comments of gw_default_weigh_costs a bit
1575       gateway: rename some variables to make it more readable
1576       gateway: fix stable count dampening in gw_default_timer
1577       gateway: do not use bitwise operators for logic conditions
1578       gateway: reverse semantics of two variables
1579       gateway: always select a new gateway when threshold != 0
1580       main: add -pidfile command line option
1581       main: fix pidfile compilation on windows
1582       Merge branch 'release-0.6.5'
1583       make: enable 32/64 bit cross compilation
1584       pud: pull in nmealib v1.0.4
1585       gateway: remove some 'unused' code from sgw script
1586       make: fix typos in 'enable 32/64 bit cross compilation' commit
1587       pud: enable 32/64 bit cross compilation for the java build
1588       make: ifdef fixups
1589       Merge branch 'release-0.6.5'
1590       Merge branch 'release-0.6.5'
1591       Merge branch 'release-0.6.5'
1592       pud: detect the java include directory
1593       dyn_gw: remove bogus include
1594       make: fix a type in the Linux SUBDIRS assignment
1595       make: add dyn_gw, mdns and p2pd to the Android SUBDIRS
1596       pud: update nmealib 32/64 cross compilation
1597       Revert "pud: update nmealib 32/64 cross compilation"
1598       main: fix 2 minor warnings for win64 build on debian squeeze
1599       make: only install sgw related files when sgw is supported
1600       mdns: fix container_of pointer arith
1601       mdns: don't use non-standard ushot type
1602       mdns: fix three alignment warnings
1603       mdns: supported on Android
1604       p2pd: supported on Android
1605       make: ensure win32 install respects DESTDIR
1606       Merge branch 'release-0.6.5'
1607       gateway: work around kernel IPIP module initialisation bug
1608       gateway: fix overlap in success/fail IPIP tunnel init
1609       doc: make the documentation generation commands a bit more verbose
1610       pud: detect the java include directory
1611       pud: better detection of java jdk
1612       pud: better detection of java jdk
1613       gateway: work around kernel IPIP module initialisation bug
1614       Merge branch 'release-0.6.5'
1615       PUD: nmealib: fix parsing of date in GPRMC
1616       pud: nmealib: fixup the previous commit
1617       main: use /dev/urandom by default
1618       main: use /dev/urandom by default
1619       pud: set local loopback for multicast tx
1620       pud: set local loopback for multicast tx
1621       Merge branch 'release-0.6.5'
1622       arprefresh: fix some spelling
1623       arprefresh: document the BPF program to make it readable
1624       arprefresh: use the ARRAYSIZE macro
1625       arprefresh: remove a comment
1626       arprefresh: do not process IPv6 packets when in IPv4 mode
1627       arprefresh: add a note about VLANs and IPv6
1628       remove pthread usage as much as possible
1629       Branch v0.6.6
1630       Remove mercurial ignore file; we use git
1631       build: ignore builddata.c when hashing sources
1632       build: move build data into its own include file
1633       gateway: always deal with 64bit scaled path costs
1634       gateway: introduce and use removeGatewayFromList function
1635       gateway: add SmartGatewayTakeDownPercentage configuration parameter
1636       gateway: proactively take down 'expensive' gateways
1637       release: fix the list of generated files
1638       release: update some comments
1639       release: refactor the checkVersionIncrementing function
1640       release: do not update the version on master when it's already higher
1641       release: only report that master changed when it was actually changed
1642       release: checkVersionIncrementing: optionally allow equal versions
1643       release: also check against the Makefile version when branching
1644       txtinfo: prevent buffer overflow
1645       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
1646       build: really _ignore_ builddata.c when hashing sources
1647       build: only print the md5 hash in hash_source.sh
1648       Makefile: fix builddata when building from tarball
1649       pud: fix readIPAddress function
1650
1651 Hans-Christoph Steiner (3):
1652       GNU/Linux: add service profile for 'ufw' firewall package
1653       update Commotion example olsrd.conf to represent current project state
1654       dyn_gw/dyn_gw_plain require /proc, remove from default build on non-Linux
1655
1656 Henning Rogge (7):
1657       Fixed debug output of Scheduler polling interval
1658       Fix multicast join for IPv6
1659       Merge branch 'master' of http://olsr.org/git/olsrd
1660       Update version after release of v0.6.5.2
1661       Update version after release of v0.6.5.2
1662       Fix build break for MinGW compilation on Fedora 19.
1663       Release v0.6.6
1664
1665 Ronald in 't Velt (1):
1666       Fix setsockopt for setting Traffic Class in IPv6
1667
1668 Saverio Proto (3):
1669       main: fix the check on inet_pton return value because it returns 1 on
1670          success.
1671       mDNS: remove from Makefile PTHREAD useless dependency
1672       txtinfo: update README file
1673
1674 Scott Kidder (1):
1675       jsoninfo: ensure output is wrapped in curly braces.
1676
1677 Vasilis Tsiligiannis (1):
1678       olsrd-quagga: Fix memory leak when adding and deleting routes
1679
1680 equinox (1):
1681       quagga plugin routes additional
1682
1683 0.6.5.6 -------------------------------------------------------------------
1684
1685 Alessio Caiazza (2):
1686       Hotfix for very long http headers also for jsoninfo
1687       jsoninfo: HTTP headers with CORS (if requested)
1688
1689 Ferry Huberts (8):
1690       pud: fix java detection in the wireformat java bindings (again)
1691       pud: do the same fix as in the previous commit, now for i386
1692       Make sure to save/restore errno in signal handlers
1693       main: olsr_create_lock_file: fix return value check on 'open' call
1694       pud: fix readIPAddress function
1695       tok: improve the nmea_calc_crc function a bit
1696       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
1697       Fix strange coding in the 'long headers' fix
1698
1699 Henning Rogge (5):
1700       Update version after release of v0.6.5.5
1701       Fix processing error for fragmented hellos
1702       Fix some spelling mistakes
1703       Hotfix for much too long http headers
1704       Release v0.6.5.6
1705
1706 0.6.5.5 -------------------------------------------------------------------
1707
1708 Ferry Huberts (4):
1709       build: really _ignore_ builddata.c when hashing sources
1710       build: only print the md5 hash in hash_source.sh
1711       Makefile: fix builddata when building from tarball
1712       pud: fix readIPAddress function
1713
1714 Henning Rogge (3):
1715       Update version after release of v0.6.5.4
1716       Fix build break for MinGW compilation on Fedora 19.
1717       Release v0.6.5.5
1718
1719 Scott Kidder (1):
1720       jsoninfo: ensure output is wrapped in curly braces.
1721
1722 0.6.5.4 -------------------------------------------------------------------
1723
1724 Ferry Huberts (11):
1725       Remove mercurial ignore file; we use git
1726       build: ignore builddata.c when hashing sources
1727       release: fix the list of generated files
1728       release: update some comments
1729       release: refactor the checkVersionIncrementing function
1730       release: do not update the version on master when it's already higher
1731       release: only report that master changed when it was actually changed
1732       release: checkVersionIncrementing: optionally allow equal versions
1733       release: also check against the Makefile version when branching
1734       txtinfo: prevent buffer overflow
1735       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
1736
1737 Henning Rogge (2):
1738       Update version after release of v0.6.5.3
1739       Release v0.6.5.4
1740
1741 0.6.5.3 -------------------------------------------------------------------
1742
1743 Ferry Huberts (5):
1744       pud: detect the java include directory
1745       pud: better detection of java jdk
1746       gateway: work around kernel IPIP module initialisation bug
1747       main: use /dev/urandom by default
1748       pud: set local loopback for multicast tx
1749
1750 Henning Rogge (2):
1751       Update version after release of v0.6.5.2
1752       Release v0.6.5.3
1753
1754 Ronald in 't Velt (1):
1755       Fix setsockopt for setting Traffic Class in IPv6
1756
1757 0.6.5.2 -------------------------------------------------------------------
1758
1759 Henning Rogge (2):
1760       Update version after release of v0.6.5.1
1761       Release v0.6.5.2
1762
1763 Saverio Proto (1):
1764       main: fix the check on inet_pton return value because it returns 1 on
1765          success.
1766
1767 Vasilis Tsiligiannis (1):
1768       olsrd-quagga: Fix memory leak when adding and deleting routes
1769
1770 0.6.5.1 -------------------------------------------------------------------
1771
1772 Ferry Huberts (1):
1773       release: use olsrd-version prefix for files in the tarballs
1774
1775 Henning Rogge (2):
1776       Update version after release of v0.6.5
1777       Release v0.6.5.1
1778
1779 0.6.5 -------------------------------------------------------------------
1780
1781 Aaron Kaplan (1):
1782       chose the proper #define in order to take the right #include
1783
1784 Alessandro (4):
1785       mDNS: Implemented Host Filtering for ipv4 and ipv6, writing in the config
1786          file which hosts to ignore. The mDNS packets from the ignored hosts
1787          will be ignored and not propagated in the network
1788       mDNS: Updated README file for mDNS plugin
1789       mDNS: Reworked logic of router Election. The election is now handled on
1790          interface basis, because the router could have one interface where it
1791          needs to be master and another interface where it needs to be
1792          disabled. There was a logical bug in the earlier implementation.
1793       mDNS: BUGFIX, mDNS plugin, hello message of router election not sent if
1794          debug = 0
1795
1796 Alessandro Gnagni (3):
1797       mDNS: Fixing loops for mDNS packets when mDNS plugin is misconfigured
1798       mDNS: review of Alessandro Gnagni patch, inserted a config value to
1799          enable or disable TTL check and change, default is enabled.
1800       mDNS: Implemented router election mechansim to have only 1 active mDNS
1801          OLSR router in 1 LAN
1802
1803 Andreas Tonnesen (1):
1804       x86_64 patch from Bernd
1805
1806 Bernd Petrovitsch (1):
1807       * added -Wbad-function-cast
1808
1809 Ferry Huberts (219):
1810       gateway: clarify header with extra comments and ordering
1811       gateway: reorder functions to reflect order in header
1812       gateway: formatting
1813       gateway: remove 'unused' v{4,6}gw_choosen_external
1814       gateway: add asserts to validate gw_handler
1815       gateway: clear gw_handler during cleanup
1816       gateway: add init and cleanup hooks for gateway plugins
1817       gateway: rename hooks
1818       gateway: add comments to struct olsr_gw_handler function prototypes
1819       gateway: inline olsr_find_gateway_entry function
1820       gateway: inline olsr_trigger_inetgw_selection function
1821       gateway: rename a function
1822       gateway: simplify a condition
1823       gateway: push an if condition into its nested if's
1824       gateway: merge 2 code blocks
1825       gateway: the gateway to set must be in the gateway tree
1826       gateway: the gateway to set must either be an IPv4 or IPv6 gateway or
1827          both
1828       gateway: prevent 2 NULL dereferences
1829       gateway: merge 2 code blocks
1830       pud: force pending buffer out if not enough space for our message
1831       pud: include nmealib v1.0.3
1832       http_info: pud satellites in use are now green, not in use are red
1833       ifdef: fix some include ifdefs
1834       update comments on all ifdefs
1835       olsrd_plugin: remove #if 1
1836       gateway: rename 2 variables
1837       remove most '#if 0' blocks
1838       gateway: merge the olsr_get_ipv{4,6}_inet_gateway functions
1839       mdns: fix compilation warnings
1840       mdns: fix a compilation warning / copy-paste error
1841       bsd: fixup comment
1842       improve VERBOSE handling
1843       common: fix varargs cleanup
1844       pud: fix resource leak
1845       pud: fix socket error
1846       pud: fix socket error
1847       pud: fix position file stat/use race
1848       pud: fix getBestUplinkGateway
1849       pud: nmealib: fix copy/paste error
1850       pud: nmealib: fix buffer overrun
1851       pud: nmealib: fix buffer overrun
1852       pud: nmealib: fix invalid format string conversion
1853       add a COVERITY instructions text file
1854       pud: nmealib: fix invalid format string conversion
1855       pud: nmealib: fix invalid format string conversion
1856       pud: fix closing fd
1857       pud: fix checking of downlink message IP version
1858       sgwdynspeed: fix resource leak and file stat/use race
1859       bmf: explicitly cast fgetc result into a char
1860       bmf: do not close an 'error' socket return value
1861       bmf: do not dereference NULL pointer
1862       httpinfo: do not close an 'error' socket return value
1863       httpdinfo: fix resource leak
1864       secure: can only work for IPv4, so assert on it
1865       secure: do not hard-code a sizeof()
1866       secure: decrease a (stack allocated) buffer size
1867       secure: use sizeof() of the fields being copied
1868       secure: decrease a (stack allocated) buffer size
1869       secure: initialise rrmsg correctly
1870       secure: can only work for IPv4, so assert on it
1871       secure: do not hard-code a sizeof()
1872       secure: decrease a (stack allocated) buffer size
1873       secure: use sizeof() of the fields being copied
1874       secure: decrease a (stack allocated) buffer size
1875       secure: initialise crmsg correctly
1876       secure: can only work for IPv4, so assert on it
1877       secure: do not hard-code a sizeof()
1878       secure: decrease a (stack allocated) buffer size
1879       secure: initialise cmsg correctly
1880       nameservice: fix a resource leak
1881       nameservice: fix wrong size argument
1882       nameservice: check return value of fcntl
1883       nameservice: do not close an fd that is not open
1884       nameservice: remove some dead code
1885       jsoninfo: fix a resource leak
1886       jsoninfo: make sure that uuid is null-terminated
1887       jsoninfo: remove some dead code
1888       jsoninfo: remove pointless compare
1889       mdns: suppress a Coverity warning
1890       mdns: remove some dead code
1891       mdns: do not close an fd that is not open
1892       mdns: do not close an fd that is not open
1893       mdns: check return value of inet_pton
1894       mdns: check return value of sendto
1895       p2pd: do not close an fd that is not open
1896       p2pd: do not close an fd that is not open
1897       p2pd: remove some dead code
1898       bmf: do not close an fd that is not open
1899       pud: remove some dead code
1900       quagga: explicitly ignore return value of fcntl
1901       tas: fix a memory leak
1902       txtinfo: remove some dead code
1903       main: fix an Out-of-bounds access
1904       cfgparser: fix some memory leaks
1905       cfgparser: fix a copy/paste error and resulting memory leak
1906       cfgparser: fix dereference before assert
1907       linux: apm: fix retry opening of apm proc file
1908       olsr_switch: fix a memory leak
1909       lq: make sure that info_head != NULL
1910       lq: make sure last_ip != NULL
1911       android: fix type punning warning
1912       pud: fix alignment warning
1913       gateway: initialise the handler before setting up the tunnel
1914       gateway: cleanup: free the allocated memory cookie
1915       gateway: ensure cleanup uses the reverse order of init
1916       gateway: minor simplification in olsr_delete_gateway_entry
1917       gateway: allow immediate removal of a gateway entry
1918       gateway: split olsr_delete_gateway_entry
1919       gateway: walk the gateway tree to properly cleanup
1920       linux: sanitise ACPI battery data
1921       defs: fix strscpy null pointer dereference
1922       tas: lua: official source code for 5.0.2
1923       tas: lua: run gnu-indent.sh script
1924       cleanup, 1. step (to get some local changes away):
1925       * added -Wcast-qual: this killed lots of unnecessary type-casts
1926       Fix sytax errs and line break quirks for gnu-indent
1927       ARM alignment warnings fixed
1928       Patch ALIGN_NOWARN_ARM macro for better priority handling.
1929       use the POSIX standard '__linux__' macro instead of 'linux'
1930       tas: lua: run gnu-indent.sh script
1931       tas: lua: sync up to official source code with fixes
1932       Merge branch 'lua-official-502'
1933       cookie: an array already is a pointer
1934       cookie: add an assert
1935       Revert "httpdinfo: fix resource leak"
1936       httpinfo: add a comment about why the client socket is not closed
1937       gateway: minor optimisation
1938       gateway: improve cleanup
1939       gateway: rename gw_mem_cookie to gateway_entry_mem_cookie
1940       gateway: add a define for the tunnel name
1941       gateway: stub out olsr_print_gateway_entries on #ifdef NODEBUG
1942       duplicate_set: stub out olsr_print_duplicate_table on #ifdef NODEBUG
1943       link_set: stub out olsr_print_link_set on #ifdef NODEBUG
1944       mpr_set: stub out olsr_print_mpr_set on #ifdef NODEBUG
1945       routing_table: stub out olsr_print_routing_table on #ifdef NODEBUG
1946       tc_set: stub out olsr_print_tc_table on #ifdef NODEBUG
1947       two_hop_neighbor_table: stub out olsr_print_two_hop_neighbor_table on
1948          #ifdef NODEBUG
1949       hna_set: stub out olsr_print_hna_set on #ifndef NODEBUG
1950       hna_set: stub out olsr_print_hna_set on #ifdef NODEBUG and fix
1951       neighbor_table: stub out olsr_print_neighbor_table on #ifndef NODEBUG
1952       neighbor_table: stub out olsr_print_neighbor_table on #ifdef NODEBUG and
1953          fix
1954       use INET_ADDRSTRLEN and INET6_ADDRSTRLEN instead of magic constants
1955       gateway: only remove a tunnel when there is one
1956       gateway: rename a variable
1957       gateway: minor improvement in NULL comparisons
1958       hna_set: olsr_ip_prefix_to_string outputs a wider string
1959       gateway: refactor olsr_set_inet_gateway
1960       Merge tag 'v0.6.4'
1961       win32: use #ifdef _WIN32
1962       Makefile: fixup some forgotten make command prefixes
1963       Makefile: add gui target
1964       Makefile: always pass VERBOSE to the make command
1965       gui: linux: minor Makefile fixup
1966       gui: linux: clean and install are phony targets
1967       gui: linux: add VERBOSE handling
1968       gui: linux: fix some 'may be used uninitialized' compiler warnings
1969       gui: linux: use toplevel make options
1970       gui: linux: fix some 'noreturn' compiler warnings
1971       gui: linux: fix some 'discards const qualifier' compiler warnings
1972       gui: linux: fix some 'old-style function definition' compiler warnings
1973       gui: linux: fix 'too few arguments to function ipc_connect' compiler
1974          warning
1975       gui: linux: fix a 'mixed declarations and code' compiler warning
1976       gui: linux: fix some 'unused parameter' compiler warnings
1977       Revert "gui: linux: fix some 'may be used uninitialized' compiler
1978          warnings"
1979       gui: linux: fix some 'may be used uninitialized' compiler warnings
1980       gui: linux: fix some 'shadow' compiler warnings
1981       gui: linux: fix inccorrect sizeof()
1982       gui: linux: fix string buffer overflow
1983       gui: linux: fix string buffer overflow
1984       gui: linux: fix the string buffer overflow better
1985       gateway: simplify stopping the cleanup timer
1986       tas: remove plugin
1987       main: do not seed the random number generator with the process id
1988       win32: remove unused getpid() function
1989       hna_set: explicitly cast to (time_t *) in calls to localtime()
1990       neighbor_table: explicitly cast to (time_t *) in calls to localtime()
1991       main: improve random number generator seed
1992       bmf: do the minimum length check earlier
1993       changelog: update to current state
1994       print_packet: fix wrong use of sizeof()
1995       main: remove -dispin and -dispout command line options
1996       main: add release script
1997       Update version after release of v0.6.4
1998       Changelog: remove 0.6.5 preliminary changelog
1999       Merge branch 'release-0.6.4'
2000       bmf: check minimumLength against buffer size
2001       sgwdynspeed: put plugin config in olsrd.conf.sample
2002       pud: put plugin config in olsrd.conf.sample
2003       cookie: raise the number of cookies
2004       pud: enable dynamic polling of the position file
2005       gateway: only check smart gateway configuration on linux
2006       linux: put #ifdef __linux__ around code
2007       doc: add doxygen documentation generation
2008       doc: fix common documentation tags
2009       doc: fix linux specific documentation tags
2010       doc: fix unix specific documentation tags
2011       doc: fix bsd specific documentation tags
2012       doc: fix win32 specific documentation tags
2013       doc: do not generate documentation for gui code
2014       release: move the stringTrim function up a bit
2015       release: make gitIsGitDirectory do the correct thing
2016       release: fix usage of literal dot in regular expressions
2017       release: move into the base directory earlier
2018       release: convert some code into checkIsOlsrdGitCheckout function
2019       release: convert some code into checkGitSigningKeyIsConfigured function
2020       release: convert some code into getPrevRelTag function
2021       release: the script can now also create a release branch
2022       Merge branch 'release-0.6.4' into mmmm
2023       Branch v0.6.5
2024       pud: change java include path to generic java include path
2025       pud: java make target is dependent on library make target
2026       doc: clean up the latex directory if empty
2027       Revert "linux: name is required to be non-null in
2028          olsr_os_cleanup_iptunnel"
2029       gateway: fix a revert problem
2030       android: fix the path of the tunnel node in the /dev tree
2031       gateway: fix stable count dampening in gw_default_timer
2032       gateway: always select a new gateway when threshold != 0
2033       main: add -pidfile command line option
2034       main: fix pidfile compilation on windows
2035
2036 Frank de Brabander (4):
2037       New feature: support for Linux NL802.11 wireless link information in cost
2038          calculation.
2039       Merge branch with new lq plugin for NL80211 support
2040       Incorporate fix by Ferry Hubert for float to double promotion
2041       Fix optional compilation of the nl80211 lq plugin
2042
2043 Hans-Christoph Steiner (9):
2044       use the POSIX standard '__linux__' macro instead of 'linux'
2045       use the Microsoft standard '_WIN32' macro instead of the self-defined
2046          'WIN32'
2047       olsrd-adhoc-setup: use static BSSID by default to assoc. with the right
2048          mesh
2049       olsrd-adhoc-setup: configure NetworkManager to be nice when adhoc is
2050          manually setup
2051       fix misspelling: 'adress' --> 'address'
2052       fixed misspelling: usefull -> useful
2053       add gcc hardening flags to linux-gtk GUI
2054       android: update to use gcc 4.6, available starting with NDK r8
2055       android: gcc 4.6 comes with NDK r8b and is not in NDK r8
2056
2057 Henning Rogge (29):
2058       Pud: Do not use the variable name strlen.
2059       Fix buffer overflow in mdns plugin
2060       Add -Werror=format-security
2061       Add VERBOSE flag to makefile to display full gcc commands
2062       Fix slightly insulting error message.
2063       Moved regex library to a makefile of its own to solve the issues with
2064          compiler warnings.
2065       fix control flow if kill() command fails to end program
2066       fix wrong sizeof() parameter
2067       Convert allocated memory into temporary variable
2068       Protect against stupid data from ACPI
2069       Close socket if bind() fails.
2070       Merge branch 'master' of http://olsr.org/git/olsrd
2071       Use strscpy instead of strncpy.
2072       Check inet_pton return value
2073       Close file descriptor if error happens
2074       Fix scanf() format vulnerabilities
2075       Fix command line parsing macro
2076       Fail in IPC initializationis always fatal.
2077       fail of non-blocking netlink socket is not fatal
2078       Declare olsr_exit() as noreturn
2079       Interface will always be found.
2080       no hostroute possible in this if() branch
2081       reset link timer if not set
2082       Remove dead codepath
2083       Cleanup error handling in ipc_init()
2084       Remove unnecessary asserts
2085       Make sure calculated header length does not skip over buffer
2086       Fix multicast join for IPv6
2087       Release v0.6.5
2088
2089 Saverio Proto (12):
2090       mDNS: Skeleton code for new host filter feature in mDNS plugin
2091       mDNS: Upgrading the container_of.h that was backported from src/common in
2092          master
2093       mDNS: Fix most of the warnings from the compiler
2094       mDNS: Update checksum field of the IPv4 Header after altering TTL
2095       mDNS: trivial debug print fix and code readibility improvement
2096       mDNS: Change version of mdns plugin to 1.0.1 after GSoC 2012 work by
2097          Alessandro Gnagni
2098       mDNS: init ListOfFilteredHosts in the proper place and not at every
2099          received packet
2100       mDNS: trivial, removed TODO from code for something that was implemented
2101       mDNS: better debug support for filtered hosts feature
2102       mDNS: Fixed typo in README
2103       Revert "mDNS: init ListOfFilteredHosts in the proper place and not at
2104          every received packet"
2105       Merge remote-tracking branch 'origin/mDNS-plugin-GSoC-2012'
2106
2107 0.6.4 --------------------------------------------------------------------
2108
2109 Bugfix and plugin release 0.6.4
2110 - Update of Smartgateway system
2111 - small updates to several plugins
2112 - lots of updates for PUD plugin
2113
2114 0.6.3 --------------------------------------------------------------------
2115
2116 Bugfix and plugin release 0.6.3
2117
2118 - PUD plugin (position update plugin)
2119 - JSONinfo plugin
2120 - sgwdynspeed plugin (select dynamic smart gateway based on gw speed)
2121 - Update on Quagga plugin (for new Quagga)
2122 - Fixes for Androids
2123 - Some fixes for GTK and Win32 gui
2124 - Lots of core fixes to support new compiler warnings
2125
2126 0.6.2 --------------------------------------------------------------------
2127
2128 Bugfix release for 0.6.1
2129
2130 - Compatibility for Linux kernel 3.x
2131 - Lots of small fixes
2132 - reworked makefile output
2133 - updates for some plugins
2134 - repair for Smartgateway feature
2135
2136 Read GIT changelog at http://olsr.org/git to see a complete history.
2137
2138 0.6.1 --------------------------------------------------------------------
2139
2140 Bugfix release for 0.6.0
2141
2142 Markus Kittenberger <Markus.Kittenberger@gmx.at>
2143 - Major bugfix for the neighbor table when a neighbor gets a new main IP.
2144 - add /interface command to txtinfo, allow multiple commands per request
2145
2146 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
2147 - wait up to four seconds for aquiring the OLSRd lock. This helps to
2148   shutdown OLSRd with a script and restart it at once (kill <pid> is
2149   asynchrone, and kill -w is not available in busybox)
2150 - add md5 has of all source/headers into version string
2151
2152 Mitar<mitar@tnode.com>
2153 - lot's of small changes for Android. Slowly Android gets a fully
2154   supported platform for OLSRd.
2155
2156 and a lot more small bugfixes. Read GIT changelog at http://olsr.org/git
2157 to see a complete history.
2158
2159 0.6.0 --------------------------------------------------------------------
2160
2161 Change in version number system. No more -rcX for release candidates and
2162 -rX for bugfix releases. In future bugfix releases or updates of plugins
2163 will increase the third digit of the version string while feature releases
2164 will increase the first and/or the second one.
2165
2166 Markus Kittenberger <Markus.Kittenberger@gmx.at>
2167 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
2168 - added NIIT kernel module support for sending IPv4 traffic over
2169   IPv6 mesh networks. See README-Olsr-Extensions for more information.
2170 - added SmartGateway support. OLSRd can now automatically build
2171   IPIP tunnels towards the gateway to prevent gateway flapping.
2172   See README-Olsr-Extensions for more information.
2173 - complete rewrite of linux netlink routing code. New code should be
2174   more understandable and easier to debug/improve.
2175
2176 Teco Boots <teco@inf-net.nl>
2177 - new dyngw plugin. More flexible and more features.
2178 - new p2pd plugin (generalized mdns plugin)
2179
2180 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr>
2181 - new version of quagga plugin (with IPv6 support !)
2182
2183 Sven-Ola Tuecke <sven-ola@gmx.de>
2184 - fixes for improved uClibc support
2185 - fixes for better linux kernel 2.4 support
2186
2187 Saverio Proto <zioproto@gmail.com>
2188 - new mdns plugin. (backport from master branch)
2189
2190 Eric Tromps <erik_tromp@hotmail.com>
2191 - new version of bmf plugin. NO pthreads are necessary anymore
2192
2193 and a lot more small bugfixes. Read GIT changelog at http://olsr.org/git
2194 to see a complete history.
2195
2196 0.5.6-r8 ---------------------------------------------------------------------
2197
2198 Alina Friedrichsen <x-alina@gmx.net>
2199 - patch for using deticated output socket for OLSR packages. This allows
2200   to set the src-ip of OLSR packages, which is useful for interfaces
2201   with multiple IPs
2202
2203 Bruce Ford <fordbr@gmail.com>
2204 - fixes for compiling olsrd for win32
2205
2206 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
2207 - fix for memoryleak during MID processing
2208 - patch series for "network logoff" of OLSRd, other nodes now get
2209   notified if an OLSR node switch down to remove it from their database.
2210 - cleanup of naming conventions for settings src/dst-ips of OLSR-packets
2211   for ipv4/6. See example config files. 
2212 - patch to ignore HNA4 for IPv6 and HNA6 for IPv4
2213
2214 Markus Kittenberger <Markus.Kittenberger@gmx.at>
2215 - patch series for MID handling cleanup
2216 - compiletime switch for txtinfo to always allow localhost access
2217 - add "InterfaceDefaults" section to config files to allow setting values
2218   which are shared by all interfaces but can be overwritten in specific
2219   config file settings
2220 - patch series to allow OLSRd handle multiple config files
2221   (multiple "-f <cfgfile>" options)
2222
2223 0.5.6 ---------------------------------------------------------------------
2224
2225 PATCHES and BUGFIXES from Henning Rogge <rogge@fgan.de>
2226 - Bugfix for fragmented TC sequence numbers
2227 - eliminate second timer for edge garbage collection (aka border code).
2228 - fix SPF bug
2229 - fix for jitter calculation
2230 - refactor linkset code
2231 - add netsimpcap, a network simulation device
2232 - parser refactoring
2233 - fix for possible overflow in fpm plugin
2234 - prevent Originator-IP from changing during runtime
2235 - fix several compiler warnings
2236 - fix hanging TC entry from lost onehop neighbor
2237 - fix drop package with same seqno in etx_ff
2238 - fix segfault in parsing HNA package with bad netmask
2239 - fix avl_comparator for route_paths
2240 - fix alignment problem in packet buffers
2241 - fix: segfault in neighbor/neighbor-2 table
2242 - fix: lqmult default parsing
2243 - HACK: MinTCVTime parameter hack for Berlin FF network...
2244   feel free to ask on the mailing list.
2245 - add Watchdog plugin
2246 - add explicit runtime lock for OLSR.
2247 - remove lq-hysteresis for tc on the receiver side.
2248 - enhance protection against malformed packages to prevent
2249   OLSR parsing uninitialized data. Thank you Markus and Keks for the LONG
2250   debugging session
2251 - block tc-redundancy 0/1, it doesn't work with the current dijkstra code
2252 - convert httpinfo/txtinfo/dotdraw to nonblocking and autobuf to
2253   prevent blocking outgoing connections
2254 - fix some bugs with lq-mult
2255 - fix bug in duplicate set sequencenumber handling
2256 - add Debian/KFreeBSD support (Thanks to Holger Levsen and friends for help)
2257 - fix segfault in 'interface lost' monitor
2258 - add LQ hysteresis to etx-ff metric
2259
2260 PATCH from Markus Kittenberger <Markus.Kittenberger@gmx.at>:
2261 - txtinfo plugin: add more http options
2262 - allow configuration of OLSR UDP port
2263 - allow configuration of proto Tag for Routes (RtProto)
2264 - add fallback policy rule (priority 65536) if RtTable is used,
2265     to ensure that routes can be added to this table
2266 - resolve many error conditions while adding routes to the linux kernel
2267     (Warning this will also delete any conflicting routes made by other routing daemons or admins)
2268 - interface modes mesh (default) and ether (no retransmit of olsr-messages back into a broadcastdomain)
2269 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
2270 - fix several compiler warnings
2271 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
2272 - create policy rule later during startup
2273 - send MID also with one interface, if its ip different from originator-id
2274 - linux rtnetlink code cleanup
2275 - workaround: generate routes to single hop neighbours on the fly when inserting routes via them
2276     (active only with fib_metric=flat)
2277 - testing: insert routes with source-ip set to originator ip
2278 - testing: syslog numbering (e.g. useful to detect lost syslog messages when using remote-syslog)
2279 - testing: custom library path (default /usr/testlib)
2280 Testing features must be activated in olsr_cfg.h before compiling olsrd.
2281 This features are used to run a test network in Vienna parallel to the existing
2282 OLSR network.
2283 - more RT-Netlink cleanups and fixes
2284 - backport of timejump patch from TIP
2285 - Add detection for vanishing interfaces to Linux netlink code
2286 - fix incorret route sorting on new neighbours. use only delete and add/change avl tree,
2287   instead of 3 trees
2288 - learn neighbours interface alias address from received hellos
2289
2290 PATCHES from Hannes Gredler <hannes@gredler.at>:
2291 - add small valgrind howto
2292 - remove the per tc_edge timer
2293 - add some basic infrastructure for cookies
2294   cookies are used to track usage of timer and memory resources
2295 - add a lightweight memory manager to reduce malloc() churn.
2296 - eliminate data field from avl_node and list_node and
2297   replace this via inline recasts
2298 - add indentation dotfile for future code cleanup
2299 - refactor the timer implementation, get rid of timeout functions
2300   all manipulations done in constant time.
2301 - use calloc rather than malloc for lazy callers
2302 - log RIB add/del transactions only if there is an actual route change
2303 - fix to to always insert a HNA Net when receiving a HNA refresh
2304 - fix delete all routes if the last IP address is gone
2305 - reduce TC vtime jitter from 25% down to 5%
2306
2307 PATCHES and BUGFIXES from Sven-Ola Tuecke <sven-ola@gmx.de>:
2308 - add a fixed-point math implementation, which saves
2309   a great deal of CPU on embedded devices
2310 - fix for Link quality dijkstra limit
2311 - nameservice plugin supports mac addresses
2312 - fix fork/restart code
2313 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
2314 - fix several compiler warnings
2315 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
2316 - add makefile support for google android
2317 - fix default olsrd.conf examples
2318
2319 PATCHES and BUGFIXES from Aaron Kaplan <aaron@lo-res.org>:
2320 - fix openbsd warnings / compile errors about sprintf strcpy
2321 - fix string overflow in dyn_gw plugin
2322 - fix string overflow in pgraph plugin
2323 - fix openbsd/osx coompile errors
2324
2325 BUGFIX by Peter Tarjan <peter.tarjan@birdtelecom.hu>:
2326 - Do not remember LQ information UNSPEC_LINK neighbors in Hellos.
2327 - ignore UNSPEC link for linktype if there is an ASYM/LOST/SYM Link in the
2328   same Hello message
2329 - ignore UNSPEC_LINKS during MPR lookup
2330 - broken MID route handling: we also check the data structures for routing,
2331   even if a MID entry exists.
2332
2333 BUGFIX by John Hay <jhay@meraka.org.za>:
2334 - FIX: IPv6 MTU in BSD
2335 - Another BSD ipv6 Patch by John Hay
2336 - fixes for 64 Bit FreeBSD
2337 - fixes for NetBSD
2338
2339
2340 BUGFIX from Erik Tromp <erik_tromp@hotmail.com>:
2341 - update in bmf due to new flags field in tc_edge_entry
2342
2343 PATCH from Clemens Hopfer <datacop@inode.at>:
2344 - dot_draw plugin: close the connection after graph output.
2345
2346 PATCH from Joe Gio <joezgio@gmail.com>:
2347 - track if AC power is connected/disconnected
2348
2349 PATCH from Hagen Paul Pfeifer <hagen@jauu.net>:
2350 - import jenkins hash for good hash calculations
2351
2352 PATCH from Andres Ambrois <andresambrois@gmail.com>:
2353 - nameservice plugin: add parameters for SIGHUPing other daemons, or calling scripts
2354
2355 BUGFIX by Benny Tops <b.tops@mindef.nl>:
2356 - fix wrong order of drop_tc checkt in olsr_input_tc
2357
2358 Felix (OpenWRT NBD):
2359 - fix bison problem for OpenWRT
2360
2361 Sebastian Harl:
2362 - add LISTEN parameter for httpinfo/txtinfo/dotdraw
2363
2364 0.5.5 ---------------------------------------------------------------------
2365
2366 BUGFIX from Andreas Jacobs <andjac@kawo1.rwth-aachen.de>:
2367 - calculate correct sleeptime
2368
2369 BUGFIX from Dario Borriello <dario_bodj@hotmail.com>:
2370 - do not update LQ if not configured
2371
2372 BUGFIX from Jo-Philipp Wich <freifunk@wwsnet.net:
2373 - fix olsr_ip_to_string() buffer quirk
2374 - fix txtinfo format quirks in HNA table
2375 - name-service plugin - write MID entries to hosts file
2376 - avoid infinite loop in the message parser
2377
2378 PATCH by John Hay <jhay@meraka.org.za>:
2379 - compile clean on FreeBSD
2380 - bugfix: do not account for IP headers when building MID6 messages
2381
2382 PATCHES from Henning Rogge <rogge@fgan.de>:
2383 - join LQ and non-LQ Hello execution paths
2384
2385 PATCHES from otti <otti@wirdorange.org>:
2386 - rttable-default: configures a new policy routing table for the default route
2387
2388 BUGFIXES and PATCHES by Sven-Ola Tuecke <mail2news@commando.de>:
2389 - Windows Vista: add interface metric to SPF computed metric
2390 - lqtc-seqno: Optimize check for old seqno numbers in LQTC messages
2391 - lqnatthresh: maintain an advantage for the current (NAT) inet gw
2392 - fisheye-startup: Changed to MAX_TTL for the first 32 LQTCs
2393 - Added and removed files necessary for win32 compile
2394 - Fix for hg: do not remove anything in .hg with 'make uberclean'
2395 - 104-olsrd-verysmallfix
2396 - 105-fix-lq-buffer-quirks
2397 - 106-fix-seqnocheck
2398 - 110-bmf-v152
2399 - 121-olsrd-fib-metric-approx
2400 - 133-fix-lqneigh
2401 - 136-optimize-invalidip-check
2402 - 138-optimize-message-generation
2403
2404 BUGFIX from Lorenz Shori <lorenz.schori@gmx.ch>:
2405 - Mac OSX compile fixes
2406
2407 BUGFIXES and PATCHES by Hannes Gredler <hannes@gredler.at>
2408 - fix not deleted tc entry.
2409 - avoid setting routes with an invalid/impossible netmask.
2410 - refactoring of TC parsing to kill another pile of malloc()/free()s
2411   saving (again) code and especially run.time performance.
2412 - RIB Refactoring, Part 2:
2413   - avoid the periodical rib-tree insertion
2414   - add a FOR_ALL_HNA_RT_ENTRIES() macro for the snmp folks
2415     (or any parties who want to walk HNA entries).
2416   - add an olsr_cnf option 'flat_fib_metrics' which defaults to TRUE.
2417 - fix broken prefix insertion (regression of the RIB refactoring)
2418 - squelsh compiler warnings on Mac OSX
2419
2420 PATCH by John Hay <jhay@meraka.org.za>:
2421 - also printout our own HNAs in the dotdraw plugin.
2422
2423 PATCH by Patrick McCarty <mccartyp@gmail.com>:
2424 - fixed compile errors in the BSD port
2425
2426 PATCHES by Sven-Ola Tuecke <mail2news@commando.de>:
2427 - 102-olsrd-cvs-fixes.patch: use different buffers in the same printf()
2428 - 103-olsrd-rt-exportroute-cleanup.patch: avoid a malloc()ed list of functions
2429 - 132-save-the-fish.patch: really save the fish and avoid to forward invalid
2430   messages from older olsrd versions
2431 - 135-georss-map-for-nameservice.patch: fixes and extensions for the namesaervice plugin
2432 - 138-olsrd-fixdotdraw.patch: fix the dot_draw plugin
2433 (all to be found on http://download-master.berlin.freifunk.net/sven-ola/nylon/packages/olsrd/files/)
2434 - Replaced "which" with a /bin/sh script snippet
2435
2436 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
2437 - Jens Nachtigall <nachtigall@web.de> suggested (and reminded) to use
2438   olsrd.conf.default.lq as the default installed one.
2439   It makes much more sense as - to the best of my(bernd's) knowledge - all
2440   larger networks uses the LQ extensions. And new customers should better
2441   be pushed in that direction.
2442 - with the help of Patrick McCarty <mccartyp@gmail.com>, we got olsr to build
2443   on OpenBSD again:
2444   * OpenBSD'd `sed` is pretty conservative and doesn't understand 's|re|sub|'.
2445     So we fall back to the old 's/re/sub/' and quote all '/' and '.' correctly
2446     (which was the main reason to use '|').
2447     And while I'm at it: Remove the useless $(CCACHE) from the $(CC) for
2448     dependency generation and beautify (read: "$(strip)") $(CPPFLAGS).
2449   * OpenBSD needs an explicit "#include <sys/types.h>" before
2450     "#include <netinet/in.h>".
2451 - fixed lib/secure/src/md5.h: This was broken as it had
2452   "typedef unsigned long int UINT4;". "unsigned long int" is 8 bytes on x86_64.
2453   We are using now the standardized types from <inttypes.h>.
2454 - fixed warnings and improved lib/secure/src/md5.c:
2455   * we are using memcpy() and memset() instead of the open-coded loops as
2456     suggested 
2457   * const'ified
2458   * added function prototypes for static functions
2459   * moved static functions to the top so that their declaration is before
2460     their use to allow gcc to inline if only used once.
2461   It remains ugly - God knows why there are that so many useless
2462   type-casts.
2463 - Some minor and trivial cleanup: Added two functions to calculate the ETX
2464   value from a struct tc_edge_entry and a struct link_entry, respectively.
2465   And use them everywhere.
2466 - added http://meshcube.org/nylon/utils/olsr-topology-view.pl into
2467   lib/httpinfo/misc as suggested by Jens Nachtigall <nachtigall@web.de>
2468 - Killed "struct olsrd_config *cnf" in src/cfgparser/olsrd_conf.h and replaced
2469   it's usage with "olsr_cnf" from src/defs.h.
2470   Serious cleanup: olsrd_get_default_cnf() does no longer initialize the global
2471   "cnf" variable" but uses a local one which is returned as before. And
2472   olsrd_parse_cnf() does no longer return the global variable it is working on.
2473 - Merged "struct hna4_entry" and "struct hna6_entry" into
2474   "struct local_hna_entry" (as "struct hna_entry" is a different thing)
2475   Both have almost the same data (IP address + netmask/prefix) so we use
2476   the quite new "struct olsr_ip_prefix" to store it.
2477   Also merged the "hna4" and "hna6" pointer in "struct olsr_config" -
2478   look at the global "olsr_cnf->ip_version".
2479 - added a olsr_ip_prefix_to_string() function
2480 - .h file cleanup: def.h does not longer include net_olsr.h because it 
2481   doesn't needs it.
2482 - more type safety: the macros COPY_IP() and COMP_IP are gone and replaced
2483   with "=" or similar "normal" C operations. There are also now the inline
2484   functions ip4cmp() and ip4equal() to work on "struct in_addr", ip6cmp()
2485   and ip6equal() to work on "struct in6_addr" and ipcmp() and ip6equal()
2486   to work on "union olsr_ip_addr".
2487   Most (or even more precise: almost all) uses of COPY_IP() and COMP_IP()
2488   are in "if (olsr_cnf->ip_version) { ... } else { ... }" anyway to
2489   there is no reson to copy an IPv4 address effectively with
2490   "memcpy(&dst, &src, 4)" or compare with memcmp(&a, &b, 4)" wher the
2491   always "4" is stored in a variable inhibiting compiler optimization.
2492   There is also the deprecated function genipcopy() mimicking the old
2493   typeless COPY_IP() macro for the last few places where a cleanup is
2494   needed anyways.
2495   There also lots of old macros left over (commented out of course) until
2496   we are confident that everything works. And then I will kill them too.
2497 - Fixed the misleading definition of "v4" in "struct olsr_ip_addr" fom
2498   "olsr_u32_t" (in network-byteorder!) to "struct in_addr". Lots of
2499   temporary variables to call inet_ntoa()/inet_ptoa() vanished .....
2500 - We have now ip4_to_string(), ip6_to_string() and olsr_ip_to_string()
2501   to print a "struct in_addr", "struct in6_addr" and "union olsr_ip_addr"
2502   into a string buffer.
2503 - cleanup: olsr_ip_to_string() and similar non-reentrant functions now must
2504   get a target buffer. To ease that, there is the "struct ipaddr_str"
2505   which is large enough for all of them (read: for an IPv6 address). This
2506   also removes the cyclic buffer there.
2507   All of these function return a "const char *" which can be directly used
2508   for printf(3) and friends.
2509 - const'ified more functions
2510 - converted the source to UTF-8.
2511 - "struct sig_msg" uses an olsr_u8_t for a byte array (and not "char")
2512 - force the few inline function to always be inlined.
2513 - #ifdef the body of the olsr_print_hna_set() and olsr_print_neighbor_table()
2514   if nothing is done
2515 - declare "int_addr", "int_netmask" and "int_broadaddr" in "struct interface"
2516   as "struct sockaddr_in" since it is that what we actually want there (and
2517   it is similar to the IPv6 code).
2518 - updated the olsrd.conf.default.lq-fisheye to the Debian-deliverd version
2519   after recent discussions olsr-dev@olsr.org
2520 - use "inline_avl_comp_ipv4()" in "avl_comp_ipv4()"
2521 - clean up the routes on more signals. Basically we want to do this on all
2522   signals which terminate the program.
2523 - killed a superflous global buffer in src/main.c
2524 - made inline functions from avl_walk_{first,last,next,prev} and created
2525   "const" versions of it. inline_avl_comp_ipv4() is now also an inline function
2526   (and not a macro)
2527 - created a typedef's for various function pointers - much easier to read.
2528 - cleanup: compare tree->comp (adn other pointers)) to NULL (and not 0)
2529 - killed superflous "return"s at the end of void functions
2530 - const'ified more parameters in many more functions in the .h and
2531   .c files
2532 - init-functions with constant or ignored return values are "void"
2533 - created a typedef fro the callback in "struct export_route_entry"
2534   and using it!
2535 - moved the initialization of the {add,chg,del}_kernel_list variables
2536   into process_routes.c. So they are now "static" there.
2537 - olsr_export_{add,del}_route{,6} are now static in process_routes.c
2538   since they are not used elsewhere.
2539 - olsr_addroute_add_function() and olsr_deldroute_add_function() were
2540   almost identical - made one function out of it.
2541   Same for olsr_addroute_del_function() and olsr_deldroute_del_function().
2542 - fixed the sort order in avl_comp_ipv4_prefix(): We compare now the IPv4
2543   values in host byte order (and not network byte order). So the route
2544   list in the e.g. httpinfo plugin is now nicely sorted.
2545 - fixed and improved the `gcc-warnings` script:
2546   * support older gcc's (as on Debian/Sarge) as they have slightly different
2547     error messages
2548   * removed superflous lines
2549   * replaced the call of `sed` with shell built-in features fixing syntax
2550     errors on Debian/Sarge
2551   * set all locale-relevant variables to "C" (just to be sure)
2552 - consolidated ip{4,6,}{cmp,equal}: all are nwo inline functions using only
2553   the minimal necessary operations. Thanks to Hannes Gredler
2554   <hannes@gedler.at> and Sven-Ola Tuecke <mail2news@commando.de> for pointing
2555   that out and suggesting the `inline`, respectively.
2556   use ip{4,}cmp in lq_avl.[ch] to resue the code. inline_avl_comp_ipv4
2557   is superflous now (and replaced by ip4cmp) and use the global MIN and MAX
2558   macro instead of AVLMIN and AVLMAX
2559 - killed netmasks from the IPv4 part of the code and use the prefixlen there
2560   (similar to thte IPv6 part). Manymore details on
2561   http://lists.olsr.org/pipermail/olsr-dev/2007-November/001464.html
2562 - removed the superflous "open_ipc" field from the "struct olsrd_config" as
2563   it contains only the equivalent of "olsr_cnf->debug_level > 1".
2564 - inspired by Sven-Ola Tuecke: avoid a bash'ism (i.e. "OPTS="${OPTS//$opt}") in
2565   gcc-warnings and ld-warnings. But we do not replace it with `sed` (since it
2566   costs a fork(2) and an exec(3)) but also with shell code which doesn't use
2567   any external program.
2568 - added configuration file support for "flat fib metrics".
2569
2570 0.5.4 ---------------------------------------------------------------------
2571
2572 QUAGGA by Immo 'FaUl' Wehrenberg <immo.olsr@do.bundessicherheitsministerium.de>
2573 - updated to svn version 33
2574
2575 BMF PLUGIN  by Erik Tromp <erik_tromp@hotmail.com>
2576 - updated to 1.5.1
2577 - updated to latest plugin interfaces changes and killed warnings (by Bernd
2578   Petrovitsch <bernd@firmix.at>)
2579
2580 PATCH by Hannes Gredler <hannes@gredler.at> which rewrites the route handling.
2581 To quote him:
2582 ----  snip  ----
2583 change list:
2584 - get rid of separate routing tables for HNA and per-node routes, everything is
2585   now unified in an AVL routing tree (&routingtree)
2586
2587 - introduce walking macros (OLSR_FOR_ALL_RT_ENTRIES()) that hide the internal
2588   structure of the RIB for making life of the plugin authors easier.
2589
2590 - get rid of different SPF implementations for LQ and non-LQ code paths. a
2591   non-LQ edge is simply substituted with a cost of 1.0
2592
2593 - get rid of host masks - a new data type olsr_prefix is introduced which is
2594   basically an ip address plus a prefix length.
2595
2596   do not install the metric in the kernel FIB - for the kernel its pointless
2597   if the route gets installed with a metric of N or M.
2598
2599   we do not need to update the kernel FIB if we have hop count only changes
2600   (for example if there is a reroute action further downstream)
2601
2602   the only things which triggers a kernel FIB route update is a next hop
2603   change (a next hop is neighboring gateway router plus an interface).
2604
2605   all OLSR routes are installed with a metric of 2
2606
2607 - separate between rt_entry and rt_path - the former is a route installed in the
2608   kernel with an next hop. the latter is a candidate for best path selection
2609   after SPF calculation has been done. in the rt_entry we keep a pointer to the
2610   best_path and also to the next hop that was installed in the kernel FIB.
2611
2612   we always keep all originator of a route, if a route originator goes away we
2613   can easy recompute the best path for the route.
2614
2615   the next hop in the rt_entry gets only updated upon a successful route_add
2616   call - that way we always remember what next hop to delete.
2617
2618   stray routes should be history now.
2619
2620 - tweak the linked list toolkit to operate on circular lists.
2621
2622 - get rid of malloc calls for building the kernel update list. the list node is
2623   now embedded in the rt_entry.
2624
2625 - introduce three queues (add/chg/del) for kernel updates.
2626
2627 - for neighbor route dependency tracking the neighbor routes are queued first or
2628   last (depending on which queue you work on)
2629
2630 - rework all the plugins which directly manipulate rt entries.
2631
2632 - rework the plugins that read from the routing table (most notably nameserver,
2633   httpinfo and quagga plugin)
2634
2635 - lots of comments that explains the intentions and purpose of this code-piece.
2636
2637 non RT related stuff:
2638 - use a list rather than a tree for storing the post-SPF results, which further
2639   improves the raw-SPF runtime.
2640
2641 - add display of SPF runtime (masked behind #ifdef SPF_PROFILING)
2642
2643 - http://gredler.at/download/olsrd/neighbor_routes3.diff: This updates the own
2644   IP address (read: the main address) after changes (e.g. on
2645   `ifup wlan0; sleep 1; ifdown wlan0`) and kills the
2646   olsr_fill_routing_table_with_neighbors() function.
2647 ----  snip  ----
2648 And Sven-Ola Tuecke <mail2news@commando.de> fixed an instability issue on interface
2649 up/down operations (see 102-olsrd-rt-refactoring-fixes.patch below) and a missing
2650 initialization.
2651
2652 PATCH by Hannes Gredler <hannes@gredler.at> which "consolidates
2653 the link-state database and the spf-calculation in order
2654 to calculate routes more efficiently".
2655 To quote him (more):
2656 ----  snip  ----
2657 - use the link-state (tc) database for SPF calculations rather than
2658   replicating the notion of vertices and edges for a SPF run.
2659   this heavily reduces malloc() calls and shrinks the total CPU
2660   load of the route calculation path between 60%-80%.
2661 ----  snip  ----
2662
2663 PATCHES by Sven-Ola Tuecke <mail2news@commando.de> to be found on from
2664 http://download-master.berlin.freifunk.net/sven-ola/nylon/packages/olsrd/files/
2665 - 102-olsrd-rt-refactoring-fixes.patch
2666   Because you changed a lot of basics: It's time to handle a general
2667   flaw in the routing system. Plase take a look at chk_if_changed(). This
2668   will free() any "struct interface" pointer without warning at any time.
2669   This is why it's possile to SEGV olsrd with a simple "ifdown xxx".
2670   The patch replaces the (maybe) invalid pointer with an index reference
2671   "iif_index". You can always ask the OS for a name. Please note, that I do
2672   not have a working BSD toolchain, so I've placed an #error in the IPv6
2673   BSD-part where the author/porter has started to hack something funny.
2674
2675 - 110-olsrd-double-wlancard-neigh-hack.patch:
2676   This is a hack for Nodes having to wifi cards with the same channel,
2677   bssid, IP-Range etc. If two nodes can see each other by means of two
2678   possible links (here: two wifi cards with equal config), a bug is  triggered
2679   with the Neigh-is-SYM detections. This small little hack prevents this.
2680
2681 - 112-olsrd-nameservice-fixemptyname.patch:
2682   This is an addon to my lat/lon stuff which will prevent olsrd from
2683   running (oops?) if no hostname is given and the nameservice plugin
2684   is loaded.
2685
2686 - 113-olsrd-dyngwplain-pluginvers5.patch:
2687   This updates the dyngwplain plugin to the new Plugin Iface
2688
2689 - 140-olsrd-arprefreshed.patch:
2690   This is a new one. Opens a packet socket and listen to UDP(698), extract
2691   the sender MAC and refreshes the ARP cache whith that. Should speedup
2692   especially in cases, if you initially try to use a longer routing path which
2693   normally triggers a "ARP-Lookup-Chain".
2694 - 106-olsrd-nameserviceparams.patch:
2695   This patch converts more plugins to the new interface version.
2696 - 104-olsrd-policy-routing.patch
2697   Reworked this one to discard GPL helper functions. Also checked IPv6 and
2698   re-included the IPC hookup. The patch adds a "RtTable [number]" for
2699   /etc/olsrd.conf which is simply the Linux
2700   policy routing table to use. Defaults to 254 (== main).
2701   This patch was modified/clenaed up by <bernd@firmix.at> to use "#if"
2702   instead of "#ifdef" as it's more robust against typos.
2703 - 110-olsrd-fixpacketprint.patch, 112-olsrd-nameservice-fixemptyname.patch,
2704   113-olsrd-txtinfo-fixhttpget.patch, 114-olsrd-timeoutlimit.patch,
2705   115-olsrd-nameserviceparamfix.patch and
2706   116-olsrd-fix-pluginparam-addons.patch fixing the compilation warning
2707   on 64bit and lots of other improvements.
2708 - "Save the fish" patch: Avoid forwarding of packets with too low TTL. This
2709   kills lots of packet forwarding storms.
2710   NB: The oneliner was applied by hand by BP and formatted to look (in BPs O)
2711   more readable.
2712
2713 PATCH by Arnd Hannemann <hannemann@i4.informatik.rwth-aachen.de>
2714 olsr_makefile_make_use_of_exename.patch
2715 - This patch makes sure that the EXENAME variable of Makefile.inc is used
2716   in Makefile.
2717
2718 PATCHES by John Hay <jhay@meraka.org.za>
2719 - update to new FreeBSD WLAN API
2720 - do not require /bin/bash, use /bin/sh
2721 - Fixed alignment so that olsrd runs on FreeBSD/arm
2722 - allow more interface in an IPv6 subnet on FreeBSD
2723 - use PREFIX and DESTDIR as all the other Makefile.$OS also for FreeBSD
2724 - make txtinfo plugin work with IPv6
2725
2726 PATCH by Andreas Jacobs <jacobs@i4.informatik.rwth-aachen.de>
2727 - fix the loss link quality calculation for "windows size % 4 != 0"
2728
2729 PATCH by Acinonyx <acinonyxs@yahoo.gr>
2730 - Bug fix: include $(TOPDIR)/Makefile.inc at the begin in the Quagga plugin
2731
2732 PATCH by David Cornejo <dcornejo@gmail.com>
2733 - fixed an "+=" of an uninitialized variable (detected with/by the
2734   scan.coverty.com).
2735
2736 BUG reported by Aaron Kaplan <aaron@lo-res.org>
2737 - BSD-xargs doesn't know "-r".
2738
2739 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
2740 - Made a function from the ME_TO_DOUBLE() macro (in src/mantissa.h).
2741   This saves code throughout the code even on i386 and will even more
2742   on architectures without floating point units and "-msoft-float".
2743 - And the mathemathics in src/mantissa.h is reformulated to minimize
2744   floating point operations to save CPU power - especially on embedded
2745   devices.
2746 - I rewrote the half of src/lq_packet.[ch] which deals with incoming
2747   packets. This was triggered with performance output of gcc produced
2748   by Sven-Ola Tuecke at CCCamp07.
2749   This kills *lots* of (more than) superflous malloc()s and the same
2750   number of (free()s). And it also kills some code and copying around of
2751   data.
2752 - Make it compile without warning with flex-2.5.33 (to be found on Fedora 7
2753   and Gentoo in Sep-2007) again.
2754
2755 - converted the dyn_gw plugin to plugin interface version 5 (which leaves
2756   the quagga plugion as the last with the old one).
2757 - paving the way to activate -Wshadow, much more to do
2758 - const-ify parameters here and there
2759 - use NULL for pointers (and not "0")
2760 - Killed "extern" declarations in (not generated) .c files
2761
2762 - Based on a patch by Gianni Costanzi <gianni.costanzi@gmail.com> (so credits
2763   and thanks have to go there):
2764   added OS_CFLAG_PTHREAD Makefile variable since gcc (on Linux) requests this
2765   in the manual page.
2766   Changes/additions:
2767   - I added definitions to all OS-specific Makefile.$OS with the value similar
2768     to the value in OS_LIB_PTHREAD (either empty or "-pthread").
2769   - The variable is added to CPPFLAGS (and not CFLAGS) since CPPFLAGS is used
2770     for all cpp and gcc calls (and gcc's man page indicates that it sets
2771     variables for both of them).
2772
2773 0.5.3 ---------------------------------------------------------------------
2774
2775 URGENT BUG FIX
2776 Ignacio García Pérez <iggarpe@terra.es> found a serious bug in the dot-draw
2777 plugin and identified it's source.
2778
2779 BUG FIX
2780 The bmf plugin wanted to kill a not-started thread and this causes a segmentation
2781 violation. This happens if the old plugin interface support is not compiled in
2782 and one uses - or more asccurate: wants to use - the bmf plugin which uses that
2783 ATM. Thanks to Cedric Krier <ced@ced.homedns.org> for reporting this.
2784
2785 DEPENDENCIES FIXED
2786 The dependencies (*.d files) are now properly generated and used. And they also
2787 dependen on the Makefile in the current directory and the Makefile.inc so that
2788 changes there also lead to new compilation.
2789 Remember: We support "ccache" so install it to save lot of meaningless recompiles
2790 if nothing (as seen by the real C compiler, i.e. after the C preprocessor) has
2791 changed.
2792
2793 BUILD FIX
2794 Linux/IA64 and Linux/HPPA also need "-fPIC".
2795
2796 CLEANUPS
2797 - olsr_switch does no longer generate warnings
2798 - olsr_switch is also built with "build_all" and cleaned with "uberclean"
2799 - More "const" all over the place.
2800 - More "static" for local functions and variables.
2801 - Killed an unnecessary "static" variable.
2802
2803 0.5.2 ---------------------------------------------------------------------
2804
2805 URGENT BUG FIX
2806 Sven-Ola Tuecke found a serious bug of the class "show stopper" and sent a patch.
2807
2808 PLUGIN CLEANUP
2809 Plugins handle parameters quite individually (case-sensitive vs case-insensitive,
2810 different parsing functions for the same values, etc.). Plugin Interface version 5
2811 now exports a table of { parameter-name, parsing-function, addr-of-storage } and
2812 it's size. Common functions should be shared.
2813
2814 0.5.1 ---------------------------------------------------------------------
2815
2816 MISC
2817 Upgrade to olsr-bmf 1.5 from Erik Tromp <erik_tromp@hotmail.com>
2818
2819 latitude/longitude support is now in the nameservice plugin done by
2820 Sven-Ola Tuecke <mail2news@commando.de>
2821
2822 added the spf refactoring patch from  Hannes Gredler <hannes@gredler.at> which
2823 saves a noteworthy amount of CPU time. To quote him:
2824 ----  snip  ----
2825 1. use of an AVL tree as a min-heap implementation
2826
2827    as a means for efficient sorting.
2828    (the etx metric is used as the key in the candidate tree)
2829
2830 2. next-hop propagation
2831
2832    rather than tracking the previous node in olsr_relax()
2833    i have changed that model and pre-populate all one-hop neighbors
2834    with their own IP address as 'next-hop' and pull that
2835    pointer up once new paths are explored.
2836
2837    as a result no walker for counting hops and extracting next-hops
2838    is required - it turns out at this is slighly more efficient
2839    than the existing behaviour (even with the cache applied).
2840 ----  snip  ----
2841
2842 CLEANUPS
2843 * moved a only locally needed hack from "union olsr_ip_addr" into the only place
2844   where it is needed in hashing.c
2845
2846 0.5.0 ---------------------------------------------------------------------
2847
2848 APPLIED PATCHES FROM FREIFUNK-FIRMWARE
2849 libsmake, dyngwplain, nameservices+services, tzxtinfo, quagga, quagga-routehandler,
2850 optimize, fixes from Eric Tromp and Sven-Ola Tuecke, CPU-optimize, secure key, HNA-IP
2851
2852 CLEANUPS
2853 removed hardcoded limit on the number of interfaces (at least in the Unix part)
2854 made Makefile targets much more consistent
2855
2856 MISC
2857 put Bmf-1.3 plugin into it
2858
2859 FreeBSD IPv6 SUPPORT
2860
2861 Patch from John Hay applied.
2862
2863 BUGFIXES
2864
2865 0.4.10 --------------------------------------------------------------------
2866
2867 OLSR NETWORK SIMULATOR
2868
2869 An application called olsr_switch(sorry for the nameclash with the win32
2870 GUI) has been added. If olsrd is ran using the -hint option it can now
2871 connect to olsr_switch and be part of a virtual network. This means
2872 that multiple instances can be ran at the same host! The olsr_switch
2873 application allows the user to define link variables on all viritual
2874 links in the network, creating all possible topologies. Read more in
2875 the readme file.
2876
2877 EXPERIMENTAL FISH EYE ALGORITHM
2878
2879 An experimental algorithm for TTL settings on TC messages has
2880 been added. Read more in the corresponding README file.
2881
2882 OPENBSD SUPPORT
2883
2884 olsrd now also compiles on OpenBSD systems. Thanks a lot to Holger
2885 Mauermann for the patches!
2886
2887 BUILDSYSTEM REWRITE
2888
2889 Bruno has rewritten the make system. OS detection is now done
2890 automagically and the general design is much improved.
2891
2892 IP ADDRESS VALIDATION
2893
2894 Olsrd now maintains a set of IP addresses that is considered
2895 invalid. Checks against this set is done on all received
2896 OLSR packets announced originator addresses. The dataset can
2897 be updated dynamically.
2898
2899 PLUGIN INTERFACE
2900
2901 Updated interface version to 3 and added more noticeable warning
2902 for version missmatch.
2903
2904 MATH LIB DEPENDENCY
2905
2906 The dependency on the math lib came from the use of pow(3) in the
2907 mantissa/exponent calculation. The calls to pow in this long forgotten
2908 code, was very unnessecarry. The pow calls are replaced with bitwise
2909 shifts and -lm is no longer needed.
2910
2911 ICMP REDIRECTS ON LINUX
2912
2913 On Linux systems "0" is now also written to the all/send_redirects
2914 procfile and not only the pr. interface ones. Hopefully this resolves
2915 problems reported with systems still sending ICMP redirects.
2916
2917 BUGFIXES
2918
2919 - Fixed init of IPv6 addrtype variable. It used to be uninitialized,
2920   causing it to default to site-local and have some weird side-effects.
2921 - Fixed crash when changing IPv6 address at run-time
2922 - Fixed a bug that prevented setting willingness 0 in the configfile
2923 - Fixed bad handling of missing command line arguments
2924 - Did various updates to prevent assertion when a neighbor
2925   has changed IP and sends HELLO before its olsrd precess has detected
2926   the change.
2927 - Fixed return value check on times(2) calls in the scheduler
2928 - Fixed bug(s) that could cause crash when an interface was brought
2929   down while olsrd was running.
2930 - Removed the silent (read: unchecked) hard limit of 16 interfaces.
2931 - Compiles now cleanly on 64bit (e.g. x86_64).
2932
2933 0.4.9 ---------------------------------------------------------------------
2934
2935 OPTIMIZATIONS
2936
2937 The MID database is now also indexed by alias addresses. this makes
2938 look-ups of main addresses based on alias addresses _much_ faster.
2939 The mid_lookup_main_addr function alone has gone from >30% of the
2940 total CPU time used by olsrd to <1%.
2941 PLUGIN DEVELOPERS: datatypes for MID entries has been changed.
2942
2943 Routing table calculation in the LQ case now uses balanced binary
2944 trees instead of linked lists, which makes look-ups much faster.
2945
2946 The debug output function olsr_printf() is not used by olsrd
2947 internals any more. Instead the macro OLSR_PRINTF is to be used.
2948 This macro does debug level testing _before_ doing any function
2949 calls(both printf itself and parameters to printf). This is a much
2950 more optimized way of doing debug output. In addition olsrd can
2951 be built without any debug output code if doing 'make NODEBUG=1'.
2952
2953 TIMEOUT OF DATASETS
2954
2955 Validity times for dataset entries are now set using the clock_t type
2956 (used to be struct timeval). This data is now fetched from the times(2)
2957 function instead of gettimeofday(2). This prevents possible problems
2958 if the system time is changed.
2959 PLUGIN DEVELOPERS: Note that datatypes for close to all dataset entries
2960 (link, neighbor, mid, hna, tc etc.) has been changed!!
2961
2962 CONFIGURATION FILE
2963
2964 Multiple interfaces can now use the same interface configuration block.
2965 Example:
2966 Interface "if0" "if1" "if2"
2967 {
2968         .....
2969 }
2970
2971 Interface configurations now also support the "Weight" directive. When
2972 olsrd finds multiple links to a neighbor it will choose the link
2973 going via the interface with the lowest weight. Olsrd normally
2974 sets this weight dynamically based on interface characteristics,
2975 but if the user wishes to set a fixed weight in a interface(or
2976 a group of interfaces), this directive is now available.
2977
2978 Moreover, interface configurations now support the "LinkQualityMult"
2979 directive. It takes an IP address and a multiplier as arguments.
2980
2981 Example:
2982
2983 Interface "if0"
2984 {
2985   [...]
2986
2987   LinkQualityMult 192.168.0.1 0.7
2988   LinkQualityMult default 0.5
2989
2990   [...]
2991 }
2992
2993 The idea is to make certain links via the configured interface
2994 artificially worse or better than they really are. The first parameter
2995 specifies the IP address of a neighbour interface. The second
2996 parameter is the multiplier to be applied to the link to the specified
2997 neighbour interface.
2998
2999 After we have derived the link quality from the packet loss among the
3000 packets received from the specified neighbour interface, we multiply
3001 the link quality by the given multiplier. So, the multiplier changes
3002 the LQ value that we use when determining the ETX, which is 1 / (LQ *
3003 NLQ).
3004
3005 If "default" is given as the IP address then the multiplier applies to
3006 all links via the configured interface. Note, however, that olsrd only
3007 assigns one multiplier to each link. It does so in the following way.
3008
3009 * If there is a "LinkQualityMult" line that matches the IP address of
3010   the link's neighbour interface, then use the multiplier in this
3011   line.
3012
3013 * If there isn't any matching line, then look for a "default" line. If
3014   there is a "default" line, then use the multiplier in this "default"
3015   line.
3016
3017 * Otherwise use 1.0, i.e. do not modify the LQ value at all.
3018
3019 Hence, a line with an IP address has priority over a "default" line.
3020
3021 In the above example, the LQ value of the link between the local
3022 interface if0 and the neighbour interface 192.168.0.1 would be
3023 multiplied by 0.7. All other links between the local interface if0 and
3024 a neighbour interface would be multiplied by 0.5.
3025
3026 IPV6 SOCKETS
3027
3028 The socket option IPV6_V6ONLY is now set on IPv6 sockets in linux.
3029 This means that olsrd will no longer receive IPv4 traffic when
3030 running in IPv6 mode.
3031 This should enable users to actually run one olsrd instance using
3032 IPv6 and one using IPv4 at the same time :)
3033
3034 PLUGINS
3035
3036 The httpinfo, dyn_gw and dot_draw plugins now all include olsrd
3037 headerfiles directly. A plugin should define OLSR_PLUGIN before
3038 including olsrd headers. Doing things this way removed the
3039 redundant datatype definitions that has so often caused trouble
3040 when things has been updated in olsrd.
3041
3042 NETBSD SUPPORT
3043
3044 olsrd now also compiles on NetBSD systems. Use 'make OS=nbsd' to
3045 build. This port is not very well tested and feedback is greatly
3046 appreciated.
3047
3048 EXPERIMENTAL MULTI-INTERFACE CODE FOR FREEBSD
3049
3050 Experimental code using libnet can be compiled in allowing multiple
3051 interfaces to be used in FreeBSD.  You enable this by compiling using
3052 OS=fbsd-ll.  You must have libnet-devel installed for this to work
3053 (/usr/ports/net/libnet-devel).
3054
3055 OTHER UPDATES
3056
3057 - WLAN devices are now detected in FreeBSD
3058 - First specified interfaces IP is used as main address.
3059 - Broadcastflag is not checked on interface if fixed broadcast is
3060   set in config.
3061 - Removed Linux link layer code as this was not really in use.
3062 - Added -nofork command line option
3063
3064 BUGFIXES
3065
3066 - Link sensing now works according to announced vtime from
3067   neighbors. Previously links going symmetric->asymmetric
3068   were not necessarily detected until the holding time expired.
3069 - A bug in route addition/removal that could lead to routes
3070   using GWs being added before the actual route to the GW
3071   was set up, has been fixed.
3072 - A bug in the interface selection in route calculation has been
3073   fixed. New routes are no longer added prior to deleting old ones,
3074   since this caused trouble.
3075 - A bug in the IPv6 multicast address configuration has been fixed.
3076   This caused olsrd not to work with global IPv6 addresses.
3077 - A bug in the IPv6 prefix-from IPaddr function has been fixed. This
3078   bug caused HNA prefixes to always be calculated to 0.
3079 - If a 2-hop neighbor is also a 1-hop neighbor, a bug made olsrd
3080   prefer a bad direct link to a better link via an MPR.
3081 - If a link or interface lookup failed, olsrd crashed.
3082 - Fixed a crash in the LQ packet generation code based on a
3083   signed/unsigned integer comparison.
3084
3085
3086 0.4.8 ---------------------------------------------------------------------
3087
3088 LICENSE CHANGE
3089
3090 Olsrd is now distributed under a BSD style license. We believe olsrd will
3091 be better off using this license as it opens up for commercial players
3092 to use olsrd freely in their products. In the end this will lead to
3093 this kind of users doing serious testing and bug fixing of olsrd.
3094
3095 ETX-LIKE LINK QUALITY DETECTION
3096
3097 We can now determine the packet loss on a link by looking at the serial
3098 numbers of the OLSR messages received from a neighbor. This tells us how
3099 many packets get through from our neighbor to us. We use a new extended
3100 kind of HELLO messages (LQ_HELLO messages, LQ = link quality) to broadcast
3101 the link quality that we have determined on our end of the link to our
3102 neighbors. So do our neighbors, and we as well as they end up with an
3103 idea of how good the link is in both directions. From the LQ_HELLOs we
3104 also learn the link quality between our neighbors and our two-hop neigh-
3105 bors. In this way we can select those neighbors as MPRs that have the
3106 best links to our two-hop neighbors. To distribute the link quality
3107 throughout the network, we use a new extended version of TC messages
3108 (LQ_TC messages). They contain the qualities at both ends of each of our
3109 links. Nodes can then run Dijkstra's algorithm to find a path between
3110 themselves and other nodes that minimizes the packet loss.
3111
3112 If the newly introduced "LinkQualityLevel" is set to zero in the
3113 configuration file, link quality is not used and the daemon behaves as
3114 before, i.e. as specified by the OLSR RFC. If this parameter is set
3115 to 1, LQ_HELLOs and LQ_TCs are used instead of HELLOs and TCs, link
3116 quality is measured and MPRs are selected based on the link qualities.
3117 If this parameter is set to 2, the routing table is additionally
3118 calculated based on the link qualities.
3119
3120 Setting "LinkQualityLevel" to a non-zero value BREAKS COMPATIBILITY. You
3121 will then not be able to participate in RFC-conformant OLSR networks
3122 any longer. This is because we use LQ_HELLOs and LQ_TCs instead of HELLOs
3123 and TCs in this case.
3124
3125 It's best practice to set "LinkQualityLevel" to the same value on all
3126 nodes in a network.
3127
3128 When determining the quality of a link olsrd only considers a given
3129 number of most recent OLSR packets received from its neighbors. By
3130 default, olsrd looks at the 10 most recent OLSR packets. This can be
3131 changed via the "LinkQualityWinSize" configuration option. Values
3132 between 3 and 128 are legal.
3133
3134 NEW CONFIGFILE PARSER/FORMAT/SCHEME
3135
3136 A whole new config file syntax and parser is introduced with this
3137 release. The parser is generated using flex and bison and it is
3138 designed to be very modular. The parser can be compiled as either
3139 a standalone binary, a shared library or as part of olsrd. This way
3140 other applications can parse and generate olsrd configuration files
3141 only by linking to the dynamic library.
3142 In the new configfile options can be set pr. interface, plugin
3143 parameters can be set, more IPC options can be set...and more.
3144 The syntax is documented in the olsrd.conf(5) manual page found
3145 in the files/ directory.
3146 Olsrd internals now uses a single struct, as returned by the config
3147 parser, for all configuration in runtime. this means that updating
3148 values in this struct will dynamically update olsrd operation. It
3149 also means that all configuration is now kept in one place instead
3150 of spread all across the place.
3151
3152 FREEBSD AND MAC OSX PORT
3153
3154 This version offers an initial port of olsrd to FreeBSD and Mac OS
3155 X. Like the Windows port it currently does not support IPv6. As this
3156 is a very first try at supporting FreeBSD and Mac OS X, this port is
3157 probably not as reliable as the Linux version. We'd greatly appreciate
3158 feedback and bug reports. To compile you need GNU make. Then simply
3159 run "gmake OS=fbsd" to build the executable.
3160
3161 NEW MAKEFILE(S)
3162
3163 The makefiles used to build olsrd have been rewritten and now includes
3164 dependency file generation using makedep.
3165
3166 DEBUG OUTPUT
3167
3168 Tables are now only printed if changes occur, so there are no longer
3169 any periodical output when using a debuglevel >0. A "heartbeat" is
3170 now printed to STDOUT(if it is a terminal) in the form of a rotating
3171 line to show that olsrd is actually operating.
3172 Adding "ClearScreen yes" to the configuration file clears the screen
3173 each time before the debug output shows updated information. This
3174 makes the debug output easier to read in many cases. "ClearScreen no"
3175 is the default, if no "ClearScreen" directive is given in the
3176 configuration file.
3177
3178 PLUGIN INTERFACE
3179
3180 There are some changes in the plugin interface. It is now at
3181 version 2. Plugin specific parameters from the configfile
3182 using the PlParam option, will now be passed on to plugins.
3183 To receive such parameters a plugin must implement a function:
3184 int
3185 register_olsr_param(char *key, char *value)
3186 to which parameter pairs will be passed.
3187
3188 NO MORE THREADS
3189
3190 Olsrd no longer uses any thread library on its operation. Everything
3191 now happens in the main thread allowing for use of olsrd on platforms
3192 with no thread library.
3193
3194 ACPI SUPPORT IN WILLINGNESS CALCULATION(LINUX)
3195
3196 The willingness calculation for Linux, now also supports the more
3197 modern ACPI proc interface in addition to APM. This is not well
3198 tested and feedback is appreciated!
3199
3200 IPC OPTIONS
3201
3202 Various options regarding IPC connections can now be set in the
3203 configfile. The options are max connections, allowed unicast
3204 hosts and allowed net-ranges.
3205
3206 CODE REWRITES
3207
3208 Much of the message generation and net output code is rewritten.
3209 Sending of partial messages should now work 100%. Also TC, MID
3210 and HNA messages are now cached for a random amount of time
3211 before transmitted - this often leads to the situation where these
3212 messages are sent together with an HELLO message, which is highly
3213 desirable since it saves network resources.
3214 PLUGIN DEVELOPERS must note that the buffers and size variables
3215 used in net output is no longer directly accessible!
3216
3217 NET OUTPUT CODE REWRITTEN
3218
3219 Every interface now has one outputbuffer registered. This allows
3220 messages to be "cached" as explained above, so that multiple
3221 messages are stacked together.
3222 Also the outputbuffer and size are no longer accessible directly,
3223 an API is available to plugins(and olsr code).
3224
3225 OS DEPENDENT NETWORK INTERFACE
3226
3227 The OS dependent network functions are now defined in net_os.h
3228 instead of being mixed up with internal network functions
3229 in net.h.
3230
3231 BUGFIXES
3232
3233 A bug that caused the announced ANSN sequence number to never stop
3234 being increased when a change in the MPR selector set was detected
3235 has been fixed. Another TC related bug that caused timed out TC
3236 entries not to be deleted from the routing table in certain cases
3237 has also been fixed. These bugs could cause unstable routes.
3238 A bug that in many cases caused the wrong routes to be deleted
3239 when using IPv6 has been fixed.
3240
3241
3242 0.4.7 ---------------------------------------------------------------------
3243
3244 NATIVE WINDOWS GUI AND INSTALLER
3245
3246 We now have a native Windows GUI. The GTK+ version is no longer
3247 supported on Windows. The new native GUI is pretty compact as it does
3248 not require the GTK+ runtime DLLs. In addition to monitoring olsrds
3249 state the GUI offers an easy way for novice users to configure
3250 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
3251 for details. The Windows version now also comes with an installer
3252 based on the freely available Nullsoft Scriptable Install System
3253 (NSIS). Looks like the Windows port is becoming more and more
3254 Windows-ish. :-)
3255
3256 WIRELESS INTERFACE DETECTION ON WINDOWS
3257
3258 Like the Linux version the Windows port is now able to tell WLAN
3259 interfaces from wired interfaces. We can now, for example, set
3260 different HELLO intervals for WLAN interfaces and wired interfaces,
3261 respectively.
3262
3263 ROUTE UPDATES
3264
3265 The order of updates of calculated routes is swapped. Now new routes
3266 are added prior to deleting old ones. This could fix issues where
3267 in some very very few cases one could experiment loss of routes.
3268
3269 BUGFIXES
3270
3271 There were quite some bugs in IPv6 operation in 0.4.6. These are
3272 the bugs that were fixed:
3273 - HNA message parsing did not work.
3274 - Some IPv6 addresses were printed as IPv4 addresses in the
3275   debug output.
3276 - The '-dispin' option now works again.
3277 - A filedescriptor leak in the IPv6 interface detection caused
3278   olsrd to crash.
3279
3280
3281 0.4.6 ---------------------------------------------------------------------
3282
3283 WINDOWS PORT!
3284
3285 Read the README-WIN32.txt file!
3286
3287 DYNAMIC NETWORK INTERFACE UPDATES
3288
3289 Network interfaces can now be updated and removed/added at
3290 runtime. Olsrd will check all interfaces specified in the config
3291 file or on the command-line, every 5 seconds. If updates
3292 occur, olsrd will register this and update the necessary data.
3293 If interfaces are removed or added, olsrd will detect this
3294 and configure the interfaces. If an interface is removed
3295 olsrd will continue to check the interface, so if say, a PCMCIA
3296 card is removed and later on reinserted(and given the same name),
3297 olsrd will detect this and start running on it again.
3298
3299 Note that olsrd will now run even if no interfaces are detected.
3300
3301 ROUTE CALCULATION UPDATE
3302
3303 All 1 hop neighbor addresses that are not directly reachable trough
3304 a symmetric link in the link set will now be added with a GW in the
3305 routing table. this GW will be an interface address from a registered
3306 symmetric link to the neighbor.
3307
3308 MID UPDATE
3309
3310 Alias addresses are now registered in the link set processing
3311 if available. This is not to pretty(since the vtime has to
3312 be a mere guess) but it gives faster initial route updates.
3313 If a HELLO is received(at initial registration) from an IP
3314 that is not the same as the one set as main address in the
3315 received HELLO header, then the IP from which the HELLO was
3316 received will be registered as an alias of the main address
3317 set in the HELLO header. The default vtime is set to 15 secs.
3318
3319 CODE RESTRUCTURING
3320
3321 All OS dependent interface configuration code is now located in
3322 OS/ifnet.c(that would be linux/ifnet.c if using GNU/Linux).
3323 The functions are available trough the headerfile src/ifnet.h
3324
3325 CODE CLEANUPS
3326
3327 - Some timer issues fixed
3328 - Got rid of the global socket descriptors
3329 - Updated indexing of network interfaces
3330 - Introduced a global socket to use for ioctl calls(ioctl_s)
3331 - Removed upper limit for interfaces to use
3332 - Point-to-point interfaces are now allowed
3333 - The main select(2) loop now uses a timeout
3334 - A small bugfix in the select fd-set update code
3335 - Some bugfixes in the configuration file parsing
3336 - stdout/stderr are now set to not be buffered
3337 - A bugfix in the MID generation regarding seq. numbering
3338
3339 PLUGIN INTERFCAE
3340
3341 A new set of functions that are called whenever a change in the
3342 interface configuration(update, addition, removal) is made is
3343 introduced.
3344 These functions are added and removed very much like the ptf
3345 functions. Available trough the functions add_ifchgf and del_ifchgf.
3346
3347 OBS OBS OBS!!! PLUGIN DEVELOPERS READ THIS!!!!
3348
3349 The interface struct(declared in interfaces.h) has changed.
3350 Plugin developers must update plugins that uses the interface
3351 struct!
3352
3353 The headerfile olsr_plugin_io.h which contains the plugin interface
3354 commands now contains a revision list where all changes are
3355 stated.
3356
3357
3358 0.4.5 ---------------------------------------------------------------------
3359
3360 PLUGIN: SECURE OLSR
3361
3362 A plugin that generates and checks message signatures is added.
3363 Check lib/secure
3364
3365 PLUGIN: TOPOLOGY GRAPH
3366
3367 A plugin that generates output of the topology in the dot format
3368 is added. See lib/dot_draw
3369
3370 OPTIMIZATIONS
3371
3372 Some optimizations done that should cause fewer route recalculations.
3373
3374 BUGFIXES
3375
3376 Some bugs reported by Takafumi Tanaka fixed.
3377
3378 RESTORATION OF NETWORK SETTINGS
3379
3380 Network settings like disabling of ICMP redirects and spoof filter, are
3381 now restored at exit by olsrd.
3382
3383 RFC COMPLIANCE FIX
3384
3385 Nodes would in certain scenarios retransmit messages originating for
3386 themselves. This was a RFC incompliance. Reported by Ingmar Baumgart.
3387
3388 NON-WLAN TIMERS
3389
3390 No longer setting the HELLO interval of non-wlan interfaces as a multiplier
3391 of the wlan interval. The interval is set seperatly now.
3392 Due to this there are some updates in the configfile imperatives.
3393
3394 CODE CLEANUPS
3395
3396 Some new macros introduced for table insertion and removal and IP
3397 copying and comparison.
3398
3399 FRONT END BUGFIXES
3400
3401 IPv6 bugfixes in the GUI.
3402
3403
3404 0.4.4 ---------------------------------------------------------------------
3405
3406 ROUTE CALCULATION
3407
3408 Routes are no longer added via neighbors declaring a willingness
3409 of WILL_NEVER.
3410
3411 LINK SENSING AND ROUTE CALCULATION
3412
3413 Link sensing and route calculation has been updated to handle
3414 multiple links between hosts in a sane way.
3415
3416 IP SPOOF FILTERING
3417
3418 IP spoof filtering is disabled on the interfaces which olsrd runs.
3419 These settings are not restored!
3420
3421 ICMP REDIRECTS
3422
3423 ICMP redirect message generation is disabled on the interfaces
3424 which olsrd runs.
3425 These settings are not restored!
3426
3427 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
3428
3429 Options to set the MID and HNA emission intervals and
3430 validity time in the configfile added.
3431
3432 IPv6 ADDRESS SCOPE
3433
3434 Option to set what IPv6 address type(scope) to use in the
3435 configfile added. It can be set to either global or site-local.
3436
3437 IPv6 MULTICAST
3438
3439 Options to set site-local and global multicast addresses
3440 in the configfile added.
3441
3442 EMISSION INTERVAL FUNCTION
3443
3444 Functions to set emission intervals at runtime added.
3445
3446 LINK LAYER NOTIFICATIONS
3447
3448 If started with the -llinfo switch olsrd will collect and display
3449 link-layer information on neighbors. This is no longer limited to
3450 one interface. But no action is taken based on this info - and
3451 there is a upper limit of 8 neighbors from which this info can
3452 be collected pr. interface. This limitation is inherited from the
3453 WLAN drivers and is not something imposed by the olsrd code!
3454
3455 IPv6 HNA MESSAGE FORMAT
3456
3457 IPv6 HNA messages now contains 128-bit netmask instead of prefix.
3458
3459 PLUGIN FUNCTIONS
3460
3461 Added "packet transform functions" which allow plugins to alter all
3462 outgoing OLSR traffic.
3463
3464 RESTRUCTURING
3465
3466 Moved most headers out of OS dependent directories. The tunneling
3467 and link-layer notification interface is not yet separated from
3468 the /linux directory.
3469
3470 MANUALPAGE
3471
3472 A manpage(olsrd(8)) describing olsrd has been created. It is installed
3473 when using 'make install'.
3474
3475
3476 0.4.3 ---------------------------------------------------------------------
3477
3478 PLUGIN SUPPORT
3479
3480 Olsrd now supports runtime-loadable plugins! A couple of example plugins
3481 are located in the lib/ directory. Read the README files in the various
3482 plugin directories for more info. A directive to load plugins have been
3483 added to the configfile as well.
3484 Documentation of the plugin interface can be fount at http://www.olsr.org.
3485
3486 The plugin interface is designed to be extendable. But it should _always_
3487 be backwards compatible with the interface used in this release!
3488
3489 LINK-LAYER NOTIFICATION
3490
3491 Some preliminary link-layer notification code has been added. Link quality
3492 can be written to stdout if olsrd is started with the -llinfo switch.
3493 No action is currently taken based on this info. And info will only
3494 be retrieved from the interface named "eth1".
3495 This code is not usable for users as of yet!
3496
3497 MPR UPDATES
3498
3499 Neighbors with willingness set to WILL_ALWAYS is now always added. The
3500 MPR selection is optimized as described in RFC3626 section 8.3.1
3501 point 5.
3502
3503 MPR BUGS
3504
3505 There was a couple of bugs in the MPR selection code. All fixed.
3506
3507 LINUX 2.6 BUG
3508
3509 Users could not run olsrd on multiple interfaces using the Linux 2.6 kernel
3510 series. This is now fixed.
3511
3512 MINOR BUGS
3513
3514 One small bug in link hysteresis initialization and one in HNA route
3515 deletion.
3516
3517 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
3518
3519 Message-seqnos was implemented on a pr. messagetype and pr. interface
3520 basis. This is not RFC3626 compliant and has been updates. All messages
3521 and interfaces now uses a global seuencenumber.
3522
3523 RANDOM SEQUENCENUMBERS
3524
3525 Sequencenumbers are now initialized using a random value.
3526
3527 DAEMON MODE
3528
3529 Fixes for running olsrd in daemon mode(debug 0).
3530
3531 OPTIMIZATIONS
3532
3533 Optimizations based on profiling implemented.
3534
3535 SANITATION
3536
3537 Message size is checked for every message before passing it to the
3538 appropriate message parsing function. If the size is bigger than the
3539 remaining size of the olsr packet then the message is discarded.
3540
3541 GUI FRONT-END
3542
3543 Some minor modifications done to the gui.
3544
3545 INTERNAL CHANGES
3546
3547 Lots of changes in handling of registration and unregistration of
3548 scheduler, socketparser, parser and local hna set.
3549 Some restructuring and movement of functions.
3550
3551
3552 0.4.2 ---------------------------------------------------------------------
3553
3554 No public release
3555
3556 0.4.1 ---------------------------------------------------------------------
3557
3558 No public release
3559
3560 0.4.0 ---------------------------------------------------------------------
3561
3562 LINK HYSTERESIS
3563
3564 Link hysteresis as described in the RFC added.
3565
3566 TC REDUNDANCY
3567
3568 TC redundancy as described in the RFC added
3569
3570 MPR REDUNDANCY
3571
3572 MPR redundancy as described in the RFC added
3573
3574 SCHEDULER REWRITE
3575
3576 The scheduler has been rewritten to register scheduled
3577 events(function pointers) dynamically.
3578
3579 PARSER REWRITE
3580
3581 The parser has been rewritten to register parse functions
3582 on a pr. messagetype dynamically
3583
3584 MALLOC WRAPPER
3585
3586 A wrapper for the malloc(3) syscal has been introduced.
3587 olsr_malloc(size_t, const char *) should ALWAYS be used.
3588
3589 CODE RESTRUCTURING
3590
3591 Lots of restructuring in headerfiles.
3592 Linux spesific code moved to subdirectory linux/
3593 FreeBSD code to be put in freebsd/
3594 LOTS of code restructured due to the rexrite of the scheduler
3595 and parser.
3596
3597 MPR CALCULATION
3598
3599 Optimizing the MPR set as suggested in the RFC section
3600 8.3.1 point 5 added.
3601
3602 BUGFIXES
3603
3604 Some bugs in MPR selection fixed.
3605
3606
3607 0.3.8 ---------------------------------------------------------------------
3608
3609 CODE REWRITES
3610
3611 HNA code completely rewritten!
3612 The old code was really bad! Now it is much cleaner implemented and
3613 should work fine.
3614 One- and two-hop neighbor list structures rewritten. They now use
3615 the same hashed double-linked lists as the rest of the information
3616 sets use.
3617
3618 CODE RESTRUCTURING
3619
3620 Some code restructuring which resulted in the new files: timer.h,
3621 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c
3622 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some
3623 renamed files
3624
3625 BUG FIXES
3626
3627 The bug causing errormessages on exit is fixed.
3628 The bug that caused initial HNA routes in the GUI to display a hopcount
3629 of 0 fixed.
3630 IPv6 HNA netmasks were all added as /128. It's fixed now.
3631
3632 IPv6
3633
3634 Turns out sitelocal address had to be preferred to avoid IPv6 header
3635 messing up link-sensing. Bug fixed
3636
3637
3638 0.3.7 ---------------------------------------------------------------------
3639
3640 CODE REWRITES
3641
3642 The entire TC set and MPR selector set code rewritten. Hashing and
3643 double linked lists added to the MID code.
3644 Lots of HNA code has been rewritten as well.
3645
3646 HNA bugfix
3647
3648 When a node lost connectivity to a HNA GW all HNA entries to that gw