Skip to content
Snippets Groups Projects
Commit 979b20e1 authored by Oliver Herms's avatar Oliver Herms
Browse files

Fix BMP reconnect

parent effb3887
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,7 @@ type Router struct {
reconnectTimeMin int
reconnectTimeMax int
reconnectTime int
dialTimeout time.Duration
reconnectTimer *time.Timer
vrfRegistry *vrf.VRFRegistry
neighborManager *neighborManager
......@@ -69,6 +70,7 @@ func newRouter(addr net.IP, port uint16) *Router {
reconnectTimeMin: 30, // Suggested by RFC 7854
reconnectTimeMax: 720, // Suggested by RFC 7854
reconnectTimer: time.NewTimer(time.Duration(0)),
dialTimeout: time.Second * 5,
vrfRegistry: vrf.NewVRFRegistry(),
neighborManager: newNeighborManager(),
logger: log.New(),
......
......@@ -56,7 +56,7 @@ func (b *BMPServer) AddRouter(addr net.IP, port uint16) {
go func(r *Router) {
for {
<-r.reconnectTimer.C
c, err := net.Dial("tcp", fmt.Sprintf("%s:%d", r.address.String(), r.port))
c, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", r.address.String(), r.port), r.dialTimeout)
if err != nil {
log.Infof("Unable to connect to BMP router: %v", err)
if r.reconnectTime == 0 {
......@@ -68,7 +68,8 @@ func (b *BMPServer) AddRouter(addr net.IP, port uint16) {
continue
}
r.reconnectTime = 0
r.reconnectTime = r.reconnectTimeMin
r.reconnectTimer = time.NewTimer(time.Second * time.Duration(r.reconnectTime))
log.Infof("Connected to %s", r.address.String())
r.serve(c)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment