<div dir="ltr">Hello,<br><br>I'm getting a "Segmentation fault" error on BIRD 2.0.7 when I use 'receive limit X'. I've got the error when using either 'action block' or 'action disable'. In the same scenario, if I change the config to use 'import limit X' everything works fine.<div><br></div><div>The error happens as soon as the daemon receives the first "extra" route from its peer (in the example, the 5th route while the limit is 4). Output of '-d -f' can be found at the bottom of this msg. If the number of routes received from the peer is equal to the limit, the issue is not hit.<br><br>I was able to consistently reproduce what I've mentioned above using the following config on a Docker container based on Debian 10.1 (Linux f484b919cd3a 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 GNU/Linux - Dockerfile can be found here <a href="https://github.com/pierky/dockerfiles/blob/master/bird/2.0.7/Dockerfile">https://github.com/pierky/dockerfiles/blob/master/bird/2.0.7/Dockerfile</a>).<br><br>BIRD 1.6.8 works fine.</div><div><br>Thanks.<br><br>Pier Carlo<br><br><br>router id 192.0.2.2;<br>define rs_as = 999;<br><br>log "/var/log/bird.log" all;<br>log syslog all;<br>debug protocols { states, routes, filters, interfaces, events };<br><br>timeformat base         iso long;<br>timeformat log          iso long;<br>timeformat protocol     iso long;<br>timeformat route        iso long;<br><br>protocol device {};<br><br>ipv4 table master4 sorted;<br>ipv6 table master6 sorted;<br><br>filter receive_from_AS1_1 {<br>      if !(source = RTS_BGP ) then<br>          reject "source != RTS_BGP - REJECTING ", net;<br><br>     if !(net.type = NET_IP4) then<br>         reject "AFI not enabled for this peer - REJECTING ", net;<br><br> accept;<br>}<br><br>protocol bgp AS1_1 {<br><br>  local as 999;<br> neighbor 192.0.2.11 as 1;<br>     rs client;<br><br>  passive on;<br>   ttl security off;<br>     interpret communities off;<br><br>  # ---------------------------------------<br>     ipv4 {<br>        table master4;<br><br>      secondary;<br><br>  receive limit 4 action block;<br><br>       import table on;<br>      import keep filtered on;<br>      import filter receive_from_AS1_1;<br><br></div><div>    export none;<br><br>        # ---------------------------------------<br>     };<br>}<br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>Output of '-d -f':</div><div><br></div><div><br></div><div>root@f484b919cd3a:~# bird -c /etc/bird/bird.conf -d -f<br>bird: device1: Initializing<br>bird: AS1_1: Channel ipv4 connected to table master4<br>bird: AS1_1: Initializing<br>bird: device1: Starting<br>bird: device1: Scanning interfaces<br>bird: device1: State changed to up<br>bird: AS1_1: Starting<br>bird: AS1_1: State changed to start<br>bird: Started<br>bird: AS1_1: Started<br>bird: AS1_1: Incoming connection from 192.0.2.11 (port 49457) accepted<br>bird: AS1_1: BGP session established<br>bird: AS1_1: State changed to up<br>bird: AS1_1 > added [best] <a href="http://1.0.1.0/24">1.0.1.0/24</a> unicast<br>bird: AS1_1 < rejected by protocol <a href="http://1.0.1.0/24">1.0.1.0/24</a> unicast<br>bird: AS1_1 > added [best] <a href="http://1.0.3.0/24">1.0.3.0/24</a> unicast<br>bird: AS1_1 < rejected by protocol <a href="http://1.0.3.0/24">1.0.3.0/24</a> unicast<br>bird: AS1_1 > added [best] <a href="http://1.0.2.0/24">1.0.2.0/24</a> unicast<br>bird: AS1_1 < rejected by protocol <a href="http://1.0.2.0/24">1.0.2.0/24</a> unicast<br>bird: AS1_1 > added [best] <a href="http://1.0.5.0/24">1.0.5.0/24</a> unicast<br>bird: AS1_1 < rejected by protocol <a href="http://1.0.5.0/24">1.0.5.0/24</a> unicast<br>bird: Protocol AS1_1 hits route receive limit (4), action: disable<br>Segmentation fault<br></div></div>