Fixed compilation failure if not using admin interface
[olsrd.git] / CHANGELOG
index 66b6d8a..b188f77 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
 This file states changes as of version 0.2.4:
-$Id: CHANGELOG,v 1.15 2004/11/22 01:22:31 tlopatic Exp $
+$Id: CHANGELOG,v 1.34 2005/02/20 15:41:07 kattemat Exp $
+
+0.4.9 ---------------------------------------------------------------------
+
+OPTIMIZATIONS
+
+The MID database is now also indexed by alias addresses. this makes
+lookups of main addresses based on alias addresses _much_ faster.
+The mid_lookup_main_addr function alone has gone from >30% of the
+total CPU time used by olsrd to <1%.
+PLUGIN DEVELOPERS: datatypes for MID entries has been changed.
+
+Routing table calculation in the LQ case now uses balanced binary
+trees instead of linked lists, which makes lookups much faster.
+
+TIMEOUT OF DATASETS
+
+Validity times for dataset entries are now set using the clock_t type
+(used to be struct timeval). This data is now fetched from the times(2)
+function instead of gettimeofday(2). This prevents possible problems
+if the system time is changed.
+PLUGIN DEVELOPERS: Note that datatypes for close to all dataset entries
+(link, neighbor, mid, hna, tc etc.) has been changed!!
+
+CONFIGURATION FILE
+
+Multiple interfaces can now use the same interface configuration block.
+Example:
+Interface "if0" "if1" "if2"
+{
+       .....
+}
+
+Interface configurations now also support the "Weight" directive. When
+olsrd finds multiple links to a neighbor it will choose the link
+going via the interface with the lowest weight. Olsrd normally
+sets this weight dynamically based on interface characteristics,
+but if the user wishes to set a fixed weight in a interface(or
+a group of interfaces), this directive is now available.
+
+Moreover, interface configurations now support the "LinkQualityMult"
+directive. It takes an IP address and a multiplier as arguments.
+
+Example:
+
+Interface "if0"
+{
+  [...]
+
+  LinkQualityMult 192.168.0.1 0.7
+  LinkQualityMult default 0.5
+
+  [...]
+}
+
+The idea is to make certain links via the configured interface
+artificially worse or better than they really are. The first parameter
+specifies the IP address of a neighbour interface. The second
+parameter is the multiplier to be applied to the link to the specified
+neighbour interface.
+
+After we have derived the link quality from the packet loss among the
+packets received from the specified neighbour interface, we multiply
+the link quality by the given multiplier. So, the multiplier changes
+the LQ value that we use when determining the ETX, which is 1 / (LQ *
+NLQ).
+
+If "default" is given as the IP address then the multiplier applies to
+all links via the configured interface. Note, however, that olsrd only
+assigns one multiplier to each link. It does so in the following way.
+
+* If there is a "LinkQualityMult" line that matches the IP address of
+  the link's neighbour interface, then use the multiplier in this
+  line.
+
+* If there isn't any matching line, then look for a "default" line. If
+  there is a "default" line, then use the multiplier in this "default"
+  line.
+
+* Otherwise use 1.0, i.e. do not modify the LQ value at all.
+
+Hence, a line with an IP address has priority over a "default" line.
+
+In the above example, the LQ value of the link between the local
+interface if0 and the neighbour interface 192.168.0.1 would be
+multiplied by 0.7. All other links between the local interface if0 and
+a neighbour interface would be multiplied by 0.5.
+
+IPV6 SOCKETS
+
+The socket option IPV6_V6ONLY is now set on IPv6 sockets in linux.
+This means that olsrd will no longer receive IPv4 traffic when
+running in IPv6 mode.
+this should enable users to actually run one olsrd instance using
+IPv6 and one using IPv4 at the same time :)
+
+PLUGINS
+
+The httpinfo, dyn_gw and dot_draw plugins now all include olsrd
+headerfiles directly. A plugin should define OLSR_PLUGIN before
+includeing olsrd headers. Doing things this way removed the 
+redundant datatype definitions that has so often caused trouble
+when things has been updated in olsrd.
+
+OTHER UPDATES
+
+- WLAN devices are now detected in FreeBSD
+- First specified interfaces IP is used as main address.
+- Broadcastflag is not checked on interface if fixed broadcast is
+  set in config.
+- Removed Linux link layer code as this was not really in use.
+
+BUGFIXES
+
+- A bug in route addittion/removal that could lead to routes
+  using GWs beeing added before the actual route to the GW
+  was set up has been fixed.
+- A bug in the interface selection in route calculation has been
+  fixed. New routes are no longer added prior to deleting old ones
+  since this caused trouble.
+- A bug in the IPv6 multicast address configuration has been fixed.
+  This caused olsrd not to work with global IPv6 addresses.
+- A bug in the IPv6 prefix-from IPaddr function has been fixed. This
+  bug caused HNA prefixes to always be calculated to 0.
+- If a 2-hop neighbor is also a 1-hop neighbor, a bug made olsrd
+  prefer a bad direct link to a better link via an MPR.
+
 
 0.4.8 ---------------------------------------------------------------------
 
 LICENSE CHANGE
 
