diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/peer.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/server/peer.go b/server/peer.go index ab80e9bf..4dbc6c73 100644 --- a/server/peer.go +++ b/server/peer.go @@ -84,6 +84,7 @@ func (peer *Peer) handlePeermessage(m *message) { pList, wList, _ := peer.rib.ProcessPaths(m.data.([]table.Path)) // TODO: merge multiple messages // TODO: 4bytes and 2bytes conversion. + adjPathLists := append([]table.Path(nil), pList...) msgs := make([]*bgp.BGPMessage, 0) for _, p := range pList { @@ -98,8 +99,12 @@ func (peer *Peer) handlePeermessage(m *message) { draw := p.GetNlri().(*bgp.WithdrawnRoute) m := bgp.NewBGPUpdateMessage([]bgp.WithdrawnRoute{*draw}, []bgp.PathAttributeInterface{}, []bgp.NLRInfo{}) msgs = append(msgs, m) + + adjPathLists = append(adjPathLists, p.Clone(true)) } + peer.adjRib.UpdateOut(adjPathLists) + for _, m := range msgs { peer.outgoing <- m } |