summaryrefslogtreecommitdiff
path: root/sysdep/linux
AgeCommit message (Collapse)Author
1999-05-07Netlink support for secondary interface addresses.Martin Mares
1999-05-06I rewrote the interface handling code, so that it supports multipleMartin Mares
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-04-12Removed TOS support. This simplifies many things a lot.Martin Mares
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-03-29Remember that we can run device syncer without kernel syncerMartin Mares
and vice versa now.
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-03Netlink scans routes...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-01Implemented netlink protocol parsing functions. More to come tomorrow.Martin Mares
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-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-13Squashed one bug in timing of route scans.Martin Mares
1999-02-05Synced Linux sysdeps to new interface.Martin Mares
1998-12-20die() -> bug() where appropriate.Martin Mares
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.
1998-12-07Comparison of kernel reject routes fixed.Martin Mares
1998-12-06Kernel syncer is now configurable. It will probably need some moreMartin Mares
options, but at least basic tuning is possible now.
1998-10-20Learn static device routes from the kernel (temporary until we can makeMartin Mares
such things configurable).
1998-10-19Basic kernel routing table syncing implemented. Learning of routes installedMartin Mares
by other programs or the kernel itself is not supported yet, but it's not needed for development of other protocols.
1998-10-18We parse /proc/net/route and flag RT entries according to it. More to comeMartin Mares
today in the morning...
1998-10-18Since almost every UNIX system requires different techniques for readingMartin Mares
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-05-15The library is now glued together from generic and OS-dependent partsMartin Mares
by the `mergedirs' script. Few more IP address manipulation functions and some fixes.
1998-04-22First look at data structures. More to come tomorrow...Martin Mares