### 1998-03-20 18:30:55  Martin Mares <mj@ucw.cz>

  * doc/banner.tex

  Added banner presented to KSVI.

### 1998-04-22 12:58:34  Martin Mares <mj@ucw.cz>

  * Makefile
  * Rules
  * TODO
  * lib/Makefile
  * lib/birdlib.h
  * lib/lists.c
  * lib/lists.h
  * lib/resource.h
  * lib/socket.h
  * lib/timer.h
  * lib/unaligned.h
  * nest/Makefile
  * nest/bird.h
  * nest/confile.h
  * nest/iface.h
  * nest/ipv4.h
  * nest/ipv6.h
  * nest/main.c
  * nest/protocol.h
  * nest/route.h
  * sysdep/config.h
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-v6.h
  * sysdep/linux/Makefile

  First look at data structures. More to come tomorrow...

### 1998-04-23 08:09:39  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Added few route attributes.

### 1998-04-23 14:01:15  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h
  * lib/ip.h
  * lib/ipv4.h
  * lib/ipv6.h
  * nest/bird.h
  * nest/iface.h
  * nest/ipv4.h
  * nest/ipv6.h

  Added IP address manipulation macros, interface declarations and logging.

### 1998-04-28 14:39:34  Martin Mares <mj@ucw.cz>

  * Makefile
  * Rules
  * lib/ip.h
  * lib/ipv4.h
  * lib/lists.c
  * lib/resource.h
  * lib/socket.h
  * lib/timer.h
  * nest/bird.h
  * nest/iface.h
  * nest/main.c
  * nest/protocol.h
  * nest/route.h
  * sysdep/config.h

  Changed #include <x/y> to #include "x/y" for our local includes, so that
  gcc -MM can be used to separate them from the system ones.
  
  Added automatic generation of dependencies.

### 1998-05-03 16:42:08  Martin Mares <mj@ucw.cz>

  * sysdep/unix/Makefile
  * sysdep/unix/log.c

  Added new subdir for UNIX-dependent files.
  
  Now contains only functions for logging, but it will change soon.

### 1998-05-03 16:42:45  Martin Mares <mj@ucw.cz>

  * nest/iface.h
  * nest/main.c
  * nest/protocol.h
  * nest/route.h

  Next attempt on data structures...

### 1998-05-03 16:43:39  Martin Mares <mj@ucw.cz>

  * Makefile
  * TODO
  * lib/Makefile
  * lib/birdlib.h
  * lib/bitops.c
  * lib/bitops.h
  * lib/ip.h
  * lib/ipv4.c
  * lib/ipv4.h
  * lib/ipv6.c
  * lib/ipv6.h
  * lib/lists.c
  * lib/lists.h
  * lib/md5.c
  * lib/md5.h
  * lib/mempool.c
  * lib/resource.c
  * lib/resource.h
  * lib/slab.c
  * lib/xmalloc.c
  * sysdep/config.h

  BIRD library: The story continues.
  
  Complete resource manages and IP address handling.

### 1998-05-15 07:54:32  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/main.c
  * nest/route.h
  * nest/rt-fib.c
  * nest/rt-table.c

  Parts of routing table code. Data structure declarations should be
  complete now.

### 1998-05-15 07:56:13  Martin Mares <mj@ucw.cz>

  * Makefile
  * Rules
  * lib/Makefile
  * lib/Modules
  * lib/birdlib.h
  * lib/ip.h
  * lib/ipv4.c
  * lib/ipv4.h
  * lib/ipv6.c
  * lib/ipv6.h
  * lib/timer.h
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-v6.h
  * sysdep/linux/Makefile
  * sysdep/linux/Modules
  * sysdep/unix/Makefile
  * sysdep/unix/Modules
  * sysdep/unix/main.c
  * sysdep/unix/timer.h
  * tools/mergedirs

  The library is now glued together from generic and OS-dependent parts
  by the `mergedirs' script. Few more IP address manipulation functions
  and some fixes.

### 1998-05-15 13:43:59  Martin Mares <mj@ucw.cz>

  * Makefile

  Fixed path to includes.

### 1998-05-20 11:54:33  Martin Mares <mj@ucw.cz>

  * Makefile
  * Rules
  * nest/Makefile
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-table.c
  * sysdep/unix/main.c

  Added routing table and routing attribute code.

### 1998-05-24 09:20:59  Martin Mares <mj@ucw.cz>

  * nest/iface.h

  Point-to-point links: added address of the opposite end.

### 1998-05-24 09:19:26  Martin Mares <mj@ucw.cz>

  * lib/socket.h

  Added declarations of all our socket functions.

### 1998-05-24 14:46:20  Martin Mares <mj@ucw.cz>

  * lib/mempool.c
  * lib/resource.c
  * lib/slab.c

  Staticized some variables and functions.

### 1998-05-24 14:40:30  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * sysdep/config.h
  * sysdep/unix/Modules
  * sysdep/unix/timer.h

  Implemented timers. Using bird_clock_t for absolute time from now...

### 1998-05-24 14:48:09  Martin Mares <mj@ucw.cz>

  * nest/iface.h

  Added interface index (used only by OS-dependent code since ifindexes itself
  are OS-dependent).

### 1998-05-24 14:49:14  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Added debug dump function, but it's still empty :(

### 1998-05-24 14:48:52  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  protos_init, not proto_init.

### 1998-05-24 14:44:25  Martin Mares <mj@ucw.cz>

  * Makefile

  Fixed path to includes.

### 1998-05-24 15:00:48  Martin Mares <mj@ucw.cz>

  * lib/socket.h

  Added few socket declarations.

### 1998-05-24 14:50:18  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Added UNIX implementation of both timers and sockets. Timers should work,
  sockets were tested only in TCP mode. main.c now contains some test
  cases for socket code.

### 1998-05-26 21:42:05  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/iface.c
  * nest/iface.h
  * sysdep/unix/Modules
  * sysdep/unix/main.c
  * sysdep/unix/sync-if.c

  Implemented scanning of network interfaces. Mostly very ugly code due to
  terrible kernel interface (SIOGIFCONF and friends).

### 1998-05-26 21:36:17  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/birdlib.h

  DBG now calls debug() instead of sending it to log().

### 1998-05-26 21:38:06  Martin Mares <mj@ucw.cz>

  * lib/unaligned.h

  Added generic functions for unaligned data access.

### 1998-05-26 21:44:54  Martin Mares <mj@ucw.cz>

  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-v6.h

  Added CONFIG_AUTO_ROUTES (automatic device route creation) and
  CONFIG_ALL_MULTICAST (all interfaces capable of multicasting, not depending
  on IFF_MULTICAST flag).

### 1998-05-26 21:43:45  Martin Mares <mj@ucw.cz>

  * nest/rt-fib.c

  Debug messages.

### 1998-05-26 21:46:38  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/timer.h
  * sysdep/unix/unix.h

  Whee, multicast sockets work!
  
  Implemented recurrent timers.

### 1998-05-26 21:37:37  Martin Mares <mj@ucw.cz>

  * lib/resource.c
  * lib/resource.h
  * nest/rt-attr.c

  Resource pools are now named.

### 1998-05-26 21:36:48  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h

  Added ipa_opposite().

### 1998-06-01 21:41:11  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/iface.c
  * nest/iface.h
  * nest/protocol.h
  * nest/route.h

  - Rewrote whole interface logic. Removed support for multiple addresses per
    interface since it makes much trouble everywhere. Instead, we understand
    secondary addresses as subinterfaces.
  
  - In case interface addresses or basic flags change, we simply convert it
    to a down/up sequence.
  
  - Implemented the universal neighbour cache. (Just forget what did previous
    includes say of neighbour caching, this one is brand new.)

### 1998-06-01 21:41:32  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/main.c
  * sysdep/unix/sync-if.c

  Synced to new interface code.

### 1998-06-01 21:36:58  Martin Mares <mj@ucw.cz>

  * lib/ip.h
  * lib/ipv4.h
  * lib/ipv6.h

  Added ipa_xor() and ipa_in_net().

### 1998-06-03 08:42:16  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/rt-dev.c

  Skeleton of device route protocol. As it's tightly coupled with our kernel,
  it sits here instead of `proto/dev'.

### 1998-06-03 08:36:34  Martin Mares <mj@ucw.cz>

  * nest/confile.h

  Added configuration pool.

### 1998-06-03 08:40:10  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/rt-attr.c
  * nest/rt-table.c

  Protocol hooks. All of them may be NULL.

### 1998-06-03 08:43:44  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Killed socket debug code. Initialize config pool and protocols.
  More to come later...

### 1998-06-03 08:38:53  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Basic protocol operations.

### 1998-06-03 08:35:40  Martin Mares <mj@ucw.cz>

  * Makefile

  Protocols will reside in directory `proto'.

### 1998-06-03 08:38:06  Martin Mares <mj@ucw.cz>

  * nest/protocol.h

  Changed protocol declarations a bit.

### 1998-06-04 20:27:49  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Fixed processing of timers.

### 1998-06-04 20:29:05  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Dumping of _static_ attributes implemented.

### 1998-06-04 20:28:43  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  We have full interface routes now.

### 1998-06-04 20:29:44  Martin Mares <mj@ucw.cz>

  * nest/route.h

  FIB_WALK and friends are now slightly more friendly.

### 1998-06-04 20:28:19  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Handle route deletion without segfaults. A bit more debug dumps.

### 1998-06-04 20:30:11  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h

  Now sending IF_CHANGE_CREATE when a new interface appears and IF_CHANGE_UP
  only if it's really up.

### 1998-06-17 14:28:46  Martin Mares <mj@ucw.cz>

  * lib/ipv4.c

  ip_ntop() and ip_ntox() for IPv4.

### 1998-06-17 14:26:30  Martin Mares <mj@ucw.cz>

  * lib/ip.h
  * lib/ipv4.h
  * lib/ipv6.h

  Added function for converting of IP addresses to printable form.

### 1998-06-17 14:36:02  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/rt-attr.c
  * nest/rt-table.c

  Use '%I' instead of dirty address printing hacks.

### 1998-06-17 14:31:36  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/Modules
  * lib/printf.c
  * lib/string.h

  Added local version of sprintf (bsprintf and bvsprintf) offering few new
  format strings:
  
  	%I	IP address
  	%#I	IP address in hexadecimal
  	%1I	IP address padded to full length
  	%m	strerror(errno)

### 1998-06-17 14:34:13  Martin Mares <mj@ucw.cz>

  * lib/printf.c

  Oops, forgot '%m'...

### 1998-06-17 14:33:29  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c

  debug() and log() use the new printf. Feel free to use new formatting
  sequences for all output.

### 1998-07-09 19:35:23  Pavel Machek <pavel@ucw.cz>

  * lib/lists.h

  Adding walk list which permits you to delete entries.

### 1998-07-09 19:36:52  Pavel Machek <pavel@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  Adding proto_dump_all() function

### 1998-07-09 19:37:39  Pavel Machek <pavel@ucw.cz>

  * sysdep/unix/main.c

  Making SIGUSR1 dump also all protocols.

### 1998-07-09 19:36:05  Pavel Machek <pavel@ucw.cz>

  * lib/birdlib.h

  Adding MIN()/MAX() macros

### 1998-07-09 19:39:04  Pavel Machek <pavel@ucw.cz>

  * Makefile
  * proto/rip/Makefile
  * proto/rip/rip.c
  * proto/rip/rip.h

  Commiting RIP. RIP should somehow listen, will not reply. I needed to
  commit it so that whole thing compiles.

### 1998-07-10 08:32:18  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/timer.h

  Replaced remaining references of clock_t by bird_clock_t.

### 1998-07-10 08:38:29  Martin Mares <mj@ucw.cz>

  * lib/ipv4.c
  * lib/ipv4.h

  Added ipa_class_mask() which guesses netmask for classful addressing.
  For pure A/B/C class addresses it just returns the class netmask, for
  subnets it tries to guess subnet mask. Please make sure the address
  you pass to this function is really a valid host address (i.e., call
  ipa_validate() first).

### 1998-07-10 08:39:34  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  Removed format specification attributes for log() and debug() until
  GCC is fixed to handle custom formats.

### 1998-07-15 19:42:23  Martin Mares <mj@ucw.cz>

  * sysdep/unix/timer.h

  Added comment explaining `now'.

### 1998-07-20 20:05:40  Pavel Machek <pavel@ucw.cz>

  * lib/lists.h

  Reversed buggy patch.

### 1998-07-28 21:44:11  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Rip now includes code to reply, but it is currently broken.

### 1998-07-28 21:42:08  Pavel Machek <pavel@ucw.cz>

  * nest/rt-attr.c

  Do not segfault on iface == NULL.

### 1998-07-30 07:43:45  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Bird's info are now understood by ripquery.

### 1998-08-31 21:13:42  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * nest/rt-table.c

  Route update hook now gets network prefix as well as updated
  route attributes.

### 1998-10-07 19:33:50  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  RIP now somehow listens to main routing table (dont expect it to work)

### 1998-10-13 14:32:18  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  I prefer to have broken drivers than completely stupid ones...
  
  							Linus Torvalds
  
  Rip now uses main routing table properly: entries are stored directly
  into main routing table and we are relying on core to call our's
  compare. That unfortunately broke garbage collecting (and probably
  many more things). It compiles.

### 1998-10-13 14:59:46  Pavel Machek <pavel@ucw.cz>

  * sysdep/unix/sync-if.c

  Strange, on atrey ioctl() does not fill structure, and bird segfaults
  on it. Now we "only" die().

### 1998-10-13 19:57:33  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/sync-if.c

  o  There are cases when SIOCGIFINDEX is defined, but it doesn't work. When
     this happens, don't reject the whole interface, just mark it as index 0.
  o  Removed Pavel's comment about EFAULT and SIGSEGV. EFAULT is a valid return
     code for cases where the buffer is too small.
  o  Commented out the smart interface list size logic temporarily as it seems
     Linux 2.0 SIOCGIFCONF doesn't react to ifc_req==NULL sanely. Replaced it
     by exponential stepping.

### 1998-10-14 13:27:53  Pavel Machek <pavel@ucw.cz>

  * lib/lists.h

  Lists: unneccessary test killed, make code friendly to non-gcc.

### 1998-10-14 13:38:17  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Moved scanning of interfaces, so that they get initialized after all
  routing protocol instances.

### 1998-10-15 15:12:24  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Rip: rip_rta_same added.

### 1998-10-17 10:25:22  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  rip should now correctly listen, but entries will not time out.

### 1998-10-17 11:02:39  Martin Mares <mj@ucw.cz>

  * lib/lists.h

  WALK_LIST_DELSAFE now actually works (it really couldn't since it didn't
  reference list head at all).

### 1998-10-17 11:05:18  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-table.c
  * sysdep/unix/main.c

  Solve chicken-and-egg problems with protocol startup. We now queue all inactive
  protocols and don't send route/interface updates to them and when they come up,
  we resend the whole route/interface tables privately.
  
  Removed the "scan interface list after protocol start" work-around.

### 1998-10-17 11:24:13  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Each protocol now hears even its own routes and needs to make its own
  loop detection. This is needed since both RIP and OSPF handle multiple
  neighbors and they need to redistribute routes learned from each neighbor
  to the remaining ones.

### 1998-10-17 11:26:28  Martin Mares <mj@ucw.cz>

  * nest/iface.h

  Fixed misleading comment.

### 1998-10-18 11:13:16  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * nest/route.h
  * nest/rt-table.c

  After contemplating about RIP route timeouts for a long time, I've implemented
  protocol callbacks for route insertion and deletion from the central table.
  RIP should maintain its own per-protocol queue of existing routes, scan it
  periodically and call rte_discard() for routes that have timed out.

### 1998-10-18 10:49:46  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Implemented `route last modified' time.

### 1998-10-18 11:50:36  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  Removed global pointer to proto_dev.

### 1998-10-18 12:26:02  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Preconfig, postconfig and init hooks can be NULL.

### 1998-10-18 11:53:21  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * sysdep/unix/Modules
  * sysdep/unix/main.c
  * sysdep/unix/sync-if.c
  * sysdep/unix/sync-rt.c
  * sysdep/unix/unix.h

  Split protocol init to building of protocol list and real protocol init.
  Added kernel route table syncer skeleton.

### 1998-10-18 12:50:43  Martin Mares <mj@ucw.cz>

  * sysdep/linux/Modules
  * sysdep/linux/krt-scan.c
  * sysdep/linux/krt-scan.h
  * sysdep/unix/Modules
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.h
  * sysdep/unix/main.c
  * sysdep/unix/sync-rt.c
  * sysdep/unix/unix.h

  Since almost every UNIX system requires different techniques for reading
  the kernel routing table as opposed to modifying it which is approximately
  the same on non-netlink systems, I've split the kernel routing table
  routines to read and write parts. To be implemented later ;-)

### 1998-10-18 12:48:15  Martin Mares <mj@ucw.cz>

  * TODO

  * Please distinguish between DGB() and debug().

### 1998-10-18 22:25:56  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/krt-scan.c

  We parse /proc/net/route and flag RT entries according to it. More to come
  today in the morning...

### 1998-10-18 22:22:28  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h

  Added ipa_from_u32 and ipa_from_u32 for use in the kernel sync code (IPv4 only).
  Don't ever think of using it in routing protocols.

### 1998-10-18 22:24:41  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-fib.c
  * nest/rt-table.c

  o  FIB flags now available for FIB users.
  o  struct network: FIB flags used for kernel syncing.
  o  struct network: `next' field deleted (historical relic).

### 1998-10-19 17:46:45  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  Fixed generation of device routes for unnumbered point-to-point links.

### 1998-10-19 17:52:29  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h

  Basic kernel routing table syncing implemented. Learning of routes installed
  by other programs or the kernel itself is not supported yet, but it's not
  needed for development of other protocols.

### 1998-10-19 17:48:45  Martin Mares <mj@ucw.cz>

  * sysdep/unix/sync-if.c

  Use (SOCK_DGRAM,IPPROTO_IP) socket instead of (SOCK_STREAM,IPPROTO_TCP).
  This is exactly what Linux ifconfig does and seems to be the preferred way.

### 1998-10-19 18:18:12  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO.

### 1998-10-19 17:47:50  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/unix.h

  Exporting fill_in_sockaddr() for use by other unix-dependent code.

### 1998-10-19 17:45:29  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  Proto struct now contain (down | starting | up) state.

### 1998-10-19 18:13:36  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h
  * sysdep/unix/main.c

  Generate router_id automatically if possible (standard "smallest of local
  regular interface addresses" rule).
  
  Protocols should NOT rely on router_id existence -- when router ID is not
  available, the router_id variable is set to zero and protocols requiring
  valid router ID should just refuse to start, reporting such error to the log.

### 1998-10-20 15:13:18  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-dev.c
  * nest/rt-table.c

  Added pointer to network to RTE. The complications with passing NET separately
  aren't worth 4 bytes per RTE.
  
  rte_discard and rte_dump don't need net * as parameter.

### 1998-10-20 15:17:38  Martin Mares <mj@ucw.cz>

  * nest/protocol.h

  Insert/remove hooks return void, not int.

### 1998-10-20 16:12:43  Pavel Machek <pavel@ucw.cz>

  * nest/route.h
  * proto/rip/rip.c
  * proto/rip/rip.h

  RIP now actually talks to itself.

### 1998-10-20 15:47:02  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Beware the NULL route, my son... The bugs that bite, the BIRDs that crash :-)

### 1998-10-20 16:45:53  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  RIP _NOW_ actually talks to itself (workaround core bug: send data
  from other port than we receive at), few FIXME's added.

### 1998-10-20 16:39:04  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c

  Learn static device routes from the kernel (temporary until we can make
  such things configurable).

### 1998-10-26 15:01:04  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  rte_update: Doesn't loop forever when multiple routes point to the same
  destination.

### 1998-10-26 15:24:32  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Previous fix was wrong.

### 1998-10-26 15:35:19  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  RIP now includes notion of interface, and is correctly talking to
  itself on second host. Split horizont is broken.

### 1998-11-16 21:41:21  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c

  Complain loudly if the logging buffer would overflow.

### 1998-11-16 21:40:35  Martin Mares <mj@ucw.cz>

  * lib/printf.c
  * lib/string.h

  Implemented snprintf and similar functions. It took a lot of thinking,
  but the modifications were relatively simple and straightforward.

### 1998-11-21 10:25:34  Martin Mares <mj@ucw.cz>

  * lib/printf.c

  Killed bug in processing of 'h' prefix. Patch taken from linux-2.1.129.

### 1998-11-27 19:28:29  Martin Mares <mj@ucw.cz>

  * sysdep/config.h

  Added path to config file.

### 1998-11-27 19:29:00  Martin Mares <mj@ucw.cz>

  * lib/resource.h

  Removed prototype of rp_free() since this function has never existed.

### 1998-11-27 19:29:27  Martin Mares <mj@ucw.cz>

  * lib/ip.h
  * lib/ipv4.c

  Implemented ip_pton()

### 1998-11-27 19:31:41  Martin Mares <mj@ucw.cz>

  * tools/mergedirs

  Now merges configuration fragments (*.Y) as well.

### 1998-11-27 19:39:16  Martin Mares <mj@ucw.cz>

  * bird.conf

  Experimental config file.

### 1998-11-27 19:37:07  Martin Mares <mj@ucw.cz>

  * Makefile
  * conf/Makefile
  * sysdep/unix/main.c

  Compile and use the new configuration code by default.

### 1998-11-27 19:37:57  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Parser fragment for the core. Now handles only router ID setting.

### 1998-11-27 19:35:10  Martin Mares <mj@ucw.cz>

  * conf/conf.h
  * nest/confile.h
  * nest/proto.c

  Replaced nest/confile.h by conf/conf.h, added a lot of new definitions.

### 1998-11-27 19:35:50  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l

  Lexical analyser.

### 1998-11-27 19:33:53  Martin Mares <mj@ucw.cz>

  * conf/gen_parser.m4

  This script takes configuration fragments and generates full Bison grammar
  from them.

### 1998-11-27 19:38:30  Martin Mares <mj@ucw.cz>

  * proto/rip/config.Y

  Dummy grammar for RIP configuration. Now empty, but must be here since
  it's referenced in the makefiles.

### 1998-11-27 19:36:06  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Base of the parser.

### 1998-11-27 19:33:26  Martin Mares <mj@ucw.cz>

  * conf/gen_keywords.m4

  This script takes configuration fragments and extracts keyword list
  from them.

### 1998-11-27 21:09:57  Martin Mares <mj@ucw.cz>

  * bird.conf
  * conf/confbase.Y
  * nest/config.Y
  * proto/rip/config.Y
  * sysdep/unix/main.c

  First attempt at protocol configuration (now done only for RIP).

### 1998-11-27 21:07:02  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  Added generator of default names.

### 1998-11-27 21:08:37  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Fixed few misspellings and exported instance init as rip_init_instance().

### 1998-11-27 21:34:03  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Oops, forgot to remove a debugging kludge.

### 1998-11-27 21:32:45  Martin Mares <mj@ucw.cz>

  * TODO
  * bird.conf
  * conf/cf-lex.l
  * conf/conf.h
  * conf/confbase.Y
  * nest/config.Y

  Trivial 15-line bison excercise: Implemented expressions including
  user-defined numeric symbols. Whenever possible, use `expr' instead
  of `NUM' to get full express ion power :-)

### 1998-11-29 14:51:47  Martin Mares <mj@ucw.cz>

  * TODO

  `wc -l TODO` decreased.

### 1998-11-29 14:38:34  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h
  * nest/rt-fib.c
  * sysdep/config.h

  Renamed `DEBUG' symbol to `DEBUGGING' to prevent collisions with token
  names and include files.

### 1998-11-29 14:47:24  Martin Mares <mj@ucw.cz>

  * lib/Modules
  * lib/patmatch.c
  * lib/string.h

  Added function for shell-like pattern matching. Will be used for
  matching interface names in protocol-to-iface bindings.

### 1998-11-29 14:40:39  Martin Mares <mj@ucw.cz>

  * bird.conf
  * nest/config.Y
  * nest/protocol.h

  Allow setting debug value and `disabled' flag in protocol definition.

### 1998-11-29 22:01:33  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Handle disabled protocol instances.

### 1998-11-29 21:59:37  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  Created new functions for allocating configuration data:
  
     o  cfg_alloc(size) -- generic memory allocation
     o  cfg_allocu(size) -- unaligned memory allocation
     o  cfg_allocz(size) -- zeroed memory allocation
     o  cfg_strcpy(str) -- allocate a copy of a string
  
  Also fixed a bug in lexing of string literals.

### 1998-11-29 22:01:03  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h

  Added functions for manipulating interface name pattern lists:
  
     o  iface_patt_match(list, iface) -- match interface against list
     o  iface_patts_equal(a, b, c) -- compare whether two pattern lists are
        equal or not. c(x,y) is called for comparison of protocol-dependent
        data.

### 1998-11-29 22:03:58  Martin Mares <mj@ucw.cz>

  * TODO
  * bird.conf
  * conf/confbase.Y
  * nest/config.Y
  * nest/protocol.h
  * nest/rt-dev.c
  * nest/rt-dev.h

  Added configuration of the device internal protocol. This is primarily
  intended to serve as an example of interface pattern list use. As a side
  effect, you can disable generating of device routes by disabling
  this protocol.

### 1998-12-01 16:17:10  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Infinity is now configurable ammount.

### 1998-12-04 11:45:51  Pavel Machek <pavel@ucw.cz>

  * nest/iface.h
  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Rip now has configurable per-interface metric (please rewiev), and few
  more configurable parameters. To do that, union was added into iface_patt.

### 1998-12-06 11:59:18  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h
  * lib/mempool.c
  * lib/resource.h
  * nest/config.Y
  * proto/rip/config.Y

  Name cleanups as suggested by Pavel:
  
  - cfg_strcpy() -> cfg_strdup()
  - mempool -> linpool, mp_* -> lp_*  [to avoid confusion with memblock, mb_*]
  
  Anyway, it might be better to stop ranting about names and do some *real* work.

### 1998-12-06 17:38:42  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Added rule "bool" for boolean switches.

### 1998-12-06 17:40:42  Martin Mares <mj@ucw.cz>

  * bird.conf
  * sysdep/linux/Modules
  * sysdep/linux/krt-scan.Y
  * sysdep/linux/krt-scan.c
  * sysdep/linux/krt-scan.h
  * sysdep/unix/Modules
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.h
  * sysdep/unix/main.c
  * sysdep/unix/sync-rt.c

  Kernel syncer is now configurable. It will probably need some more
  options, but at least basic tuning is possible now.

### 1998-12-06 17:39:08  Martin Mares <mj@ucw.cz>

  * conf/gen_parser.m4

  Fixed bug in CF_ADDTO. How it's possible it has ever worked?

### 1998-12-06 18:21:23  Martin Mares <mj@ucw.cz>

  * Makefile
  * TODO
  * bird.conf
  * nest/protocol.h
  * proto/static/Makefile
  * proto/static/config.Y
  * proto/static/static.c
  * proto/static/static.h

  Added skeleton of static route protocol.

### 1998-12-06 23:11:47  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Removed protocol-specific data in rte for protocol static since no
  such data ever existed.

### 1998-12-06 23:13:31  Martin Mares <mj@ucw.cz>

  * TODO
  * bird.conf
  * proto/static/config.Y
  * proto/static/static.c
  * proto/static/static.h

  All static routes except for device ones should work and appear/disappear
  when their destination comes on/off link. Deserves better testing :)
  
  See example in bird.conf.

### 1998-12-06 23:10:45  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Added new rule for prefix length / netmask.

### 1998-12-06 23:10:28  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  cf_error() now accepts any format strings instead of just an error
  message. Also added extra kludge to get rid of collisions of REJECT
  symbols.

### 1998-12-06 23:11:18  Martin Mares <mj@ucw.cz>

  * nest/iface.c

  Aesthetic fix for neighbor cache debug dump.

### 1998-12-07 10:16:15  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c

  Comparison of kernel reject routes fixed.

### 1998-12-07 10:15:42  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * sysdep/unix/krt.h

  KRF_* flags moved to krt.h as they are internal to kernel syncer,
  fib->pad0,pad1 renamed to x0,x1 and in case of struct net x0 is reserved
  for kernel syncing as well.

### 1998-12-07 21:59:15  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-table.c

  Minor rte/rta interface changes:
  
    o  rte can now contain a pointer to both cached and uncached rta. Protocols
       which don't need their own attribute caching can now just fill-in a rta,
       link it to rte without any calls to attribute cache and call rte_update()
       which will replace rte->attrs by a cached copy.
  
    o  In order to support this, one of previously pad bytes in struct rta
       now holds new attribute flags (RTAF_CACHED). If you call rte_update()
       with uncached rta, you _must_ clear these flags. In other cases rta_lookup()
       sets it appropriately.
  
    o  Added rte_free() which is useful when you construct a rte and then the
       circumstances change and you decide not to use it for an update. (Needed
       for temporary rte's in kernel syncer...)

### 1998-12-08 16:20:13  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.h

  Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterday
  and does things "the right way". Few things are still missing (device
  routes etc.), I'll add them later in the evening.

### 1998-12-08 18:37:58  Martin Mares <mj@ucw.cz>

  * TODO
  * bird.conf
  * sysdep/linux/krt-scan.Y
  * sysdep/linux/krt-scan.c
  * sysdep/linux/krt-scan.h
  * sysdep/unix/Modules
  * sysdep/unix/krt-iface.Y
  * sysdep/unix/krt-iface.h
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.h
  * sysdep/unix/sync-if.c
  * sysdep/unix/sync-rt.c

  Hopefully finished kernel syncer (krt) rewrite:
  
    o  Interface syncing is now a part of krt and it can have configurable
       parameters. Actually, the only one is scan rate now :)
    o  Kernel routing table syncing is now synchronized with interface
       syncing (we need the most recent version of the interface list
       to prevent lots of routes to non-existent destinations from
       appearing). Instead of its own timer, we just check if it's
       route scan time after each iface list scan.
    o  Syncing of device routes implemented.
    o  CONFIG_AUTO_ROUTES should control syncing of automatic device routes.
    o  Rewrote krt_remove_route() to really remove routes :)
    o  Better diagnostics.
    o  Fixed a couple of bugs.

### 1998-12-08 18:30:35  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Added source RTS_DUMMY for temporary routes. They should never appear
  in the main table.

### 1998-12-08 18:31:31  Martin Mares <mj@ucw.cz>

  * proto/static/static.c
  * proto/static/static.h

  Fixed a couple of bugs in static protocol. All static routes except device
  ones seem to work well.

### 1998-12-09 15:22:40  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Initial multicast support (can not work, but skeleton is there)

### 1998-12-09 20:08:57  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  debug() -> DBG() in rip.

### 1998-12-19 11:51:47  Martin Mares <mj@ucw.cz>

  * misc/Makefile
  * misc/cisco2list
  * misc/ips.c
  * misc/stats

  Added several tools for fib hashing function analysis. It turned out
  we can use very simple function which is monotonic with respect
  to re-hashing:
  
  	n ^= n >> 16;
  	n ^= n << 10;
  	h = (n >> (16 - o)) & ((1 << o) - 1);
  
  where o is table order. Statistical analysis for both backbone routing
  table and local OSPF routing tables gives values near theoretical
  optimum for uniform distribution (see ips.c for formulae).
  
  The trick is very simple: We always calculate a 16-bit hash value n and
  use o most significant bits (this gives us monotonity wrt. rehashing
  if we sort the chains by the value of n). The first shift/xor pair
  reduces the IP address to a 16-bit one, the second pair makes higher
  bits of the 16-bit value uniformly distributed even for tables containing
  lots of long prefixes (typical interior routing case with 24-bit or even
  longer prefixes).

### 1998-12-19 21:53:28  Martin Mares <mj@ucw.cz>

  * misc/ips.c

  Variance estimation fixed.

### 1998-12-20 14:01:37  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  When printing a routing table, fib_check() it.

### 1998-12-20 14:01:20  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-fib.c

  Rewrote fib functions to make them insert/delete/asynchronous-walk safe.
  This is implemented in a way similar to lib/slists.h, but it took some
  more effort to make rehashing not disturb the readers. We do it by just
  taking _highest_ k bits of ipa_hash as our hash value and sorting each
  box by whole ipa_hash().
  
  Consult FIB_ITERATE_* macros in nest/route.h.
  
  Implemented fib_check() debugging function and also rewrote the rehashing
  algorithm to use better thresholds and not to waste time by rehashing
  forth and back.

### 1998-12-20 14:26:57  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Added #if 0 to rip_postconfig(), so that it doesn't crash whole daemon
  when RIP is unconfigured.
  
  die() -> bug()

### 1998-12-20 14:29:06  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  log(), die() and bug() messages shound NOT contain trailing newlines.

### 1998-12-20 14:24:35  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/birdlib.h
  * sysdep/unix/log.c

  Finer grained logging levels:
  
  #define L_DEBUG "\001"   /* Debugging messages */
  #define L_INFO "\002"    /* Informational messages */
  #define L_WARN "\003"    /* Warnings */
  #define L_ERR "\004"     /* Errors */
  #define L_AUTH "\005"    /* Authorization failed etc. */
  #define L_FATAL "\006"   /* Fatal errors */
  #define L_TRACE "\002"   /* Protocol tracing */
  #define L_INFO "\003"    /* Informational messages */
  #define L_REMOTE "\004"  /* Remote protocol errors */
  #define L_WARN "\004"    /* Local warnings */
  #define L_ERR "\005"     /* Local errors */
  #define L_AUTH "\006"    /* Authorization failed etc. */
  #define L_FATAL "\007"   /* Fatal errors */
  #define L_BUG "\010"     /* BIRD bugs */
  
  Introduced bug() which is like die(), but with level L_BUG. Protocols
  should _never_ call die() as it should be used only during initialization
  and on irrecoverable catastrophic events like out of memory.
  
  Also introduced ASSERT() which behaves like normal assert(), but it calls
  bug() when assertion fails. When !defined(DEBUGGING), it gets ignored.

### 1998-12-20 14:27:37  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/rt-fib.c
  * nest/rt-table.c
  * proto/static/static.c
  * sysdep/linux/krt-scan.c
  * sysdep/unix/io.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/main.c

  die() -> bug() where appropriate.

### 1998-12-20 13:57:49  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h
  * lib/ipv6.h

  New hash functions according to benchmarks posted yesterday. (The IPv6
  version has not been benchmarked yet due to insufficient test data.)
  Now ipa_hash() returns a uniformely distributed 16-bit value.

### 1998-12-20 13:56:27  Martin Mares <mj@ucw.cz>

  * lib/Modules
  * lib/slists.c
  * lib/slists.h

  Implemented deletion/insertion/asynchronous-walk lists.
  For example of their use, look at comments in lib/slists.h.

### 1998-12-22 18:55:49  Pavel Machek <pavel@ucw.cz>

  * nest/rt-fib.c

  Allow NULL to init_fib().

### 1998-12-22 19:20:43  Pavel Machek <pavel@ucw.cz>

  * nest/rt-fib.c

  Oops, previous modification for passing NULL to fib_init() did not
  compile :-(.

### 1998-12-22 19:41:04  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Bird now uses fib structure instead of linklist.

### 1999-01-09 15:02:11  Martin Mares <mj@ucw.cz>

  * Makefile
  * aclocal.m4
  * configure.in
  * sysdep/autoconf.h.in
  * sysdep/config.h
  * tools/config.guess
  * tools/config.sub
  * tools/install-sh

  First step of "autoconfization". Created a configure script which
  guesses most system-dependent parameters and determines name of system
  configuration file (sysdep/cf/...) with the remaining ones.
  
  To compile BIRD, you now need to do:
  
  	autoconf		# Create configure from configure.in
  	./configure		# Run configure script
  	make			# Compile everything
  
  Configuration files:
  
  	sysdep/config.h		Master config file
  	sysdep/autoconf.h	Parameters determined by configure script
  	sysdep/cf/*.h		Fixed system configuration we're unable
  				to guess.
  
  Makefiles are still the original ones, but this will change soon.

### 1999-01-10 00:18:32  Martin Mares <mj@ucw.cz>

  * Makefile
  * Rules
  * TODO
  * configure.in
  * conf/Makefile
  * conf/cf-lex.l
  * nest/Makefile
  * proto/rip/Makefile
  * proto/static/Makefile
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-v6.h
  * tools/Makefile-top.in
  * tools/Makefile.in
  * tools/Rules.in
  * tools/mergedirs

  New makefiles. Includes support for out-of-source-tree builds.

### 1999-01-10 00:25:50  Martin Mares <mj@ucw.cz>

  * configure.in

  Few last-minute bug fixes.

### 1999-01-10 00:26:11  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Initialize only protocols which are compiled in :)

### 1999-01-12 16:41:34  Pavel Machek <pavel@ucw.cz>

  * nest/iface.h

  Keep protocol data out of iface_patt.

### 1999-01-12 16:50:38  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Make it compile again (stupid makefiles!), make quiet option work
  (multicast/broadcast options are currently unimplemented).

### 1999-01-12 16:40:55  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Patterns expanded in the right way

### 1999-01-12 20:36:18  Martin Mares <mj@ucw.cz>

  * tools/Rules.in

  Fixed trivial bug in naming of `depend' file. Argh.

