From 5388f3e6f8164bdc0acd5f229e52057627f10f87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Mon, 8 Mar 2021 23:49:53 +0100 Subject: [PATCH] Add connmgr metadata to NetPeerInfo --- api/types.go | 17 +++++++++++++---- node/impl/common/common.go | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/api/types.go b/api/types.go index 45be570c5..a463dd36e 100644 --- a/api/types.go +++ b/api/types.go @@ -3,6 +3,7 @@ package api import ( "encoding/json" "fmt" + "time" datatransfer "github.com/filecoin-project/go-data-transfer" "github.com/filecoin-project/go-state-types/abi" @@ -101,8 +102,16 @@ type NetBlockList struct { } type ExtendedPeerInfo struct { - ID peer.ID - Agent string - Addrs []string - Protocols []string + ID peer.ID + Agent string + Addrs []string + Protocols []string + ConnMgrMeta *ConnMgrInfo +} + +type ConnMgrInfo struct { + FirstSeen time.Time + Value int + Tags map[string]int + Conns map[string]time.Time } diff --git a/node/impl/common/common.go b/node/impl/common/common.go index 5e02117b7..0a7e01eca 100644 --- a/node/impl/common/common.go +++ b/node/impl/common/common.go @@ -7,6 +7,9 @@ import ( "github.com/gbrlsnchs/jwt/v3" "github.com/google/uuid" + "go.uber.org/fx" + "golang.org/x/xerrors" + logging "github.com/ipfs/go-log/v2" "github.com/libp2p/go-libp2p-core/host" metrics "github.com/libp2p/go-libp2p-core/metrics" @@ -17,8 +20,6 @@ import ( basichost "github.com/libp2p/go-libp2p/p2p/host/basic" "github.com/libp2p/go-libp2p/p2p/net/conngater" ma "github.com/multiformats/go-multiaddr" - "go.uber.org/fx" - "golang.org/x/xerrors" "github.com/filecoin-project/go-jsonrpc/auth" @@ -110,12 +111,23 @@ func (a *CommonAPI) NetPeerInfo(_ context.Context, p peer.ID) (*api.ExtendedPeer for _, a := range a.Host.Peerstore().Addrs(p) { info.Addrs = append(info.Addrs, a.String()) } + sort.Strings(info.Addrs) protocols, err := a.Host.Peerstore().GetProtocols(p) if err == nil { + sort.Strings(protocols) info.Protocols = protocols } + if cm := a.Host.ConnManager().GetTagInfo(p); cm != nil { + info.ConnMgrMeta = &api.ConnMgrInfo{ + FirstSeen: cm.FirstSeen, + Value: cm.Value, + Tags: cm.Tags, + Conns: cm.Conns, + } + } + return info, nil }