| Branch: | Revision:

iof-bird-daemon / nest / proto.c @ d2c392d4

History | View | Annotate | Download (35.6 KB)

# Date Author Comment
b662290f 01/10/2013 12:07 PM Ondrej Zajicek

Separate import and receive limits.

They have different behavior w.r.t. filtered routes that are kept.

79b4e12e 12/27/2012 11:56 AM Ondrej Zajicek

Implements interface masks for choosing router id.

Router ID could be automatically determined based of subset of
ifaces/addresses specified by 'router id from' option. The patch also
does some minor changes related to router ID reconfiguration.

Thanks to Alexander V. Chernikov for most of the work.

a92cf57d 12/26/2012 11:40 AM Ondrej Zajicek

Implements undo command and optional timeout for configuration

Several new configure command variants:

configure undo - undo last reconfiguration
configure timeout - configure with scheduled undo if not confirmed in timeout
configure confirm - confirm last configuration...

15550957 11/15/2012 12:29 AM Ondrej Zajicek

Changes 'rejected' to 'filtered' in one of the last patches.

cf98be7b 11/10/2012 01:26 PM Ondrej Zajicek

Allows rejected routes to be kept and examined.

When 'import keep rejected' protocol option is activated, routes
rejected by the import filter are kept in the routing table, but they
are hidden and not propagated to other protocols. It is possible to
examine them using 'show route rejected'.

5400c0e7 08/06/2012 12:42 AM Ondrej Zajicek

Fixes BGP subcode during global shutdown.

d9b77cc2 04/24/2012 09:39 PM Ondrej Zajicek

Implements generalized export limits.

And also fixes some minor bugs in limits.

7d0a31de 04/21/2012 07:05 PM Ondrej Zajicek

Fixes in generalized import limits.

ebecb6f6 04/15/2012 01:28 PM Ondrej Zajicek

Implements generalized import hooks.

Thanks to Alexander V. Chernikov for the original patch.

bf2abe2f 03/30/2012 09:04 AM Ondrej Zajicek

Merge branch 'soon'


fb829de6 03/28/2012 04:40 PM Ondrej Zajicek

Fixes responsiveness for protocol shutdown.

When a protocol went down, all its routes were flushed in one step, that
may block BIRD for too much time. The patch fixes that by limiting
maximum number of routes flushed in one step.

c0adf7e9 03/15/2012 11:13 AM Ondrej Zajicek

Better support for multitable protocols.