-Olsrd is now distributed under a BSD style license. We belive olsrd will
+Olsrd is now distributed under a BSD style license. We believe olsrd will
 be better off using this license as it opens up for commercial players
 to use olsrd freely in their products. In the end this will lead to
 this kind of users doing serious testing and bugfixing of olsrd. 
 
-NO MORE THREADS
-
-Olsrd no longer uses any thread library on its operation. Everything
-now happens in the main thread allowing for use of olsrd on platforms
-with no thread library.
-
 ETX-LIKE LINK QUALITY DETECTION
 
 We can now determine the packet loss on a link by looking at the serial
-numbers of the OLSR messages received from a neighbour. This tells us how
-many packets get through from our neighbour to us. We use a new extended
+numbers of the OLSR messages received from a neighbor. This tells us how
+many packets get through from our neighbor to us. We use a new extended
 kind of HELLO messages (LQ_HELLO messages, LQ = link quality) to broadcast
 the link quality that we have determined on our end of the link to our
-neighbours. So do our neighbours, and we as well as they end up with an
+neighbors. So do our neighbors, and we as well as they end up with an
 idea of how good the link is in both directions. From the LQ_HELLOs we
-also learn the link quality between our neighbours and our two-hop neigh-
-bours. In this way we can select those neighbours as MPRs that have the
-best links to our two-hop neighbours. To distribute the link quality
+also learn the link quality between our neighbors and our two-hop neigh-
+bors. In this way we can select those neighbors as MPRs that have the
+best links to our two-hop neighbors. To distribute the link quality
 throughout the network, we use a new extended version of TC messages
 (LQ_TC messages). They contain the qualities at both ends of each of our
 links. Nodes can then run Dijkstra's algorithm to find a path between
@@ -50,14 +170,28 @@ It's best practice to set "LinkQualityLevel" to the same value on all
 nodes in a network.
 
 When determining the quality of a link olsrd only considers a given
-number of most recent OLSR packets received from its neighbours. By
+number of most recent OLSR packets received from its neighbors. By
 default, olsrd looks at the 10 most recent OLSR packets. This can be
 changed via the "LinkQualityWinSize" configuration option. Values
 between 3 and 128 are legal.
 
 NEW CONFIGFILE PARSER/FORMAT/SCHEME
 
-ToDo
+A whole new config file syntax and parser is introduced with this
+release. The parser is generated using flex and bison and it is 
+designed to be very modular. The parser can be compiled as either
+a standalone binary, a shared library or as part of olsrd. This way
+other applications can parse and generate olsrd configuration files
+only by linking to the dynamic library.
+In the new configfile options can be set pr. interface, plugin
+parameters can be set, more IPC options can be set...and more.
+The syntax is documented in the olsrd.conf(5) manual page found
+in the files/ directory.
+Olsrd internals now uses a single struct, as returned by the config
+parser, for all configuration in runtime. this means that updating
+values in this struct will dynamically update olsrd operation. It
+also means that all configuration is now kept in one place instead
+of spread all across the place.
 
 FREEBSD AND MAC OSX PORT
 
@@ -68,8 +202,17 @@ probably not as reliable as the Linux version. We'd greatly appreciate
 feedback and bug reports. To compile you need GNU make. Then simply
 run "gmake OS=fbsd" to build the executable.
 
-CLEAR SCREEN
+NEW MAKEFILE(S)
+
+The makefiles used to build olsrd have been rewritten and now includes
+dependency file generation using makedep.
 
+DEBUG OUTPUT
+
+Tables are now only printed if changes occur, so there are no longer 
+any periodical output when using a debuglevel >0. A "heartbeat" is 
+now printed to STDOUT(if it is a terminal) in the form of a rotating 
+line to show that olsrd is actually operating.
 Adding "ClearScreen yes" to the configuration file clears the screen
 each time before the debug output shows updated information. This
 makes the debug output easier to read in many cases. "ClearScreen no"
