On Mon, Sep 16, 2013 at 07:16:10PM +0600, Eugene M. Zheganin wrote:
> Hi.
> 
> I'm  trying to get rid of quagga on most of my routers. When they run
> BGP/OSPF everything is fine, but when it comes to RIP, bird crashes.
> I run bird on a set of VPN tunnels, mostly gre. I need RIP because Cisco
> marketoids keep on manufacturing small boxes that cannot run OSPF, only
> RIP is available.
> Bird crashes as soon as the protocol exchange is started.

If you use BIRD as RIP with multiple ifaces on FreeBSD, you
probably have this error message in logs:

<ERR> sk_open: bind: Address already in use

And the crash is related. You could use attached patch as a workaround.

-- 
Elen sila lumenn' omentielvo

Ondrej 'SanTiago' Zajicek (email: [email protected])
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."
diff -uprN bird-1.3.11-4-/sysdep/unix/io.c bird-1.3.11-4/sysdep/unix/io.c
--- bird-1.3.11-4-/sysdep/unix/io.c	2013-07-28 20:48:28.000000000 +0200
+++ bird-1.3.11-4/sysdep/unix/io.c	2013-09-13 18:29:08.000000000 +0200
@@ -1181,6 +1181,12 @@ sk_open(sock *s)
 	  port = s->sport;
 	  if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) < 0)
 	    ERR("SO_REUSEADDR");
+	
+	  if (type == SK_UDP)
+	  {
+	    if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &one, sizeof(one)) < 0)
+	      ERR("SO_REUSEPORT");
+	  }
 	}
       fill_in_sockaddr(&sa, s->saddr, s->iface, port);
       if (bind(fd, (struct sockaddr *) &sa, sizeof(sa)) < 0)

Attachment: signature.asc
Description: Digital signature

Reply via email to