The FRRouting Protocol Suite
Find a file
Donald Sharp 9f002fa5dd bgpd: Fix import check removal
Fix: 06e4e90132

Modified BGP to pay more attention the prefix returned from
zebra to ensure that a LPM wasn't accidently causing BGP
import checks to think it had a match when it did not.
This unfortunately removed the check to handle the route
removal.

This sequence of config and events would leave BGP in a bad state:
ip route 100.100.100.0/24 Null0
router bgp 32932
  bgp network import-check
  address-family ipv4 uni
    network 100.100.100.0/24

Then if you removed the static route the import check would
still think the route existed:

donatas-pc(config)# ip route 100.100.100.0/24 Null0

donatas-pc(config)# do sh ip bgp import-check-table
Current BGP import check cache:
 100.100.100.0 valid [IGP metric 0], #paths 1
  blackhole
  Last update: Sat Apr 23 22:51:34 2022

donatas-pc(config)# do sh ip nht
100.100.100.0
 resolved via static
 is directly connected, Null0
 Client list: bgp(fd 17)

donatas-pc(config)# do sh ip bgp neighbors 192.168.10.123 advertised-routes | include 100.100.100.0
*> 100.100.100.0/24 0.0.0.0                  0         32768 i

donatas-pc(config)# no ip route 100.100.100.0/24 Null0

donatas-pc(config)# do sh ip nht
100.100.100.0
 resolved via kernel
 via 192.168.10.1, enp3s0
 Client list: bgp(fd 17)

donatas-pc(config)# do sh ip bgp import-check-table
Current BGP import check cache:
 100.100.100.0 valid [IGP metric 0], #paths 1
  blackhole
  Last update: Sat Apr 23 22:51:34 2022

donatas-pc(config)# do sh ip bgp neighbors 192.168.10.123 advertised-routes | include 100.100.100.0
*> 100.100.100.0/24 0.0.0.0                  0         32768 i
donatas-pc(config)#

