]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Add peer-groups to neighbor autocomplete
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Sun, 16 Jan 2022 20:01:47 +0000 (22:01 +0200)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Sun, 16 Jan 2022 20:08:57 +0000 (22:08 +0200)
```
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 <donatas.abraitis@gmail.com>
bgpd/bgp_vty.c

index e07883865a55ea0d9913072ecdae92c78d2872bf..ec5a07e147ba67851fb206cee0b918a115b52ddc 100644 (file)
@@ -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} };