support multihop ttl

You can enable the feature like the following:

[Neighbors]
  [[Neighbors.NeighborList]]
    [Neighbors.NeighborList.NeighborConfig]
      PeerAs = 65001
      NeighborAddress = "10.0.255.1"
    [Neighbors.NeighborList.EbgpMultihop]
      [Neighbors.NeighborList.EbgpMultihop.EbgpMultihopConfig]
        Enabled = true
        MultihopTtl = 8

Signed-off-by: FUJITA Tomonori <[email protected]>
This commit is contained in:
FUJITA Tomonori
2015-09-01 13:23:52 +09:00
parent 920d475278
commit f8d437ec0e
2 changed files with 7 additions and 9 deletions
+7 -5
View File
@@ -225,11 +225,6 @@ func (fsm *FSM) connectLoop() error {
conn, err := net.DialTimeout("tcp", host, time.Duration(MIN_CONNECT_RETRY-1)*time.Second)
if err == nil {
isEBGP := fsm.gConf.GlobalConfig.As != fsm.pConf.NeighborConfig.PeerAs
if isEBGP {
ttl := 1
SetTcpTTLSockopts(conn.(*net.TCPConn), ttl)
}
fsm.connCh <- conn
} else {
log.WithFields(log.Fields{
@@ -341,6 +336,13 @@ func (h *FSMHandler) active() bgp.FSMState {
break
}
fsm.conn = conn
if fsm.gConf.GlobalConfig.As != fsm.pConf.NeighborConfig.PeerAs {
ttl := 1
if fsm.pConf.EbgpMultihop.EbgpMultihopConfig.Enabled == true {
ttl = int(fsm.pConf.EbgpMultihop.EbgpMultihopConfig.MultihopTtl)
}
SetTcpTTLSockopts(conn.(*net.TCPConn), ttl)
}
// we don't implement delayed open timer so move to opensent right
// away.
return bgp.BGP_FSM_OPENSENT
-4
View File
@@ -226,10 +226,6 @@ func (peer *Peer) startFSMHandler(incoming chan *fsmMsg) {
}
func (peer *Peer) PassConn(conn *net.TCPConn) {
if peer.isEBGPPeer() {
ttl := 1
SetTcpTTLSockopts(conn, ttl)
}
select {
case peer.fsm.connCh <- conn:
default: