summaryrefslogtreecommitdiffhomepage
path: root/server/fsm.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/fsm.go')
-rw-r--r--server/fsm.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/server/fsm.go b/server/fsm.go
index 9377b5a8..15d935bb 100644
--- a/server/fsm.go
+++ b/server/fsm.go
@@ -43,6 +43,7 @@ type FsmMsg struct {
MsgData interface{}
PathList []*table.Path
timestamp time.Time
+ payload []byte
}
const (
@@ -471,6 +472,7 @@ func (h *FSMHandler) recvMessageWithError() error {
return err
}
+ now := time.Now()
m, err := bgp.ParseBGPBody(hd, bodyBuf)
if err == nil {
h.fsm.bgpMessageStateUpdate(m.Header.Type, true)
@@ -482,7 +484,7 @@ func (h *FSMHandler) recvMessageWithError() error {
MsgType: FSM_MSG_BGP_MESSAGE,
MsgSrc: h.fsm.pConf.NeighborConfig.NeighborAddress.String(),
MsgDst: h.fsm.pConf.Transport.TransportConfig.LocalAddress.String(),
- timestamp: time.Now(),
+ timestamp: now,
}
if err != nil {
log.WithFields(log.Fields{
@@ -514,6 +516,9 @@ func (h *FSMHandler) recvMessageWithError() error {
h.fsm.peer.ApplyPolicy(table.POLICY_DIRECTION_IN, fmsg.PathList)
policyMutex.RUnlock()
}
+ fmsg.payload = make([]byte, len(headerBuf)+len(bodyBuf))
+ copy(fmsg.payload, headerBuf)
+ copy(fmsg.payload[len(headerBuf):], bodyBuf)
fallthrough
case bgp.BGP_MSG_KEEPALIVE:
// if the lenght of h.holdTimerResetCh