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