summaryrefslogtreecommitdiffhomepage
path: root/server
diff options
context:
space:
mode:
Diffstat (limited to 'server')
-rw-r--r--server/peer.go5
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
}