### 1999-01-15 14:42:55  Pavel Machek <pavel@ucw.cz>

  * tools/mergedirs

  Be a tiny bit more verbose.

### 1999-01-15 14:41:51  Pavel Machek <pavel@ucw.cz>

  * conf/Makefile
  * conf/cf-lex.l
  * conf/conf.h
  * conf/confbase.Y

  Filters added. They are unable to do anything interesting for now
  (with exception of printing integers to screen), but they exist.

### 1999-01-15 14:40:50  Pavel Machek <pavel@ucw.cz>

  * sysdep/unix/main.c

  Properly initialize filters. Also bumped version to 0.0.0 as it
  actually does something.

### 1999-01-15 16:13:51  Pavel Machek <pavel@ucw.cz>

  * conf/cf-lex.l

  #if 1 that creeped into cvs killed.

### 1999-01-15 16:59:26  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Killed duplicate %type for expr.

### 1999-01-15 16:49:17  Pavel Machek <pavel@ucw.cz>

  * conf/Makefile
  * conf/confbase.Y
  * filter/Makefile
  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h
  * sysdep/unix/main.c

  Filters, second try. This time they have their own directory.

### 1999-01-15 16:40:14  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in

  Propagate "depend" target to real top-level Makefile.

### 1999-01-15 17:18:41  Martin Mares <mj@ucw.cz>

  * .cvsignore
  * bird.conf
  * doc/bird.conf.example

  Added bird.conf to .cvsignore and created an example configuration file.
  
  If you want to run bird now, just copy doc/bird.conf.example as bird.conf
  and edit it to suit your needs.

### 1999-01-15 16:52:14  Pavel Machek <pavel@ucw.cz>

  * tools/Rules.in

  Make filters actually compiled.

### 1999-01-15 18:13:55  Pavel Machek <pavel@ucw.cz>

  * Makefile
  * bird.conf
  * filter/f-util.c
  * filter/filter.h
  * sysdep/unix/main.c

  filters_init() renamed to filters_postconfig().

### 1999-01-15 18:04:28  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y

  Original `expr' is back, filter expressions renamed to `term'.
  
  In the future, we'll allow any filter term in place of `expr' and we'll
  just evaluate it immediately, but not now as we have no evaluation
  routines.

### 1999-01-23 21:08:36  Martin Mares <mj@ucw.cz>

  * configure.in
  * tools/mergedirs

  Filter all `Modules' files through C preprocessor, so that they can
  reference BIRD configuration.
  
  By the way: Do you know GCC by default does `#define unix 1'?

### 1999-01-23 21:08:59  Martin Mares <mj@ucw.cz>

  * lib/Modules
  * lib/ipv6.c
  * lib/ipv6.h

  Replaced the old ugly ipv6 compilation hack by a conditional in Modules.

### 1999-02-03 12:28:16  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Few fixes in parsing of filters

### 1999-02-05 21:29:19  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  Added several parentheses to MIN/MAX macros.

### 1999-02-05 21:38:22  Martin Mares <mj@ucw.cz>

  * proto/static/config.Y
  * proto/static/static.c
  * proto/static/static.h

  Modified static router to use new interface.

### 1999-02-05 21:39:21  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.Y
  * sysdep/linux/krt-scan.c
  * sysdep/linux/krt-scan.h

  Synced Linux sysdeps to new interface.

### 1999-02-05 21:38:50  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-iface.Y
  * sysdep/unix/krt-iface.h
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.h
  * sysdep/unix/sync-if.c
  * sysdep/unix/sync-rt.c

  Synced kernel interface to new interface.

### 1999-02-05 21:37:34  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/Makefile
  * conf/cf-lex.l
  * conf/conf.c
  * conf/conf.h
  * nest/bird.h
  * nest/config.Y
  * nest/iface.c
  * nest/iface.h
  * nest/proto.c
  * nest/protocol.h
  * nest/rt-attr.c
  * nest/rt-dev.c
  * nest/rt-dev.h
  * nest/rt-table.c
  * sysdep/unix/main.c

  Implemented new configuration/reconfiguration interface and defined protocol
  state machines. Full explanation will follow soon.

### 1999-02-08 22:50:32  Pavel Machek <pavel@ucw.cz>

  * Makefile
  * proto/rip/rip.c

  Propagate depend into all subdirectories; make rip compile after
  latest mj's changes.

### 1999-02-11 21:18:26  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/Modules
  * sysdep/unix/io.c

  Added simple event scheduling system to avoid recursive calling
  of various callbacks.
  
  Events are just another resource type objects (thus automatically freed
  and unlinked when the protocol using them shuts down). Each event can
  be linked in at most one event list. For most purposes, just use the
  global event list handled by the following functions:
  
  	ev_schedule	Schedule event to be called at the next event
  			scheduling point. If the event was already
  			scheduled, it's just re-linked to the end of the list.
  	ev_postpone	Postpone an already scheduled event, so that it
  			won't get called. Postponed events can be scheduled
  			again by ev_schedule().
  
  You can also create custom event lists to build your own synchronization
  primitives. Just use:
  
  	ev_init_list	to initialize an event list
  	ev_enqueue	to schedule event on specified event list
  	ev_postpone	works as well for custom lists
  	ev_run_list	to run all events on your custom list
  	ev_run		to run a specific event and dequeue it

### 1999-02-11 22:18:36  Martin Mares <mj@ucw.cz>

  * lib/event.c
  * lib/event.h

  Grrr, forgot to commit the event routines themselves :|

### 1999-02-11 22:45:54  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/protocol.h
  * nest/rt-attr.c
  * nest/rt-table.c

  struct proto again contains instance name (a copy of proto->cf->name).

### 1999-02-11 22:59:06  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/event.c
  * nest/proto.c

  Real implementation of protocol state machines. Delayed startup/shutdown
  should work now. Initial feeding of protocols by interfaces/routes is
  done from the event queue to prevent unwanted recursion.

### 1999-02-11 22:51:15  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Run the event queue before writing SIGUSR dumps.

### 1999-02-13 19:13:51  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Fixed bug in FIB_ITERATE_END: it assumed the control variable is named
  "z". I've added an argument specifying name of the variable.
  
  Renamed "again" label in FIB_ITERATE_* to "fis_again" to avoid name
  clashes.

### 1999-02-13 19:15:28  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/rt-table.c

  Implemented real cleanup and pruning of routing table on protocol shutdown.

### 1999-02-13 19:14:16  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Pass new argument to FIB_ITERATE_END.

### 1999-02-13 18:42:00  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/conf.c
  * conf/conf.h
  * nest/iface.c
  * nest/iface.h
  * sysdep/unix/sync-if.c

  config->router_id works again.

### 1999-02-13 20:15:36  Martin Mares <mj@ucw.cz>

  * nest/bird.h
  * nest/proto.c
  * nest/protocol.h
  * sysdep/unix/io.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Perform gracious shutdown upon receipt of SIGTERM. Finally we can
  test the whole protocol shutdown code... :)

### 1999-02-13 19:57:19  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/krt-scan.c

  Squashed one bug in timing of route scans.

### 1999-02-13 20:19:24  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c
  * sysdep/unix/krt-set.c

  Moved sanity check of protocol state during annoucements to rte_announce.

### 1999-02-13 19:43:21  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Synchronize signals to the main select/event/timer loop.
  
  Parse command line options.

### 1999-02-13 20:46:03  Martin Mares <mj@ucw.cz>

  * sysdep/unix/Modules
  * sysdep/unix/krt-set.Y
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.h
  * sysdep/unix/sync-rt.c

  When shutting down, remove all routes (except for RTS_INHERIT and RTS_DEVICE
  routes) from kernel routing tables unless the "persist" switch is set.

### 1999-02-13 20:57:47  Martin Mares <mj@ucw.cz>

  * nest/iface.c

  Don't send any neighbor notifications to protocols being flushed.

### 1999-02-13 21:29:01  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Implemented garbage collection of routing tables to delete orphaned network
  nodes having no routes attached. Such cleanup must be done from event handler
  since most functions manipulating the routing tables expect network entries
  won't disappear from under their hands and it's also probably faster when
  done asynchronously.

### 1999-02-13 20:55:08  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h
  * nest/proto.c

  When protocols go down, prune the neighbor list.

### 1999-02-13 21:00:25  Martin Mares <mj@ucw.cz>

  * proto/static/static.c

  Static protocol doesn't need any shutdown function. Everything gets
  disposed by the core: neighbors, rte's, etc's...

### 1999-02-13 22:13:04  Martin Mares <mj@ucw.cz>

  * TODO

  Cleaned up TODO file.
  
  That's all for today, midnight gets closer.

### 1999-02-13 22:02:21  Martin Mares <mj@ucw.cz>

  * doc/bird.conf.example

  Synced example config with new options.

### 1999-02-13 21:59:48  Martin Mares <mj@ucw.cz>

  * proto/static/static.c

  Implemented static device routes.
  
  Expect for reconfiguration issues, the static protocol is complete now.

### 1999-02-13 21:34:33  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/cf-lex.l

  '#' comments in config files are equivalent to end of line, therefore
  also to implicit ';'.

### 1999-02-13 21:58:53  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/rt-dev.c
  * proto/rip/rip.c

  Parameter order for the proto->if_notify hook was different in the include
  file and different in reality. Decided to use the same order as we do
  for proto->rt_notify (i.e., first new value and second the old one).

### 1999-02-15 13:34:43  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  More rip fixes (config data moved to struct rip_proto_config), still
  not tested.

### 1999-03-01 17:51:29  Martin Mares <mj@ucw.cz>

  * TODO

  Pruned the TODO list.

### 1999-03-01 19:05:58  Martin Mares <mj@ucw.cz>

  * sysdep/linux/Modules
  * sysdep/unix/Modules
  * sysdep/unix/krt.h
  * sysdep/unix/unix.h

  Use traditional Unix route/iface interface only when CONFIG_NETLINK
  is not defined. Also moved declarations of Unix iface logic to krt.h.

### 1999-03-01 20:15:14  Martin Mares <mj@ucw.cz>

  * sysdep/config.h
  * tools/mergedirs

  Include "config.h" instead of "autoconf.h" in all Modules lists to make defines
  in the static portion of configuration includes available as well.

### 1999-03-01 20:17:46  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/cf/linux-21.h
  * sysdep/linux/Modules
  * sysdep/linux/netlink/Modules
  * sysdep/linux/netlink/krt.Y
  * sysdep/linux/netlink/krt.c
  * sysdep/linux/netlink/krt.h

  Added skeletal version of Linux netlink interface. It doesn't work yet,
  but the framework is there and I'll try finish it soon.

### 1999-03-01 20:13:54  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * nest/route.h

  Renamed struct rtattr to struct rta to make things more consistent and
  avoid namespace clashes with <linux/rtnetlink.h>. Other files should
  not be affected since they use 'rta' directly.

### 1999-03-01 21:18:01  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Hopefully ended translating to new interface

### 1999-03-01 22:31:27  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/netlink/krt.c

  Implemented netlink protocol parsing functions. More to come tomorrow.

### 1999-03-01 22:42:47  Martin Mares <mj@ucw.cz>

  * configure.in
  * tools/Rules.in

  If we are compiling with debugging enabled and libefence is available,
  link it to get debugging malloc.

### 1999-03-01 22:30:33  Martin Mares <mj@ucw.cz>

  * lib/socket.h
  * sysdep/unix/io.c

  Added SK_MAGIC type sockets for internal use by system dependent code,
  especially for netlink communication.

### 1999-03-02 13:15:35  Pavel Machek <pavel@ucw.cz>

  * conf/conf.c

  I just don't like files enclosed in <>.

### 1999-03-02 17:20:07  Martin Mares <mj@ucw.cz>

  * proto/static/static.c

  Don't try to install static routes to disconnected neighbors.

### 1999-03-02 16:39:41  Martin Mares <mj@ucw.cz>

  * tools/mergedirs

  Latest changes broke out-of-tree compilation.

### 1999-03-02 17:28:06  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h
  * sysdep/unix/sync-if.c

  Interface logic changes:
  
  o  Introduced IF_LINK_UP flag corresponding to real link state.
  o  Allowed addressless interfaces.
  o  IF_UP is now automatically calculated and set iff the interface
     is administratively up, has link up and has an IP address assigned.
     It may be IF_IGNORED, though (as in case of the loopback).
  o  Any changes which include up/down transition are considered small
     enough to not provoke artificial upping and downing of the interface.
  o  When an interface disappears (i.e., it wasn't seen in the last scan),
     we announce this change only once.
  o  IF_LOOPBACK implies IF_IGNORE.

### 1999-03-02 18:36:09  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h
  * sysdep/unix/sync-if.c

  o  The if_change_too_big_p change was too high-spirited. Fixed.
  o  Introduced if_find_by_index()
  o  Recognizing two types of interface updates: full update (starting with
     if_start_update(), ending with if_end_update(), guaranteed to see
     all existing interfaces) and a partial update (only if_update(),
     usually due to asynchronous interface notifications).

### 1999-03-02 18:37:02  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/netlink/krt.c

  Netlink module supports interface scan on startup. Working on more.

### 1999-03-02 19:49:22  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Avoid segfault

### 1999-03-02 19:49:28  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h

  Add interface for running filters (please comment!), avoid bison warnings

### 1999-03-03 19:49:56  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/bird.conf.example
  * sysdep/cf/linux-20.h
  * sysdep/linux/Modules
  * sysdep/linux/krt-scan.Y
  * sysdep/linux/krt-scan.c
  * sysdep/linux/krt-scan.h
  * sysdep/linux/netlink/Modules
  * sysdep/linux/netlink/krt-iface.h
  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/krt-set.h
  * sysdep/linux/netlink/krt.Y
  * sysdep/linux/netlink/krt.c
  * sysdep/linux/netlink/krt.h
  * sysdep/linux/netlink/netlink.Y
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/Modules
  * sysdep/unix/krt-iface.Y
  * sysdep/unix/krt-iface.c
  * sysdep/unix/krt-iface.h
  * sysdep/unix/krt-set.Y
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h
  * sysdep/unix/main.c
  * sysdep/unix/sync-if.c
  * sysdep/unix/sync-rt.c

  Rewrote the kernel syncer. The old layering was horrible.
  
  The new kernel syncer is cleanly split between generic UNIX module
  and OS dependent submodules:
  
    -  krt.c (the generic part)
    -  krt-iface (low-level functions for interface handling)
    -  krt-scan (low-level functions for routing table scanning)
    -  krt-set (low-level functions for setting of kernel routes)
  
  krt-set and krt-iface are common for all BSD-like Unices, krt-scan is heavily
  system dependent (most Unices require /dev/kmem parsing, Linux uses /proc),
  Netlink substitues all three modules.
  
  We expect each UNIX port supports kernel routing table scanning, kernel
  interface table scanning, kernel route manipulation and possibly also
  asynchronous event notifications (new route, interface state change;
  not implemented yet) and build the KRT protocol on the top of these
  primitive operations.

### 1999-03-03 19:33:54  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h
  * nest/rt-dev.c

  Introduced protocol priority (all 'normal' protocols should use the
  default zero priority). No more "kernel syncer initialized before
  device routes" problems.

### 1999-03-03 20:55:35  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * sysdep/unix/krt.c

  Fix several things I broke today.

### 1999-03-03 20:40:51  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Added a hack forcing protocols with priority>0 to be started up
  immediately. Grrr, need to find a real solution some day.

### 1999-03-03 20:56:33  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  EFence helped to find using of already free rte's in rt_prune().

### 1999-03-03 20:57:29  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Netlink scans routes...

### 1999-03-04 11:36:26  Martin Mares <mj@ucw.cz>

  * configure.in
  * lib/resource.c
  * lib/resource.h
  * lib/xmalloc.c
  * sysdep/autoconf.h.in
  * sysdep/unix/main.c
  * tools/Makefile.in
  * tools/Rules.in

  Use dmalloc instead of EFence when available (dmalloc has lot of improvements
  over EFence and also hopefully smaller memory overhead, but sadly it's non-free
  for commercial use).
  
  If the DMALLOC_OPTIONS environment variable is not set, switch on `reasonable'
  checks by default.
  
  Also introduced mb_allocz() for cleared mb_alloc().

### 1999-03-04 11:40:05  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c

  Converted some mb_alloc/bzero pairs to mb_allocz.

### 1999-03-04 11:39:24  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Initialize allocated struct proto :-)

### 1999-03-04 14:23:32  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Although there are still heaps of FIXME's, Netlink works.
  
  To build BIRD with Netlink support, just configure it with
  
  	./configure --with-sysconfig=linux-21
  
  After it will be tested well enough, I'll probably make it a default
  for 2.2 kernels (and rename it to linux-22 :)).

### 1999-03-04 18:36:18  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h

  KRT: Implemented asynchronous route / interface state notifications
  (via Netlink). Tweaked kernel synchronization rules a bit. Discovered
  locking bug in kernel Netlink :-)
  
  Future plans: Hunt all the bugs and solve all the FIXME's.

### 1999-03-04 19:00:31  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.c

  Fixed processing of !krt_capable() routes. Converted device route decisions
  to the krt_capable mechanism as well.

### 1999-03-08 20:30:06  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h

  Filters are now a tiny bit stronger (if is actually working ;-)

### 1999-03-09 14:45:27  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Resolved conflicts, you no longer need to wrap constants in const()

### 1999-03-09 14:44:43  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y

  Added '=' to operator list

### 1999-03-09 22:27:43  Ondrej Filip <feela@network.cz>

  * configure.in
  * nest/proto.c
  * nest/protocol.h
  * proto/ospf/Makefile
  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  
  Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.

### 1999-03-17 10:19:07  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h

  accept & reject should now work

### 1999-03-17 10:20:23  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Don't segfault on unknown interface.

### 1999-03-17 13:13:18  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * proto/rip/rip.c

  Removed the `rta_same' hook since it's no longer needed (all protocols
  needing some local information should use extended attrs and cached
  rta's).

### 1999-03-17 13:04:33  Pavel Machek <pavel@ucw.cz>

  * filter/f-util.c

  Compilation fix for mj.

### 1999-03-17 13:09:09  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Implemented extended route attributes and all related functions.

### 1999-03-17 13:05:25  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Initialize pointers to functions so that code is actually alive.

### 1999-03-17 14:29:39  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h

  A couple of filter tweaks:
  
     o  Introduced struct filter which serves as an external reference
        to filter. Using struct symbol for this is unwise since it doesn't
        allow extra information attached to the filter and it also forces
        all filters to be named.
     o  Implemented config rule 'filter' which matches either named filter
        or an embedded unnamed filter (`{ <filter> }').
     o  Fixed totally bogus comment at the top of filter.h.
     o  Added a missing prototype for f_run() to filter.h.

### 1999-03-17 15:01:07  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  rte_update: Check sanity of incoming entries. Throw out (and log) all routes
  to bogus prefixes and non-local routes to host scope addresses.

### 1999-03-17 14:31:26  Martin Mares <mj@ucw.cz>

  * doc/bird.conf.example
  * nest/config.Y
  * nest/proto.c
  * nest/protocol.h
  * nest/rt-table.c

  Allow input and output filters (only accept/reject style as we didn't define
  modifying filters yet) to be attached to protocol instances.

### 1999-03-24 09:23:34  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Removed our declaration of RTPROT_BIRD since Alexey has assigned
  us a real protocol number in 2.2.4 kernel.

### 1999-03-26 21:35:28  Martin Mares <mj@ucw.cz>

  * configure.in

  Don't compile OSPF by default.

### 1999-03-26 21:33:36  Martin Mares <mj@ucw.cz>

  * nest/iface.c

  Don't try to manipulate neighbor lists for copied interface structures.
  This avoids few nasty references to free memory.

### 1999-03-26 21:50:43  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h
  * nest/rt-dev.c
  * proto/rip/rip.c
  * proto/static/static.c

  Added everything protocols need to know about multiple routing tables,
  i.e. struct proto now contains field 'table' pointing to routing table
  the protocol is attached to. Use this instead of &master_table.
  
  Modified all protocols except the kernel syncer to use this field.

### 1999-03-26 21:44:38  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/bird.conf.example
  * nest/config.Y
  * nest/rt-dev.c
  * sysdep/linux/netlink/krt-iface.h
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c
  * sysdep/unix/krt-iface.c
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Moved to a much more systematic way of configuring kernel protocols.
  
    o  Nothing is configured automatically. You _need_ to specify
       the kernel syncer in config file in order to get it started.
    o  Syncing has been split to route syncer (protocol "Kernel") and
       interface syncer (protocol "Device"), device routes are generated
       by protocol "Direct" (now can exist in multiple instances, so that
       it will be possible to feed different device routes to different
       routing tables once multiple tables get supported).
  
  See doc/bird.conf.example for a living example of these shiny features.

### 1999-03-26 21:38:02  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Allow different instances of the same protocol with identical preferences.

### 1999-03-26 21:37:29  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h
  * nest/proto.c
  * nest/protocol.h

  Slightly better generator of default protocol instance names.

### 1999-03-27 22:51:05  Martin Mares <mj@ucw.cz>

  * configure.in
  * sysdep/cf/README
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h
  * sysdep/cf/linux-v6.h
  * sysdep/linux/netlink/netlink.c

  Cleaned up system configuration files -- removed few obsolete parameters,
  documented the remaining ones (sysdep/cf/README).
  
  Available configurations:
  
     o  linux-20: Old Linux interface via /proc/net/route (selected by default
  		on pre-2.1 kernels).
     o  linux-21: Old Linux interface, but device routes handled by the
  		kernel (selected by default for 2.1 and newer kernels).
     o  linux-22: Linux with Netlink (I play with it a lot yet, so it isn't
  		a default).
     o  linux-ipv6: Prototype config for IPv6 on Linux. Not functional yet.

### 1999-03-29 19:14:43  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h
  * sysdep/unix/Modules
  * sysdep/unix/endian.h

  Moved all system-dependent #include's containing endianity conversion
  functions to sysdep header endian.h.

### 1999-03-29 19:04:14  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/confbase.Y
  * doc/bird.conf.example
  * nest/config.Y

  After today's lengthy discussions about filter syntax, let's clean up
  whitespace/semicolon rules for whole config file:
  
     o  All non-zero amounts of whitespace are equivalent to single space
        (aka `all the whitespace has been born equal' ;-)).
     o  Comments count as whitespace.
     o  Whitespace has no syntactic signifance (it can only separate lexical
        elements).
     o  Consequence: line ends are no longer treated as `;'s.
     o  Every declaration must be terminated by an explicit `;' unless
        or by a group enclosed in `{' and `}'.

### 1999-03-29 19:13:36  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  #define NULL if not defined by system includes.

### 1999-03-29 20:21:28  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * conf/conf.h
  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h

  Update of filters towards new interface.

### 1999-03-29 20:14:00  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt.c

  Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems.

### 1999-03-29 20:14:33  Martin Mares <mj@ucw.cz>

  * lib/mempool.c
  * lib/resource.c
  * nest/proto.c
  * sysdep/unix/main.c

  Clarify resource dumps and include them in the main debugging dump.

### 1999-03-29 20:26:32  Martin Mares <mj@ucw.cz>

  * configure.in

  Prefer `gm4' over `m4' (due to BSD et al.).

### 1999-03-29 20:28:25  Martin Mares <mj@ucw.cz>

  * filter/f-util.c

  Please don't commit debugging code which makes BIRD exit before anything
  actually starts to happen. Grrr.

### 1999-03-29 19:56:32  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Added FIXME: If a strange interface appears, ignore it instead of only
  writing an error message...

### 1999-03-29 19:35:47  Martin Mares <mj@ucw.cz>

  * lib/mempool.c
  * lib/resource.h

  Added lp_flush() which flushes contents of a linear pool, leaving all the
  memory available for subsequent allocations from the same pool. Both flushing
  and re-using the memory costs just few instructions.

### 1999-03-29 20:46:00  Martin Mares <mj@ucw.cz>

  * TODO

  Updated the TODO list.

### 1999-03-29 20:33:45  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-iface.h
  * sysdep/linux/netlink/netlink.c

  Remember that we can run device syncer without kernel syncer
  and vice versa now.

### 1999-04-01 15:33:52  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * tools/Makefile-top.in
  * tools/Makefile.in

  First few FreeBSD portability fixes.

### 1999-04-01 15:35:15  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-set.c

  Portability fixes.

### 1999-04-01 19:23:59  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-set.c

  Argh, the fix was wrong.

### 1999-04-02 11:45:55  Pavel Machek <pavel@ucw.cz>

  * sysdep/unix/main.c

  Believe it or not, printf()'s does not work too much without this one.

### 1999-04-02 13:38:54  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-iface.c

  Fixed `too many interfaces' cases.

### 1999-04-03 13:00:52  Martin Mares <mj@ucw.cz>

  * sysdep/cf/README
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h

  Defined CONFIG_SELF_CONSCIOUS whenever the kernel scanner is able
  to distinguish between our own routes and alien ones.

### 1999-04-03 13:01:58  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/protocol.h

  Added new protocol hook for dumping of protocol-dependent route
  attributes.
  
  Please implement in all protocols.

### 1999-04-03 13:05:18  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-table.c
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h

  More changes to the kernel syncer.
  
  o  Now compatible with filtering.
  o  Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS
     systems (on the others it's impossible to get it semantically correct).
  o  Learning now stores all of its routes in a separate fib and selects
     the ones the kernel really uses for forwarding packets.
  o  Better treatment of CONFIG_AUTO_ROUTES ports.
  o  Lots of internal changes.

### 1999-04-05 20:10:31  Martin Mares <mj@ucw.cz>

  * filter/f-util.c
  * filter/filter.h

  Several filter changes. (Pavel, please check if they are OK.)
  
     o  Changed parameters of f_run. Changed rtein+rteout pair to rte pointer
        passed by reference, added ea_list of temporary attrs again passed
        by reference and finally added a pointer to memory pool for storing
        temporary data (new ea_lists's, temporary rta's etc.).
     o  Re-ordered result codes, so that all accepts come before all rejects.
     o  Introduced FILTER_ACCEPT and FILTER_REJECT dummy values (will be
        used in protocol configurations).
     o  Added filter_name() which returns name of a filter or ACCEPT/REJECT
        for the dummies.

### 1999-04-05 20:17:59  Martin Mares <mj@ucw.cz>

  * nest/protocol.h

  Added some new protocol hooks (look at the comments for better explanation):
  
  	make_tmp_attrs		Convert inline attributes to ea_list
  	store_tmp_attrs		Convert ea_list to inline attributes
  	import_control		Pre-import decisions

### 1999-04-05 20:25:03  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-table.c

  Routing table core changes to support full route filtering:
  
  o  Introduced rte_cow() which should be used for copying on write the
     rte's in filters. Each rte now carries a flag saying whether it's
     a real route (possessing table linkage and other insignia) or a local
     copy. This function can be expected to be fast since its fast-path
     is inlined.
  o  Introduced rte_update_pool which is a linear memory pool used for
     all temporary data during rte_update. You should not reference it directly
     -- instead use a pool pointer passed to all related functions.
  o  Split rte_update to three functions:
  
  	rte_update	The front end: handles all checking, inbound
  			filtering and calls rte_recalculate() for the
  			final version of the route.
  	rte_recalculate	Update the table according to already filtered route.
  	rte_announce	Announce routing table changes to all protocols,
  			passing them through export filters and so on.
  
     The interface has _not_ changed -- still call rte_update() and it will
     do the rest for you automagically.
  o  Use new filtering semantics to be explained in a separate mail.

### 1999-04-05 20:15:31  Martin Mares <mj@ucw.cz>

  * doc/bird.conf.example
  * nest/config.Y
  * nest/proto.c

  Changed syntax of attaching filters to protocols to hopefully the final
  version:
  
  	EXPORT <filter-spec>	for outbound routes (i.e., those announced
  				by BIRD to the rest of the world).
  	IMPORT <filter-spec>	for inbound routes (i.e., those imported
  				by BIRD from the rest of the world).
  
  where <filter-spec> is one of:
  
  	ALL			pass all routes
  	NONE			drop all routes
  	FILTER <name>		use named filter
  	FILTER { <filter> }	use explicitly defined filter
  
  For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes
  the kernel protocol, so that you need to add EXPORT ALL to get the previous
  configuration of kernel syncer (as usually, see doc/bird.conf.example for
  a bird.conf example :)).

### 1999-04-05 20:06:02  Martin Mares <mj@ucw.cz>

  * conf/conf.c

  Use a more reasonable pool chunk size: 4080 bytes seem to be a good
  approximation of a integral fraction of page size even if both malloc
  overhead and chunk header space is counted.

### 1999-04-06 21:31:03  Martin Mares <mj@ucw.cz>

  * lib/ipv4.c

  ip_pton: Avoid modification of the string we're converting.

### 1999-04-07 12:11:08  Pavel Machek <pavel@ucw.cz>

  * Makefile
  * bird.conf
  * conf/cf-lex.l
  * conf/confbase.Y
  * filter/Makefile
  * filter/config.Y
  * filter/f-util.c
  * filter/filter.c
  * filter/filter.h

  Filters upgraded - a bit. Moved code to filter.c because it is where
  it belongs. (f-util.c stays there for auxiliary and non-important things.)

### 1999-04-07 14:25:56  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-iface.c

  Portability fixes.

### 1999-04-10 09:45:08  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Decrease number of warnings.

### 1999-04-11 19:28:16  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in
  * tools/Makefile.in

  Added new target "tags" to generate a tag table for Emacs.
  
  Also made "depend" work before the tree is compiled first time.

### 1999-04-12 12:07:15  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Oops, typo.

### 1999-04-12 12:01:59  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  In case no startup function is defined, don't try to launch it.

### 1999-04-12 14:57:46  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/socket.h
  * sysdep/unix/io.c

  Fixed a couple of bugs in handling of multicast sockets.
  
  See comments in lib/socket.h for a detailed guide on how to use them.

### 1999-04-12 15:27:56  Martin Mares <mj@ucw.cz>

  * aclocal.m4
  * configure.in
  * sysdep/autoconf.h.in
  * sysdep/unix/io.c

  Use `struct ip_mreqn' instead of `struct ip_mreq' for multicast
  operations on 2.1/2.2 kernels. This allows passing of real interface
  indexes instead of referencing interfaces by their IP addresses which
  fails badly in presence of unnumbered interfaces.
  
  Unfortunately, this structure is not visible with glibc 2.0 as it provides
  its own networking headers :-(  Both libc5 and glibc 2.1 should be OK.

### 1999-04-12 17:20:50  Martin Mares <mj@ucw.cz>

  * configure.in

  Oops, a typo in previous struct ip_mreqn changes...

### 1999-04-12 17:21:11  Martin Mares <mj@ucw.cz>

  * tools/Rules.in

  Use $(CC) instead of gcc even when generating dependencies.

### 1999-04-12 17:27:21  Martin Mares <mj@ucw.cz>

  * aclocal.m4

  Cosmetic message fix.

### 1999-04-12 18:07:05  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-iface.c

  Ignore alias interfaces (some day, we will treat them as pure secondary
  interface addresses).

### 1999-04-12 18:01:07  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-dev.c
  * nest/rt-table.c
  * proto/rip/rip.c
  * proto/static/static.c
  * sysdep/cf/README
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.c

  Removed TOS support. This simplifies many things a lot.

### 1999-04-12 19:58:18  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * conf/cf-lex.l
  * conf/confbase.Y
  * filter/Makefile
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/tree.c

  Sets of integers now actually work. Sets of IP will work as soon as
  compare function is ready.

### 1999-04-12 20:26:06  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h

  Added ipa_compare as requested.

### 1999-04-12 23:54:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Not all I mean serious. Almost everything will change.
  Changes: struct ospf_iface draft, various constants added...

### 1999-04-13 00:24:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  A small init change to avoid core dump.

### 1999-04-13 00:46:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Small change to stop using loopback.

### 1999-04-13 11:40:04  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Sets of IP addresses should work, now. (From now on it is also
  possible to write if 1.2.3.4 < 1.2.3.5, but I'm not sure if it is good
  for anything.)

### 1999-04-13 18:21:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  IPv6 changes.

### 1999-04-13 19:27:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Change in ospf_iface. (My bad understanding of lists manipulation.)

### 1999-04-13 21:46:20  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Added wait timer for eligible BCAST & NBMA interface.

### 1999-04-14 11:21:02  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Use SO_BINDTODEVICE if we're using old multicast API (i.e., struct ip_mreq
  and not ip_mreqn). This should get multicasts on unnumbered PtP links work.

### 1999-04-14 10:49:31  Martin Mares <mj@ucw.cz>

  * proto/ospf/config.Y

  Removed redeclaration of `idval', so that it compiles :)

### 1999-04-14 11:09:55  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.c

  A couple of OSPF fixes:
  
  o  ((flags & IF_CHANGE_UP) == IF_CHANGE_UP)   ->   (flags & IF_CHANGE_UP)
  o  bcopy  ->  memcpy   (bcopy is unportable)
  o  Ifdeffed out add_tail(&(ifa->sk_list),NODE mcsk) -- the node in socket
     structure is for internal use by the resource manager only. (Now, the
     debugging dump of open sockets looks sane :-)).

### 1999-04-14 12:29:47  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Multicasts once again: When using SO_BINDTODEVICE, don't specify IP address
  of the interface.

### 1999-04-14 11:39:07  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Next attempt to get SO_BINDTODEVICE work :)

### 1999-04-14 12:47:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Small bug fix in memcpy.

### 1999-04-14 15:13:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Redesigned struct ospf_iface & new struct ospf_sock.

### 1999-04-14 21:11:24  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  SImplify code a tiny bit.

### 1999-04-19 18:41:56  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * conf/confbase.Y
  * doc/bird.conf.example
  * filter/config.Y
  * filter/filter.c
  * proto/rip/rip.c

  Updated filters: they now actually see IP/pxlen of net being filtered,
  gateway, and who told us, so they can do usefull jobs from now on.

### 1999-04-22 13:12:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Work on hello continues.

### 1999-04-27 13:04:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Just changes of comments.

### 1999-04-27 12:56:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Hello timer implemented.

### 1999-04-27 16:03:17  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/ipv4.c

  Recognize site scope for IPv4 addresses (prefixes reserved for private
  networks).
  
  Removed old #ifndef logic which was used to avoid IPv4/IPv6 clashes
  before conditionals in Modules lists were introduced.

### 1999-05-06 21:38:11  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/iface.c
  * nest/iface.h
  * nest/protocol.h
  * nest/rt-dev.c
  * proto/ospf/ospf.c
  * proto/rip/rip.c
  * proto/static/static.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c
  * sysdep/unix/krt-iface.c

  I rewrote the interface handling code, so that it supports multiple
  addresses per interface (needed for example for IPv6 support).
  
  Visible changes:
  
  o  struct iface now contains a list of all interface addresses (represented
     by struct ifa), iface->addr points to the primary address (if any).
  o  Interface has IF_UP set iff it's up and it has a primary address.
  o  IF_UP is now independent on IF_IGNORED (i.e., you need to test IF_IGNORED
     in the protocols; I've added this, but please check).
  o  The if_notify_change hook has been simplified (only one interface pointer
     etc.).
  o  Introduced a ifa_notify_change hook. (For now, only the Direct protocol
     does use it -- it's wise to just listen to device routes in all other
     protocols.)
  o  Removed IF_CHANGE_FLAGS notifier flag (it was meaningless anyway).
  o  Updated all the code except netlink (I'll look at it tomorrow) to match
     the new semantics (please look at your code to ensure I did it right).
  
  Things to fix:
  
  o  Netlink.
  o  Make krt-iface interpret "eth0:1"-type aliases as secondary addresses.

### 1999-05-07 13:46:16  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/iface.c
  * sysdep/linux/netlink/netlink.c

  Netlink support for secondary interface addresses.

### 1999-05-10 21:37:39  Martin Mares <mj@ucw.cz>

  * lib/Modules
  * lib/checksum.c
  * lib/checksum.h

  Added packet checksumming code. Watch the comments for an explanation.

### 1999-05-11 09:53:45  Pavel Machek <pavel@ucw.cz>

  * proto/rip/Makefile
  * proto/rip/auth.c
  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Mensi updaty do ripu. Pridana passwd autentikace (netestovano).

### 1999-05-11 09:50:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  
  Better logging output. Added 'struct proto *' info 'struct ospf iface'.

### 1999-05-11 15:34:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  OSPF RX implementation starts....

### 1999-05-13 09:18:36  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Checksum control added.

### 1999-05-14 08:50:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  *** empty log message ***

### 1999-05-14 08:46:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Netmask checking for hello packets added.

### 1999-05-14 18:03:09  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/ipv4.c
  * lib/ipv4.h
  * proto/ospf/ospf.c

  Added ip_skip_header() and modified OSPF to use it.

### 1999-05-17 20:16:53  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c
  * proto/rip/rip.c
  * proto/static/static.c
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt.c

  Kill remaining master_table relics in KRT code.
  
  Make all protocols pass routing table to rte_update and rte_discard.

### 1999-05-17 20:14:52  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * conf/confbase.Y
  * doc/bird.conf.example
  * nest/config.Y
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-table.c

  From now we support multiple tables. The master_table variable is
  definitely gone. Both rte_update() and rte_discard() have an additional
  argument telling which table should they modify.
  
  Also, rte_update() no longer walks the whole protocol list -- each table
  has a list of all protocols connected to this table and having the
  rt_notify hook set. Each protocol can also freely decide (by calling
  proto_add_announce_hook) to connect to any other table, but it will
  be probably used only by the table-to-table protocol.
  
  The default debugging dumps now include all routing tables and also
  all their connections.

### 1999-05-17 20:06:19  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h
  * filter/config.Y

  Implemented two new symbol handling functions:
  
    o  cf_define_symbol() -- it assigns a meaning to a symbol, bailing
       out if it already has one.
    o  cf_find_symbol() -- finds symbol by name and creates it if not found.
  
  Also modified filter/config.Y to make use of the first function.

### 1999-05-21 14:29:44  Martin Mares <mj@ucw.cz>

  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h

  Added CONFIG_MULTIPLE_TABLES whereever appropriate.

### 1999-05-21 14:28:44  Martin Mares <mj@ucw.cz>

  * tools/Rules.in

  Don't forget to export CPPFLAGS to GCC. :)

### 1999-05-21 14:09:06  Martin Mares <mj@ucw.cz>

  * TODO
  * configure.in

  Added --with-sysinclude to allow explicitly setting where kernel includes
  reside, so that you can easily switch between 2.0 and 2.2 ones.
  
  Check existence of <linux/rtnetlink.h> for linux-22 configs to make sure
  we're using the correct set of includes.

### 1999-05-21 14:29:23  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt.h

  Removed one unused structure field.

### 1999-05-24 17:29:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  IP header test added.

### 1999-05-24 17:37:45  Ondrej Filip <feela@network.cz>

  * lib/ipv4.c

  
  Small bug in ipv4_skip_header.

### 1999-05-24 18:22:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  ifa->time split into wait_timer and hello_timer. I will send hello in WAITING state.

### 1999-05-24 21:17:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  struct ospf_neigbor added. Neigbor state machine implementation can start.

### 1999-05-24 21:49:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h

  
  struct ospf_neigbor corrected.

### 1999-05-26 14:24:32  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y

  Added notion of datetime

### 1999-05-26 14:24:57  Pavel Machek <pavel@ucw.cz>

  * nest/Makefile
  * nest/config.Y
  * nest/password.c
  * nest/password.h

  Skeleton for password handling, currently I only build structures and
  do nothing more advanced for them

### 1999-05-26 14:22:41  Pavel Machek <pavel@ucw.cz>

  * TODO

  Better date/time input methods need to be done

### 1999-05-26 14:37:07  Pavel Machek <pavel@ucw.cz>

  * nest/config.Y
  * nest/password.h

  Change format of passwords (less ;'s) and fix password.h to allow
  multiple inclusions.

### 1999-05-26 14:36:34  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Example of password list usage.

### 1999-05-26 14:37:47  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Make rip use newly defined password lists.

### 1999-05-31 13:21:07  Martin Mares <mj@ucw.cz>

  * lib/socket.h

  Added sk_send_buffer_empty().

### 1999-05-31 17:12:00  Pavel Machek <pavel@ucw.cz>

  * nest/config.Y
  * nest/password.c
  * nest/password.h

  Added PASSIVE option to paswwords.

### 1999-05-31 17:12:38  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c
  * proto/rip/rip.h

  Modified rip to new password handling in nest. Now it at least compiles.

### 1999-05-31 17:39:44  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in

  Added missing quotes.

### 1999-05-31 18:24:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Sending and receving of hello pkts works. No I will start building neighbor
  database.

### 1999-05-31 18:56:20  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Some RX_Hello checks added.

### 1999-05-31 19:16:22  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c
  * proto/rip/rip.c
  * proto/rip/rip.h

  Incoming side of authentication done but untested. Right handling of
  filters in rip.

### 1999-05-31 19:07:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  IP socket priority (sock->tos) added. Constant taken from tcpdump of CISCO
  and gated.

### 1999-05-31 19:15:32  Pavel Machek <pavel@ucw.cz>

  * nest/route.h

  Added extended attributes for rip.

### 1999-05-31 18:55:35  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * nest/rt-table.c
  * proto/rip/rip.c
  * sysdep/unix/krt.c

  Added extra argument to rt_update hook which contains a pointer to the
  temporary attribute list.

### 1999-05-31 19:15:52  Pavel Machek <pavel@ucw.cz>

  * nest/password.c
  * nest/password.h

  Added password_strncpy() which pads destination with zeros.

### 1999-05-31 19:22:40  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c

  Cleanup of warnings

### 1999-05-31 20:28:46  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Fix potential multicasting bug.

### 1999-05-31 19:43:08  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Kill duplicity between rif and rif_patt.

### 1999-05-31 19:37:16  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Small fixes to rip.

### 1999-05-31 20:30:16  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Added FIXME: mode broadcast randombly corrupts memory.
  
  Small cleaning and bugfixes.

### 1999-05-31 20:34:48  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Set corectly destination address for RIP multicast. Broadcasting &
  multicasting rip actually works [broadcasting is kind of hard to turn
  it on, through].

### 1999-06-01 13:57:24  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/rip/rip.c

  Defined IP_PREC_INTERNET_CONTROL and made all (well, both :)) protocols
  use it when creating sockets.

### 1999-06-01 15:31:43  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Grrr, the "obvious fix" to multicasting code from yesterday was
  fundamentally wrong. Reversed.

### 1999-06-01 16:35:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  
  Detecting of new neighbor added. It starts inactivity timer.

### 1999-06-01 17:29:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Neigbor deleting done. (I have some problems with timers, so it does not
  send hello.)

### 1999-06-02 16:31:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Fixed stupid bug with hello vs inactim timers.

### 1999-07-01 09:11:21  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * conf/conf.h
  * filter/config.Y
  * filter/filter.c

  Function calling in filters works - somehow. Calling syntax is
  currently very ugly, beware. Variables are not really local - that
  needs to be fixed.

### 1999-08-03 19:29:27  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/io.c
  * sysdep/unix/timer.h

  Added functions for parsing and formatting of dates.

### 1999-08-03 19:29:57  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/checksum.c

  Faster checksum function.

### 1999-08-03 19:33:22  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/bird.conf.example
  * nest/route.h
  * nest/rt-table.c
  * sysdep/cf/README
  * sysdep/cf/linux-22.h
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/krt-iface.h
  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/krt-set.h
  * sysdep/linux/netlink/netlink.Y
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-iface.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h

  Kernel route syncer supports multiple tables.
  
  The changes are just too extensive for lazy me to list them
  there, but see the comment at the top of sysdep/unix/krt.c.
  The code got a bit more ifdeffy than I'd like, though.
  
  Also fixed a bunch of FIXME's and added a couple of others. :)

### 1999-08-03 19:31:11  Martin Mares <mj@ucw.cz>

  * TODO
  * filter/filter.h

  Added missing structure declarations.

### 1999-08-03 19:35:01  Martin Mares <mj@ucw.cz>

  * TODO

  Pruned the TODO list.

### 1999-08-03 19:30:49  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * nest/iface.c
  * nest/iface.h
  * nest/rt-dev.c
  * proto/rip/config.Y

  Cleaned up handling of interface patterns:
  
     o  Parsing of interface patterns moved to generic code,
        introduced this_ipatt which works similarly to this_iface.
     o  Interface patterns now support selection by both interface
        names and primary IP addresses.
     o  Proto `direct' updated.
     o  RIP updated as well, it also seems the memory corruption
        bug there is gone.

### 1999-08-03 19:34:26  Martin Mares <mj@ucw.cz>

  * configure.in
  * doc/bird.conf.example
  * nest/protocol.h
  * nest/route.h

  Implemented a Table-to-Table protocol a.k.a The Pipe.

### 1999-08-03 19:31:30  Martin Mares <mj@ucw.cz>

  * lib/lists.h

  Added macros for walking lists backwards.

### 1999-08-03 19:36:06  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/cf-lex.l
  * conf/conf.c
  * conf/confbase.Y
  * lib/Modules
  * lib/ip.h
  * lib/ipv6.c
  * lib/ipv6.h
  * nest/config.Y
  * nest/iface.c
  * sysdep/cf/linux-v6.h
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c

  Basic support for IPv6.  The system-dependent part doesn't work yet,
  but the core routines are there and seem to be working.
  
     o  lib/ipv6.[ch] written
     o  Lexical analyser recognizes IPv6 addresses and when in IPv6
        mode, treats pure IPv4 addresses as router IDs.
     o  Router ID must be configured manually on IPv6 systems.
     o  Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts.
     o  Fixed few places where ipa_(hton|ntoh) was called as a function
        returning converted address.

### 1999-08-03 19:38:48  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Ouch, how could I write this?

### 1999-08-03 19:36:51  Martin Mares <mj@ucw.cz>

  * lib/ipv6.c
  * sysdep/unix/io.c
  * sysdep/unix/unix.h

  Support for IPv6 sockets. How nice one doesn't have to ifdef around
  ten years of API evolution :-)

