summaryrefslogtreecommitdiffhomepage
path: root/server/fsm.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/fsm.go')
-rw-r--r--server/fsm.go34
1 files changed, 17 insertions, 17 deletions
diff --git a/server/fsm.go b/server/fsm.go
index 606ebbf9..af6718ca 100644
--- a/server/fsm.go
+++ b/server/fsm.go
@@ -42,8 +42,6 @@ type FSM struct {
peerConfig *config.NeighborType
keepaliveTicker *time.Ticker
state bgp.FSMState
- incoming chan *fsmMsg
- outgoing chan *bgp.BGPMessage
passiveConn *net.TCPConn
passiveConnCh chan *net.TCPConn
}
@@ -90,12 +88,10 @@ func (fsm *FSM) bgpMessageStateUpdate(MessageType uint8, isIn bool) {
}
}
-func NewFSM(gConfig *config.GlobalType, pConfig *config.NeighborType, connCh chan *net.TCPConn, incoming chan *fsmMsg, outgoing chan *bgp.BGPMessage) *FSM {
+func NewFSM(gConfig *config.GlobalType, pConfig *config.NeighborType, connCh chan *net.TCPConn) *FSM {
return &FSM{
globalConfig: gConfig,
peerConfig: pConfig,
- incoming: incoming,
- outgoing: outgoing,
state: bgp.BGP_FSM_IDLE,
passiveConnCh: connCh,
}
@@ -112,17 +108,21 @@ func (fsm *FSM) StateChange(nextState bgp.FSMState) {
}
type FSMHandler struct {
- t tomb.Tomb
- fsm *FSM
- conn *net.TCPConn
- msgCh chan *fsmMsg
- errorCh chan bool
+ t tomb.Tomb
+ fsm *FSM
+ conn *net.TCPConn
+ msgCh chan *fsmMsg
+ errorCh chan bool
+ incoming chan *fsmMsg
+ outgoing chan *bgp.BGPMessage
}
-func NewFSMHandler(fsm *FSM) *FSMHandler {
+func NewFSMHandler(fsm *FSM, incoming chan *fsmMsg, outgoing chan *bgp.BGPMessage) *FSMHandler {
f := &FSMHandler{
- fsm: fsm,
- errorCh: make(chan bool, 2),
+ fsm: fsm,
+ errorCh: make(chan bool, 2),
+ incoming: incoming,
+ outgoing: outgoing,
}
f.t.Go(f.loop)
return f
@@ -280,7 +280,7 @@ func (h *FSMHandler) opensent() bgp.FSMState {
MsgType: FSM_MSG_BGP_MESSAGE,
MsgData: m,
}
- fsm.incoming <- e
+ h.incoming <- e
msg := bgp.NewBGPKeepAliveMessage()
b, _ := msg.Serialize()
fsm.passiveConn.Write(b)
@@ -376,7 +376,7 @@ func (h *FSMHandler) sendMessageloop() error {
select {
case <-h.t.Dying():
return nil
- case m := <-fsm.outgoing:
+ case m := <-h.outgoing:
b, _ := m.Serialize()
_, err := conn.Write(b)
if err != nil {
@@ -420,7 +420,7 @@ func (h *FSMHandler) established() bgp.FSMState {
fsm := h.fsm
h.conn = fsm.passiveConn
h.t.Go(h.sendMessageloop)
- h.msgCh = fsm.incoming
+ h.msgCh = h.incoming
h.t.Go(h.recvMessageloop)
for {
@@ -461,7 +461,7 @@ func (h *FSMHandler) loop() error {
MsgType: FSM_MSG_STATE_CHANGE,
MsgData: nextState,
}
- fsm.incoming <- e
+ h.incoming <- e
}
return nil
}