@@ -80,12 +223,23 @@ PLUGIN INTERFACE
 
 There are some changes in the plugin interface. It is now at
 version 2. Plugin specific parameters from the configfile 
-will now be passed on to plugins.
+using the PlParam option, will now be passed on to plugins.
+To receive such parameters a plugin must implement a function:
+int
+register_olsr_param(char *key, char *value)
+to which parameter pairs will be passed.
+
+NO MORE THREADS
+
+Olsrd no longer uses any thread library on its operation. Everything
+now happens in the main thread allowing for use of olsrd on platforms
+with no thread library.
 
 ACPI SUPPORT IN WILLINGNESS CALCULATION(LINUX)
 
 The willingness calculation for Linux, now also supports the more
-modern ACPI proc interface in addittion to APM.
+modern ACPI proc interface in addition to APM. This is not well
+tested and feedback is appreciated!
 
 IPC OPTIONS
 
@@ -99,8 +253,8 @@ Much of the message generation and net output code is rewritten.
 Sending of partial messages should now work 100%. Also TC, MID 
 and HNA messages are now cached for a random amount of time
 before transmitted - this often leads to the situation where these
-messages are sent together with an HELLO maessage, which is highly
-desireable since it saves network resources.
+messages are sent together with an HELLO message, which is highly
+desirable since it saves network resources.
 PLUGIN DEVELOPERS must note that the buffers and size variables
 used in net output is no longer directly accessible!
 
@@ -109,33 +263,25 @@ NET OUTPUT CODE REWRITTEN
 Every interface now has one outputbuffer registered. This allows
 messages to be "cached" as explained above, so that multiple
 messages are stacked together.
-Also the outputbuffer and size are no longer accessable directly,
+Also the outputbuffer and size are no longer accessible directly,
 an API is available to plugins(and olsr code).
 
 OS DEPENDENT NETWORK INTERFACE
 
-The OS dependen network functions are now defined in net_os.h
-instead of beeing mixed up with internal network functions
+The OS dependent network functions are now defined in net_os.h
+instead of being mixed up with internal network functions
 in net.h.
 
-NEW MAKEFILE
-
-The common makefile now includes automatic dependency generation 
-using makedepend.
-
 BUGFIXES
 
 A bug that caused the announced ANSN sequence number to never stop
-beeing increased when a change in the MPR selector set was detected
-has been fixed. This bug could cause unstable routes.
+being increased when a change in the MPR selector set was detected
+has been fixed. Another TC related bug that caused timed out TC
+entries not to be deleted from the routing table in certain cases
+has also been fixed. These bugs could cause unstable routes.
 A bug that in many cases caused the wrong routes to be deleted 
 when using IPv6 has been fixed.
 
-PLUGINS
-
-There are a lot of changes that affects plugins in this release.
-This has mainly to do with the new outputbuffering and
-configuration schemes.
 
 0.4.7 ---------------------------------------------------------------------
 
@@ -143,7 +289,7 @@ NATIVE WINDOWS GUI AND INSTALLER
 
 We now have a native Windows GUI. The GTK+ version is no longer
 supported on Windows. The new native GUI is pretty compact as it does
-not require the GTK+ runtime DLLs. In addition to monitoring olsrd's
+not require the GTK+ runtime DLLs. In addition to monitoring olsrds
 state the GUI offers an easy way for novice users to configure
 olsrd. It's pretty self-explanatory. Have a look at README-WIN32.txt
 for details. The Windows version now also comes with an installer
@@ -187,7 +333,7 @@ DYNAMIC NETWORK INTERFACE UPDATES
 Network interfaces can now be updated and removed/added at
 runtime. Olsrd will check all interfaces specified in the config 
 file or on the command-line, every 5 seconds. If updates
-occure, olsrd will register this and update the necessary data.
+occur, olsrd will register this and update the necessary data.
 If interfaces are removed or added, olsrd will detect this
 and configure the interfaces. If an interface is removed
 olsrd will continue to check the interface, so if say, a PCMCIA
@@ -237,7 +383,7 @@ CODE CLEANUPS
 PLUGIN INTERFCAE
 
 A new set of functions that are called whenever a change in the 
-interface configuration(update, addittion, removal) is made is 
+interface configuration(update, addition, removal) is made is 
 introduced.
 These functions are added and removed very much like the ptf
 functions. Available trough the functions add_ifchgf and del_ifchgf.
