Go to file
Donald Sharp ce0d560559 bgpd: With suppress-fib-pending ensure withdrawal is sent
When you have suppress-fib-pending turned on it is possible
to end up in a situation where the prefix is not withdrawn
from downstream peers.

Here is the timing that I believe is happening:

a) have 2 paths to a peer.
b) receive a withdrawal from 1 path, set BGP_NODE_FIB_INSTALL_PENDING
   and send the route install to zebra.
c) receive a withdrawal from the other path.
d) At this point we have a dest->flags set BGP_NODE_FIB_INSTALL_PENDING
   old_select the path_info going away, new_select is NULL
e) A bit further down we call group_announce_route() which calls
   the code to see if we should advertise the path.  It sees the
   BGP_NODE_FIB_INSTALL_PENDING flag and says, nope.
f) the route is sent to zebra to withdraw, which unsets the
   BGP_NODE_FIB_INSTALL_PENDING.
g) This function winds up and deletes the path_info.  Dest now
   has no path infos.
h) BGP receives the route install(from step b) and unsets the
   BGP_NODE_FIB_INSTALL_PENDING flag
i) BGP receives the route removed from zebra (from step f) and
   unsets the flag again.

We know if there is no new_select, let's go ahead and just
unset the PENDING flag to allow the withdrawal to go out
at the time when the second withdrawal is received.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
(cherry picked from commit 4e8eda74ec)
2025-02-01 11:26:53 +00:00
.github github: Mark the build as failed if 'do not merge' label is set 2023-12-22 10:29:52 +02:00
alpine docker: Set ABUILD_APK_INDEX_OPTS for frr build 2024-09-12 09:52:23 +03:00
babeld babeld: Do not remove route when replacing 2024-09-23 11:41:40 +00:00
bfdd bfdd: add no variants to interval configurations 2024-10-02 12:41:32 +00:00
bgpd bgpd: With suppress-fib-pending ensure withdrawal is sent 2025-02-01 11:26:53 +00:00
debian FRR Release 10.0.3 2024-12-23 23:26:08 +02:00
doc bgpd: add bgp ipv6-auto-ra command 2024-10-29 12:12:19 +01:00
docker docker: Set ABUILD_APK_INDEX_OPTS for libyang 2024-09-12 09:52:22 +03:00
eigrpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
fpm *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
gdb lib: add simplified native msg support 2023-12-26 08:34:56 -05:00
grpc *: manual SPDX License ID conversions 2023-02-09 14:09:07 +01:00
include lib: Drop include/linux/mroute[6].h 2024-03-12 20:34:30 +00:00
isisd isisd: Allow full no form for domain-password and area-password 2025-01-07 14:42:38 +00:00
ldpd ldpd: fix wrong gtsm count 2024-07-02 17:50:23 +00:00
lib bgpd: fix crash in displaying json orf prefix-list 2025-01-09 20:58:58 +00:00
m4 build: add recursion limit for AX_RECURSIVE_EVAL 2024-01-27 19:01:19 +01:00
mgmtd mgmtd: don't add implicit state data when reading config from file 2024-08-10 08:11:52 +00:00
mlag build: fix AM_LDFLAGS usage (and gcov) 2021-07-21 17:10:08 +02:00
nhrpd Merge pull request #16719 from FRRouting/mergify/bp/stable/10.0/pr-16699 2024-10-03 09:33:41 +03:00
ospf6d ospf6d: OSPFv3 route change comparision fixed for ASBR-only change 2024-06-02 15:22:21 +00:00
ospfclient *: Convert event.h to frrevent.h 2023-03-24 08:32:17 -04:00
ospfd ospfd: Use router_id what Zebra has if we remove a static router_id 2024-11-05 15:21:04 +00:00
pathd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
pbrd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
pceplib Merge pull request #15215 from donaldsharp/pceplib_fixup 2024-01-25 09:59:59 +02:00
pimd pimd: Fix access-list memory leak in pimd 2024-12-03 21:37:17 +00:00
pkgsrc build: homologize path handling 2024-01-27 19:02:52 +01:00
python build: remove mgmtd exception from xref2vtysh 2024-01-28 23:28:40 +02:00
qpb qpb: Add missing #include nexthop.h 2024-02-10 00:44:50 +01:00
redhat FRR Release 10.0.3 2024-12-23 23:26:08 +02:00
ripd ripd: fix show run output for distribute-list 2024-08-08 18:29:25 +00:00
ripngd ripngd: fix "clear ipv6 ripng" command 2024-03-09 10:16:38 +00:00
sharpd *: create a single registry of daemons' default port values 2024-02-01 11:40:02 -05:00
snapcraft debian, redhat, snapcraft: Libyang min version is 2.1.128 2024-04-17 15:11:31 +00:00
staticd zebra: fix missing static routes 2024-07-15 18:46:25 +00:00
tests Revert "bgpd: Handle Addpath capability using dynamic capabilities" 2025-01-28 11:23:37 +02:00
tools tools: Fix frr-reload for ebgp-multihop TTL reconfiguration. 2025-01-29 12:06:15 +00:00
vrrpd vrrpd: iterate over all ancillary messages 2024-10-08 13:32:34 +00:00
vtysh vtysh: Fix show route-map command when calling via do 2024-04-20 13:07:05 +00:00
watchfrr build: homologize path handling 2024-01-27 19:02:52 +01:00
yang isisd: fix change flex-algorithm number from uint32 to uint8 2024-10-30 08:44:08 +00:00
zebra zebra: separate zebra ZAPI server open and accept 2024-12-03 20:27:50 +00:00
.clang-format *: Modify clang-format column limit to 100 2024-10-03 19:52:25 +00:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.flake8 style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.git-blame-ignore-revs tools: Ignore mass renaming of topotests for git blame 2021-05-11 14:14:26 +03:00
.gitignore tests: add YANG notification test 2024-01-30 14:54:47 -05:00
.isort.cfg style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -04:00
.pylintrc style: add format checker config that matches FRR style standards 2023-04-18 05:18:26 -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: update packaging & docs for dir changes 2024-01-27 19:01:19 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac FRR Release 10.0.3 2024-12-23 23:26:08 +02:00
COPYING *: sort out & explain licenses used in FRR 2023-02-09 12:46:13 +01:00
Makefile.am build: homologize path handling 2024-01-27 19:02:52 +01: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