1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

1942 Commits

Author SHA1 Message Date
aa64578641 Netlink scans routes... 1999-03-03 20:57:29 +00:00
51ad41f2fc EFence helped to find using of already free rte's in rt_prune(). 1999-03-03 20:56:33 +00:00
53b7a2982a Fix several things I broke today. 1999-03-03 20:55:35 +00:00
0e889c5254 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:40:51 +00:00
2d14045224 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:49:56 +00:00
b2280748ad Introduced protocol priority (all 'normal' protocols should use the
default zero priority). No more "kernel syncer initialized before
device routes" problems.
1999-03-03 19:33:54 +00:00
84c7e1943f Add interface for running filters (please comment!), avoid bison warnings 1999-03-02 19:49:28 +00:00
05a845ed8e Avoid segfault 1999-03-02 19:49:22 +00:00
7972248d5d Netlink module supports interface scan on startup. Working on more. 1999-03-02 18:37:02 +00:00
e35ef181a4 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:36:09 +00:00
bcbd8cc3be 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 17:28:06 +00:00
25287d6f7e Don't try to install static routes to disconnected neighbors. 1999-03-02 17:20:07 +00:00
eab0d1e5e5 Latest changes broke out-of-tree compilation. 1999-03-02 16:39:41 +00:00
3d8ef0c9ef I just don't like files enclosed in <>. 1999-03-02 13:15:35 +00:00
e834074dd4 If we are compiling with debugging enabled and libefence is available,
link it to get debugging malloc.
1999-03-01 22:42:47 +00:00
b982b6db2b Implemented netlink protocol parsing functions. More to come tomorrow. 1999-03-01 22:31:27 +00:00
b4b3b39e20 Added SK_MAGIC type sockets for internal use by system dependent code,
especially for netlink communication.
1999-03-01 22:30:33 +00:00
c748cdb9ec Hopefully ended translating to new interface 1999-03-01 21:18:01 +00:00
bdb95a21a4 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:17:46 +00:00
ea3582a6f6 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:15:14 +00:00
1b769b08c1 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 20:13:54 +00:00
025d14cd5a 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 19:05:58 +00:00
12be9b8c18 Pruned the TODO list. 1999-03-01 17:51:29 +00:00
293e313ec9 More rip fixes (config data moved to struct rip_proto_config), still
not tested.
1999-02-15 13:34:43 +00:00
b5fe3dc21c Cleaned up TODO file.
That's all for today, midnight gets closer.
1999-02-13 22:13:04 +00:00
45090fecd9 Synced example config with new options. 1999-02-13 22:02:21 +00:00
d88e99a92a Implemented static device routes.
Expect for reconfiguration issues, the static protocol is complete now.
1999-02-13 21:59:48 +00:00
d1f7eab6b5 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-13 21:58:53 +00:00
726141746b '#' comments in config files are equivalent to end of line, therefore
also to implicit ';'.
1999-02-13 21:34:33 +00:00
5996da6a1d 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 21:29:01 +00:00
f4a0a64e02 Static protocol doesn't need any shutdown function. Everything gets
disposed by the core: neighbors, rte's, etc's...
1999-02-13 21:00:25 +00:00
3fb4ca2ce2 Don't send any neighbor notifications to protocols being flushed. 1999-02-13 20:57:47 +00:00
783f8b689a When protocols go down, prune the neighbor list. 1999-02-13 20:55:08 +00:00
013a9b91fe 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:46:03 +00:00
0a2e9d9f56 Moved sanity check of protocol state during annoucements to rte_announce. 1999-02-13 20:19:24 +00:00
f4aabcee62 Perform gracious shutdown upon receipt of SIGTERM. Finally we can
test the whole protocol shutdown code... :)
1999-02-13 20:15:36 +00:00
7f3d1a0850 Squashed one bug in timing of route scans. 1999-02-13 19:57:19 +00:00
4c9dd1e4b9 Synchronize signals to the main select/event/timer loop.
Parse command line options.
1999-02-13 19:43:21 +00:00
1a54b1c6ac Implemented real cleanup and pruning of routing table on protocol shutdown. 1999-02-13 19:15:28 +00:00
ab749558a2 Pass new argument to FIB_ITERATE_END. 1999-02-13 19:14:16 +00:00
2569bc4073 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:13:51 +00:00
4e9498cbb1 config->router_id works again. 1999-02-13 18:42:00 +00:00
67bd949a52 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:59:06 +00:00
14dea0ed25 Run the event queue before writing SIGUSR dumps. 1999-02-11 22:51:15 +00:00
64011f898c struct proto again contains instance name (a copy of proto->cf->name). 1999-02-11 22:45:54 +00:00
3b15402fd4 Grrr, forgot to commit the event routines themselves :| 1999-02-11 22:18:36 +00:00
e8f73195fa 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 21:18:26 +00:00
edf62ba13f Propagate depend into all subdirectories; make rip compile after
latest mj's changes.
1999-02-08 22:50:32 +00:00
ed245f967f Synced Linux sysdeps to new interface. 1999-02-05 21:39:21 +00:00
10d807d000 Synced kernel interface to new interface. 1999-02-05 21:38:50 +00:00