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.
The BIRD client code is restructured that most of the code (including
main function) is shared in client.c, while birdc.c and birdcl.c contain
just I/O-specific callbacks. This removes all duplicated code from
variant-specific files.
Rename client/client.c to client-full.c and change the Makefile accordingly.
This is a preparation step for introducing a new lightweight client which
should reuse as much code as possible from the old one but it should not depend
on external libraries.
Signed-off-by: Tomas Hlavacek <tmshlvck@gmail.com>
shows only parts of larger outputs (for example 'show route all').
It seems that birdc reads (from bird) and writes (to stdout)
everything but during execution of some readline code some already
written output disappeared (although it is fflush()ed and
tcdrain()ed).
As birdc reads from stdin when select said there are some data,
O_NONBLOCK for stdin is unnecessary and when it is removed,
i didn't notified this problem.
for even only medium sized route table output. Fix a strange garbled
output problem in the client. The latter seems to be caused by some
library doing tcflush while there is still command output pending. So
the best fix here is to do fflush and then tcdrain. Note that this
problem occurs only under certain load situations and is not too easy to
reproduce.
(by Andreas)
(the current version UNIX-specific) anyway, so it's useless to try splitting it
to sysdep and generic part. Instead of this, configure script decides (based on
system type and user's wish) what (if any) client should be built and what
autoconfiguration it requires. Also, the client provides its own die/bug/...
functions.