diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2015-01-06 22:40:31 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2015-01-06 22:40:31 +0900 |
commit | edf0ca14a493b4e01bbb4279c1d282a20b2d4da5 (patch) | |
tree | f58d5389c5584242cf9008f6cbfed649a0f5b8aa | |
parent | cf936759004764cae72099ba87972f1153913ba6 (diff) |
cli: improve the capability representation
Show both advertised and received caps like:
fujita@ubuntu:~/git/gobgp$ ./cli/gobgpcli show neighbor 10.0.0.2
BGP neighbor is 10.0.0.2, remote AS 64515
BGP version 4, remote router ID 192.168.0.2
BGP state = BGP_FSM_ESTABLISHED, up for 0:09:28.011988
Neighbor capabilities:
MULTIPROTOCOL: advertised and received
ROUTE_REFRESH: advertised and received
FOUR_OCTET_AS_NUMBER: advertised and received
ROUTE_REFRESH_CISCO: received
Message statistics:
Sent Rcvd
Opens: 2 1
Notifications: 0 0
Updates: 0 0
Keepalives: 18 1
Route Refesh: 0 0
Total: 20 2
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rwxr-xr-x | cli/gobgpcli | 16 | ||||
-rw-r--r-- | server/peer.go | 14 |
2 files changed, 19 insertions, 11 deletions
diff --git a/cli/gobgpcli b/cli/gobgpcli index 325c268d..f1209bb3 100755 --- a/cli/gobgpcli +++ b/cli/gobgpcli @@ -70,12 +70,20 @@ class Show(object): print(" BGP version 4, remote router ID {:s}".format(n["conf"]["id"])) print(" BGP state = {:s}, up for {:s}".format(n["info"]["bgp_state"], str(timedelta(seconds=n["info"]["uptime"])))) print(" Neighbor capabilities:") - for i in n["conf"]["CapList"]: + allcap = set(n["conf"]["RemoteCap"]) | set(n["conf"]["LocalCap"]) + for i in sorted(allcap): if i in capdict: - i = capdict[i] + k = capdict[i] else: - i = "UNKNOWN (" + str(i) + ")" - print(" {:s}".format(i)) + k = "UNKNOWN (" + str(i) + ")" + r = "" + if i in n["conf"]["LocalCap"]: + r += "advertised" + if i in n["conf"]["RemoteCap"]: + if len(r) != 0: + r += " and " + r += "received" + print(" {:s}: {:s}".format(k, r)) print(" Message statistics:") print(" Sent Rcvd") print(" Opens: {:>10d} {:>10d}".format(n["info"]["open_message_out"], n["info"]["open_message_in"])) diff --git a/server/peer.go b/server/peer.go index 96f6dfb3..0bc993e9 100644 --- a/server/peer.go +++ b/server/peer.go @@ -304,14 +304,14 @@ func (peer *Peer) MarshalJSON() ([]byte, error) { RemoteAS uint32 `json:"remote_as"` CapRefresh bool `json:"cap_refresh"` CapEnhancedRefresh bool `json:"cap_enhanced_refresh"` - CapList []int + RemoteCap []int + LocalCap []int }{ - RemoteIP: c.NeighborAddress.String(), - Id: peer.peerInfo.ID.To4().String(), - RemoteAS: c.PeerAs, - CapList: capList, - CapRefresh: false, - CapEnhancedRefresh: false, + RemoteIP: c.NeighborAddress.String(), + Id: peer.peerInfo.ID.To4().String(), + RemoteAS: c.PeerAs, + RemoteCap: capList, + LocalCap: []int{int(bgp.BGP_CAP_MULTIPROTOCOL), int(bgp.BGP_CAP_ROUTE_REFRESH), int(bgp.BGP_CAP_FOUR_OCTET_AS_NUMBER)}, } s := c.BgpNeighborCommonState |