### 1999-08-03 19:57:43  Martin Mares <mj@ucw.cz>

  * proto/pipe/Makefile
  * proto/pipe/config.Y
  * proto/pipe/pipe.c
  * proto/pipe/pipe.h

  Forgot to do a `cvs add', grr.

### 1999-08-03 19:37:37  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/netlink.Y
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/unix.h

  Taught Netlink how to behave in IPv6 world.

### 1999-08-03 19:30:20  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/krt-iface.c

  Changes to interface handling on traditional Unices:
  
    o  Aliases are interpreted as secondary addresses.
    o  When the system doesn't supply interface indices, generate
       our ones.

### 1999-08-03 19:33:45  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Allow announces of rte's to protocols in FS_FEEDING state.
  Else, we would get chicken-egg problems in the table-to-table protocol.

### 1999-08-03 19:31:54  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  Protocol engine bug fixes:
  
     o  Make proto_config->table always point to the right
        table even if it should be the default one.
     o  When shutting down, kill protocol in reverse order
        of their priority.
     o  When stopping a protocol down, disconnect it from
        routing tables immediately instead of waiting
        for the delayed protocol flush event.
  
  Also added a protocol instance counter (used by KRT code
  in very magic ways).

### 1999-08-09 13:03:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Some interface state machine changes. I found some problem in RFC,
  trying to conntact authors.

### 1999-08-09 17:58:01  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  (Backup) Designated Router election added.

### 1999-08-09 18:11:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Bug in election fixed.

### 1999-08-09 18:34:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Bug fix in checksum calculation.

### 1999-08-09 18:49:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  "My own IP problem" fixed.

### 1999-08-09 18:59:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Multiple "hton problems" fixed. Now we're in EXSTART state.

### 1999-08-10 12:06:45  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Small bux fixes. A neigh_chstate added.

### 1999-08-16 10:32:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Better dumping.

### 1999-08-17 20:47:40  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h
  * sysdep/unix/io.c

  Added a function for generating 32-bit random numbers.

### 1999-08-18 13:19:33  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/auth.c
  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Few fixme's fixed in rip (will not crash any more on request for
  sending routing table - hopefully).
  
  Next few steps in md5 authentication (not yet complete).

### 1999-08-20 09:59:39  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * proto/rip/auth.c

  Few FIXME's removed from auth, few FIXME's added to filter.

### 1999-08-24 14:42:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Preparing to send DD packets.

### 1999-08-24 18:32:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  A structure for receiving DD seq packets added.

### 1999-08-25 18:44:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  DD packet receiving in ExStart.

### 1999-09-29 14:24:58  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Case arg { 1: printf "one"; } works. You can not use two commands
  after one label, yet.

### 1999-09-29 14:23:11  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Make configuration use new case statement.

### 1999-10-02 11:06:44  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Failure to set socket TOS is not a fatal error.

### 1999-10-02 10:55:19  Martin Mares <mj@ucw.cz>

  * lib/mempool.c

  Don't forget to free large blocks.

### 1999-10-02 10:44:48  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * nest/config.Y
  * nest/password.c
  * proto/rip/auth.c
  * proto/rip/rip.c

  Obvious bugs in authentication fixed.

### 1999-10-07 13:38:26  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  FIXME's added. Hopefully fixme list is now complete for filters.

### 1999-10-07 14:09:50  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Added examples of pairs and prefixes

### 1999-10-07 14:10:08  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Added constants of type prefix and pair, added their printing

### 1999-10-11 14:19:29  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Untested IPv6 support added. I do not know if it compiles in IPV6 mode.

### 1999-10-12 06:27:42  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Filters: permit variables of prefix types, cleanup around
  variables. TODO list added, hopefully complete. Use new features of
  filters in bird.conf

### 1999-10-12 07:46:08  Martin Mares <mj@ucw.cz>

  * lib/ipv4.h
  * proto/rip/rip.c

  Changed syntax of ip_class_mask, the old one was stupid.

### 1999-10-12 13:04:50  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  FIXME's for rip added.
  
  Will we ever able to generate packets saying "route 1.2.3.4 using someone else"?

### 1999-10-18 21:48:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Huge changes. Neighbor and interface state machines rewritten.
  It should be cleaner now, I'm preparing for file splitting.
  Maybe I added some minor bugs. :-(

### 1999-10-19 16:13:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Minor changes and bug fixes. Preparing for Exchange and higher states.

### 1999-10-28 21:03:36  Pavel Machek <pavel@ucw.cz>

  * Makefile
  * bird.conf
  * conf/confbase.Y
  * filter/config.Y
  * filter/filter.c
  * filter/tree.c

  switch() { } done right.

### 1999-10-29 10:08:09  Martin Mares <mj@ucw.cz>

  * configure.in
  * sysdep/autoconf.h.in
  * sysdep/config.h
  * tools/mergedirs

  Configure PATH_CONTROL_SOCKET.
  autoconf.h is now written to obj/sysdep, the source tree is hopefully
  completely read-only now.

### 1999-10-29 09:44:44  Martin Mares <mj@ucw.cz>

  * client/Makefile
  * client/client.c
  * client/client.h
  * sysdep/unix/Modules
  * sysdep/unix/client-main.c
  * tools/Makefile.in
  * tools/Rules.in

  Added skeleton of the client. Does nothing, but at least compiles.

### 1999-10-29 10:08:27  Martin Mares <mj@ucw.cz>

  * lib/mempool.c

  Simplify handling of free chunks.

### 1999-10-29 12:08:49  Martin Mares <mj@ucw.cz>

  * lib/event.c
  * lib/event.h
  * nest/proto.c
  * nest/rt-table.c

  Events now return a value.  If it's non-zero, the event is re-queued
  for processing in next event cycle. This can be used to prevent background
  actions (hint: user commands) from hogging the CPU for too long time.

### 1999-10-29 12:10:10  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/cli.c
  * nest/cli.h
  * sysdep/unix/client-main.c
  * sysdep/unix/main.c

  First steps of the Command Line Interface: I/O routines.

### 1999-10-29 12:09:29  Martin Mares <mj@ucw.cz>

  * lib/socket.h
  * sysdep/unix/io.c
  * sysdep/unix/unix.h

  Implemented unix-domain sockets.

### 1999-10-31 15:43:44  Martin Mares <mj@ucw.cz>

  * nest/cli.c
  * nest/cli.h
  * sysdep/config.h
  * sysdep/unix/main.c
  * tools/Makefile.in

  The CLI I/O functions work as desired.

### 1999-10-31 17:47:47  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.c
  * conf/conf.h
  * conf/confbase.Y
  * conf/gen_keywords.m4
  * conf/gen_parser.m4
  * nest/cli.c
  * nest/cli.h
  * nest/config.Y

  Parse CLI commands. We use the same parser as for configuration files (because
  we want to allow filter and similar complex constructs to be used in commands
  and we should avoid code duplication), only with CLI_MARKER token prepended
  before the whole input.
  
  Defined macro CF_CLI(cmd, args, help) for defining CLI commands in .Y files.
  The first argument specifies the command itself, the remaining two arguments
  are copied to the help file (er, will be copied after the help file starts
  to exist). This macro automatically creates a skeleton rule for the command,
  you only need to append arguments as in:
  
  	CF_CLI(STEAL MONEY, <$>, [[Steal <$> US dollars or equivalent in any other currency]]): NUM {
  		cli_msg(0, "%d$ stolen", $3);
  	} ;
  
  Also don't forget to reset lexer state between inputs.

### 1999-10-31 17:48:21  Martin Mares <mj@ucw.cz>

  * doc/reply_codes

  Started a list of CLI reply codes.

### 1999-11-03 12:59:38  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Working on db des receiving.
  Preparing for building LDA database.

### 1999-11-03 22:23:01  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Filters now do not allow function (int arg; int arg2; ).

### 1999-11-03 22:21:26  Pavel Machek <pavel@ucw.cz>

  * conf/cf-lex.l

  You should not follow next two times.

### 1999-11-04 13:29:43  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-dev.c
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c

  Renamed attr->attrs to attr->eattrs.

### 1999-11-04 13:33:30  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Possibility to access first extended attributes.

### 1999-11-04 14:05:40  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Fixed comments about shift/reduce conflicts.

### 1999-11-04 13:53:47  Martin Mares <mj@ucw.cz>

  * conf/conf.h

  Silly bug.

### 1999-11-04 14:03:45  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Add possibility of local variables.

### 1999-11-04 13:51:52  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  Symbols are not scoped.

### 1999-11-04 14:26:18  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Reject packets which are not authenticated.
  
  Set correct nexthop on outgoing packets.

### 1999-11-04 14:03:36  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Use local variables to test that functionality.

### 1999-11-04 14:39:51  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  FIXME's updated. One fixme is remaining for correct RIPv4. Wow.

### 1999-11-10 10:48:19  Martin Mares <mj@ucw.cz>

  * doc/status.tex

  Added project status report for KSVI.

### 1999-11-10 11:52:36  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Added timeout for routes (which means proper expiring of routes) added
  few fixmes.

### 1999-11-10 12:27:01  Martin Mares <mj@ucw.cz>

  * proto/ospf/Makefile
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Added LSA hashing table (parts of code stolen from rt-fib.c, but
  heavily simplified since we don't need asynchronous walking).

### 1999-11-10 12:44:07  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * conf/confbase.Y
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Enumerational types, defined keyword added.

### 1999-11-10 13:07:18  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * filter/config.Y
  * filter/filter.c

  No more shift/reduce conflicts.

### 1999-11-10 13:05:57  Martin Mares <mj@ucw.cz>

  * filter/config.Y

  Shift/reduce conflicts in IF/THEN/ELSE rules solved.

### 1999-11-10 13:44:29  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.h

  First try on enumerational types.
  
  Mj's noassoc removed: this brings back shift/reduce conflict but
  it makes parser actually work. Mj please check it. IF/THEN/ELSE still
  will not work.

### 1999-11-10 13:59:13  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * filter/config.Y

  Enums do not work, this is testcase.

### 1999-11-10 16:06:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Sending DBDES packet in EXSTART done.

### 1999-11-11 13:27:59  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Shift/reduce conflict goes away _and_ if/then/else works.

### 1999-11-11 13:55:39  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  Fixed order of arguments for function call.
  
  Enumeration types should work once CF_ENUM() is ready.
  
  Created test.conf for testing of filters. (I'm currently thinking
  about ./tests in root directory which will just fire all available
  tests...)

### 1999-11-15 11:36:22  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  An example of how to define enums.

### 1999-11-15 11:34:51  Martin Mares <mj@ucw.cz>

  * conf/conf.h

  SYM_STAT is gone.

### 1999-11-15 11:36:09  Martin Mares <mj@ucw.cz>

  * filter/config.Y

  ENUM's are now recognized as constants.

### 1999-11-15 11:35:41  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/confbase.Y
  * conf/gen_keywords.m4
  * conf/gen_parser.m4

  Defined CF_ENUM.

### 1999-11-17 11:16:15  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Commented out nexthop selection, see the comment.

### 1999-11-17 12:00:21  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y
  * conf/gen_parser.m4
  * nest/cli.c
  * nest/cli.h

  Command line interface now works.

### 1999-11-17 12:01:11  Martin Mares <mj@ucw.cz>

  * lib/event.c
  * lib/event.h

  ev_run() now returns whether the event has been requeued or not.
  ev_run_list() now returns number of events which remain in the list.

### 1999-11-17 12:14:44  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Added some temporary examples of how to define CLI commands (search for CF_CLI).
  
  To define a new command, just add a new rule to the gramar:
    CF_CLI(COMMAND NAME, arguments, help-args, help-text) {
  	what-should-the-command-do
  	} ;
  where <arguments> are appended to the RHS of the rule, <help-args> is the
  argument list as shown in the help and <help-text> is description of the
  command for the help.
  
  <what-should-the-command-do> is a C code snippet to be executed. It should
  not take too much time to execute. If you want to print out a lot of
  information, you can schedule a routine to be called after the current
  buffer is flushed by making cli->cont point to the routine (see the
  TEST LONG command definition for an example); if the connection is closed
  in the meantime, cli->cleanup gets called.
  
  You can access `struct cli' belonging to the connection you're currently
  servicing as this_cli, but only during parse time, not from routines scheduled
  for deferred execution.
  
  Functions to call inside command handlers:
    cli_printf(cli, code, printf-args) -- print text to CLI connection,
  	<code> is message code as assigned in doc/reply_codes or a negative
  	one if it's a continuation line.
    cli_msg(code, printf-args) -- the same for this_cli.
  
  Use 'sock -x bird.ctl' for connecting to the CLI until a client is written.

### 1999-11-17 12:04:24  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  If the main event queue is not empty, call select() with zero timeout, so
  that the events are ran again after the FD's are checked. This allows us
  to schedule I/O checks between processing of user commands.

### 1999-11-17 13:15:01  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Fixed bug receiving dbdes packets in EXSTART state.

### 1999-11-17 13:28:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Another bugfix. (In EXCHANGE state.)

### 1999-11-17 14:58:21  Martin Mares <mj@ucw.cz>

  * TODO

  Added skeleton of command tree. Please inspect.

### 1999-11-17 15:50:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/Makefile
  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h
  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/packet.h
  * proto/ospf/topology.h

  ospf.c and ospc.h splitted into various files.

### 1999-11-18 13:21:52  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  You can now print enum.

### 1999-11-18 13:42:51  Martin Mares <mj@ucw.cz>

  * nest/route.h

  DEF_PREF_UKR and DEF_PREF_SINK removed.

### 1999-11-18 14:29:10  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Filters: first parts of extended attributes being read-write. It can
  not actually work since I do not do rta/rte cow, yet.

### 1999-11-18 14:01:36  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/f-util.c
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  Split inst->code into inst->code and inst->aux. Both are only 16 bit,
  so aux is suitable for storing type but not much more.

### 1999-11-18 14:41:29  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Allow EA type to be set to 'undefined' which overrides all further definitons
  of that EA in the same list and causes ea_find() to fail unless you add
  EA_ALLOW_UNDEF to the second argument.
  
  ea_sort (resp. ea_do_prune()) removes all undef'd attributes from the list.
  
  I hope this works :)

### 1999-11-18 14:41:43  Martin Mares <mj@ucw.cz>

  * TODO

  More CLI plans...

