summaryrefslogtreecommitdiff
path: root/bgpd/bgp_community_alias.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2021-07-16 09:52:53 -0400
committerDonald Sharp <sharpd@nvidia.com>2021-07-16 09:52:53 -0400
commitb4ad2fae541a47d718892d9fab9e0b42c1e28277 (patch)
tree29a893e350bc5540cc179116a1195914c8092c53 /bgpd/bgp_community_alias.c
parenteeef611bad9836da87289e77550635e1424433a3 (diff)
bgpd: Allow for auto-completion of community alias's created
Add a bit of code to allow for auto-completion of the community alias command when attempting to use it for show commands. example: eva(config)# bgp community alias 11:22 FOO eva(config)# end eva# show bgp ipv4 uni alias ALIAS_NAME BGP community alias FOO Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd/bgp_community_alias.c')
-rw-r--r--bgpd/bgp_community_alias.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/bgpd/bgp_community_alias.c b/bgpd/bgp_community_alias.c
index 6e510a0a04..f770ebdd5d 100644
--- a/bgpd/bgp_community_alias.c
+++ b/bgpd/bgp_community_alias.c
@@ -152,3 +152,32 @@ const char *bgp_community2alias(char *community)
return community;
}
+
+static int bgp_community_alias_vector_walker(struct hash_bucket *bucket,
+ void *data)
+{
+ vector *comps = data;
+ struct community_alias *alias = bucket->data;
+
+ vector_set(*comps, XSTRDUP(MTYPE_COMPLETION, alias->alias));
+
+ return 1;
+}
+
+static void bgp_community_alias_cmd_completion(vector comps,
+ struct cmd_token *token)
+{
+ hash_walk(bgp_ca_alias_hash, bgp_community_alias_vector_walker, &comps);
+}
+
+static const struct cmd_variable_handler community_alias_handlers[] = {
+ {.varname = "alias_name",
+ .completions = bgp_community_alias_cmd_completion},
+ {.tokenname = "ALIAS_NAME",
+ .completions = bgp_community_alias_cmd_completion},
+ {.completions = NULL}};
+
+void bgp_community_alias_command_completion_setup(void)
+{
+ cmd_variable_handler_register(community_alias_handlers);
+}