summaryrefslogtreecommitdiff
path: root/nest
AgeCommit message (Collapse)Author
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-04Don't forget to send an OK reply after dumping debug information.Martin Mares
1999-12-04Added 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.
1999-11-17Command line interface now works.Martin Mares
1999-11-15An example of how to define enums.Martin Mares
1999-11-04Renamed attr->attrs to attr->eattrs.Martin Mares
1999-10-31Parse CLI commands. We use the same parser as for configuration files (becauseMartin Mares
we want to allow filter and similar complex constructs to be used in commands and we should avoid code duplication), only with CLI_MARKER token prepended before the whole input. Defined macro CF_CLI(cmd, args, help) for defining CLI commands in .Y files. The first argument specifies the command itself, the remaining two arguments are copied to the help file (er, will be copied after the help file starts to exist). This macro automatically creates a skeleton rule for the command, you only need to append arguments as in: CF_CLI(STEAL MONEY, <$>, [[Steal <$> US dollars or equivalent in any other currency]]): NUM { cli_msg(0, "%d$ stolen", $3); } ; Also don't forget to reset lexer state between inputs.
1999-10-31The CLI I/O functions work as desired.Martin Mares
1999-10-29First steps of the Command Line Interface: I/O routines.Martin Mares
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-10-02Obvious bugs in authentication fixed.Pavel Machek
1999-08-03Ouch, how could I write this?Martin Mares
1999-08-03Basic support for IPv6. The system-dependent part doesn't work yet,Martin Mares
but the core routines are there and seem to be working. o lib/ipv6.[ch] written o Lexical analyser recognizes IPv6 addresses and when in IPv6 mode, treats pure IPv4 addresses as router IDs. o Router ID must be configured manually on IPv6 systems. o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. o Fixed few places where ipa_(hton|ntoh) was called as a function returning converted address.
1999-08-03Implemented a Table-to-Table protocol a.k.a The Pipe.Martin Mares
1999-08-03Allow announces of rte's to protocols in FS_FEEDING state.Martin Mares
Else, we would get chicken-egg problems in the table-to-table protocol.
1999-08-03Kernel route syncer supports multiple tables.Martin Mares
The changes are just too extensive for lazy me to list them there, but see the comment at the top of sysdep/unix/krt.c. The code got a bit more ifdeffy than I'd like, though. Also fixed a bunch of FIXME's and added a couple of others. :)
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-08-03Cleaned up handling of interface patterns:Martin Mares
o Parsing of interface patterns moved to generic code, introduced this_ipatt which works similarly to this_iface. o Interface patterns now support selection by both interface names and primary IP addresses. o Proto `direct' updated. o RIP updated as well, it also seems the memory corruption bug there is gone.
1999-05-31Added password_strncpy() which pads destination with zeros.Pavel Machek
1999-05-31Added extended attributes for rip.Pavel Machek
1999-05-31Added extra argument to rt_update hook which contains a pointer to theMartin Mares
temporary attribute list.
1999-05-31Added PASSIVE option to paswwords.Pavel Machek
1999-05-26Change format of passwords (less ;'s) and fix password.h to allowPavel Machek
multiple inclusions.
1999-05-26Skeleton for password handling, currently I only build structures andPavel Machek
do nothing more advanced for them
1999-05-17Kill remaining master_table relics in KRT code.Martin Mares
Make all protocols pass routing table to rte_update and rte_discard.
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-05-07Netlink support for secondary interface addresses.Martin Mares
1999-05-06I rewrote the interface handling code, so that it supports multipleMartin Mares
addresses per interface (needed for example for IPv6 support). Visible changes: o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any). o Interface has IF_UP set iff it's up and it has a primary address. o IF_UP is now independent on IF_IGNORED (i.e., you need to test IF_IGNORED in the protocols; I've added this, but please check). o The if_notify_change hook has been simplified (only one interface pointer etc.). o Introduced a ifa_notify_change hook. (For now, only the Direct protocol does use it -- it's wise to just listen to device routes in all other protocols.) o Removed IF_CHANGE_FLAGS notifier flag (it was meaningless anyway). o Updated all the code except netlink (I'll look at it tomorrow) to match the new semantics (please look at your code to ensure I did it right). Things to fix: o Netlink. o Make krt-iface interpret "eth0:1"-type aliases as secondary addresses.
1999-04-12Removed TOS support. This simplifies many things a lot.Martin Mares
1999-04-05Routing table core changes to support full route filtering:Martin Mares
o Introduced rte_cow() which should be used for copying on write the rte's in filters. Each rte now carries a flag saying whether it's a real route (possessing table linkage and other insignia) or a local copy. This function can be expected to be fast since its fast-path is inlined. o Introduced rte_update_pool which is a linear memory pool used for all temporary data during rte_update. You should not reference it directly -- instead use a pool pointer passed to all related functions. o Split rte_update to three functions: rte_update The front end: handles all checking, inbound filtering and calls rte_recalculate() for the final version of the route. rte_recalculate Update the table according to already filtered route. rte_announce Announce routing table changes to all protocols, passing them through export filters and so on. The interface has _not_ changed -- still call rte_update() and it will do the rest for you automagically. o Use new filtering semantics to be explained in a separate mail.