From bbdfde029d269b89c557dbd852dbc1c8e377ce38 Mon Sep 17 00:00:00 2001 From: ISHIDA Wataru Date: Wed, 30 Sep 2015 16:20:32 +0900 Subject: peer: add accepted route counter cut time of gobgp neighbor command Signed-off-by: ISHIDA Wataru --- server/peer.go | 13 ++++++++++--- server/server.go | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'server') diff --git a/server/peer.go b/server/peer.go index 3b0bd44b..a36c44a2 100644 --- a/server/peer.go +++ b/server/peer.go @@ -43,6 +43,7 @@ type Peer struct { outgoing chan *bgp.BGPMessage inPolicies []*policy.Policy defaultInPolicy config.DefaultPolicyType + accepted uint32 importPolicies []*policy.Policy defaultImportPolicy config.DefaultPolicyType exportPolicies []*policy.Policy @@ -291,13 +292,11 @@ func (peer *Peer) ToApiStruct() *api.Peer { advertized := uint32(0) received := uint32(0) - accepted := uint32(0) if f.state == bgp.BGP_FSM_ESTABLISHED { for _, rf := range peer.configuredRFlist() { advertized += uint32(peer.adjRib.GetOutCount(rf)) received += uint32(peer.adjRib.GetInCount(rf)) // FIXME: we should store 'accepted' in memory - accepted += uint32(len(peer.ApplyPolicy(POLICY_DIRECTION_IN, peer.adjRib.GetInPathList(rf)))) } } @@ -331,7 +330,7 @@ func (peer *Peer) ToApiStruct() *api.Peer { Uptime: uptime, Downtime: downtime, Received: received, - Accepted: accepted, + Accepted: peer.accepted, Advertized: advertized, OutQ: uint32(len(peer.outgoing)), Flops: s.Flops, @@ -443,6 +442,9 @@ func (peer *Peer) ApplyPolicy(d PolicyDirection, paths []*table.Path) []*table.P switch result { case policy.ROUTE_TYPE_ACCEPT: newpaths = append(newpaths, newpath) + if d == POLICY_DIRECTION_IN { + peer.accepted += 1 + } case policy.ROUTE_TYPE_REJECT: log.WithFields(log.Fields{ "Topic": "Peer", @@ -454,3 +456,8 @@ func (peer *Peer) ApplyPolicy(d PolicyDirection, paths []*table.Path) []*table.P } return newpaths } + +func (peer *Peer) DropAll(rf bgp.RouteFamily) { + peer.adjRib.DropAll(rf) + peer.accepted = 0 +} diff --git a/server/server.go b/server/server.go index 9d444a32..f4777e8e 100644 --- a/server/server.go +++ b/server/server.go @@ -733,7 +733,7 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *fsmMsg, incoming chan * } for _, rf := range peer.configuredRFlist() { - peer.adjRib.DropAll(rf) + peer.DropAll(rf) } msgs = append(msgs, server.dropPeerAllRoutes(peer)...) -- cgit v1.2.3