### 1999-11-24 12:16:31  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  Check that prefixes are really prefixes + fix config file to
  comply. (:-( 1.2.3.4/8 looks nicer than 1.0.0.0/8).

### 1999-11-24 12:09:58  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Sorry, previous commit did not even compile.

### 1999-11-24 12:04:32  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Filters: write access to dynamic attributes should actually work. It
  would be nice to find method of testing such beasts.

### 1999-11-25 12:01:45  Pavel Machek <pavel@ucw.cz>

  * nest/route.h
  * proto/rip/rip.c

  Fix timeouts. Triggered updates are not done, yet.

### 1999-11-25 13:42:49  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Filters: fix rta access to use ->aux field.

### 1999-11-25 13:38:25  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/rip.c
  * proto/rip/rip.h

  Triggered updates should now actually work. Fixed metric=16 -> time it
  out logic.

### 1999-11-25 14:54:08  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/auth.c
  * proto/rip/rip.c
  * proto/rip/rip.h

  Bugfixes: select right password for password authentication, do not
  try to process authentication blocks as datablocks, make it possible
  to add data at end of packet. Password authentication should actually work.

### 1999-11-25 15:03:12  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/auth.c
  * proto/rip/rip.c
  * proto/rip/rip.h

  md5 authentication seems to work.

### 1999-11-25 15:34:51  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y
  * nest/cli.h

  cli_msg() moved to cli.h, so that it can be used outside the parser.

### 1999-11-25 15:34:20  Martin Mares <mj@ucw.cz>

  * lib/Modules
  * lib/ip.c
  * lib/ip.h

  Added ip_scope_text() for translating of scopes to strings.

### 1999-11-25 15:35:30  Martin Mares <mj@ucw.cz>

  * doc/reply_codes
  * nest/config.Y
  * nest/iface.c
  * nest/iface.h
  * nest/proto.c
  * nest/protocol.h

  Added few basic commands: show status, show interfaces [summary],
  show protocols (incomplete).

### 1999-11-30 10:35:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  
  Inicialisation of Topology Graph (TG).

### 1999-11-30 12:57:14  Martin Mares <mj@ucw.cz>

  * doc/reply_codes
  * nest/config.Y
  * nest/iface.c
  * nest/proto.c
  * nest/protocol.h

  `show interfaces' and `show protocols' works.

### 1999-11-30 12:56:52  Martin Mares <mj@ucw.cz>

  * nest/cli.c

  Don't use continuation shortcuts until real client is written.

### 1999-11-30 14:04:09  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/reply_codes
  * nest/cli.c
  * nest/proto.c
  * nest/protocol.h

  Remember protocol instance in proto_config and use that for
  `show protocols <name>'.

### 1999-11-30 14:01:39  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/timer.h

  Moved TIME_INFINITY to timer.h, so that it's publicly available.

### 1999-11-30 14:03:36  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.c
  * conf/conf.h

  Lexer supports fallback symbol tables and uses them to recognize
  symbols from global config when parsing CLI commands.
  
  cf_lex_init_tables() is now called automatically inside the lexer.

### 1999-11-30 14:02:27  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Use TIME_INFINITY for initialization of password entries instead
  of 2000000000 (BTW who wrote that???)

### 1999-12-01 10:28:39  Martin Mares <mj@ucw.cz>

  * configure.in

  Use linux-22 configuration with all 2.2.x and 2.3.x kernels. This means
  you need to have your kernel compiled with netlink routing messages enabled.
  If it doesn't work for you, use --with-sysconfig=linux-21 and let me know
  what's going wrong.

### 1999-12-01 11:59:24  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h

  Introduced new protocol-dependent integer field `aux' to struct neighbor.

### 1999-12-01 11:59:00  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/timer.h

  Added tm_format_reltime() for formatting of relative time quantities.

### 1999-12-01 12:00:15  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  `show protocols' now shows time of last state change and protocol-dependent
  status information (obtained via newly introduced hook protocol->get_status).

### 1999-12-01 12:01:41  Martin Mares <mj@ucw.cz>

  * proto/pipe/pipe.c

  Implemented get_status for the pipe protocol (reports name of the other
  side of the pipe).
  
  Please do so for your protocols as well.

### 1999-12-01 11:39:58  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  FIXME's cleaned up: I have actually fixed things without killing
  comments.
  
  There are no urgent FIXME's in filters. Perhaps we should start with
  documentation?

### 1999-12-01 12:52:57  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c
  * proto/rip/rip.c
  * proto/rip/rip.h

  Actually check sequence numbers.

### 1999-12-01 12:54:23  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * filter/filter.c

  accept should behave as return, not running any commands after it.

### 1999-12-01 13:44:42  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Stupid bug (essentially while(1) loop) occuring sometimes during start
  of bird fixed.

### 1999-12-01 15:07:06  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  Make ACCEPT/REJECT actually return the result...

### 1999-12-01 15:08:32  Martin Mares <mj@ucw.cz>

  * nest/protocol.h

  Added get_route_info and show_route_data hooks to struct protocol.
  Please implement them.

### 1999-12-01 15:07:56  Martin Mares <mj@ucw.cz>

  * nest/cli.c

  Reset temporary parser data before parsing, not afterwards. This enables
  deferred CLI command handlers to store their temporary data in the CLI
  parsing pool.

### 1999-12-01 15:10:21  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/confbase.Y
  * doc/reply_codes
  * nest/config.Y
  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-table.c

  Added dumping of routing tables (`show route'). This includes filtering.

### 1999-12-01 15:17:24  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO file.

### 1999-12-02 12:04:39  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l

  Avoid `default rule can be matched' warning in CLI state.

### 1999-12-02 14:03:25  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  I tried to turn on the YYERROR_VERBOSE switch, but bison is buggy as hell,
  so it doesn't even compile. Turned it again off and added a comment on it.

### 1999-12-02 14:04:44  Martin Mares <mj@ucw.cz>

  * TODO
  * filter/config.Y
  * nest/config.Y

  Implemented `show route where <condition>' command.
  
  Pavel, please check my addition to filter/config.Y.

### 1999-12-03 11:10:50  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Renamed SHOW PROTOCOLS VERBOSE to SHOW PROTOCOLS ALL to be consistent
  with the other commands.

### 1999-12-03 11:40:45  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  Added proto_get_named() to be used in CLI commands to get protocol instance
  of a given protocol with optionally given name. See `show static' for an
  example.

### 1999-12-03 11:41:23  Martin Mares <mj@ucw.cz>

  * doc/reply_codes
  * proto/static/config.Y
  * proto/static/static.c
  * proto/static/static.h

  Implemented `show static'. It's a relatively good example of how to write
  show commands for other protocols.

### 1999-12-04 23:28:56  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Don't forget to send an OK reply after dumping debug information.

### 1999-12-04 23:17:29  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/config.Y

  Added DEBUG commands.
  
  Removed CLI tests, real commands now serve as much better examples.

### 1999-12-06 12:34:45  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/cli.c
  * nest/cli.h
  * nest/config.Y
  * sysdep/unix/client-main.c
  * sysdep/unix/log.c

  Implemented echoing of log messages to CLI connections. Just try `echo all'.

### 1999-12-06 13:43:47  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Added tracked_fopen() which is a fopen registered in resource database.
  Will be used for log files.

### 1999-12-06 13:45:56  Martin Mares <mj@ucw.cz>

  * doc/bird.conf.example
  * lib/birdlib.h
  * sysdep/unix/Modules
  * sysdep/unix/config.Y
  * sysdep/unix/log.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Logging is now configurable. You can define multiple log outputs (to both
  files and syslog) and assign lists of message categories to each of them.

### 1999-12-06 13:44:45  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * conf/conf.h
  * nest/proto.c

  Moved initialization of protocol list to proto.c.
  
  Added sysdep configuration hooks.

### 1999-12-06 13:51:04  Martin Mares <mj@ucw.cz>

  * sysdep/unix/config.Y
  * sysdep/unix/io.c
  * sysdep/unix/log.c

  Allow logging to stderr as well.

### 1999-12-06 13:50:50  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Added type `g' for void (general) pointer.

### 1999-12-08 10:15:40  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Separated bird.conf and bird.conf for testing filters.

### 1999-12-08 10:15:51  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Make rta. syntax optional.

### 1999-12-08 12:51:15  Pavel Machek <pavel@ucw.cz>

  * doc/bird.conf.example

  Put rip options into config file.

### 1999-12-08 13:20:19  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  - Path to control socket is selectable via command-line option.
  - die() when control socket open failed.

### 1999-12-08 12:50:57  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Make bird.conf that does not crash machine when you run bird as root.

### 1999-12-08 12:51:26  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  Disallow rta.net syntax.

### 1999-12-08 12:51:45  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Fix timing and fix endianity in metrics.

### 1999-12-08 14:16:13  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h
  * nest/rt-table.c
  * sysdep/unix/krt.c

  Except for special protocols (nowadays only the kernel syncer), don't
  export host and link scope routes.

### 1999-12-08 13:33:44  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Added hooks for show route.
  Fixed passing metrics around routing tables.

### 1999-12-08 15:12:54  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c

  Temporary work-arounds for multicast problems. Needs further investigation.

### 1999-12-09 18:54:20  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/locks.c
  * nest/locks.h
  * sysdep/unix/main.c

  Added universal locking mechanism which will solve problems
  with protocols wanting to use the same port on the same interface
  during reconfiguration time.
  
  How to use locks: In the if_notify hook, just order locks for the
  interfaces you want to work with and do the real socket opening after the
  lock hook function gets called. When you stop using the socket, close
  it and rfree() the lock.
  
  Please update your protocols to use the new locking mechanism.

### 1999-12-16 12:18:33  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/rip/rip.c

  TODO entries and FIXME's.

### 1999-12-16 12:18:19  Martin Mares <mj@ucw.cz>

  * filter/filter.h

  Kicked off F_MODIFY (not generated nor used)

### 1999-12-16 13:23:32  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/krt-iface.c

  Handle cases when SIOCGIFINDEX is defined, but doesn't work (new glibc
  with 2.0 kernels).

### 1999-12-16 13:14:02  Martin Mares <mj@ucw.cz>

  * sysdep/linux/sysio.h
  * sysdep/unix/io.c

  Better order of includes.
  
  set_inaddr() moved to sysio.h.

### 1999-12-16 13:14:32  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.h

  Added missing semicolon.
  
  rip.h compiles in IPv6 mode, rip.c still doesn't.

### 1999-12-16 13:13:22  Martin Mares <mj@ucw.cz>

  * lib/ipv6.c
  * lib/ipv6.h

  ipv6_compare() accepts non-lvalue arguments as well. This makes filters
  compile with IPv6.

### 1999-12-16 13:06:13  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/cf/README
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h
  * sysdep/linux/Modules
  * sysdep/linux/sysio.h
  * sysdep/unix/io.c
  * sysdep/unix/krt-iface.c

  Tried to clean up multicast handling. Now we don't try to guess
  multicast abilities depending on definedness of symbols and use hard-wired
  system-dependent configuration defines instead.
  
  Please test whereever you can.

### 1999-12-16 12:59:09  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Avoid touching F_MODIFY, it no longer exists.

### 1999-12-16 13:51:43  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/iface.c
  * nest/iface.h
  * nest/route.h
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-iface.c

  Minor cleanups.

### 1999-12-18 20:41:19  Pavel Machek <pavel@ucw.cz>

  * doc/bird.html

  This is first version of documentation. Be sure to take a close look
  at it, and it would be very nice if you wrote at least introductions
  to your chapters...

### 1999-12-18 20:39:53  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Added fixme.

### 1999-12-20 19:14:06  Pavel Machek <pavel@ucw.cz>

  * doc/bird.html

  Few more entries for bird documentation

### 2000-01-05 00:03:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Preparing for building LS databaze. Huh, why is it so complicated? :-(
  
  Adding definition of some constants.

### 2000-01-16 16:44:50  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/conf.c
  * conf/conf.h
  * doc/reply_codes
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-table.c
  * proto/pipe/pipe.c
  * sysdep/unix/config.Y
  * sysdep/unix/krt.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  First attempt on dynamic reconfiguration. There are still lots of bugs
  and problems to solve, but the hardest part works.

### 2000-01-16 16:40:57  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  Don't forget to set proto->min_scope = SCOPE_HOST.

### 2000-01-16 17:39:16  Martin Mares <mj@ucw.cz>

  * lib/event.c

  No more problems when events get scheduled during event processing.

### 2000-01-16 17:49:32  Martin Mares <mj@ucw.cz>

  * TODO
  * filter/filter.c
  * filter/filter.h
  * nest/proto.c

  Added filter_same() for comparision of two filters.
  
  Pavel, please implement this as soon as possible.

### 2000-01-16 17:40:26  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/conf.c
  * conf/conf.h
  * doc/reply_codes
  * nest/bird.h
  * nest/proto.c
  * nest/protocol.h
  * nest/rt-table.c
  * sysdep/unix/config.Y
  * sysdep/unix/main.c

  Converted shutdown to a kind of reconfiguration, it's no more handled
  as a exception in protocol state machines. Introduced a `shutdown'
  CLI command. Killed few reconfiguration bugs.

### 2000-01-16 23:30:06  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/reply_codes
  * nest/config.Y
  * nest/iface.c
  * nest/proto.c
  * nest/protocol.h

  Reworked proto lists -- each proto is now in two lists: the global one
  (proto_list) and per-type one (original lists). A lot of things simplified.
  
  Implemented `disable', `enable' and `restart' CLI commands.

### 2000-01-16 23:36:19  Martin Mares <mj@ucw.cz>

  * sysdep/unix/config.Y

  Wording changes.

### 2000-01-17 00:20:45  Martin Mares <mj@ucw.cz>

  * proto/pipe/pipe.c

  Pipe protocol supports reconfiguration.

### 2000-01-17 00:20:17  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  Device protocol supports reconfiguration.

### 2000-01-17 00:19:58  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Don't forget changing proto->name to point to name in new configuration
  (to avoid the name being freed with the old config).
  
  Also remember to add proto_pipe to protocol_list.

### 2000-01-16 23:36:53  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l

  When a quoted string is encountered, don't forget to copy it to the
  config pool before passing it to the parser.

### 2000-01-17 11:17:33  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-iface.h
  * sysdep/unix/krt-iface.h
  * sysdep/unix/krt.c

  Reconfiguration for device protocol.

### 2000-01-17 11:52:50  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/cf-lex.l
  * conf/conf.h
  * nest/config.Y
  * nest/protocol.h
  * nest/rt-dev.c
  * proto/ospf/ospf.c
  * proto/pipe/pipe.c
  * proto/rip/rip.c
  * proto/static/static.c
  * proto/static/static.h
  * sysdep/unix/krt.Y
  * sysdep/unix/krt.c

  Separated `official protocol names' used in status dumps from name templates
  used for automatic generation of instance names.
  
  	protocol->name is the official name
  	protocol->template is the name template (usually "name%d"),
  		should be all lowercase.
  
  Updated all protocols to define the templates, checked that their configuration
  grammar includes proto_name which generates the name and interns it in the
  symbol table.

### 2000-01-17 12:40:00  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/netlink/netlink.c

  Removed point-to-point tunnel hack as it breaks ordinary PtP interfaces.
  I'll find a better solution soon.

### 2000-01-17 12:38:50  Martin Mares <mj@ucw.cz>

  * proto/static/static.c

  Static protocol supports full dynamic reconfiguration.

### 2000-01-17 12:38:07  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Moved initlialization of protocol lists to global init. Argh.

### 2000-01-18 10:42:45  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  protocol->startup_counter no longer exists.

### 2000-01-18 10:39:30  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.h
  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/krt-set.h
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h

  Kernel route syncer now supports dynamic reconfiguration. Also it doesn't
  depend on the startup counter hack now and uses a zero-time timer instead
  to make itself scheduled after normal protocol startup.

### 2000-01-18 11:01:03  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c
  * nest/protocol.h
  * nest/rt-dev.c
  * sysdep/unix/krt.c

  Killed protocol->priority. Protocol startup should be clean and hack-free now.
  It seems everything still works (except for disable/enable/restart which hangs
  sometimes, but it's another story).

### 2000-01-19 11:52:32  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/iface.h

  Killed a couple of bugs in the neighbor cache.
  
  Manual disable/enable/restart/shutdown/reconfiguration of protocols
  no longer hangs on loops in neighbor lists :)

### 2000-01-19 12:30:19  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/cf-lex.l
  * conf/conf.h
  * doc/reply_codes
  * nest/Makefile
  * nest/cli.h
  * nest/cmds.c
  * nest/cmds.h
  * nest/config.Y

  Split off general commands to cmds.c.
  
  Added `show symbols' command which dumps whole symbol table together
  with symbol types etc.

### 2000-01-19 14:37:56  Martin Mares <mj@ucw.cz>

  * client/client.c
  * conf/Makefile
  * conf/gen_commands.m4

  Generate a list of all commands and their help texts for the client to use.

### 2000-01-19 15:07:00  Martin Mares <mj@ucw.cz>

  * configure.in
  * client/Makefile
  * client/client.c
  * client/client.h
  * client/commands.c
  * client/util.c
  * sysdep/unix/Modules
  * sysdep/unix/client-main.c
  * tools/Makefile.in

  Put client on a stony ground. The whole client is going to be system-specific
  (the current version UNIX-specific) anyway, so it's useless to try splitting it
  to sysdep and generic part. Instead of this, configure script decides (based on
  system type and user's wish) what (if any) client should be built and what
  autoconfiguration it requires. Also, the client provides its own die/bug/...
  functions.

### 2000-01-20 13:13:30  Martin Mares <mj@ucw.cz>

  * configure.in
  * client/client.c
  * tools/Makefile.in
  * tools/Rules.in

  Configure, link and use the readline library.

### 2000-01-26 12:07:18  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Output made prettier.

### 2000-01-26 14:12:18  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Do not send empty packets in rip.

### 2000-01-26 21:28:53  Pavel Machek <pavel@ucw.cz>

  * doc/bird.html
  * filter/config.Y

  Updated docs about filters, and added fixme.

### 2000-01-31 17:44:22  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/filter.h
  * filter/test.conf
  * filter/tree.c

  filter_same() implemented. Don't bet on it, yet.

### 2000-02-08 19:12:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Malloc() changed to cfg_alloc().

### 2000-02-08 19:24:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  LSA type changed from u16 to u8.

### 2000-02-08 22:13:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  Other LS struct added.

### 2000-02-08 22:43:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  Hash table structure redesigned.

### 2000-02-14 17:32:50  Martin Mares <mj@ucw.cz>

  * tools/Rules.in

  Don't make dependencies in client directory if the client is not
  configured in.

### 2000-02-15 12:18:37  Martin Mares <mj@ucw.cz>

  * TODO
  * client/client.c
  * client/client.h
  * client/util.c

  First usable version of the client. No command completion and similar nifty
  features yet, but it works.

### 2000-02-17 22:00:13  Martin Mares <mj@ucw.cz>

  * client/client.c
  * client/client.h
  * client/commands.c
  * conf/gen_commands.m4

  Client: Online help works (Cisco style: just press `?' at the end of a line).

### 2000-02-17 23:37:16  Martin Mares <mj@ucw.cz>

  * client/client.c
  * client/client.h
  * client/commands.c
  * nest/config.Y

  Completion works. Unfortunately, we have to access a couple of internal
  symbols of libreadline :-(

### 2000-02-23 23:14:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  Structures for router LSA added.

### 2000-02-23 23:13:27  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.h

  Better debugging.

### 2000-02-23 23:13:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Better debuging.

### 2000-02-23 23:23:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Small change for debugging.

### 2000-02-24 00:26:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Area work and router LSA starts when interface goes up.

### 2000-02-24 18:46:24  Martin Mares <mj@ucw.cz>

  * configure.in

  Hmmm, libreadline 2.1 seems to be the oldest version we work with.

### 2000-02-24 18:43:23  Martin Mares <mj@ucw.cz>

  * configure.in

  Moan loudly if libreadline is an old version which doesn't support
  callbacks.

### 2000-02-25 11:15:26  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  Get rid of 'ab'-s, added return to functions.

### 2000-02-25 14:26:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Memory allocation in ospf_area changed.

### 2000-02-25 19:19:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Router LSA & area adding.

### 2000-02-27 22:00:19  Martin Mares <mj@ucw.cz>

  * TODO
  * client/client.c
  * client/client.h
  * client/commands.c
  * client/util.c

  Support expansion of command abbreviations.
  
  Client considered finished (modulo bugs).

### 2000-02-29 23:19:52  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/iface.c
  * nest/iface.h
  * nest/rt-dev.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-iface.c

  Rewrote interface type detection logic. The `unnumbered' flag is now per
  address, not per interface (hence it's ifa->flags & IA_UNNUMBERED) and
  should be set reliably. IF_MULTIACCESS should be fixed now, but it isn't
  wise to rely on it on interfaces configured with /30 prefix.

### 2000-02-29 23:20:55  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Adapted RIP to new interface flags. Pavel, please verify it's right.

### 2000-03-01 11:29:30  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  ipa_opposite hack is not applicable in IPv6.

### 2000-03-01 11:48:11  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  If the user has specified identical preferences for instances of different
  protocols, break the tie by comparing addresses, so we keep the ordering
  unambiguous.

### 2000-03-01 12:03:43  Martin Mares <mj@ucw.cz>

  * lib/ipv6.h

  IP_PREC_INTERNET_CONTROL for IPv6 (see the comment).

### 2000-03-01 11:32:23  Martin Mares <mj@ucw.cz>

  * filter/config.Y
  * filter/f-util.c
  * filter/filter.h
  * proto/rip/config.Y

  Dynamic attributes are now declared in per-protocol grammar files instead
  of filter/config.Y. Bird now compiles even if you disable RIP.
  
  Removed RTA and IMPOSSIBLE tokens (unused).
  
  Removed superfluous comment in filter.h.
  
  I've tried to do my best, but Pavel, please check these changes.

### 2000-03-01 12:15:20  Martin Mares <mj@ucw.cz>

  * lib/ipv6.h

  Changed comments regarding hash function.

### 2000-03-01 11:30:16  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Defined INVALID_TOKEN which is a token guaranteed to be never generated.

### 2000-03-01 11:42:13  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/confbase.Y

  Made `datetime' more user friendly. Now it should be a quoted string
  of type "dd-mm-yyyy".

### 2000-03-01 15:05:43  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Removed RTF_EXTERIOR and RTF_TAGGED (unused).

### 2000-03-01 14:31:31  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/f-util.c
  * filter/filter.c

  tmp_attrs fixed.
  
  I do not know if it is right since mj ingores talk once started :-(.

### 2000-03-01 14:42:59  Pavel Machek <pavel@ucw.cz>

  * filter/f-util.c
  * filter/filter.h
  * proto/rip/config.Y

  Added type parameter to f_new_dynamic_attr.

### 2000-03-01 14:49:07  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h

  Added proto->hash_key which contains randomly generated hash key used
  for calculation of hash functions depending on proto.

### 2000-03-01 14:51:47  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/Makefile
  * nest/iface.c
  * nest/iface.h
  * nest/neighbor.c

  Reimplemented neighbor cache. Now uses real hashing.

### 2000-03-02 22:23:18  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Avoid being exponential, do not allow ! =

### 2000-03-04 21:09:14  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/route.h
  * nest/rt-attr.c

  Implemented real attribute cache.

### 2000-03-04 21:26:35  Martin Mares <mj@ucw.cz>

  * client/client.c

  Fixed display of short continued messages in verbose mode.

### 2000-03-04 21:27:57  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Removed bogus comment.

### 2000-03-04 21:26:19  Martin Mares <mj@ucw.cz>

  * nest/cli.c

  Enabled short continuations.

### 2000-03-04 21:19:10  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y

  Please *think* when defining operator priorities.
  
  (-: num_of_parser_conflicts -= 42 :-)

### 2000-03-04 22:21:06  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * nest/route.h
  * nest/rt-table.c
  * sysdep/unix/krt.c

  Garbage collector events and counters are now per table and one day
  they can be made configurable if it turns out to be useful.

### 2000-03-04 22:30:44  Martin Mares <mj@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * nest/route.h
  * nest/rt-attr.c
  * proto/rip/config.Y
  * proto/rip/rip.c

  Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning.

### 2000-03-05 22:48:30  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/slab.c

  Implemented real slab allocator. If you suspect it from being buggy,
  just #define FAKE_SLAB at the top of lib/slab.c to bypass it.

### 2000-03-07 20:09:35  Martin Mares <mj@ucw.cz>

  * sysdep/unix/config.Y

  Renamed command `shutdown' to `down', so that `s' can be used as an
  abbreviation for `show'.

### 2000-03-07 21:04:14  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  DBG calls debug() if defined(LOCAL_DEBUG) || defined(GLOBAL_DEBUG).

### 2000-03-07 20:49:48  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * nest/proto.c
  * nest/protocol.h

  Added protocol debugging flags (protocol.h: D_xxx), parsing of them
  in configuration files and commands for manipulating them.
  
  Current debug message policy:
  
     o  D_STATES, D_ROUTES and D_FILTERS are handled in generic code.
     o  Other debug flags should be handled in the protocols and whenever
        the flag is set, the corresponding messages should be printed
        using calls to log(L_TRACE, ...), each message prefixed with
        the name of the protocol instance. These messages should cover
        the whole normal operation of the protocol and should be useful
        for an administrator trying to understand what does the protocol
        behave on his network or who is attempting to diagnose network
        problems. If your messages don't fit to the categories I've defined,
        feel free to add your own ones (by adding them to protocol.h
        and on two places in nest/config.Y), but please try to keep the
        categories as general as possible (i.e., not tied to your protocol).
     o  Internal debug messages not interesting even to an experienced
        user should be printed by calling DBG() which is either void or
        a call to debug() depending on setting of the LOCAL_DEBUG symbol
        at the top of your source.
     o  Dump functions (proto->dump etc.) should call debug() to print
        their messages.
     o  If you are doing any internal consistency checks, use ASSERT
        or bug().
     o  Nobody shall ever call printf() or any other stdio functions.
  
  Also please try to log any protocol errors you encounter and tag them
  with the appropriate message category (usually L_REMOTE or L_AUTH). Always
  carefully check contents of any message field you receive and verify all
  IP addresses you work with (by calling ipa_classify() or by using the
  neighbour cache if you want to check direct connectedness as well).

### 2000-03-07 21:04:36  Martin Mares <mj@ucw.cz>

  * client/client.c

  No longer echoes commands before sending them.

### 2000-03-07 21:50:21  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c

  Added debugging of protocol state transitions.

### 2000-03-07 21:50:03  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * conf/conf.h
  * doc/bird.conf.example
  * nest/config.Y

  Added configuration of default protocol debugging flags.

### 2000-03-08 12:50:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Sending of DBDes. (Checksum and length calculation NOT done.)

### 2000-03-09 13:21:40  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  CONST() is now gone

### 2000-03-09 14:47:43  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  1 less shift/reduce conflict
  
  print now takes arguments separated by ,
  
  [ 1.2.3.0/24 .. 3.4.5.0/8 ] is now forbidden
  
  [ 1.2.3.0/8 ] now actually works

### 2000-03-09 15:12:41  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Rip tracing: still need config hunk to set p->debug.

### 2000-03-09 14:59:10  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  log() classes done right

### 2000-03-09 16:38:51  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Categorized TRACE() messages in rip

### 2000-03-09 22:38:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  LSA DB is completely redesigned. Now it should be faster and it needs
  less memory.

### 2000-03-10 20:21:12  Pavel Machek <pavel@ucw.cz>

  * conf/cf-lex.l

  Fix <=, >=, !=

### 2000-03-12 20:50:35  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/config.Y
  * nest/iface.c
  * nest/protocol.h

  Added tracing of interface events.

### 2000-03-12 21:01:38  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * filter/filter.c
  * nest/iface.c
  * nest/neighbor.c
  * nest/proto.c
  * nest/rt-dev.c
  * nest/rt-fib.c
  * nest/rt-table.c
  * proto/pipe/pipe.c
  * proto/static/static.c
  * sysdep/unix/main.c

  Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,
  several debug() calls converted to DBG().

### 2000-03-12 20:30:53  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/rt-table.c

  Added debugging of communication between protocols and routing tables.
  Just ask for "debug routes" if you want to see the routes and "debug filters"
  if you want even the rejected ones.

### 2000-03-12 20:49:08  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Oops, got `<' and `>' markers in trace output reversed.

### 2000-03-12 21:54:39  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/krt.c
  * sysdep/unix/krt.h

  Cleaned up debugging in kernel syncer.  Netlink has still LOCAL_DEBUG
  turned on, but after some testing I'll gag it.

### 2000-03-12 21:58:51  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt-iface.c

  Yet another LOCAL_DEBUG turned off.

### 2000-03-12 21:47:25  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  Use do { } while(0) instead of empty DBG if not debugging.

### 2000-03-12 23:04:04  Martin Mares <mj@ucw.cz>

  * client/cmds.m4
  * conf/Makefile

  Add internal commands of the client to the command list.

### 2000-03-12 22:40:07  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  Don't crash when filter_same() gets called on FILTER_ACCEPT or FILTER_REJECT.

### 2000-03-12 22:55:09  Martin Mares <mj@ucw.cz>

  * client/client.c

  Commands which failed expansions are to be stored to history, too.

### 2000-03-12 22:53:05  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c
  * nest/rt-table.c
  * sysdep/unix/io.c
  * sysdep/unix/log.c
  * sysdep/unix/main.c

  Fixed a bunch of FIXME's by removing them :)

### 2000-03-12 22:44:54  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * conf/conf.h
  * doc/reply_codes
  * nest/cmds.c

  Made `show status' show uptime and time of last reconfiguration.

### 2000-03-12 22:43:13  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/timer.h

  Added tm_format_datetime().

### 2000-03-13 13:31:00  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Cleanup, mostly debugging messages.

### 2000-03-19 22:09:07  Martin Mares <mj@ucw.cz>

  * nest/proto.c
  * nest/protocol.h
  * proto/bgp/Makefile
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  Bare skeleton of the BGP.

### 2000-03-19 21:59:24  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Protocol tracing: Don't dump core on filtered out routes.

### 2000-03-20 18:45:03  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Define new data types for BGP.

### 2000-03-20 20:52:18  Martin Mares <mj@ucw.cz>

  * nest/locks.c

  Added missing newline in debug output.

### 2000-03-20 21:50:17  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/Makefile
  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y
  * proto/bgp/packets.c

  Started work on BGP. Wrote main part of the connection handling code.

### 2000-03-20 21:49:21  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Handle EINPROGRESS properly.
  
  Set IP_DONTROUTE sockopt only if sk->ttl == 1.

### 2000-03-21 15:51:30  Martin Mares <mj@ucw.cz>

  * lib/unaligned.h

  Wrote real version of unaligned data access functions (needed for BGP).

### 2000-03-21 15:53:50  Martin Mares <mj@ucw.cz>

  * proto/bgp/Makefile
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Construction of BGP packets.

### 2000-03-22 14:26:03  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Rip now tries to lock interface.
  
  Fixed fatal errors which caused segfault at startup.
  
  Fixed fatal errors in rip which caused it not to send more than first
  update.

### 2000-03-22 14:23:40  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Format of dates changed, so rip authentication is now commented out.

### 2000-03-23 12:08:40  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Minor change to make code more readable.

### 2000-03-24 10:08:20  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c

  FIXME was actually already resolved

### 2000-03-26 18:00:45  Pavel Machek <pavel@ucw.cz>

  * nest/iface.h
  * nest/neighbor.c

  if_connected is usefull outside of neighbour cache.

### 2000-03-26 18:01:27  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Split horizont done right.
  
  Locks done better.

### 2000-03-26 21:31:57  Pavel Machek <pavel@ucw.cz>

  * nest/iface.h
  * proto/rip/rip.c

  I broke compilation. Sorry.

### 2000-03-27 12:21:11  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Use neigh_connected_to in rip, and behave more correctly
  w.r.t. whotoldme and nexthop.

### 2000-03-27 12:16:37  Martin Mares <mj@ucw.cz>

  * nest/iface.h
  * nest/neighbor.c

  if_connected() is again private.
  
  Introduced neigh_connected_to() to serve the same purpose efficiently.

### 2000-03-29 00:34:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c
  * proto/ospf/topology.c

  DBdes sending/receiving changes.

### 2000-03-29 09:02:00  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * nest/rt-table.c

  f_run gets one more parameter to distinguish between in and out modes.

### 2000-03-29 08:58:06  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Cross-protocol issues solved better

### 2000-03-29 13:02:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  RXMT timer handling bug fix.

### 2000-03-29 12:45:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Sending of DBdes bug fixed.

### 2000-03-29 12:32:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h

  IMMS reverted to bits. Outgoing packets dumping added.
  Cisco does not set inteface MTU. Hmm....

### 2000-03-29 12:47:07  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Some FIXME added.

### 2000-03-29 17:18:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h

  Many changes in dbdes sending & receiving. EXDONE caused.

### 2000-03-29 17:51:40  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Slave bug fix.

### 2000-03-29 22:57:46  Martin Mares <mj@ucw.cz>

  * lib/resource.h

  Avoid conflicts with libraries defining their own xmalloc by defining
  xmalloc to bird_xmalloc internally.

### 2000-03-30 00:18:59  Ondrej Filip <feela@network.cz>

  * proto/ospf/Makefile
  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsreq.h
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/topology.c

  LSreq initial work.

### 2000-03-30 08:50:46  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Use FF_FORCE_TMPATTR where appropriate.

### 2000-03-30 08:50:30  Martin Mares <mj@ucw.cz>

  * filter/filter.c
  * filter/filter.h

  Renamed FF_OUTGOING to FF_FORCE_TMPATTR which much better fits the semantics.
  
  Call rte_cow() instead of rte_do_cow(), so that COW works properly.
  
  Stripped "\n" off several (de)bug messages.

### 2000-03-30 10:43:37  Martin Mares <mj@ucw.cz>

  * lib/socket.h
  * sysdep/unix/io.c
  * sysdep/unix/main.c

  Defined sk_close() which closes the socket safely even if called from
  socket hook. Replaces the SK_DELETED hack.
  
  Squashed a couple of bugs in handling of TCP sockets.

### 2000-03-30 10:44:20  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y
  * proto/bgp/packets.c

  More BGP. This time it connects, but the state machine still isn't complete.

### 2000-03-30 16:22:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c

  Better list manipulation.

### 2000-03-30 17:39:48  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y
  * proto/bgp/packets.c

  Connection state machine works.

### 2000-03-30 19:21:17  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c

  Minor changes.

### 2000-03-30 18:44:23  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Basic analysis of UPDATE packets.

### 2000-03-30 20:18:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c
  * proto/ospf/topology.h

  LSA structure changes. (Len added.)

### 2000-03-30 19:37:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h

  Add hashing to link state request list.

### 2000-03-30 20:00:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/ospf.h

  Skeleton structures and files added.

### 2000-03-31 00:21:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/Makefile
  * proto/ospf/dbdes.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/ospf.h

  Sending of lspd as responce to lsreq done.

### 2000-03-31 01:14:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Some bug fixes. LSA checksum is still bad. I'll fix it later.

### 2000-03-31 01:40:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Checksum changes. Bug is still NOT fixed. :-(

### 2000-03-31 23:21:19  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Fixed bug in processing of dynamic attributes.

### 2000-03-31 23:21:37  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y
  * proto/bgp/packets.c

  Parsing of BGP attributes.

### 2000-03-31 23:33:03  Martin Mares <mj@ucw.cz>

  * TODO
  * lib/ipv6.c
  * lib/resource.c
  * proto/rip/rip.c
  * sysdep/unix/io.c

  Use bsprintf() instead of sprintf().

### 2000-03-31 23:40:00  Martin Mares <mj@ucw.cz>

  * lib/ip.c
  * lib/ipv6.c
  * nest/locks.c
  * proto/rip/auth.c
  * proto/rip/rip.c

  Removal of useless includes continues...

### 2000-03-31 23:35:59  Martin Mares <mj@ucw.cz>

  * filter/f-util.c
  * filter/filter.c
  * filter/tree.c

  Removed lots of superfluous includes.
  
  Use debug() instead of printf().

### 2000-03-31 23:30:21  Martin Mares <mj@ucw.cz>

  * client/client.c
  * client/commands.c
  * client/util.c
  * conf/cf-lex.l
  * conf/confbase.Y
  * filter/config.Y
  * lib/ip.c
  * lib/ipv4.c
  * lib/ipv6.c
  * lib/ipv6.h
  * lib/md5.c
  * lib/mempool.c
  * lib/printf.c
  * lib/resource.c
  * lib/slab.c
  * lib/string.h
  * lib/unaligned.h
  * nest/cli.c
  * nest/proto.c
  * nest/rt-attr.c
  * nest/rt-dev.c
  * nest/rt-fib.c
  * nest/rt-table.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/rip/auth.c
  * proto/rip/rip.c
  * proto/static/static.c
  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c
  * sysdep/unix/krt-iface.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/main.c

  Include "lib/string.h" instead of <string.h>. It should give us bzero()
  and other non-portable functions on all systems.

### 2000-04-01 02:45:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/topology.c

  LSA checksum works. But it's very uneficient on little endian systems.

### 2000-04-01 09:15:55  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  When processing ACCEPT/REJECT carrying no message, don't print
  trailing newline.
  
  I hope the fix is correct, but please check.

### 2000-04-01 09:15:10  Martin Mares <mj@ucw.cz>

  * filter/config.Y

  SOURCE should really refer to rta->source, not rta->gw.
  
  Please check that all rta attributes are available, I guess that at
  least rta->dest is missing.

### 2000-04-01 09:16:42  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  When tracing, always print incoming part of the trace before the outgoing one.
  
  Avoid buffer overflows in `show routes' command.

### 2000-04-01 09:17:33  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * proto/bgp/bgp.c
  * proto/bgp/packets.c

  BGP now handles incoming routes (IPv4 only).

### 2000-04-01 10:19:47  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/reply_codes
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-table.c
  * sysdep/unix/main.c

  Changed initialization of protocol list -- now we call proto_build() instead
  of calling the protocols manually.
  
  Implemented printing of dynamic attributes in `show route all'.
  
  Each protocol can now register its own attribute class (protocol->attr_class,
  set to EAP_xxx) and also a callback for naming and formatting of attributes.
  The callback can return one of the following results:
  
  	GA_UNKNOWN	Attribute not recognized.
  	GA_NAME		Attribute name recognized and put to the buffer,
  			generic code should format the value.
  	GA_FULL		Both attribute name and value put to the buffer.
  
  Please update protocols generating dynamic attributes to provide
  the attr_class and formatting hook.

### 2000-04-01 10:21:11  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h

  Formatting of dynamic attributes (except for paths and communities which
  will be added soon).

### 2000-04-01 10:20:12  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  RIP: Set attribute class.

### 2000-04-02 19:04:23  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h

  lsa_cmp moved into lsalib.c

### 2000-04-02 20:41:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsupd.c
  * proto/ospf/packet.c

  Work on lsupdates continues. Some checksum cleanup.

### 2000-04-03 22:31:07  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Minor change in area list. Now I use MJ's lists.

### 2000-04-04 00:32:17  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Flooding work continues.

### 2000-04-04 15:55:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  LSupdate processing improved. Now there is some bug in hashing. :-(

### 2000-04-04 22:22:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  "Bug in hashing" fixed. Ehm it was bug in lsrql node removing.

### 2000-04-04 22:27:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/ospf.h

  Small clean up. (Duplicate #defines.)

### 2000-04-05 00:51:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/ospf.h

  LSA flooding done.

### 2000-04-07 09:02:17  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Fix of comment.

### 2000-04-09 22:04:12  Martin Mares <mj@ucw.cz>

  * nest/route.h

  BGP doesn't need any inline attributes.

### 2000-04-09 22:05:02  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h

  More BGP progress...
  
  For Pavel: You can use bgp_path_prepend() for prepending AS numbers to AS paths.

### 2000-04-10 10:40:00  Martin Mares <mj@ucw.cz>

  * nest/iface.c
  * nest/neighbor.c

  Fix stupid bug in neighbor cache.

### 2000-04-10 11:21:40  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  Use neighbor cache to track direct route to the peer or multihop destination.
  
  Calculate next_hop properly based on the local address we get from the
  neighbor entry.

### 2000-04-10 12:38:15  Martin Mares <mj@ucw.cz>

  * sysdep/config.h

  Dropped CPU_NEEDS_ALIGN_* as unaligned.h no longer uses them.

### 2000-04-10 12:39:29  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Export ea_same() and ea_hash().

### 2000-04-10 12:39:51  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Implemented outgoing attribute cache.

### 2000-04-10 15:07:43  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Functions for matching paths added, tested lightly.
  
  Functions for working with community lists added, they compile.
  
  This should not be definitive place for this stuff.

### 2000-04-10 14:45:00  Pavel Machek <pavel@ucw.cz>

  * nest/route.h

  As usuall, most important info was missing.

### 2000-04-10 16:36:40  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Commit fixes.

### 2000-04-10 22:08:32  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Fix comments.

### 2000-04-12 10:34:02  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Path printing is now much nicer.

### 2000-04-12 10:34:45  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Path printing is now much nicer: not having to put it backward
  simplifies it. (Sorry for previous commit, cvs is naughty).

### 2000-04-12 12:10:37  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  BGP_PATH masks now actually work as data type.

### 2000-04-12 12:49:53  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y

  Path masks are needed for filters.

### 2000-04-12 13:07:53  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Renamed f_path to f_path_mask -- which is what it really is. Use
  linklist instead of array of signed integers for path mask.

### 2000-04-12 13:21:23  Martin Mares <mj@ucw.cz>

  * client/commands.c
  * lib/birdlib.h
  * proto/bgp/attrs.c

  Introduced `ARRAY_SIZE' macro to replace all the sizeof(a)/sizeof(*a) constructs.

### 2000-04-12 14:05:37  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.h

  One less shift/reduce conflict.

### 2000-04-12 13:31:39  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  Filters now know type path. It is possible to declare variable of type
  path, but it is not possible to write constant of type path.
  
  It should be possible to print paths and match them.

### 2000-04-12 14:14:47  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h

  Made last Pavel's changes compile.

### 2000-04-12 13:55:30  Martin Mares <mj@ucw.cz>

  * filter/f-util.c

  Attribute type hack.

### 2000-04-12 13:56:04  Martin Mares <mj@ucw.cz>

  * proto/bgp/config.Y

  Define BGP_PATH.

### 2000-04-12 14:12:37  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * proto/bgp/attrs.c

  as_path_prepend is usable outside bgp.

### 2000-04-12 14:09:26  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h

  Real bucket lists.

### 2000-04-12 14:02:04  Pavel Machek <pavel@ucw.cz>

  * filter/f-util.c
  * filter/filter.h
  * proto/bgp/config.Y
  * proto/rip/config.Y

  f_new_dynamic_attr gets third argument, type as filters know it.

### 2000-04-12 13:55:53  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  Minor updates by Pavel.

### 2000-04-12 14:49:20  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c

  Stupid "+1"-bug fixed.

### 2000-04-12 15:20:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  LS Ack receiving done.

### 2000-04-12 15:37:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/packet.c

  LSack receiving bugfix.

### 2000-04-17 07:53:29  Martin Mares <mj@ucw.cz>

  * nest/Makefile
  * nest/a-path.c
  * nest/a-set.c
  * nest/attrs.h
  * proto/bgp/attrs.c
  * proto/bgp/bgp.h

  Created nest/a-path.c and a-set.c which should contain general operations
  on AS paths and community sets.
  
  Moved as_path_prepend() there.
  
  Pavel, please move the other functions as well.

### 2000-04-17 10:18:55  Martin Mares <mj@ucw.cz>

  * nest/a-path.c
  * nest/a-set.c
  * nest/attrs.h
  * nest/route.h
  * nest/rt-attr.c

  Printing of AS paths and community sets.

### 2000-04-17 09:37:31  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Sending of update messages works!

### 2000-04-17 10:19:15  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Send and receive communities.

### 2000-04-17 10:16:47  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Prepend and creation of empty path should work, but it has strange
  syntax for now.

### 2000-04-17 10:42:28  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Path and path matching seem to work, now.

### 2000-04-17 10:54:01  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Use printing routine from nest/ instead of our own.

### 2000-04-17 11:20:00  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/filter.h

  Finish moving of path matching. Use int_set_print from core for
  printing community lists.

### 2000-04-17 11:11:33  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * nest/a-path.c
  * nest/attrs.h

  as_path_match moved to a-path.c

### 2000-04-17 11:23:05  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Define EAF_ORIGINATED and propagate it properly when merging attribute lists.

### 2000-04-17 11:25:15  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  Normalize community sets when exporting.
  
  Set PARTIAL bits correctly.

### 2000-04-17 11:22:24  Martin Mares <mj@ucw.cz>

  * nest/a-path.c

  Aesthetical tweaks (asterisk spells `asterisk' etc.)

### 2000-04-17 11:06:39  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf
  * nest/a-path.c
  * nest/attrs.h

  Path_getlen moved to nest and length was made callable from filters.

### 2000-04-17 10:50:03  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  Path matching now actually works, including / * 1 2 3 * /.

### 2000-04-17 11:52:32  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  EAF_ORIGINATED done right.

### 2000-04-17 11:42:34  Pavel Machek <pavel@ucw.cz>

  * nest/a-set.c

  Put space between entries so they are separated.
  
  FIXME: should use format as in filters.

### 2000-04-17 11:42:08  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  It is good idea to separate entries in list _somehow_. Adding/deleting
  to community lists from filters now works.

### 2000-04-17 11:37:05  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Use EAF_ORIGINATED as mj wanted. mj: check this!

### 2000-04-17 11:49:21  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/test.conf

  pair ~ community list matching works.

### 2000-04-17 11:34:38  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf
  * nest/a-set.c
  * nest/attrs.h

  Int sets moved to core. It is now possible to have variable of type clist.

### 2000-04-17 11:49:41  Martin Mares <mj@ucw.cz>

  * nest/a-set.c

  The previous fix for spacing was (a) totally out of context, (b) wrong.
  Please *read* the code when trying to change it.
  
  Also killed a couple of type clashes.

### 2000-04-17 12:38:24  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Community lists can be now accessed as dynamical attributes. Mj:
  please create such dynamic atribute for bgp.

### 2000-04-17 12:40:38  Pavel Machek <pavel@ucw.cz>

  * filter/filter.h

  Special hack for atomic_aggr.

### 2000-04-17 13:14:48  Martin Mares <mj@ucw.cz>

  * configure.in

  Added BGP to the default list of protocols we build.

### 2000-04-17 12:46:07  Martin Mares <mj@ucw.cz>

  * nest/attrs.h
  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  Don't import/export MED and LOCAL_PREF on external links.
  Added real comparison of BGP routes (inspired by the Cisco one).
  Default local preference and default MED are now settable.
  Defined filter keywords for all BGP attributes we know.

### 2000-04-17 13:13:08  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h

  Honor standard communities (no_export, no_advertise, no_export_subconfed)
  when exporting routes.

### 2000-04-17 14:12:02  Pavel Machek <pavel@ucw.cz>

  * filter/f-util.c
  * filter/filter.c

  Cleaned up mess with types in e,a and e,S. Dynamic attributes should
  now work.

### 2000-04-17 13:41:50  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  Adding of dynamic attributes is hopefully correct now.

### 2000-04-17 16:48:22  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  First version of sgml documentation

### 2000-04-17 16:51:28  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile
  * doc/bird.sgml

  Few bugs removed from sgml, makefile added.

### 2000-04-17 16:49:05  Pavel Machek <pavel@ucw.cz>

  * doc/bird.html

  Bird.html will now be autogenerated.

### 2000-04-17 20:42:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/topology.c

  Small change in LSA originating.

### 2000-04-17 21:10:40  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.h

  Listening on AllDRouters for DR and BACKUP added.

### 2000-04-18 01:06:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/packet.h

  Some lsack work. There is something very worng. :-( It locked my network.

### 2000-04-18 17:00:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Another LSack update. It's still NOT correct and it surely
  kills gated or Cyclades OSPF implementation. :-)

### 2000-04-18 18:21:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/neighbor.c

  Many %u changed into %I and dump cleanup.

### 2000-04-18 18:01:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Iface chstate run only if something really change.

### 2000-04-18 17:54:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Better chstate dumping.

### 2000-04-18 17:58:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Better dumping in neighbor chstate.

### 2000-04-18 18:29:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c

  Many %u changer into %I.

### 2000-04-18 17:36:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Sending of ACK disabled, since I'll find bug.

### 2000-04-18 19:22:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/topology.c

  Dump changes.

### 2000-04-18 19:31:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Multicast open socket for (B)DR bugfix.

### 2000-04-18 19:56:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Bugfix in neighbor dumping.

### 2000-04-18 19:44:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Fixed the serious bug in LSack.
  Oh, I'm an idiot. I sent LSACK, but in header was LSUPD. :-(

### 2000-04-18 20:34:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Better LS Ack dumping.

### 2000-04-18 21:13:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  LS ack.

### 2000-04-18 21:40:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h

  LS ack bugfix. (I didn't remove LSA from LSret hash.)

### 2000-04-18 22:11:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Grr, another patch to make it compile.

### 2000-04-18 22:07:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Another ack bugfix. (Bad test for MIN_LS_ARRIVAL.)

### 2000-04-19 13:28:56  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Delay fetching of router ID.

### 2000-04-19 12:51:14  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Select the right source address and don't check port numbers.

### 2000-04-19 13:54:17  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  The ATOMIC_AGGREGATE parameter is optional transitive.

### 2000-04-19 13:54:35  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Temporarily ignore unknown options.

### 2000-04-20 10:25:51  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/f-util.c

  Create syntax sugar for add/delete/prepend, so xyzzy.prepend(123) is
  possible. That means that milestone 3 was reached.

### 2000-04-20 10:24:41  Pavel Machek <pavel@ucw.cz>

  * bird.conf

  Test new syntax of add() and delete().

### 2000-04-20 22:55:32  Martin Mares <mj@ucw.cz>

  * client/commands.c

  Use xmalloc() instead of malloc().

### 2000-04-20 22:54:22  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/config.Y
  * proto/bgp/packets.c

  Synced to draft-ietf-idr-bgp4-09.

### 2000-04-20 22:34:50  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Fixed reporting of unknown options.

### 2000-04-20 23:05:41  Martin Mares <mj@ucw.cz>

  * sysdep/linux/sysio.h
  * sysdep/unix/io.c

  IPv6 compiles with glibc 2.1.

### 2000-04-21 12:25:35  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  If no NLRI's are present in an UPDATE message, parse the attributes, but
  don't check presence of mandatory attributes. [draft-09]

### 2000-04-21 13:01:28  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  LOCAL_PREF is now always present and exported over all ibgp connections [draft]
  
  Allow setting of address of the local end of the TCP connection.
  
  Several bug fixes.

### 2000-04-25 13:32:17  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Real parsing of BGP OPEN options including capability
  negotiation.

### 2000-04-25 21:13:25  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Better reporting of both local and remote errors.

### 2000-04-25 21:21:52  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  When sending BGP attributes, re-create the flags, so that attributes
  added by filters which get the flags wrong are fixed automagically.

### 2000-04-25 21:56:46  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Don't forget to set filter pointers in struct proto when reconfiguring.

### 2000-04-25 21:31:15  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  Use the same attribute names as in filters.

### 2000-04-25 22:01:19  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Randomize timers properly.

### 2000-04-25 21:58:17  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/packets.c

  Support dynamic reconfiguration.

### 2000-04-25 23:08:31  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  Implemented automatic restart after error with all the timers needed.

### 2000-04-25 23:08:03  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Avoid printing of error messages on Cease notifications.

### 2000-04-25 23:07:47  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Allow sk_close(NULL).

### 2000-04-26 07:47:47  Pavel Machek <pavel@ucw.cz>

  * filter/filter.h

  Marked place where new enums belong.

### 2000-04-26 07:31:45  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  Startup renamed to __startup: it is internal function and mj already
  uses word startup in other context.

### 2000-04-26 08:03:50  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * filter/test.conf

  Added code for testing filters.

### 2000-04-26 09:30:12  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Bugfix in i_same (comparing of paths still does not work).

### 2000-04-26 09:36:47  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  filter_same should now work with path masks.

### 2000-04-26 09:38:07  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Small cleanup.

### 2000-04-26 09:37:07  Pavel Machek <pavel@ucw.cz>

  * nest/a-path.c

  Whitespace changes.

### 2000-04-26 11:07:57  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/rip.c
  * proto/rip/rip.h

  Cleanup in preparation for ipv6.

### 2000-04-26 11:33:03  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * proto/rip/rip.c

  Use right address for ripv6.

### 2000-04-26 13:26:31  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c

  IBGP fixes.

### 2000-04-26 12:33:37  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Removed several FIXME's.

### 2000-04-26 12:54:23  Ondrej Filip <feela@network.cz>

  * proto/ospf/Makefile
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Routing table calculation. Dijkstra done.

### 2000-04-26 12:30:41  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Fixed several bugs in protocol state machine.  Reconfigurations and
  restarts of BGP seem to work now.

### 2000-04-26 12:32:07  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Better formatting of router ID's.

### 2000-04-26 13:26:11  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c
  * sysdep/unix/main.c

  Changed handling of incoming connections, so that we can send data
  from the send hook without worrying about existence of socket buffers.
  
  Also, don't forget to copy peer addresses.

### 2000-04-26 14:03:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Nets are used before routers.

### 2000-04-26 20:16:36  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Stub networks done.

### 2000-04-27 19:41:10  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Handle connect errors correctly.

### 2000-04-27 19:44:27  Martin Mares <mj@ucw.cz>

  * nest/a-path.c

  Fixed stupid bug in as_path_format().

### 2000-04-27 22:28:49  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * lib/event.c
  * lib/event.h
  * nest/locks.c
  * nest/proto.c
  * nest/rt-table.c

  Event handlers no longer return re-queue flag. Instead of using it, just
  call ev_schedule() on the same handler which should work perfectly now.

### 2000-04-27 22:40:19  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Some more fixes for attributeless UPDATEs.

### 2000-04-27 22:35:08  Martin Mares <mj@ucw.cz>

  * nest/cli.c
  * sysdep/unix/io.c
  * sysdep/unix/main.c

  Fixed a couple of nasty CLI bugs which were triggered on long or multi-part
  outputs. It took a whole evening to hunt them down, but now the CLI seems
  to work fine.
  
  Now I run three BGP connections with several thousand routes!

### 2000-04-27 22:31:11  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  Path attribute can be missing if we process a packet with empty NLRI section.

### 2000-04-28 09:55:36  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile

  Include proto/rip/rip.c in documentation system.

### 2000-04-28 09:48:01  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile
  * doc/kernel-doc

  Documentation-generating tool taken from linux-2.3.99-pre6, and
  makefile to actually use it.

### 2000-04-28 10:15:57  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Killed fixme: I already fixed it.

### 2000-04-28 09:48:28  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Cleanup of dead code + example documentation for two functions.

### 2000-04-28 10:14:59  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Provide rip_get_attr, how do I test it?

### 2000-04-28 09:55:52  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Add sample documentation to rip.

### 2000-04-28 15:13:29  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/config.Y

  The `bgp_origin' attribute is now an enum.

### 2000-04-28 15:11:10  Martin Mares <mj@ucw.cz>

  * conf/gen_parser.m4
  * filter/config.Y
  * nest/config.Y
  * proto/rip/config.Y
  * proto/static/config.Y
  * sysdep/unix/krt.Y

  Split CF_HDR section to CF_HDR (only includes) and CF_DEFINES (defines,
  C declarations etc.).

### 2000-04-28 15:15:36  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO.

### 2000-04-28 15:12:03  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/gen_keywords.m4

  Include CF_HDR section in keywords.h as well, so that protocol symbols
  can be used in definition of ENUM's.

### 2000-04-29 15:45:30  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  IpV6 now actually compiles.
  
  Mj, could you provide example of static config for ipv6 that is _not_
  rejected by checks? I tried this and got rejected.
  
  	route 62:168::/32 via 62:169::;
  	route 1:2::/32 via 1:3::;

### 2000-04-29 15:57:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.h

  Calculating of nexts hop(s) added.

### 2000-04-29 17:48:38  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Minor documentation update.

### 2000-04-30 09:32:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.h

  RT calculation strongly simplified. Now, I don't need any
  memory allocation. :-)

### 2000-04-30 11:31:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Sync with nest's rt table and some minor improvements.

### 2000-04-30 18:47:48  Pavel Machek <pavel@ucw.cz>

  * doc/kernel-doc
  * filter/filter.c
  * proto/rip/rip.c

  Moved documentation to top of file, where it belongs.

### 2000-04-30 22:14:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c

  Many small changes and bug fixes. Routing table calculation works.
  I'm waiting for rt lookup to add stub networks.

### 2000-05-02 12:51:39  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  Handle redistribution of unknown attributes correctly.

### 2000-05-02 15:21:51  Martin Mares <mj@ucw.cz>

  * lib/ipv6.c
  * nest/iface.c
  * nest/rt-table.c

  IPv6 address classification fixes.

### 2000-05-02 16:10:04  Martin Mares <mj@ucw.cz>

  * lib/printf.c
  * proto/bgp/bgp.c
  * proto/rip/rip.c

  Defined format specifier `%M' which behaves as `%m', but takes the
  error code as an argument.
  
  Use it in socket hooks where we really shouldn't rely on errno containing
  the right value or even existing.

### 2000-05-02 16:07:41  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Full protocol tracing.

### 2000-05-02 19:27:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Route calculation for stub networks.

### 2000-05-02 22:19:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Aging of lsa database added.

### 2000-05-02 22:31:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.h

  Adding InfTransDelay for outgoing lsa.

### 2000-05-02 22:34:35  Ondrej Filip <feela@network.cz>

  * configure.in

  OSPF added to default protocols.

### 2000-05-02 23:09:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Originating of network LSA.

### 2000-05-03 00:08:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Better rt and net originating.

### 2000-05-03 22:23:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c

  Cleanup of code. Some arguments of functions were useless.

### 2000-05-03 22:12:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Testing if I can flush LSA from database.

### 2000-05-03 22:36:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Test for "flushing" added.

### 2000-05-04 01:23:03  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c

  Bugfix in Network lsa originating
  Bugfix in ntohlsab() and htonlsab()
  For calculating of rt I use my own fib. I delete routes! ;-)

### 2000-05-04 09:08:28  Martin Mares <mj@ucw.cz>

  * nest/locks.c

  Switched off LOCAL_DEBUG.

### 2000-05-04 09:03:31  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Receive-only IPv6 BGP.

### 2000-05-04 10:03:53  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Display examples more nicely

### 2000-05-04 20:02:56  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  IPv6 BGP support finished.  Also simplified the BGP stuff a bit.

### 2000-05-04 20:08:34  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Spelling fixes.

### 2000-05-04 20:02:19  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  pxlen works even in IPv6 mode.

### 2000-05-04 20:18:46  Martin Mares <mj@ucw.cz>

  * configure.in

  Added --enable-ipv6 which tells configure to select the right configuration
  for IPv6 automatically.
  
  Added --enable-warnings which turns off some more warnings.
  
  Default protocol list now depends on --enable-ipv6.

### 2000-05-04 20:30:36  Martin Mares <mj@ucw.cz>

  * lib/ipv4.c
  * nest/a-path.c
  * nest/iface.c
  * nest/proto.c
  * nest/rt-table.c
  * proto/bgp/packets.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/io.c
  * sysdep/unix/krt.c

  Removed a lot of unused variables.
  
  Please try compiling your code with --enable-warnings to see them. (The
  unused parameter warnings are usually bogus, the unused variable ones
  are very useful, but gcc is unable to control them separately.)

### 2000-05-04 21:23:10  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * nest/route.h
  * nest/rt-attr.c
  * proto/bgp/attrs.c

  Removed RTS_RIP_EXT.

### 2000-05-04 20:52:28  Martin Mares <mj@ucw.cz>

  * filter/filter.c
  * nest/iface.c
  * proto/ospf/ospf.c
  * proto/rip/rip.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/main.c

  #ifdef out lots of debugging information.
  
  The long resource/routing table dump printed upon startup is gone now
  and if you wish to see it, just send bird SIGUSR1 or use the `debug'
  commands.

### 2000-05-04 20:49:45  Martin Mares <mj@ucw.cz>

  * TODO

  Updated.

### 2000-05-04 20:38:44  Martin Mares <mj@ucw.cz>

  * lib/ipv6.c
  * proto/bgp/packets.c

  Unused variables in IPv6 code.

### 2000-05-05 09:39:08  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  First attempt at documenting configuration.

### 2000-05-05 17:15:56  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/Makefile
  * tools/Makefile-top.in
  * tools/Makefile.in
  * tools/Rules.in

  Connected the `doc' subtree to global makefiles.
  
  All documentation is built in obj/doc (resp. doc/ if you do a stand-alone build).
  
  Use `make docs' to make the whole documentation or `make userdocs' resp.
  `make progdocs' for user manual resp. developer's guide.

### 2000-05-05 17:17:42  Martin Mares <mj@ucw.cz>

  * Doc
  * client/Doc
  * conf/Doc
  * filter/Doc
  * lib/Doc
  * nest/Doc
  * proto/Doc
  * proto/bgp/Doc
  * proto/ospf/Doc
  * proto/pipe/Doc
  * proto/rip/Doc
  * proto/static/Doc
  * sysdep/Doc
  * sysdep/unix/Doc

  Added skeleton Doc files for the whole developer's documentation.

### 2000-05-05 17:14:44  Martin Mares <mj@ucw.cz>

  * tools/progdoc

  Added a tool for processing of developer documentation.
  
  Everything is controlled by Doc files in source directories (see the
  corresponding programmer's manual entry for the format and look
  at Doc and lib/Doc for an example).
  
  Currently it generates HTML indices and calls kernel-doc to generate
  per-section HTML files.

### 2000-05-06 21:21:19  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/protocol.h
  * nest/rt-table.c

  When rte_update is called for an identical route, don't announce anything.
  
  Please implement the rte_same hook in your protocols. It should just
  compare your metrics stored directly in rte, the rest is done by the core.

### 2000-05-06 21:31:41  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Fixed silly bug in previous commit.

### 2000-05-06 21:46:09  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/sysio.h

  IPv6 support compiles on both glibc 2.0 and 2.1.

### 2000-05-06 21:42:19  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c

  Cosmetic fixes.

### 2000-05-06 22:57:39  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/reply_codes
  * nest/config.Y
  * nest/protocol.h
  * nest/route.h
  * nest/rt-attr.c
  * nest/rt-table.c
  * proto/rip/rip.c

  Added commands `show route protocol <p>' and `show route import <p>' which
  show the routing table as exported to the protocol given resp. as returned
  from its import control hook.
  
  To get handling of filtered extended attributes right (even in the old
  `show route where <filter>' command), the get_route_info hook gets an
  attribute list and all protocol specific rte attributes are contained
  there as temporary ones. Updated RIP to do that.
  
  Added ea_append() which joins two ea_list's.

### 2000-05-07 11:28:59  Martin Mares <mj@ucw.cz>

  * TODO
  * doc/reply_codes
  * nest/config.Y
  * nest/route.h
  * nest/rt-table.c

  Implemented `show route <...> stats'.

### 2000-05-07 10:41:45  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/bgp.c

  Setup of incoming connection is now a separate function.

### 2000-05-07 11:28:34  Martin Mares <mj@ucw.cz>

  * nest/rt-fib.c

  Squashed one bug in fib_rehash().  No more routes disappearing as if struct
  by a lightning :)

### 2000-05-07 11:27:23  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Killed one more reference to RTS_RIP_EXT.

### 2000-05-07 11:32:34  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Don't count networks with no routes (they are not displayed at all and
  will be removed during the next garbage collection pass).

### 2000-05-08 10:13:59  Martin Mares <mj@ucw.cz>

  * nest/neighbor.c

  Debugged printing and pruning of neighbor cache entries.

### 2000-05-08 10:37:45  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Fixed `show route primary'.

### 2000-05-08 11:02:53  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Incoming buffer must be at least 8KB long.

### 2000-05-08 10:38:25  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Preference is a configurable parameter.

### 2000-05-08 11:04:22  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Link the instance to the global BGP list as soon as possible.

### 2000-05-08 10:40:00  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * proto/ospf/config.Y
  * proto/ospf/rt.c
  * sysdep/unix/krt.Y

  Use preferences properly.

### 2000-05-08 10:38:51  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt.c

  Don't crash when reporting deleted routes.
  
  Set preferences correctly.

### 2000-05-08 12:05:55  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/netlink.Y
  * sysdep/linux/netlink/netlink.c

  Removed the `async' switch which was used for debugging only anyway.
  
  Don't moan when netlink reports lost packets.

### 2000-05-08 11:40:30  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  bugs_in_attr_cache_hashing--;

### 2000-05-08 12:09:10  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Don't report refused connections.

### 2000-05-08 12:38:00  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c

  When reporting a bug(), call abort() instead of exit(), so that we
  can analyse the core.

### 2000-05-08 12:37:39  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Some less socket error messages.

### 2000-05-08 13:12:14  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Really free attributes.

### 2000-05-08 12:37:24  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Don't generate corrupted packets when sending only route deletes.

### 2000-05-08 13:26:30  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h

  The bgp_list is gone. Incomming connections are now handled in a much
  more straightforward manner by scanning the active configuration for
  matching protocols.

### 2000-05-08 14:29:30  Martin Mares <mj@ucw.cz>

  * client/client.c

  Use PATH_CONTROL_SOCKET instead of tacking on "bird.ctl" manually.

### 2000-05-08 13:54:59  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in
  * tools/Makefile.in
  * tools/Rules.in

  `make install' now works.

### 2000-05-08 14:18:33  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO.

### 2000-05-08 14:19:47  Martin Mares <mj@ucw.cz>

  * configure.in
  * sysdep/autoconf.h.in
  * sysdep/config.h
  * tools/Makefile-top.in
  * tools/Makefile.in
  * tools/Rules.in

  Autoconf is *evil*. The sysconfdir and similar variables are unusable in
  C includes as they contain substitutions specific to make.
  
  Worked around by creating sysconf/paths.h which is created from
  the Makefile instead of by the configure script.

### 2000-05-08 14:24:19  Martin Mares <mj@ucw.cz>

  * sysdep/config.h

  Forgot to add a spiky comment :)

