mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
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:
+7
-5
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user