<div dir="ltr"><div dir="ltr"><div>Sure, for listen any case it would be an issue. I use strict bind in my setup, so I noticed no problems. It worked in different configurations of server and peer: active-active, active-passive and passive-active.<br></div><div>When I did not specify vrf it was not working with strict bind. It worked only with listen any (for 1.6 too), but it could not accept connections unless I did:</div><div>net.ipv4.tcp_l3mdev_accept = 1<br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 26, 2018 at 10:46 PM, Ondrej Zajicek <span dir="ltr"><<a href="mailto:santiago@crfreenet.org" target="_blank">santiago@crfreenet.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Fri, Oct 26, 2018 at 08:38:28PM +0200, Alexander Zubkov wrote:<br>
> Hi,<br>
> <br>
> Thank you for improving the patch.<br>
> <br>
> Did I get it right? You mean the case when one has the same IP for BGP<br>
> sessions in different VRFs on different interfaces?<br>
<br>
</span>Unless 'strict bind' option is used, local IP is irrelevant, because<br>
listening socket is bound to 0.0.0.0 anyways (addr in bgp_open() is<br>
IPA_NONE4/6).<br>
<br>
If i have two BGP protocols, one in vrf1 and the second in vrf2, then i<br>
need two listening sockets, first bound to 0.0.0.0 in vrf1, second to<br>
0.0.0.0 in vrf2, they are bound to the same IPA_NONE4/6 address, but in<br>
different VRFs. In your patch the second socket would not be created,<br>
instead the first one would be reused (incorrectly) for the second<br>
protocol.<br>
<br>
The old code (without setting vrf) would have one listening socket not<br>
bound to any vrf, such socket would accept incoming sessions from both<br>
vrf1 and vrf2, but cannot distinguish them properly if both have the<br>
same remote ip.<br>
<br>
Also, it is possible that the new code has a problem that it would fail<br>
when there are two BGP sessions, one bound to a VRF and one that is not,<br>
because such two listening sockets would be incompatible, i would have to<br>
check that.<br>
<br>
Now thinking about it, i also need to fix bgp_find_proto() so that<br>
incoming connections are dispatched properly based on vrfs.<br>
<div class="HOEnZb"><div class="h5"><br>
-- <br>
Elen sila lumenn' omentielvo<br>
<br>
Ondrej 'Santiago' Zajicek (email: <a href="mailto:santiago@crfreenet.org">santiago@crfreenet.org</a>)<br>
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, <a href="http://wwwkeys.pgp.net" rel="noreferrer" target="_blank">wwwkeys.pgp.net</a>)<br>
"To err is human -- to blame it on a computer is even more so."<br>
</div></div></blockquote></div><br></div>