summaryrefslogtreecommitdiff
path: root/nest/protocol.h
AgeCommit message (Collapse)Author
2012-04-28Some fixes in route export limits.Ondrej Zajicek
2012-04-24Implements generalized export limits.Ondrej Zajicek
And also fixes some minor bugs in limits.
2012-04-21Fixes in generalized import limits.Ondrej Zajicek
2012-04-15Implements generalized import hooks.Ondrej Zajicek
Thanks to Alexander V. Chernikov for the original patch.
2012-03-30Merge branch 'soon'Ondrej Zajicek
Conflicts: nest/proto.c nest/rt-table.c
2012-03-28Fixes responsiveness for protocol shutdown.Ondrej Zajicek
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.
2012-03-15Better support for multitable protocols.Ondrej Zajicek
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 filters) itself. Filters and stats are moved to announce hooks, a protocol could have different filters and stats to different tables. The patch is based on one from Alexander V. Chernikov, thanks.
2012-01-24Assign default protocol preference via proto_config_new().Ondrej Zajicek
The patch from Alexander V. Chernikov.
2011-12-22Implements deterministic MED handling.Ondrej Zajicek
Thanks to Alexander V. Chernikov for many suggestions.
2011-11-07Implements protocol templates.Ondrej Zajicek
Based on the patch from Alexander V. Chernikov. Extended to support almost all protocols. Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
2011-03-13Implements Router Advertisement protocol.Ondrej Zajicek
2010-07-05Implements hostcache and recursive next hops.Ondrej Zajicek
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.
2010-04-07Implements BGP 'show protocols' info details.Ondrej Zajicek
2010-02-26Many changes in (mainly) kernel syncers.Ondrej Zajicek
- 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
2010-02-21Restricted read-only CLI.Ondrej Zajicek
Also adds support for executing commands using birdc <cmd>.
2010-02-20Implements pattern match for 'show protocols' command.Ondrej Zajicek
And generally consolidates protocol commands.
2010-02-13Removes phantom protocol from the pipe design.Ondrej Zajicek
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).
2010-02-13Fixes protocol statistics for pipes.Ondrej Zajicek
2010-02-11Fixes a tricky bug in the pipe protocol.Ondrej Zajicek
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.
2010-01-03Implements MRTdump feature.Ondrej Zajicek
2009-12-14Finishes 'route reload' feature.Ondrej Zajicek
2009-12-02Implements route re-feed.Ondrej Zajicek
This can be used to re-feed routes to protocol after soft change in export filters.
2009-11-26Implements BGP route refresh.Ondrej Zajicek
2009-11-17Implement description field of protocol.Ondrej Zajicek
2009-10-12Implements protocol-specific router id and updates documentation.Ondrej Zajicek
2009-06-19Adds support for soft reconfiguration.Ondrej Zajicek
2009-06-04Implements route statistics and fixes some minor bugs.Ondrej Zajicek
2009-05-31Changes pipes to transfer all routes between routing table, not just optimal ↵Ondrej Zajicek
routes.
2008-11-08Proper format functions for ORIGINATOR_ID, CLUSTER_LISTOndrej Zajicek
2000-05-19Asynchronous feeding of protocols.Martin Mares
2000-05-16Don't log state changes if nothing user-visible has changed.Martin Mares
2000-05-13Changed semantics of the rt_update hook. The attribute list we pass nowMartin Mares
contains all attributes, not just the temporary ones. This avoids having to merge the lists inside protocols or doing searches on both of them. Also, do filtering of routes properly. (I'd like to avoid it, but it's needed at least in the krt protocol.)
2000-05-06Added commands `show route protocol <p>' and `show route import <p>' whichMartin Mares
show the routing table as exported to the protocol given resp. as returned from its import control hook. To get handling of filtered extended attributes right (even in the old `show route where <filter>' command), the get_route_info hook gets an attribute list and all protocol specific rte attributes are contained there as temporary ones. Updated RIP to do that. Added ea_append() which joins two ea_list's.
2000-05-06When rte_update is called for an identical route, don't announce anything.Martin Mares
Please implement the rte_same hook in your protocols. It should just compare your metrics stored directly in rte, the rest is done by the core.
2000-04-01Changed initialization of protocol list -- now we call proto_build() insteadMartin Mares
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.
2000-03-19Bare skeleton of the BGP.Martin Mares
2000-03-12Added tracing of interface events.Martin Mares
2000-03-07Added protocol debugging flags (protocol.h: D_xxx), parsing of themMartin Mares
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 the flag is set, the corresponding messages should be printed using calls to log(L_TRACE, ...), each message prefixed with the name of the protocol instance. These messages should cover the whole normal operation of the protocol and should be useful for an administrator trying to understand what does the protocol behave on his network or who is attempting to diagnose network problems. If your messages don't fit to the categories I've defined, feel free to add your own ones (by adding them to protocol.h and on two places in nest/config.Y), but please try to keep the categories as general as possible (i.e., not tied to your protocol). o Internal debug messages not interesting even to an experienced user should be printed by calling DBG() which is either void or a call to debug() depending on setting of the LOCAL_DEBUG symbol at the top of your source. o Dump functions (proto->dump etc.) should call debug() to print their messages. o If you are doing any internal consistency checks, use ASSERT or bug(). o Nobody shall ever call printf() or any other stdio functions. Also please try to log any protocol errors you encounter and tag them with the appropriate message category (usually L_REMOTE or L_AUTH). Always carefully check contents of any message field you receive and verify all IP addresses you work with (by calling ipa_classify() or by using the neighbour cache if you want to check direct connectedness as well).
2000-03-01Added proto->hash_key which contains randomly generated hash key usedMartin Mares
for calculation of hash functions depending on proto.
2000-01-18Killed protocol->priority. Protocol startup should be clean and hack-free now.Martin Mares
It seems everything still works (except for disable/enable/restart which hangs sometimes, but it's another story).
2000-01-18protocol->startup_counter no longer exists.Martin Mares
2000-01-17Separated `official protocol names' used in status dumps from name templatesMartin Mares
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-16Reworked proto lists -- each proto is now in two lists: the global oneMartin Mares
(proto_list) and per-type one (original lists). A lot of things simplified. Implemented `disable', `enable' and `restart' CLI commands.
2000-01-16Converted shutdown to a kind of reconfiguration, it's no more handledMartin Mares
as a exception in protocol state machines. Introduced a `shutdown' CLI command. Killed few reconfiguration bugs.
2000-01-16First attempt on dynamic reconfiguration. There are still lots of bugsMartin Mares
and problems to solve, but the hardest part works.
1999-12-08Except for special protocols (nowadays only the kernel syncer), don'tMartin Mares
export host and link scope routes.
1999-12-03Added proto_get_named() to be used in CLI commands to get protocol instanceMartin Mares
of a given protocol with optionally given name. See `show static' for an example.
1999-12-01Added get_route_info and show_route_data hooks to struct protocol.Martin Mares
Please implement them.
1999-12-01`show protocols' now shows time of last state change and protocol-dependentMartin Mares
status information (obtained via newly introduced hook protocol->get_status).
1999-11-30Remember protocol instance in proto_config and use that forMartin Mares
`show protocols <name>'.