The nest-protocol interaction is changed to better handle multitable
protocols. Multitable protocols now declare that by 'multitable' field,
which tells nest that a protocol handles things related to proto-rtable
interaction (table locking, announce hook adding, reconfiguration of...

39c028e9 01/24/2012 10:31 AM Ondrej Zajicek

Assign default protocol preference via proto_config_new().

The patch from Alexander V. Chernikov.

a7f23f58 11/06/2011 11:31 PM Ondrej Zajicek

Implements protocol templates.

Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.

23fd4644 06/20/2011 06:35 PM Ondrej Zajicek

Fixes a bug related to protocol enabling and reconfigure.

When a protocol was enabled interactively (but disabled in the config
file), then reconfigure in some cases forgets to disable it.

4ef09506 04/01/2011 11:55 AM Ondrej Zajicek

Fixes a problem with BGP protocols and implicit router IDs.

93e868c7 03/13/2011 10:33 AM Ondrej Zajicek

Implements Router Advertisement protocol.

cfe34a31 07/05/2010 03:50 PM Ondrej Zajicek

Implements hostcache and recursive next hops.

Hostcache is a structure for monitoring changes in a routing table that
is used for routes with dynamic/recursive next hops. This is needed for
proper iBGP next hop handling.

acb60628 06/02/2010 08:20 PM Ondrej Zajicek

Implements command that shows memory usage.

ba130172 04/27/2010 09:27 AM Ondrej Filip

Avoid warning if not compiled with pipes.

b8113a5e 04/06/2010 10:19 PM Ondrej Zajicek

Implements BGP 'show protocols' info details.

53434e44 02/27/2010 03:00 PM Ondrej Zajicek

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...

ff2857b0 02/26/2010 09:55 AM Ondrej Zajicek

Many changes in (mainly) kernel syncers.

- BSD kernel syncer is now self-conscious and can learn alien routes
- important bugfix in BSD kernel syncer (crash after protocol restart)
- many minor changes and bugfixes in kernel syncers and neighbor cache
- direct protocol does not generate host and link local routes...

e81b440f 02/21/2010 01:34 PM Ondrej Zajicek

Fix configure to enable warnings and fix most of them.

e0a45fb4 02/21/2010 08:57 AM Ondrej Zajicek

Restricted read-only CLI.

Also adds support for executing commands using birdc <cmd>.

e304fd4b 02/19/2010 11:08 PM Ondrej Zajicek

Implements pattern match for 'show protocols' command.

And generally consolidates protocol commands.

dca75fd7 02/13/2010 11:26 AM Ondrej Zajicek

Removes phantom protocol from the pipe design.

It seems that by adding one pipe-specific exception to route
announcement code and by adding one argument to rt_notify() callback i
could completely eliminate the need for the phantom protocol instance
and therefore make the code more straightforward. It will also fix some...

9db74169 02/13/2010 09:44 AM Ondrej Zajicek

Fixes protocol statistics for pipes.

c8387626 02/11/2010 09:27 PM Ondrej Zajicek

Fixes a tricky bug in the pipe protocol.

When uncofiguring the pipe and the peer table, the peer table was
unlocked when pipe protocol state changed to down/flushing and not to
down/hungry. This leads to the removal of the peer table before
the routes from the pipe were flushed....

5a56f27c 02/08/2010 11:42 AM Ondrej Zajicek

Adds asterisk to the primary route in 'show route' cmd.

And also fixes a minor bug.

76b53a4e 02/06/2010 09:57 PM Ondrej Zajicek

Adds some log messages related to configure.

Also fixes a bug in the previous patch.

ebae4770 02/06/2010 06:19 PM Ondrej Zajicek

Modifies configure to just reload protocols when filters change.

Before this change, protocols were restarted in that case.

c37e7851 02/02/2010 11:19 PM Ondrej Zajicek

Makes date/time formats configurable.

cf31112f 01/03/2010 11:17 AM Ondrej Zajicek

Implements MRTdump feature.

8a7fb885 12/14/2009 12:32 AM Ondrej Zajicek

Finishes 'route reload' feature.

a421ec33 12/02/2009 09:22 PM Ondrej Zajicek

Fixes silly bug.

11361a10 12/02/2009 09:19 PM Ondrej Zajicek

Implements route re-feed.

This can be used to re-feed routes to protocol after soft change in
export filters.

bf47fe4b 11/26/2009 07:47 PM Ondrej Zajicek

Implements BGP route refresh.

e04555c0 11/17/2009 02:45 PM Ondrej Zajicek

Implement description field of protocol.

4cdd0784 10/12/2009 09:31 PM Ondrej Zajicek

Implements protocol-specific router id and updates documentation.

ac07aacd 08/11/2009 09:03 AM Ondrej Zajicek

Replace assert with log.

Although it is true unless there is a bug in BIRD, this assert is not
needed (code below does not require that assumption), so we should not

bf1aec97 06/19/2009 09:49 PM Ondrej Zajicek

Adds support for soft reconfiguration.

925fe2d3 06/03/2009 11:22 PM Ondrej Zajicek

Implements route statistics and fixes some minor bugs.

b807ef9a 02/12/2009 12:43 PM Ondrej Zajicek

Fixes bug in protocol state machine

Scheduling flush must be done before resource pool freeing as it
frees some allocated list nodes from a global list.

d6a836f8 12/08/2008 11:24 AM Ondrej Zajicek

Fixes core state machine.

The core state machine was broken - it didn't free resources
in START -> DOWN transition and might freed resources after
UP -> STOP transition before protocol turned down. It leads
to deadlock on olock acquisition when lock was not freed...

fbde6c39 11/22/2008 12:12 AM Ondrej Zajicek

Fixes race condition leading to memory corruption and crash.

When protocol started, feeding was scheduled. If protocol
got down before feeding was executed, then function
responsible for connecting protocol to kernel routing
tables was called after the function responsible for...

7c103b1e 06/05/2004 09:10 AM Martin Mares

Marked unused parameters in core code as such.

2e9b2421 06/07/2000 12:29 PM Martin Mares

Spelling fixes to progdoc.

3c6269b8 06/02/2000 01:42 PM Martin Mares

Added documentation on protocols.

Protocol hooks deserve an extra chapter (to come soon).

caab3bb3 05/30/2000 09:23 PM Martin Mares

Better formatting of protocol status.

075898de 05/19/2000 06:03 PM Martin Mares

No more problems when protocols gets disabled during feeding.

ac5d8012 05/19/2000 10:46 AM Martin Mares

Asynchronous feeding of protocols.

df9f0fb3 05/16/2000 01:43 PM Martin Mares

Don't log state changes if nothing user-visible has changed.

498c3339 05/06/2000 09:42 PM Martin Mares

Cosmetic fixes.

93a786cb 05/04/2000 08:30 PM Martin Mares

Removed a lot of unused variables.

Please try compiling your code with --enable-warnings to see them. (The
unused parameter warnings are usually bogus, the unused variable ones
are very useful, but gcc is unable to control them separately.)

8f6accb5 04/27/2000 10:28 PM Martin Mares

Event handlers no longer return re-queue flag. Instead of using it, just
call ev_schedule() on the same handler which should work perfectly now.

ebd3720f 04/26/2000 12:30 PM Martin Mares

Fixed several bugs in protocol state machine. Reconfigurations and
restarts of BGP seem to work now.

41b26cfb 04/25/2000 09:56 PM Martin Mares

Don't forget to set filter pointers in struct proto when reconfiguring.

3991d84e 04/01/2000 10:19 AM Martin Mares

Changed initialization of protocol list -- now we call proto_build() instead
of 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,...

221135d6 03/31/2000 11:30 PM Martin Mares

Include "lib/string.h" instead of <string.h>. It should give us bzero()
and other non-portable functions on all systems.

2638249d 03/19/2000 10:09 PM Martin Mares

Bare skeleton of the BGP.

f098e072 03/12/2000 10:53 PM Martin Mares

Fixed a bunch of FIXME's by removing them :)

6b9fa320 03/12/2000 09:01 PM Martin Mares

Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,
several debug() calls converted to DBG.

839380d7 03/07/2000 09:50 PM Martin Mares

Added debugging of protocol state transitions.

96d8e3bf 03/07/2000 08:49 PM Martin Mares

Added protocol debugging flags (protocol.h: D_xxx), parsing of them
in configuration files and commands for manipulating them.

Current debug message policy:

o  D_STATES, D_ROUTES and D_FILTERS are handled in generic code.
o Other debug flags should be handled in the protocols and whenever...
7293c5dd 03/01/2000 02:49 PM Martin Mares

Added proto->hash_key which contains randomly generated hash key used
for calculation of hash functions depending on proto.

3ea1ba63 01/18/2000 11:01 AM Martin Mares

Killed protocol->priority. Protocol startup should be clean and hack-free now.
It seems everything still works (except for disable/enable/restart which hangs
sometimes, but it's another story).

54aaa89a 01/18/2000 10:42 AM Martin Mares

protocol->startup_counter no longer exists.

471cc0be 01/17/2000 12:38 PM Martin Mares

Moved initlialization of protocol lists to global init. Argh.

26368f65 01/17/2000 12:19 AM Martin Mares

Don't forget changing proto->name to point to name in new configuration
(to avoid the name being freed with the old config).

Also remember to add proto_pipe to protocol_list.

f14a4bec 01/16/2000 11:30 PM Martin Mares

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.

30a6108c 01/16/2000 05:49 PM Martin Mares

Added filter_same() for comparision of two filters.

Pavel, please implement this as soon as possible.

bf8558bc 01/16/2000 05:40 PM Martin Mares

Converted shutdown to a kind of reconfiguration, it's no more handled
as a exception in protocol state machines. Introduced a `shutdown'
CLI command. Killed few reconfiguration bugs.

50fe90ed 01/16/2000 04:44 PM Martin Mares

First attempt on dynamic reconfiguration. There are still lots of bugs
and problems to solve, but the hardest part works.

0da472d7 12/08/1999 02:16 PM Martin Mares

Except for special protocols (nowadays only the kernel syncer), don't
export host and link scope routes.

7c0cc76e 12/06/1999 01:44 PM Martin Mares

Moved initialization of protocol list to proto.c.

Added sysdep configuration hooks.

02c1fbdd 12/03/1999 11:40 AM Martin Mares

Added proto_get_named() to be used in CLI commands to get protocol instance
of a given protocol with optionally given name. See `show static' for an

9685deb9 12/01/1999 12:00 PM Martin Mares

`show protocols' now shows time of last state change and protocol-dependent
status information (obtained via newly introduced hook protocol->get_status).

1d2664a4 11/30/1999 02:04 PM Martin Mares

Remember protocol instance in proto_config and use that for
`show protocols <name>'.

0d3e6bce 11/30/1999 12:57 PM Martin Mares

`show interfaces' and `show protocols' works.

ae97b946 11/25/1999 03:35 PM Martin Mares

Added few basic commands: show status, show interfaces [summary],
show protocols (incomplete).

0d70292d 10/29/1999 12:08 PM Martin Mares

Events now return a value. If it's non-zero, the event is re-queued
for processing in next event cycle. This can be used to prevent background
actions (hint: user commands) from hogging the CPU for too long time.

9d885689 08/03/1999 07:31 PM Martin Mares

Protocol engine bug fixes:

o  Make proto_config->table always point to the right
table even if it should be the default one.
o When shutting down, kill protocol in reverse order
of their priority.
o When stopping a protocol down, disconnect it from...
0e02abfd 05/17/1999 08:14 PM Martin Mares

From now we support multiple tables. The master_table variable is
definitely gone. Both rte_update() and rte_discard() have an additional
argument telling which table should they modify.

Also, rte_update() no longer walks the whole protocol list -- each table...

5056c559 04/05/1999 08:15 PM Martin Mares

Changed syntax of attaching filters to protocols to hopefully the final

EXPORT &lt;filter-spec&gt;    for outbound routes (i.e., those announced
by BIRD to the rest of the world).
IMPORT &lt;filter-spec&gt; for inbound routes (i.e., those imported
by BIRD from the rest of the world)....
5bc512aa 03/29/1999 08:14 PM Martin Mares

Clarify resource dumps and include them in the main debugging dump.

7dc4827c 03/26/1999 09:50 PM Martin Mares

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.

4ba84ebc 03/26/1999 09:37 PM Martin Mares

Slightly better generator of default protocol instance names.

529c4149 03/17/1999 02:31 PM Martin Mares

Allow input and output filters (only accept/reject style as we didn't define
modifying filters yet) to be attached to protocol instances.

c1f8dc91 03/09/1999 10:27 PM Ondrej Filip

Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.

8fe48f13 03/04/1999 11:39 AM Martin Mares

Initialize allocated struct proto :-)

53b7a298 03/03/1999 08:55 PM Martin Mares

Fix several things I broke today.

0e889c52 03/03/1999 08:40 PM Martin Mares

Added a hack forcing protocols with priority>0 to be started up
immediately. Grrr, need to find a real solution some day.

b2280748 03/03/1999 07:33 PM Martin Mares

Introduced protocol priority (all 'normal' protocols should use the
default zero priority). No more "kernel syncer initialized before
device routes" problems.

783f8b68 02/13/1999 08:55 PM Martin Mares

When protocols go down, prune the neighbor list.

f4aabcee 02/13/1999 08:15 PM Martin Mares

Perform gracious shutdown upon receipt of SIGTERM. Finally we can
test the whole protocol shutdown code... :)

1a54b1c6 02/13/1999 07:15 PM Martin Mares

Implemented real cleanup and pruning of routing table on protocol shutdown.

67bd949a 02/11/1999 10:59 PM Martin Mares

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.

31b3e1bb 02/05/1999 09:37 PM Martin Mares

Implemented new configuration/reconfiguration interface and defined protocol
state machines. Full explanation will follow soon.

18fff6a1 01/10/1999 12:26 AM Martin Mares

Initialize only protocols which are compiled in :)