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