Age | Commit message (Collapse) | Author |
|
Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
|
|
When a protocol was enabled interactively (but disabled in the config
file), then reconfigure in some cases forgets to disable it.
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
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.
|
|
- 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
- min_scope check is removed, all routes have SCOPE_UNIVERSE by default
- also fixes some remaining compiler warnings
|
|
|
|
Also adds support for executing commands using birdc <cmd>.
|
|
And generally consolidates protocol commands.
|
|
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
minor bugs (like ignoring debug flag changes from the command line).
|
|
|
|
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.
The fix leads to adding some pipe-specific hacks to the nest,
but this seems inevitable.
|
|
And also fixes a minor bug.
|
|
Also fixes a bug in the previous patch.
|
|
Before this change, protocols were restarted in that case.
|
|
|
|
|
|
|
|
|
|
This can be used to re-feed routes to protocol after soft change in
export filters.
|
|
|
|
|
|
|
|
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
crash.
|
|
|
|
|
|
Scheduling flush must be done before resource pool freeing as it
frees some allocated list nodes from a global list.
|
|
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
during previous stop.
The current behavior is that resources, allocated during
DOWN -> * transition, are freed in * -> DOWN transition,
and flushing (scheduled in UP -> *) just counteract
feeding (scheduled in * -> UP). Protocol fell down
when both flushing is done (if needed) and protocol
reports DOWN.
BTW, is thera a reason why neighbour cache item acquired
by protocol is not tracked by resource mechanism?
|
|
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
disconnecting, then resource pool of protocol was freed,
but freed linked list structures remains in the list.
|
|
|
|
|
|
Protocol hooks deserve an extra chapter (to come soon).
|
|
|
|
|
|
|
|
|
|
|
|
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.)
|
|
call ev_schedule() on the same handler which should work perfectly now.
|
|
restarts of BGP seem to work now.
|
|
|
|
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,
set to EAP_xxx) and also a callback for naming and formatting of attributes.
The callback can return one of the following results:
GA_UNKNOWN Attribute not recognized.
GA_NAME Attribute name recognized and put to the buffer,
generic code should format the value.
GA_FULL Both attribute name and value put to the buffer.
Please update protocols generating dynamic attributes to provide
the attr_class and formatting hook.
|
|
and other non-portable functions on all systems.
|
|
|
|
|
|
several debug() calls converted to DBG().
|