Updated TODO file.
Unless a filter specifies otherwise, all external routes have type 2metric 10000.
Description of protocol module moved to where it belongs. If documentationof standard modules is stored in their source, such auxilliary filesshould be as well.
Updated the TODO list with our last-minute stuff.
Moved the rest to "Various ideas".
New TODO list.
Added the introduction chapter of progdoc.
Added section about client.
More todo in documentation.
Really short installation section added.
Info about client. (Mj, if you tell me that's trivial, what about youwriting it?)
Fixed a very nasty bug in FIB iterators.
BGP now reports originating AS and origin type in get_route_info().
Asynchronous feeding of protocols.
Don't log state changes if nothing user-visible has changed.
When in persist mode, don't delete routes from kernel tables even ifthey cease to exist in our routing tables due to protocols having shut down.
bgp_get_status: If protocol is down, don't print BGP state.
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.
Got rid of startup functions and filters_postconfig().
By the way, how do you expect pointers to fit in an int?
Added `show route for
' which looks up route leading to
Unified parsing of prefixes.
Had to rename `prefix' in filters to `fprefix'.
Adapted to new rt_notify semantics.
If a broadcast address is missing, go fake one.
Generated first public alpha release.
Unless you object, I'll announce it today (9.5.) at noon.
Implemented `show route count' which is `show route stats' withexception that it doesn't print the routes themselves.
Don't crash when the socket gets closed between updates.
Also, this time not only update `remains', but update it right :)
Update `remains' counter correctly.
Implemented `show route <...> stats'.
Setup of incoming connection is now a separate function.
Added commands `show route protocol <p>' and `show route import <p>' whichshow the routing table as exported to the protocol given resp. as returnedfrom 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...
IPv6 support compiles on both glibc 2.0 and 2.1.
When rte_update is called for an identical route, don't announce anything.
Please implement the rte_same hook in your protocols. It should justcompare your metrics stored directly in rte, the rest is done by the core.
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.
Changed initialization of protocol list -- now we call proto_build() insteadof 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,...
Use bsprintf() instead of sprintf().
Started work on BGP. Wrote main part of the connection handling code.
Fixed a bunch of FIXME's by removing them :)
Cleaned up debugging in kernel syncer. Netlink has still LOCAL_DEBUGturned on, but after some testing I'll gag it.
Added tracing of interface events.
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.
Added debugging of protocol state transitions.
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.
Implemented real attribute cache.
Reimplemented neighbor cache. Now uses real hashing.
Made `datetime' more user friendly. Now it should be a quoted stringof type "dd-mm-yyyy".
Rewrote interface type detection logic. The `unnumbered' flag is now peraddress, not per interface (hence it's ifa->flags & IA_UNNUMBERED) andshould be set reliably. IF_MULTIACCESS should be fixed now, but it isn'twise to rely on it on interfaces configured with /30 prefix.
Support expansion of command abbreviations.
Client considered finished (modulo bugs).
First usable version of the client. No command completion and similar niftyfeatures yet, but it works.
Split off general commands to cmds.c.
Added `show symbols' command which dumps whole symbol table togetherwith symbol types etc.
Killed protocol->priority. Protocol startup should be clean and hack-free now.It seems everything still works (except for disable/enable/restart which hangssometimes, but it's another story).
Removed point-to-point tunnel hack as it breaks ordinary PtP interfaces.I'll find a better solution soon.
Separated `official protocol names' used in status dumps from name templatesused 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...
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.
Added filter_same() for comparision of two filters.
Pavel, please implement this as soon as possible.
Converted shutdown to a kind of reconfiguration, it's no more handledas a exception in protocol state machines. Introduced a `shutdown'CLI command. Killed few reconfiguration bugs.
First attempt on dynamic reconfiguration. There are still lots of bugsand problems to solve, but the hardest part works.
Handle cases when SIOCGIFINDEX is defined, but doesn't work (new glibcwith 2.0 kernels).
Tried to clean up multicast handling. Now we don't try to guessmulticast abilities depending on definedness of symbols and use hard-wiredsystem-dependent configuration defines instead.
Please test whereever you can.
TODO entries and FIXME's.
Temporary work-arounds for multicast problems. Needs further investigation.
Implemented echoing of log messages to CLI connections. Just try `echo all'.
Added DEBUG commands.
Removed CLI tests, real commands now serve as much better examples.
Implemented `show route where <condition>' command.
Pavel, please check my addition to filter/config.Y.
Added dumping of routing tables (`show route'). This includes filtering.
Remember protocol instance in proto_config and use that for`show protocols <name>'.
More CLI plans...
Added skeleton of command tree. Please inspect.
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....
Pruned the TODO list.
Kernel route syncer supports multiple tables.
The changes are just too extensive for lazy me to list themthere, 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. :)
Added missing structure declarations.
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.
Faster checksum function.
Added functions for parsing and formatting of dates.
Better date/time input methods need to be done
Added --with-sysinclude to allow explicitly setting where kernel includesreside, 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 surewe're using the correct set of includes.
Added ip_skip_header() and modified OSPF to use it.
Netlink support for secondary interface addresses.
I rewrote the interface handling code, so that it supports multipleaddresses per interface (needed for example for IPv6 support).
o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any)....
Recognize site scope for IPv4 addresses (prefixes reserved for privatenetworks).
Removed old #ifndef logic which was used to avoid IPv4/IPv6 clashesbefore conditionals in Modules lists were introduced.
Removed TOS support. This simplifies many things a lot.
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.
Added new protocol hook for dumping of protocol-dependent routeattributes.
Please implement in all protocols.
Updated the TODO list.
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...
Rewrote the kernel syncer. The old layering was horrible.
The new kernel syncer is cleanly split between generic UNIX moduleand 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)...
Netlink module supports interface scan on startup. Working on more.
Implemented netlink protocol parsing functions. More to come tomorrow.
Added skeletal version of Linux netlink interface. It doesn't work yet,but the framework is there and I'll try finish it soon.