Commit graph

81 commits

Author SHA1 Message Date
Ondrej Zajicek a7f23f581f Implements protocol templates.
Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
2011-11-07 00:31:23 +01:00
Ondrej Zajicek 4116db182d Implements static recursive routes. 2011-09-24 02:24:34 +02:00
Ondrej Zajicek d93a43a57d Fix leaked debug message. 2011-04-01 12:21:18 +02:00
Ondrej Zajicek 9852f81064 Multipath support for static protocol. 2010-12-07 23:34:36 +01:00
Ondrej Zajicek 391931d456 Minor finalizations of link state checks. 2010-11-19 13:46:21 +01:00
Ondrej Zajicek fe181e7c63 Adds support for iface link check to static protocol. 2010-11-11 12:24:27 +01:00
Ondrej Zajicek c1cefd7bea Do not remove old static route if it is in new config with different gw. 2010-05-16 11:03:59 +02:00
Ondrej Zajicek 53434e44a9 Better flushing of interfaces.
When device protocol goes down, interfaces should be flushed
asynchronously (in the same way like routes from protocols are flushed),
when protocol goes to DOWN/HUNGRY.

This fixes the problem with static routes staying in kernel routing
table after BIRD shutdown.
2010-02-27 16:00:07 +01:00
Ondrej Zajicek f98e291579 The pipe cleanup. 2009-06-01 14:07:13 +02:00
Martin Mares e43ae6330e Fix %<something>I format strings. 2001-08-19 11:15:24 +00:00
Martin Mares 725270cb1d Fixes for the programmer's manual. 2000-06-08 12:37:21 +00:00
Martin Mares df49d4e14b 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:56:06 +00:00
Martin Mares 3b31c53833 Documented all the trivial protocols. 2000-06-04 16:15:37 +00:00
Martin Mares e4bfafa100 Manual enable/disable works right. 2000-05-13 11:01:41 +00:00
Martin Mares 221135d6bf Include "lib/string.h" instead of <string.h>. It should give us bzero()
and other non-portable functions on all systems.
2000-03-31 23:30:21 +00:00
Martin Mares 6b9fa32080 Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,
several debug() calls converted to DBG().
2000-03-12 21:01:38 +00:00
Martin Mares 295ae16d4d Static protocol supports full dynamic reconfiguration. 2000-01-17 12:38:50 +00:00
Martin Mares d272fe22dd 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 11:52:50 +00:00
Martin Mares feed822676 Implemented `show static'. It's a relatively good example of how to write
show commands for other protocols.
1999-12-03 11:41:23 +00:00
Martin Mares 4f1a6d27b9 Kill remaining master_table relics in KRT code.
Make all protocols pass routing table to rte_update and rte_discard.
1999-05-17 20:16:53 +00:00
Martin Mares 9a158361da 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-06 21:38:11 +00:00
Martin Mares 08e2d6259a Removed TOS support. This simplifies many things a lot. 1999-04-12 18:01:07 +00:00
Martin Mares 7dc4827c96 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:50:43 +00:00
Martin Mares 25287d6f7e Don't try to install static routes to disconnected neighbors. 1999-03-02 17:20:07 +00:00
Martin Mares d88e99a92a Implemented static device routes.
Expect for reconfiguration issues, the static protocol is complete now.
1999-02-13 21:59:48 +00:00
Martin Mares 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
Martin Mares e9e3dc2659 Modified static router to use new interface. 1999-02-05 21:38:22 +00:00
Martin Mares 08c69a7720 die() -> bug() where appropriate. 1998-12-20 14:27:37 +00:00
Martin Mares 980297d289 Fixed a couple of bugs in static protocol. All static routes except device
ones seem to work well.
1998-12-08 18:31:31 +00:00
Martin Mares f6bd206607 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:13:31 +00:00
Martin Mares a1bf6440b5 Added skeleton of static route protocol. 1998-12-06 18:21:23 +00:00