server: fix bmp and mrt updates

Always must send updates to them.

Signed-off-by: FUJITA Tomonori <[email protected]>
This commit is contained in:
FUJITA Tomonori
2015-11-13 10:53:40 +09:00
parent 59f18c15ca
commit 515abe2880
+17 -16
View File
@@ -783,22 +783,6 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *FsmMsg, incoming chan *
case *bgp.MessageError:
msgs = append(msgs, newSenderMsg(peer, []*bgp.BGPMessage{bgp.NewBGPNotificationMessage(m.TypeCode, m.SubTypeCode, m.Data)}))
case *bgp.BGPMessage:
pathList, update, msgList := peer.handleBGPmessage(e)
if len(msgList) > 0 {
msgs = append(msgs, newSenderMsg(peer, msgList))
break
}
if update == false {
if len(pathList) > 0 {
msgList := table.CreateUpdateMsgFromPaths(pathList)
msgs = append(msgs, newSenderMsg(peer, msgList))
}
break
} else {
if len(pathList) > 0 {
server.roaClient.validate(pathList)
}
}
if m.Header.Type == bgp.BGP_MSG_UPDATE {
listener := make(map[watcher]chan watcherEvent)
for _, watcher := range server.watchers {
@@ -835,6 +819,23 @@ func (server *BgpServer) handleFSMMessage(peer *Peer, e *FsmMsg, incoming chan *
server.broadcastMsgs = append(server.broadcastMsgs, bm)
}
}
pathList, update, msgList := peer.handleBGPmessage(e)
if len(msgList) > 0 {
msgs = append(msgs, newSenderMsg(peer, msgList))
break
}
if update == false {
if len(pathList) > 0 {
msgList := table.CreateUpdateMsgFromPaths(pathList)
msgs = append(msgs, newSenderMsg(peer, msgList))
}
break
} else {
if len(pathList) > 0 {
server.roaClient.validate(pathList)
}
}
// FIXME: refactor peer.handleBGPmessage and this func
if peer.isRouteServerClient() {
var accepted []*table.Path