mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Command line interface now works.
This commit is contained in:
parent
ea9bb932a3
commit
ffb59d243a
@ -58,7 +58,7 @@ CF_GRAMMAR
|
||||
/* Basic config file structure */
|
||||
|
||||
config: conf_entries END { return 0; }
|
||||
| CLI_MARKER cli_cmd END { return 0; }
|
||||
| CLI_MARKER cli_cmd { return 0; }
|
||||
;
|
||||
|
||||
conf_entries:
|
||||
|
@ -42,7 +42,8 @@ m4_define(CF_ADDTO, `m4_define([[CF_rule_$1]],m4_ifdef([[CF_rule_$1]],CF_rule_$1
|
||||
m4_define(CF_CLI, `m4_define([[CF_cmd]], cmd_[[]]m4_translit($1, [[ ]], _))DNL
|
||||
m4_divert(2)CF_KEYWORDS(m4_translit($1, [[ ]], [[,]]))
|
||||
m4_divert(3)CF_ADDTO(cli_cmd, CF_cmd)
|
||||
CF_cmd: $1 ')
|
||||
CF_cmd: $1 $2 END')
|
||||
m4_define(CF_CLI_HELP, `')
|
||||
|
||||
# ENUM declarations are ignored
|
||||
m4_define(CF_ENUM, `')
|
||||
|
@ -171,6 +171,7 @@ cli_new(void *priv)
|
||||
c->event->data = c;
|
||||
c->tx_buf = c->tx_pos = c->tx_write = NULL;
|
||||
c->cont = cli_hello;
|
||||
c->cleanup = NULL;
|
||||
c->last_reply = 0;
|
||||
c->parser_pool = lp_new(c->pool, 4096);
|
||||
ev_schedule(c->event);
|
||||
@ -194,6 +195,8 @@ cli_written(cli *c)
|
||||
void
|
||||
cli_free(cli *c)
|
||||
{
|
||||
if (c->cleanup)
|
||||
c->cleanup(c);
|
||||
rfree(c->pool);
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,7 @@ typedef struct cli {
|
||||
struct cli_out *tx_buf, *tx_pos, *tx_write;
|
||||
event *event;
|
||||
void (*cont)(struct cli *c);
|
||||
void (*cleanup)(struct cli *c);
|
||||
void *rover; /* Private to continuation routine */
|
||||
int last_reply;
|
||||
struct linpool *parser_pool; /* Pool used during parsing */
|
||||
|
Loading…
Reference in New Issue
Block a user