Auto-complete keywords (for, where, filter, ...) and symbol names (names
of protocols, tables, ...). Client can request daemon for list of all
symbols using new cli command `refresh symbols`.
Next changes:
- Behavior is configured by *.Y files using flags CLI_SF_*
- The file doc/reply_codes was moved to header file
client/reply_codes.h.
- Share birdcl input_read() function code for birdc non-interactive
mode.
- BIRD daemon notifies the client about new symbol set.
- BIRD pushes notification to the client about new symbol set and then
the client should request a package with all symbols (`refresh
symbols`).
- File-based history of previous commands(). In interactive mode in
birdc is stored history of all commands in ~/.birdc_history file.
- BIRD daemon sends notification to clients about interface updates
- Maintains a list of all connected cli clients to daemon. Daemon
sends to all cli clients notification about interfaces states up and
down.
Several new configure command variants:
configure undo - undo last reconfiguration
configure timeout - configure with scheduled undo if not confirmed in timeout
configure confirm - confirm last configuration
configure check - just parse and validate config file
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.