### 2000-05-08 13:56:11  Martin Mares <mj@ucw.cz>

  * configure.in

  Debugging compilation is no longer default. This means that the configuration
  file is expected in $prefix/etc etc.
  
  Use --enable-debug to request debugging.

### 2000-05-08 14:51:57  Martin Mares <mj@ucw.cz>

  * configure.in

  Added `--disable-memcheck' switch which avoids linking of efence/dmalloc,
  so that we can run in debugging mode with large routing tables.

### 2000-05-08 14:53:22  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/packets.c

  Don't crash when the socket gets closed between updates.
  
  Also, this time not only update `remains', but update it right :)

### 2000-05-08 14:32:19  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/packets.c

  Update `remains' counter correctly.

### 2000-05-08 14:58:00  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/config.Y
  * nest/rt-table.c

  Implemented `show route count' which is `show route stats' with
  exception that it doesn't print the routes themselves.

### 2000-05-08 14:51:26  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Stop feeding the protocol if it suddenly shuts down.

### 2000-05-08 19:10:36  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  When not debugging, daemonize automatically.

### 2000-05-08 19:11:49  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-fib.c

  Several simplifications of the fib iterators.

### 2000-05-08 22:02:45  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Better logging. (%d->%I)

### 2000-05-08 22:10:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Better debug output.

### 2000-05-08 22:27:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Grrr, useless debug.

### 2000-05-08 22:26:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Small typo.

### 2000-05-08 22:28:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Typo in debug.

### 2000-05-08 22:24:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Bugfix in new neighbor allocation.

### 2000-05-08 22:03:29  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Next hop calculation improved. (I ignored stub networks advertised by my
  neighbors.

### 2000-05-08 22:32:17  Martin Mares <mj@ucw.cz>

  * proto/bgp/config.Y

  KEEPALIVE TIME ought to set keepalive time, not connect retry time :)

### 2000-05-08 22:33:38  Martin Mares <mj@ucw.cz>

  * lib/mempool.c
  * lib/resource.c
  * lib/resource.h
  * lib/slab.c

  Implemented debugging function rlookup() which you can call from gdb
  to see what resource does the address given as a parameter belong to.

### 2000-05-08 22:33:02  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  rt_prune: Don't kill routes from protocols in FS_FEEDING state. If debugging,
  call fib_check() on the table's fib.

### 2000-05-08 22:33:50  Martin Mares <mj@ucw.cz>

  * doc/bird.conf.example

  New example config.

### 2000-05-08 22:37:16  Martin Mares <mj@ucw.cz>

  * README
  * TODO
  * tools/gendist

  Generated first public alpha release.
  
  Unless you object, I'll announce it today (9.5.) at noon.

### 2000-05-08 22:50:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  Some changes in debugging.

### 2000-05-08 22:49:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Fixed some FIXME's by deleting them. :-)

### 2000-05-08 22:40:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Stopping RXMT timer when going to lower state than EXSTART.

### 2000-05-08 22:42:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Useless '\n' in log()

### 2000-05-08 22:31:58  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c

  In non-debug mode, set default logging to syslog only, not stderr.

### 2000-05-08 22:31:34  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Fixed type in daemonization code.

### 2000-05-08 23:46:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h

  Do not stop lsrr_timer in FULL state. Use it for retransmition.

### 2000-05-09 00:03:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Just added declaration of AS Ext routes calculation.

### 2000-05-09 11:27:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/neighbor.c
  * proto/ospf/topology.c

  Another bugfix in neighbor state machine.

### 2000-05-09 11:29:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/neighbor.c

  Sorry, it didn't compile. :-(

### 2000-05-09 10:47:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Small bug in neighbor state machine.

### 2000-05-09 12:02:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/iface.c

  Bugfix in hello.

### 2000-05-09 11:52:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Small cleanup.

### 2000-05-09 12:03:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Better dumping.

### 2000-05-09 12:18:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Bugfix in testing of possibility of adjacency.

### 2000-05-09 12:31:38  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Bug fix in sending updates.

### 2000-05-09 13:56:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/topology.c

  Many bugfixes. Actually, how could this ever work? :-)

### 2000-05-09 18:20:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Don't send flushed LSAs.

### 2000-05-09 18:17:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/lsack.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Many bugfixes. (I added one entry twice to slist.)
  Debug cleanup.
  Retransmiting of unacknolegded LSAs

### 2000-05-09 18:35:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Backup seen is not called so often.

### 2000-05-09 19:36:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Flushing of old LSAs added.

### 2000-05-09 19:38:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsupd.c

  Bugfix in lsrt slist adding.

### 2000-05-09 19:38:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Better dumping.

### 2000-05-09 21:06:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Premature aging of self-originated LSA received in flooding.

### 2000-05-09 21:52:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  FIXME's removed by deleting them. :-)

### 2000-05-10 06:56:42  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Fix segfaults by using new ea_get_int.

### 2000-05-10 06:54:40  Pavel Machek <pavel@ucw.cz>

  * nest/route.h
  * nest/rt-attr.c

  Added more convient interface for ea_find.
  
  What is special about int default;? Compiler chokes on that!

### 2000-05-10 10:47:17  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Calculation of external routes.

### 2000-05-10 11:22:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h

  Change u32 to ip_addr in ext lsa.

### 2000-05-10 11:40:30  Pavel Machek <pavel@ucw.cz>

  * proto/rip/config.Y

  You can now say "mode multicast".

### 2000-05-10 11:52:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Bugfix in ip_addr endianity.

### 2000-05-10 11:48:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Bug in (B)DR election fixed.

### 2000-05-10 12:26:09  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Send first udpate sooner.

