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 <[email protected]>
This commit is contained in:
FUJITA Tomonori
2015-01-06 22:40:31 +09:00
parent cf93675900
commit edf0ca14a4
2 changed files with 19 additions and 11 deletions
+12 -4
View File
@@ -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"]))
+7 -7
View File
@@ -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