* completed changelog message
[olsrd.git] / CHANGELOG
1 This file states changes as of version 0.2.4:
2 $Id: CHANGELOG,v 1.105 2007/11/02 10:57:30 bernd67 Exp $
3
4 0.5.5 ---------------------------------------------------------------------
5
6 BUGFIX by Hannes Gredler <hannes@gredler.at> fixing not deleted tc entry.
7
8 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
9 - Jens Nachtigall <nachtigall@web.de> suggested (and reminded) to use
10   olsrd.conf.default.lq as the default installed one.
11   It makes much more sense as - to the best of my(bernd's) knowledge - all
12   larger networks uses the LQ extensions. And new customers should better
13   be pushed in that direction.
14 - with the help of Patrick McCarty <mccartyp@gmail.com>, we got olsr to build
15   on OpenBSD again:
16   * OpenBSD'd `sed` is pretty conservative and doesn't understand 's|re|sub|'.
17     So we fall back to the old 's/re/sub/' and quote all '/' and '.' correctly
18     (which was the main reason to use '|').
19     And while I'm at it: Remove the useless $(CCACHE) from the $(CC) for
20     dependency generation and beautify (read: "$(strip)") $(CPPFLAGS).
21   * OpenBSD needs an explicit "#include <sys/types.h>" before
22     "#include <netinet/in.h>".
23
24 0.5.4 ---------------------------------------------------------------------
25
26 QUAGGA by Immo 'FaUl' Wehrenberg <immo.olsr@do.bundessicherheitsministerium.de>
27 - updated to svn version 33
28
29 BMF PLUGIN  by Erik Tromp <erik_tromp@hotmail.com>
30 - updated to 1.5.1
31 - updated to latest plugin interfaces changes and killed warnings (by Bernd
32   Petrovitsch <bernd@firmix.at>)
33
34 PATCH by Hannes Gredler <hannes@gredler.at> which rewrites the route handling.
35 To quote him:
36 ----  snip  ----
37 change list:
38 - get rid of separate routing tables for HNA and per-node routes, everything is
39   now unified in an AVL routing tree (&routingtree)
40
41 - introduce walking macros (OLSR_FOR_ALL_RT_ENTRIES()) that hide the internal
42   structure of the RIB for making life of the plugin authors easier.
43
44 - get rid of different SPF implementations for LQ and non-LQ code paths. a
45   non-LQ edge is simply substituted with a cost of 1.0
46
47 - get rid of host masks - a new data type olsr_prefix is introduced which is
48   basically an ip address plus a prefix length.
49
50   do not install the metric in the kernel FIB - for the kernel its pointless
51   if the route gets installed with a metric of N or M.
52
53   we do not need to update the kernel FIB if we have hop count only changes
54   (for example if there is a reroute action further downstream)
55
56   the only things which triggers a kernel FIB route update is a next hop
57   change (a next hop is neighboring gateway router plus an interface).
58
59   all OLSR routes are installed with a metric of 2
60
61 - separate between rt_entry and rt_path - the former is a route installed in the
62   kernel with an next hop. the latter is a candidate for best path selection
63   after SPF calculation has been done. in the rt_entry we keep a pointer to the
64   best_path and also to the next hop that was installed in the kernel FIB.
65
66   we always keep all originator of a route, if a route originator goes away we
67   can easy recompute the best path for the route.
68
69   the next hop in the rt_entry gets only updated upon a successful route_add
70   call - that way we always remember what next hop to delete.
71
72   stray routes should be history now.
73
74 - tweak the linked list toolkit to operate on circular lists.
75
76 - get rid of malloc calls for building the kernel update list. the list node is
77   now embedded in the rt_entry.
78
79 - introduce three queues (add/chg/del) for kernel updates.
80
81 - for neighbor route dependency tracking the neighbor routes are queued first or
82   last (depending on which queue you work on)
83
84 - rework all the plugins which directly manipulate rt entries.
85
86 - rework the plugins that read from the routing table (most notably nameserver,
87   httpinfo and quagga plugin)
88
89 - lots of comments that explains the intentions and purpose of this code-piece.
90
91 non RT related stuff:
92 - use a list rather than a tree for storing the post-SPF results, which further
93   improves the raw-SPF runtime.
94
95 - add display of SPF runtime (masked behind #ifdef SPF_PROFILING)
96
97 - http://gredler.at/download/olsrd/neighbor_routes3.diff: This updates the own
98   IP address (read: the main address) after changes (e.g. on
99   `ifup wlan0; sleep 1; ifdown wlan0`) and kills the
100   olsr_fill_routing_table_with_neighbors() function.
101 ----  snip  ----
102 And Sven-Ola Tuecke <mail2news@commando.de> fixed an instability issue on interface
103 up/down operations (see 102-olsrd-rt-refactoring-fixes.patch below) and a missing
104 initialization.
105
106 PATCH by Hannes Gredler <hannes@gredler.at> which "consolidates
107 the link-state database and the spf-calculation in order
108 to calculate routes more efficiently".
109 To quote him (more):
110 ----  snip  ----
111 - use the link-state (tc) database for SPF calculations rather than
112   replicating the notion of vertices and edges for a SPF run.
113   this heavily reduces malloc() calls and shrinks the total CPU
114   load of the route calculation path between 60%-80%.
115 ----  snip  ----
116
117 PATCHES by Sven-Ola Tuecke <mail2news@commando.de> to be found on from
118 http://download-master.berlin.freifunk.net/sven-ola/nylon/packages/olsrd/files/
119 - 102-olsrd-rt-refactoring-fixes.patch
120   Because you changed a lot of basics: It's time to handle a general
121   flaw in the routing system. Plase take a look at chk_if_changed(). This
122   will free() any "struct interface" pointer without warning at any time.
123   This is why it's possile to SEGV olsrd with a simple "ifdown xxx".
124   The patch replaces the (maybe) invalid pointer with an index reference
125   "iif_index". You can always ask the OS for a name. Please note, that I do
126   not have a working BSD toolchain, so I've placed an #error in the IPv6
127   BSD-part where the author/porter has started to hack something funny.
128
129 - 110-olsrd-double-wlancard-neigh-hack.patch:
130   This is a hack for Nodes having to wifi cards with the same channel,
131   bssid, IP-Range etc. If two nodes can see each other by means of two
132   possible links (here: two wifi cards with equal config), a bug is  triggered
133   with the Neigh-is-SYM detections. This small little hack prevents this.
134
135 - 112-olsrd-nameservice-fixemptyname.patch:
136   This is an addon to my lat/lon stuff which will prevent olsrd from
137   running (oops?) if no hostname is given and the nameservice plugin
138   is loaded.
139
140 - 113-olsrd-dyngwplain-pluginvers5.patch:
141   This updates the dyngwplain plugin to the new Plugin Iface
142
143 - 140-olsrd-arprefreshed.patch:
144   This is a new one. Opens a packet socket and listen to UDP(698), extract
145   the sender MAC and refreshes the ARP cache whith that. Should speedup
146   especially in cases, if you initially try to use a longer routing path which
147   normally triggers a "ARP-Lookup-Chain".
148 - 106-olsrd-nameserviceparams.patch:
149   This patch converts more plugins to the new interface version.
150 - 104-olsrd-policy-routing.patch
151   Reworked this one to discard GPL helper functions. Also checked IPv6 and
152   re-included the IPC hookup. The patch adds a "RtTable [number]" for
153   /etc/olsrd.conf which is simply the Linux
154   policy routing table to use. Defaults to 254 (== main).
155   This patch was modified/clenaed up by <bernd@firmix.at> to use "#if"
156   instead of "#ifdef" as it's more robust against typos.
157 - 110-olsrd-fixpacketprint.patch, 112-olsrd-nameservice-fixemptyname.patch,
158   113-olsrd-txtinfo-fixhttpget.patch, 114-olsrd-timeoutlimit.patch,
159   115-olsrd-nameserviceparamfix.patch and
160   116-olsrd-fix-pluginparam-addons.patch fixing the compilation warning
161   on 64bit and lots of other improvements.
162 - "Save the fish" patch: Avoid forwarding of packets with too low TTL. This
163   kills lots of packet forwarding storms.
164   NB: The oneliner was applied by hand by BP and formatted to look (in BPs O)
165   more readable.
166
167 PATCH by Arnd Hannemann <hannemann@i4.informatik.rwth-aachen.de>
168 olsr_makefile_make_use_of_exename.patch
169 - This patch makes sure that the EXENAME variable of Makefile.inc is used
170   in Makefile.
171
172 PATCHES by John Hay <jhay@meraka.org.za>
173 - update to new FreeBSD WLAN API
174 - do not require /bin/bash, use /bin/sh
175 - Fixed alignment so that olsrd runs on FreeBSD/arm
176 - allow more interface in an IPv6 subnet on FreeBSD
177 - use PREFIX and DESTDIR as all the other Makefile.$OS also for FreeBSD
178 - make txtinfo plugin work with IPv6
179
180 PATCH by Andreas Jacobs <jacobs@i4.informatik.rwth-aachen.de>
181 - fix the loss link quality calculation for "windows size % 4 != 0"
182
183 PATCH by Acinonyx <acinonyxs@yahoo.gr>
184 - Bug fix: include $(TOPDIR)/Makefile.inc at the begin in the Quagga plugin
185
186 PATCH by David Cornejo <dcornejo@gmail.com>
187 - fixed an "+=" of an uninitialized variable (detected with/by the
188   scan.coverty.com).
189
190 BUG reported by Aaron Kaplan <aaron@lo-res.org>
191 - BSD-xargs doesn't know "-r".
192
193 PATCHES and CLEANUPS by Bernd Petrovitsch <bernd@firmix.at>
194 - Made a function from the ME_TO_DOUBLE() macro (in src/mantissa.h).
195   This saves code throughout the code even on i386 and will even more
196   on architectures without floating point units and "-msoft-float".
197 - And the mathemathics in src/mantissa.h is reformulated to minimize
198   floating point operations to save CPU power - especially on embedded
199   devices.
200 - I rewrote the half of src/lq_packet.[ch] which deals with incoming
201   packets. This was triggered with performance output of gcc produced
202   by Sven-Ola Tuecke at CCCamp07.
203   This kills *lots* of (more than) superflous malloc()s and the same
204   number of (free()s). And it also kills some code and copying around of
205   data.
206 - Make it compile without warning with flex-2.5.33 (to be found on Fedora 7
207   and Gentoo in Sep-2007) again.
208
209 - converted the dyn_gw plugin to plugin interface version 5 (which leaves
210   the quagga plugion as the last with the old one).
211 - paving the way to activate -Wshadow, much more to do
212 - const-ify parameters here and there
213 - use NULL for pointers (and not "0")
214 - Killed "extern" declarations in (not generated) .c files
215
216 - Based on a patch by Gianni Costanzi <gianni.costanzi@gmail.com> (so credits
217   and thanks have to go there):
218   added OS_CFLAG_PTHREAD Makefile variable since gcc (on Linux) requests this
219   in the manual page.
220   Changes/additions:
221   - I added definitions to all OS-specific Makefile.$OS with the value similar
222     to the value in OS_LIB_PTHREAD (either empty or "-pthread").
223   - The variable is added to CPPFLAGS (and not CFLAGS) since CPPFLAGS is used
224     for all cpp and gcc calls (and gcc's man page indicates that it sets
225     variables for both of them).
226
227 0.5.3 ---------------------------------------------------------------------
228
229 URGENT BUG FIX
230 Ignacio García Pérez <iggarpe@terra.es> found a serious bug in the dot-draw
231 plugin and identified it's source.
232
233 BUG FIX
234 The bmf plugin wanted to kill a not-started thread and this causes a segmentation
235 violation. This happens if the old plugin interface support is not compiled in
236 and one uses - or more asccurate: wants to use - the bmf plugin which uses that
237 ATM. Thanks to Cedric Krier <ced@ced.homedns.org> for reporting this.
238
239 DEPENDENCIES FIXED
240 The dependencies (*.d files) are now properly generated and used. And they also
241 dependen on the Makefile in the current directory and the Makefile.inc so that
242 changes there also lead to new compilation.
243 Remember: We support "ccache" so install it to save lot of meaningless recompiles
244 if nothing (as seen by the real C compiler, i.e. after the C preprocessor) has
245 changed.
246
247 BUILD FIX
248 Linux/IA64 and Linux/HPPA also need "-fPIC".
249
250 CLEANUPS
251 - olsr_switch does no longer generate warnings
252 - olsr_switch is also built with "build_all" and cleaned with "uberclean"
253 - More "const" all over the place.
254 - More "static" for local functions and variables.
255 - Killed an unnecessary "static" variable.
256
257 0.5.2 ---------------------------------------------------------------------
258
259 URGENT BUG FIX
260 Sven-Ola Tuecke found a serious bug of the class "show stopper" and sent a patch.
261
262 PLUGIN CLEANUP
263 Plugins handle parameters quite individually (case-sensitive vs case-insensitive,
264 different parsing functions for the same values, etc.). Plugin Interface version 5
265 now exports a table of { parameter-name, parsing-function, addr-of-storage } and
266 it's size. Common functions should be shared.
267
268 0.5.1 ---------------------------------------------------------------------
269
270 MISC
271 Upgrade to olsr-bmf 1.5 from Erik Tromp <erik_tromp@hotmail.com>
272
273 latitude/longitude support is now in the nameservice plugin done by
274 Sven-Ola Tuecke <mail2news@commando.de>
275
276 added the spf refactoring patch from  Hannes Gredler <hannes@gredler.at> which
277 saves a noteworthy amount of CPU time. To quote him:
278 ----  snip  ----
279 1. use of an AVL tree as a min-heap implementation
280
281    as a means for efficient sorting.
282    (the etx metric is used as the key in the candidate tree)
283
284 2. next-hop propagation
285
286    rather than tracking the previous node in olsr_relax()
287    i have changed that model and pre-populate all one-hop neighbors
288    with their own IP adress as 'next-hop' and pull that
289    pointer up once new paths are explored.
290
291    as a result no walker for counting hops and extracting next-hops
292    is required - it turns out at this is slighly more efficient
293    than the existing behaviour (even with the cache applied).
294 ----  snip  ----
295
296 CLEANUPS
297 * moved a only locally needed hack from "union olsr_ip_addr" into the only place
298   where it is needed in hashing.c
299
300 0.5.0 ---------------------------------------------------------------------
301
302 APPLIED PATCHES FROM FREIFUNK-FIRMWARE
303 libsmake, dyngwplain, nameservices+services, tzxtinfo, quagga, quagga-routehandler,
304 optimize, fixes from Eric Tromp and Sven-Ola Tuecke, CPU-optimize, secure key, HNA-IP
305
306 CLEANUPS
307 removed hardcoded limit on the number of interfaces (at least in the Unix part)
308 made Makefile targets much more consistent
309
310 MISC
311 put Bmf-1.3 plugin into it
312
313 FreeBSD IPv6 SUPPORT
314
315 Patch from John Hay applied.
316
317 BUGFIXES
318
319 0.4.10 --------------------------------------------------------------------
320
321 OLSR NETWORK SIMULATOR
322
323 An application called olsr_switch(sorry for the nameclash with the win32
324 GUI) has been added. If olsrd is ran using the -hint option it can now
325 connect to olsr_switch and be part of a virtual network. This means
326 that multiple instances can be ran at the same host! The olsr_switch
327 application allows the user to define link variables on all viritual
328 links in the network, creating all possible topologies. Read more in
329 the readme file.
330
331 EXPERIMENTAL FISH EYE ALGORITHM
332
333 An experimental algorithm for TTL settings on TC messages has
334 been added. Read more in the corresponding README file.
335
336 OPENBSD SUPPORT
337
338 olsrd now also compiles on OpenBSD systems. Thanks a lot to Holger
339 Mauermann for the patches!
340
341 BUILDSYSTEM REWRITE
342
343 Bruno has rewritten the make system. OS detection is now done
344 automagically and the general design is much improved.
345
346 IP ADDRESS VALIDATION
347
348 Olsrd now maintains a set of IP addresses that is considered
349 invalid. Checks against this set is done on all received
350 OLSR packets announced originator addresses. The dataset can
351 be updated dynamically.
352
353 PLUGIN INTERFACE
354
355 Updated interface version to 3 and added more noticeable warning
356 for version missmatch.
357
358 MATH LIB DEPENDENCY
359
360 The dependency on the math lib came from the use of pow(3) in the
361 mantissa/exponent calculation. The calls to pow in this long forgotten
362 code, was very unnessecarry. The pow calls are replaced with bitwise
363 shifts and -lm is no longer needed.
364
365 ICMP REDIRECTS ON LINUX
366
367 On Linux systems "0" is now also written to the all/send_redirects
368 procfile and not only the pr. interface ones. Hopefully this resolves
369 problems reported with systems still sending ICMP redirects.
370
371 BUGFIXES
372
373 - Fixed init of IPv6 addrtype variable. It used to be uninitialized,
374   causing it to default to site-local and have some weird side-effects.
375 - Fixed crash when changing IPv6 address at run-time
376 - Fixed a bug that prevented setting willingness 0 in the configfile
377 - Fixed bad handling of missing command line arguments
378 - Did various updates to prevent assertion when a neighbor
379   has changed IP and sends HELLO before its olsrd precess has detected
380   the change.
381 - Fixed return value check on times(2) calls in the scheduler
382 - Fixed bug(s) that could cause crash when an interface was brought
383   down while olsrd was running.
384 - Removed the silent (read: unchecked) hard limit of 16 interfaces.
385 - Compiles now cleanly on 64bit (e.g. x86_64).
386
387 0.4.9 ---------------------------------------------------------------------
388
389 OPTIMIZATIONS
390
391 The MID database is now also indexed by alias addresses. this makes
392 look-ups of main addresses based on alias addresses _much_ faster.
393 The mid_lookup_main_addr function alone has gone from >30% of the
394 total CPU time used by olsrd to <1%.
395 PLUGIN DEVELOPERS: datatypes for MID entries has been changed.
396
397 Routing table calculation in the LQ case now uses balanced binary
398 trees instead of linked lists, which makes look-ups much faster.
399
400 The debug output function olsr_printf() is not used by olsrd
401 internals any more. Instead the macro OLSR_PRINTF is to be used.
402 This macro does debug level testing _before_ doing any function
403 calls(both printf itself and parameters to printf). This is a much
404 more optimized way of doing debug output. In addition olsrd can
405 be built without any debug output code if doing 'make NODEBUG=1'.
406
407 TIMEOUT OF DATASETS
408
409 Validity times for dataset entries are now set using the clock_t type
410 (used to be struct timeval). This data is now fetched from the times(2)
411 function instead of gettimeofday(2). This prevents possible problems
412 if the system time is changed.
413 PLUGIN DEVELOPERS: Note that datatypes for close to all dataset entries
414 (link, neighbor, mid, hna, tc etc.) has been changed!!
415
416 CONFIGURATION FILE
417
418 Multiple interfaces can now use the same interface configuration block.
419 Example:
420 Interface "if0" "if1" "if2"
421 {
422         .....
423 }
424
425 Interface configurations now also support the "Weight" directive. When
426 olsrd finds multiple links to a neighbor it will choose the link
427 going via the interface with the lowest weight. Olsrd normally
428 sets this weight dynamically based on interface characteristics,
429 but if the user wishes to set a fixed weight in a interface(or
430 a group of interfaces), this directive is now available.
431
432 Moreover, interface configurations now support the "LinkQualityMult"
433 directive. It takes an IP address and a multiplier as arguments.
434
435 Example:
436
437 Interface "if0"
438 {
439   [...]
440
441   LinkQualityMult 192.168.0.1 0.7
442   LinkQualityMult default 0.5
443
444   [...]
445 }
446
447 The idea is to make certain links via the configured interface
448 artificially worse or better than they really are. The first parameter
449 specifies the IP address of a neighbour interface. The second
450 parameter is the multiplier to be applied to the link to the specified
451 neighbour interface.
452
453 After we have derived the link quality from the packet loss among the
454 packets received from the specified neighbour interface, we multiply
455 the link quality by the given multiplier. So, the multiplier changes
456 the LQ value that we use when determining the ETX, which is 1 / (LQ *
457 NLQ).
458
459 If "default" is given as the IP address then the multiplier applies to
460 all links via the configured interface. Note, however, that olsrd only
461 assigns one multiplier to each link. It does so in the following way.
462
463 * If there is a "LinkQualityMult" line that matches the IP address of
464   the link's neighbour interface, then use the multiplier in this
465   line.
466
467 * If there isn't any matching line, then look for a "default" line. If
468   there is a "default" line, then use the multiplier in this "default"
469   line.
470
471 * Otherwise use 1.0, i.e. do not modify the LQ value at all.
472
473 Hence, a line with an IP address has priority over a "default" line.
474
475 In the above example, the LQ value of the link between the local
476 interface if0 and the neighbour interface 192.168.0.1 would be
477 multiplied by 0.7. All other links between the local interface if0 and
478 a neighbour interface would be multiplied by 0.5.
479
480 IPV6 SOCKETS
481
482 The socket option IPV6_V6ONLY is now set on IPv6 sockets in linux.
483 This means that olsrd will no longer receive IPv4 traffic when
484 running in IPv6 mode.
485 This should enable users to actually run one olsrd instance using
486 IPv6 and one using IPv4 at the same time :)
487
488 PLUGINS
489
490 The httpinfo, dyn_gw and dot_draw plugins now all include olsrd
491 headerfiles directly. A plugin should define OLSR_PLUGIN before
492 including olsrd headers. Doing things this way removed the
493 redundant datatype definitions that has so often caused trouble
494 when things has been updated in olsrd.
495
496 NETBSD SUPPORT
497
498 olsrd now also compiles on NetBSD systems. Use 'make OS=nbsd' to
499 build. This port is not very well tested and feedback is greatly
500 appreciated.
501
502 EXPERIMENTAL MULTI-INTERFACE CODE FOR FREEBSD
503
504 Experimental code using libnet can be compiled in allowing multiple
505 interfaces to be used in FreeBSD.  You enable this by compiling using
506 OS=fbsd-ll.  You must have libnet-devel installed for this to work
507 (/usr/ports/net/libnet-devel).
508
509 OTHER UPDATES
510
511 - WLAN devices are now detected in FreeBSD
512 - First specified interfaces IP is used as main address.
513 - Broadcastflag is not checked on interface if fixed broadcast is
514   set in config.
515 - Removed Linux link layer code as this was not really in use.
516 - Added -nofork command line option
517
518 BUGFIXES
519
520 - Link sensing now works according to announced vtime from
521   neighbors. Previously links going symmetric->asymmetric
522   were not necessarily detected until the holding time expired.
523 - A bug in route addition/removal that could lead to routes
524   using GWs being added before the actual route to the GW
525   was set up, has been fixed.
526 - A bug in the interface selection in route calculation has been
527   fixed. New routes are no longer added prior to deleting old ones,
528   since this caused trouble.
529 - A bug in the IPv6 multicast address configuration has been fixed.
530   This caused olsrd not to work with global IPv6 addresses.
531 - A bug in the IPv6 prefix-from IPaddr function has been fixed. This
532   bug caused HNA prefixes to always be calculated to 0.
533 - If a 2-hop neighbor is also a 1-hop neighbor, a bug made olsrd
534   prefer a bad direct link to a better link via an MPR.
535 - If a link or interface lookup failed, olsrd crashed.
536 - Fixed a crash in the LQ packet generation code based on a
537   signed/unsigned integer comparison.
538
539
540 0.4.8 ---------------------------------------------------------------------
541
542 LICENSE CHANGE
543
544 Olsrd is now distributed under a BSD style license. We believe olsrd will
545 be better off using this license as it opens up for commercial players
546 to use olsrd freely in their products. In the end this will lead to
547 this kind of users doing serious testing and bug fixing of olsrd.
548
549 ETX-LIKE LINK QUALITY DETECTION
550
551 We can now determine the packet loss on a link by looking at the serial
552 numbers of the OLSR messages received from a neighbor. This tells us how
553 many packets get through from our neighbor to us. We use a new extended
554 kind of HELLO messages (LQ_HELLO messages, LQ = link quality) to broadcast
555 the link quality that we have determined on our end of the link to our
556 neighbors. So do our neighbors, and we as well as they end up with an
557 idea of how good the link is in both directions. From the LQ_HELLOs we
558 also learn the link quality between our neighbors and our two-hop neigh-
559 bors. In this way we can select those neighbors as MPRs that have the
560 best links to our two-hop neighbors. To distribute the link quality
561 throughout the network, we use a new extended version of TC messages
562 (LQ_TC messages). They contain the qualities at both ends of each of our
563 links. Nodes can then run Dijkstra's algorithm to find a path between
564 themselves and other nodes that minimizes the packet loss.
565
566 If the newly introduced "LinkQualityLevel" is set to zero in the
567 configuration file, link quality is not used and the daemon behaves as
568 before, i.e. as specified by the OLSR RFC. If this parameter is set
569 to 1, LQ_HELLOs and LQ_TCs are used instead of HELLOs and TCs, link
570 quality is measured and MPRs are selected based on the link qualities.
571 If this parameter is set to 2, the routing table is additionally
572 calculated based on the link qualities.
573
574 Setting "LinkQualityLevel" to a non-zero value BREAKS COMPATIBILITY. You
575 will then not be able to participate in RFC-conformant OLSR networks
576 any longer. This is because we use LQ_HELLOs and LQ_TCs instead of HELLOs
577 and TCs in this case.
578
579 It's best practice to set "LinkQualityLevel" to the same value on all
580 nodes in a network.
581
582 When determining the quality of a link olsrd only considers a given
583 number of most recent OLSR packets received from its neighbors. By
584 default, olsrd looks at the 10 most recent OLSR packets. This can be
585 changed via the "LinkQualityWinSize" configuration option. Values
586 between 3 and 128 are legal.
587
588 NEW CONFIGFILE PARSER/FORMAT/SCHEME
589
590 A whole new config file syntax and parser is introduced with this
591 release. The parser is generated using flex and bison and it is
592 designed to be very modular. The parser can be compiled as either
593 a standalone binary, a shared library or as part of olsrd. This way
594 other applications can parse and generate olsrd configuration files
595 only by linking to the dynamic library.
596 In the new configfile options can be set pr. interface, plugin
597 parameters can be set, more IPC options can be set...and more.
598 The syntax is documented in the olsrd.conf(5) manual page found
599 in the files/ directory.
600 Olsrd internals now uses a single struct, as returned by the config
601 parser, for all configuration in runtime. this means that updating
602 values in this struct will dynamically update olsrd operation. It
603 also means that all configuration is now kept in one place instead
604 of spread all across the place.
605
606 FREEBSD AND MAC OSX PORT
607
608 This version offers an initial port of olsrd to FreeBSD and Mac OS
609 X. Like the Windows port it currently does not support IPv6. As this
610 is a very first try at supporting FreeBSD and Mac OS X, this port is
611 probably not as reliable as the Linux version. We'd greatly appreciate
612 feedback and bug reports. To compile you need GNU make. Then simply
613 run "gmake OS=fbsd" to build the executable.
614
615 NEW MAKEFILE(S)
616
617 The makefiles used to build olsrd have been rewritten and now includes
618 dependency file generation using makedep.
619
620 DEBUG OUTPUT
621
622 Tables are now only printed if changes occur, so there are no longer
623 any periodical output when using a debuglevel >0. A "heartbeat" is
624 now printed to STDOUT(if it is a terminal) in the form of a rotating
625 line to show that olsrd is actually operating.
626 Adding "ClearScreen yes" to the configuration file clears the screen
627 each time before the debug output shows updated information. This
628 makes the debug output easier to read in many cases. "ClearScreen no"
629 is the default, if no "ClearScreen" directive is given in the
630 configuration file.
631
632 PLUGIN INTERFACE
633
634 There are some changes in the plugin interface. It is now at
635 version 2. Plugin specific parameters from the configfile
636 using the PlParam option, will now be passed on to plugins.
637 To receive such parameters a plugin must implement a function:
638 int
639 register_olsr_param(char *key, char *value)
640 to which parameter pairs will be passed.
641
642 NO MORE THREADS
643
644 Olsrd no longer uses any thread library on its operation. Everything
645 now happens in the main thread allowing for use of olsrd on platforms
646 with no thread library.
647
648 ACPI SUPPORT IN WILLINGNESS CALCULATION(LINUX)
649
650 The willingness calculation for Linux, now also supports the more
651 modern ACPI proc interface in addition to APM. This is not well
652 tested and feedback is appreciated!
653
654 IPC OPTIONS
655
656 Various options regarding IPC connections can now be set in the
657 configfile. The options are max connections, allowed unicast
658 hosts and allowed net-ranges.
659
660 CODE REWRITES
661
662 Much of the message generation and net output code is rewritten.
663 Sending of partial messages should now work 100%. Also TC, MID
664 and HNA messages are now cached for a random amount of time
665 before transmitted - this often leads to the situation where these
666 messages are sent together with an HELLO message, which is highly
667 desirable since it saves network resources.
668 PLUGIN DEVELOPERS must note that the buffers and size variables
669 used in net output is no longer directly accessible!
670
671 NET OUTPUT CODE REWRITTEN
672
673 Every interface now has one outputbuffer registered. This allows
674 messages to be "cached" as explained above, so that multiple
675 messages are stacked together.
676 Also the outputbuffer and size are no longer accessible directly,
677 an API is available to plugins(and olsr code).
678
679 OS DEPENDENT NETWORK INTERFACE
680
681 The OS dependent network functions are now defined in net_os.h
682 instead of being mixed up with internal network functions
683 in net.h.
684
685 BUGFIXES
686
687 A bug that caused the announced ANSN sequence number to never stop
688 being increased when a change in the MPR selector set was detected
689 has been fixed. Another TC related bug that caused timed out TC
690 entries not to be deleted from the routing table in certain cases
691 has also been fixed. These bugs could cause unstable routes.
692 A bug that in many cases caused the wrong routes to be deleted
693 when using IPv6 has been fixed.
694
695
696 0.4.7 ---------------------------------------------------------------------
697
698 NATIVE WINDOWS GUI AND INSTALLER
699
700 We now have a native Windows GUI. The GTK+ version is no longer
701 supported on Windows. The new native GUI is pretty compact as it does
702 not require the GTK+ runtime DLLs. In addition to monitoring olsrds
703 state the GUI offers an easy way for novice users to configure
704 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
705 for details. The Windows version now also comes with an installer
706 based on the freely available Nullsoft Scriptable Install System
707 (NSIS). Looks like the Windows port is becoming more and more
708 Windows-ish. :-)
709
710 WIRELESS INTERFACE DETECTION ON WINDOWS
711
712 Like the Linux version the Windows port is now able to tell WLAN
713 interfaces from wired interfaces. We can now, for example, set
714 different HELLO intervals for WLAN interfaces and wired interfaces,
715 respectively.
716
717 ROUTE UPDATES
718
719 The order of updates of calculated routes is swapped. Now new routes
720 are added prior to deleting old ones. This could fix issues where
721 in some very very few cases one could experiment loss of routes.
722
723 BUGFIXES
724
725 There were quite some bugs in IPv6 operation in 0.4.6. These are
726 the bugs that were fixed:
727 - HNA message parsing did not work.
728 - Some IPv6 addresses were printed as IPv4 addresses in the
729   debug output.
730 - The '-dispin' option now works again.
731 - A filedescriptor leak in the IPv6 interface detection caused
732   olsrd to crash.
733
734
735 0.4.6 ---------------------------------------------------------------------
736
737 WINDOWS PORT!
738
739 Read the README-WIN32.txt file!
740
741 DYNAMIC NETWORK INTERFACE UPDATES
742
743 Network interfaces can now be updated and removed/added at
744 runtime. Olsrd will check all interfaces specified in the config
745 file or on the command-line, every 5 seconds. If updates
746 occur, olsrd will register this and update the necessary data.
747 If interfaces are removed or added, olsrd will detect this
748 and configure the interfaces. If an interface is removed
749 olsrd will continue to check the interface, so if say, a PCMCIA
750 card is removed and later on reinserted(and given the same name),
751 olsrd will detect this and start running on it again.
752
753 Note that olsrd will now run even if no interfaces are detected.
754
755 ROUTE CALCULATION UPDATE
756
757 All 1 hop neighbor addresses that are not directly reachable trough
758 a symmetric link in the link set will now be added with a GW in the
759 routing table. this GW will be an interface address from a registered
760 symmetric link to the neighbor.
761
762 MID UPDATE
763
764 Alias addresses are now registered in the link set processing
765 if available. This is not to pretty(since the vtime has to
766 be a mere guess) but it gives faster initial route updates.
767 If a HELLO is received(at initial registration) from an IP
768 that is not the same as the one set as main address in the
769 received HELLO header, then the IP from which the HELLO was
770 received will be registered as an alias of the main address
771 set in the HELLO header. The default vtime is set to 15 secs.
772
773 CODE RESTRUCTURING
774
775 All OS dependent interface configuration code is now located in
776 OS/ifnet.c(that would be linux/ifnet.c if using GNU/Linux).
777 The functions are available trough the headerfile src/ifnet.h
778
779 CODE CLEANUPS
780
781 - Some timer issues fixed
782 - Got rid of the global socket descriptors
783 - Updated indexing of network interfaces
784 - Introduced a global socket to use for ioctl calls(ioctl_s)
785 - Removed upper limit for interfaces to use
786 - Point-to-point interfaces are now allowed
787 - The main select(2) loop now uses a timeout
788 - A small bugfix in the select fd-set update code
789 - Some bugfixes in the configuration file parsing
790 - stdout/stderr are now set to not be buffered
791 - A bugfix in the MID generation regarding seq. numbering
792
793 PLUGIN INTERFCAE
794
795 A new set of functions that are called whenever a change in the
796 interface configuration(update, addition, removal) is made is
797 introduced.
798 These functions are added and removed very much like the ptf
799 functions. Available trough the functions add_ifchgf and del_ifchgf.
800
801 OBS OBS OBS!!! PLUGIN DEVELOPERS READ THIS!!!!
802
803 The interface struct(declared in interfaces.h) has changed.
804 Plugin developers must update plugins that uses the interface
805 struct!
806
807 The headerfile olsr_plugin_io.h which contains the plugin interface
808 commands now contains a revision list where all changes are
809 stated.
810
811
812 0.4.5 ---------------------------------------------------------------------
813
814 PLUGIN: SECURE OLSR
815
816 A plugin that generates and checks message signatures is added.
817 Check lib/secure
818
819 PLUGIN: TOPOLOGY GRAPH
820
821 A plugin that generates output of the topology in the dot format
822 is added. See lib/dot_draw
823
824 OPTIMIZATIONS
825
826 Some optimizations done that should cause fewer route recalculations.
827
828 BUGFIXES
829
830 Some bugs reported by Takafumi Tanaka fixed.
831
832 RESTORATION OF NETWORK SETTINGS
833
834 Network settings like disabling of ICMP redirects and spoof filter, are
835 now restored at exit by olsrd.
836
837 RFC COMPLIANCE FIX
838
839 Nodes would in certain scenarios retransmit messages originating for
840 themselves. This was a RFC incompliance. Reported by Ingmar Baumgart.
841
842 NON-WLAN TIMERS
843
844 No longer setting the HELLO interval of non-wlan interfaces as a multiplier
845 of the wlan interval. The interval is set seperatly now.
846 Due to this there are some updates in the configfile imperatives.
847
848 CODE CLEANUPS
849
850 Some new macros introduced for table insertion and removal and IP
851 copying and comparison.
852
853 FRONT END BUGFIXES
854
855 IPv6 bugfixes in the GUI.
856
857
858 0.4.4 ---------------------------------------------------------------------
859
860 ROUTE CALCULATION
861
862 Routes are no longer added via neighbors declaring a willingness
863 of WILL_NEVER.
864
865 LINK SENSING AND ROUTE CALCULATION
866
867 Link sensing and route calculation has been updated to handle
868 multiple links between hosts in a sane way.
869
870 IP SPOOF FILTERING
871
872 IP spoof filtering is disabled on the interfaces which olsrd runs.
873 These settings are not restored!
874
875 ICMP REDIRECTS
876
877 ICMP redirect message generation is disabled on the interfaces
878 which olsrd runs.
879 These settings are not restored!
880
881 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
882
883 Options to set the MID and HNA emission intervals and
884 validity time in the configfile added.
885
886 IPv6 ADDRESS SCOPE
887
888 Option to set what IPv6 address type(scope) to use in the
889 configfile added. It can be set to either global or site-local.
890
891 IPv6 MULTICAST
892
893 Options to set site-local and global multicast addresses
894 in the configfile added.
895
896 EMISSION INTERVAL FUNCTION
897
898 Functions to set emission intervals at runtime added.
899
900 LINK LAYER NOTIFICATIONS
901
902 If started with the -llinfo switch olsrd will collect and display
903 link-layer information on neighbors. This is no longer limited to
904 one interface. But no action is taken based on this info - and
905 there is a upper limit of 8 neighbors from which this info can
906 be collected pr. interface. This limitation is inherited from the
907 WLAN drivers and is not something imposed by the olsrd code!
908
909 IPv6 HNA MESSAGE FORMAT
910
911 IPv6 HNA messages now contains 128-bit netmask instead of prefix.
912
913 PLUGIN FUNCTIONS
914
915 Added "packet transform functions" which allow plugins to alter all
916 outgoing OLSR traffic.
917
918 RESTRUCTURING
919
920 Moved most headers out of OS dependent directories. The tunneling
921 and link-layer notification interface is not yet separated from
922 the /linux directory.
923
924 MANUALPAGE
925
926 A manpage(olsrd(8)) describing olsrd has been created. It is installed
927 when using 'make install'.
928
929
930 0.4.3 ---------------------------------------------------------------------
931
932 PLUGIN SUPPORT
933
934 Olsrd now supports runtime-loadable plugins! A couple of example plugins
935 are located in the lib/ directory. Read the README files in the various
936 plugin directories for more info. A directive to load plugins have been
937 added to the configfile as well.
938 Documentation of the plugin interface can be fount at http://www.olsr.org.
939
940 The plugin interface is designed to be extendable. But it should _always_
941 be backwards compatible with the interface used in this release!
942
943 LINK-LAYER NOTIFICATION
944
945 Some preliminary link-layer notification code has been added. Link quality
946 can be written to stdout if olsrd is started with the -llinfo switch.
947 No action is currently taken based on this info. And info will only
948 be retrieved from the interface named "eth1".
949 This code is not usable for users as of yet!
950
951 MPR UPDATES
952
953 Neighbors with willingness set to WILL_ALWAYS is now always added. The
954 MPR selection is optimized as described in RFC3626 section 8.3.1
955 point 5.
956
957 MPR BUGS
958
959 There was a couple of bugs in the MPR selection code. All fixed.
960
961 LINUX 2.6 BUG
962
963 Users could not run olsrd on multiple interfaces using the Linux 2.6 kernel
964 series. This is now fixed.
965
966 MINOR BUGS
967
968 One small bug in link hysteresis initialization and one in HNA route
969 deletion.
970
971 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
972
973 Message-seqnos was implemented on a pr. messagetype and pr. interface
974 basis. This is not RFC3626 compliant and has been updates. All messages
975 and interfaces now uses a global seuencenumber.
976
977 RANDOM SEQUENCENUMBERS
978
979 Sequencenumbers are now initialized using a random value.
980
981 DAEMON MODE
982
983 Fixes for running olsrd in daemon mode(debug 0).
984
985 OPTIMIZATIONS
986
987 Optimizations based on profiling implemented.
988
989 SANITATION
990
991 Message size is checked for every message before passing it to the
992 appropriate message parsing function. If the size is bigger than the
993 remaining size of the olsr packet then the message is discarded.
994
995 GUI FRONT-END
996
997 Some minor modifications done to the gui.
998
999 INTERNAL CHANGES
1000
1001 Lots of changes in handling of registration and unregistration of
1002 scheduler, socketparser, parser and local hna set.
1003 Some restructuring and movement of functions.
1004
1005
1006 0.4.2 ---------------------------------------------------------------------
1007
1008 No public release
1009
1010 0.4.1 ---------------------------------------------------------------------
1011
1012 No public release
1013
1014 0.4.0 ---------------------------------------------------------------------
1015
1016 LINK HYSTERESIS
1017
1018 Link hysteresis as described in the RFC added.
1019
1020 TC REDUNDANCY
1021
1022 TC redundancy as described in the RFC added
1023
1024 MPR REDUNDANCY
1025
1026 MPR redundancy as described in the RFC added
1027
1028 SCHEDULER REWRITE
1029
1030 The scheduler has been rewritten to register scheduled
1031 events(function pointers) dynamically.
1032
1033 PARSER REWRITE
1034
1035 The parser has been rewritten to register parse functions
1036 on a pr. messagetype dynamically
1037
1038 MALLOC WRAPPER
1039
1040 A wrapper for the malloc(3) syscal has been introduced.
1041 olsr_malloc(size_t, const char *) should ALWAYS be used.
1042
1043 CODE RESTRUCTURING
1044
1045 Lots of restructuring in headerfiles.
1046 Linux spesific code moved to subdirectory linux/
1047 FreeBSD code to be put in freebsd/
1048 LOTS of code restructured due to the rexrite of the scheduler
1049 and parser.
1050
1051 MPR CALCULATION
1052
1053 Optimizing the MPR set as suggested in the RFC section
1054 8.3.1 point 5 added.
1055
1056 BUGFIXES
1057
1058 Some bugs in MPR selection fixed.
1059
1060
1061 0.3.8 ---------------------------------------------------------------------
1062
1063 CODE REWRITES
1064
1065 HNA code completely rewritten!
1066 The old code was really bad! Now it is much cleaner implemented and
1067 should work fine.
1068 One- and two-hop neighbor list structures rewritten. They now use
1069 the same hashed double-linked lists as the rest of the information
1070 sets use.
1071
1072 CODE RESTRUCTURING
1073
1074 Some code restructuring which resulted in the new files: timer.h,
1075 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c
1076 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some
1077 renamed files
1078
1079 BUG FIXES
1080
1081 The bug causing errormessages on exit is fixed.
1082 The bug that caused initial HNA routes in the GUI to display a hopcount
1083 of 0 fixed.
1084 IPv6 HNA netmasks were all added as /128. It's fixed now.
1085
1086 IPv6
1087
1088 Turns out sitelocal address had to be preferred to avoid IPv6 header
1089 messing up link-sensing. Bug fixed
1090
1091
1092 0.3.7 ---------------------------------------------------------------------
1093
1094 CODE REWRITES
1095
1096 The entire TC set and MPR selector set code rewritten. Hashing and
1097 double linked lists added to the MID code.
1098 Lots of HNA code has been rewritten as well.
1099
1100 HNA bugfix
1101
1102 When a node lost connectivity to a HNA GW all HNA entries to that gw
1103 was deleted. This has been fixed - and HNA entries only gets deleted
1104 on timeout now.
1105 Other HNA bugs have been fixed as well. But the whole HNA implementation
1106 needs a rewrite!
1107
1108 Holdingtime BUGfix
1109
1110 There was a bug that caused holdingtime not to be properly recalculated
1111 when using non-default emission intervals.
1112
1113 Forwarding and symmetric neighbors
1114
1115 Seems I had misread the RFC on what a 1-hop symmetric neighbor is.
1116 Now the link-set is checked when a check for a symmetric neighbor
1117 is done. Not the 1 hop neighbor set as it used to be. This way
1118 the hack when receiving MID messages could be removed.
1119
1120 IPv6
1121
1122 Global addresses are now preferred. Sitelocal addresses are only used
1123 if no global addresses are found. There have been problems where
1124 the address set in the IP header of IPv6 packets do not match the
1125 address chosen by OLSR.
1126
1127 GUI - 0.2.5
1128
1129 The GUI is finally updated! It can now handle piggybacked messages
1130 and link sensing HELLO message format.
1131
1132
1133 0.3.6 ---------------------------------------------------------------------
1134
1135 HNA support using IPv6
1136
1137 HNA now works using IPv6 as well! Just add the network address and
1138 prefix in the HNA6 section in the configfile. The IPv6 HNA packets differ
1139 some from the IPv4 as they don't send the netmask but the prefix.
1140
1141
1142 NEW FILENAME FOR THE BINARY AND CONFIG FILE
1143
1144 They are now called olsrd and olsrd.conf. I figured I'd use the olsrd
1145 name before somebody else started using it ;-)
1146
1147
1148 Config file
1149
1150 New options: DEBUG, HNA6 and IPC-CONNECT added to config file.
1151
1152
1153 Output
1154
1155 A printf-wrapper has been introduced - debug level output handling
1156 is much more uniform now.
1157 The daemon should run fine in detached mode now(DEBUG 0)
1158
1159 GUI front-end
1160
1161 The GUI front-end can now connect and disconnect at any time while the
1162 daemon is running, if started using the -ipc switch or with IPC set to
1163 'yes' in the configfile.
1164
1165
1166 BUGS
1167
1168 A small HNA bug fixed.
1169
1170
1171 0.3.5 ---------------------------------------------------------------------
1172
1173 Forwarding jitter
1174
1175 Forwarding jitter added. Messages are piggybacked if they arrive(and are to
1176 be forwarded) while there is data to be forwarded buffered.
1177 Added some bugfixes to support parsing of piggybacked messages as well.
1178
1179 Route calculation
1180
1181 Fixed route calculation so that 2 hop neighbors are added. This smooths
1182 changes from 1 hop to 2 hop neighbor out. The old way one had to wait for
1183 a TC before the 2 hop neighbors were added.
1184
1185 2 hop neighbor set
1186
1187 All neighbors received in HELLO messages are added to the two hop
1188 neighborhood. This helps smoothing out the 1-to-2 hop transition as well.
1189
1190 MID calculation
1191
1192 MID calculation had to be updated due to the registering of two hop neighbors
1193 that are already one hop neighbors. They should not be considered when calculating
1194 two hop coverage.
1195
1196 Optimizations
1197
1198 Deletion of possible one hop neighbors registered on non main-addresses when
1199 first registering MID info from a node removed. This can not occur due
1200 to the fact that registering of neighbor nodes are done on main addresses
1201 from link-sensing
1202 Option to not forward messages on wired links on which they arrived removed.
1203 This is no longer usable to any degree when adding support for piggybacking
1204 of forwarded messages is to be implemented.
1205
1206 Cleanups
1207
1208 Some unused parameters and commandline options were removed.
1209
1210
1211
1212 0.3.3 ---------------------------------------------------------------------
1213
1214 TC MESSAGEING
1215
1216 Added sending of empty TC messages if all MPR selectors are removed. Empty
1217 TC messages are sent for a TC_HOLD_TIME period as described in section
1218 9.3 in the RFC.
1219
1220 HNA
1221
1222 Fixed HNA route calculations for IPv6. I forgot to upgrade this in 0.3.2
1223
1224 OPTIONS
1225
1226 -hnaint and -midint command line optionas added to set the interval
1227 of HNA and MID generation.
1228
1229 FORWARDING
1230
1231 As an optimization messages have not been forwarded on the received interface
1232 if this is registered as a non-WLAN interface. This causes problems for
1233 people using Ethernet-to-WLAN adapters. This optimization is now turned
1234 off by default. It can be activated using the -nofwlan option.
1235
1236 BUGS
1237
1238 THERE ARE SOME NASTY BUGS IN 0.3.2!
1239 Fixed a bug that caused 2 hop neighbors not to time out.
1240 Fixed a bug that caused a 1 hop neighbor timeout not to recalculate
1241 the routing table.
1242 Fixed a small memleak in the MID set
1243 Fixed some smaller bugs.
1244
1245 IPv6 functioning is not well tested in this release.
1246
1247 0.3.2 ---------------------------------------------------------------------
1248
1249 HNA
1250
1251 Updated HNA to be RFC compliant. This means that all received HNA tuples
1252 are registered and only the subset of unique entries(net/netmask) with
1253 the smallest hopcount is inserted into the routing table.
1254
1255 Config file
1256
1257 User can specify configfile name using the -f switch.
1258
1259 Bugs
1260
1261 Fixed a link-sensing bug that caused problems when using MID nodes.
1262
1263 0.3.1 ---------------------------------------------------------------------
1264
1265 MPR calculation
1266
1267 MPR calculation is now based on the willingness announced by nodes.
1268
1269 Neighbor set
1270
1271 The neighbor set does not have timeouts on entries any more. Creation
1272 and deletion of neighbor entries is done from the link-set as suggested
1273 in the RFC.
1274
1275 Cleanups
1276
1277 Gotten rid of a lot of code that became more or less obsolete due to
1278 all the changes introduced in 0.3.0.
1279
1280 Bugs
1281
1282 Fixed a nasty bug concerning the sequence numbering of TC packets.
1283 Fixed some bugs regarding MPR calculation - and probably introduced
1284 a whole new species when implementing the willingness-based calculation ;-)
1285
1286
1287 0.3.0 ---------------------------------------------------------------------
1288
1289 Due to the extensive amount of updates this release is versioned 0.3.0
1290
1291 Duplicate table and forwarding
1292
1293 The duplicate table functionality is totally rewritten in 100% RFC
1294 compliance. The forward algorithm specified in the RFC is implemented
1295 this meant rewriting much of the packet processing code. The daemon
1296 also forwards unknown packettypes now.
1297
1298 Link sensing and neighbor processing
1299
1300 Link sensing and neighbor processing was done in the same operation in the
1301 old code. Link sensing is now a mechanism of its own which is 100% RFC
1302 compliant. Neighbor processing and HELLO generation has been partly
1303 rewritten to be RFC compliant. Neighbors are now registered as either
1304 SYN or NOT_SYM. The NOT_NEIGH, SYM_NEIGH and MPR_NEIGH values are only
1305 used when building HELLO messages. Links are in one of the following states:
1306 UNSPEC_LINK, ASYM_LINK or SYM_LINK.
1307 HELLO messages now advertise link status of neighbors on the interface
1308 the message is transmitted.
1309
1310 Willingness
1311
1312 A node now dynamically calculates willingness based on powersource and
1313 possibly battery power. If the node is AC powered it announces a willingness
1314 of 6. If batterypowered the willingness is calculated as:
1315 P / 26
1316 Where P is percentage of power left.
1317
1318 Configuration file
1319
1320 The daemon now tries to read its configuration from the file /etc/uolsrd.conf
1321 A "standard" configuration file is installed when doing 'make install'.
1322 This file should be edited to fit your needs.
1323 Command-line options can still be used to override the configuration form
1324 the file(ore if no config file is present).
1325 The -f switch can also be used to specify a configuration file.
1326
1327 Willingness
1328
1329 If AdvancedPowerManagemant(APM) is supported on your system the willingness
1330 of the node is dynamically calculated based upon the powerstatus of the node.
1331 MPR calculation based upon willingness is not done as of yet.
1332
1333 TC ANSN
1334
1335 A bugs in the TC processing fixed.
1336
1337 HNA
1338
1339 Some serious HNA bugs fixed. These bugs caused a node to always choos the
1340 gateway with the larges hopcout :) More seriously - a bug caused looping
1341 of HNA messages in certain scenarios.
1342
1343 Package sequence numbers
1344
1345 These were added. Not much use as of now - but they're there(as specified
1346 in the RFC).
1347
1348 Broadcast address
1349
1350 Users can now specify the broadcast address to use. Useful if one wishes to
1351 use the 255.255.255.255 broadcast.
1352
1353
1354
1355 0.2.5 ---------------------------------------------------------------------
1356
1357 Htime and Vtime
1358
1359 Htime and Vtime processing and handling added. Holding times used to be
1360 a static value for all nodes. Now every node can signal its vlidity time
1361 to others.
1362 To achieve this mantissa/exponent calculation functionality was added.
1363 Messages now include Vtime(and Htime in HELLO) values in mantissa/exponent
1364 format instead of just zero. These values are as stated above, used as holding
1365 time for nodes.
1366 the GUI should be upgraded as well...
1367
1368 Jitter
1369
1370 The use of jitter in message generation intervals vere fixed.
1371
1372
1373 0.2.4 ---------------------------------------------------------------------
1374
1375 Seqno bugs
1376
1377 Some bugs concerning sequence numbers in HELLO and MID message handling
1378 was fixed. Newly registered nodes in the neighbor and MID sets were
1379 initialized with a seqno of 0. When using a "wraparound" sequencenumber
1380 check(as defined in olsr_protocol.h) this can produce errors if a new
1381 node joins a network where existing nodes has seqnos >0x00FF.
1382
1383 IPv6 related bugs
1384
1385 Some checks and copying of node addresses where done using sizeof(u_olsr32_t)
1386 which is 32 bits. This caused only the 32 firs bits of IPv6 addresses to
1387 be copied and checked.