summaryrefslogtreecommitdiff
path: root/nest/proto.c
AgeCommit message (Collapse)Author
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-31Include "lib/string.h" instead of <string.h>. It should give us bzero()Martin Mares
and other non-portable functions on all systems.
2000-03-19Bare skeleton of the BGP.Martin Mares
2000-03-12Fixed a bunch of FIXME's by removing them :)Martin Mares
2000-03-12Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,Martin Mares
several debug() calls converted to DBG().
2000-03-07Added debugging of protocol state transitions.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-17Moved initlialization of protocol lists to global init. Argh.Martin Mares
2000-01-17Don't forget changing proto->name to point to name in new configurationMartin Mares
(to avoid the name being freed with the old config). Also remember to add proto_pipe to protocol_list.
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-16Added filter_same() for comparision of two filters.Martin Mares
Pavel, please implement this as soon as possible.
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-06Moved initialization of protocol list to proto.c.Martin Mares
Added sysdep configuration hooks.
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-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>'.
1999-11-30`show interfaces' and `show protocols' works.Martin Mares
1999-11-25Added few basic commands: show status, show interfaces [summary],Martin Mares
show protocols (incomplete).
1999-10-29Events now return a value. If it's non-zero, the event is re-queuedMartin Mares
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.
1999-08-03Protocol engine bug fixes:Martin Mares
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 routing tables immediately instead of waiting for the delayed protocol flush event. Also added a protocol instance counter (used by KRT code in very magic ways).
1999-05-17From now we support multiple tables. The master_table variable isMartin Mares
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 has a list of all protocols connected to this table and having the rt_notify hook set. Each protocol can also freely decide (by calling proto_add_announce_hook) to connect to any other table, but it will be probably used only by the table-to-table protocol. The default debugging dumps now include all routing tables and also all their connections.
1999-04-05Changed syntax of attaching filters to protocols to hopefully the finalMartin Mares
version: EXPORT <filter-spec> for outbound routes (i.e., those announced by BIRD to the rest of the world). IMPORT <filter-spec> for inbound routes (i.e., those imported by BIRD from the rest of the world). where <filter-spec> is one of: ALL pass all routes NONE drop all routes FILTER <name> use named filter FILTER { <filter> } use explicitly defined filter For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes the kernel protocol, so that you need to add EXPORT ALL to get the previous configuration of kernel syncer (as usually, see doc/bird.conf.example for a bird.conf example :)).
1999-03-29Clarify resource dumps and include them in the main debugging dump.Martin Mares
1999-03-26Added everything protocols need to know about multiple routing tables,Martin Mares
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-26Slightly better generator of default protocol instance names.Martin Mares
1999-03-17Allow input and output filters (only accept/reject style as we didn't defineMartin Mares
modifying filters yet) to be attached to protocol instances.
1999-03-09Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.Ondrej Filip
1999-03-04Initialize allocated struct proto :-)Martin Mares
1999-03-03Fix several things I broke today.Martin Mares
1999-03-03Added a hack forcing protocols with priority>0 to be started upMartin Mares
immediately. Grrr, need to find a real solution some day.
1999-03-03Introduced protocol priority (all 'normal' protocols should use theMartin Mares
default zero priority). No more "kernel syncer initialized before device routes" problems.
1999-02-13When protocols go down, prune the neighbor list.Martin Mares
1999-02-13Perform gracious shutdown upon receipt of SIGTERM. Finally we canMartin Mares
test the whole protocol shutdown code... :)
1999-02-13Implemented real cleanup and pruning of routing table on protocol shutdown.Martin Mares
1999-02-11Real implementation of protocol state machines. Delayed startup/shutdownMartin Mares
should work now. Initial feeding of protocols by interfaces/routes is done from the event queue to prevent unwanted recursion.
1999-02-05Implemented new configuration/reconfiguration interface and defined protocolMartin Mares
state machines. Full explanation will follow soon.
1999-01-10Initialize only protocols which are compiled in :)Martin Mares
1998-11-29Handle disabled protocol instances.Martin Mares
1998-11-27Replaced nest/confile.h by conf/conf.h, added a lot of new definitions.Martin Mares
1998-10-19Proto struct now contain (down | starting | up) state.Martin Mares
1998-10-18Preconfig, postconfig and init hooks can be NULL.Martin Mares
1998-10-18Split protocol init to building of protocol list and real protocol init.Martin Mares
Added kernel route table syncer skeleton.
1998-10-17Solve chicken-and-egg problems with protocol startup. We now queue all inactiveMartin Mares
protocols and don't send route/interface updates to them and when they come up, we resend the whole route/interface tables privately. Removed the "scan interface list after protocol start" work-around.
1998-07-09Adding proto_dump_all() functionPavel Machek
1998-06-03Basic protocol operations.Martin Mares