No more problems when protocols gets disabled during feeding.
Asynchronous feeding of protocols.
Don't log state changes if nothing user-visible has changed.
Removed a lot of unused variables.
Please try compiling your code with --enable-warnings to see them. (Theunused parameter warnings are usually bogus, the unused variable onesare very useful, but gcc is unable to control them separately.)
Event handlers no longer return re-queue flag. Instead of using it, justcall ev_schedule() on the same handler which should work perfectly now.
Fixed several bugs in protocol state machine. Reconfigurations andrestarts of BGP seem to work now.
Don't forget to set filter pointers in struct proto when reconfiguring.
Changed initialization of protocol list -- now we call proto_build() insteadof 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,...
Include "lib/string.h" instead of <string.h>. It should give us bzero()and other non-portable functions on all systems.
Bare skeleton of the BGP.
Fixed a bunch of FIXME's by removing them :)
Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules,several debug() calls converted to DBG.
Added debugging of protocol state transitions.
Added protocol debugging flags (protocol.h: D_xxx), parsing of themin 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...
Added proto->hash_key which contains randomly generated hash key usedfor calculation of hash functions depending on proto.
Killed protocol->priority. Protocol startup should be clean and hack-free now.It seems everything still works (except for disable/enable/restart which hangssometimes, but it's another story).
protocol->startup_counter no longer exists.
Moved initlialization of protocol lists to global init. Argh.
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.
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.
Added filter_same() for comparision of two filters.
Pavel, please implement this as soon as possible.
Converted shutdown to a kind of reconfiguration, it's no more handledas a exception in protocol state machines. Introduced a `shutdown'CLI command. Killed few reconfiguration bugs.
First attempt on dynamic reconfiguration. There are still lots of bugsand problems to solve, but the hardest part works.
Except for special protocols (nowadays only the kernel syncer), don'texport host and link scope routes.
Moved initialization of protocol list to proto.c.
Added sysdep configuration hooks.
Added proto_get_named() to be used in CLI commands to get protocol instanceof a given protocol with optionally given name. See `show static' for anexample.
`show protocols' now shows time of last state change and protocol-dependentstatus information (obtained via newly introduced hook protocol->get_status).
Remember protocol instance in proto_config and use that for`show protocols <name>'.
`show interfaces' and `show protocols' works.
Added few basic commands: show status, show interfaces [summary],show protocols (incomplete).
Events now return a value. If it's non-zero, the event is re-queuedfor processing in next event cycle. This can be used to prevent backgroundactions (hint: user commands) from hogging the CPU for too long time.
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...
From now we support multiple tables. The master_table variable isdefinitely gone. Both rte_update() and rte_discard() have an additionalargument telling which table should they modify.
Also, rte_update() no longer walks the whole protocol list -- each table...
Changed syntax of attaching filters to protocols to hopefully the finalversion:
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)....
Clarify resource dumps and include them in the main debugging dump.
Added everything protocols need to know about multiple routing tables,i.e. struct proto now contains field 'table' pointing to routing tablethe protocol is attached to. Use this instead of &master_table.
Modified all protocols except the kernel syncer to use this field.
Slightly better generator of default protocol instance names.
Allow input and output filters (only accept/reject style as we didn't definemodifying filters yet) to be attached to protocol instances.
Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF.
Initialize allocated struct proto :-)
Fix several things I broke today.
Added a hack forcing protocols with priority>0 to be started upimmediately. Grrr, need to find a real solution some day.
Introduced protocol priority (all 'normal' protocols should use thedefault zero priority). No more "kernel syncer initialized beforedevice routes" problems.
When protocols go down, prune the neighbor list.
Perform gracious shutdown upon receipt of SIGTERM. Finally we cantest the whole protocol shutdown code... :)
Implemented real cleanup and pruning of routing table on protocol shutdown.
Real implementation of protocol state machines. Delayed startup/shutdownshould work now. Initial feeding of protocols by interfaces/routes isdone from the event queue to prevent unwanted recursion.
Implemented new configuration/reconfiguration interface and defined protocolstate machines. Full explanation will follow soon.
Initialize only protocols which are compiled in :)
Handle disabled protocol instances.
Replaced nest/confile.h by conf/conf.h, added a lot of new definitions.
Proto struct now contain (down | starting | up) state.
Preconfig, postconfig and init hooks can be NULL.
Split protocol init to building of protocol list and real protocol init.Added kernel route table syncer skeleton.
Solve chicken-and-egg problems with protocol startup. We now queue all inactiveprotocols 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.
Adding proto_dump_all() function
Basic protocol operations.
protos_init, not proto_init.
Added routing table and routing attribute code.