Fix this by moving the code to handle the prefix check to the
evaluation function and mark the bnc as not matching and actually
evaluate the bnc.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-04-24 17:08:12 -04:00
.github github: Use checkboxes for issue templates 2022-04-19 13:23:22 +03:00
alpine alpine: fix path for daemons file install 2021-08-30 15:21:59 -04:00
babeld babeld: Rehook up interface up events 2022-03-26 20:46:36 -04:00
bfdd *: Fix spelling of overriden 2022-04-19 08:27:02 -04:00
bgpd bgpd: Fix import check removal 2022-04-24 17:08:12 -04:00
debian Merge pull request #11052 from opensourcerouting/fix/log_dir_permissions 2022-04-20 07:45:08 -04:00
doc Merge pull request #10961 from opensourcerouting/build-ms-ext 2022-04-20 07:51:45 -04:00
docker Merge pull request #10916 from rampxxxx/feat_frr_ubi8_docker 2022-03-31 21:18:30 +03:00
eigrpd *: Fix spelling of ojbect 2022-04-02 07:46:19 -04:00
fpm build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
gdb *: Cleanup some documentation from quagga->frr 2021-11-11 14:41:27 -05:00
grpc build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
include pim6d: Mroute changes 2022-03-23 19:34:28 +05:30
isisd Merge pull request #11061 from pguibert6WIND/debug_isis_bfd_too 2022-04-20 15:04:16 -04:00
ldpd *: Fix spelling of inteface 2022-04-19 08:21:31 -04:00
lib Merge pull request #11055 from donaldsharp/plist_crash 2022-04-20 15:15:08 +03:00
m4 autoconf: do not .gitignore m4/ax_lua.m4 2022-03-26 15:05:54 +01:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd build: first header *must* be zebra.h or config.h 2022-04-04 18:33:10 +02:00
ospf6d Merge pull request #11051 from donaldsharp/speell_more 2022-04-20 11:04:14 +03:00
ospfclient *: Fix spelling of Following 2022-04-01 16:27:55 -04:00
ospfd *: Fix spelling of accomodate 2022-04-19 08:29:58 -04:00
pathd build: first header *must* be zebra.h or config.h 2022-04-04 18:33:10 +02:00
pbrd *: Fix spelling of Inteface 2022-04-02 07:46:19 -04:00
pceplib *: Fix spelling of ojbect 2022-04-02 07:46:19 -04:00
pimd pimd: Set new to true in igmp_get_source_by_addr api 2022-04-21 05:54:40 -07:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: improve clippy/clidef macro processing 2022-02-28 13:28:43 +01:00
qpb build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
redhat Merge pull request #11052 from opensourcerouting/fix/log_dir_permissions 2022-04-20 07:45:08 -04:00
ripd *: Fix spelling of modifed 2022-04-19 08:20:37 -04:00
ripngd *: Fix spelling of modifed 2022-04-19 08:20:37 -04:00
sharpd *: add SAFI argument to zclient_send_rnh 2022-03-27 14:57:22 +02:00
snapcraft snapcraft: Add missing libelf-dev build package 2022-03-01 00:41:29 +01:00
staticd *: Fix spelling of Inteface 2022-04-02 07:46:19 -04:00
tests Merge pull request #7811 from kuldeepkash/multicast_pim_dr_nondr 2022-04-20 12:52:46 -05:00
tools Merge pull request #11064 from opensourcerouting/fix/allow_only_euid_0_running_frrinit 2022-04-21 19:49:47 -04:00
vrrpd vrrpd: Allow it to be built in directory 2022-03-11 07:49:03 -05:00
vtysh vtysh: Call fflush+fsync before calling fclose() when saving the config 2022-04-19 14:01:13 +03:00
watchfrr watchfrr: Add some more information to show watchfrr 2022-04-18 09:32:29 -04:00
yang lib, yang: Fix spellinig of miliseconds 2022-04-02 07:48:18 -04:00
zebra zebra: Name variable better in zebra_trace.h 2022-04-20 09:49:36 -04:00
.clang-format lib: add _last and _prev on typesafe RB/DLIST 2022-03-12 13:23:36 +01:00
.dir-locals.el tests: remove python format block from dir-locals 2021-09-13 10:04:29 -04:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore *: Add some missed make check generated files in .gitignore 2021-09-16 08:13:17 -04:00
.pylintrc tests: micronet: update infra 2021-09-04 09:04:46 -04:00
.travis.yml lib: libyang2 add missed conversion 2021-05-17 22:13:59 -04:00
bootstrap.sh build: turn on automake warnings (& symlinks) 2021-04-21 15:42:37 +02:00
buildtest.sh build: remove --enable-exampledir 2021-06-24 16:42:58 +02:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac Merge pull request #10961 from opensourcerouting/build-ms-ext 2022-04-20 07:51:45 -04:00
COPYING *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
COPYING-LGPLv2.1 build: remove LGPL v2.0, add LGPL v2.1 2016-11-15 17:19:38 +09:00
Makefile.am build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
README.md doc: Fix the link that points to Slack invitation in README 2022-03-24 13:13:37 +02:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00
version.h build: make builddir include path consistent 2021-04-21 15:42:33 +02:00

Icon

FRRouting

FRR is free software that implements and manages various IPv4 and IPv6 routing protocols. It runs on nearly all distributions of Linux and BSD and supports all modern CPU architectures.

FRR currently supports the following protocols:

  • BGP
  • OSPFv2
  • OSPFv3
  • RIPv1
  • RIPv2
  • RIPng
  • IS-IS
  • PIM-SM/MSDP
  • LDP
  • BFD
  • Babel
  • PBR
  • OpenFabric
  • VRRP
  • EIGRP (alpha)
  • NHRP (alpha)

Installation & Use

For source tarballs, see the releases page.

For Debian and its derivatives, use the APT repository at https://deb.frrouting.org/.

Instructions on building and installing from source for supported platforms may be found in the developer docs.

Once installed, please refer to the user guide for instructions on use.

Community

The FRRouting email list server is located here and offers the following public lists:

Topic List
Development dev@lists.frrouting.org
Users & Operators frog@lists.frrouting.org
Announcements announce@lists.frrouting.org

For chat, we currently use Slack. You can join by clicking the "Slack" link under the Participate section of our website.

Contributing

FRR maintains developer's documentation which contains the project workflow and expectations for contributors. Some technical documentation on project internals is also available.

We welcome and appreciate all contributions, no matter how small!

Security

To report security issues, please use our security mailing list:

security [at] lists.frrouting.org