Gracefully handle wrap-around of clock_t.
[olsrd.git] / CHANGELOG
1 This file states changes as of version 0.2.4:
2 $Id: CHANGELOG,v 1.24 2005/01/16 20:33:53 kattemat Exp $
3
4 0.4.9 ---------------------------------------------------------------------
5
6 TIMEOUT OF DATASETS
7
8 Validity times for dataset entries are now set using the clock_t type
9 (used to be struct timeval). This data is now fetched from the times(2)
10 function instead of gettimeofday(2). This prevents possible problems
11 if the system time is changed.
12 PLUGIN DEVELOPERS need to note that datatypes for close to all
13 dataset entries(link, neighbor, mid, hna, tc etc.) has been changed!!
14
15 CONFIGURATION FILE
16
17 Multiple interfaces can now use the same interface configuration block.
18 Example:
19 Interface "if0" "if1" "if2"
20 {
21         .....
22 }
23
24 MINOR UPDATES
25
26 - First specified interfaces IP is used as main address.
27 - Broadcastflag is not checked on interface if fixed broadcast is
28   set in config.
29
30 BUGFIXES
31
32 - A bug in the IPv6 multicast address configuration has been fixed.
33   This caused olsrd not to work with global IPv6 addresses.
34 - A bug in the IPv6 prefix-from IPaddr function has been fixed. This
35   bug caused HNA prefixes to always be calculated to 0.
36
37
38 0.4.8 ---------------------------------------------------------------------
39
40 LICENSE CHANGE
41
42 Olsrd is now distributed under a BSD style license. We believe olsrd will
43 be better off using this license as it opens up for commercial players
44 to use olsrd freely in their products. In the end this will lead to
45 this kind of users doing serious testing and bugfixing of olsrd. 
46
47 ETX-LIKE LINK QUALITY DETECTION
48
49 We can now determine the packet loss on a link by looking at the serial
50 numbers of the OLSR messages received from a neighbor. This tells us how
51 many packets get through from our neighbor to us. We use a new extended
52 kind of HELLO messages (LQ_HELLO messages, LQ = link quality) to broadcast
53 the link quality that we have determined on our end of the link to our
54 neighbors. So do our neighbors, and we as well as they end up with an
55 idea of how good the link is in both directions. From the LQ_HELLOs we
56 also learn the link quality between our neighbors and our two-hop neigh-
57 bors. In this way we can select those neighbors as MPRs that have the
58 best links to our two-hop neighbors. To distribute the link quality
59 throughout the network, we use a new extended version of TC messages
60 (LQ_TC messages). They contain the qualities at both ends of each of our
61 links. Nodes can then run Dijkstra's algorithm to find a path between
62 themselves and other nodes that minimizes the packet loss.
63
64 If the newly introduced "LinkQualityLevel" is set to zero in the
65 configuration file, link quality is not used and the daemon behaves as
66 before, i.e. as specified by the OLSR RFC. If this parameter is set
67 to 1, LQ_HELLOs and LQ_TCs are used instead of HELLOs and TCs, link
68 quality is measured and MPRs are selected based on the link qualities.
69 If this parameter is set to 2, the routing table is additionally
70 calculated based on the link qualities.
71
72 Setting "LinkQualityLevel" to a non-zero value BREAKS COMPATIBILITY. You
73 will then not be able to participate in RFC-conformant OLSR networks
74 any longer. This is because we use LQ_HELLOs and LQ_TCs instead of HELLOs
75 and TCs in this case.
76
77 It's best practice to set "LinkQualityLevel" to the same value on all
78 nodes in a network.
79
80 When determining the quality of a link olsrd only considers a given
81 number of most recent OLSR packets received from its neighbors. By
82 default, olsrd looks at the 10 most recent OLSR packets. This can be
83 changed via the "LinkQualityWinSize" configuration option. Values
84 between 3 and 128 are legal.
85
86 NEW CONFIGFILE PARSER/FORMAT/SCHEME
87
88 A whole new config file syntax and parser is introduced with this
89 release. The parser is generated using flex and bison and it is 
90 designed to be very modular. The parser can be compiled as either
91 a standalone binary, a shared library or as part of olsrd. This way
92 other applications can parse and generate olsrd configuration files
93 only by linking to the dynamic library.
94 In the new configfile options can be set pr. interface, plugin
95 parameters can be set, more IPC options can be set...and more.
96 The syntax is documented in the olsrd.conf(5) manual page found
97 in the files/ directory.
98 Olsrd internals now uses a single struct, as returned by the config
99 parser, for all configuration in runtime. this means that updating
100 values in this struct will dynamically update olsrd operation. It
101 also means that all configuration is now kept in one place instead
102 of spread all across the place.
103
104 FREEBSD AND MAC OSX PORT
105
106 This version offers an initial port of olsrd to FreeBSD and Mac OS
107 X. Like the Windows port it currently does not support IPv6. As this
108 is a very first try at supporting FreeBSD and Mac OS X, this port is
109 probably not as reliable as the Linux version. We'd greatly appreciate
110 feedback and bug reports. To compile you need GNU make. Then simply
111 run "gmake OS=fbsd" to build the executable.
112
113 NEW MAKEFILE(S)
114
115 The makefiles used to build olsrd have been rewritten and now includes
116 dependency file generation using makedep.
117
118 DEBUG OUTPUT
119
120 Tables are now only printed if changes occur, so there are no longer 
121 any periodical output when using a debuglevel >0. A "heartbeat" is 
122 now printed to STDOUT(if it is a terminal) in the form of a rotating 
123 line to show that olsrd is actually operating.
124 Adding "ClearScreen yes" to the configuration file clears the screen
125 each time before the debug output shows updated information. This
126 makes the debug output easier to read in many cases. "ClearScreen no"
127 is the default, if no "ClearScreen" directive is given in the
128 configuration file.
129
130 PLUGIN INTERFACE
131
132 There are some changes in the plugin interface. It is now at
133 version 2. Plugin specific parameters from the configfile 
134 using the PlParam option, will now be passed on to plugins.
135 To receive such parameters a plugin must implement a function:
136 int
137 register_olsr_param(char *key, char *value)
138 to which parameter pairs will be passed.
139
140 NO MORE THREADS
141
142 Olsrd no longer uses any thread library on its operation. Everything
143 now happens in the main thread allowing for use of olsrd on platforms
144 with no thread library.
145
146 ACPI SUPPORT IN WILLINGNESS CALCULATION(LINUX)
147
148 The willingness calculation for Linux, now also supports the more
149 modern ACPI proc interface in addition to APM. This is not well
150 tested and feedback is appreciated!
151
152 IPC OPTIONS
153
154 Various options regarding IPC connections can now be set in the 
155 configfile. The options are max connections, allowed unicast
156 hosts and allowed net-ranges.
157
158 CODE REWRITES
159
160 Much of the message generation and net output code is rewritten.
161 Sending of partial messages should now work 100%. Also TC, MID 
162 and HNA messages are now cached for a random amount of time
163 before transmitted - this often leads to the situation where these
164 messages are sent together with an HELLO message, which is highly
165 desirable since it saves network resources.
166 PLUGIN DEVELOPERS must note that the buffers and size variables
167 used in net output is no longer directly accessible!
168
169 NET OUTPUT CODE REWRITTEN
170
171 Every interface now has one outputbuffer registered. This allows
172 messages to be "cached" as explained above, so that multiple
173 messages are stacked together.
174 Also the outputbuffer and size are no longer accessible directly,
175 an API is available to plugins(and olsr code).
176
177 OS DEPENDENT NETWORK INTERFACE
178
179 The OS dependent network functions are now defined in net_os.h
180 instead of being mixed up with internal network functions
181 in net.h.
182
183 BUGFIXES
184
185 A bug that caused the announced ANSN sequence number to never stop
186 being increased when a change in the MPR selector set was detected
187 has been fixed. Another TC related bug that caused timed out TC
188 entries not to be deleted from the routing table in certain cases
189 has also been fixed. These bugs could cause unstable routes.
190 A bug that in many cases caused the wrong routes to be deleted 
191 when using IPv6 has been fixed.
192
193
194 0.4.7 ---------------------------------------------------------------------
195
196 NATIVE WINDOWS GUI AND INSTALLER
197
198 We now have a native Windows GUI. The GTK+ version is no longer
199 supported on Windows. The new native GUI is pretty compact as it does
200 not require the GTK+ runtime DLLs. In addition to monitoring olsrds
201 state the GUI offers an easy way for novice users to configure
202 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
203 for details. The Windows version now also comes with an installer
204 based on the freely available Nullsoft Scriptable Install System
205 (NSIS). Looks like the Windows port is becoming more and more
206 Windows-ish. :-)
207
208 WIRELESS INTERFACE DETECTION ON WINDOWS
209
210 Like the Linux version the Windows port is now able to tell WLAN
211 interfaces from wired interfaces. We can now, for example, set
212 different HELLO intervals for WLAN interfaces and wired interfaces,
213 respectively.
214
215 ROUTE UPDATES
216
217 The order of updates of calculated routes is swapped. Now new routes
218 are added prior to deleting old ones. This could fix issues where
219 in some very very few cases one could experiment loss of routes.
220
221 BUGFIXES
222
223 There were quite some bugs in IPv6 operation in 0.4.6. These are
224 the bugs that were fixed:
225 - HNA message parsing did not work.
226 - Some IPv6 addresses were printed as IPv4 addresses in the
227   debug output.
228 - The '-dispin' option now works again.
229 - A filedescriptor leak in the IPv6 interface detection caused
230   olsrd to crash.
231
232
233 0.4.6 ---------------------------------------------------------------------
234
235 WINDOWS PORT!
236
237 Read the README-WIN32.txt file!
238
239 DYNAMIC NETWORK INTERFACE UPDATES
240
241 Network interfaces can now be updated and removed/added at
242 runtime. Olsrd will check all interfaces specified in the config 
243 file or on the command-line, every 5 seconds. If updates
244 occur, olsrd will register this and update the necessary data.
245 If interfaces are removed or added, olsrd will detect this
246 and configure the interfaces. If an interface is removed
247 olsrd will continue to check the interface, so if say, a PCMCIA
248 card is removed and later on reinserted(and given the same name),
249 olsrd will detect this and start running on it again.
250
251 Note that olsrd will now run even if no interfaces are detected.
252
253 ROUTE CALCULATION UPDATE
254
255 All 1 hop neighbor addresses that are not directly reachable trough
256 a symmetric link in the link set will now be added with a GW in the 
257 routing table. this GW will be an interface address from a registered
258 symmetric link to the neighbor.
259
260 MID UPDATE
261
262 Alias addresses are now registered in the link set processing
263 if available. This is not to pretty(since the vtime has to
264 be a mere guess) but it gives faster initial route updates.
265 If a HELLO is received(at initial registration) from an IP 
266 that is not the same as the one set as main address in the 
267 received HELLO header, then the IP from which the HELLO was 
268 received will be registered as an alias of the main address 
269 set in the HELLO header. The default vtime is set to 15 secs.
270
271 CODE RESTRUCTURING
272
273 All OS dependent interface configuration code is now located in
274 OS/ifnet.c(that would be linux/ifnet.c if using GNU/Linux).
275 The functions are available trough the headerfile src/ifnet.h
276
277 CODE CLEANUPS
278
279 - Some timer issues fixed
280 - Got rid of the global socket descriptors
281 - Updated indexing of network interfaces
282 - Introduced a global socket to use for ioctl calls(ioctl_s)
283 - Removed upper limit for interfaces to use
284 - Point-to-point interfaces are now allowed
285 - The main select(2) loop now uses a timeout
286 - A small bugfix in the select fd-set update code
287 - Some bugfixes in the configuration file parsing
288 - stdout/stderr are now set to not be buffered
289 - A bugfix in the MID generation regarding seq. numbering
290
291 PLUGIN INTERFCAE
292
293 A new set of functions that are called whenever a change in the 
294 interface configuration(update, addition, removal) is made is 
295 introduced.
296 These functions are added and removed very much like the ptf
297 functions. Available trough the functions add_ifchgf and del_ifchgf.
298
299 OBS OBS OBS!!! PLUGIN DEVELOPERS READ THIS!!!!
300
301 The interface struct(declared in interfaces.h) has changed.
302 Plugin developers must update plugins that uses the interface
303 struct!
304
305 The headerfile olsr_plugin_io.h which contains the plugin interface
306 commands now contains a revision list where all changes are
307 stated.
308
309
310 0.4.5 ---------------------------------------------------------------------
311
312 PLUGIN: SECURE OLSR
313
314 A plugin that generates and checks message signatures is added.
315 Check lib/secure
316
317 PLUGIN: TOPOLOGY GRAPH
318
319 A plugin that generates output of the topology in the dot format
320 is added. See lib/dot_draw
321
322 OPTIMIZATIONS
323
324 Some optimizations done that should cause fewer route recalculations.
325
326 BUGFIXES
327
328 Some bugs reported by Takafumi Tanaka fixed.
329
330 RESTORATION OF NETWORK SETTINGS
331
332 Network settings like disabling of ICMP redirects and spoof filter, are
333 now restored at exit by olsrd.
334
335 RFC COMPLIANCE FIX
336
337 Nodes would in certain scenarios retransmit messages originating for
338 themselves. This was a RFC incompliance. Reported by Ingmar Baumgart.
339
340 NON-WLAN TIMERS
341
342 No longer setting the HELLO interval of non-wlan interfaces as a multiplier
343 of the wlan interval. The interval is set seperatly now.
344 Due to this there are some updates in the configfile imperatives.
345
346 CODE CLEANUPS
347
348 Some new macros introduced for table insertion and removal and IP
349 copying and comparison.
350
351 FRONT END BUGFIXES
352
353 IPv6 bugfixes in the GUI.
354
355
356 0.4.4 ---------------------------------------------------------------------
357
358 ROUTE CALCULATION
359
360 Routes are no longer added via neighbors declaring a willingness
361 of WILL_NEVER.
362
363 LINK SENSING AND ROUTE CALCULATION
364
365 Link sensing and route calculation has been updated to handle
366 multiple links between hosts in a sane way.
367
368 IP SPOOF FILTERING
369
370 IP spoof filtering is disabled on the interfaces which olsrd runs.
371 These settings are not restored!
372
373 ICMP REDIRECTS
374
375 ICMP redirect message generation is disabled on the interfaces
376 which olsrd runs.
377 These settings are not restored!
378
379 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
380
381 Options to set the MID and HNA emission intervals and
382 validity time in the configfile added.
383
384 IPv6 ADDRESS SCOPE
385
386 Option to set what IPv6 address type(scope) to use in the 
387 configfile added. It can be set to either global or site-local.
388
389 IPv6 MULTICAST
390
391 Options to set site-local and global multicast addresses
392 in the configfile added.
393
394 EMISSION INTERVAL FUNCTION
395
396 Functions to set emission intervals at runtime added.
397
398 LINK LAYER NOTIFICATIONS
399
400 If started with the -llinfo switch olsrd will collect and display
401 link-layer information on neighbors. This is no longer limited to
402 one interface. But no action is taken based on this info - and
403 there is a upper limit of 8 neighbors from which this info can
404 be collected pr. interface. This limitation is inherited from the
405 WLAN drivers and is not something imposed by the olsrd code!
406
407 IPv6 HNA MESSAGE FORMAT
408
409 IPv6 HNA messages now contains 128-bit netmask instead of prefix.
410
411 PLUGIN FUNCTIONS
412
413 Added "packet transform functions" which allow plugins to alter all
414 outgoing OLSR traffic.
415
416 RESTRUCTURING
417
418 Moved most headers out of OS dependent directories. The tunneling
419 and link-layer notification interface is not yet separated from
420 the /linux directory.
421
422 MANUALPAGE
423
424 A manpage(olsrd(8)) describing olsrd has been created. It is installed
425 when using 'make install'.
426
427
428 0.4.3 ---------------------------------------------------------------------
429
430 PLUGIN SUPPORT
431
432 Olsrd now supports runtime-loadable plugins! A couple of example plugins
433 are located in the lib/ directory. Read the README files in the various 
434 plugin directories for more info. A directive to load plugins have been
435 added to the configfile as well. 
436 Documentation of the plugin interface can be fount at http://www.olsr.org.
437
438 The plugin interface is designed to be extendable. But it should _always_
439 be backwards compatible with the interface used in this release!
440
441 LINK-LAYER NOTIFICATION
442
443 Some preliminary link-layer notification code has been added. Link quality
444 can be written to stdout if olsrd is started with the -llinfo switch.
445 No action is currently taken based on this info. And info will only
446 be retrieved from the interface named "eth1".
447 This code is not usable for users as of yet!
448
449 MPR UPDATES
450
451 Neighbors with willingness set to WILL_ALWAYS is now always added. The
452 MPR selection is optimized as described in RFC3626 section 8.3.1
453 point 5.
454
455 MPR BUGS
456
457 There was a couple of bugs in the MPR selection code. All fixed.
458
459 LINUX 2.6 BUG
460
461 Users could not run olsrd on multiple interfaces using the Linux 2.6 kernel
462 series. This is now fixed.
463
464 MINOR BUGS
465
466 One small bug in link hysteresis initialization and one in HNA route
467 deletion.
468
469 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
470
471 Message-seqnos was implemented on a pr. messagetype and pr. interface
472 basis. This is not RFC3626 compliant and has been updates. All messages
473 and interfaces now uses a global seuencenumber.
474
475 RANDOM SEQUENCENUMBERS
476
477 Sequencenumbers are now initialized using a random value.
478
479 DAEMON MODE
480
481 Fixes for running olsrd in daemon mode(debug 0).
482
483 OPTIMIZATIONS
484
485 Optimizations based on profiling implemented.
486
487 SANITATION
488
489 Message size is checked for every message before passing it to the
490 appropriate message parsing function. If the size is bigger than the
491 remaining size of the olsr packet then the message is discarded.
492
493 GUI FRONT-END
494
495 Some minor modifications done to the gui.
496
497 INTERNAL CHANGES
498
499 Lots of changes in handling of registration and unregistration of
500 scheduler, socketparser, parser and local hna set.
501 Some restructuring and movement of functions.
502
503
504 0.4.2 ---------------------------------------------------------------------
505
506 No public release
507
508 0.4.1 ---------------------------------------------------------------------
509
510 No public release
511
512 0.4.0 ---------------------------------------------------------------------
513
514 LINK HYSTERESIS
515
516 Link hysteresis as described in the RFC added.
517
518 TC REDUNDANCY
519
520 TC redundancy as described in the RFC added
521
522 MPR REDUNDANCY
523
524 MPR redundancy as described in the RFC added
525
526 SCHEDULER REWRITE
527
528 The scheduler has been rewritten to register scheduled
529 events(function pointers) dynamically.
530
531 PARSER REWRITE
532
533 The parser has been rewritten to register parse functions
534 on a pr. messagetype dynamically
535
536 MALLOC WRAPPER
537
538 A wrapper for the malloc(3) syscal has been introduced.
539 olsr_malloc(size_t, const char *) should ALWAYS be used.
540
541 CODE RESTRUCTURING
542
543 Lots of restructuring in headerfiles.
544 Linux spesific code moved to subdirectory linux/
545 FreeBSD code to be put in freebsd/
546 LOTS of code restructured due to the rexrite of the scheduler
547 and parser.
548
549 MPR CALCULATION
550
551 Optimizing the MPR set as suggested in the RFC section
552 8.3.1 point 5 added.
553
554 BUGFIXES
555
556 Some bugs in MPR selection fixed.
557
558
559 0.3.8 ---------------------------------------------------------------------
560
561 CODE REWRITES
562
563 HNA code completely rewritten!
564 The old code was really bad! Now it is much cleaner implemented and
565 should work fine.
566 One- and two-hop neighbor list structures rewritten. They now use
567 the same hashed double-linked lists as the rest of the information
568 sets use.
569
570 CODE RESTRUCTURING
571
572 Some code restructuring which resulted in the new files: timer.h,
573 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c 
574 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some 
575 renamed files
576
577 BUG FIXES
578
579 The bug causing errormessages on exit is fixed.
580 The bug that caused initial HNA routes in the GUI to display a hopcount
581 of 0 fixed.
582 IPv6 HNA netmasks were all added as /128. It's fixed now.
583
584 IPv6
585
586 Turns out sitelocal address had to be preferred to avoid IPv6 header
587 messing up link-sensing. Bug fixed
588
589
590 0.3.7 ---------------------------------------------------------------------
591
592 CODE REWRITES
593
594 The entire TC set and MPR selector set code rewritten. Hashing and
595 double linked lists added to the MID code.
596 Lots of HNA code has been rewritten as well.
597
598 HNA bugfix
599
600 When a node lost connectivity to a HNA GW all HNA entries to that gw
601 was deleted. This has been fixed - and HNA entries only gets deleted
602 on timeout now.
603 Other HNA bugs have been fixed as well. But the whole HNA implementation
604 needs a rewrite!
605
606 Holdingtime BUGfix
607
608 There was a bug that caused holdingtime not to be properly recalculated
609 when using non-default emission intervals.
610
611 Forwarding and symmetric neighbors
612
613 Seems I had misread the RFC on what a 1-hop symmetric neighbor is.
614 Now the link-set is checked when a check for a symmetric neighbor
615 is done. Not the 1 hop neighbor set as it used to be. This way
616 the hack when receiving MID messages could be removed.
617
618 IPv6
619
620 Global addresses are now preferred. Sitelocal addresses are only used
621 if no global addresses are found. There have been problems where
622 the address set in the IP header of IPv6 packets do not match the
623 address chosen by OLSR.
624
625 GUI - 0.2.5
626
627 The GUI is finally updated! It can now handle piggybacked messages
628 and link sensing HELLO message format.
629
630
631 0.3.6 ---------------------------------------------------------------------
632
633 HNA support using IPv6
634
635 HNA now works using IPv6 as well! Just add the network address and
636 prefix in the HNA6 section in the configfile. The IPv6 HNA packets differ
637 some from the IPv4 as they don't send the netmask but the prefix.
638
639
640 NEW FILENAME FOR THE BINARY AND CONFIG FILE
641
642 They are now called olsrd and olsrd.conf. I figured I'd use the olsrd
643 name before somebody else started using it ;-)
644
645
646 Config file
647
648 New options: DEBUG, HNA6 and IPC-CONNECT added to config file.
649
650
651 Output
652
653 A printf-wrapper has been introduced - debug level output handling
654 is much more uniform now.
655 The daemon should run fine in detached mode now(DEBUG 0)
656
657 GUI front-end
658
659 The GUI front-end can now connect and disconnect at any time while the
660 daemon is running, if started using the -ipc switch or with IPC set to
661 'yes' in the configfile.
662
663
664 BUGS
665
666 A small HNA bug fixed.
667
668
669 0.3.5 ---------------------------------------------------------------------
670
671 Forwarding jitter
672
673 Forwarding jitter added. Messages are piggybacked if they arrive(and are to 
674 be forwarded) while there is data to be forwarded buffered.
675 Added some bugfixes to support parsing of piggybacked messages as well.
676
677 Route calculation
678
679 Fixed route calculation so that 2 hop neighbors are added. This smooths
680 changes from 1 hop to 2 hop neighbor out. The old way one had to wait for 
681 a TC before the 2 hop neighbors were added.
682
683 2 hop neighbor set
684
685 All neighbors received in HELLO messages are added to the two hop 
686 neighborhood. This helps smoothing out the 1-to-2 hop transition as well.
687
688 MID calculation
689
690 MID calculation had to be updated due to the registering of two hop neighbors
691 that are already one hop neighbors. They should not be considered when calculating
692 two hop coverage.
693
694 Optimizations
695
696 Deletion of possible one hop neighbors registered on non main-addresses when
697 first registering MID info from a node removed. This can not occur due
698 to the fact that registering of neighbor nodes are done on main addresses
699 from link-sensing
700 Option to not forward messages on wired links on which they arrived removed.
701 This is no longer usable to any degree when adding support for piggybacking
702 of forwarded messages is to be implemented.
703
704 Cleanups
705
706 Some unused parameters and commandline options were removed.
707
708
709
710 0.3.3 ---------------------------------------------------------------------
711
712 TC MESSAGEING
713
714 Added sending of empty TC messages if all MPR selectors are removed. Empty
715 TC messages are sent for a TC_HOLD_TIME period as described in section
716 9.3 in the RFC.
717
718 HNA
719
720 Fixed HNA route calculations for IPv6. I forgot to upgrade this in 0.3.2
721
722 OPTIONS
723
724 -hnaint and -midint command line optionas added to set the interval
725 of HNA and MID generation.
726
727 FORWARDING
728
729 As an optimization messages have not been forwarded on the received interface
730 if this is registered as a non-WLAN interface. This causes problems for
731 people using Ethernet-to-WLAN adapters. This optimization is now turned
732 off by default. It can be activated using the -nofwlan option.
733
734 BUGS
735
736 THERE ARE SOME NASTY BUGS IN 0.3.2!
737 Fixed a bug that caused 2 hop neighbors not to time out.
738 Fixed a bug that caused a 1 hop neighbor timeout not to recalculate
739 the routing table.
740 Fixed a small memleak in the MID set
741 Fixed some smaller bugs.
742
743 IPv6 functioning is not well tested in this release.
744
745 0.3.2 ---------------------------------------------------------------------
746
747 HNA
748
749 Updated HNA to be RFC compliant. This means that all received HNA tuples
750 are registered and only the subset of unique entries(net/netmask) with
751 the smallest hopcount is inserted into the routing table.
752
753 Config file
754
755 User can specify configfile name using the -f switch.
756
757 Bugs
758
759 Fixed a link-sensing bug that caused problems when using MID nodes.
760
761 0.3.1 ---------------------------------------------------------------------
762
763 MPR calculation
764
765 MPR calculation is now based on the willingness announced by nodes.
766
767 Neighbor set
768
769 The neighbor set does not have timeouts on entries any more. Creation
770 and deletion of neighbor entries is done from the link-set as suggested
771 in the RFC.
772
773 Cleanups
774
775 Gotten rid of a lot of code that became more or less obsolete due to
776 all the changes introduced in 0.3.0.
777
778 Bugs
779
780 Fixed a nasty bug concerning the sequence numbering of TC packets.
781 Fixed some bugs regarding MPR calculation - and probably introduced 
782 a whole new species when implementing the willingness-based calculation ;-)
783
784
785 0.3.0 ---------------------------------------------------------------------
786
787 Due to the extensive amount of updates this release is versioned 0.3.0
788
789 Duplicate table and forwarding
790
791 The duplicate table functionality is totally rewritten in 100% RFC
792 compliance. The forward algorithm specified in the RFC is implemented
793 this meant rewriting much of the packet processing code. The daemon
794 also forwards unknown packettypes now.
795
796 Link sensing and neighbor processing
797
798 Link sensing and neighbor processing was done in the same operation in the
799 old code. Link sensing is now a mechanism of its own which is 100% RFC
800 compliant. Neighbor processing and HELLO generation has been partly 
801 rewritten to be RFC compliant. Neighbors are now registered as either
802 SYN or NOT_SYM. The NOT_NEIGH, SYM_NEIGH and MPR_NEIGH values are only
803 used when building HELLO messages. Links are in one of the following states:
804 UNSPEC_LINK, ASYM_LINK or SYM_LINK.
805 HELLO messages now advertise link status of neighbors on the interface
806 the message is transmitted.
807
808 Willingness
809
810 A node now dynamically calculates willingness based on powersource and
811 possibly battery power. If the node is AC powered it announces a willingness
812 of 6. If batterypowered the willingness is calculated as:
813 P / 26
814 Where P is percentage of power left.
815
816 Configuration file
817
818 The daemon now tries to read its configuration from the file /etc/uolsrd.conf
819 A "standard" configuration file is installed when doing 'make install'.
820 This file should be edited to fit your needs.
821 Command-line options can still be used to override the configuration form
822 the file(ore if no config file is present).
823 The -f switch can also be used to specify a configuration file.
824
825 Willingness
826
827 If AdvancedPowerManagemant(APM) is supported on your system the willingness
828 of the node is dynamically calculated based upon the powerstatus of the node.
829 MPR calculation based upon willingness is not done as of yet.
830
831 TC ANSN
832
833 A bugs in the TC processing fixed.
834
835 HNA
836
837 Some serious HNA bugs fixed. These bugs caused a node to always choos the 
838 gateway with the larges hopcout :) More seriously - a bug caused looping
839 of HNA messages in certain scenarios.
840
841 Package sequence numbers
842
843 These were added. Not much use as of now - but they're there(as specified 
844 in the RFC).
845
846 Broadcast address
847
848 Users can now specify the broadcast address to use. Useful if one wishes to
849 use the 255.255.255.255 broadcast.
850
851
852
853 0.2.5 ---------------------------------------------------------------------
854
855 Htime and Vtime
856
857 Htime and Vtime processing and handling added. Holding times used to be 
858 a static value for all nodes. Now every node can signal its vlidity time
859 to others.
860 To achieve this mantissa/exponent calculation functionality was added.
861 Messages now include Vtime(and Htime in HELLO) values in mantissa/exponent
862 format instead of just zero. These values are as stated above, used as holding
863 time for nodes.
864 the GUI should be upgraded as well...
865
866 Jitter
867
868 The use of jitter in message generation intervals vere fixed.
869
870
871 0.2.4 ---------------------------------------------------------------------
872
873 Seqno bugs
874
875 Some bugs concerning sequence numbers in HELLO and MID message handling 
876 was fixed. Newly registered nodes in the neighbor and MID sets were
877 initialized with a seqno of 0. When using a "wraparound" sequencenumber
878 check(as defined in olsr_protocol.h) this can produce errors if a new
879 node joins a network where existing nodes has seqnos >0x00FF.
880
881 IPv6 related bugs
882
883 Some checks and copying of node addresses where done using sizeof(u_olsr32_t)
884 which is 32 bits. This caused only the 32 firs bits of IPv6 addresses to
885 be copied and checked.