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