diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2021-07-16 09:52:53 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2021-07-16 09:52:53 -0400 | 
| commit | b4ad2fae541a47d718892d9fab9e0b42c1e28277 (patch) | |
| tree | 29a893e350bc5540cc179116a1195914c8092c53 /bgpd/bgp_community_alias.c | |
| parent | eeef611bad9836da87289e77550635e1424433a3 (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.c | 29 | 
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); +}  | 
