Merge remote-tracking branch 'olsr/openbsd'
[olsrd.git] / CHANGELOG
1 Note: In this release the pud plugin was upgraded to version 2.0.0.
2       This is because of a breaking change in its wire format. If you have
3       deployed the pud plugin on your mesh then you should update all nodes
4       to the new pud plugin at the same time since there is no interoperability
5       between the old version and the new version.
6
7 Note: In this release the configuration files have been moved from /etc into
8       /etc/olsrd.
9
10 0.6.6.2 -------------------------------------------------------------------
11
12 Alessio Caiazza (2):
13       Hotfix for very long http headers also for jsoninfo
14       jsoninfo: HTTP headers with CORS (if requested)
15
16 Ferry Huberts (8):
17       pud: fix java detection in the wireformat java bindings (again)
18       pud: do the same fix as in the previous commit, now for i386
19       Make sure to save/restore errno in signal handlers
20       main: olsr_create_lock_file: fix return value check on 'open' call
21       pud: fix readIPAddress function
22       tok: improve the nmea_calc_crc function a bit
23       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
24       Fix strange coding in the 'long headers' fix
25
26 Henning Rogge (5):
27       Update version after release of v0.6.6.1
28       Fix processing error for fragmented hellos
29       Fix some spelling mistakes
30       Hotfix for much too long http headers
31       Release v0.6.6.2
32
33 0.6.6.1 -------------------------------------------------------------------
34
35 Henning Rogge (2):
36       Update version after release of v0.6.6
37       Release v0.6.6.1
38
39 Manuel Munz (1):
40       Fix jsoninfo again after a regression which was introduced with
41
42 0.6.6 -------------------------------------------------------------------
43
44 Bastian Bittorf (3):
45       [hotfix] plugin: httpinfo: in case of an unrecoverable error ("could not
46          initialize HTTP socket") exit for returnvalue != 0
47       plugin: dot_draw: readme: make it clear, that it only opens an
48          IPv4-socket, so a 'telnet ::1 2004' is not possible
49       plugin: dot_draw: readme: replaced a b0rken link
50
51 Ferry Huberts (146):
52       Update version after branch of v0.6.5
53       gateway: store current gateway(s) in a struct
54       gateway: lazily allocate the current gateway structs
55       gateway: add path_cost to 'set gateway' interface
56       gateway: add interface to get the gateway costs
57       gateway: simplify by using the new costs interface
58       gateway: add gateway_list.{c,h}
59       gateway: keep track of the active gateways in a list
60       Merge branch 'release-0.6.5'
61       pud: java make target is dependent on library make target
62       Merge branch 'release-0.6.5'
63       Merge branch 'release-0.6.5'
64       json_info: only output smart gateway info on Linux
65       kernel_route: olsr_os_inetgw_tunnel_route can now take the table
66       gateway: let the gateway code determine the tunnel name
67       gateway: remove the worst gateway before adding new one
68       gateway: add SmartGatewayUseCount configuration parameter
69       gateway: use SmartGatewayUseCount setting the the gateway lists
70       gateway: add SmartGatewayEgressInterfaces configuration parameter
71       gateway: add SmartGatewayMarkOffset{Egress,Tunnels} configuration
72          parameters
73       gateway: add SmartGatewayPolicyRoutingScript configuration parameter
74       gateway: initialise a set of fixed tunnel names in/for multi-gateway mode
75       gateway: initialise the egress interface names in/for multi-gateway mode
76       gateway: use fixed tunnel names in/for multi-gateway mode
77       gateway: setup and clear table specific default routes in/for
78          multi-gateway mode
79       gateway: setup/cleanup multi-gateway mode during startup/shutdown of olsrd
80       gateway: introduce and use MULTI_GW_MODE define
81       gateway: enable multi-gateway mode
82       gateway: convert some defines into inline functions
83       kernel_route: olsr_os_inetgw_tunnel_route now needs the table explicitly
84       Merge branch 'multigw'
85       gateway: remove 2 superfluous asserts
86       gateway: add an assert to prevent an 'unused' warning
87       gateway: also adjust the IPv6 gateway list in olsr_update_gateway_entry
88       gateway: fix policy script permissions checking
89       gateway: the gateway policy script really is a bash script
90       gateway: minor indentation fixes in the gateway script
91       gateway: fix copy/paste mistake in setting up the egress rules
92       gateway: remove policy rules before adding them
93       gateway: ignore errors in remove-before-add rule removals
94       Revert "linux: name is required to be non-null in
95          olsr_os_cleanup_iptunnel"
96       gateway: do not show (bogus) errors
97       gateway: cleanup the server tunnel later
98       cfgparser: add SmartGatewayAlwaysRemoveServerTunnel configuration
99          parameter
100       gateway: use SmartGatewayAlwaysRemoveServerTunnel configuration parameter
101       gateway: fix a revert problem
102       gateway: use tnl_(4|6) tunnel names instead of tnl(4|6)_
103       gateway: properly set the egress interface names
104       json_info: do not loop forever on smart gateway egress interfaces
105       pud: the best uplink gateway is the same as the current (smart) gateway
106       pud: there is no hard dependency on smart gateway
107       pud: only forward downlinked messages when the smart gateway system is
108          enabled
109       pud: update documentation about smart gateway changes
110       gateway: fix 2 small typos in a comment
111       Revert "pud: the best uplink gateway is the same as the current (smart)
112          gateway"
113       pud: minor update resulting from the previous revert
114       pud: minor update to getBestUplinkGateway
115       gateway: minor improvement to get_unused_iptunnel_name
116       gateway: update some comments
117       gateway: remove 2 unneeded asserts
118       gateway: use standard macro to loop over the gateway tree in
119          olsr_cleanup_gateways
120       gateway: fix 'eligible' conditions in gw_default_choose_gateway
121       gateway: minor speed improvement in gw_default_choose_gateway
122       android: fix the path of the tunnel node in the /dev tree
123       pud: use the proper __ANDROID__ define
124       gateway: allow advertisement of zero bandwidth
125       gateway: add some comments
126       gateway: also set (update) the gateway when costs have changed
127       gateway: find_interfaceName only works in multi-gateway mode
128       gateway: simplify gw_default_calc_threshold
129       gateway: improve comments of gw_default_weigh_costs a bit
130       gateway: rename some variables to make it more readable
131       gateway: fix stable count dampening in gw_default_timer
132       gateway: do not use bitwise operators for logic conditions
133       gateway: reverse semantics of two variables
134       gateway: always select a new gateway when threshold != 0
135       main: add -pidfile command line option
136       main: fix pidfile compilation on windows
137       Merge branch 'release-0.6.5'
138       make: enable 32/64 bit cross compilation
139       pud: pull in nmealib v1.0.4
140       gateway: remove some 'unused' code from sgw script
141       make: fix typos in 'enable 32/64 bit cross compilation' commit
142       pud: enable 32/64 bit cross compilation for the java build
143       make: ifdef fixups
144       Merge branch 'release-0.6.5'
145       Merge branch 'release-0.6.5'
146       Merge branch 'release-0.6.5'
147       pud: detect the java include directory
148       dyn_gw: remove bogus include
149       make: fix a type in the Linux SUBDIRS assignment
150       make: add dyn_gw, mdns and p2pd to the Android SUBDIRS
151       pud: update nmealib 32/64 cross compilation
152       Revert "pud: update nmealib 32/64 cross compilation"
153       main: fix 2 minor warnings for win64 build on debian squeeze
154       make: only install sgw related files when sgw is supported
155       mdns: fix container_of pointer arith
156       mdns: don't use non-standard ushot type
157       mdns: fix three alignment warnings
158       mdns: supported on Android
159       p2pd: supported on Android
160       make: ensure win32 install respects DESTDIR
161       Merge branch 'release-0.6.5'
162       gateway: work around kernel IPIP module initialisation bug
163       gateway: fix overlap in success/fail IPIP tunnel init
164       doc: make the documentation generation commands a bit more verbose
165       pud: detect the java include directory
166       pud: better detection of java jdk
167       pud: better detection of java jdk
168       gateway: work around kernel IPIP module initialisation bug
169       Merge branch 'release-0.6.5'
170       PUD: nmealib: fix parsing of date in GPRMC
171       pud: nmealib: fixup the previous commit
172       main: use /dev/urandom by default
173       main: use /dev/urandom by default
174       pud: set local loopback for multicast tx
175       pud: set local loopback for multicast tx
176       Merge branch 'release-0.6.5'
177       arprefresh: fix some spelling
178       arprefresh: document the BPF program to make it readable
179       arprefresh: use the ARRAYSIZE macro
180       arprefresh: remove a comment
181       arprefresh: do not process IPv6 packets when in IPv4 mode
182       arprefresh: add a note about VLANs and IPv6
183       remove pthread usage as much as possible
184       Branch v0.6.6
185       Remove mercurial ignore file; we use git
186       build: ignore builddata.c when hashing sources
187       build: move build data into its own include file
188       gateway: always deal with 64bit scaled path costs
189       gateway: introduce and use removeGatewayFromList function
190       gateway: add SmartGatewayTakeDownPercentage configuration parameter
191       gateway: proactively take down 'expensive' gateways
192       release: fix the list of generated files
193       release: update some comments
194       release: refactor the checkVersionIncrementing function
195       release: do not update the version on master when it's already higher
196       release: only report that master changed when it was actually changed
197       release: checkVersionIncrementing: optionally allow equal versions
198       release: also check against the Makefile version when branching
199       txtinfo: prevent buffer overflow
200       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
201       build: really _ignore_ builddata.c when hashing sources
202       build: only print the md5 hash in hash_source.sh
203       Makefile: fix builddata when building from tarball
204       pud: fix readIPAddress function
205
206 Hans-Christoph Steiner (3):
207       GNU/Linux: add service profile for 'ufw' firewall package
208       update Commotion example olsrd.conf to represent current project state
209       dyn_gw/dyn_gw_plain require /proc, remove from default build on non-Linux
210
211 Henning Rogge (7):
212       Fixed debug output of Scheduler polling interval
213       Fix multicast join for IPv6
214       Merge branch 'master' of http://olsr.org/git/olsrd
215       Update version after release of v0.6.5.2
216       Update version after release of v0.6.5.2
217       Fix build break for MinGW compilation on Fedora 19.
218       Release v0.6.6
219
220 Ronald in 't Velt (1):
221       Fix setsockopt for setting Traffic Class in IPv6
222
223 Saverio Proto (3):
224       main: fix the check on inet_pton return value because it returns 1 on
225          success.
226       mDNS: remove from Makefile PTHREAD useless dependency
227       txtinfo: update README file
228
229 Scott Kidder (1):
230       jsoninfo: ensure output is wrapped in curly braces.
231
232 Vasilis Tsiligiannis (1):
233       olsrd-quagga: Fix memory leak when adding and deleting routes
234
235 equinox (1):
236       quagga plugin routes additional
237
238 0.6.5.6 -------------------------------------------------------------------
239
240 Alessio Caiazza (2):
241       Hotfix for very long http headers also for jsoninfo
242       jsoninfo: HTTP headers with CORS (if requested)
243
244 Ferry Huberts (8):
245       pud: fix java detection in the wireformat java bindings (again)
246       pud: do the same fix as in the previous commit, now for i386
247       Make sure to save/restore errno in signal handlers
248       main: olsr_create_lock_file: fix return value check on 'open' call
249       pud: fix readIPAddress function
250       tok: improve the nmea_calc_crc function a bit
251       neighbor table: fix crash in olsr_print_neighbor_table on MinGW
252       Fix strange coding in the 'long headers' fix
253
254 Henning Rogge (5):
255       Update version after release of v0.6.5.5
256       Fix processing error for fragmented hellos
257       Fix some spelling mistakes
258       Hotfix for much too long http headers
259       Release v0.6.5.6
260
261 0.6.5.5 -------------------------------------------------------------------
262
263 Ferry Huberts (4):
264       build: really _ignore_ builddata.c when hashing sources
265       build: only print the md5 hash in hash_source.sh
266       Makefile: fix builddata when building from tarball
267       pud: fix readIPAddress function
268
269 Henning Rogge (3):
270       Update version after release of v0.6.5.4
271       Fix build break for MinGW compilation on Fedora 19.
272       Release v0.6.5.5
273
274 Scott Kidder (1):
275       jsoninfo: ensure output is wrapped in curly braces.
276
277 0.6.5.4 -------------------------------------------------------------------
278
279 Ferry Huberts (11):
280       Remove mercurial ignore file; we use git
281       build: ignore builddata.c when hashing sources
282       release: fix the list of generated files
283       release: update some comments
284       release: refactor the checkVersionIncrementing function
285       release: do not update the version on master when it's already higher
286       release: only report that master changed when it was actually changed
287       release: checkVersionIncrementing: optionally allow equal versions
288       release: also check against the Makefile version when branching
289       txtinfo: prevent buffer overflow
290       pud: nmealib: _nmea_parse_time not parsing hsec when given "hhmmss" format
291
292 Henning Rogge (2):
293       Update version after release of v0.6.5.3
294       Release v0.6.5.4
295
296 0.6.5.3 -------------------------------------------------------------------
297
298 Ferry Huberts (5):
299       pud: detect the java include directory
300       pud: better detection of java jdk
301       gateway: work around kernel IPIP module initialisation bug
302       main: use /dev/urandom by default
303       pud: set local loopback for multicast tx
304
305 Henning Rogge (2):
306       Update version after release of v0.6.5.2
307       Release v0.6.5.3
308
309 Ronald in 't Velt (1):
310       Fix setsockopt for setting Traffic Class in IPv6
311
312 0.6.5.2 -------------------------------------------------------------------
313
314 Henning Rogge (2):
315       Update version after release of v0.6.5.1
316       Release v0.6.5.2
317
318 Saverio Proto (1):
319       main: fix the check on inet_pton return value because it returns 1 on
320          success.
321
322 Vasilis Tsiligiannis (1):
323       olsrd-quagga: Fix memory leak when adding and deleting routes
324
325 0.6.5.1 -------------------------------------------------------------------
326
327 Ferry Huberts (1):
328       release: use olsrd-version prefix for files in the tarballs
329
330 Henning Rogge (2):
331       Update version after release of v0.6.5
332       Release v0.6.5.1
333
334 0.6.5 -------------------------------------------------------------------
335
336 Aaron Kaplan (1):
337       chose the proper #define in order to take the right #include
338
339 Alessandro (4):
340       mDNS: Implemented Host Filtering for ipv4 and ipv6, writing in the config
341          file which hosts to ignore. The mDNS packets from the ignored hosts
342          will be ignored and not propagated in the network
343       mDNS: Updated README file for mDNS plugin
344       mDNS: Reworked logic of router Election. The election is now handled on
345          interface basis, because the router could have one interface where it
346          needs to be master and another interface where it needs to be
347          disabled. There was a logical bug in the earlier implementation.
348       mDNS: BUGFIX, mDNS plugin, hello message of router election not sent if
349          debug = 0
350
351 Alessandro Gnagni (3):
352       mDNS: Fixing loops for mDNS packets when mDNS plugin is misconfigured
353       mDNS: review of Alessandro Gnagni patch, inserted a config value to
354          enable or disable TTL check and change, default is enabled.
355       mDNS: Implemented router election mechansim to have only 1 active mDNS
356          OLSR router in 1 LAN
357
358 Andreas Tonnesen (1):
359       x86_64 patch from Bernd
360
361 Bernd Petrovitsch (1):
362       * added -Wbad-function-cast
363
364 Ferry Huberts (219):
365       gateway: clarify header with extra comments and ordering
366       gateway: reorder functions to reflect order in header
367       gateway: formatting
368       gateway: remove 'unused' v{4,6}gw_choosen_external
369       gateway: add asserts to validate gw_handler
370       gateway: clear gw_handler during cleanup
371       gateway: add init and cleanup hooks for gateway plugins
372       gateway: rename hooks
373       gateway: add comments to struct olsr_gw_handler function prototypes
374       gateway: inline olsr_find_gateway_entry function
375       gateway: inline olsr_trigger_inetgw_selection function
376       gateway: rename a function
377       gateway: simplify a condition
378       gateway: push an if condition into its nested if's
379       gateway: merge 2 code blocks
380       gateway: the gateway to set must be in the gateway tree
381       gateway: the gateway to set must either be an IPv4 or IPv6 gateway or
382          both
383       gateway: prevent 2 NULL dereferences
384       gateway: merge 2 code blocks
385       pud: force pending buffer out if not enough space for our message
386       pud: include nmealib v1.0.3
387       http_info: pud satellites in use are now green, not in use are red
388       ifdef: fix some include ifdefs
389       update comments on all ifdefs
390       olsrd_plugin: remove #if 1
391       gateway: rename 2 variables
392       remove most '#if 0' blocks
393       gateway: merge the olsr_get_ipv{4,6}_inet_gateway functions
394       mdns: fix compilation warnings
395       mdns: fix a compilation warning / copy-paste error
396       bsd: fixup comment
397       improve VERBOSE handling
398       common: fix varargs cleanup
399       pud: fix resource leak
400       pud: fix socket error
401       pud: fix socket error
402       pud: fix position file stat/use race
403       pud: fix getBestUplinkGateway
404       pud: nmealib: fix copy/paste error
405       pud: nmealib: fix buffer overrun
406       pud: nmealib: fix buffer overrun
407       pud: nmealib: fix invalid format string conversion
408       add a COVERITY instructions text file
409       pud: nmealib: fix invalid format string conversion
410       pud: nmealib: fix invalid format string conversion
411       pud: fix closing fd
412       pud: fix checking of downlink message IP version
413       sgwdynspeed: fix resource leak and file stat/use race
414       bmf: explicitly cast fgetc result into a char
415       bmf: do not close an 'error' socket return value
416       bmf: do not dereference NULL pointer
417       httpinfo: do not close an 'error' socket return value
418       httpdinfo: fix resource leak
419       secure: can only work for IPv4, so assert on it
420       secure: do not hard-code a sizeof()
421       secure: decrease a (stack allocated) buffer size
422       secure: use sizeof() of the fields being copied
423       secure: decrease a (stack allocated) buffer size
424       secure: initialise rrmsg correctly
425       secure: can only work for IPv4, so assert on it
426       secure: do not hard-code a sizeof()
427       secure: decrease a (stack allocated) buffer size
428       secure: use sizeof() of the fields being copied
429       secure: decrease a (stack allocated) buffer size
430       secure: initialise crmsg correctly
431       secure: can only work for IPv4, so assert on it
432       secure: do not hard-code a sizeof()
433       secure: decrease a (stack allocated) buffer size
434       secure: initialise cmsg correctly
435       nameservice: fix a resource leak
436       nameservice: fix wrong size argument
437       nameservice: check return value of fcntl
438       nameservice: do not close an fd that is not open
439       nameservice: remove some dead code
440       jsoninfo: fix a resource leak
441       jsoninfo: make sure that uuid is null-terminated
442       jsoninfo: remove some dead code
443       jsoninfo: remove pointless compare
444       mdns: suppress a Coverity warning
445       mdns: remove some dead code
446       mdns: do not close an fd that is not open
447       mdns: do not close an fd that is not open
448       mdns: check return value of inet_pton
449       mdns: check return value of sendto
450       p2pd: do not close an fd that is not open
451       p2pd: do not close an fd that is not open
452       p2pd: remove some dead code
453       bmf: do not close an fd that is not open
454       pud: remove some dead code
455       quagga: explicitly ignore return value of fcntl
456       tas: fix a memory leak
457       txtinfo: remove some dead code
458       main: fix an Out-of-bounds access
459       cfgparser: fix some memory leaks
460       cfgparser: fix a copy/paste error and resulting memory leak
461       cfgparser: fix dereference before assert
462       linux: apm: fix retry opening of apm proc file
463       olsr_switch: fix a memory leak
464       lq: make sure that info_head != NULL
465       lq: make sure last_ip != NULL
466       android: fix type punning warning
467       pud: fix alignment warning
468       gateway: initialise the handler before setting up the tunnel
469       gateway: cleanup: free the allocated memory cookie
470       gateway: ensure cleanup uses the reverse order of init
471       gateway: minor simplification in olsr_delete_gateway_entry
472       gateway: allow immediate removal of a gateway entry
473       gateway: split olsr_delete_gateway_entry
474       gateway: walk the gateway tree to properly cleanup
475       linux: sanitise ACPI battery data
476       defs: fix strscpy null pointer dereference
477       tas: lua: official source code for 5.0.2
478       tas: lua: run gnu-indent.sh script
479       cleanup, 1. step (to get some local changes away):
480       * added -Wcast-qual: this killed lots of unnecessary type-casts
481       Fix sytax errs and line break quirks for gnu-indent
482       ARM alignment warnings fixed
483       Patch ALIGN_NOWARN_ARM macro for better priority handling.
484       use the POSIX standard '__linux__' macro instead of 'linux'
485       tas: lua: run gnu-indent.sh script
486       tas: lua: sync up to official source code with fixes
487       Merge branch 'lua-official-502'
488       cookie: an array already is a pointer
489       cookie: add an assert
490       Revert "httpdinfo: fix resource leak"
491       httpinfo: add a comment about why the client socket is not closed
492       gateway: minor optimisation
493       gateway: improve cleanup
494       gateway: rename gw_mem_cookie to gateway_entry_mem_cookie
495       gateway: add a define for the tunnel name
496       gateway: stub out olsr_print_gateway_entries on #ifdef NODEBUG
497       duplicate_set: stub out olsr_print_duplicate_table on #ifdef NODEBUG
498       link_set: stub out olsr_print_link_set on #ifdef NODEBUG
499       mpr_set: stub out olsr_print_mpr_set on #ifdef NODEBUG
500       routing_table: stub out olsr_print_routing_table on #ifdef NODEBUG
501       tc_set: stub out olsr_print_tc_table on #ifdef NODEBUG
502       two_hop_neighbor_table: stub out olsr_print_two_hop_neighbor_table on
503          #ifdef NODEBUG
504       hna_set: stub out olsr_print_hna_set on #ifndef NODEBUG
505       hna_set: stub out olsr_print_hna_set on #ifdef NODEBUG and fix
506       neighbor_table: stub out olsr_print_neighbor_table on #ifndef NODEBUG
507       neighbor_table: stub out olsr_print_neighbor_table on #ifdef NODEBUG and
508          fix
509       use INET_ADDRSTRLEN and INET6_ADDRSTRLEN instead of magic constants
510       gateway: only remove a tunnel when there is one
511       gateway: rename a variable
512       gateway: minor improvement in NULL comparisons
513       hna_set: olsr_ip_prefix_to_string outputs a wider string
514       gateway: refactor olsr_set_inet_gateway
515       Merge tag 'v0.6.4'
516       win32: use #ifdef _WIN32
517       Makefile: fixup some forgotten make command prefixes
518       Makefile: add gui target
519       Makefile: always pass VERBOSE to the make command
520       gui: linux: minor Makefile fixup
521       gui: linux: clean and install are phony targets
522       gui: linux: add VERBOSE handling
523       gui: linux: fix some 'may be used uninitialized' compiler warnings
524       gui: linux: use toplevel make options
525       gui: linux: fix some 'noreturn' compiler warnings
526       gui: linux: fix some 'discards const qualifier' compiler warnings
527       gui: linux: fix some 'old-style function definition' compiler warnings
528       gui: linux: fix 'too few arguments to function ipc_connect' compiler
529          warning
530       gui: linux: fix a 'mixed declarations and code' compiler warning
531       gui: linux: fix some 'unused parameter' compiler warnings
532       Revert "gui: linux: fix some 'may be used uninitialized' compiler
533          warnings"
534       gui: linux: fix some 'may be used uninitialized' compiler warnings
535       gui: linux: fix some 'shadow' compiler warnings
536       gui: linux: fix inccorrect sizeof()
537       gui: linux: fix string buffer overflow
538       gui: linux: fix string buffer overflow
539       gui: linux: fix the string buffer overflow better
540       gateway: simplify stopping the cleanup timer
541       tas: remove plugin
542       main: do not seed the random number generator with the process id
543       win32: remove unused getpid() function
544       hna_set: explicitly cast to (time_t *) in calls to localtime()
545       neighbor_table: explicitly cast to (time_t *) in calls to localtime()
546       main: improve random number generator seed
547       bmf: do the minimum length check earlier
548       changelog: update to current state
549       print_packet: fix wrong use of sizeof()
550       main: remove -dispin and -dispout command line options
551       main: add release script
552       Update version after release of v0.6.4
553       Changelog: remove 0.6.5 preliminary changelog
554       Merge branch 'release-0.6.4'
555       bmf: check minimumLength against buffer size
556       sgwdynspeed: put plugin config in olsrd.conf.sample
557       pud: put plugin config in olsrd.conf.sample
558       cookie: raise the number of cookies
559       pud: enable dynamic polling of the position file
560       gateway: only check smart gateway configuration on linux
561       linux: put #ifdef __linux__ around code
562       doc: add doxygen documentation generation
563       doc: fix common documentation tags
564       doc: fix linux specific documentation tags
565       doc: fix unix specific documentation tags
566       doc: fix bsd specific documentation tags
567       doc: fix win32 specific documentation tags
568       doc: do not generate documentation for gui code
569       release: move the stringTrim function up a bit
570       release: make gitIsGitDirectory do the correct thing
571       release: fix usage of literal dot in regular expressions
572       release: move into the base directory earlier
573       release: convert some code into checkIsOlsrdGitCheckout function
574       release: convert some code into checkGitSigningKeyIsConfigured function
575       release: convert some code into getPrevRelTag function
576       release: the script can now also create a release branch
577       Merge branch 'release-0.6.4' into mmmm
578       Branch v0.6.5
579       pud: change java include path to generic java include path
580       pud: java make target is dependent on library make target
581       doc: clean up the latex directory if empty
582       Revert "linux: name is required to be non-null in
583          olsr_os_cleanup_iptunnel"
584       gateway: fix a revert problem
585       android: fix the path of the tunnel node in the /dev tree
586       gateway: fix stable count dampening in gw_default_timer
587       gateway: always select a new gateway when threshold != 0
588       main: add -pidfile command line option
589       main: fix pidfile compilation on windows
590
591 Frank de Brabander (4):
592       New feature: support for Linux NL802.11 wireless link information in cost
593          calculation.
594       Merge branch with new lq plugin for NL80211 support
595       Incorporate fix by Ferry Hubert for float to double promotion
596       Fix optional compilation of the nl80211 lq plugin
597
598 Hans-Christoph Steiner (9):
599       use the POSIX standard '__linux__' macro instead of 'linux'
600       use the Microsoft standard '_WIN32' macro instead of the self-defined
601          'WIN32'
602       olsrd-adhoc-setup: use static BSSID by default to assoc. with the right
603          mesh
604       olsrd-adhoc-setup: configure NetworkManager to be nice when adhoc is
605          manually setup
606       fix misspelling: 'adress' --> 'address'
607       fixed misspelling: usefull -> useful
608       add gcc hardening flags to linux-gtk GUI
609       android: update to use gcc 4.6, available starting with NDK r8
610       android: gcc 4.6 comes with NDK r8b and is not in NDK r8
611
612 Henning Rogge (29):
613       Pud: Do not use the variable name strlen.
614       Fix buffer overflow in mdns plugin
615       Add -Werror=format-security
616       Add VERBOSE flag to makefile to display full gcc commands
617       Fix slightly insulting error message.
618       Moved regex library to a makefile of its own to solve the issues with
619          compiler warnings.
620       fix control flow if kill() command fails to end program
621       fix wrong sizeof() parameter
622       Convert allocated memory into temporary variable
623       Protect against stupid data from ACPI
624       Close socket if bind() fails.
625       Merge branch 'master' of http://olsr.org/git/olsrd
626       Use strscpy instead of strncpy.
627       Check inet_pton return value
628       Close file descriptor if error happens
629       Fix scanf() format vulnerabilities
630       Fix command line parsing macro
631       Fail in IPC initializationis always fatal.
632       fail of non-blocking netlink socket is not fatal
633       Declare olsr_exit() as noreturn
634       Interface will always be found.
635       no hostroute possible in this if() branch
636       reset link timer if not set
637       Remove dead codepath
638       Cleanup error handling in ipc_init()
639       Remove unnecessary asserts
640       Make sure calculated header length does not skip over buffer
641       Fix multicast join for IPv6
642       Release v0.6.5
643
644 Saverio Proto (12):
645       mDNS: Skeleton code for new host filter feature in mDNS plugin
646       mDNS: Upgrading the container_of.h that was backported from src/common in
647          master
648       mDNS: Fix most of the warnings from the compiler
649       mDNS: Update checksum field of the IPv4 Header after altering TTL
650       mDNS: trivial debug print fix and code readibility improvement
651       mDNS: Change version of mdns plugin to 1.0.1 after GSoC 2012 work by
652          Alessandro Gnagni
653       mDNS: init ListOfFilteredHosts in the proper place and not at every
654          received packet
655       mDNS: trivial, removed TODO from code for something that was implemented
656       mDNS: better debug support for filtered hosts feature
657       mDNS: Fixed typo in README
658       Revert "mDNS: init ListOfFilteredHosts in the proper place and not at
659          every received packet"
660       Merge remote-tracking branch 'origin/mDNS-plugin-GSoC-2012'
661
662 0.6.4 --------------------------------------------------------------------
663
664 Bugfix and plugin release 0.6.4
665 - Update of Smartgateway system
666 - small updates to several plugins
667 - lots of updates for PUD plugin
668
669 0.6.3 --------------------------------------------------------------------
670
671 Bugfix and plugin release 0.6.3
672
673 - PUD plugin (position update plugin)
674 - JSONinfo plugin
675 - sgwdynspeed plugin (select dynamic smart gateway based on gw speed)
676 - Update on Quagga plugin (for new Quagga)
677 - Fixes for Androids
678 - Some fixes for GTK and Win32 gui
679 - Lots of core fixes to support new compiler warnings
680
681 0.6.2 --------------------------------------------------------------------
682
683 Bugfix release for 0.6.1
684
685 - Compatibility for Linux kernel 3.x
686 - Lots of small fixes
687 - reworked makefile output
688 - updates for some plugins
689 - repair for Smartgateway feature
690
691 Read GIT changelog at http://olsr.org/git to see a complete history.
692
693 0.6.1 --------------------------------------------------------------------
694
695 Bugfix release for 0.6.0
696
697 Markus Kittenberger <Markus.Kittenberger@gmx.at>
698 - Major bugfix for the neighbor table when a neighbor gets a new main IP.
699 - add /interface command to txtinfo, allow multiple commands per request
700
701 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
702 - wait up to four seconds for aquiring the OLSRd lock. This helps to
703   shutdown OLSRd with a script and restart it at once (kill <pid> is
704   asynchrone, and kill -w is not available in busybox)
705 - add md5 has of all source/headers into version string
706
707 Mitar<mitar@tnode.com>
708 - lot's of small changes for Android. Slowly Android gets a fully
709   supported platform for OLSRd.
710
711 and a lot more small bugfixes. Read GIT changelog at http://olsr.org/git
712 to see a complete history.
713
714 0.6.0 --------------------------------------------------------------------
715
716 Change in version number system. No more -rcX for release candidates and
717 -rX for bugfix releases. In future bugfix releases or updates of plugins
718 will increase the third digit of the version string while feature releases
719 will increase the first and/or the second one.
720
721 Markus Kittenberger <Markus.Kittenberger@gmx.at>
722 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
723 - added NIIT kernel module support for sending IPv4 traffic over
724   IPv6 mesh networks. See README-Olsr-Extensions for more information.
725 - added SmartGateway support. OLSRd can now automatically build
726   IPIP tunnels towards the gateway to prevent gateway flapping.
727   See README-Olsr-Extensions for more information.
728 - complete rewrite of linux netlink routing code. New code should be
729   more understandable and easier to debug/improve.
730
731 Teco Boots <teco@inf-net.nl>
732 - new dyngw plugin. More flexible and more features.
733 - new p2pd plugin (generalized mdns plugin)
734
735 Vasilis Tsiligiannis <b_tsiligiannis@silverton.gr>
736 - new version of quagga plugin (with IPv6 support !)
737
738 Sven-Ola Tuecke <sven-ola@gmx.de>
739 - fixes for improved uClibc support
740 - fixes for better linux kernel 2.4 support
741
742 Saverio Proto <zioproto@gmail.com>
743 - new mdns plugin. (backport from master branch)
744
745 Eric Tromps <erik_tromp@hotmail.com>
746 - new version of bmf plugin. NO pthreads are necessary anymore
747
748 and a lot more small bugfixes. Read GIT changelog at http://olsr.org/git
749 to see a complete history.
750
751 0.5.6-r8 ---------------------------------------------------------------------
752
753 Alina Friedrichsen <x-alina@gmx.net>
754 - patch for using deticated output socket for OLSR packages. This allows
755   to set the src-ip of OLSR packages, which is useful for interfaces
756   with multiple IPs
757
758 Bruce Ford <fordbr@gmail.com>
759 - fixes for compiling olsrd for win32
760
761 Henning Rogge <henning.rogge@fkie.fraunhofer.de>
762 - fix for memoryleak during MID processing
763 - patch series for "network logoff" of OLSRd, other nodes now get
764   notified if an OLSR node switch down to remove it from their database.
765 - cleanup of naming conventions for settings src/dst-ips of OLSR-packets
766   for ipv4/6. See example config files. 
767 - patch to ignore HNA4 for IPv6 and HNA6 for IPv4
768
769 Markus Kittenberger <Markus.Kittenberger@gmx.at>
770 - patch series for MID handling cleanup
771 - compiletime switch for txtinfo to always allow localhost access
772 - add "InterfaceDefaults" section to config files to allow setting values
773   which are shared by all interfaces but can be overwritten in specific
774   config file settings
775 - patch series to allow OLSRd handle multiple config files
776   (multiple "-f <cfgfile>" options)
777
778 0.5.6 ---------------------------------------------------------------------
779
780 PATCHES and BUGFIXES from Henning Rogge <rogge@fgan.de>
781 - Bugfix for fragmented TC sequence numbers
782 - eliminate second timer for edge garbage collection (aka border code).
783 - fix SPF bug
784 - fix for jitter calculation
785 - refactor linkset code
786 - add netsimpcap, a network simulation device
787 - parser refactoring
788 - fix for possible overflow in fpm plugin
789 - prevent Originator-IP from changing during runtime
790 - fix several compiler warnings
791 - fix hanging TC entry from lost onehop neighbor
792 - fix drop package with same seqno in etx_ff
793 - fix segfault in parsing HNA package with bad netmask
794 - fix avl_comparator for route_paths
795 - fix alignment problem in packet buffers
796 - fix: segfault in neighbor/neighbor-2 table
797 - fix: lqmult default parsing
798 - HACK: MinTCVTime parameter hack for Berlin FF network...
799   feel free to ask on the mailing list.
800 - add Watchdog plugin
801 - add explicit runtime lock for OLSR.
802 - remove lq-hysteresis for tc on the receiver side.
803 - enhance protection against malformed packages to prevent
804   OLSR parsing uninitialized data. Thank you Markus and Keks for the LONG
805   debugging session
806 - block tc-redundancy 0/1, it doesn't work with the current dijkstra code
807 - convert httpinfo/txtinfo/dotdraw to nonblocking and autobuf to
808   prevent blocking outgoing connections
809 - fix some bugs with lq-mult
810 - fix bug in duplicate set sequencenumber handling
811 - add Debian/KFreeBSD support (Thanks to Holger Levsen and friends for help)
812 - fix segfault in 'interface lost' monitor
813 - add LQ hysteresis to etx-ff metric
814
815 PATCH from Markus Kittenberger <Markus.Kittenberger@gmx.at>:
816 - txtinfo plugin: add more http options
817 - allow configuration of OLSR UDP port
818 - allow configuration of proto Tag for Routes (RtProto)
819 - add fallback policy rule (priority 65536) if RtTable is used,
820     to ensure that routes can be added to this table
821 - resolve many error conditions while adding routes to the linux kernel
822     (Warning this will also delete any conflicting routes made by other routing daemons or admins)
823 - interface modes mesh (default) and ether (no retransmit of olsr-messages back into a broadcastdomain)
824 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
825 - fix several compiler warnings
826 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
827 - create policy rule later during startup
828 - send MID also with one interface, if its ip different from originator-id
829 - linux rtnetlink code cleanup
830 - workaround: generate routes to single hop neighbours on the fly when inserting routes via them
831     (active only with fib_metric=flat)
832 - testing: insert routes with source-ip set to originator ip
833 - testing: syslog numbering (e.g. useful to detect lost syslog messages when using remote-syslog)
834 - testing: custom library path (default /usr/testlib)
835 Testing features must be activated in olsr_cfg.h before compiling olsrd.
836 This features are used to run a test network in Vienna parallel to the existing
837 OLSR network.
838 - more RT-Netlink cleanups and fixes
839 - backport of timejump patch from TIP
840 - Add detection for vanishing interfaces to Linux netlink code
841 - fix incorret route sorting on new neighbours. use only delete and add/change avl tree,
842   instead of 3 trees
843 - learn neighbours interface alias address from received hellos
844
845 PATCHES from Hannes Gredler <hannes@gredler.at>:
846 - add small valgrind howto
847 - remove the per tc_edge timer
848 - add some basic infrastructure for cookies
849   cookies are used to track usage of timer and memory resources
850 - add a lightweight memory manager to reduce malloc() churn.
851 - eliminate data field from avl_node and list_node and
852   replace this via inline recasts
853 - add indentation dotfile for future code cleanup
854 - refactor the timer implementation, get rid of timeout functions
855   all manipulations done in constant time.
856 - use calloc rather than malloc for lazy callers
857 - log RIB add/del transactions only if there is an actual route change
858 - fix to to always insert a HNA Net when receiving a HNA refresh
859 - fix delete all routes if the last IP address is gone
860 - reduce TC vtime jitter from 25% down to 5%
861
862 PATCHES and BUGFIXES from Sven-Ola Tuecke <sven-ola@gmx.de>:
863 - add a fixed-point math implementation, which saves
864   a great deal of CPU on embedded devices
865 - fix for Link quality dijkstra limit
866 - nameservice plugin supports mac addresses
867 - fix fork/restart code
868 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
869 - fix several compiler warnings
870 - fix olsr_times() to handle different OS implementations (Linux, BSD, OS X)
871 - add makefile support for google android
872 - fix default olsrd.conf examples
873
874 PATCHES and BUGFIXES from Aaron Kaplan <aaron@lo-res.org>:
875 - fix openbsd warnings / compile errors about sprintf strcpy
876 - fix string overflow in dyn_gw plugin
877 - fix string overflow in pgraph plugin
878 - fix openbsd/osx coompile errors
879
880 BUGFIX by Peter Tarjan <peter.tarjan@birdtelecom.hu>:
881 - Do not remember LQ information UNSPEC_LINK neighbors in Hellos.
882 - ignore UNSPEC link for linktype if there is an ASYM/LOST/SYM Link in the
883   same Hello message
884 - ignore UNSPEC_LINKS during MPR lookup
885 - broken MID route handling: we also check the data structures for routing,
886   even if a MID entry exists.
887
888 BUGFIX by John Hay <jhay@meraka.org.za>:
889 - FIX: IPv6 MTU in BSD
890 - Another BSD ipv6 Patch by John Hay
891 - fixes for 64 Bit FreeBSD
892 - fixes for NetBSD
893
894
895 BUGFIX from Erik Tromp <erik_tromp@hotmail.com>:
896 - update in bmf due to new flags field in tc_edge_entry
897
898 PATCH from Clemens Hopfer <datacop@inode.at>:
899 - dot_draw plugin: close the connection after graph output.
900
901 PATCH from Joe Gio <joezgio@gmail.com>:
902 - track if AC power is connected/disconnected
903
904 PATCH from Hagen Paul Pfeifer <hagen@jauu.net>:
905 - import jenkins hash for good hash calculations
906
907 PATCH from Andres Ambrois <andresambrois@gmail.com>:
908 - nameservice plugin: add parameters for SIGHUPing other daemons, or calling scripts
909
910 BUGFIX by Benny Tops <b.tops@mindef.nl>:
911 - fix wrong order of drop_tc checkt in olsr_input_tc
912
913 Felix (OpenWRT NBD):
914 - fix bison problem for OpenWRT
915
916 Sebastian Harl:
917 - add LISTEN parameter for httpinfo/txtinfo/dotdraw
918
919 0.5.5 ---------------------------------------------------------------------
920
921 BUGFIX from Andreas Jacobs <andjac@kawo1.rwth-aachen.de>:
922 - calculate correct sleeptime
923
924 BUGFIX from Dario Borriello <dario_bodj@hotmail.com>:
925 - do not update LQ if not configured
926
927 BUGFIX from Jo-Philipp Wich <freifunk@wwsnet.net:
928 - fix olsr_ip_to_string() buffer quirk
929 - fix txtinfo format quirks in HNA table
930 - name-service plugin - write MID entries to hosts file
931 - avoid infinite loop in the message parser
932
933 PATCH by John Hay <jhay@meraka.org.za>:
934 - compile clean on FreeBSD
935 - bugfix: do not account for IP headers when building MID6 messages
936
937 PATCHES from Henning Rogge <rogge@fgan.de>:
938 - join LQ and non-LQ Hello execution paths
939
940 PATCHES from otti <otti@wirdorange.org>:
941 - rttable-default: configures a new policy routing table for the default route
942
943 BUGFIXES and PATCHES by Sven-Ola Tuecke <mail2news@commando.de>:
944 - Windows Vista: add interface metric to SPF computed metric
945 - lqtc-seqno: Optimize check for old seqno numbers in LQTC messages
946 - lqnatthresh: maintain an advantage for the current (NAT) inet gw
947 - fisheye-startup: Changed to MAX_TTL for the first 32 LQTCs
948 - Added and removed files necessary for win32 compile
949 - Fix for hg: do not remove anything in .hg with 'make uberclean'
950 - 104-olsrd-verysmallfix
951 - 105-fix-lq-buffer-quirks
952 - 106-fix-seqnocheck
953 - 110-bmf-v152
954 - 121-olsrd-fib-metric-approx
955 - 133-fix-lqneigh
956 - 136-optimize-invalidip-check
957 - 138-optimize-message-generation
958
959 BUGFIX from Lorenz Shori <lorenz.schori@gmx.ch>:
960 - Mac OSX compile fixes
961
962 BUGFIXES and PATCHES by Hannes Gredler <hannes@gredler.at>
963 - fix not deleted tc entry.
964 - avoid setting routes with an invalid/impossible netmask.
965 - refactoring of TC parsing to kill another pile of malloc()/free()s
966   saving (again) code and especially run.time performance.
967 - RIB Refactoring, Part 2:
968   - avoid the periodical rib-tree insertion
969   - add a FOR_ALL_HNA_RT_ENTRIES() macro for the snmp folks
970     (or any parties who want to walk HNA entries).
971   - add an olsr_cnf option 'flat_fib_metrics' which defaults to TRUE.
972 - fix broken prefix insertion (regression of the RIB refactoring)
973 - squelsh compiler warnings on Mac OSX
974
975 PATCH by John Hay <jhay@meraka.org.za>:
976 - also printout our own HNAs in the dotdraw plugin.
977
978 PATCH by Patrick McCarty <mccartyp@gmail.com>:
979 - fixed compile errors in the BSD port
980
981 PATCHES by Sven-Ola Tuecke <mail2news@commando.de>:
982 - 102-olsrd-cvs-fixes.patch: use different buffers in the same printf()
983 - 103-olsrd-rt-exportroute-cleanup.patch: avoid a malloc()ed list of functions
984 - 132-save-the-fish.patch: really save the fish and avoid to forward invalid
985   messages from older olsrd versions
986 - 135-georss-map-for-nameservice.patch: fixes and extensions for the namesaervice plugin
987 - 138-olsrd-fixdotdraw.patch: fix the dot_draw plugin
988 (all to be found on http://download-master.berlin.freifunk.net/sven-ola/nylon/packages/olsrd/files/)
989 - Replaced "which" with a /bin/sh script snippet
990
991 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
992 - Jens Nachtigall <nachtigall@web.de> suggested (and reminded) to use
993   olsrd.conf.default.lq as the default installed one.
994   It makes much more sense as - to the best of my(bernd's) knowledge - all
995   larger networks uses the LQ extensions. And new customers should better
996   be pushed in that direction.
997 - with the help of Patrick McCarty <mccartyp@gmail.com>, we got olsr to build
998   on OpenBSD again:
999   * OpenBSD'd `sed` is pretty conservative and doesn't understand 's|re|sub|'.
1000     So we fall back to the old 's/re/sub/' and quote all '/' and '.' correctly
1001     (which was the main reason to use '|').
1002     And while I'm at it: Remove the useless $(CCACHE) from the $(CC) for
1003     dependency generation and beautify (read: "$(strip)") $(CPPFLAGS).
1004   * OpenBSD needs an explicit "#include <sys/types.h>" before
1005     "#include <netinet/in.h>".
1006 - fixed lib/secure/src/md5.h: This was broken as it had
1007   "typedef unsigned long int UINT4;". "unsigned long int" is 8 bytes on x86_64.
1008   We are using now the standardized types from <inttypes.h>.
1009 - fixed warnings and improved lib/secure/src/md5.c:
1010   * we are using memcpy() and memset() instead of the open-coded loops as
1011     suggested 
1012   * const'ified
1013   * added function prototypes for static functions
1014   * moved static functions to the top so that their declaration is before
1015     their use to allow gcc to inline if only used once.
1016   It remains ugly - God knows why there are that so many useless
1017   type-casts.
1018 - Some minor and trivial cleanup: Added two functions to calculate the ETX
1019   value from a struct tc_edge_entry and a struct link_entry, respectively.
1020   And use them everywhere.
1021 - added http://meshcube.org/nylon/utils/olsr-topology-view.pl into
1022   lib/httpinfo/misc as suggested by Jens Nachtigall <nachtigall@web.de>
1023 - Killed "struct olsrd_config *cnf" in src/cfgparser/olsrd_conf.h and replaced
1024   it's usage with "olsr_cnf" from src/defs.h.
1025   Serious cleanup: olsrd_get_default_cnf() does no longer initialize the global
1026   "cnf" variable" but uses a local one which is returned as before. And
1027   olsrd_parse_cnf() does no longer return the global variable it is working on.
1028 - Merged "struct hna4_entry" and "struct hna6_entry" into
1029   "struct local_hna_entry" (as "struct hna_entry" is a different thing)
1030   Both have almost the same data (IP address + netmask/prefix) so we use
1031   the quite new "struct olsr_ip_prefix" to store it.
1032   Also merged the "hna4" and "hna6" pointer in "struct olsr_config" -
1033   look at the global "olsr_cnf->ip_version".
1034 - added a olsr_ip_prefix_to_string() function
1035 - .h file cleanup: def.h does not longer include net_olsr.h because it 
1036   doesn't needs it.
1037 - more type safety: the macros COPY_IP() and COMP_IP are gone and replaced
1038   with "=" or similar "normal" C operations. There are also now the inline
1039   functions ip4cmp() and ip4equal() to work on "struct in_addr", ip6cmp()
1040   and ip6equal() to work on "struct in6_addr" and ipcmp() and ip6equal()
1041   to work on "union olsr_ip_addr".
1042   Most (or even more precise: almost all) uses of COPY_IP() and COMP_IP()
1043   are in "if (olsr_cnf->ip_version) { ... } else { ... }" anyway to
1044   there is no reson to copy an IPv4 address effectively with
1045   "memcpy(&dst, &src, 4)" or compare with memcmp(&a, &b, 4)" wher the
1046   always "4" is stored in a variable inhibiting compiler optimization.
1047   There is also the deprecated function genipcopy() mimicking the old
1048   typeless COPY_IP() macro for the last few places where a cleanup is
1049   needed anyways.
1050   There also lots of old macros left over (commented out of course) until
1051   we are confident that everything works. And then I will kill them too.
1052 - Fixed the misleading definition of "v4" in "struct olsr_ip_addr" fom
1053   "olsr_u32_t" (in network-byteorder!) to "struct in_addr". Lots of
1054   temporary variables to call inet_ntoa()/inet_ptoa() vanished .....
1055 - We have now ip4_to_string(), ip6_to_string() and olsr_ip_to_string()
1056   to print a "struct in_addr", "struct in6_addr" and "union olsr_ip_addr"
1057   into a string buffer.
1058 - cleanup: olsr_ip_to_string() and similar non-reentrant functions now must
1059   get a target buffer. To ease that, there is the "struct ipaddr_str"
1060   which is large enough for all of them (read: for an IPv6 address). This
1061   also removes the cyclic buffer there.
1062   All of these function return a "const char *" which can be directly used
1063   for printf(3) and friends.
1064 - const'ified more functions
1065 - converted the source to UTF-8.
1066 - "struct sig_msg" uses an olsr_u8_t for a byte array (and not "char")
1067 - force the few inline function to always be inlined.
1068 - #ifdef the body of the olsr_print_hna_set() and olsr_print_neighbor_table()
1069   if nothing is done
1070 - declare "int_addr", "int_netmask" and "int_broadaddr" in "struct interface"
1071   as "struct sockaddr_in" since it is that what we actually want there (and
1072   it is similar to the IPv6 code).
1073 - updated the olsrd.conf.default.lq-fisheye to the Debian-deliverd version
1074   after recent discussions olsr-dev@olsr.org
1075 - use "inline_avl_comp_ipv4()" in "avl_comp_ipv4()"
1076 - clean up the routes on more signals. Basically we want to do this on all
1077   signals which terminate the program.
1078 - killed a superflous global buffer in src/main.c
1079 - made inline functions from avl_walk_{first,last,next,prev} and created
1080   "const" versions of it. inline_avl_comp_ipv4() is now also an inline function
1081   (and not a macro)
1082 - created a typedef's for various function pointers - much easier to read.
1083 - cleanup: compare tree->comp (adn other pointers)) to NULL (and not 0)
1084 - killed superflous "return"s at the end of void functions
1085 - const'ified more parameters in many more functions in the .h and
1086   .c files
1087 - init-functions with constant or ignored return values are "void"
1088 - created a typedef fro the callback in "struct export_route_entry"
1089   and using it!
1090 - moved the initialization of the {add,chg,del}_kernel_list variables
1091   into process_routes.c. So they are now "static" there.
1092 - olsr_export_{add,del}_route{,6} are now static in process_routes.c
1093   since they are not used elsewhere.
1094 - olsr_addroute_add_function() and olsr_deldroute_add_function() were
1095   almost identical - made one function out of it.
1096   Same for olsr_addroute_del_function() and olsr_deldroute_del_function().
1097 - fixed the sort order in avl_comp_ipv4_prefix(): We compare now the IPv4
1098   values in host byte order (and not network byte order). So the route
1099   list in the e.g. httpinfo plugin is now nicely sorted.
1100 - fixed and improved the `gcc-warnings` script:
1101   * support older gcc's (as on Debian/Sarge) as they have slightly different
1102     error messages
1103   * removed superflous lines
1104   * replaced the call of `sed` with shell built-in features fixing syntax
1105     errors on Debian/Sarge
1106   * set all locale-relevant variables to "C" (just to be sure)
1107 - consolidated ip{4,6,}{cmp,equal}: all are nwo inline functions using only
1108   the minimal necessary operations. Thanks to Hannes Gredler
1109   <hannes@gedler.at> and Sven-Ola Tuecke <mail2news@commando.de> for pointing
1110   that out and suggesting the `inline`, respectively.
1111   use ip{4,}cmp in lq_avl.[ch] to resue the code. inline_avl_comp_ipv4
1112   is superflous now (and replaced by ip4cmp) and use the global MIN and MAX
1113   macro instead of AVLMIN and AVLMAX
1114 - killed netmasks from the IPv4 part of the code and use the prefixlen there
1115   (similar to thte IPv6 part). Manymore details on
1116   http://lists.olsr.org/pipermail/olsr-dev/2007-November/001464.html
1117 - removed the superflous "open_ipc" field from the "struct olsrd_config" as
1118   it contains only the equivalent of "olsr_cnf->debug_level > 1".
1119 - inspired by Sven-Ola Tuecke: avoid a bash'ism (i.e. "OPTS="${OPTS//$opt}") in
1120   gcc-warnings and ld-warnings. But we do not replace it with `sed` (since it
1121   costs a fork(2) and an exec(3)) but also with shell code which doesn't use
1122   any external program.
1123 - added configuration file support for "flat fib metrics".
1124
1125 0.5.4 ---------------------------------------------------------------------
1126
1127 QUAGGA by Immo 'FaUl' Wehrenberg <immo.olsr@do.bundessicherheitsministerium.de>
1128 - updated to svn version 33
1129
1130 BMF PLUGIN  by Erik Tromp <erik_tromp@hotmail.com>
1131 - updated to 1.5.1
1132 - updated to latest plugin interfaces changes and killed warnings (by Bernd
1133   Petrovitsch <bernd@firmix.at>)
1134
1135 PATCH by Hannes Gredler <hannes@gredler.at> which rewrites the route handling.
1136 To quote him:
1137 ----  snip  ----
1138 change list:
1139 - get rid of separate routing tables for HNA and per-node routes, everything is
1140   now unified in an AVL routing tree (&routingtree)
1141
1142 - introduce walking macros (OLSR_FOR_ALL_RT_ENTRIES()) that hide the internal
1143   structure of the RIB for making life of the plugin authors easier.
1144
1145 - get rid of different SPF implementations for LQ and non-LQ code paths. a
1146   non-LQ edge is simply substituted with a cost of 1.0
1147
1148 - get rid of host masks - a new data type olsr_prefix is introduced which is
1149   basically an ip address plus a prefix length.
1150
1151   do not install the metric in the kernel FIB - for the kernel its pointless
1152   if the route gets installed with a metric of N or M.
1153
1154   we do not need to update the kernel FIB if we have hop count only changes
1155   (for example if there is a reroute action further downstream)
1156
1157   the only things which triggers a kernel FIB route update is a next hop
1158   change (a next hop is neighboring gateway router plus an interface).
1159
1160   all OLSR routes are installed with a metric of 2
1161
1162 - separate between rt_entry and rt_path - the former is a route installed in the
1163   kernel with an next hop. the latter is a candidate for best path selection
1164   after SPF calculation has been done. in the rt_entry we keep a pointer to the
1165   best_path and also to the next hop that was installed in the kernel FIB.
1166
1167   we always keep all originator of a route, if a route originator goes away we
1168   can easy recompute the best path for the route.
1169
1170   the next hop in the rt_entry gets only updated upon a successful route_add
1171   call - that way we always remember what next hop to delete.
1172
1173   stray routes should be history now.
1174
1175 - tweak the linked list toolkit to operate on circular lists.
1176
1177 - get rid of malloc calls for building the kernel update list. the list node is
1178   now embedded in the rt_entry.
1179
1180 - introduce three queues (add/chg/del) for kernel updates.
1181
1182 - for neighbor route dependency tracking the neighbor routes are queued first or
1183   last (depending on which queue you work on)
1184
1185 - rework all the plugins which directly manipulate rt entries.
1186
1187 - rework the plugins that read from the routing table (most notably nameserver,
1188   httpinfo and quagga plugin)
1189
1190 - lots of comments that explains the intentions and purpose of this code-piece.
1191
1192 non RT related stuff:
1193 - use a list rather than a tree for storing the post-SPF results, which further
1194   improves the raw-SPF runtime.
1195
1196 - add display of SPF runtime (masked behind #ifdef SPF_PROFILING)
1197
1198 - http://gredler.at/download/olsrd/neighbor_routes3.diff: This updates the own
1199   IP address (read: the main address) after changes (e.g. on
1200   `ifup wlan0; sleep 1; ifdown wlan0`) and kills the
1201   olsr_fill_routing_table_with_neighbors() function.
1202 ----  snip  ----
1203 And Sven-Ola Tuecke <mail2news@commando.de> fixed an instability issue on interface
1204 up/down operations (see 102-olsrd-rt-refactoring-fixes.patch below) and a missing
1205 initialization.
1206
1207 PATCH by Hannes Gredler <hannes@gredler.at> which "consolidates
1208 the link-state database and the spf-calculation in order
1209 to calculate routes more efficiently".
1210 To quote him (more):
1211 ----  snip  ----
1212 - use the link-state (tc) database for SPF calculations rather than
1213   replicating the notion of vertices and edges for a SPF run.
1214   this heavily reduces malloc() calls and shrinks the total CPU
1215   load of the route calculation path between 60%-80%.
1216 ----  snip  ----
1217
1218 PATCHES by Sven-Ola Tuecke <mail2news@commando.de> to be found on from
1219 http://download-master.berlin.freifunk.net/sven-ola/nylon/packages/olsrd/files/
1220 - 102-olsrd-rt-refactoring-fixes.patch
1221   Because you changed a lot of basics: It's time to handle a general
1222   flaw in the routing system. Plase take a look at chk_if_changed(). This
1223   will free() any "struct interface" pointer without warning at any time.
1224   This is why it's possile to SEGV olsrd with a simple "ifdown xxx".
1225   The patch replaces the (maybe) invalid pointer with an index reference
1226   "iif_index". You can always ask the OS for a name. Please note, that I do
1227   not have a working BSD toolchain, so I've placed an #error in the IPv6
1228   BSD-part where the author/porter has started to hack something funny.
1229
1230 - 110-olsrd-double-wlancard-neigh-hack.patch:
1231   This is a hack for Nodes having to wifi cards with the same channel,
1232   bssid, IP-Range etc. If two nodes can see each other by means of two
1233   possible links (here: two wifi cards with equal config), a bug is  triggered
1234   with the Neigh-is-SYM detections. This small little hack prevents this.
1235
1236 - 112-olsrd-nameservice-fixemptyname.patch:
1237   This is an addon to my lat/lon stuff which will prevent olsrd from
1238   running (oops?) if no hostname is given and the nameservice plugin
1239   is loaded.
1240
1241 - 113-olsrd-dyngwplain-pluginvers5.patch:
1242   This updates the dyngwplain plugin to the new Plugin Iface
1243
1244 - 140-olsrd-arprefreshed.patch:
1245   This is a new one. Opens a packet socket and listen to UDP(698), extract
1246   the sender MAC and refreshes the ARP cache whith that. Should speedup
1247   especially in cases, if you initially try to use a longer routing path which
1248   normally triggers a "ARP-Lookup-Chain".
1249 - 106-olsrd-nameserviceparams.patch:
1250   This patch converts more plugins to the new interface version.
1251 - 104-olsrd-policy-routing.patch
1252   Reworked this one to discard GPL helper functions. Also checked IPv6 and
1253   re-included the IPC hookup. The patch adds a "RtTable [number]" for
1254   /etc/olsrd.conf which is simply the Linux
1255   policy routing table to use. Defaults to 254 (== main).
1256   This patch was modified/clenaed up by <bernd@firmix.at> to use "#if"
1257   instead of "#ifdef" as it's more robust against typos.
1258 - 110-olsrd-fixpacketprint.patch, 112-olsrd-nameservice-fixemptyname.patch,
1259   113-olsrd-txtinfo-fixhttpget.patch, 114-olsrd-timeoutlimit.patch,
1260   115-olsrd-nameserviceparamfix.patch and
1261   116-olsrd-fix-pluginparam-addons.patch fixing the compilation warning
1262   on 64bit and lots of other improvements.
1263 - "Save the fish" patch: Avoid forwarding of packets with too low TTL. This
1264   kills lots of packet forwarding storms.
1265   NB: The oneliner was applied by hand by BP and formatted to look (in BPs O)
1266   more readable.
1267
1268 PATCH by Arnd Hannemann <hannemann@i4.informatik.rwth-aachen.de>
1269 olsr_makefile_make_use_of_exename.patch
1270 - This patch makes sure that the EXENAME variable of Makefile.inc is used
1271   in Makefile.
1272
1273 PATCHES by John Hay <jhay@meraka.org.za>
1274 - update to new FreeBSD WLAN API
1275 - do not require /bin/bash, use /bin/sh
1276 - Fixed alignment so that olsrd runs on FreeBSD/arm
1277 - allow more interface in an IPv6 subnet on FreeBSD
1278 - use PREFIX and DESTDIR as all the other Makefile.$OS also for FreeBSD
1279 - make txtinfo plugin work with IPv6
1280
1281 PATCH by Andreas Jacobs <jacobs@i4.informatik.rwth-aachen.de>
1282 - fix the loss link quality calculation for "windows size % 4 != 0"
1283
1284 PATCH by Acinonyx <acinonyxs@yahoo.gr>
1285 - Bug fix: include $(TOPDIR)/Makefile.inc at the begin in the Quagga plugin
1286
1287 PATCH by David Cornejo <dcornejo@gmail.com>
1288 - fixed an "+=" of an uninitialized variable (detected with/by the
1289   scan.coverty.com).
1290
1291 BUG reported by Aaron Kaplan <aaron@lo-res.org>
1292 - BSD-xargs doesn't know "-r".
1293
1294 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
1295 - Made a function from the ME_TO_DOUBLE() macro (in src/mantissa.h).
1296   This saves code throughout the code even on i386 and will even more
1297   on architectures without floating point units and "-msoft-float".
1298 - And the mathemathics in src/mantissa.h is reformulated to minimize
1299   floating point operations to save CPU power - especially on embedded
1300   devices.
1301 - I rewrote the half of src/lq_packet.[ch] which deals with incoming
1302   packets. This was triggered with performance output of gcc produced
1303   by Sven-Ola Tuecke at CCCamp07.
1304   This kills *lots* of (more than) superflous malloc()s and the same
1305   number of (free()s). And it also kills some code and copying around of
1306   data.
1307 - Make it compile without warning with flex-2.5.33 (to be found on Fedora 7
1308   and Gentoo in Sep-2007) again.
1309
1310 - converted the dyn_gw plugin to plugin interface version 5 (which leaves
1311   the quagga plugion as the last with the old one).
1312 - paving the way to activate -Wshadow, much more to do
1313 - const-ify parameters here and there
1314 - use NULL for pointers (and not "0")
1315 - Killed "extern" declarations in (not generated) .c files
1316
1317 - Based on a patch by Gianni Costanzi <gianni.costanzi@gmail.com> (so credits
1318   and thanks have to go there):
1319   added OS_CFLAG_PTHREAD Makefile variable since gcc (on Linux) requests this
1320   in the manual page.
1321   Changes/additions:
1322   - I added definitions to all OS-specific Makefile.$OS with the value similar
1323     to the value in OS_LIB_PTHREAD (either empty or "-pthread").
1324   - The variable is added to CPPFLAGS (and not CFLAGS) since CPPFLAGS is used
1325     for all cpp and gcc calls (and gcc's man page indicates that it sets
1326     variables for both of them).
1327
1328 0.5.3 ---------------------------------------------------------------------
1329
1330 URGENT BUG FIX
1331 Ignacio García Pérez <iggarpe@terra.es> found a serious bug in the dot-draw
1332 plugin and identified it's source.
1333
1334 BUG FIX
1335 The bmf plugin wanted to kill a not-started thread and this causes a segmentation
1336 violation. This happens if the old plugin interface support is not compiled in
1337 and one uses - or more asccurate: wants to use - the bmf plugin which uses that
1338 ATM. Thanks to Cedric Krier <ced@ced.homedns.org> for reporting this.
1339
1340 DEPENDENCIES FIXED
1341 The dependencies (*.d files) are now properly generated and used. And they also
1342 dependen on the Makefile in the current directory and the Makefile.inc so that
1343 changes there also lead to new compilation.
1344 Remember: We support "ccache" so install it to save lot of meaningless recompiles
1345 if nothing (as seen by the real C compiler, i.e. after the C preprocessor) has
1346 changed.
1347
1348 BUILD FIX
1349 Linux/IA64 and Linux/HPPA also need "-fPIC".
1350
1351 CLEANUPS
1352 - olsr_switch does no longer generate warnings
1353 - olsr_switch is also built with "build_all" and cleaned with "uberclean"
1354 - More "const" all over the place.
1355 - More "static" for local functions and variables.
1356 - Killed an unnecessary "static" variable.
1357
1358 0.5.2 ---------------------------------------------------------------------
1359
1360 URGENT BUG FIX
1361 Sven-Ola Tuecke found a serious bug of the class "show stopper" and sent a patch.
1362
1363 PLUGIN CLEANUP
1364 Plugins handle parameters quite individually (case-sensitive vs case-insensitive,
1365 different parsing functions for the same values, etc.). Plugin Interface version 5
1366 now exports a table of { parameter-name, parsing-function, addr-of-storage } and
1367 it's size. Common functions should be shared.
1368
1369 0.5.1 ---------------------------------------------------------------------
1370
1371 MISC
1372 Upgrade to olsr-bmf 1.5 from Erik Tromp <erik_tromp@hotmail.com>
1373
1374 latitude/longitude support is now in the nameservice plugin done by
1375 Sven-Ola Tuecke <mail2news@commando.de>
1376
1377 added the spf refactoring patch from  Hannes Gredler <hannes@gredler.at> which
1378 saves a noteworthy amount of CPU time. To quote him:
1379 ----  snip  ----
1380 1. use of an AVL tree as a min-heap implementation
1381
1382    as a means for efficient sorting.
1383    (the etx metric is used as the key in the candidate tree)
1384
1385 2. next-hop propagation
1386
1387    rather than tracking the previous node in olsr_relax()
1388    i have changed that model and pre-populate all one-hop neighbors
1389    with their own IP address as 'next-hop' and pull that
1390    pointer up once new paths are explored.
1391
1392    as a result no walker for counting hops and extracting next-hops
1393    is required - it turns out at this is slighly more efficient
1394    than the existing behaviour (even with the cache applied).
1395 ----  snip  ----
1396
1397 CLEANUPS
1398 * moved a only locally needed hack from "union olsr_ip_addr" into the only place
1399   where it is needed in hashing.c
1400
1401 0.5.0 ---------------------------------------------------------------------
1402
1403 APPLIED PATCHES FROM FREIFUNK-FIRMWARE
1404 libsmake, dyngwplain, nameservices+services, tzxtinfo, quagga, quagga-routehandler,
1405 optimize, fixes from Eric Tromp and Sven-Ola Tuecke, CPU-optimize, secure key, HNA-IP
1406
1407 CLEANUPS
1408 removed hardcoded limit on the number of interfaces (at least in the Unix part)
1409 made Makefile targets much more consistent
1410
1411 MISC
1412 put Bmf-1.3 plugin into it
1413
1414 FreeBSD IPv6 SUPPORT
1415
1416 Patch from John Hay applied.
1417
1418 BUGFIXES
1419
1420 0.4.10 --------------------------------------------------------------------
1421
1422 OLSR NETWORK SIMULATOR
1423
1424 An application called olsr_switch(sorry for the nameclash with the win32
1425 GUI) has been added. If olsrd is ran using the -hint option it can now
1426 connect to olsr_switch and be part of a virtual network. This means
1427 that multiple instances can be ran at the same host! The olsr_switch
1428 application allows the user to define link variables on all viritual
1429 links in the network, creating all possible topologies. Read more in
1430 the readme file.
1431
1432 EXPERIMENTAL FISH EYE ALGORITHM
1433
1434 An experimental algorithm for TTL settings on TC messages has
1435 been added. Read more in the corresponding README file.
1436
1437 OPENBSD SUPPORT
1438
1439 olsrd now also compiles on OpenBSD systems. Thanks a lot to Holger
1440 Mauermann for the patches!
1441
1442 BUILDSYSTEM REWRITE
1443
1444 Bruno has rewritten the make system. OS detection is now done
1445 automagically and the general design is much improved.
1446
1447 IP ADDRESS VALIDATION
1448
1449 Olsrd now maintains a set of IP addresses that is considered
1450 invalid. Checks against this set is done on all received
1451 OLSR packets announced originator addresses. The dataset can
1452 be updated dynamically.
1453
1454 PLUGIN INTERFACE
1455
1456 Updated interface version to 3 and added more noticeable warning
1457 for version missmatch.
1458
1459 MATH LIB DEPENDENCY
1460
1461 The dependency on the math lib came from the use of pow(3) in the
1462 mantissa/exponent calculation. The calls to pow in this long forgotten
1463 code, was very unnessecarry. The pow calls are replaced with bitwise
1464 shifts and -lm is no longer needed.
1465
1466 ICMP REDIRECTS ON LINUX
1467
1468 On Linux systems "0" is now also written to the all/send_redirects
1469 procfile and not only the pr. interface ones. Hopefully this resolves
1470 problems reported with systems still sending ICMP redirects.
1471
1472 BUGFIXES
1473
1474 - Fixed init of IPv6 addrtype variable. It used to be uninitialized,
1475   causing it to default to site-local and have some weird side-effects.
1476 - Fixed crash when changing IPv6 address at run-time
1477 - Fixed a bug that prevented setting willingness 0 in the configfile
1478 - Fixed bad handling of missing command line arguments
1479 - Did various updates to prevent assertion when a neighbor
1480   has changed IP and sends HELLO before its olsrd precess has detected
1481   the change.
1482 - Fixed return value check on times(2) calls in the scheduler
1483 - Fixed bug(s) that could cause crash when an interface was brought
1484   down while olsrd was running.
1485 - Removed the silent (read: unchecked) hard limit of 16 interfaces.
1486 - Compiles now cleanly on 64bit (e.g. x86_64).
1487
1488 0.4.9 ---------------------------------------------------------------------
1489
1490 OPTIMIZATIONS
1491
1492 The MID database is now also indexed by alias addresses. this makes
1493 look-ups of main addresses based on alias addresses _much_ faster.
1494 The mid_lookup_main_addr function alone has gone from >30% of the
1495 total CPU time used by olsrd to <1%.
1496 PLUGIN DEVELOPERS: datatypes for MID entries has been changed.
1497
1498 Routing table calculation in the LQ case now uses balanced binary
1499 trees instead of linked lists, which makes look-ups much faster.
1500
1501 The debug output function olsr_printf() is not used by olsrd
1502 internals any more. Instead the macro OLSR_PRINTF is to be used.
1503 This macro does debug level testing _before_ doing any function
1504 calls(both printf itself and parameters to printf). This is a much
1505 more optimized way of doing debug output. In addition olsrd can
1506 be built without any debug output code if doing 'make NODEBUG=1'.
1507
1508 TIMEOUT OF DATASETS
1509
1510 Validity times for dataset entries are now set using the clock_t type
1511 (used to be struct timeval). This data is now fetched from the times(2)
1512 function instead of gettimeofday(2). This prevents possible problems
1513 if the system time is changed.
1514 PLUGIN DEVELOPERS: Note that datatypes for close to all dataset entries
1515 (link, neighbor, mid, hna, tc etc.) has been changed!!
1516
1517 CONFIGURATION FILE
1518
1519 Multiple interfaces can now use the same interface configuration block.
1520 Example:
1521 Interface "if0" "if1" "if2"
1522 {
1523         .....
1524 }
1525
1526 Interface configurations now also support the "Weight" directive. When
1527 olsrd finds multiple links to a neighbor it will choose the link
1528 going via the interface with the lowest weight. Olsrd normally
1529 sets this weight dynamically based on interface characteristics,
1530 but if the user wishes to set a fixed weight in a interface(or
1531 a group of interfaces), this directive is now available.
1532
1533 Moreover, interface configurations now support the "LinkQualityMult"
1534 directive. It takes an IP address and a multiplier as arguments.
1535
1536 Example:
1537
1538 Interface "if0"
1539 {
1540   [...]
1541
1542   LinkQualityMult 192.168.0.1 0.7
1543   LinkQualityMult default 0.5
1544
1545   [...]
1546 }
1547
1548 The idea is to make certain links via the configured interface
1549 artificially worse or better than they really are. The first parameter
1550 specifies the IP address of a neighbour interface. The second
1551 parameter is the multiplier to be applied to the link to the specified
1552 neighbour interface.
1553
1554 After we have derived the link quality from the packet loss among the
1555 packets received from the specified neighbour interface, we multiply
1556 the link quality by the given multiplier. So, the multiplier changes
1557 the LQ value that we use when determining the ETX, which is 1 / (LQ *
1558 NLQ).
1559
1560 If "default" is given as the IP address then the multiplier applies to
1561 all links via the configured interface. Note, however, that olsrd only
1562 assigns one multiplier to each link. It does so in the following way.
1563
1564 * If there is a "LinkQualityMult" line that matches the IP address of
1565   the link's neighbour interface, then use the multiplier in this
1566   line.
1567
1568 * If there isn't any matching line, then look for a "default" line. If
1569   there is a "default" line, then use the multiplier in this "default"
1570   line.
1571
1572 * Otherwise use 1.0, i.e. do not modify the LQ value at all.
1573
1574 Hence, a line with an IP address has priority over a "default" line.
1575
1576 In the above example, the LQ value of the link between the local
1577 interface if0 and the neighbour interface 192.168.0.1 would be
1578 multiplied by 0.7. All other links between the local interface if0 and
1579 a neighbour interface would be multiplied by 0.5.
1580
1581 IPV6 SOCKETS
1582
1583 The socket option IPV6_V6ONLY is now set on IPv6 sockets in linux.
1584 This means that olsrd will no longer receive IPv4 traffic when
1585 running in IPv6 mode.
1586 This should enable users to actually run one olsrd instance using
1587 IPv6 and one using IPv4 at the same time :)
1588
1589 PLUGINS
1590
1591 The httpinfo, dyn_gw and dot_draw plugins now all include olsrd
1592 headerfiles directly. A plugin should define OLSR_PLUGIN before
1593 including olsrd headers. Doing things this way removed the
1594 redundant datatype definitions that has so often caused trouble
1595 when things has been updated in olsrd.
1596
1597 NETBSD SUPPORT
1598
1599 olsrd now also compiles on NetBSD systems. Use 'make OS=nbsd' to
1600 build. This port is not very well tested and feedback is greatly
1601 appreciated.
1602
1603 EXPERIMENTAL MULTI-INTERFACE CODE FOR FREEBSD
1604
1605 Experimental code using libnet can be compiled in allowing multiple
1606 interfaces to be used in FreeBSD.  You enable this by compiling using
1607 OS=fbsd-ll.  You must have libnet-devel installed for this to work
1608 (/usr/ports/net/libnet-devel).
1609
1610 OTHER UPDATES
1611
1612 - WLAN devices are now detected in FreeBSD
1613 - First specified interfaces IP is used as main address.
1614 - Broadcastflag is not checked on interface if fixed broadcast is
1615   set in config.
1616 - Removed Linux link layer code as this was not really in use.
1617 - Added -nofork command line option
1618
1619 BUGFIXES
1620
1621 - Link sensing now works according to announced vtime from
1622   neighbors. Previously links going symmetric->asymmetric
1623   were not necessarily detected until the holding time expired.
1624 - A bug in route addition/removal that could lead to routes
1625   using GWs being added before the actual route to the GW
1626   was set up, has been fixed.
1627 - A bug in the interface selection in route calculation has been
1628   fixed. New routes are no longer added prior to deleting old ones,
1629   since this caused trouble.
1630 - A bug in the IPv6 multicast address configuration has been fixed.
1631   This caused olsrd not to work with global IPv6 addresses.
1632 - A bug in the IPv6 prefix-from IPaddr function has been fixed. This
1633   bug caused HNA prefixes to always be calculated to 0.
1634 - If a 2-hop neighbor is also a 1-hop neighbor, a bug made olsrd
1635   prefer a bad direct link to a better link via an MPR.
1636 - If a link or interface lookup failed, olsrd crashed.
1637 - Fixed a crash in the LQ packet generation code based on a
1638   signed/unsigned integer comparison.
1639
1640
1641 0.4.8 ---------------------------------------------------------------------
1642
1643 LICENSE CHANGE
1644
1645 Olsrd is now distributed under a BSD style license. We believe olsrd will
1646 be better off using this license as it opens up for commercial players
1647 to use olsrd freely in their products. In the end this will lead to
1648 this kind of users doing serious testing and bug fixing of olsrd.
1649
1650 ETX-LIKE LINK QUALITY DETECTION
1651
1652 We can now determine the packet loss on a link by looking at the serial
1653 numbers of the OLSR messages received from a neighbor. This tells us how
1654 many packets get through from our neighbor to us. We use a new extended
1655 kind of HELLO messages (LQ_HELLO messages, LQ = link quality) to broadcast
1656 the link quality that we have determined on our end of the link to our
1657 neighbors. So do our neighbors, and we as well as they end up with an
1658 idea of how good the link is in both directions. From the LQ_HELLOs we
1659 also learn the link quality between our neighbors and our two-hop neigh-
1660 bors. In this way we can select those neighbors as MPRs that have the
1661 best links to our two-hop neighbors. To distribute the link quality
1662 throughout the network, we use a new extended version of TC messages
1663 (LQ_TC messages). They contain the qualities at both ends of each of our
1664 links. Nodes can then run Dijkstra's algorithm to find a path between
1665 themselves and other nodes that minimizes the packet loss.
1666
1667 If the newly introduced "LinkQualityLevel" is set to zero in the
1668 configuration file, link quality is not used and the daemon behaves as
1669 before, i.e. as specified by the OLSR RFC. If this parameter is set
1670 to 1, LQ_HELLOs and LQ_TCs are used instead of HELLOs and TCs, link
1671 quality is measured and MPRs are selected based on the link qualities.
1672 If this parameter is set to 2, the routing table is additionally
1673 calculated based on the link qualities.
1674
1675 Setting "LinkQualityLevel" to a non-zero value BREAKS COMPATIBILITY. You
1676 will then not be able to participate in RFC-conformant OLSR networks
1677 any longer. This is because we use LQ_HELLOs and LQ_TCs instead of HELLOs
1678 and TCs in this case.
1679
1680 It's best practice to set "LinkQualityLevel" to the same value on all
1681 nodes in a network.
1682
1683 When determining the quality of a link olsrd only considers a given
1684 number of most recent OLSR packets received from its neighbors. By
1685 default, olsrd looks at the 10 most recent OLSR packets. This can be
1686 changed via the "LinkQualityWinSize" configuration option. Values
1687 between 3 and 128 are legal.
1688
1689 NEW CONFIGFILE PARSER/FORMAT/SCHEME
1690
1691 A whole new config file syntax and parser is introduced with this
1692 release. The parser is generated using flex and bison and it is
1693 designed to be very modular. The parser can be compiled as either
1694 a standalone binary, a shared library or as part of olsrd. This way
1695 other applications can parse and generate olsrd configuration files
1696 only by linking to the dynamic library.
1697 In the new configfile options can be set pr. interface, plugin
1698 parameters can be set, more IPC options can be set...and more.
1699 The syntax is documented in the olsrd.conf(5) manual page found
1700 in the files/ directory.
1701 Olsrd internals now uses a single struct, as returned by the config
1702 parser, for all configuration in runtime. this means that updating
1703 values in this struct will dynamically update olsrd operation. It
1704 also means that all configuration is now kept in one place instead
1705 of spread all across the place.
1706
1707 FREEBSD AND MAC OSX PORT
1708
1709 This version offers an initial port of olsrd to FreeBSD and Mac OS
1710 X. Like the Windows port it currently does not support IPv6. As this
1711 is a very first try at supporting FreeBSD and Mac OS X, this port is
1712 probably not as reliable as the Linux version. We'd greatly appreciate
1713 feedback and bug reports. To compile you need GNU make. Then simply
1714 run "gmake OS=fbsd" to build the executable.
1715
1716 NEW MAKEFILE(S)
1717
1718 The makefiles used to build olsrd have been rewritten and now includes
1719 dependency file generation using makedep.
1720
1721 DEBUG OUTPUT
1722
1723 Tables are now only printed if changes occur, so there are no longer
1724 any periodical output when using a debuglevel >0. A "heartbeat" is
1725 now printed to STDOUT(if it is a terminal) in the form of a rotating
1726 line to show that olsrd is actually operating.
1727 Adding "ClearScreen yes" to the configuration file clears the screen
1728 each time before the debug output shows updated information. This
1729 makes the debug output easier to read in many cases. "ClearScreen no"
1730 is the default, if no "ClearScreen" directive is given in the
1731 configuration file.
1732
1733 PLUGIN INTERFACE
1734
1735 There are some changes in the plugin interface. It is now at
1736 version 2. Plugin specific parameters from the configfile
1737 using the PlParam option, will now be passed on to plugins.
1738 To receive such parameters a plugin must implement a function:
1739 int
1740 register_olsr_param(char *key, char *value)
1741 to which parameter pairs will be passed.
1742
1743 NO MORE THREADS
1744
1745 Olsrd no longer uses any thread library on its operation. Everything
1746 now happens in the main thread allowing for use of olsrd on platforms
1747 with no thread library.
1748
1749 ACPI SUPPORT IN WILLINGNESS CALCULATION(LINUX)
1750
1751 The willingness calculation for Linux, now also supports the more
1752 modern ACPI proc interface in addition to APM. This is not well
1753 tested and feedback is appreciated!
1754
1755 IPC OPTIONS
1756
1757 Various options regarding IPC connections can now be set in the
1758 configfile. The options are max connections, allowed unicast
1759 hosts and allowed net-ranges.
1760
1761 CODE REWRITES
1762
1763 Much of the message generation and net output code is rewritten.
1764 Sending of partial messages should now work 100%. Also TC, MID
1765 and HNA messages are now cached for a random amount of time
1766 before transmitted - this often leads to the situation where these
1767 messages are sent together with an HELLO message, which is highly
1768 desirable since it saves network resources.
1769 PLUGIN DEVELOPERS must note that the buffers and size variables
1770 used in net output is no longer directly accessible!
1771
1772 NET OUTPUT CODE REWRITTEN
1773
1774 Every interface now has one outputbuffer registered. This allows
1775 messages to be "cached" as explained above, so that multiple
1776 messages are stacked together.
1777 Also the outputbuffer and size are no longer accessible directly,
1778 an API is available to plugins(and olsr code).
1779
1780 OS DEPENDENT NETWORK INTERFACE
1781
1782 The OS dependent network functions are now defined in net_os.h
1783 instead of being mixed up with internal network functions
1784 in net.h.
1785
1786 BUGFIXES
1787
1788 A bug that caused the announced ANSN sequence number to never stop
1789 being increased when a change in the MPR selector set was detected
1790 has been fixed. Another TC related bug that caused timed out TC
1791 entries not to be deleted from the routing table in certain cases
1792 has also been fixed. These bugs could cause unstable routes.
1793 A bug that in many cases caused the wrong routes to be deleted
1794 when using IPv6 has been fixed.
1795
1796
1797 0.4.7 ---------------------------------------------------------------------
1798
1799 NATIVE WINDOWS GUI AND INSTALLER
1800
1801 We now have a native Windows GUI. The GTK+ version is no longer
1802 supported on Windows. The new native GUI is pretty compact as it does
1803 not require the GTK+ runtime DLLs. In addition to monitoring olsrds
1804 state the GUI offers an easy way for novice users to configure
1805 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
1806 for details. The Windows version now also comes with an installer
1807 based on the freely available Nullsoft Scriptable Install System
1808 (NSIS). Looks like the Windows port is becoming more and more
1809 Windows-ish. :-)
1810
1811 WIRELESS INTERFACE DETECTION ON WINDOWS
1812
1813 Like the Linux version the Windows port is now able to tell WLAN
1814 interfaces from wired interfaces. We can now, for example, set
1815 different HELLO intervals for WLAN interfaces and wired interfaces,
1816 respectively.
1817
1818 ROUTE UPDATES
1819
1820 The order of updates of calculated routes is swapped. Now new routes
1821 are added prior to deleting old ones. This could fix issues where
1822 in some very very few cases one could experiment loss of routes.
1823
1824 BUGFIXES
1825
1826 There were quite some bugs in IPv6 operation in 0.4.6. These are
1827 the bugs that were fixed:
1828 - HNA message parsing did not work.
1829 - Some IPv6 addresses were printed as IPv4 addresses in the
1830   debug output.
1831 - The '-dispin' option now works again.
1832 - A filedescriptor leak in the IPv6 interface detection caused
1833   olsrd to crash.
1834
1835
1836 0.4.6 ---------------------------------------------------------------------
1837
1838 WINDOWS PORT!
1839
1840 Read the README-WIN32.txt file!
1841
1842 DYNAMIC NETWORK INTERFACE UPDATES
1843
1844 Network interfaces can now be updated and removed/added at
1845 runtime. Olsrd will check all interfaces specified in the config
1846 file or on the command-line, every 5 seconds. If updates
1847 occur, olsrd will register this and update the necessary data.
1848 If interfaces are removed or added, olsrd will detect this
1849 and configure the interfaces. If an interface is removed
1850 olsrd will continue to check the interface, so if say, a PCMCIA
1851 card is removed and later on reinserted(and given the same name),
1852 olsrd will detect this and start running on it again.
1853
1854 Note that olsrd will now run even if no interfaces are detected.
1855
1856 ROUTE CALCULATION UPDATE
1857
1858 All 1 hop neighbor addresses that are not directly reachable trough
1859 a symmetric link in the link set will now be added with a GW in the
1860 routing table. this GW will be an interface address from a registered
1861 symmetric link to the neighbor.
1862
1863 MID UPDATE
1864
1865 Alias addresses are now registered in the link set processing
1866 if available. This is not to pretty(since the vtime has to
1867 be a mere guess) but it gives faster initial route updates.
1868 If a HELLO is received(at initial registration) from an IP
1869 that is not the same as the one set as main address in the
1870 received HELLO header, then the IP from which the HELLO was
1871 received will be registered as an alias of the main address
1872 set in the HELLO header. The default vtime is set to 15 secs.
1873
1874 CODE RESTRUCTURING
1875
1876 All OS dependent interface configuration code is now located in
1877 OS/ifnet.c(that would be linux/ifnet.c if using GNU/Linux).
1878 The functions are available trough the headerfile src/ifnet.h
1879
1880 CODE CLEANUPS
1881
1882 - Some timer issues fixed
1883 - Got rid of the global socket descriptors
1884 - Updated indexing of network interfaces
1885 - Introduced a global socket to use for ioctl calls(ioctl_s)
1886 - Removed upper limit for interfaces to use
1887 - Point-to-point interfaces are now allowed
1888 - The main select(2) loop now uses a timeout
1889 - A small bugfix in the select fd-set update code
1890 - Some bugfixes in the configuration file parsing
1891 - stdout/stderr are now set to not be buffered
1892 - A bugfix in the MID generation regarding seq. numbering
1893
1894 PLUGIN INTERFCAE
1895
1896 A new set of functions that are called whenever a change in the
1897 interface configuration(update, addition, removal) is made is
1898 introduced.
1899 These functions are added and removed very much like the ptf
1900 functions. Available trough the functions add_ifchgf and del_ifchgf.
1901
1902 OBS OBS OBS!!! PLUGIN DEVELOPERS READ THIS!!!!
1903
1904 The interface struct(declared in interfaces.h) has changed.
1905 Plugin developers must update plugins that uses the interface
1906 struct!
1907
1908 The headerfile olsr_plugin_io.h which contains the plugin interface
1909 commands now contains a revision list where all changes are
1910 stated.
1911
1912
1913 0.4.5 ---------------------------------------------------------------------
1914
1915 PLUGIN: SECURE OLSR
1916
1917 A plugin that generates and checks message signatures is added.
1918 Check lib/secure
1919
1920 PLUGIN: TOPOLOGY GRAPH
1921
1922 A plugin that generates output of the topology in the dot format
1923 is added. See lib/dot_draw
1924
1925 OPTIMIZATIONS
1926
1927 Some optimizations done that should cause fewer route recalculations.
1928
1929 BUGFIXES
1930
1931 Some bugs reported by Takafumi Tanaka fixed.
1932
1933 RESTORATION OF NETWORK SETTINGS
1934
1935 Network settings like disabling of ICMP redirects and spoof filter, are
1936 now restored at exit by olsrd.
1937
1938 RFC COMPLIANCE FIX
1939
1940 Nodes would in certain scenarios retransmit messages originating for
1941 themselves. This was a RFC incompliance. Reported by Ingmar Baumgart.
1942
1943 NON-WLAN TIMERS
1944
1945 No longer setting the HELLO interval of non-wlan interfaces as a multiplier
1946 of the wlan interval. The interval is set seperatly now.
1947 Due to this there are some updates in the configfile imperatives.
1948
1949 CODE CLEANUPS
1950
1951 Some new macros introduced for table insertion and removal and IP
1952 copying and comparison.
1953
1954 FRONT END BUGFIXES
1955
1956 IPv6 bugfixes in the GUI.
1957
1958
1959 0.4.4 ---------------------------------------------------------------------
1960
1961 ROUTE CALCULATION
1962
1963 Routes are no longer added via neighbors declaring a willingness
1964 of WILL_NEVER.
1965
1966 LINK SENSING AND ROUTE CALCULATION
1967
1968 Link sensing and route calculation has been updated to handle
1969 multiple links between hosts in a sane way.
1970
1971 IP SPOOF FILTERING
1972
1973 IP spoof filtering is disabled on the interfaces which olsrd runs.
1974 These settings are not restored!
1975
1976 ICMP REDIRECTS
1977
1978 ICMP redirect message generation is disabled on the interfaces
1979 which olsrd runs.
1980 These settings are not restored!
1981
1982 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
1983
1984 Options to set the MID and HNA emission intervals and
1985 validity time in the configfile added.
1986
1987 IPv6 ADDRESS SCOPE
1988
1989 Option to set what IPv6 address type(scope) to use in the
1990 configfile added. It can be set to either global or site-local.
1991
1992 IPv6 MULTICAST
1993
1994 Options to set site-local and global multicast addresses
1995 in the configfile added.
1996
1997 EMISSION INTERVAL FUNCTION
1998
1999 Functions to set emission intervals at runtime added.
2000
2001 LINK LAYER NOTIFICATIONS
2002
2003 If started with the -llinfo switch olsrd will collect and display
2004 link-layer information on neighbors. This is no longer limited to
2005 one interface. But no action is taken based on this info - and
2006 there is a upper limit of 8 neighbors from which this info can
2007 be collected pr. interface. This limitation is inherited from the
2008 WLAN drivers and is not something imposed by the olsrd code!
2009
2010 IPv6 HNA MESSAGE FORMAT
2011
2012 IPv6 HNA messages now contains 128-bit netmask instead of prefix.
2013
2014 PLUGIN FUNCTIONS
2015
2016 Added "packet transform functions" which allow plugins to alter all
2017 outgoing OLSR traffic.
2018
2019 RESTRUCTURING
2020
2021 Moved most headers out of OS dependent directories. The tunneling
2022 and link-layer notification interface is not yet separated from
2023 the /linux directory.
2024
2025 MANUALPAGE
2026
2027 A manpage(olsrd(8)) describing olsrd has been created. It is installed
2028 when using 'make install'.
2029
2030
2031 0.4.3 ---------------------------------------------------------------------
2032
2033 PLUGIN SUPPORT
2034
2035 Olsrd now supports runtime-loadable plugins! A couple of example plugins
2036 are located in the lib/ directory. Read the README files in the various
2037 plugin directories for more info. A directive to load plugins have been
2038 added to the configfile as well.
2039 Documentation of the plugin interface can be fount at http://www.olsr.org.
2040
2041 The plugin interface is designed to be extendable. But it should _always_
2042 be backwards compatible with the interface used in this release!
2043
2044 LINK-LAYER NOTIFICATION
2045
2046 Some preliminary link-layer notification code has been added. Link quality
2047 can be written to stdout if olsrd is started with the -llinfo switch.
2048 No action is currently taken based on this info. And info will only
2049 be retrieved from the interface named "eth1".
2050 This code is not usable for users as of yet!
2051
2052 MPR UPDATES
2053
2054 Neighbors with willingness set to WILL_ALWAYS is now always added. The
2055 MPR selection is optimized as described in RFC3626 section 8.3.1
2056 point 5.
2057
2058 MPR BUGS
2059
2060 There was a couple of bugs in the MPR selection code. All fixed.
2061
2062 LINUX 2.6 BUG
2063
2064 Users could not run olsrd on multiple interfaces using the Linux 2.6 kernel
2065 series. This is now fixed.
2066
2067 MINOR BUGS
2068
2069 One small bug in link hysteresis initialization and one in HNA route
2070 deletion.
2071
2072 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
2073
2074 Message-seqnos was implemented on a pr. messagetype and pr. interface
2075 basis. This is not RFC3626 compliant and has been updates. All messages
2076 and interfaces now uses a global seuencenumber.
2077
2078 RANDOM SEQUENCENUMBERS
2079
2080 Sequencenumbers are now initialized using a random value.
2081
2082 DAEMON MODE
2083
2084 Fixes for running olsrd in daemon mode(debug 0).
2085
2086 OPTIMIZATIONS
2087
2088 Optimizations based on profiling implemented.
2089
2090 SANITATION
2091
2092 Message size is checked for every message before passing it to the
2093 appropriate message parsing function. If the size is bigger than the
2094 remaining size of the olsr packet then the message is discarded.
2095
2096 GUI FRONT-END
2097
2098 Some minor modifications done to the gui.
2099
2100 INTERNAL CHANGES
2101
2102 Lots of changes in handling of registration and unregistration of
2103 scheduler, socketparser, parser and local hna set.
2104 Some restructuring and movement of functions.
2105
2106
2107 0.4.2 ---------------------------------------------------------------------
2108
2109 No public release
2110
2111 0.4.1 ---------------------------------------------------------------------
2112
2113 No public release
2114
2115 0.4.0 ---------------------------------------------------------------------
2116
2117 LINK HYSTERESIS
2118
2119 Link hysteresis as described in the RFC added.
2120
2121 TC REDUNDANCY
2122
2123 TC redundancy as described in the RFC added
2124
2125 MPR REDUNDANCY
2126
2127 MPR redundancy as described in the RFC added
2128
2129 SCHEDULER REWRITE
2130
2131 The scheduler has been rewritten to register scheduled
2132 events(function pointers) dynamically.
2133
2134 PARSER REWRITE
2135
2136 The parser has been rewritten to register parse functions
2137 on a pr. messagetype dynamically
2138
2139 MALLOC WRAPPER
2140
2141 A wrapper for the malloc(3) syscal has been introduced.
2142 olsr_malloc(size_t, const char *) should ALWAYS be used.
2143
2144 CODE RESTRUCTURING
2145
2146 Lots of restructuring in headerfiles.
2147 Linux spesific code moved to subdirectory linux/
2148 FreeBSD code to be put in freebsd/
2149 LOTS of code restructured due to the rexrite of the scheduler
2150 and parser.
2151
2152 MPR CALCULATION
2153
2154 Optimizing the MPR set as suggested in the RFC section
2155 8.3.1 point 5 added.
2156
2157 BUGFIXES
2158
2159 Some bugs in MPR selection fixed.
2160
2161
2162 0.3.8 ---------------------------------------------------------------------
2163
2164 CODE REWRITES
2165
2166 HNA code completely rewritten!
2167 The old code was really bad! Now it is much cleaner implemented and
2168 should work fine.
2169 One- and two-hop neighbor list structures rewritten. They now use
2170 the same hashed double-linked lists as the rest of the information
2171 sets use.
2172
2173 CODE RESTRUCTURING
2174
2175 Some code restructuring which resulted in the new files: timer.h,
2176 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c
2177 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some
2178 renamed files
2179
2180 BUG FIXES
2181
2182 The bug causing errormessages on exit is fixed.
2183 The bug that caused initial HNA routes in the GUI to display a hopcount
2184 of 0 fixed.
2185 IPv6 HNA netmasks were all added as /128. It's fixed now.
2186
2187 IPv6
2188
2189 Turns out sitelocal address had to be preferred to avoid IPv6 header
2190 messing up link-sensing. Bug fixed
2191
2192
2193 0.3.7 ---------------------------------------------------------------------
2194
2195 CODE REWRITES
2196
2197 The entire TC set and MPR selector set code rewritten. Hashing and
2198 double linked lists added to the MID code.
2199 Lots of HNA code has been rewritten as well.
2200
2201 HNA bugfix
2202
2203 When a node lost connectivity to a HNA GW all HNA entries to that gw
2204 was deleted. This has been fixed - and HNA entries only gets deleted
2205 on timeout now.
2206 Other HNA bugs have been fixed as well. But the whole HNA implementation
2207 needs a rewrite!
2208
2209 Holdingtime BUGfix
2210
2211 There was a bug that caused holdingtime not to be properly recalculated
2212 when using non-default emission intervals.
2213
2214 Forwarding and symmetric neighbors
2215
2216 Seems I had misread the RFC on what a 1-hop symmetric neighbor is.
2217 Now the link-set is checked when a check for a symmetric neighbor
2218 is done. Not the 1 hop neighbor set as it used to be. This way
2219 the hack when receiving MID messages could be removed.
2220
2221 IPv6
2222
2223 Global addresses are now preferred. Sitelocal addresses are only used
2224 if no global addresses are found. There have been problems where
2225 the address set in the IP header of IPv6 packets do not match the
2226 address chosen by OLSR.
2227
2228 GUI - 0.2.5
2229
2230 The GUI is finally updated! It can now handle piggybacked messages
2231 and link sensing HELLO message format.
2232
2233
2234 0.3.6 ---------------------------------------------------------------------
2235
2236 HNA support using IPv6
2237
2238 HNA now works using IPv6 as well! Just add the network address and
2239 prefix in the HNA6 section in the configfile. The IPv6 HNA packets differ
2240 some from the IPv4 as they don't send the netmask but the prefix.
2241
2242
2243 NEW FILENAME FOR THE BINARY AND CONFIG FILE
2244
2245 They are now called olsrd and olsrd.conf. I figured I'd use the olsrd
2246 name before somebody else started using it ;-)
2247
2248
2249 Config file
2250
2251 New options: DEBUG, HNA6 and IPC-CONNECT added to config file.
2252
2253
2254 Output
2255
2256 A printf-wrapper has been introduced - debug level output handling
2257 is much more uniform now.
2258 The daemon should run fine in detached mode now(DEBUG 0)
2259
2260 GUI front-end
2261
2262 The GUI front-end can now connect and disconnect at any time while the
2263 daemon is running, if started using the -ipc switch or with IPC set to
2264 'yes' in the configfile.
2265
2266
2267 BUGS
2268
2269 A small HNA bug fixed.
2270
2271
2272 0.3.5 ---------------------------------------------------------------------
2273
2274 Forwarding jitter
2275
2276 Forwarding jitter added. Messages are piggybacked if they arrive(and are to
2277 be forwarded) while there is data to be forwarded buffered.
2278 Added some bugfixes to support parsing of piggybacked messages as well.
2279
2280 Route calculation
2281
2282 Fixed route calculation so that 2 hop neighbors are added. This smooths
2283 changes from 1 hop to 2 hop neighbor out. The old way one had to wait for
2284 a TC before the 2 hop neighbors were added.
2285
2286 2 hop neighbor set
2287
2288 All neighbors received in HELLO messages are added to the two hop
2289 neighborhood. This helps smoothing out the 1-to-2 hop transition as well.
2290
2291 MID calculation
2292
2293 MID calculation had to be updated due to the registering of two hop neighbors
2294 that are already one hop neighbors. They should not be considered when calculating
2295 two hop coverage.
2296
2297 Optimizations
2298
2299 Deletion of possible one hop neighbors registered on non main-addresses when
2300 first registering MID info from a node removed. This can not occur due
2301 to the fact that registering of neighbor nodes are done on main addresses
2302 from link-sensing
2303 Option to not forward messages on wired links on which they arrived removed.
2304 This is no longer usable to any degree when adding support for piggybacking
2305 of forwarded messages is to be implemented.
2306
2307 Cleanups
2308
2309 Some unused parameters and commandline options were removed.
2310
2311
2312
2313 0.3.3 ---------------------------------------------------------------------
2314
2315 TC MESSAGEING
2316
2317 Added sending of empty TC messages if all MPR selectors are removed. Empty
2318 TC messages are sent for a TC_HOLD_TIME period as described in section
2319 9.3 in the RFC.
2320
2321 HNA
2322
2323 Fixed HNA route calculations for IPv6. I forgot to upgrade this in 0.3.2
2324
2325 OPTIONS
2326
2327 -hnaint and -midint command line optionas added to set the interval
2328 of HNA and MID generation.
2329
2330 FORWARDING
2331
2332 As an optimization messages have not been forwarded on the received interface
2333 if this is registered as a non-WLAN interface. This causes problems for
2334 people using Ethernet-to-WLAN adapters. This optimization is now turned
2335 off by default. It can be activated using the -nofwlan option.
2336
2337 BUGS
2338
2339 THERE ARE SOME NASTY BUGS IN 0.3.2!
2340 Fixed a bug that caused 2 hop neighbors not to time out.
2341 Fixed a bug that caused a 1 hop neighbor timeout not to recalculate
2342 the routing table.
2343 Fixed a small memleak in the MID set
2344 Fixed some smaller bugs.
2345
2346 IPv6 functioning is not well tested in this release.
2347
2348 0.3.2 ---------------------------------------------------------------------
2349
2350 HNA
2351
2352 Updated HNA to be RFC compliant. This means that all received HNA tuples
2353 are registered and only the subset of unique entries(net/netmask) with
2354 the smallest hopcount is inserted into the routing table.
2355
2356 Config file
2357
2358 User can specify configfile name using the -f switch.
2359
2360 Bugs
2361
2362 Fixed a link-sensing bug that caused problems when using MID nodes.
2363
2364 0.3.1 ---------------------------------------------------------------------
2365
2366 MPR calculation
2367
2368 MPR calculation is now based on the willingness announced by nodes.
2369
2370 Neighbor set
2371
2372 The neighbor set does not have timeouts on entries any more. Creation
2373 and deletion of neighbor entries is done from the link-set as suggested
2374 in the RFC.
2375
2376 Cleanups
2377
2378 Gotten rid of a lot of code that became more or less obsolete due to
2379 all the changes introduced in 0.3.0.
2380
2381 Bugs
2382
2383 Fixed a nasty bug concerning the sequence numbering of TC packets.
2384 Fixed some bugs regarding MPR calculation - and probably introduced
2385 a whole new species when implementing the willingness-based calculation ;-)
2386
2387
2388 0.3.0 ---------------------------------------------------------------------
2389
2390 Due to the extensive amount of updates this release is versioned 0.3.0
2391
2392 Duplicate table and forwarding
2393
2394 The duplicate table functionality is totally rewritten in 100% RFC
2395 compliance. The forward algorithm specified in the RFC is implemented
2396 this meant rewriting much of the packet processing code. The daemon
2397 also forwards unknown packettypes now.
2398
2399 Link sensing and neighbor processing
2400
2401 Link sensing and neighbor processing was done in the same operation in the
2402 old code. Link sensing is now a mechanism of its own which is 100% RFC
2403 compliant. Neighbor processing and HELLO generation has been partly
2404 rewritten to be RFC compliant. Neighbors are now registered as either
2405 SYN or NOT_SYM. The NOT_NEIGH, SYM_NEIGH and MPR_NEIGH values are only
2406 used when building HELLO messages. Links are in one of the following states:
2407 UNSPEC_LINK, ASYM_LINK or SYM_LINK.
2408 HELLO messages now advertise link status of neighbors on the interface
2409 the message is transmitted.
2410
2411 Willingness
2412
2413 A node now dynamically calculates willingness based on powersource and
2414 possibly battery power. If the node is AC powered it announces a willingness
2415 of 6. If batterypowered the willingness is calculated as:
2416 P / 26
2417 Where P is percentage of power left.
2418
2419 Configuration file
2420
2421 The daemon now tries to read its configuration from the file /etc/uolsrd.conf
2422 A "standard" configuration file is installed when doing 'make install'.
2423 This file should be edited to fit your needs.
2424 Command-line options can still be used to override the configuration form
2425 the file(ore if no config file is present).
2426 The -f switch can also be used to specify a configuration file.
2427
2428 Willingness
2429
2430 If AdvancedPowerManagemant(APM) is supported on your system the willingness
2431 of the node is dynamically calculated based upon the powerstatus of the node.
2432 MPR calculation based upon willingness is not done as of yet.
2433
2434 TC ANSN
2435
2436 A bugs in the TC processing fixed.
2437
2438 HNA
2439
2440 Some serious HNA bugs fixed. These bugs caused a node to always choos the
2441 gateway with the larges hopcout :) More seriously - a bug caused looping
2442 of HNA messages in certain scenarios.
2443
2444 Package sequence numbers
2445
2446 These were added. Not much use as of now - but they're there(as specified
2447 in the RFC).
2448
2449 Broadcast address
2450
2451 Users can now specify the broadcast address to use. Useful if one wishes to
2452 use the 255.255.255.255 broadcast.
2453
2454
2455
2456 0.2.5 ---------------------------------------------------------------------
2457
2458 Htime and Vtime
2459
2460 Htime and Vtime processing and handling added. Holding times used to be
2461 a static value for all nodes. Now every node can signal its vlidity time
2462 to others.
2463 To achieve this mantissa/exponent calculation functionality was added.
2464 Messages now include Vtime(and Htime in HELLO) values in mantissa/exponent
2465 format instead of just zero. These values are as stated above, used as holding
2466 time for nodes.
2467 the GUI should be upgraded as well...
2468
2469 Jitter
2470
2471 The use of jitter in message generation intervals vere fixed.
2472
2473
2474 0.2.4 ---------------------------------------------------------------------
2475
2476 Seqno bugs
2477
2478 Some bugs concerning sequence numbers in HELLO and MID message handling
2479 was fixed. Newly registered nodes in the neighbor and MID sets were
2480 initialized with a seqno of 0. When using a "wraparound" sequencenumber
2481 check(as defined in olsr_protocol.h) this can produce errors if a new
2482 node joins a network where existing nodes has seqnos >0x00FF.
2483
2484 IPv6 related bugs
2485
2486 Some checks and copying of node addresses where done using sizeof(u_olsr32_t)
2487 which is 32 bits. This caused only the 32 firs bits of IPv6 addresses to
2488 be copied and checked.