diff options
| author | David Lamparter <equinox@opensourcerouting.org> | 2016-11-19 11:57:08 +0100 |
|---|---|---|
| committer | Quentin Young <qlyoung@users.noreply.github.com> | 2017-05-15 10:27:43 -0400 |
| commit | 70d44c5cd4f28f9d08a24f519d859885d92e2a13 (patch) | |
| tree | c67e6c907a31487ca96b27e53a1f571c26f31bf9 /lib/plist.c | |
| parent | c09c46ae3c2702b3553e558f723e6de4fea3e05d (diff) | |
lib: cli: autocomplete variables
Shows known values in the appropriate naming domain when the user hits
<?> or <Tab>. This patch only works in the telnet CLI, the next patch
adds vtysh support.
Included completions:
- interface names
- route-map names
- prefix-list names
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'lib/plist.c')
| -rw-r--r-- | lib/plist.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/plist.c b/lib/plist.c index 3714969696..8f59c0c058 100644 --- a/lib/plist.c +++ b/lib/plist.c @@ -3157,6 +3157,40 @@ config_write_prefix_ipv4 (struct vty *vty) } static void +plist_autocomplete_afi (afi_t afi, vector comps, struct cmd_token *token) +{ + struct prefix_list *plist; + struct prefix_master *master; + + master = prefix_master_get (afi, 0); + if (master == NULL) + return; + + for (plist = master->str.head; plist; plist = plist->next) + vector_set (comps, XSTRDUP (MTYPE_COMPLETION, plist->name)); + for (plist = master->num.head; plist; plist = plist->next) + vector_set (comps, XSTRDUP (MTYPE_COMPLETION, plist->name)); +} + +static void +plist_autocomplete(vector comps, struct cmd_token *token) +{ + plist_autocomplete_afi (AFI_IP, comps, token); + plist_autocomplete_afi (AFI_IP6, comps, token); +} + +static const struct cmd_variable_handler plist_var_handlers[] = { + { + /* "prefix-list WORD" */ + .varname = "prefix_list", + .completions = plist_autocomplete + }, { + .completions = NULL + } +}; + + +static void prefix_list_init_ipv4 (void) { install_node (&prefix_node, config_write_prefix_ipv4); @@ -3275,6 +3309,8 @@ prefix_list_init_ipv6 (void) void prefix_list_init () { + cmd_variable_handler_register(plist_var_handlers); + prefix_list_init_ipv4 (); prefix_list_init_ipv6 (); } |
