summaryrefslogtreecommitdiffstats
path: root/sysdep
AgeCommit message (Collapse)Author
1999-04-03More changes to the kernel syncer.Martin Mares
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-03Defined CONFIG_SELF_CONSCIOUS whenever the kernel scanner is ableMartin Mares
to distinguish between our own routes and alien ones.
1999-04-02Fixed `too many interfaces' cases.Martin Mares
1999-04-02Believe it or not, printf()'s does not work too much without this one.Pavel Machek
1999-04-01Argh, the fix was wrong.Martin Mares
1999-04-01Portability fixes.Martin Mares
1999-04-01First few FreeBSD portability fixes.Martin Mares
1999-03-29Remember that we can run device syncer without kernel syncerMartin Mares
and vice versa now.
1999-03-29Clarify resource dumps and include them in the main debugging dump.Martin Mares
1999-03-29Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems.Martin Mares
1999-03-29Moved all system-dependent #include's containing endianity conversionMartin Mares
functions to sysdep header endian.h.
1999-03-27Cleaned up system configuration files -- removed few obsolete parameters,Martin Mares
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-26Moved to a much more systematic way of configuring kernel protocols.Martin Mares
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-24Removed our declaration of RTPROT_BIRD since Alexey has assignedMartin Mares
us a real protocol number in 2.2.4 kernel.
1999-03-04Fixed processing of !krt_capable() routes. Converted device route decisionsMartin Mares
to the krt_capable mechanism as well.
1999-03-04KRT: Implemented asynchronous route / interface state notificationsMartin Mares
(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-04Although there are still heaps of FIXME's, Netlink works.Martin Mares
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-04Converted some mb_alloc/bzero pairs to mb_allocz.Martin Mares
1999-03-04Use dmalloc instead of EFence when available (dmalloc has lot of improvementsMartin Mares
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-03Netlink scans routes...Martin Mares
1999-03-03Fix several things I broke today.Martin Mares
1999-03-03Rewrote the kernel syncer. The old layering was horrible.Martin Mares
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-02Netlink module supports interface scan on startup. Working on more.Martin Mares
1999-03-02o The if_change_too_big_p change was too high-spirited. Fixed.Martin Mares
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-02Interface logic changes:Martin Mares
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-01Implemented netlink protocol parsing functions. More to come tomorrow.Martin Mares
1999-03-01Added SK_MAGIC type sockets for internal use by system dependent code,Martin Mares
especially for netlink communication.
1999-03-01Added skeletal version of Linux netlink interface. It doesn't work yet,Martin Mares
but the framework is there and I'll try finish it soon.
1999-03-01Include "config.h" instead of "autoconf.h" in all Modules lists to make definesMartin Mares
in the static portion of configuration includes available as well.
1999-03-01Use traditional Unix route/iface interface only when CONFIG_NETLINKMartin Mares
is not defined. Also moved declarations of Unix iface logic to krt.h.
1999-02-13When shutting down, remove all routes (except for RTS_INHERIT and RTS_DEVICEMartin Mares
routes) from kernel routing tables unless the "persist" switch is set.
1999-02-13Moved sanity check of protocol state during annoucements to rte_announce.Martin Mares
1999-02-13Perform gracious shutdown upon receipt of SIGTERM. Finally we canMartin Mares
test the whole protocol shutdown code... :)
1999-02-13Squashed one bug in timing of route scans.Martin Mares
1999-02-13Synchronize signals to the main select/event/timer loop.Martin Mares
Parse command line options.
1999-02-13config->router_id works again.Martin Mares
1999-02-11Run the event queue before writing SIGUSR dumps.Martin Mares
1999-02-11Added simple event scheduling system to avoid recursive callingMartin Mares
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-05Synced Linux sysdeps to new interface.Martin Mares
1999-02-05Synced kernel interface to new interface.Martin Mares
1999-02-05Implemented new configuration/reconfiguration interface and defined protocolMartin Mares
state machines. Full explanation will follow soon.
1999-01-15filters_init() renamed to filters_postconfig().Pavel Machek
1999-01-15Filters, second try. This time they have their own directory.Pavel Machek
1999-01-15Properly initialize filters. Also bumped version to 0.0.0 as itPavel Machek
actually does something.
1999-01-10New makefiles. Includes support for out-of-source-tree builds.Martin Mares
1999-01-09First step of "autoconfization". Created a configure script whichMartin Mares
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.
1998-12-20die() -> bug() where appropriate.Martin Mares
1998-12-20Finer grained logging levels:Martin Mares
#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-08Hopefully finished kernel syncer (krt) rewrite:Martin Mares
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-08Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterdayMartin Mares
and does things "the right way". Few things are still missing (device routes etc.), I'll add them later in the evening.