013951ad9ffa8e59f4e84cb412501908920c1f1f
[olsrd.git] / CHANGELOG
1 This file states changes as of version 0.2.4:
2
3 0.4.7 ---------------------------------------------------------------------
4
5 NATIVE WINDOWS GUI AND INSTALLER
6
7 We now have a native Windows GUI. The GTK+ version is no longer
8 supported on Windows. The new native GUI is pretty compact as it does
9 not require the GTK+ runtime DLLs. In addition to monitoring olsrd's
10 state the GUI offers an easy way for novice users to configure
11 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
12 for details. The Windows version now also comes with an installer
13 based on the freely available Nullsoft Scriptable Install System
14 (NSIS). Looks like the Windows port is becoming more and more
15 Windows-ish. :-)
16
17 0.4.6 ---------------------------------------------------------------------
18
19 WINDOWS PORT!
20
21 Read the README-WIN32.txt file!
22
23 DYNAMIC NETWORK INTERFACE UPDATES
24
25 Network interfaces can now be updated and removed/added at
26 runtime. Olsrd will check all interfaces specified in the config 
27 file or on the command-line, every 5 seconds. If updates
28 occure, olsrd will register this and update the necessary data.
29 If interfaces are removed or added, olsrd will detect this
30 and configure the interfaces. If an interface is removed
31 olsrd will continue to check the interface, so if say, a PCMCIA
32 card is removed and later on reinserted(and given the same name),
33 olsrd will detect this and start running on it again.
34
35 Note that olsrd will now run even if no interfaces are detected.
36
37 ROUTE CALCULATION UPDATE
38
39 All 1 hop neighbor addresses that are not directly reachable trough
40 a symmetric link in the link set will now be added with a GW in the 
41 routing table. this GW will be an interface address from a registered
42 symmetric link to the neighbor.
43
44 MID UPDATE
45
46 Alias addresses are now registered in the link set processing
47 if available. This is not to pretty(since the vtime has to
48 be a mere guess) but it gives faster initial route updates.
49 If a HELLO is received(at initial registration) from an IP 
50 that is not the same as the one set as main address in the 
51 received HELLO header, then the IP from which the HELLO was 
52 received will be registered as an alias of the main address 
53 set in the HELLO header. The default vtime is set to 15 secs.
54
55 CODE RESTRUCTURING
56
57 All OS dependent interface configuration code is now located in
58 OS/ifnet.c(that would be linux/ifnet.c if using GNU/Linux).
59 The functions are available trough the headerfile src/ifnet.h
60
61 CODE CLEANUPS
62
63 - Some timer issues fixed
64 - Got rid of the global socket descriptors
65 - Updated indexing of network interfaces
66 - Introduced a global socket to use for ioctl calls(ioctl_s)
67 - Removed upper limit for interfaces to use
68 - Point-to-point interfaces are now allowed
69 - The main select(2) loop now uses a timeout
70 - A small bugfix in the select fd-set update code
71 - Some bugfixes in the configuration file parsing
72 - stdout/stderr are now set to not be buffered
73 - A bugfix in the MID generation regarding seq. numbering
74
75 PLUGIN INTERFCAE
76
77 A new set of functions that are called whenever a change in the 
78 interface configuration(update, addittion, removal) is made is 
79 introduced.
80 These functions are added and removed very much like the ptf
81 functions. Available trough the functions add_ifchgf and del_ifchgf.
82
83 OBS OBS OBS!!! PLUGIN DEVELOPERS READ THIS!!!!
84
85 The interface struct(declared in interfaces.h) has changed.
86 Plugin developers must update plugins that uses the interface
87 struct!
88
89 The headerfile olsr_plugin_io.h which contains the plugin interface
90 commands now contains a revision list where all changes are
91 stated.
92
93
94 0.4.5 ---------------------------------------------------------------------
95
96 PLUGIN: SECURE OLSR
97
98 A plugin that generates and checks message signatures is added.
99 Check lib/secure
100
101 PLUGIN: TOPOLOGY GRAPH
102
103 A plugin that generates output of the topology in the dot format
104 is added. See lib/dot_draw
105
106 OPTIMIZATIONS
107
108 Some optimizations done that should cause fewer route recalculations.
109
110 BUGFIXES
111
112 Some bugs reported by Takafumi Tanaka fixed.
113
114 RESTORATION OF NETWORK SETTINGS
115
116 Network settings like disabling of ICMP redirects and spoof filter, are
117 now restored at exit by olsrd.
118
119 RFC COMPLIANCE FIX
120
121 Nodes would in certain scenarios retransmit messages originating for
122 themselves. This was a RFC incompliance. Reported by Ingmar Baumgart.
123
124 NON-WLAN TIMERS
125
126 No longer setting the HELLO interval of non-wlan interfaces as a multiplier
127 of the wlan interval. The interval is set seperatly now.
128 Due to this there are some updates in the configfile imperatives.
129
130 CODE CLEANUPS
131
132 Some new macros introduced for table insertion and removal and IP
133 copying and comparision.
134
135 FRONT END BUGFIXES
136
137 IPv6 bugfixes in the GUI.
138
139
140 0.4.4 ---------------------------------------------------------------------
141
142 ROUTE CALCULATION
143
144 Routes are no longer added via neighbors declaring a willingness
145 of WILL_NEVER.
146
147 LINK SENSING AND ROUTE CALCULATION
148
149 Link sensing and route calculation has been updated to handle
150 multiple links between hosts in a sane way.
151
152 IP SPOOF FILTERING
153
154 IP spoof filtering is disabled on the interfaces which olsrd runs.
155 These settings are not restored!
156
157 ICMP REDIRECTS
158
159 ICMP redirect message generation is disabled on the interfaces
160 which olsrd runs.
161 These settings are not restored!
162
163 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
164
165 Options to set the MID and HNA emission intervals and
166 validitytime in the configfile added.
167
168 IPv6 ADDRESS SCOPE
169
170 Option to set what IPv6 address type(scope) to use in the 
171 configfile added. It can be set to either global or site-local.
172
173 IPv6 MULTICAST
174
175 Options to set site-local and global multicast addresses
176 in the configfile added.
177
178 EMISSION INTERVAL FUNCTION
179
180 Functions to set emission intervals at runtime added.
181
182 LINK LAYER NOTIFICATIONS
183
184 If started with the -llinfo switch olsrd will collect and display
185 link-layer information on neighbors. This is no longer limited to
186 one interface. But no action is taken based on this info - and
187 there is a upper limit of 8 neighbors from which this info can
188 be collected pr. interface. This limitation is inherited from the
189 WLAN drivers and is not something imposed by the olsrd code!
190
191 IPv6 HNA MESSAGE FORMAT
192
193 IPv6 HNA messages now contains 128-bit netmask instead of prefix.
194
195 PLUGIN FUNCTIONS
196
197 Added "packet transform functions" which allow plugins to alter all
198 outgoing OLSR traffic.
199
200 RESTRUCTURING
201
202 Moved most headers out of OS dependent directories. The tunneling
203 and link-layer notification interface is not yet seperated from
204 the /linux directory.
205
206 MANUALPAGE
207
208 A manpage(olsrd(8)) describing olsrd has been created. It is installed
209 when using 'make install'.
210
211
212 0.4.3 ---------------------------------------------------------------------
213
214 PLUGIN SUPPORT
215
216 Olsrd now supports runtime-loadable plugins! A couple of example plugins
217 are located in the lib/ directory. Read the README files in the various 
218 plugin directories for more info. A directive to load plugins have been
219 added to the configfile as well. 
220 Documentation of the plugin interface can be fount at http://www.olsr.org.
221
222 The plugin interface is designed to be extendable. But it should _always_
223 be backwards compatible with the interface used in this release!
224
225 LINK-LAYER NOTIFICATION
226
227 Some preliminary link-layer notification code has been added. Link quality
228 can be written to stdout if olsrd is started with the -llinfo switch.
229 No action is currently taken based on this info. And info will only
230 be retreived from the interface named "eth1".
231 This code is not usable for users as of yet!
232
233 MPR UPDATES
234
235 Neighbors with willingness set to WILL_ALWAYS is now always added. The
236 MPR selection is optimized as described in RFC3626 section 8.3.1
237 point 5.
238
239 MPR BUGS
240
241 There was a couple of bugs in the MPR selection code. All fixed.
242
243 LINUX 2.6 BUG
244
245 Users could not run olsrd on multiple inerface using the Linux 2.6 kernel
246 series. This is now fixed.
247
248 MINOR BUGS
249
250 One small bug in link hysteresis initialization and one in HNA route
251 deletion.
252
253 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
254
255 Message-seqnos was implementaed on a pr. messagetype and pr. interface
256 basis. This is not RFC3626 compliant and has been updates. All messages
257 and interfaces now uses a global seuencenumber.
258
259 RANDOM SEQUENCENUMBERS
260
261 Sequencenumbers are now initialized using a random value.
262
263 DAEMON MODE
264
265 Fixes for running olsrd in daemon mode(debug 0).
266
267 OPTIMIZATIONS
268
269 Optimizations based on profiling implemented.
270
271 SANITATION
272
273 Message size is checked for every massege before passing it to the
274 appropriate message persing function. If the size is bigger than the
275 remaining size of the olsr packet then the message is discarded.
276
277 GUI FRONT-END
278
279 Some minor modifications done to the gui.
280
281 INTERNAL CHANGES
282
283 Lots of changes in handling of registration and unregistration of
284 scheduler, socketparser, parser and local hna set.
285 Some restructuring and movement of functions.
286
287
288 0.4.2 ---------------------------------------------------------------------
289
290 No public release
291
292 0.4.1 ---------------------------------------------------------------------
293
294 No public release
295
296 0.4.0 ---------------------------------------------------------------------
297
298 LINK HYSTERESIS
299
300 Link hysteresis as described in the RFC added.
301
302 TC REDUNDANCY
303
304 TC redundancy as described in the RFC added
305
306 MPR REDUNDANCY
307
308 MPR redundancy as described in the RFC added
309
310 SCHEDULER REWRITE
311
312 The scheduler has been rewritten to register scheduled
313 events(function pointers) dynamically.
314
315 PARSER REWRITE
316
317 The parser has been rewritten to register parse functions
318 on a pr. messagetype dynamically
319
320 MALLOC WRAPPER
321
322 A wrapper for the malloc(3) syscal has been introduced.
323 olsr_malloc(size_t, const char *) should ALWAYS be used.
324
325 CODE RESTRUCTURING
326
327 Lots of restructuring in headerfiles.
328 Linux spesific code moved to subdirectory linux/
329 FreeBSD code to be put in freebsd/
330 LOTS of code restructured due to the rexrite of the scheduler
331 and parser.
332
333 MPR CALCULATION
334
335 Optimizing the MPR set as suggested in the RFC section
336 8.3.1 point 5 added.
337
338 BUGFIXES
339
340 Some bugs in MPR selection fixed.
341
342
343 0.3.8 ---------------------------------------------------------------------
344
345 CODE REWRITES
346
347 HNA code completeley rewritten!
348 The old code was really bad! Now it is much cleaner implemented and
349 should work fine.
350 One- and two-hop neighbor list structures rewritten. They now use
351 the same hashed double-linked lists as the rest of the information
352 sets use.
353
354 CODE RESTRUCTURING
355
356 Some code restructuing which resulted in the new files: timer.h,
357 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c 
358 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some 
359 renamed files
360
361 BUG FIXES
362
363 The bug causing errormessages on exit is fixed.
364 The bug that caused initial HNA routes in the GUI to display a hopcount
365 of 0 fixed.
366 IPv6 HNA netmasks were all added as /128. It's fixed now.
367
368 IPv6
369
370 Turns out sitelocal address had to be preferred to avoid IPv6 header
371 messing up link-sensing. Bug fixed
372
373
374 0.3.7 ---------------------------------------------------------------------
375
376 CODE REWRITES
377
378 The entire TC set and MPR selector set code rewritten. Hashing and
379 double linked lists added to the MID code.
380 Lots of HNA code has been rewriteen as well.
381
382 HNA bugfix
383
384 When a node lost connectivity to a HNA GW all HNA entries to that gw
385 was deleted. This has been fixed - and HNA entries only gets deleted
386 on timeout now.
387 Other HNA bugs have been fixed as well. But the whole HNA implementation
388 needs a rewrite!
389
390 Holdingtime BUGfix
391
392 There was a bug that caused holdingtime not to be properly recalculated
393 when using non-default emission intervals.
394
395 Forwarding and symmetric neighbors
396
397 Seems I had misread the RFC on what a 1-hop symmetric neighbor is.
398 Now the link-set is checked when a check for a symmetric neighbor
399 is done. Not the 1 hop neighbor set as it used to be. This way
400 the hack when receiving MID messages could be removed.
401
402 IPv6
403
404 Global addresses are now preferred. Sitelocal addresses are only used
405 if no global adresses are found. There have been problems where
406 the address set in the IP header of IPv6 packets do not match the
407 address chosen by OLSR.
408
409 GUI - 0.2.5
410
411 The GUI is finally updated! It can now handle piggybacked messages
412 and link sensing HELLO message format.
413
414
415 0.3.6 ---------------------------------------------------------------------
416
417 HNA support using IPv6
418
419 HNA now works using IPv6 as well! Just add the netwrok address and
420 prefix in the HNA6 section in the configfile. The IPv6 HNA packets differ
421 some from the IPv4 as they don't send the netmask but the prefix.
422
423
424 NEW FILENAME FOR THE BINARY AND CONFIG FILE
425
426 They are now called olsrd and olsrd.conf. I figured I'd use the olsrd
427 name before somebody else started using it ;-)
428
429
430 Config file
431
432 New options: DEBUG, HNA6 and IPC-CONNECT added to config file.
433
434
435 Output
436
437 A printf-wrapper hans been introduced - debug level output handeling
438 is much more uniform now.
439 The daemon sould run fine in detatched mode now(DEBUG 0)
440
441 GUI front-end
442
443 The GUI front-end can now connect and dissconnect at any time while the
444 daemon is running, if started using the -ipc switch or with IPC set to
445 'yes' in the configfile.
446
447
448 BUGS
449
450 A small HNA bug fixed.
451
452
453 0.3.5 ---------------------------------------------------------------------
454
455 Forwarding jitter
456
457 Forwarding jitter added. Messages are piggibacked if they arrive(and are to 
458 be forwarded) while there is data to be forwarded buffered.
459 Added some bugfixes to support parsing of piggybacked messages as well.
460
461 Route calculation
462
463 Fixed route calculation so that 2 hop neighbors are added. This smooths
464 changes from 1 hop to 2 hop neighbor out. The old way one had to wait for 
465 a TC before the 2 hop neighbors were added.
466
467 2 hop neighbor set
468
469 All neighbors recieved in HELLO messages are added to the two hop 
470 neighborhood. This helps smoothing out the 1-to-2 hop transition as well.
471
472 MID calculation
473
474 MID calculation had to be updated due to the registering of two hop neighbors
475 that are already one hop neighbors. They sould not be considered when calculatin
476 two hop coverage.
477
478 Optimalizations
479
480 Deletion of possible one hop neighbors registered on non main-addresses when
481 first registering MID info from a node removed. This can not occure due
482 to the fact that registering of neighbor nodes are done on main addresses
483 from link-sensing
484 Option to not forward messages on wired links on which they arrived removed.
485 This is no longer usable to any degree when adding support for piggybacking
486 of forwarded messages is to be implemented.
487
488 Cleanups
489
490 Some unused parameters and commandline options were removed.
491
492
493
494 0.3.3 ---------------------------------------------------------------------
495
496 TC MESSAGEING
497
498 Added sending of empty TC messages if all MPR selectors are removed. Empty
499 TC messages are sent for a TC_HOLD_TIME period as described in section
500 9.3 in the RFC.
501
502 HNA
503
504 Fixed HNA route calculations for IPv6. I forgot to upgrade this in 0.3.2
505
506 OPTIONS
507
508 -hnaint and -midint command line optionas added to set the interval
509 of HNA and MID generation.
510
511 FORWARDING
512
513 As an optimization messages have not been forwarded on the recieved interface
514 if this is registered as a non-WLAN interface. This causes problems for
515 people using ethernet-to-WLAN adapters. This optimalization is now turned
516 off by default. It can be activated using the -nofwlan option.
517
518 BUGS
519
520 THERE ARE SOME NASTY BUGS IN 0.3.2!
521 Fixed a bug that caused 2 hop neighbors not to time out.
522 Fixed a bug that caused a 1 hop neighbor timeout not to recalculate
523 the routing table.
524 Fixed a small memleak in the MID set
525 Fixed some smaller bugs.
526
527 IPv6 functioning is not well tested in this release.
528
529 0.3.2 ---------------------------------------------------------------------
530
531 HNA
532
533 Updated HNA to be RFC compliant. This means that all recieved HNA tuples
534 are registered and only the subset of uniqe entries(net/netmask) with
535 the smallest hocount is inserted into the routing table.
536
537 Config file
538
539 User can specify configfile name using the -f switch.
540
541 Bugs
542
543 Fixed a link-sensing bug that caused problems when using MID nodes.
544
545 0.3.1 ---------------------------------------------------------------------
546
547 MPR calculation
548
549 MPR calculation is now based on the willingness announced by nodes.
550
551 Neighbor set
552
553 The neighbor set does not have timeouts on entries any more. Creation
554 and deletion af neighbor entries is done from the link-set as suggested
555 in the RFC.
556
557 Cleanups
558
559 Gotten rid of a lot of code that became more or less obsolete due to
560 all the changes introduced in 0.3.0.
561
562 Bugs
563
564 Fixed a nasty bug concerning the sequence numbering of TC packets.
565 Fixed some bugs regarding MPR calculation - and probably introduced 
566 a whole new species when implementing the willingness-based calculation ;-)
567
568
569 0.3.0 ---------------------------------------------------------------------
570
571 Due to the extensive amount of updates this release is versioned 0.3.0
572
573 Duplicate table and forwarding
574
575 The duplicate table functionallity is totally rewritten in 100% RFC
576 compliance. The forward algorithm specified in the RFC is implmented
577 this meant rewriting much of the packet processing code. The daemon
578 also forwards unknown packettypes now.
579
580 Link sensing and neighbor processing
581
582 Link sensing and neighbor processing was done in the same operation in the
583 old code. Link sensing is now a mechanism of its own which is 100% RFC
584 compliant. Neighbor processing and HELLO generation has been partly 
585 rewritten to be RFC compliant. Neighbors are now registered as either
586 SYN or NOT_SYM. The NOT_NEIGH, SYM_NEIGH and MPR_NEIGH values are only
587 used when building HELLO messages. Links are in one of the following states:
588 UNSPEC_LINK, ASYM_LINK or SYM_LINK.
589 HELLO messages now advertise link status of neighbors on the interface
590 the message is transmitted.
591
592 Willingness
593
594 A node now dynamically calculates willingness based on powersource and
595 possibly battery power. If the node is AC powered it announces a willingness
596 of 6. If batterypowered the willingness is calculated as:
597 P / 26
598 Where P is percentage of power left.
599
600 Configuration file
601
602 The daemon now tries to read its configuration from the file /etc/uolsrd.conf
603 A "standard" configuration file is installed when doing 'make install'.
604 This file should be edited to fit your needs.
605 Command-line options can still be used to override the configuration form
606 the file(ore if no config file is present).
607 The -f switch can also be used to specify a configuration file.
608
609 Willingness
610
611 If AdvancedPowerManagemant(APM) is supported on your system the willingness
612 of the node is dynamically calculated based upon the powerstatus of the node.
613 MPR calculation based upon willingness is not done as of yet.
614
615 TC ANSN
616
617 A bugs in the TC processing fixed.
618
619 HNA
620
621 Some serious HNA bugs fixed. These bugs caused a node to always choos the 
622 gateway with the larges hopcout :) More seriousley - a bug caused looping
623 of HNA messages in certain scenarios.
624
625 Package sequence numbers
626
627 These were added. Not much use as of now - but they're there(as specified 
628 in the RFC).
629
630 Broadcast address
631
632 Users can now specify the broadcast address to use. Usefull if one wishes to
633 use the 255.255.255.255 broadcast.
634
635
636
637 0.2.5 ---------------------------------------------------------------------
638
639 Htime and Vtime
640
641 Htime and Vtime processing and handeling added. Holding times used to be 
642 a static value for all nodes. Now every node can signal its vlidity time
643 to others.
644 To achieve this mantissa/exponent calculation functionality was added.
645 Messages now include Vtime(and Htime in HELLO) values in mantissa/exponent
646 format instead of just zero. These values are as stated above, used as holding
647 time for nodes.
648 the GUI should be upgraded as well...
649
650 Jitter
651
652 The use of jitter in message generation intervals vere fixed.
653
654
655 0.2.4 ---------------------------------------------------------------------
656
657 Seqno bugs
658
659 Some bugs concerning sequence numbers in HELLO and MID message handling 
660 was fixed. Newly registered nodes in the neighbor and MID sets were
661 initialized with a seqno of 0. When using a "wraparound" sequencenumber
662 check(as defined in olsr_protocol.h) this can produce errors if a new
663 node joins a network where existing nodes has seqnos >0x00FF.
664
665 IPv6 related bugs
666
667 Some checks and copying of node addresses where done using sizeof(u_olsr32_t)
668 which is 32 bits. This caused only the 32 firs bits of IPv6 addresses to
669 be copied and checked.