Hi, Ondrej, what do you think of adding some option to bind socket in Linux with IP_FREEBIND or IP_TRANSPARENT setsockopt?
On Thu, Jan 9, 2020 at 6:19 PM Ondrej Zajicek <santi...@crfreenet.org> wrote: > > On Tue, Jan 07, 2020 at 12:45:43PM -0800, Ben Tremblay wrote: > > Hi all, > > > > I have encountered a problem with how BIRD opens the listening socket for > > strict bind BGP. > > > > In particular, BIRD sometimes tries to open the listening socket for > > the protocol when the configured local IP is not yet present on the > > interface. It seems that BIRD will try to bind the BGP socket to the > > configured IP if any address exists on the protocol interface that can be > > used to reach the neighbor. Let me give an example to clarify. > > Hi > > Yes, there is this issue with strict bind that availability of local IP > is not explicitly monitored. > > Generally, listening socket is started when associated protocol is > started/ready. Which means always for multihop BGP, and when peer IP is > reachable for direct BGP. But as you noted, it is possible that peer IP > is reachable without local IP is reachable, which makes problem with > combination with strict bind. > > > > So, I have two questions: > > > > 1. Is this correct behaviour? > > Well, i would not call that correct but also not a bug. Perhaps rough > edge / flaw. We should fix that. > > > > 2. Can I configure BIRD so that my protocol is able to recover after > > suffering a socket error like this? > > Probably not. I would suggest the workaround with nonlocal_bind sysctl. > > -- > Elen sila lumenn' omentielvo > > Ondrej 'Santiago' Zajicek (email: santi...@crfreenet.org) > OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) > "To err is human -- to blame it on a computer is even more so."