@@ -292,7 +438,7 @@ Due to this there are some updates in the configfile imperatives.
 CODE CLEANUPS
 
 Some new macros introduced for table insertion and removal and IP
-copying and comparision.
+copying and comparison.
 
 FRONT END BUGFIXES
 
@@ -325,7 +471,7 @@ These settings are not restored!
 CONFIGFILE OPTIONS FOR MID AND HNA ADDED
 
 Options to set the MID and HNA emission intervals and
-validitytime in the configfile added.
+validity time in the configfile added.
 
 IPv6 ADDRESS SCOPE
 
@@ -362,7 +508,7 @@ outgoing OLSR traffic.
 RESTRUCTURING
 
 Moved most headers out of OS dependent directories. The tunneling
-and link-layer notification interface is not yet seperated from
+and link-layer notification interface is not yet separated from
 the /linux directory.
 
 MANUALPAGE
@@ -389,7 +535,7 @@ LINK-LAYER NOTIFICATION
 Some preliminary link-layer notification code has been added. Link quality
 can be written to stdout if olsrd is started with the -llinfo switch.
 No action is currently taken based on this info. And info will only
-be retreived from the interface named "eth1".
+be retrieved from the interface named "eth1".
 This code is not usable for users as of yet!
 
 MPR UPDATES
@@ -404,7 +550,7 @@ There was a couple of bugs in the MPR selection code. All fixed.
 
 LINUX 2.6 BUG
 
-Users could not run olsrd on multiple inerface using the Linux 2.6 kernel
+Users could not run olsrd on multiple interfaces using the Linux 2.6 kernel
 series. This is now fixed.
 
 MINOR BUGS
@@ -414,7 +560,7 @@ deletion.
 
 MESSAGE-SEQUENCENUMBER INCOMPLIANCE
 
-Message-seqnos was implementaed on a pr. messagetype and pr. interface
+Message-seqnos was implemented on a pr. messagetype and pr. interface
 basis. This is not RFC3626 compliant and has been updates. All messages
 and interfaces now uses a global seuencenumber.
 
@@ -432,8 +578,8 @@ Optimizations based on profiling implemented.
 
 SANITATION
 
-Message size is checked for every massege before passing it to the
-appropriate message persing function. If the size is bigger than the
+Message size is checked for every message before passing it to the
+appropriate message parsing function. If the size is bigger than the
 remaining size of the olsr packet then the message is discarded.
 
 GUI FRONT-END
@@ -506,7 +652,7 @@ Some bugs in MPR selection fixed.
 
 CODE REWRITES
 
-HNA code completeley rewritten!
+HNA code completely rewritten!
 The old code was really bad! Now it is much cleaner implemented and
 should work fine.
 One- and two-hop neighbor list structures rewritten. They now use
@@ -515,7 +661,7 @@ sets use.
 
 CODE RESTRUCTURING
 
-Some code restructuing which resulted in the new files: timer.h,
+Some code restructuring which resulted in the new files: timer.h,
 mantissa.c, mantissa.h, hashing.c, hashing.h, linux/net.c 
 linux/net.h, linux/kernel_routes.c, linux/kernel_routes.h and some 
 renamed files
@@ -539,7 +685,7 @@ CODE REWRITES
 
 The entire TC set and MPR selector set code rewritten. Hashing and
 double linked lists added to the MID code.
-Lots of HNA code has been rewriteen as well.
+Lots of HNA code has been rewritten as well.
 
 HNA bugfix
 
@@ -564,7 +710,7 @@ the hack when receiving MID messages could be removed.
 IPv6
 
 Global addresses are now preferred. Sitelocal addresses are only used
-if no global adresses are found. There have been problems where
+if no global addresses are found. There have been problems where
 the address set in the IP header of IPv6 packets do not match the
 address chosen by OLSR.
 
@@ -578,7 +724,7 @@ and link sensing HELLO message format.
 
 HNA support using IPv6
 
-HNA now works using IPv6 as well! Just add the netwrok address and
+HNA now works using IPv6 as well! Just add the network address and
 prefix in the HNA6 section in the configfile. The IPv6 HNA packets differ
 some from the IPv4 as they don't send the netmask but the prefix.
 
@@ -596,13 +742,13 @@ New options: DEBUG, HNA6 and IPC-CONNECT added to config file.
 
 Output
 
-A printf-wrapper hans been introduced - debug level output handeling
+A printf-wrapper has been introduced - debug level output handling
 is much more uniform now.