### 2000-05-10 11:48:34  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Killed unused variable.

### 2000-05-10 11:57:56  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Don't touch used memory.

### 2000-05-10 12:23:06  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Only announce change to main routing table if it is better than current.

### 2000-05-10 12:22:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Better dumping.

### 2000-05-10 12:46:47  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Nicer messages from rip.

### 2000-05-10 12:38:05  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Use ea_get_int instead of ea_find.

### 2000-05-10 12:37:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h

  Destroying of neighbor moved from 'hello' to 'neighbor' and
  improved.

### 2000-05-10 13:23:21  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Inlined metric and mode into struct rip_interface to make reconfig
  work.
  
  reconfigure is conservative but should work.

### 2000-05-10 12:48:06  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  ipa_same does not exist.

### 2000-05-10 13:05:39  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  rip_reconfigure done right

### 2000-05-10 12:32:45  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Reconfigure hook copied from bgp.

### 2000-05-10 13:42:50  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  use password_same utility function

### 2000-05-10 14:29:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Out dump deleted.

### 2000-05-10 13:42:46  Pavel Machek <pavel@ucw.cz>

  * nest/password.c
  * nest/password.h

  password_same utility function

### 2000-05-10 13:35:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Ever test possibility of forming of adjacency.

### 2000-05-10 15:04:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Some better lsa checking added.

### 2000-05-10 23:41:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Bugfix in (B)DR election.

### 2000-05-10 23:41:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  More robust tests in packet receiving.

### 2000-05-10 23:42:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Be more verbose.

### 2000-05-10 23:42:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Test better lsa size.

### 2000-05-11 09:36:55  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Unused variable killed.

### 2000-05-11 09:41:16  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Some more paranoia into rip_insert and rip_delete

### 2000-05-11 10:47:33  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile

  Don't include Rules: they are not needed and break stand-alone make of documentation.

### 2000-05-11 10:33:18  Pavel Machek <pavel@ucw.cz>

  * nest/route.h
  * proto/rip/rip.c

  Fixed nasty segfault in rip.

### 2000-05-11 11:54:03  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile
  * doc/bird.sgml
  * doc/mkdocs

  Use <m> instead of <i> in bird.sgml, fix url references.

### 2000-05-11 12:20:07  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c

  Use correct flags for the LOCAL_PREF attribute.
  
  When an invalid attribute is found, copy the entire attribute to the data
  section of the NOTIFICATION message.

### 2000-05-11 12:00:35  Pavel Machek <pavel@ucw.cz>

  * doc/sgml2html
  * doc/sgml2latex
  * doc/sbase/dist/birddoc/html/mapping
  * doc/sbase/dist/birddoc/latex2e/mapping
  * doc/sbase/dtd/linuxdoc.dtd

  Critical files from linuxdoc1 distribution checked in.

### 2000-05-11 12:30:06  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/linux/netlink/netlink.c

  If a broadcast address is missing, go fake one.

### 2000-05-11 15:05:13  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Several minor RIP changes (Pavel, please check as usually):
  
     o  Use FIB_ITERATE_INIT instead of calling the function fit_init()
        which is explictly marked as private in route.h.
     o  When printing trace messages, don't spit out protocol name twice.
     o  Some messages are a bit more verbose.
     o  Added a bunch of FIXME's.
     o  When running in broadcast mode, don't forget to bind the local
        end of the socket to the same broadcast address, so that we don't
        get the broadcasts looped back via different interface. I'm just
        going to look up the same problem for multicasts.

### 2000-05-11 16:55:26  Martin Mares <mj@ucw.cz>

  * README

  Updated README, generating the first alpha release.

### 2000-05-11 17:14:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Bugfix in network LSA originating.

### 2000-05-11 16:30:56  Martin Mares <mj@ucw.cz>

  * sysdep/linux/sysio.h

  Multicast problems should be gone, although the fix is Linux only and we'll
  need to figure out something better when working on new ports.

### 2000-05-11 22:02:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Minor changes.

### 2000-05-11 22:00:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsupd.c

  Bugfix in flooding. (bad size)
  Better debugging.
  More robust in receiving.

### 2000-05-11 22:00:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Better debugging.
  More robust.

### 2000-05-12 00:22:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Calculation of external routes works. :-)

### 2000-05-12 10:57:36  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Documentation fixes suggested by mj

### 2000-05-13 11:02:02  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/attrs.c
  * proto/pipe/pipe.c
  * sysdep/unix/krt.c

  Adapted to new rt_notify semantics.

### 2000-05-13 11:17:49  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/confbase.Y
  * filter/config.Y
  * filter/filter.h
  * lib/ip.h
  * nest/config.Y
  * proto/static/config.Y

  Unified parsing of prefixes.
  
  Had to rename `prefix' in filters to `fprefix'.

### 2000-05-13 11:00:37  Martin Mares <mj@ucw.cz>

  * nest/protocol.h
  * nest/rt-table.c

  Changed semantics of the rt_update hook. The attribute list we pass now
  contains all attributes, not just the temporary ones. This avoids having
  to merge the lists inside protocols or doing searches on both of them.
  
  Also, do filtering of routes properly. (I'd like to avoid it, but it's
  needed at least in the krt protocol.)

### 2000-05-13 11:01:41  Martin Mares <mj@ucw.cz>

  * proto/static/static.c

  Manual enable/disable works right.

### 2000-05-13 11:42:06  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-fib.c

  Added fib_route() which does (although very slow) lookup of longest-match
  routing in a FIB.

### 2000-05-13 11:42:42  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/config.Y
  * nest/rt-table.c

  Added `show route for <prefix-or-ipa>' which looks up route leading to
  given network.

### 2000-05-13 11:41:26  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Added prefix_or_ipa.

### 2000-05-15 10:53:56  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/conf.c
  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Got rid of startup functions and filters_postconfig().
  
  By the way, how do you expect pointers to fit in an int?

### 2000-05-15 10:49:38  Martin Mares <mj@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Added f_eval_int() and EVAL configuration command.

### 2000-05-15 12:15:18  Martin Mares <mj@ucw.cz>

  * conf/confbase.Y

  Changed syntax of expressions. Each `expr' can be now either a numeric literal
  or a symbol or parenthesised filter expression.

### 2000-05-15 11:48:23  Martin Mares <mj@ucw.cz>

  * TODO
  * conf/conf.h
  * conf/confbase.Y
  * filter/config.Y
  * nest/config.Y
  * proto/bgp/config.Y
  * proto/static/config.Y

  Cleanup of configuration.
  
  o  Use `expr' instead of `NUM' and `ipa' instead of `IPA',
     so that defined symbols work everywhere.
  o  `define' now accepts both numbers and IP addresses.
  o  Renamed `ipa' in filters to `fipa'.
  
  Pavel, please update filters to accept define'd symbols as well.

### 2000-05-15 12:07:09  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/test.conf

  Use new eval mechanism for testing filters.

### 2000-05-15 12:19:26  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/test.conf

  Allow accessing defined symbols.

### 2000-05-15 12:19:28  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/bgp.c

  bgp_get_status: If protocol is down, don't print BGP state.

### 2000-05-15 12:27:45  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Allow other operations than +.

### 2000-05-16 13:53:44  Martin Mares <mj@ucw.cz>

  * lib/slab.c

  Oops, the poison was too deadly...

### 2000-05-16 13:36:38  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/krt.c

  When in persist mode, don't delete routes from kernel tables even if
  they cease to exist in our routing tables due to protocols having shut down.

### 2000-05-16 14:24:33  Pavel Machek <pavel@ucw.cz>

  * conf/confbase.Y
  * filter/config.Y
  * filter/test.conf

  Resolved shift/reduce conflict

### 2000-05-16 13:51:31  Martin Mares <mj@ucw.cz>

  * lib/slab.c

  Added poisoning of free'd objects when we're debugging.

### 2000-05-16 13:43:26  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c
  * nest/protocol.h

  Don't log state changes if nothing user-visible has changed.

### 2000-05-16 15:08:43  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Fixed incorrect error message about router ID syntax.

### 2000-05-16 14:58:06  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Rip should now reconfigure itself only if needed.

### 2000-05-16 15:02:33  Martin Mares <mj@ucw.cz>

  * lib/slab.c

  Poisoning: take there...

### 2000-05-16 15:08:52  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Turned off LOCAL_DEBUG.

### 2000-05-16 15:02:27  Pavel Machek <pavel@ucw.cz>

  * nest/password.c

  Don't segfault when someone adds passwords.

### 2000-05-16 15:05:05  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Interface dummy is too strange for me... but psst, that's secret.

### 2000-05-16 15:00:15  Pavel Machek <pavel@ucw.cz>

  * nest/password.c

  Password same now actually works

### 2000-05-16 18:50:51  Pavel Machek <pavel@ucw.cz>

  * filter/f-util.c
  * filter/filter.c
  * filter/filter.h

  Line numbers for runtime errors (what's wrong with cvs? I could not
  commit this from home)

### 2000-05-16 18:47:06  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  More additions to documentation and spellchecking.

### 2000-05-16 22:37:53  Martin Mares <mj@ucw.cz>

  * filter/filter.c
  * filter/filter.h

  Fixed the horrible mess Pavel has created with his last commit.

### 2000-05-16 22:43:30  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Ehmm, removed 'if(1 || ...' so I can test the second part .

### 2000-05-16 23:24:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Calculation of external routes finally works.

### 2000-05-16 22:34:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Routing table calculation for ext LSAs having next-hop=!0.0.0.0

### 2000-05-17 00:28:45  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Don't die, if you receive strange LSA.

### 2000-05-16 23:59:38  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h

  Downing of interface should work.

### 2000-05-17 00:28:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Typo in comment.

### 2000-05-17 12:14:05  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Finished cleanng up mess: multiplication reinstalled.

### 2000-05-17 19:27:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  rte_better implemented.

### 2000-05-17 20:23:05  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Minor cleaning

### 2000-05-17 20:01:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  rte_same implemented.

### 2000-05-17 21:20:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Smal debug bugfix.

### 2000-05-19 11:00:47  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Commented out the `inserting entry which is already there' message since
  it's pretty normal: during feeding of the protocol, a new route can appear
  which will be announced normally and then repeated by the feeding process.

### 2000-05-19 10:59:47  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Fixed a buglet in asynchronous feeding and increased maximum number
  of routes allowed per feeding phase.

### 2000-05-19 10:46:26  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/proto.c
  * nest/protocol.h
  * nest/route.h
  * nest/rt-table.c

  Asynchronous feeding of protocols.

### 2000-05-19 11:01:06  Martin Mares <mj@ucw.cz>

  * nest/a-path.c
  * nest/attrs.h

  Added as_path_get_first().

### 2000-05-19 11:01:41  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/bgp.h

  BGP now reports originating AS and origin type in get_route_info().

### 2000-05-19 14:13:49  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Improve docs of log statment, improve markup.

### 2000-05-19 14:05:55  Pavel Machek <pavel@ucw.cz>

  * doc/sbase/dist/birddoc/latex2e/mapping

  Descriptive lists rendered better in TeX.

### 2000-05-19 13:58:39  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Some spellchecking, and use right tags for right things.

### 2000-05-19 15:59:21  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  More updates.

### 2000-05-19 16:22:53  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Added name of protocol to messages being logged.

### 2000-05-19 16:44:25  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  Less error messages in case sk_open fails.

### 2000-05-19 16:57:40  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  If community list is not defined, act as it is empty.

### 2000-05-19 17:21:42  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Latest changes by Pavel have removed the error messages printed after
  unsuccessful socket open, but replaced them by segmentatio fault!
  
  Grrrrrrrrr.

### 2000-05-19 18:05:01  Martin Mares <mj@ucw.cz>

  * nest/rt-attr.c

  Fixed freeing of non-embedded extended attributes.

### 2000-05-19 18:03:53  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  No more problems when protocols gets disabled during feeding.

### 2000-05-19 18:05:19  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Don't print trace messages about null updates.

### 2000-05-19 19:40:12  Martin Mares <mj@ucw.cz>

  * TODO
  * nest/route.h

  Fixed a very nasty bug in FIB iterators.

### 2000-05-19 19:49:33  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Routing table garbage collector gets really called.

### 2000-05-20 11:00:14  Martin Mares <mj@ucw.cz>

  * aclocal.m4
  * configure.in

  Get Linux version from <linux/version.h>, not `uname -r`.

### 2000-05-25 12:33:42  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Some more documentation, plus minor fixes.

### 2000-05-25 12:33:15  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Fixed comment not to be misleading.

### 2000-05-25 15:20:40  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h

  Cleaned up warnings.

