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)
signature.asc
Description: Digital signature