-The daemon sould run fine in detatched mode now(DEBUG 0)
+The daemon should run fine in detached mode now(DEBUG 0)
 
 GUI front-end
 
-The GUI front-end can now connect and dissconnect at any time while the
+The GUI front-end can now connect and disconnect at any time while the
 daemon is running, if started using the -ipc switch or with IPC set to
 'yes' in the configfile.
 
@@ -616,7 +762,7 @@ A small HNA bug fixed.
 
 Forwarding jitter
 
-Forwarding jitter added. Messages are piggibacked if they arrive(and are to 
+Forwarding jitter added. Messages are piggybacked if they arrive(and are to 
 be forwarded) while there is data to be forwarded buffered.
 Added some bugfixes to support parsing of piggybacked messages as well.
 
@@ -628,19 +774,19 @@ a TC before the 2 hop neighbors were added.
 
 2 hop neighbor set
 
-All neighbors recieved in HELLO messages are added to the two hop 
+All neighbors received in HELLO messages are added to the two hop 
 neighborhood. This helps smoothing out the 1-to-2 hop transition as well.
 
 MID calculation
 
 MID calculation had to be updated due to the registering of two hop neighbors
-that are already one hop neighbors. They sould not be considered when calculatin
+that are already one hop neighbors. They should not be considered when calculating
 two hop coverage.
 
-Optimalizations
+Optimizations
 
 Deletion of possible one hop neighbors registered on non main-addresses when
-first registering MID info from a node removed. This can not occure due
+first registering MID info from a node removed. This can not occur due
 to the fact that registering of neighbor nodes are done on main addresses
 from link-sensing
 Option to not forward messages on wired links on which they arrived removed.
@@ -672,9 +818,9 @@ of HNA and MID generation.
 
 FORWARDING
 
-As an optimization messages have not been forwarded on the recieved interface
+As an optimization messages have not been forwarded on the received interface
 if this is registered as a non-WLAN interface. This causes problems for
-people using ethernet-to-WLAN adapters. This optimalization is now turned
+people using Ethernet-to-WLAN adapters. This optimization is now turned
 off by default. It can be activated using the -nofwlan option.
 
 BUGS
@@ -692,9 +838,9 @@ IPv6 functioning is not well tested in this release.
 
 HNA
 
-Updated HNA to be RFC compliant. This means that all recieved HNA tuples
-are registered and only the subset of uniqe entries(net/netmask) with
-the smallest hocount is inserted into the routing table.
+Updated HNA to be RFC compliant. This means that all received HNA tuples
+are registered and only the subset of unique entries(net/netmask) with
+the smallest hopcount is inserted into the routing table.
 
 Config file
 
@@ -713,7 +859,7 @@ MPR calculation is now based on the willingness announced by nodes.
 Neighbor set
 
 The neighbor set does not have timeouts on entries any more. Creation
-and deletion af neighbor entries is done from the link-set as suggested
+and deletion of neighbor entries is done from the link-set as suggested
 in the RFC.
 
 Cleanups
@@ -734,8 +880,8 @@ Due to the extensive amount of updates this release is versioned 0.3.0
 
 Duplicate table and forwarding
 
-The duplicate table functionallity is totally rewritten in 100% RFC
-compliance. The forward algorithm specified in the RFC is implmented
+The duplicate table functionality is totally rewritten in 100% RFC
+compliance. The forward algorithm specified in the RFC is implemented
 this meant rewriting much of the packet processing code. The daemon
 also forwards unknown packettypes now.
 
@@ -781,7 +927,7 @@ A bugs in the TC processing fixed.
 HNA
 
 Some serious HNA bugs fixed. These bugs caused a node to always choos the 
-gateway with the larges hopcout :) More seriousley - a bug caused looping
+gateway with the larges hopcout :) More seriously - a bug caused looping
 of HNA messages in certain scenarios.
 
 Package sequence numbers
@@ -791,7 +937,7 @@ in the RFC).
 
 Broadcast address
 
-Users can now specify the broadcast address to use. Usefull if one wishes to
+Users can now specify the broadcast address to use. Useful if one wishes to
 use the 255.255.255.255 broadcast.
 
 
@@ -800,7 +946,7 @@ use the 255.255.255.255 broadcast.
 
 Htime and Vtime
 
-Htime and Vtime processing and handeling added. Holding times used to be 
+Htime and Vtime processing and handling added. Holding times used to be 
 a static value for all nodes. Now every node can signal its vlidity time
 to others.
 To achieve this mantissa/exponent calculation functionality was added.