### 2000-05-25 14:58:38  Pavel Machek <pavel@ucw.cz>

  * conf/cf-lex.l
  * filter/config.Y
  * filter/test.conf

  Use ? in path matching to avoid /* trap.

### 2000-05-25 14:50:46  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  SGML correctness fix.

### 2000-05-25 15:28:24  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Add section about routing tables.

### 2000-05-25 15:01:08  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Description of types needed for BGP.

### 2000-05-25 15:11:13  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Add section about utility functions in filters

### 2000-05-25 16:28:08  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Spell checking.

### 2000-05-25 16:17:54  Pavel Machek <pavel@ucw.cz>

  * doc/mkdocs
  * doc/printme

  Text version generated from lynx looks as ugly as hell, sgml is much better
  at generating nice output. Unfortunately, sgml output contains a^ha highlight
  some printers do not like.

### 2000-05-26 19:04:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Import control implemented.

### 2000-05-27 14:17:35  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Originating of external LSA.

### 2000-05-27 15:36:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/ospf.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Better shutdown. (Flush my own router LSA and send 1WAY to every neighbor.)
  Ext LSA originating and flushing added.

### 2000-05-28 19:07:39  Ondrej Filip <feela@network.cz>

  * nest/route.h

  To find out a type of route (external, inter/intra area)

### 2000-05-28 18:34:20  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Just added some debug().

### 2000-05-28 19:11:08  Pavel Machek <pavel@ucw.cz>

  * TODO
  * doc/bird.sgml

  Documentation update.

### 2000-05-28 19:16:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/rt.c

  get_route_info() added.

### 2000-05-28 18:49:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  get_status() implemented.

### 2000-05-28 20:11:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Kosmetic change in debugging.

### 2000-05-29 11:22:30  Pavel Machek <pavel@ucw.cz>

  * TODO

  Info about client. (Mj, if you tell me that's trivial, what about you
  writing it?)

### 2000-05-29 11:13:51  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Added "what is router" to introduction.

### 2000-05-29 10:32:37  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Spelling fixes.
  
  Added skeleton for subchapters on all the protocols. Each subchapter should
  contain:
  
  	Introduction (brief intro to the protocol, where should it be used,
  		references to the relevant standards)
  	Configuration
  	Attributes
  	Example
  
  Added a more detailed description of RIP attributes.

### 2000-05-29 11:22:43  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Better description of how route is selected.

### 2000-05-29 12:05:21  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml
  * doc/sbase/dtd/birddoc.dtd
  * doc/sbase/dtd/catalog
  * doc/sbase/dtd/linuxdoc.dtd

  Renamed the DTD from linuxdoc to birddoc.
  
  Pavel, please check whether it builds in your environment as well.

### 2000-05-29 12:05:56  Pavel Machek <pavel@ucw.cz>

  * TODO
  * doc/bird.sgml

  Really short installation section added.

### 2000-05-29 11:30:25  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Added description of Static, Device and Direct protocols.

### 2000-05-29 12:03:28  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Tried to write a better introduction.

### 2000-05-29 12:23:49  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Reduce number of chapters -- having subchapter for 2 lines of code looks ugly in output.

### 2000-05-29 11:53:24  Pavel Machek <pavel@ucw.cz>

  * TODO
  * doc/bird.sgml

  Docs updates.

### 2000-05-29 12:18:30  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Minor fixes as requested by Pavel.

### 2000-05-29 12:46:27  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Capitalize properly in Install section.
  
  BTW, what about configure options and similar things?

### 2000-05-29 13:13:58  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Added Kernel protocol documentation.

### 2000-05-29 13:47:18  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Added introduction to BGP.

### 2000-05-29 21:03:27  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Added BGP documentation.

### 2000-05-29 21:58:35  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Support --version and --help.

### 2000-05-29 22:10:18  Martin Mares <mj@ucw.cz>

  * conf/conf.h
  * nest/cli.c
  * nest/config.Y
  * sysdep/unix/main.c

  Tracing of CLI connections/commands can be now controlled
  by `debug commands <level>' in the configuration. Level 0 means
  no tracing, 1 means connections only, 2 includes all commands.

### 2000-05-29 22:08:04  Martin Mares <mj@ucw.cz>

  * proto/bgp/config.Y

  `path metric' and `disable after error' are switches, not numeric clauses.

### 2000-05-29 22:09:29  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO.

### 2000-05-29 22:16:04  Martin Mares <mj@ucw.cz>

  * client/client.c

  Delay user input whereever appropriate.

### 2000-05-30 10:13:15  Pavel Machek <pavel@ucw.cz>

  * TODO

  More todo in documentation.

### 2000-05-30 10:13:32  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Access to few more attributes is needed.

### 2000-05-30 10:20:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Bug in rt_notify.

### 2000-05-30 10:13:02  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Moved description of filters to programmers docs.

### 2000-05-30 10:23:04  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Cleaning static attributes

### 2000-05-30 11:07:22  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Access to all attributes we should be able to access seems to work.

### 2000-05-30 11:27:42  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Don't say too bad things about our concurence.

### 2000-05-30 11:23:47  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Small change in working to make it obvious we are free software.

### 2000-05-30 11:07:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Better inicialisation.

### 2000-05-30 10:42:00  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Fixed bug in RIP docs.

### 2000-05-30 11:22:12  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Date removed.

### 2000-05-30 10:36:57  Ondrej Filip <feela@network.cz>

  * nest/route.h
  * proto/ospf/ospf.c
  * proto/ospf/rt.c

  Better rt dumping.

### 2000-05-30 11:09:09  Pavel Machek <pavel@ucw.cz>

  * filter/test.conf2

  Another testbed for filters.

### 2000-05-30 10:42:39  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/filter.h
  * nest/config.Y

  Added read-only access to all required fields in rta.

### 2000-05-30 11:15:19  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * doc/bird.conf.example
  * doc/bird.sgml
  * proto/rip/config.Y

  Tried to change garbagetime -> garbage time to be more consistent.

### 2000-05-30 10:53:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Some exchange between init() and start().

### 2000-05-30 11:50:17  Pavel Machek <pavel@ucw.cz>

  * doc/mkdocs
  * doc/sgml2txt
  * doc/sbase/dist/birddoc/groff/mapping

  Recovering after change linuxdoc->birddoc

### 2000-05-30 13:25:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Better dumping.

### 2000-05-30 13:39:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Yeah, the endianity bug found.

### 2000-05-30 15:04:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Bug in socket closing.

### 2000-05-30 15:05:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Bug in direct ack (via update).

### 2000-05-30 15:01:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Bug in lsa comparision.

### 2000-05-30 16:13:59  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Better shutdown.

### 2000-05-30 16:08:29  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Don't send empty LS update.

### 2000-05-30 17:00:17  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Don't run rt calculation twice.

### 2000-05-30 16:49:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Don't send empty LS upd. (And better debugging.)

### 2000-05-30 16:48:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h

  Aging delta changed. (Ehm, aging is very dirty I'll have to change it.)

### 2000-05-30 18:21:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Added \n in debug.

### 2000-05-30 17:49:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Reflood your old lsa.

### 2000-05-30 17:57:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Stupig bug in debugging.

### 2000-05-30 17:51:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/topology.c

  You can decide if add LSA into lsrth during flood_lsa().

### 2000-05-30 19:20:02  Pavel Machek <pavel@ucw.cz>

  * TODO
  * doc/bird.sgml

  Added section about client.

### 2000-05-30 21:25:32  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Route attributes for OSPF.

### 2000-05-30 21:23:49  Martin Mares <mj@ucw.cz>

  * nest/proto.c

  Better formatting of protocol status.

### 2000-05-30 21:24:15  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Killed bug in merging of dynamic attributes.

### 2000-05-30 21:24:53  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Removed several unused local variables.

### 2000-05-30 21:46:21  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l

  Recognize `!'.

### 2000-05-30 22:47:33  Martin Mares <mj@ucw.cz>

  * lib/ipv6.c
  * lib/ipv6.h

  Added ipa_absolutize() which converts link-scope addresses to global scope
  ones according to prefix assigned to the corresponding interface.

### 2000-05-30 22:48:14  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  IPv6: Absolutize link-scope addresses of incoming packets.
  
  IPv6 socket interface is hopefully right now.

### 2000-05-30 23:29:23  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Ehm, in had this in code: "break; i--;" :-(

### 2000-05-31 10:07:27  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Added Pipe documentation.

### 2000-05-31 11:28:07  Martin Mares <mj@ucw.cz>

  * doc/banner.tex
  * doc/status.tex
  * doc/old/banner.tex
  * doc/old/status.tex

  Moved old TeX documents to old/ to make them not interfere with doc building.

### 2000-05-31 11:29:56  Martin Mares <mj@ucw.cz>

  * tools/progdoc

  New progdoc script generating SGML output.

### 2000-05-31 11:29:22  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Added new output format `bird' which creates birddoc SGML.

### 2000-05-31 11:28:52  Martin Mares <mj@ucw.cz>

  * doc/sbase/dist/birddoc/html/mapping
  * doc/sbase/dtd/birddoc.dtd

  Added tags for markup of programmer's documentation.

### 2000-05-31 12:07:09  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Added tagging of external LSA.

### 2000-05-31 11:35:47  Martin Mares <mj@ucw.cz>

  * doc/Makefile

  Modified the Makefile to work in the source tree.
  
  From now, you can just `make userdocs' in doc, no need to use ugly scripts.
  
  Also, `make progdocs' builds the programmer's documentation in HTML,
  LaTeX version to come later.

### 2000-05-31 11:36:21  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in

  Make documentation targets available from the top-level makefile as well,
  but not with separate object tree yet.

### 2000-05-31 11:30:18  Martin Mares <mj@ucw.cz>

  * client/Doc
  * conf/Doc
  * lib/Doc
  * proto/Doc
  * proto/bgp/Doc
  * proto/ospf/Doc
  * proto/pipe/Doc
  * proto/rip/Doc
  * proto/static/Doc
  * sysdep/Doc
  * sysdep/unix/Doc

  Updated all the Doc files to new format.

### 2000-05-31 13:20:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Handle better next hop in external LSA.

### 2000-05-31 12:52:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Very ancient bug in (B)DR election, I didn't fill correctly my own IP.

### 2000-05-31 14:27:49  Martin Mares <mj@ucw.cz>

  * doc/sbase/VERSION
  * doc/sbase/dist/fmt_html.pl
  * doc/sbase/dist/fmt_latex2e.pl
  * doc/sbase/dist/fmt_txt.pl
  * doc/sbase/dtd/common
  * doc/sbase/dtd/isoent

  This should be enough from the SGMLtools distribution to make the
  SGMLtools happy.
  
  The only symlink you need now is dist/birddoc -> dist/sgmltool. I'm
  convinced it could be avoided by renaming the directory instead, but I'd
  rather avoid it due to CVS pecularities.

### 2000-05-31 14:21:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Sort cleanup in aging.

### 2000-05-31 14:06:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  LSArt origination and routing table calculation is now not doing so
  often. Instead of calculation I just schedule it latter.

### 2000-05-31 13:30:29  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Spelling check and update of LocalWords.

### 2000-05-31 13:30:58  Martin Mares <mj@ucw.cz>

  * Doc
  * TODO
  * doc/prog-intro.sgml
  * lib/Doc

  Added the introduction chapter of progdoc.

### 2000-05-31 13:54:00  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml
  * doc/prog-head.sgml

  Updated headings and copyrights.

### 2000-05-31 14:25:27  Martin Mares <mj@ucw.cz>

  * doc/Makefile

  Clean LaTeX .aux and .toc files as well.

### 2000-05-31 14:24:21  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc
  * doc/prog-foot.sgml
  * doc/prog-intro.sgml
  * doc/sbase/dist/birddoc/html/mapping
  * doc/sbase/dist/birddoc/latex2e/mapping
  * doc/sbase/dtd/birddoc.dtd

  Formatting of progdoc works in both HTML and LaTeX. The LaTeX output
  still has somewhat weird spacing, but it will be hopefully easy
  to fix.

### 2000-05-31 15:04:45  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Set E2 metric for internal routes to LSINFINITY.

### 2000-05-31 14:43:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Stuping bug in net LSA origination. Now, I should survive
  loss of my only neighbor.

### 2000-05-31 15:28:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Warning destroyed. :-)

### 2000-05-31 15:24:29  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Flood my LSA (if exists) after old one is flushed.

### 2000-05-31 14:52:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Delete _all_ ext routes from unreachable neighbor.

### 2000-05-31 15:51:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Another step to make premature aging better.

### 2000-05-31 18:21:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c

  And finally, Premature aging works. :-)

### 2000-05-31 18:31:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Better debugging.
  Safe neigh_list deleting.

### 2000-05-31 18:55:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Ehm, some other "down" steps.

### 2000-05-31 18:45:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Some bugs in cleanup after iface down.

### 2000-05-31 18:36:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Why does not work "sk_close(sk);rfree(sk);"?

### 2000-05-31 21:50:13  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/test.conf2

  Complain when filter does not end in accept nor reject.

### 2000-05-31 21:51:04  Pavel Machek <pavel@ucw.cz>

  * TODO
  * doc/bird.sgml

  Documentation update

### 2000-05-31 22:28:36  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c

  Before configuration file is read, log to _both_ syslog and stderr.

### 2000-05-31 22:39:06  Martin Mares <mj@ucw.cz>

  * client/client.c
  * client/cmds.m4
  * client/commands.c

  Both `help' command and the `unknown command' error message now tell
  the user to press `?' if he wants help.

### 2000-06-01 00:22:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Very stuping bug. (I took me 4 hours to find it!)
  I just wrote "=!" instead of "!=". :-(((((((

### 2000-06-01 00:32:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Cleanup.

### 2000-06-01 08:32:49  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c
  * filter/test.conf2

  Allow matching on enums:
  
          if !(scope ~ [ SCOPE_HOST, SCOPE_SITE ]) then {
                  print "Failed in test";
                  quitbird;
          }

### 2000-06-01 08:34:30  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y
  * filter/filter.c

  Allow
                 case net {
                         62.0.0.0/8+:
                         10.0.0.0/8+:
                         else: reject;
                 }

### 2000-06-01 08:43:29  Pavel Machek <pavel@ucw.cz>

  * conf/cf-lex.l
  * conf/confbase.Y
  * filter/config.Y
  * filter/filter.c
  * filter/test.conf

  Added && and ||.

### 2000-06-01 12:17:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Print tag unsigned rather then signed.

### 2000-06-01 12:08:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Calculate checksum when reflooding (after min ls_refresh).

### 2000-06-01 13:00:19  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Updated to new neighbor cache.

### 2000-06-01 12:59:50  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Updated RIP to new neighbor cache semantics. When presented with next hop
  equal to a local address, just ignore the route (as it is usually just an
  external route exported by us echoed by some RIP peer), when given an
  invalid next hop, moan to the log.

### 2000-06-01 12:58:41  Martin Mares <mj@ucw.cz>

  * sysdep/linux/krt-scan.c
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-iface.c

  Updated for new scope handling.
  
  Also, provide proper address scopes in struct ifa.

### 2000-06-01 12:58:04  Martin Mares <mj@ucw.cz>

  * nest/iface.h
  * nest/neighbor.c

  Modified the neighbor cache to remember local addresses as well.
  
  neighbor->scope now contains proper address scope which is zero (SCOPE_HOST)
  for local addresses, higher (SCOPE_LINK, ..., SCOPE_UNIVERSE) for remote ones.

### 2000-06-01 12:55:26  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  BGP: RFC 2842 has replaced the cap-draft.

### 2000-06-01 13:00:39  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.c

  Print route tag in hexadecimal and omit it if it's zero.

### 2000-06-01 13:13:49  Martin Mares <mj@ucw.cz>

  * nest/neighbor.c

  Inactive sticky neighbors have no scope.

### 2000-06-01 15:13:23  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  tm_format_reltime() works with both past and future timestamps.

### 2000-06-01 15:04:25  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Use <funcsect> instead of <sect3>.

### 2000-06-01 15:53:06  Ondrej Filip <feela@network.cz>

  * doc/reply_codes
  * proto/ospf/config.Y
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Cisco-like "show ospf neighbors" implemented.

### 2000-06-01 16:16:18  Martin Mares <mj@ucw.cz>

  * nest/route.h
  * nest/rt-fib.c

  FIB documentation.
  
  I've changed the init callback type to a typedef to work around a bug
  in kernel-doc I'm too lazy to hunt now.

### 2000-06-01 16:17:02  Martin Mares <mj@ucw.cz>

  * nest/Doc
  * nest/locks.c
  * nest/neighbor.c

  Documented.

### 2000-06-01 16:26:59  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  show ospf implemented.

### 2000-06-01 16:17:29  Martin Mares <mj@ucw.cz>

  * nest/iface.h

  Removed comments about workings of the old neighbor cache which are
  (1) obsolete and (2) replaced by the progdoc.

### 2000-06-01 16:45:10  Ondrej Filip <feela@network.cz>

  * doc/reply_codes

  Some other reply codes allocated.

### 2000-06-01 17:11:10  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Better handling of parameterless functions.

### 2000-06-01 17:12:19  Martin Mares <mj@ucw.cz>

  * nest/Doc
  * nest/rt-table.c

  Documentation.

### 2000-06-01 17:52:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Added show ospf interface.
  show ospf neighbors now knows "<interface>".

### 2000-06-02 08:01:12  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/test.conf

  Do not try to divide by zero.

### 2000-06-02 07:59:26  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Results of complete reading of documentation.

### 2000-06-02 09:46:35  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Minor fixes.

### 2000-06-02 09:57:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Silly bug in sh interface. Now I test ALL interfaces. :-)

### 2000-06-02 09:51:26  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Spelling fixes.

### 2000-06-02 09:42:24  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c

  Bugfix in lsreq receiving.

### 2000-06-02 09:35:17  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Made it *compile* !!!

### 2000-06-02 10:21:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Handle "show ospf *" even if protocol is down.

### 2000-06-02 09:53:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Speedup loading process.

### 2000-06-02 11:24:38  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  sh interface "iface" dumpped all.

### 2000-06-02 11:00:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Better dumping, if I get strange lsack.

### 2000-06-02 12:29:55  Martin Mares <mj@ucw.cz>

  * nest/Doc
  * nest/rt-attr.c
  * nest/rt-table.c

  Documentation on routing tables and route attributes.

### 2000-06-02 12:29:24  Martin Mares <mj@ucw.cz>

  * nest/route.h

  Removed rta_find() since nobody uses it and it's more convenient
  to use ea_find() directly.

### 2000-06-02 13:27:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Bugfix in receiving of aged LSA.

### 2000-06-02 12:41:25  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  Better description of the route distribution process.

### 2000-06-02 12:34:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Better LSA Aging.

### 2000-06-02 13:52:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.h
  * proto/ospf/lsupd.c

  Flush LSA when receive aged one.

### 2000-06-02 13:42:37  Martin Mares <mj@ucw.cz>

  * doc/prog-proto.sgml
  * nest/Doc
  * nest/proto.c

  Added documentation on protocols.
  
  Protocol hooks deserve an extra chapter (to come soon).

### 2000-06-02 15:05:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  First option into config added. :-)

### 2000-06-02 17:22:43  Martin Mares <mj@ucw.cz>

  * doc/sbase/dist/birddoc/latex2e/mapping
  * doc/tex/birddoc.sty
  * doc/tex/null.sty
  * doc/tex/qwertz.sty
  * doc/tex/url.sty

  Typographical enhancements. Now, the documentation is typeset using a modified
  book style.
  
  Please look at this version and tell me your opinion. Especially I don't feel
  happy about the spacing and (not) indenting of paragraphs.
  
  Also, I've removed things like "fax" and "letter" from the LaTeX mapping file.

### 2000-06-02 17:23:53  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml
  * doc/kernel-doc
  * doc/prog-foot.sgml
  * doc/prog-head.sgml
  * doc/prog-intro.sgml
  * doc/prog-proto.sgml
  * tools/progdoc

  Use <chapt> for chapters, <sect> for sections and <sect1> for subsections.

### 2000-06-02 17:24:11  Martin Mares <mj@ucw.cz>

  * nest/Doc
  * nest/proto-hooks.c

  Documented protocol hooks.

### 2000-06-02 17:41:43  Martin Mares <mj@ucw.cz>

  * TODO

  New TODO list.

### 2000-06-02 17:42:21  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Killed several bugs in kernel-doc. The most painful one was that it
  was unable to recognize structure markers `&'.

### 2000-06-02 19:55:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  area {} added to config.

### 2000-06-03 01:29:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/lsack.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  interface {} added.

### 2000-06-03 08:42:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Multiple items in area {} :-)

### 2000-06-03 09:50:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.h

  More conf. items defined.

### 2000-06-03 14:40:39  Martin Mares <mj@ucw.cz>

  * nest/Doc
  * nest/cli.c
  * nest/iface.c

  More documentation.

### 2000-06-03 16:56:00  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  cf_symbol_class_name now recognizes SYM_IPA.

### 2000-06-03 17:02:30  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Recognize `|xxxx|' as verbatim text and typeset it using <tt>.

### 2000-06-03 18:22:43  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  `|' now works as it should.

### 2000-06-03 18:23:27  Martin Mares <mj@ucw.cz>

  * Doc
  * nest/cli.c

  Minor changes to the progdocs.

### 2000-06-03 18:23:00  Martin Mares <mj@ucw.cz>

  * conf/Doc
  * conf/cf-lex.l
  * conf/conf.c
  * conf/confbase.Y

  Documentation.

### 2000-06-04 15:22:20  Martin Mares <mj@ucw.cz>

  * conf/Doc
  * conf/cf-lex.l
  * conf/confbase.Y

  Moved parser docs to cf-lex.l, so that the parser compiles.

### 2000-06-04 16:15:37  Martin Mares <mj@ucw.cz>

  * Doc
  * proto/Doc
  * proto/pipe/Doc
  * proto/pipe/pipe.c
  * proto/static/Doc
  * proto/static/static.c

  Documented all the trivial protocols.

### 2000-06-04 16:12:01  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Small change to make bison happy.

### 2000-06-04 16:16:08  Martin Mares <mj@ucw.cz>

  * nest/rt-dev.c

  Document.

### 2000-06-04 16:17:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Another clean up.

### 2000-06-04 17:10:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  :-) No bison does not have any comment to my code. :-)

### 2000-06-04 17:06:18  Martin Mares <mj@ucw.cz>

  * proto/bgp/Doc
  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/packets.c

  BGP documented.

### 2000-06-04 16:36:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Clean up.

### 2000-06-04 17:33:15  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Bug in debugging.

### 2000-06-04 17:51:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Just to be sure, that rt calculation cannot start beforeorigination of rt LSA.

### 2000-06-04 19:20:28  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Many bugs in ext lsa origination.

### 2000-06-04 18:34:39  Martin Mares <mj@ucw.cz>

  * lib/Doc
  * lib/bitops.c
  * lib/checksum.c
  * lib/ip.c
  * lib/lists.c
  * lib/patmatch.c
  * lib/printf.c
  * lib/xmalloc.c

  Added library progdocs.

### 2000-06-04 19:21:23  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Install newer lsa even if nothing in its body change.

### 2000-06-04 18:46:30  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  When cloning a rte and replacing its rta, remember to free the old one
  so that we don't leak memory. Thanks go to the resource tracking system
  for quickly discovering the source of leakages.

### 2000-06-04 19:19:36  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Schedule RT calcualtion if you delete LSA by premature aging.

### 2000-06-04 19:30:55  Martin Mares <mj@ucw.cz>

  * filter/config.Y

  Use nested scopes properly. Updated according to cf_define_symbol() changes.
  
  The rest of code doesn't need changing since it doesn't use nesting.

### 2000-06-04 19:30:13  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.h

  Nested scopes could never have worked. My fault I wrote such a buggy code,
  Pavel's fault that he's never tested shadowing of declarations in the filters.
  
  cf_define_symbol() has been modified to check the scope of the symbol it's
  given and it if it's an already defined symbol, but in a different scope,
  a copy is created in the current scope and redefined to the new meaning,
  the consequence being that it cf_define_symbol() now returns the new symbol
  you need to use when assigning aux and aux2.

### 2000-06-04 19:56:06  Martin Mares <mj@ucw.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/rt.c
  * proto/rip/auth.c
  * proto/rip/rip.h
  * proto/static/static.c
  * sysdep/linux/netlink/netlink.c

  Removed lots of trailing newlines in log messages.
  
  Please note that the only calls which don't add newlines automatically
  (i.e., don't print a full line of output) are debug() and DBG().

### 2000-06-04 19:57:04  Martin Mares <mj@ucw.cz>

  * proto/ospf/lsupd.c

  One more newline less... :)

### 2000-06-04 20:06:42  Martin Mares <mj@ucw.cz>

  * TODO

  Updated the TODO list with our last-minute stuff.
  
  Moved the rest to "Various ideas".

### 2000-06-04 20:00:35  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Don't set precedence and TTL for the dummy socket.

### 2000-06-04 19:55:11  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  debug -> DBG

### 2000-06-05 02:23:20  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Many bugfixes (I don't remember all of them):
  Added link ID calculation for external routes with same prefix but
  	different mask.
  Bugfix in NET lsa origination.
  Bugfix in NET hashing.
  Bugfix in LSA installing.

### 2000-06-05 03:46:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Small patch to better hash type=2 LSAs.

### 2000-06-05 05:06:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Bug in LSA origination.

### 2000-06-05 05:06:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Premature age LSA if you're NOT dr.

### 2000-06-05 09:51:24  Martin Mares <mj@ucw.cz>

  * Doc
  * TODO
  * doc/Doc
  * doc/prog-proto.sgml
  * nest/Doc
  * nest/proto.sgml
  * tools/progdoc

  Description of protocol module moved to where it belongs. If documentation
  of standard modules is stored in their source, such auxilliary files
  should be as well.

### 2000-06-05 10:01:09  Martin Mares <mj@ucw.cz>

  * nest/proto.sgml

  Spelling.

### 2000-06-05 11:46:40  Martin Mares <mj@ucw.cz>

  * sysdep/unix/Doc
  * sysdep/unix/Modules
  * sysdep/unix/io.c
  * sysdep/unix/random.c

  Split random number functions off io.c, so that they can be documented
  separately.

### 2000-06-05 11:41:41  Martin Mares <mj@ucw.cz>

  * lib/Doc
  * lib/mempool.c
  * lib/resource.c
  * lib/resource.sgml
  * lib/slab.c

  Documented memory resources.

### 2000-06-05 12:19:12  Martin Mares <mj@ucw.cz>

  * lib/Doc
  * lib/event.c
  * lib/resource.sgml
  * nest/Doc
  * sysdep/unix/io.c

  Documented sockets, events and timers.

### 2000-06-05 12:49:04  Martin Mares <mj@ucw.cz>

  * sysdep/Doc
  * sysdep/sysdep.sgml
  * sysdep/unix/Doc
  * sysdep/unix/krt.c
  * sysdep/unix/log.c

  Documented all the sysdeps (only briefly, I admit).
  
  Except for Filters, RIP and OSPF, the progdocs are complete.

### 2000-06-05 12:52:57  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml
  * filter/filter.c
  * proto/rip/auth.c
  * proto/rip/rip.c

  Updates to both programmers and users doc

### 2000-06-05 15:06:26  Ondrej Filip <feela@network.cz>

  * filter/filter.c

  Bug in comment. It didn't compile.

### 2000-06-05 15:41:44  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  Add safety check.

### 2000-06-05 15:44:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Don;t send packet over downed interface.

### 2000-06-05 16:13:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  I calculated next hop of parent instead of actual LSA. :-(

### 2000-06-05 15:41:29  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Better error messages

### 2000-06-05 16:19:27  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Print out function synopsis as a part of the declaration.
  
  Also, reverted my previous hack for `&' and replaced it by just disabling
  the `& -> &amp;' conversions.

### 2000-06-05 17:13:36  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * proto/rip/auth.c
  * proto/rip/rip.c

  Better documentation. There are functions whose description is good when
  reading source but whose documentation does not belong to progdocs.

### 2000-06-05 16:36:16  Pavel Machek <pavel@ucw.cz>

  * doc/Makefile
  * doc/bird.sgml
  * filter/Doc
  * proto/rip/Doc

  Docs updates:
  
  make prog.dvi
  
  do not overflow in .dvi
  
  include filter documentation in the system

### 2000-06-05 16:32:29  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Yet another change, now flushing of net lsa seems to be perfect. :-)

### 2000-06-05 16:42:54  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Make rip example fit on page.

### 2000-06-05 18:09:15  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Better checksum checking.

### 2000-06-05 18:09:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  First calculate checksum and then send refreshed LSA!

### 2000-06-05 19:12:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  PTP link in RTLSA was not announced correctly.

### 2000-06-05 18:32:51  Martin Mares <mj@ucw.cz>

  * proto/ospf/config.Y

  Simplified the grammar and fixed several minor bugs (e.g., `INTERFACE "eth0" };'
  was a valid entry).

### 2000-06-05 18:40:25  Martin Mares <mj@ucw.cz>

  * TODO
  * proto/ospf/ospf.c
  * proto/ospf/topology.c

  Unless a filter specifies otherwise, all external routes have type 2
  metric 10000.

### 2000-06-05 19:08:27  Martin Mares <mj@ucw.cz>

  * doc/sbase/dist/birddoc/latex2e/mapping

  Avoid using style combinations such as italic typewriter font.

### 2000-06-05 19:17:37  Martin Mares <mj@ucw.cz>

  * doc/sbase/dist/birddoc/latex2e/mapping
  * doc/tex/birddoc.sty

  Move TeX trickery for typesetting of function descriptions to where
  it belongs.

### 2000-06-05 19:45:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/lsack.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c

  Reset inactim timer if you receive any packet from neighbor.

### 2000-06-05 19:35:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Removed some FIXMEs by deleting them.

### 2000-06-05 19:31:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Don't info about DR and BDR on non-MA networks.

### 2000-06-05 20:24:42  Martin Mares <mj@ucw.cz>

  * doc/tex/birddoc.sty

  Minor tweaks of spacing.

### 2000-06-05 21:26:11  Martin Mares <mj@ucw.cz>

  * nest/iface.c

  Avoid sentence containing a colon to start new doc subsection.

### 2000-06-05 21:01:58  Martin Mares <mj@ucw.cz>

  * doc/kernel-doc

  Don't print empty synopses of functions.

### 2000-06-05 20:57:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Bugfix in NET LSA flushing.
  Configuration now works! :-)
  Better "show ospf"
  Some minor bugfixes.

### 2000-06-05 21:09:03  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example

  Added example of OSPF configuration.

### 2000-06-05 21:02:57  Martin Mares <mj@ucw.cz>

  * doc/prog-head.sgml
  * doc/sbase/dist/birddoc/groff/mapping
  * doc/sbase/dist/birddoc/html/mapping
  * doc/sbase/dist/birddoc/latex2e/mapping
  * doc/sbase/dtd/birddoc.dtd
  * doc/tex/birddoc.sty

  Define element <progdoc> which initializes different formatting for the
  programmer's guide (\raggedbottom etc.).
  
  Also, omit "\usepackage{t1enc}", so that bullets work now.

### 2000-06-06 00:16:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Some useles variable deleted.

### 2000-06-06 00:21:06  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example

  Added NBMA into examples.

### 2000-06-06 00:08:27  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsupd.c
  * proto/ospf/packet.c
  * proto/ospf/packet.h

  NBMA networks seems to work, but this should be better. :-)

### 2000-06-06 00:16:03  Ondrej Filip <feela@network.cz>

  * Makefile

  Some useless variable deleted.

### 2000-06-05 23:44:26  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/ospf.h

  NBMA networks should work now.

### 2000-06-06 01:00:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/neighbor.c

  All die() renamed to bug().

### 2000-06-06 00:52:35  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Dummy reconfigure added.

### 2000-06-06 00:46:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/ospf.h

  Interface locks added.

### 2000-06-06 01:23:03  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example
  * proto/ospf/config.Y
  * proto/ospf/iface.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  Simple autentication added.

### 2000-06-06 02:27:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Tracing in topology

### 2000-06-06 01:46:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/topology.c

  Allocate OSPF areas before interfaces.

### 2000-06-06 02:16:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Tracing in LSUPD.

### 2000-06-06 02:09:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  First part of tracing.

### 2000-06-06 02:32:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Tracing in LS ack.

### 2000-06-06 02:54:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Some '\n' deleted.

### 2000-06-06 02:42:24  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/neighbor.c
  * proto/ospf/rt.c

  Tracing.

### 2000-06-06 02:43:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Deleted some debug()

### 2000-06-06 11:05:12  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Don't let example overflow, and new chapter for "about routing tables".

### 2000-06-06 11:50:48  Ondrej Filip <feela@network.cz>

  * nest/locks.h
  * proto/ospf/iface.c

  Added IP protocols.

### 2000-06-06 11:58:25  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Typos in Static section.

### 2000-06-06 11:53:22  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Merged mj's changes, up-to "import filter".

### 2000-06-06 12:50:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Better dumping neighbors' states on PTP interface.

### 2000-06-06 20:35:59  Pavel Machek <pavel@ucw.cz>

  * bird.conf
  * doc/bird.sgml

  Batch of mj's corrections (config + filters)

### 2000-06-06 20:54:05  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  mj's fixes to rip documentation.

### 2000-06-07 00:56:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Reconfiguration hook.
  It will survive many timer and constat changes.

### 2000-06-07 01:19:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Removed useless trace.

### 2000-06-07 01:03:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Some minor changes:
  Typo: transit delay!=transmit delay
  Zero checks etc.

### 2000-06-07 01:18:36  Ondrej Filip <feela@network.cz>

  * lib/ipv4.h
  * lib/ipv6.h
  * proto/ospf/ospf.h

  #define SIZE_OF_IP_HEADER

### 2000-06-07 12:27:18  Martin Mares <mj@ucw.cz>

  * doc/Makefile
  * doc/prog-spell.sed

  Added `progspell' target which runs ispell on the progdoc SGML file with
  all function, variable and structure names removed.

### 2000-06-07 11:55:36  Martin Mares <mj@ucw.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsupd.c

  Avoid SEGV's in tracing.

### 2000-06-07 12:27:30  Martin Mares <mj@ucw.cz>

  * TODO

  Updated TODO file.

### 2000-06-07 12:29:08  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.c
  * filter/filter.c
  * lib/checksum.c
  * lib/ip.c
  * lib/xmalloc.c
  * nest/cli.c
  * nest/proto-hooks.c
  * nest/proto.c
  * nest/rt-attr.c
  * nest/rt-dev.c
  * nest/rt-table.c
  * proto/bgp/bgp.c
  * proto/rip/rip.c
  * sysdep/sysdep.sgml
  * sysdep/unix/io.c
  * sysdep/unix/krt.c
  * sysdep/unix/log.c

  Spelling fixes to progdoc.

### 2000-06-07 13:25:53  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.c
  * doc/prog-intro.sgml
  * lib/event.c
  * lib/resource.sgml
  * lib/slab.c
  * nest/cli.c
  * nest/locks.c
  * nest/neighbor.c
  * nest/proto-hooks.c
  * nest/proto.sgml
  * nest/rt-fib.c
  * nest/rt-table.c
  * proto/bgp/bgp.c
  * proto/rip/rip.c
  * sysdep/unix/io.c
  * sysdep/unix/krt.c

  Fixes to the progdoc.

### 2000-06-07 13:28:54  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Bugfix in <>.

### 2000-06-07 12:35:43  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  OSPF user documentation added.

### 2000-06-07 13:15:48  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  SGML syntax fix.

### 2000-06-07 13:19:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Originate rt lsa before sending first dbdes.

### 2000-06-07 14:16:11  Pavel Machek <pavel@ucw.cz>

  * filter/Doc
  * filter/filter.c
  * filter/tree.c

  Even better documentation of filters.

### 2000-06-07 14:06:37  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  RIPv6 now works.

### 2000-06-07 14:00:17  Pavel Machek <pavel@ucw.cz>

  * filter/tree.c

  Comment fix.

### 2000-06-07 14:01:18  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Better example for OSPF configuration.

### 2000-06-07 13:54:06  Pavel Machek <pavel@ucw.cz>

  * filter/Doc
  * filter/filter.c
  * filter/tree.c

  Better progdocs for filters

### 2000-06-07 13:54:24  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Spelling and style corrections to the OSPF section.

### 2000-06-07 13:30:02  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Full list of possible values in attributes, better operators description.

### 2000-06-07 14:12:13  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Better explanation of OSPF attributes. But it's still not perfect.

### 2000-06-07 14:12:44  Martin Mares <mj@ucw.cz>

  * TODO

  Updated.

### 2000-06-07 13:58:49  Pavel Machek <pavel@ucw.cz>

  * proto/rip/rip.c

  rip ipv6 bugfix

### 2000-06-07 13:46:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Now I can change cost of interface without OSPF restart.

### 2000-06-07 14:08:14  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Spelling.

### 2000-06-07 13:32:10  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Minor tagging fixes in OSPF docs.

### 2000-06-07 14:39:34  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Better explanation for if/case, and RFC pointers for rip. Still searching for
  RIPv2 rfc number!

### 2000-06-07 15:27:16  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Added brief description of client features. Grammar really is not good place to write help from, so please check this.

### 2000-06-07 14:45:55  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/tree.c

  Progdocs updates

### 2000-06-07 21:12:00  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h

  A copyright change.

### 2000-06-07 20:50:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Doc

### 2000-06-07 20:30:27  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Introdution into OSPF.

### 2000-06-07 21:56:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c
  * proto/ospf/packet.h

  Doc.

### 2000-06-07 21:46:22  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Doc in neighbor.c and some tiny changes related to.

### 2000-06-07 22:10:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/Doc
  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/lsack.c
  * proto/ospf/ospf.c

  Doc

### 2000-06-07 21:50:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  Removed some FIXMEs simply deleting them.

### 2000-06-07 22:56:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/hello.h

  Minor changes.

### 2000-06-07 22:57:59  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Minor change.

### 2000-06-07 23:23:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/Doc
  * proto/ospf/rt.c

  Doc.

### 2000-06-07 22:31:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/Doc
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsupd.c
  * proto/ospf/topology.c

  Doc in lsalib.c + related minor changes.

### 2000-06-07 23:05:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Simple explanation, how LSA are kept in database.

### 2000-06-07 22:53:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/Doc
  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h

  Doc

### 2000-06-07 23:34:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/rt.c

  I mark all LSA as in distance INFINITY in process of aging.
  I don't have to WALK twice through it.

### 2000-06-07 23:48:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.h

  Better algoritmus of LSA aging.

### 2000-06-08 02:28:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Still some endianity bugs.

### 2000-06-08 02:04:45  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  I forgot some endianity operations.

### 2000-06-08 01:49:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h

  Ehm, my (B)DR election was based on router id, but RFC says ip!

### 2000-06-08 08:24:32  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c

  Better messages

### 2000-06-08 10:25:02  Martin Mares <mj@ucw.cz>

  * nest/config.Y
  * proto/ospf/config.Y
  * sysdep/unix/config.Y

  Updated CLI helps.

### 2000-06-08 10:26:19  Pavel Machek <pavel@ucw.cz>

  * filter/config.Y

  Fixing error messages.

### 2000-06-08 10:24:42  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Docs updates.

### 2000-06-08 10:27:01  Martin Mares <mj@ucw.cz>

  * TODO

  Updated.

### 2000-06-08 10:25:56  Pavel Machek <pavel@ucw.cz>

  * nest/config.Y

  Use `switch' for `disabled'.

### 2000-06-08 11:05:19  Martin Mares <mj@ucw.cz>

  * doc/tex/birddoc.sty

  Set margins.

### 2000-06-08 11:00:15  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Introduction to configuration of OSPF.

### 2000-06-08 10:30:55  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Tiny fixes.

### 2000-06-08 10:48:51  Martin Mares <mj@ucw.cz>

  * sysdep/unix/config.Y

  ... as well there.

### 2000-06-08 10:48:35  Martin Mares <mj@ucw.cz>

  * nest/config.Y

  Oops!  Configuration compiles now.

### 2000-06-08 12:04:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  HASH_DEF_ORDER back to 6.

### 2000-06-08 12:37:21  Martin Mares <mj@ucw.cz>

  * conf/cf-lex.l
  * conf/conf.c
  * doc/prog-intro.sgml
  * doc/tex/birddoc.sty
  * filter/filter.c
  * lib/ip.c
  * lib/resource.sgml
  * nest/cli.c
  * nest/proto.sgml
  * nest/rt-table.c
  * proto/ospf/ospf.c
  * proto/static/static.c
  * sysdep/unix/krt.c
  * sysdep/unix/log.c

  Fixes for the programmer's manual.

### 2000-06-08 12:56:59  Martin Mares <mj@ucw.cz>

  * doc/bird.sgml

  Fixes.

### 2000-06-08 12:42:34  Martin Mares <mj@ucw.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/ospf.c

  Missing parameters...

### 2000-06-08 12:38:16  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml
  * doc/sbase/dist/birddoc/latex2e/mapping

  More spellchecking and typographic changes.

### 2000-06-08 14:06:20  Pavel Machek <pavel@ucw.cz>

  * doc/bird.sgml

  Final version of documentation (famous last words)

### 2000-06-08 15:22:06  Martin Mares <mj@ucw.cz>

  * tools/Makefile-top.in

  When distcleaning, clean up doc as well.

### 2000-06-08 15:44:52  Martin Mares <mj@ucw.cz>

  * README

  Updated distribution README.

### 2000-06-08 16:57:41  Pavel Machek <pavel@ucw.cz>

  * filter/filter.c
  * filter/test.conf

  Fix i_same for 'c' instruction.

### 2000-06-08 19:02:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Don't send dbdes before rtlsa origination.

### 2000-06-08 19:14:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Acknoledge your own premature aged LSA.

### 2000-06-08 19:16:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Nasty bug in LSA refreshing. I didn't refesh my own copy! :-(

### 2000-06-09 06:46:58  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Before building distribution tarballs, make distclean first.

### 2000-06-09 06:49:43  Martin Mares <mj@ucw.cz>

  * README

  Added a `What is missing' section.

### 2000-06-09 06:31:43  Martin Mares <mj@ucw.cz>

  * doc/Makefile
  * doc/mkdocs
  * doc/printme
  * tools/Makefile-top.in
  * tools/Makefile.in
  * tools/Rules.in

  Proper building and installation of documentation in the Makefiles.

### 2000-06-09 06:45:48  Martin Mares <mj@ucw.cz>

  * README
  * sysdep/config.h
  * tools/gendist

  Released as 1.0.0, but marked it as a BETA version.

### 2000-06-09 06:54:01  Martin Mares <mj@ucw.cz>

  * proto/ospf/rt.c

  Shut up an uninitialized variable warning.

### 2000-06-09 07:52:57  Martin Mares <mj@ucw.cz>

  * tools/gendist

  bird-1.0.0 has been released.

### 2000-06-09 07:32:57  Martin Mares <mj@ucw.cz>

  * sysdep/unix/log.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  During initialization, log to both syslog and stderr. When a configuration
  file has been read and it doesn't specify any logging, log to syslog only
  (if syslog is not available, then stderr).

### 2000-06-09 07:30:22  Martin Mares <mj@ucw.cz>

  * client/client.c
  * sysdep/unix/io.c

  Use SUN_LEN() for length of UNIX domain addresses. This should fix problems
  with connection to clients on libc5 machines.

### 2000-06-13 19:03:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Bugfix in logging.

### 2000-06-16 23:12:47  Martin Mares <mj@ucw.cz>

  * TODO
  * client/client.c
  * sysdep/unix/unix.h

  Use our own SUN_LEN if libc doesn't provide it.

### 2000-06-18 19:49:32  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-scan.h
  * sysdep/linux/netlink/netlink.Y

  Fix numbering of routing tables in IPv6 version.

### 2000-06-19 15:12:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Routing table calculation clean up.

### 2000-06-19 23:50:02  Martin Mares <mj@ucw.cz>

  * TODO
  * sysdep/unix/log.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  If compiled with --enable-debug, don't even try to log to syslog unless
  the user forces it in the config file.

### 2000-06-20 07:49:08  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c

  Don't accept incoming connections when the neighbor is not up.

### 2000-06-21 09:58:09  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Check broadcast address sanity before believing it.

### 2000-06-21 19:40:46  Pavel Machek <pavel@ucw.cz>

  * nest/route.h
  * proto/rip/rip.c

  RIP bugfix

### 2000-06-21 22:08:46  Martin Mares <mj@ucw.cz>

  * sysdep/config.h

  Released as version 1.0.1.

### 2000-06-21 22:11:29  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Include CVS ChangeLog in the distribution

### 2000-06-26 20:02:30  Martin Mares <mj@ucw.cz>

  * doc/slides/Makefile
  * doc/slides/logo.eps
  * doc/slides/obr1.eps
  * doc/slides/obr2.eps
  * doc/slides/obr5.eps
  * doc/slides/slides.tex
  * tools/gendist

  Added slides for our presentation, but don't export them to the
  distribution tarball -- they are in Czech and therefore of no use
  to almost anybody :(

### 2000-08-16 19:03:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Bug in rte_better.

### 2000-08-16 19:37:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  My calculation of external routes violated rfc. :-(

### 2000-08-16 20:18:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Typo in rte_better.

### 2000-08-17 19:42:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Stupid bug in next hop calculation of external routes.

### 2000-08-18 16:36:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  Just formatting.

### 2000-08-18 16:47:27  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Typo.

### 2000-08-18 16:44:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Fixed bug in nex hop calculation of external routes.

### 2000-08-23 06:51:26  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Released as version 1.0.2.

### 2000-08-24 20:08:00  Ondrej Filip <feela@network.cz>

  * misc/bird.init
  * misc/bird.spec

  Added files for RPM building.

### 2000-08-25 12:26:03  Ondrej Filip <feela@network.cz>

  * misc/bird.init

  Minor bug. It does not work on non RH systems. Thanx to
  	Craig Bourne <cbourne@cbourne.com>

### 2000-08-28 13:51:13  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Bugfix in ext lsa importing.

### 2000-08-28 14:32:11  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Better ospf metric explanation.

### 2000-09-02 00:15:07  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Reconfiguration for new options.

### 2000-09-02 00:14:46  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example

  More examples.

### 2000-09-02 00:03:36  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * proto/ospf/config.Y
  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/iface.c
  * proto/ospf/ospf.h

  Added hellos on NBMA networks. (I don't violate RFC now.)

### 2000-09-02 07:58:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Reconfigure poll interval.

### 2000-09-02 08:54:40  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * proto/ospf/config.Y
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  Added stub interface. (Interface which is propagated to OSPF but
  it does not sends nor listens packets.)
  
  I added some new options, please look at it and look into doc if it's OK.

### 2000-09-03 06:54:35  Ondrej Filip <feela@network.cz>

  * tools/gendist

  Small bugfix. (Use atrey.karlin.... instead of atrey.)

### 2000-09-03 16:16:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Log some unusual situation.

### 2000-09-03 16:21:14  Ondrej Filip <feela@network.cz>

  * tools/gendist

  Another atrey->atrey.karlin.mff.cuni.cz

### 2000-09-03 17:53:12  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Version 1.0.3 released.

### 2000-09-03 18:13:00  Ondrej Filip <feela@network.cz>

  * misc/bird.spec

  Version 1.0.3.

### 2000-09-03 18:27:21  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Some misspells.

### 2000-09-03 22:18:40  Ondrej Filip <feela@network.cz>

  * misc/bird.spec
  * proto/ospf/lsalib.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c
  * sysdep/config.h

  Serious bug in ext lsa origination found. Going for 1.0.4.

### 2000-09-04 19:42:17  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  I allocate struct ifa before unlocking. So route exported to OSPF are correct.
  I work also with interfaces that have some problems with socket opening.
  I declare them as stub.

### 2000-09-04 21:21:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/rt.c

  Fixed many bugs in rt calculation and interface adding. Now it seems to be
  OK, I'm going to advertise 1.0.4.

### 2000-09-09 19:21:01  Ondrej Filip <feela@network.cz>

  * misc/bird.init
  * misc/bird.spec

  Minor rpm changes to make RedHat happy.

### 2000-11-08 17:06:35  Ondrej Filip <feela@network.cz>

  * nest/iface.c

  Bugfix in iface_patts_equal.
  When both patterns were NULL strcmp it sigfaulted.

### 2000-11-08 22:46:54  Ondrej Filip <feela@network.cz>

  * nest/iface.c

  Yet another nasty bugfix of iface_patts_equal().

### 2000-11-21 23:47:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Small bugfix in ext routes calculation.

### 2000-12-14 01:04:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Hmm, nasty bug, LSUPD was not well flooded via PTP interfaces. :-(

### 2001-01-08 11:13:01  Martin Mares <mj@ucw.cz>

  * nest/password.c

  Fixed infinite recursion in password_same.
  
  Pavel, please check.

### 2001-01-15 09:24:16  Martin Mares <mj@ucw.cz>

  * lib/lists.h

  Added an explanatory comment.

### 2001-01-17 08:32:28  Martin Mares <mj@ucw.cz>

  * lib/mempool.c

  Bug fix from Zheng Yuan <zyuan1@cig.mot.com>.

### 2001-01-19 20:30:08  Martin Mares <mj@ucw.cz>

  * doc/slt2001/Makefile
  * doc/slt2001/slt.tex

  Added paper for my talk about BIRD at SLT 2001.

### 2001-02-20 09:49:19  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  Fixed duplicity in log category numbering.
  
  Thanks to Zheng Yuan for spotting this.

### 2001-03-06 13:40:39  Martin Mares <mj@ucw.cz>

  * client/client.c
  * sysdep/unix/io.c
  * sysdep/unix/log.c
  * sysdep/unix/timer.h

  Fixed <time.h> vs. <sys/time.h> problems.

### 2001-04-09 19:15:03  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Patch from David Rohleder <davro@ics.muni.cz> thanx.

### 2001-06-09 15:13:38  Ondrej Filip <feela@network.cz>

  * misc/bird.spec
  * sysdep/config.h

  Yes, 1.0.5 released.

### 2001-06-09 14:56:01  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.h

  Added comments.

### 2001-06-09 14:55:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c
  * proto/ospf/rt.c

  Bug in next-hop calculation fixed. (For dual connected neighbors.)

### 2001-06-12 21:10:30  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Install route into main routing table just if it's necessary.

### 2001-08-03 08:44:51  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Don't loop forever when trying to skip an out-sequence netlink reply.

### 2001-08-11 14:01:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c

  I will not originate the same lsa before MINLSINTERVAL.

### 2001-08-11 14:40:51  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Bugfix in B-bit setting in router LSA.

### 2001-08-11 16:22:29  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * proto/ospf/config.Y

  Changed definition of stub area.

### 2001-08-12 00:04:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Area networks added into configuration.

### 2001-08-12 00:09:47  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Dokumented switch network.

### 2001-08-19 11:15:24  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c
  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/topology.c
  * proto/static/static.c

  Fix %<something>I format strings.

### 2001-08-19 11:11:44  Martin Mares <mj@ucw.cz>

  * lib/printf.c

  IP address formatting now uses the same rules as formatting of strings
  with two exceptions:
  
     o  Any non-zero field width is automatically replaced by standard
        IP address width. This hides dependences on IPv4/IPv6.
     o  %#I generates hexadecimal form of the address.
  
  Therefore |%I| generates unpadded format, |%1I| full size flush-right,
  and |%-1I| full size flush-left format.

### 2001-08-21 15:03:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Useless trace.

### 2001-08-21 15:00:29  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Hope, bug in next hop calculation for stub routes fixed.

### 2001-08-21 17:00:15  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Removed some useless (hope!) code in next hop calculation.

### 2001-08-21 16:44:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Finally, next hop problem fixed.

### 2001-12-07 17:10:49  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Small bugfix in RIP documentation.

### 2001-12-07 17:34:09  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Bugfix in router importation.

### 2002-03-04 15:54:39  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Age LSA DB after LSA origination and before routing table calculation.

### 2002-03-04 15:52:40  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  New trace added.

### 2002-03-10 12:32:12  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Applied Pavel's fix for broadcast/multicast mode.

### 2002-04-03 15:41:05  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Small typo fixed.

### 2002-09-21 13:57:48  Pavel Machek <pavel@ucw.cz>

  * proto/rip/auth.c

  Password does not need to be null-terminated, do not print garbage in
  such case. Thanks to silvio@big.net.

### 2002-11-13 08:47:19  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h
  * proto/ospf/lsalib.c

  ABS should be a macro.

### 2002-11-13 08:30:56  Martin Mares <mj@ucw.cz>

  * sysdep/unix/config.Y

  Added missing #include and wondering how could it ever compile.

### 2002-11-13 08:45:24  Martin Mares <mj@ucw.cz>

  * client/client.c

  Don't use obsolete functions which are no longer declared in the header.

### 2002-11-13 08:47:06  Martin Mares <mj@ucw.cz>

  * nest/password.c
  * nest/rt-table.c
  * proto/bgp/bgp.c
  * sysdep/unix/krt.c

  Added missing includes.

### 2002-11-13 08:46:12  Martin Mares <mj@ucw.cz>

  * filter/config.Y
  * nest/a-path.c
  * nest/config.Y
  * proto/bgp/attrs.c

  Added missing semicolons.

### 2003-02-22 10:25:22  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Fixed length check miscalculation in IPv6 receive path.

### 2003-02-22 10:40:35  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Temporary fix for BGP protocol capability announcement for IPv6 mode.

### 2003-02-22 22:38:15  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Report link-scope addresses as well.

### 2003-02-22 22:47:45  Martin Mares <mj@ucw.cz>

  * proto/bgp/bgp.c
  * proto/bgp/bgp.h
  * proto/bgp/packets.c

  Better selection of link-local NLRI addresses, at least for our own
  address. Need to do it better for the other neighbors -- the current
  solution works only if they use the standard 64+64 global addresses
  and the interface identifier in lower 64 bits is the same as for the
  link-scope addresses.

### 2003-02-22 23:06:32  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/netlink.c

  Current Linux kernels don't remember rtm_protocol for IPv6 routes and supply RTPROT_BOOT instead.
  Work around that.

### 2003-02-22 22:39:06  Martin Mares <mj@ucw.cz>

  * nest/iface.c

  There can be multiple primary addresses with different scopes
  and only the highest scope one has IA_PRIMARY set, so report
  the remaining ones as "Unselected".

### 2003-02-23 10:22:04  Martin Mares <mj@ucw.cz>

  * proto/bgp/packets.c

  Updated a comment.

### 2003-02-27 10:48:30  Martin Mares <mj@ucw.cz>

  * filter/filter.c

  Prefix comparison bug (hopefully) fixed.

### 2003-04-06 18:38:01  Martin Mares <mj@ucw.cz>

  * proto/rip/auth.c

  Bug fixes to authentication code by Eric Leblond <eleblond@init-sys.com>.

### 2003-04-06 18:55:37  Martin Mares <mj@ucw.cz>

  * NEWS

  Added release history.

### 2003-04-06 19:45:55  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Avoid problems with copying a directory to itself.

### 2003-04-06 19:52:22  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Nobody is perfect. Me twice :)

### 2003-04-06 19:46:42  Martin Mares <mj@ucw.cz>

  * README

  We're 1.0.6 now.

### 2003-04-06 19:35:50  Martin Mares <mj@ucw.cz>

  * doc/LinuxDocTools.pm
  * doc/sgml2html
  * doc/sgml2latex
  * doc/sgml2txt
  * doc/sbase/dist/fmt_html.pl
  * doc/sbase/dist/fmt_latex2e.pl
  * doc/sbase/dist/fmt_txt.pl

  Updated the documentation building tools to work with a recent linuxdoc-tools package.
  
  Note that this is (and always was) a terrible hack and we really should
  replace it with something reasonable which wouldn't need changing every
  time linuxdoc-tools evolve.
  
  I also needed to include a patched version of LinuxDocTools.pm, because the
  original one explicitly refused to work with a non-linuxdoc DTD. The authors
  of linuxdoc recommend to use sgmltools-lite in such cases, but it would mean
  rewritting our formatting rules to the DSSSL language which I don't dare to
  speak about here :)

### 2003-04-06 19:49:17  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Oops, forgot to change some paths.

### 2003-04-06 19:49:02  Martin Mares <mj@ucw.cz>

  * NEWS

  More news.

### 2003-04-06 19:42:28  Martin Mares <mj@ucw.cz>

  * sysdep/config.h

  Releasing version 1.0.6.

### 2003-04-06 21:36:35  Martin Mares <mj@ucw.cz>

  * NEWS

  Slept for a year :-)

### 2003-08-13 19:31:22  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  This was a potential memory leak, but not the one Feela observed.
  
  This one could happen when an import filter of some protocol modified
  the rte (so that it would be rte_cow()ed) and later rejected it.

### 2003-08-13 20:04:39  Martin Mares <mj@ucw.cz>

  * nest/rt-table.c

  protocol->import_control() could potentially call rte_cow() as well.
  AFAIK it doesn't happen in any of our protocol, but better be sure.

### 2003-08-13 22:07:55  Martin Mares <mj@ucw.cz>

  * sysdep/unix/krt.c

  This probably IS the memory leak we're looking for. Alien routes weren't
  correctly disposed of.

### 2003-08-23 10:42:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Many spelling mistakes fixed.
  
  Thanks you Harry Moyes.

### 2003-08-23 10:47:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c

  Minor OSPF changes for faster startup.

### 2003-08-26 10:41:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/ospf.h

  Endian-related bug fixes sent by Krzysztof Szuster <kszuster@polbox.com>

### 2003-09-01 08:46:07  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Prepared for release 1.0.8.

### 2003-09-03 17:31:23  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  This prevents infinite loop when bird has more that 60 neighbors. Thanks to Rani Assaf

### 2003-09-14 13:41:24  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Endianity problem fixed. Thanx to Sörös József

### 2003-09-30 17:05:55  Ondrej Filip <feela@network.cz>

  * Makefile
  * proto/ospf/config.Y

  OSPF was not able to be built stand-alone.

### 2003-12-06 16:41:11  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Fix reporting of RIP socket errors. Thanks to Eric Leblond for the patch.

### 2004-05-19 12:30:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Bug in DBDES receiving fixed.

### 2004-05-31 10:26:18  Ondrej Filip <feela@network.cz>

  * configure.in

  Added some more test (alloca.h, sa_len) etc.
  Add AC_OUTPUT before AC_OUTPUT_COMMANDS

### 2004-05-31 10:38:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Minor bug in configuration.

### 2004-05-31 13:25:00  Ondrej Filip <feela@network.cz>

  * sysdep/autoconf.h.in
  * sysdep/bsd/Modules
  * sysdep/bsd/krt-iface.h
  * sysdep/bsd/krt-scan.c
  * sysdep/bsd/krt-scan.h
  * sysdep/bsd/krt-set.h
  * sysdep/bsd/krt-sock.c
  * sysdep/bsd/krt-sock.h
  * sysdep/bsd/sysio.h
  * sysdep/cf/bsd-v6.h
  * sysdep/cf/bsd.h
  * sysdep/unix/io.c
  * sysdep/unix/krt-iface.c
  * sysdep/unix/krt-set.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  *BSD port added. (Tested on FreeBSD and NetBSD)

### 2004-05-31 13:22:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c

  Minor bug fix in neighbor state machine.

### 2004-05-31 13:58:38  Ondrej Filip <feela@network.cz>

  * lib/birdlib.h

  #ifndef ALIGN - it is defined on *BSD

### 2004-05-31 13:34:20  Ondrej Filip <feela@network.cz>

  * nest/rt-attr.c
  * nest/rt-table.c

  #ifdef ALLOCA_H

### 2004-05-31 13:32:58  Ondrej Filip <feela@network.cz>

  * client/client.c

  Small change to compile client on FreeBSD.

### 2004-05-31 13:35:06  Ondrej Filip <feela@network.cz>

  * nest/route.h

  Added RTD_NONE /* Just for internal use */

