summaryrefslogtreecommitdiffstats
path: root/nest
AgeCommit message (Collapse)Author
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-04Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning.Martin Mares
2000-03-04Garbage collector events and counters are now per table and one dayMartin Mares
they can be made configurable if it turns out to be useful.
2000-03-04Enabled short continuations.Martin Mares
2000-03-04Implemented real attribute cache.Martin Mares
2000-03-01Removed RTF_EXTERIOR and RTF_TAGGED (unused).Martin Mares
2000-03-01Reimplemented neighbor cache. Now uses real hashing.Martin Mares
2000-03-01Added proto->hash_key which contains randomly generated hash key usedMartin Mares
for calculation of hash functions depending on proto.
2000-03-01If the user has specified identical preferences for instances of differentMartin Mares
protocols, break the tie by comparing addresses, so we keep the ordering unambiguous.
2000-03-01Rewrote interface type detection logic. The `unnumbered' flag is now perMartin Mares
address, not per interface (hence it's ifa->flags & IA_UNNUMBERED) and should be set reliably. IF_MULTIACCESS should be fixed now, but it isn't wise to rely on it on interfaces configured with /30 prefix.
2000-02-18Completion works. Unfortunately, we have to access a couple of internalMartin Mares
symbols of libreadline :-(
2000-01-19Split off general commands to cmds.c.Martin Mares
Added `show symbols' command which dumps whole symbol table together with symbol types etc.
2000-01-19Killed a couple of bugs in the neighbor cache.Martin Mares
Manual disable/enable/restart/shutdown/reconfiguration of protocols no longer hangs on loops in neighbor lists :)
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-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-17Device protocol supports reconfiguration.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-17Reworked 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.
2000-01-16Don't forget to set proto->min_scope = SCOPE_HOST.Martin Mares
1999-12-16Minor cleanups.Martin Mares
1999-12-16Avoid touching F_MODIFY, it no longer exists.Martin Mares
1999-12-09Added universal locking mechanism which will solve problemsMartin Mares
with protocols wanting to use the same port on the same interface during reconfiguration time. How to use locks: In the if_notify hook, just order locks for the interfaces you want to work with and do the real socket opening after the lock hook function gets called. When you stop using the socket, close it and rfree() the lock. Please update your protocols to use the new locking mechanism.
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-06Implemented echoing of log messages to CLI connections. Just try `echo all'.Martin Mares
1999-12-05Don't forget to send an OK reply after dumping debug information.Martin Mares
1999-12-05Added DEBUG commands.Martin Mares
Removed CLI tests, real commands now serve as much better examples.
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-03Renamed SHOW PROTOCOLS VERBOSE to SHOW PROTOCOLS ALL to be consistentMartin Mares
with the other commands.
1999-12-02Implemented `show route where <condition>' command.Martin Mares
Pavel, please check my addition to filter/config.Y.
1999-12-01Added dumping of routing tables (`show route'). This includes filtering.Martin Mares
1999-12-01Added get_route_info and show_route_data hooks to struct protocol.Martin Mares
Please implement them.
1999-12-01Reset temporary parser data before parsing, not afterwards. This enablesMartin Mares
deferred CLI command handlers to store their temporary data in the CLI parsing pool.
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-12-01Introduced new protocol-dependent integer field `aux' to struct neighbor.Martin Mares
1999-11-30Remember protocol instance in proto_config and use that forMartin Mares
`show protocols <name>'.
1999-11-30Use TIME_INFINITY for initialization of password entries insteadMartin Mares
of 2000000000 (BTW who wrote that???)
1999-11-30`show interfaces' and `show protocols' works.Martin Mares
1999-11-30Don't use continuation shortcuts until real client is written.Martin Mares
1999-11-25Added few basic commands: show status, show interfaces [summary],Martin Mares
show protocols (incomplete).
1999-11-25cli_msg() moved to cli.h, so that it can be used outside the parser.Martin Mares
1999-11-25Fix timeouts. Triggered updates are not done, yet.Pavel Machek
1999-11-18Allow EA type to be set to 'undefined' which overrides all further definitonsMartin Mares
of that EA in the same list and causes ea_find() to fail unless you add EA_ALLOW_UNDEF to the second argument. ea_sort (resp. ea_do_prune()) removes all undef'd attributes from the list. I hope this works :)
1999-11-18DEF_PREF_UKR and DEF_PREF_SINK removed.Martin Mares
1999-11-17Added some temporary examples of how to define CLI commands (search for CF_CLI).Martin Mares
To define a new command, just add a new rule to the gramar: CF_CLI(COMMAND NAME, arguments, help-args, help-text) { what-should-the-command-do } ; where <arguments> are appended to the RHS of the rule, <help-args> is the argument list as shown in the help and <help-text> is description of the command for the help. <what-should-the-command-do> is a C code snippet to be executed. It should not take too much time to execute. If you want to print out a lot of information, you can schedule a routine to be called after the current buffer is flushed by making cli->cont point to the routine (see the TEST LONG command definition for an example); if the connection is closed in the meantime, cli->cleanup gets called. You can access `struct cli' belonging to the connection you're currently servicing as this_cli, but only during parse time, not from routines scheduled for deferred execution. Functions to call inside command handlers: cli_printf(cli, code, printf-args) -- print text to CLI connection, <code> is message code as assigned in doc/reply_codes or a negative one if it's a continuation line. cli_msg(code, printf-args) -- the same for this_cli. Use 'sock -x bird.ctl' for connecting to the CLI until a client is written.