mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 23:58:44 +00:00
bgpd: fix auto-completion for neighbors and peer-groups
Before this fix, both real neighbors and peer-groups were lumped together in auto-completion and it didn't work at all for peer-groups. This fix changes that behavior to do the right thing. Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
This commit is contained in:
parent
3dc755e492
commit
47a306a040
@ -12153,7 +12153,6 @@ static void bgp_ac_neighbor(vector comps, struct cmd_token *token)
|
|||||||
{
|
{
|
||||||
struct bgp *bgp;
|
struct bgp *bgp;
|
||||||
struct peer *peer;
|
struct peer *peer;
|
||||||
struct peer_group *group;
|
|
||||||
struct listnode *lnbgp, *lnpeer;
|
struct listnode *lnbgp, *lnpeer;
|
||||||
|
|
||||||
for (ALL_LIST_ELEMENTS_RO(bm->bgp, lnbgp, bgp)) {
|
for (ALL_LIST_ELEMENTS_RO(bm->bgp, lnbgp, bgp)) {
|
||||||
@ -12177,11 +12176,6 @@ static void bgp_ac_neighbor(vector comps, struct cmd_token *token)
|
|||||||
|
|
||||||
vector_set(comps, XSTRDUP(MTYPE_COMPLETION, name));
|
vector_set(comps, XSTRDUP(MTYPE_COMPLETION, name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (token->type == VARIABLE_TKN)
|
|
||||||
for (ALL_LIST_ELEMENTS_RO(bgp->group, lnpeer, group))
|
|
||||||
vector_set(comps, XSTRDUP(MTYPE_COMPLETION,
|
|
||||||
group->name));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -12191,9 +12185,27 @@ static const struct cmd_variable_handler bgp_var_neighbor[] = {
|
|||||||
{.varname = "peer", .completions = bgp_ac_neighbor},
|
{.varname = "peer", .completions = bgp_ac_neighbor},
|
||||||
{.completions = NULL}};
|
{.completions = NULL}};
|
||||||
|
|
||||||
|
static void bgp_ac_peergroup(vector comps, struct cmd_token *token)
|
||||||
|
{
|
||||||
|
struct bgp *bgp;
|
||||||
|
struct peer_group *group;
|
||||||
|
struct listnode *lnbgp, *lnpeer;
|
||||||
|
|
||||||
|
for (ALL_LIST_ELEMENTS_RO(bm->bgp, lnbgp, bgp)) {
|
||||||
|
for (ALL_LIST_ELEMENTS_RO(bgp->group, lnpeer, group))
|
||||||
|
vector_set(comps, XSTRDUP(MTYPE_COMPLETION,
|
||||||
|
group->name));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct cmd_variable_handler bgp_var_peergroup[] = {
|
||||||
|
{.tokenname = "PGNAME", .completions = bgp_ac_peergroup},
|
||||||
|
{.completions = NULL} };
|
||||||
|
|
||||||
void bgp_vty_init(void)
|
void bgp_vty_init(void)
|
||||||
{
|
{
|
||||||
cmd_variable_handler_register(bgp_var_neighbor);
|
cmd_variable_handler_register(bgp_var_neighbor);
|
||||||
|
cmd_variable_handler_register(bgp_var_peergroup);
|
||||||
|
|
||||||
/* Install bgp top node. */
|
/* Install bgp top node. */
|
||||||
install_node(&bgp_node, bgp_config_write);
|
install_node(&bgp_node, bgp_config_write);
|
||||||
|
Loading…
Reference in New Issue
Block a user