From 8c20061f40b72854eb6af6ad989e96e381903a7b Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Sun, 16 Jan 2022 22:01:47 +0200 Subject: [PATCH] bgpd: Add peer-groups to neighbor autocomplete ``` exit1-debian-11(config-router)# neighbor PGTEST peer-group exit1-debian-11(config-router)# neighbor PEER peer-group exit1-debian-11(config-router)# neighbor ? A.B.C.D Neighbor address 192.168.0.2 PEER PGTEST WORD Interface name or neighbor tag PEER PGTEST X:X::X:X Neighbor IPv6 address 2a02:abc::17 2a02:bbd::2 PEER PGTEST ``` Signed-off-by: Donatas Abraitis --- bgpd/bgp_vty.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index e07883865a..ec5a07e147 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -17495,7 +17495,20 @@ static struct cmd_node bgp_srv6_node = { static void community_list_vty(void); -static void bgp_ac_neighbor(vector comps, struct cmd_token *token) +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 void bgp_ac_peer(vector comps, struct cmd_token *token) { struct bgp *bgp; struct peer *peer; @@ -17525,25 +17538,18 @@ static void bgp_ac_neighbor(vector comps, struct cmd_token *token) } } +static void bgp_ac_neighbor(vector comps, struct cmd_token *token) +{ + bgp_ac_peer(comps, token); + bgp_ac_peergroup(comps, token); +} + static const struct cmd_variable_handler bgp_var_neighbor[] = { {.varname = "neighbor", .completions = bgp_ac_neighbor}, {.varname = "neighbors", .completions = bgp_ac_neighbor}, {.varname = "peer", .completions = bgp_ac_neighbor}, {.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} }; -- 2.39.5