### 2004-05-31 13:59:03  Ondrej Filip <feela@network.cz>

  * lib/ipv6.h

  Some include added.

### 2004-05-31 15:08:29  Ondrej Filip <feela@network.cz>

  * configure.in

  Better readline checking.

### 2004-05-31 15:13:56  Ondrej Filip <feela@network.cz>

  * tools/Makefile-top.in

  Delete autom4te.cache in 'make distclean'.

### 2004-05-31 16:10:01  Martin Mares <mj@ucw.cz>

  * README

  Updated copyright notices.
  
  Also testing whether syncmail works.

### 2004-05-31 17:07:05  Ondrej Filip <feela@network.cz>

  * lib/alloca.h
  * nest/rt-attr.c
  * nest/rt-table.c

  Use #include "alloca.h"

### 2004-05-31 17:00:22  Ondrej Filip <feela@network.cz>

  * sysdep/unix/krt-set.c

  Previous change was mistake.

### 2004-05-31 17:13:58  Ondrej Filip <feela@network.cz>

  * lib/Modules

  alloca.h added

### 2004-05-31 17:27:21  Ondrej Filip <feela@network.cz>

  * lib/alloca.h

  Changed of comments.

### 2004-05-31 16:42:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Useless include deleted.

### 2004-05-31 17:16:47  Ondrej Filip <feela@network.cz>

  * nest/rt-attr.c
  * nest/rt-table.c

  Grrr, committing too fast.
  #include "alloca.h" -> #include "lib/alloca.h"

### 2004-05-31 17:53:02  Martin Mares <mj@ucw.cz>

  * tools/Makefile.in

  Bird's control socket should be in /var/run and the convention for
  --localstatedir is /var. The control socket pathname creation is thus
  corrected here.
  
  (Andreas)

### 2004-05-31 18:11:16  Martin Mares <mj@ucw.cz>

  * proto/rip/auth.c

  The initial sequence number for RIP md5 authentication was always zero.
  Bad as when bird e.g. was running for two weeks and then restarted it
  would take another two weeks until the peers of this router would accept
  data again from this router, as the sequence number would be too low.
  Changed to use the the current system time as the starting sequence
  number which is a more sane start value.
  
  (by Andreas, cleaned up by me)

### 2004-05-31 18:16:42  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  The code was broken for external /29 to /32 routes. Assuming that you
  have one machine publishing a route to 10.1.1.3/32 and another one
  publishing a route to 10.1.1.4/32. If the first machine went down the
  route to 10.1.1.4/32 was wrongly killed by the old code, leading either
  to missing routes or worse to bug()s like "Router parent does not have
  next hop" or just segfaults. The patch fixes this but in the long term a
  redesign is required here. Note that the patch doesn't worse the
  situation, instead it prevents the problems stated. The redesign is
  required to handle multiple routes to small subnets properly.
  
  (by Andreas)
  
  Feela, I think that this is at least a good temporary fix, but it's
  of course up to you to decide.

### 2004-05-31 17:44:39  Martin Mares <mj@ucw.cz>

  * filter/config.Y

  Fix bison input for current build tools, otherwise bison or the compiler
  will abort the build.
  
  (by Andreas)

### 2004-05-31 18:08:50  Martin Mares <mj@ucw.cz>

  * nest/cli.c

  Small correction to va_start/va_end in cli_printf (va_end was missing).
  
  (Andreas)

### 2004-05-31 17:42:38  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  Make RIP nolisten mode actually work. The socket is required for
  sending, the received data has to be discarded instead.
  
  (patch by Andreas Steinmetz modified by me)

### 2004-05-31 17:55:30  Martin Mares <mj@ucw.cz>

  * client/client.c
  * sysdep/unix/main.c

  Fix handling on full pipe to client in bird. Prevent packet overflows
  for even only medium sized route table output. Fix a strange garbled
  output problem in the client. The latter seems to be caused by some
  library doing tcflush while there is still command output pending. So
  the best fix here is to do fflush and then tcdrain. Note that this
  problem occurs only under certain load situations and is not too easy to
  reproduce.
  
  (by Andreas)

### 2004-05-31 18:13:14  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.h

  The OSPF authentication type was sent in host byte order instead of of
  network byte order thus breaking interoperability with other routing
  daemons on litte endian machines. The patch fixes this but note that
  this breaks compatability with older bird installations using OSPF and
  password authentication
  
  (Andreas)

### 2004-05-31 18:47:19  Martin Mares <mj@ucw.cz>

  * lib/resource.c
  * lib/resource.h

  Added rmove()  (by Andreas, tweaked by me).

### 2004-05-31 20:57:38  Martin Mares <mj@ucw.cz>

  * filter/filter.c
  * proto/bgp/bgp.c
  * proto/rip/rip.c

  Killed a couple of unused variables.
  
  We really should compile with warnings enabled.

### 2004-05-31 20:35:19  Martin Mares <mj@ucw.cz>

  * proto/rip/auth.c

  One space more.

### 2004-05-31 20:53:22  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  static declarations don't belong to includes. (And most of them were
  redundant anyway.)

### 2004-05-31 20:51:45  Martin Mares <mj@ucw.cz>

  * client/client.c

  Need <termios.h> for tcdrain().

### 2004-05-31 20:49:11  Martin Mares <mj@ucw.cz>

  * configure.in

  Make the check for <linux/rtnetlink.h> work with recent libc's.

### 2004-05-31 21:02:09  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  Added UNUSED.

### 2004-05-31 22:00:18  Martin Mares <mj@ucw.cz>

  * sysdep/unix/main.c

  Move CLI socket to the newly created CLI's pool.
  
  (thanks to Andreas for the original idea)

### 2004-05-31 22:22:21  Martin Mares <mj@ucw.cz>

  * proto/ospf/topology.c

  Documented the pxlen parameter.

### 2004-05-31 22:24:42  Martin Mares <mj@ucw.cz>

  * tools/gendist

  Updated the distribution script.

### 2004-05-31 22:16:54  Martin Mares <mj@ucw.cz>

  * tools/cvslog

  Added a simple utility for converting CVS log messages to a reasonable
  changelog format.

### 2004-05-31 21:48:19  Martin Mares <mj@ucw.cz>

  * lib/socket.h
  * proto/bgp/bgp.c
  * sysdep/unix/io.c
  * sysdep/unix/main.c

  Rewritten the I/O loop. All socket operations are now safe, meaning that
  you can delete the socket from anywhere in the hooks and nothing should break.
  Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,
  not separate resources which would need shuffling around between pools.
  
  sk_close() is gone, use rfree() instead.

### 2004-06-01 08:59:47  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c
  * sysdep/bsd/sysio.h

  memset -> bzero

### 2004-06-01 09:10:11  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/sysio.h

  Useles log()s deleted.

### 2004-06-01 09:07:16  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/sysio.h

  bzero has 2 arguments.

### 2004-06-01 10:28:25  Ondrej Filip <feela@network.cz>

  * lib/birdlib.h
  * lib/mempool.c
  * proto/bgp/attrs.c

  ALIGN -> BIRD_ALIGN

### 2004-06-01 10:10:09  Ondrej Filip <feela@network.cz>

  * configure.in

  Now, only one AC_OUTPUT is used.

### 2004-06-01 10:55:10  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  Caching loopback interface.

### 2004-06-01 10:53:30  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  log->DBG

### 2004-06-01 10:32:02  Ondrej Filip <feela@network.cz>

  * sysdep/cf/README
  * sysdep/cf/bsd.h
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h
  * sysdep/unix/io.c

  #ifdef CONFIG_UNIX_DONTROUTE added.

### 2004-06-01 10:45:28  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  Minor changes caused by MJ's comment.

### 2004-06-01 13:12:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Patch from Andreas Steinmetz <ast@domdv.de>

### 2004-06-01 12:57:13  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  Reverting last patch.

### 2004-06-01 13:29:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Don't free socket's resources.

### 2004-06-01 13:44:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Easier cleanup of an interface.

### 2004-06-01 13:58:39  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  Code clean up.

### 2004-06-01 14:06:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Bugfix in external routes calculation.

### 2004-06-02 09:14:03  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Hotfix for router's parent without nexthop.
  It will probably work perfect, but I need to eliminate such situation.

### 2004-06-02 15:14:49  Ondrej Filip <feela@network.cz>

  * sysdep/unix/main.c

  Deleted useless rfree. (Socked was freed by cli_free())

### 2004-06-03 08:18:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Added source addr for multicast socket.

### 2004-06-03 08:18:14  Ondrej Filip <feela@network.cz>

  * sysdep/cf/README
  * sysdep/cf/bsd-v6.h
  * sysdep/cf/bsd.h
  * sysdep/cf/linux-20.h
  * sysdep/cf/linux-21.h
  * sysdep/cf/linux-22.h
  * sysdep/unix/io.c

  CONFIG_SKIP_MC_BIND added.
  BSD hates it, Linux needs it.

### 2004-06-04 12:53:10  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h
  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsreq.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/neighbor.h
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  hello.c and hello.h cleaned up. No design changes.

### 2004-06-04 14:22:30  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Small reversing of previous patch.

### 2004-06-04 14:21:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Don't repeat "Sheduling rt calc....."

### 2004-06-04 14:03:30  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsupd.c

  Code and comments cleanup.

### 2004-06-04 14:23:21  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  This can happen now.

### 2004-06-04 14:23:58  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Initialize iterator on the right place.

### 2004-06-04 15:26:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Fatal bug found. Sometimes BIRD did not originate router LSA. FIXED. :-)

### 2004-06-04 15:45:35  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/neighbor.c

  ackd_timer_hook moded to neighbor.c

### 2004-06-04 17:05:24  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsupd.c
  * proto/ospf/packet.c

  Deleted useles "struct proto" sending.

### 2004-06-04 16:55:53  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h

  Indented. No other change.

### 2004-06-04 17:12:27  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/packet.c

  hello.* reindented, code cleanup.

### 2004-06-04 16:56:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c

  Better log() usage.

### 2004-06-04 16:30:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c

  lsack.c cleaned. Better names for functions and
  DIRECT acks can be sent in one packet now.

### 2004-06-04 17:28:41  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c
  * proto/ospf/lsreq.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/packet.c

  lsreq.c indented and small 'struct proto' changes.

### 2004-06-04 18:24:15  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  no comment

### 2004-06-04 17:31:03  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsreq.c

  better log() usage.

### 2004-06-04 17:32:38  Ondrej Filip <feela@network.cz>

  * sysdep/cf/README

  typo in README

### 2004-06-04 17:49:25  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h
  * proto/ospf/neighbor.c
  * proto/ospf/packet.c

  dbdes indent an minor changes.

### 2004-06-04 19:21:19  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Bugfix in last patch.

### 2004-06-04 18:51:29  Ondrej Filip <feela@network.cz>

  * lib/socket.h
  * proto/ospf/dbdes.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * sysdep/unix/io.c

  OSPF is ready for changing MTU.

### 2004-06-04 19:53:36  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Useless logs removed.

### 2004-06-04 21:05:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/topology.c

  cleanup in lsupd.c, indenting, "struct proto" removed...

### 2004-06-04 21:19:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Be more verbose.

### 2004-06-04 20:41:02  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsack.c
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/packet.c

  'struct proto' removed
  Finally, I found the bug reported by Andreas Steinmetz. FIXED.

### 2004-06-05 09:28:17  Martin Mares <mj@ucw.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  ... and a whole bunch of unused parameters and variables in ospf.

### 2004-06-05 09:27:49  Martin Mares <mj@ucw.cz>

  * proto/rip/rip.c

  ... and in rip (there are even unused functions!).

### 2004-06-05 09:27:02  Martin Mares <mj@ucw.cz>

  * lib/resource.c

  One more in the library.

### 2004-06-05 08:59:17  Martin Mares <mj@ucw.cz>

  * proto/ospf/iface.c

  Moved the tests for socket existence here.
  
  BTW, where do you exactly set the new buffer sizes?

### 2004-06-05 08:56:43  Martin Mares <mj@ucw.cz>

  * sysdep/unix/io.c

  Cleaned up sk_reallocate() and friends.
  Also, removed the `if (s)' test, because I believe that as the whole
  socket interface doesn't accent NULL pointers, sk_reallocate() shouldn't
  be the only exception.

### 2004-06-05 09:10:56  Martin Mares <mj@ucw.cz>

  * conf/conf.c
  * nest/locks.c
  * nest/password.c
  * nest/proto.c
  * nest/rt-fib.c

  Marked unused parameters in core code as such.

### 2004-06-05 09:26:55  Martin Mares <mj@ucw.cz>

  * filter/f-util.c

  ... and in the filter.

### 2004-06-05 09:01:12  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h

  A better comment.

### 2004-06-05 09:29:38  Martin Mares <mj@ucw.cz>

  * proto/ospf/dbdes.c

  `defaut' should be `default'.

### 2004-06-05 09:26:48  Martin Mares <mj@ucw.cz>

  * client/client.c

  Unused parameters in the client.

### 2004-06-05 09:11:07  Martin Mares <mj@ucw.cz>

  * sysdep/linux/netlink/krt-iface.h
  * sysdep/linux/netlink/krt-set.h
  * sysdep/linux/netlink/netlink.c
  * sysdep/unix/krt-set.h
  * sysdep/unix/krt.c
  * sysdep/unix/main.c

  Marked unused parameters in sysdep code as such.

### 2004-06-05 09:05:12  Martin Mares <mj@ucw.cz>

  * lib/birdlib.h
  * sysdep/unix/log.c

  Renamed log() to log_msg(), but still keeping the old name as a macro.
  This is done to avoid clashes with gcc-3.3 which has built-in logarithms :)

### 2004-06-05 09:27:17  Martin Mares <mj@ucw.cz>

  * proto/bgp/attrs.c
  * proto/bgp/bgp.c
  * proto/bgp/packets.c

  ... in BGP.

### 2004-06-05 09:27:35  Martin Mares <mj@ucw.cz>

  * proto/pipe/pipe.c

  ... in pipe.

### 2004-06-05 09:58:23  Martin Mares <mj@ucw.cz>

  * filter/filter.c
  * lib/slab.c
  * proto/bgp/bgp.c
  * proto/ospf/dbdes.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/packet.c
  * proto/ospf/topology.c
  * sysdep/linux/netlink/netlink.c

  Staticized lots of local functions.

### 2004-06-05 09:57:35  Martin Mares <mj@ucw.cz>

  * configure.in

  Add more warnings if --enable-warnings is turned on. (probably requires
  gcc-3.0 or newer, but I hope it's OK)

### 2004-06-05 09:57:49  Martin Mares <mj@ucw.cz>

  * lib/bitops.h

  Better prototypes.

### 2004-06-05 09:58:06  Martin Mares <mj@ucw.cz>

  * proto/ospf/ospf.c

  One less unused variable.

### 2004-06-05 15:02:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Set size of the buffers. (Thanx MJ.)

### 2004-06-06 08:12:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Be more verbose in troubles.

### 2004-06-06 09:13:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Struct area_net changed.

### 2004-06-06 08:55:33  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Cleanup in iface.c

### 2004-06-06 09:37:54  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsreq.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/packet.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Indentation.

### 2004-06-06 14:27:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.h

  Indentation.

### 2004-06-06 14:25:55  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  This warning is stupid.

### 2004-06-06 16:05:14  Ondrej Filip <feela@network.cz>

  * TODO

  TODO updated.

### 2004-06-06 16:00:09  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c

  Small cleanup, indentation and preparation for multiple areas routing table calculation.

### 2004-06-06 16:14:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Keep al lSAs invalidated.

### 2004-06-06 17:03:56  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Be sure, that ospf_area is aged before routing table calculation.

### 2004-06-06 17:20:16  Ondrej Filip <feela@network.cz>

  * TODO
  * misc/bird.spec

  RPM is now able to build IPv4 and IPv6 bird.

### 2004-06-06 17:05:25  Ondrej Filip <feela@network.cz>

  * sysdep/config.h
  * sysdep/unix/io.c
  * sysdep/unix/main.c
  * sysdep/unix/unix.h

  Test old instance of BIRD.

### 2004-06-06 18:45:08  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Deleted unused parameters.

### 2004-06-06 19:53:52  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/dbdes.h
  * proto/ospf/hello.c
  * proto/ospf/hello.h
  * proto/ospf/lsack.c
  * proto/ospf/lsack.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsreq.h
  * proto/ospf/lsupd.c
  * proto/ospf/lsupd.h
  * proto/ospf/packet.c

  Cleanup in packet.c. Deleted unused parameters.

### 2004-06-07 09:09:14  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c

  Deleted some unused code.

### 2004-06-07 09:52:15  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-iface.h
  * sysdep/bsd/krt-scan.h
  * sysdep/bsd/krt-sock.c
  * sysdep/bsd/krt-sock.h
  * sysdep/unix/krt.c

  Marked unused parameters as unused.

### 2004-06-07 10:00:29  Ondrej Filip <feela@network.cz>

  * sysdep/bsd/krt-sock.c
  * sysdep/bsd/krt-sock.h

  Some new warnings eliminated.

### 2004-06-07 10:42:24  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * nest/config.Y

  Cleanup in show route import <p>.

### 2004-06-07 12:52:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  It was too verbose.

### 2004-06-07 13:07:12  Ondrej Filip <feela@network.cz>

  * NEWS

  Let's go for release.

### 2004-06-07 14:37:29  Ondrej Filip <feela@network.cz>

  * tools/gendist

  Delete automate*cache.

### 2004-06-07 14:38:35  Ondrej Filip <feela@network.cz>

  * misc/bird.init
  * misc/bird.spec

  Build and run both IPv4 and IPv6.

### 2004-06-07 16:42:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Bugfix in RT calculation.

### 2004-06-07 16:51:23  Ondrej Filip <feela@network.cz>

  * sysdep/unix/krt.c

  Used parameter can be marked as unused. :-) Thanx MJ.

### 2004-06-09 12:39:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.h

  Better checking of configuration.

### 2004-06-11 09:06:08  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Deleted RTS_OSPF_BOUNDARY

### 2004-06-11 09:05:06  Ondrej Filip <feela@network.cz>

  * nest/config.Y
  * nest/route.h
  * nest/rt-attr.c

  RTS_OSPF_BONDARY is nonsense, RTS_OSPF_IA must have smaller id than RTS_OSPF_EXT

### 2004-06-11 09:36:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h

  Better routing table calculation. We are ready to work with
  multiple OSPF areas.

### 2004-06-11 09:34:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/neighbor.c

  Better adjacency building, some minor bugfixes.

### 2004-06-16 23:01:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Some cisco routers send shorter ospf messages in larger packets.
  Well it's strange, but, actually it's correct.

### 2004-06-18 12:54:53  Ondrej Filip <feela@network.cz>

  * sysdep/unix/io.c

  sk_write bugfix for BSD.

### 2004-06-23 21:34:26  Ondrej Filip <feela@network.cz>

  * proto/rip/rip.c
  * proto/rip/rip.h

  P->magic used just in LOCAL_DEBUG mode

### 2004-06-23 21:36:55  Ondrej Filip <feela@network.cz>

  * proto/rip/rip.c

  Hotfix to problem with metric change reported by Luca.

### 2004-06-23 23:59:48  Ondrej Filip <feela@network.cz>

  * proto/rip/rip.c

  Small typo changes.

### 2004-06-25 16:39:53  Ondrej Filip <feela@network.cz>

  * TODO
  * doc/bird.sgml
  * nest/config.Y
  * nest/route.h
  * nest/rt-attr.c
  * proto/bgp/attrs.c
  * proto/ospf/config.Y
  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/iface.h
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/packet.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  A lot of changes:
  	- metric is 3 byte long now
  	- summary lsa originating
  	- more OSPF areas possible
  	- virtual links
  	- better E1/E2 routes handling
  	- some bug fixes..
  
  I have to do:
  	- md5 auth (last mandatory item from rfc2328)
  	- !!!!DEBUG!!!!! (mainly virtual link system has probably a lot of bugs)
  	- 2328 appendig E

### 2004-06-26 20:11:14  Ondrej Filip <feela@network.cz>

  * nest/config.Y
  * nest/password.c
  * nest/password.h
  * proto/rip/auth.c
  * proto/rip/config.Y
  * proto/rip/rip.c
  * proto/rip/rip.h

  Password management redesigned (untested).

### 2004-06-26 20:15:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/packet.h
  * proto/ospf/rt.c

  Md5 authentification added (unsested).
  Packet receiving clean up.

### 2004-06-26 22:52:39  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * proto/ospf/config.Y

  Update of the documentation. (passwords and md5).
  Option for md5 auth in config.

### 2004-07-01 15:01:26  Ondrej Filip <feela@network.cz>

  * nest/password.c

  Password WALK_LIST bugfix.

### 2004-07-01 15:01:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Length calculation bugfix.

### 2004-07-01 15:01:04  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Hello reading bugfix.

### 2004-07-08 16:56:49  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Syntax bugfix.

### 2004-07-13 12:21:24  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Bugfix - nasty bug in router LSA origination - Router did not describe all interfaces.

### 2004-07-13 11:58:50  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Bugfix - options bits were not included in LSAs
  Bugfix - E bit was not unset on stub areas.

### 2004-07-13 13:52:54  Ondrej Filip <feela@network.cz>

  * nest/password.c
  * proto/ospf/config.Y
  * proto/ospf/packet.c

  Bugfix in simple authentification.

### 2004-07-13 14:46:14  Ondrej Filip <feela@network.cz>

  * nest/config.Y
  * proto/ospf/packet.c

  MD5 authentication in OSPF works. :-)

### 2004-07-13 21:27:33  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml
  * proto/ospf/ospf.h

  Default tick = 1. The today's CPU is fast enough.

### 2004-07-13 21:22:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Don't inform us about every ospf_age()

### 2004-07-13 20:53:56  Ondrej Filip <feela@network.cz>

  * proto/rip/rip.c

  Bugfix - RIP now updates routes with worse metric.

### 2004-07-13 22:10:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/topology.c

  Add more reasonable options to LSAs. (But it seems, that it's ignored.)

### 2004-07-13 22:04:57  Ondrej Filip <feela@network.cz>

  * proto/ospf/dbdes.c

  Bugfix: Router was unable to advertise AS external routes.

### 2004-07-13 23:42:14  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Send hello just after interface is up.
  This makes the adjacency forming faster.
  Minor code clean up.

### 2004-07-13 23:31:37  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c

  Send hello as soon as possible after the interface is up.
  This helps to faster establish the adjacency.

### 2004-07-14 21:47:39  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Everything is tested and works. I thins it's right time to go to 1.0.9.

### 2004-07-14 21:46:20  Ondrej Filip <feela@network.cz>

  * TODO
  * doc/bird.conf.example
  * doc/bird.sgml
  * proto/ospf/config.Y
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Multiple OSPF areas can be attached.
  Origination of summary LSA works.
  Routing table calculation works.
  Virtual links works.
  
  Well, I hope, OSPF is fully compatible with RFC2328!!!!

### 2004-07-15 16:42:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Minor bugfix in calculation of external routes.

### 2004-07-15 16:48:12  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Minor bugfix - add interface routes.

### 2004-07-15 17:28:13  Ondrej Filip <feela@network.cz>

  * proto/rip/rip.c

  Minor bugfix to compile bird in IPv6.

### 2004-07-15 16:37:52  Ondrej Filip <feela@network.cz>

  * TODO
  * proto/ospf/config.Y
  * proto/ospf/dbdes.c
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/lsack.c
  * proto/ospf/lsalib.c
  * proto/ospf/lsalib.h
  * proto/ospf/lsreq.c
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Huge OSPF database redesign. Since now, all LSAs of all areas
  are in single database. This avoids duplication of external LSAs and
  fixes bug in external LSA distribution.

### 2004-07-15 17:58:07  Ondrej Filip <feela@network.cz>

  * NEWS

  News update to 1.0.9.

### 2004-07-15 19:46:52  Ondrej Filip <feela@network.cz>

  * doc/bird.sgml

  Added note about *BSD.

### 2004-07-16 07:22:43  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Bugfix - bird needed double ';' after rfc1583compat.

### 2004-07-16 08:01:32  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example

  Typo.

### 2004-07-16 08:27:11  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/ospf.h

  Added handling of STUB bool.

### 2004-08-02 22:38:43  Ondrej Filip <feela@network.cz>

  * TODO

  Some more TODOs for OSPF.

### 2004-08-05 18:06:30  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Bugfix in OSPF - BIRD sometimes failed during rt calculation with VLINKs.

### 2004-08-10 17:47:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y

  Bugfix in config.y

### 2004-08-19 09:15:36  Martin Mares <mj@ucw.cz>

  * tools/Rules.in

  Do not forget to propagate LDFLAGS from configure. Allows static linking,
  among other things.

### 2004-09-08 16:04:02  Ondrej Filip <feela@network.cz>

  * proto/rip/auth.c

  Bugfix.

### 2004-09-08 16:06:07  Ondrej Filip <feela@network.cz>

  * tools/mergedirs

  sort from GNU coreutils 5.2.1 doesn't accept the +- syntax
  anymore. Hopefully the -k syntax is supported by all other
  sort versions

### 2004-09-15 19:33:01  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c

  Dont check netmask field on PTP links.

### 2005-02-12 22:22:18  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Bugfix in inter-area route calculation and summary LSA origination.
  Bugfix of some debugging commands.

### 2005-02-12 22:18:48  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h

  Bugfix - cost of interface can be larger than 0xffff

### 2005-02-12 22:27:55  Ondrej Filip <feela@network.cz>

  * conf/confbase.Y
  * doc/bird.conf.example
  * sysdep/unix/io.c

  Time added in password management.

### 2005-02-12 22:19:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Bugfix in password acceptance

### 2005-02-13 23:36:31  Ondrej Filip <feela@network.cz>

  * proto/ospf/hello.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/rt.h
  * proto/ospf/topology.c
  * proto/ospf/topology.h

  Many bugfixes in routing table calculation and summary LSA origination.

### 2005-02-14 11:54:16  Ondrej Filip <feela@network.cz>

  * proto/ospf/config.Y
  * proto/ospf/lsupd.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/packet.c

  Small changes to reduce number of warnings.

### 2005-02-14 11:58:46  Ondrej Filip <feela@network.cz>

  * nest/config.Y
  * sysdep/unix/timer.h

  Small changed to reduce the number of warnings.

### 2005-02-14 11:37:40  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Yes, I'd like to go to 1.0.10

### 2005-02-14 21:28:51  Ondrej Filip <feela@network.cz>

  * sysdep/unix/io.c

  Added s->err_hook wrapper that empties socket.

### 2005-02-14 21:34:46  Ondrej Filip <feela@network.cz>

  * proto/ospf/packet.c

  Be more verbose in log.

### 2005-02-14 23:15:04  Ondrej Filip <feela@network.cz>

  * sysdep/unix/io.c

  Real write is only in sk_maybe_write. Previous change partially reverted.
  Thank you MJ.

### 2005-02-15 06:32:31  Ondrej Filip <feela@network.cz>

  * proto/rip/config.Y

  Minor changes to keep gcc happy.

### 2005-02-15 16:17:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Minor bugfixes in routing table calsulation.

### 2005-02-18 18:51:42  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.h
  * proto/ospf/rt.c
  * proto/ospf/rt.h

  
  Minor bugfix: Summary LSA for aggregated area was always propagated with
  metric = 1. Now it's metric of most distant component.

### 2005-02-18 19:36:32  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Bugfix in previous bugfix.

### 2005-02-20 03:37:47  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c

  Bugfix - count courrectly next hop on single hop virtual link.

### 2005-02-20 04:27:56  Ondrej Filip <feela@network.cz>

  * doc/bird.conf.example
  * doc/bird.sgml
  * proto/ospf/config.Y
  * proto/ospf/hello.c
  * proto/ospf/iface.c
  * proto/ospf/neighbor.c
  * proto/ospf/ospf.c
  * proto/ospf/ospf.h

  Since now I can also use 'dead interval', not just 'dead counter'.

### 2005-02-20 03:30:44  Ondrej Filip <feela@network.cz>

  * proto/ospf/neighbor.c

  Time of neighbor's dead was not shown correctly.

### 2005-02-20 04:28:55  Ondrej Filip <feela@network.cz>

  * sysdep/config.h

  Let's go for 1.0.11.

### 2005-02-20 16:53:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Originate default route into stub areas.

### 2005-02-20 16:54:09  Ondrej Filip <feela@network.cz>

  * proto/ospf/ospf.c

  Intelligent reconfiguration should work again.

### 2005-02-20 17:04:00  Ondrej Filip <feela@network.cz>

  * TODO

  Some tasks are fulfilled. :-)

### 2005-02-20 19:03:34  Ondrej Filip <feela@network.cz>

  * proto/ospf/lsalib.c

  Unused code deleted.

### 2005-02-20 18:56:06  Ondrej Filip <feela@network.cz>

  * proto/ospf/iface.c
  * proto/ospf/ospf.c
  * proto/ospf/packet.c
  * proto/ospf/rt.c
  * proto/ospf/topology.c

  Cleanup - all unused variables deleted.

### 2005-02-21 10:04:37  Ondrej Filip <feela@network.cz>

  * tools/gendist

  Change of ftp servers.

