diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/bmp.go | 7 | ||||
-rw-r--r-- | server/server.go | 5 |
2 files changed, 8 insertions, 4 deletions
diff --git a/server/bmp.go b/server/bmp.go index 2a00b73d..5384c3f6 100644 --- a/server/bmp.go +++ b/server/bmp.go @@ -126,7 +126,10 @@ func bmpPeerDown(reason uint8, t int, policy bool, pd uint64, peeri *table.PeerI return bgp.NewBMPPeerDownNotification(*ph, reason, nil, []byte{}) } -func bmpPeerRoute(t int, policy bool, pd uint64, peeri *table.PeerInfo, timestamp int64, u *bgp.BGPMessage) *bgp.BMPMessage { +func bmpPeerRoute(t int, policy bool, pd uint64, peeri *table.PeerInfo, timestamp int64, payload []byte) *bgp.BMPMessage { ph := bgp.NewBMPPeerHeader(uint8(t), policy, pd, peeri.Address.String(), peeri.AS, peeri.LocalID.String(), float64(timestamp)) - return bgp.NewBMPRouteMonitoring(*ph, u) + m := bgp.NewBMPRouteMonitoring(*ph, nil) + body := m.Body.(*bgp.BMPRouteMonitoring) + body.BGPUpdatePayload = payload + return m } diff --git a/server/server.go b/server/server.go index ecdbc8c2..3e7d4072 100644 --- a/server/server.go +++ b/server/server.go @@ -333,7 +333,8 @@ func (server *BgpServer) Serve() { for _, p := range targetPeer.adjRib.GetInPathList(targetPeer.configuredRFlist()) { // avoid to merge for timestamp u := table.CreateUpdateMsgFromPaths([]*table.Path{p}) - bmpMsgList = append(bmpMsgList, bmpPeerRoute(bgp.BMP_PEER_TYPE_GLOBAL, false, 0, targetPeer.fsm.peerInfo, p.GetTimestamp().Unix(), u[0])) + buf, _ := u[0].Serialize() + bmpMsgList = append(bmpMsgList, bmpPeerRoute(bgp.BMP_PEER_TYPE_GLOBAL, false, 0, targetPeer.fsm.peerInfo, p.GetTimestamp().Unix(), buf)) } } @@ -815,7 +816,7 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *FsmMsg, incoming chan * if ch := server.bmpClient.send(); ch != nil { bm := &broadcastBMPMsg{ ch: ch, - msgList: []*bgp.BMPMessage{bmpPeerRoute(bgp.BMP_PEER_TYPE_GLOBAL, false, 0, peer.fsm.peerInfo, e.timestamp.Unix(), m)}, + msgList: []*bgp.BMPMessage{bmpPeerRoute(bgp.BMP_PEER_TYPE_GLOBAL, false, 0, peer.fsm.peerInfo, e.timestamp.Unix(), e.payload)}, } server.broadcastMsgs = append(server.broadcastMsgs, bm) } |