summaryrefslogtreecommitdiffhomepage
path: root/server/peer.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/peer.go')
-rw-r--r--server/peer.go23
1 files changed, 18 insertions, 5 deletions
diff --git a/server/peer.go b/server/peer.go
index 7af2653e..604be36b 100644
--- a/server/peer.go
+++ b/server/peer.go
@@ -950,11 +950,13 @@ func (peer *Peer) ToApiStruct() *api.Peer {
}
conf := &api.PeerConf{
- RemoteIp: c.NeighborAddress.String(),
- Id: peer.peerInfo.ID.To4().String(),
- RemoteAs: c.PeerAs,
- RemoteCap: capList,
- LocalCap: []int32{int32(bgp.BGP_CAP_MULTIPROTOCOL), int32(bgp.BGP_CAP_ROUTE_REFRESH), int32(bgp.BGP_CAP_FOUR_OCTET_AS_NUMBER)},
+ RemoteIp: c.NeighborAddress.String(),
+ Id: peer.peerInfo.ID.To4().String(),
+ RemoteAs: c.PeerAs,
+ RemoteCap: capList,
+ LocalCap: []int32{int32(bgp.BGP_CAP_MULTIPROTOCOL), int32(bgp.BGP_CAP_ROUTE_REFRESH), int32(bgp.BGP_CAP_FOUR_OCTET_AS_NUMBER)},
+ KeepaliveInterval: uint32(peer.fsm.peerConfig.Timers.KeepaliveInterval),
+ Holdtime: uint32(peer.fsm.peerConfig.Timers.HoldTime),
}
s := c.BgpNeighborCommonState
@@ -979,6 +981,15 @@ func (peer *Peer) ToApiStruct() *api.Peer {
}
}
+ keepalive := uint32(0)
+ if f.negotiatedHoldTime != 0 {
+ if f.negotiatedHoldTime < f.peerConfig.Timers.HoldTime {
+ keepalive = uint32(f.negotiatedHoldTime / 3)
+ } else {
+ keepalive = uint32(f.peerConfig.Timers.KeepaliveInterval)
+ }
+ }
+
info := &api.PeerInfo{
BgpState: f.state.String(),
AdminState: f.adminState.String(),
@@ -1004,6 +1015,8 @@ func (peer *Peer) ToApiStruct() *api.Peer {
Advertized: advertized,
OutQ: uint32(len(peer.outgoing)),
Flops: s.Flops,
+ NegotiatedHoldtime: uint32(f.negotiatedHoldTime),
+ KeepaliveInterval: keepalive,
}
return &api.Peer{