diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2024-03-08 08:15:02 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-08 08:15:02 -0500 |
| commit | 7e058c201adaa493207dd5305c7aaa970a3580ea (patch) | |
| tree | 8587487207cb405e309a31fa94cc3b21e173a969 /lib/command.c | |
| parent | 0d31f63dba95658fc8a553c450cecf78775b8423 (diff) | |
| parent | f47abbe1cb4efff360acccd64fb8192be427cf6e (diff) | |
Merge pull request #15469 from LabNConsulting/chopps/keychain-yang
add ietf-key-chain YANG module support
Diffstat (limited to 'lib/command.c')
| -rw-r--r-- | lib/command.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/command.c b/lib/command.c index fa260721dc..0288ab7599 100644 --- a/lib/command.c +++ b/lib/command.c @@ -678,6 +678,21 @@ vector cmd_describe_command(vector vline, struct vty *vty, int *status) static struct list *varhandlers = NULL; +static int __add_key_comp(const struct lyd_node *dnode, void *arg) +{ + const char *key_value = yang_dnode_get_string(dnode, NULL); + + vector_set((vector)arg, XSTRDUP(MTYPE_COMPLETION, key_value)); + + return YANG_ITER_CONTINUE; +} + +static void __get_list_keys(vector comps, const char *xpath) +{ + yang_dnode_iterate(__add_key_comp, comps, + vty_shared_candidate_config->dnode, "%s", xpath); +} + void cmd_variable_complete(struct cmd_token *token, const char *arg, vector comps) { @@ -694,7 +709,10 @@ void cmd_variable_complete(struct cmd_token *token, const char *arg, if (cvh->varname && (!token->varname || strcmp(cvh->varname, token->varname))) continue; - cvh->completions(tmpcomps, token); + if (cvh->xpath) + __get_list_keys(tmpcomps, cvh->xpath); + if (cvh->completions) + cvh->completions(tmpcomps, token); break; } @@ -753,7 +771,7 @@ void cmd_variable_handler_register(const struct cmd_variable_handler *cvh) if (!varhandlers) return; - for (; cvh->completions; cvh++) + for (; cvh->completions || cvh->xpath; cvh++) listnode_add(varhandlers, (void *)cvh); } |
