Hi. Today I have figured out that BIRD will generate a deadlock if you are using the same remote address on multiple BGP protocols: protocol bgp { neighbor fe80::1%tun1 as 1; local fe80::2 as 2; } protocol bgp { neighbor fe80::1%tun2 as 1; local fe80::2 as 3; } In this case, only one of these protocols will change it's state and the other will stuck in Idle state forever. Here is my patch: cat <<PATCH diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c index 0f351b4..b1594b9 100644 --- a/proto/bgp/bgp.c +++ b/proto/bgp/bgp.c @@ -840,7 +840,6 @@ bgp_start(struct proto *P) lock->iface = p->cf->iface; lock->type = OBJLOCK_TCP; lock->port = BGP_PORT; - lock->iface = NULL; lock->hook = bgp_start_locked; lock->data = p; olock_acquire(lock); PATCH Fritz.