summaryrefslogtreecommitdiffhomepage
path: root/pkg/server/server.go
diff options
context:
space:
mode:
authorMarcus Wichelmann <mail@marcusw.de>2021-02-20 21:25:39 +0100
committerMarcus Wichelmann <mail@marcusw.de>2021-03-29 20:53:53 +0200
commit3c437e5aecab18454c5d70fd35272060bc3c95cf (patch)
tree489423ce9d54a5502fe58c6db1072c003c3efb05 /pkg/server/server.go
parent76f40ede0d466dfc7b1151d4e36b619a0daae51e (diff)
Added ListDynamicNeighbor message to API
Diffstat (limited to 'pkg/server/server.go')
-rw-r--r--pkg/server/server.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 090d97b8..84a1e2da 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -2715,6 +2715,37 @@ func (s *BgpServer) GetBgp(ctx context.Context, r *api.GetBgpRequest) (*api.GetB
return rsp, nil
}
+func (s *BgpServer) ListDynamicNeighbor(ctx context.Context, r *api.ListDynamicNeighborRequest, fn func(neighbor *api.DynamicNeighbor)) error {
+ toApi := func(dn *config.DynamicNeighbor) *api.DynamicNeighbor {
+ return &api.DynamicNeighbor{
+ Prefix: dn.Config.Prefix,
+ PeerGroup: dn.Config.PeerGroup,
+ }
+ }
+ var l []*api.DynamicNeighbor
+ s.mgmtOperation(func() error {
+ peerGroupName := r.PeerGroup
+ for k, group := range s.peerGroupMap {
+ if peerGroupName != "" && peerGroupName != k {
+ continue
+ }
+ for _, dn := range group.dynamicNeighbors {
+ l = append(l, toApi(dn))
+ }
+ }
+ return nil
+ }, false)
+ for _, dn := range l {
+ select {
+ case <-ctx.Done():
+ return nil
+ default:
+ fn(dn)
+ }
+ }
+ return nil
+}
+
func (s *BgpServer) ListPeerGroup(ctx context.Context, r *api.ListPeerGroupRequest, fn func(*api.PeerGroup)) error {
var l []*api.PeerGroup
s.mgmtOperation(func() error {