Go to file
Donald Sharp b96f64f76f zebra: When we fail, actually note the failure
During testing it was noticed that routes were considered
installed by zebra, but the kernel did not have the route.
Upon close debugging of the rib it was noticed that FRR
was turning a dplane_ctx_route_init into a success and
FRR was now in a bad state.

2020/08/26 17:55:53.897436 PBR: route_notify_owner: [0.0.0.0/0] Route Removed succeeded for table: 10012
2020/08/26 17:55:53.897572 ZEBRA: 0.0.0.0/0: uptime == 432033, type == 24, instance == 0, table == 10012
2020/08/26 17:55:53.897622 ZEBRA: rib_meta_queue_add: (0:10012):0.0.0.0/0: queued rn 0x5566b0ea7680 into sub-queue 5
2020/08/26 17:55:53.907637 ZEBRA: default(0:10012):0.0.0.0/0: Processing rn 0x5566b0ea7680
2020/08/26 17:55:53.907665 ZEBRA: default(0:10012):0.0.0.0/0: Examine re 0x5566b0d01200 (pbr) status 2 flags 1 dist 200 metric 0
2020/08/26 17:55:53.907702 ZEBRA: default(0:10012):0.0.0.0/0: After processing: old_selected 0x0 new_selected 0x5566b0d01200 old_fib 0x0 new_fib 0x5566b0d01200
2020/08/26 17:55:53.907713 ZEBRA: default(0:10012):0.0.0.0/0: Adding route rn 0x5566b0ea7680, re 0x5566b0d01200 (pbr)
2020/08/26 17:55:53.907879 ZEBRA: default(0:10012):0.0.0.0/0: rn 0x5566b0ea7680 dequeued from sub-queue 5
2020/08/26 17:55:53.907943 ZEBRA: netlink_route_multipath: RTM_NEWROUTE 0.0.0.0/0 vrf 0(10012)
2020/08/26 17:55:53.910756 ZEBRA: default(0:10012):0.0.0.0/0 Processing dplane result ctx 0x5566b0ea82f0, op ROUTE_INSTALL result SUCCESS
2020/08/26 17:55:53.910769 ZEBRA: update_from_ctx: default(0:10012):0.0.0.0/0: SELECTED, re 0x5566b0d01200
2020/08/26 17:55:53.910785 ZEBRA: default(0:10012):0.0.0.0/0 update_from_ctx(): no fib nhg
2020/08/26 17:55:53.910793 ZEBRA: default(0:10012):0.0.0.0/0 update_from_ctx(): rib nhg matched, changed 'true'
2020/08/26 17:55:53.910802 ZEBRA: (0:10012):0.0.0.0/0: Redist update re 0x5566b0d01200 (pbr), old 0x0 (None)
2020/08/26 17:55:53.910812 ZEBRA: Notifying Owner: 24 about prefix 0.0.0.0/0(10012) 2 vrf: 0
2020/08/26 17:55:53.910912 PBR: route_notify_owner: [0.0.0.0/0] Route installed succeeded for table: 10012
2020/08/26 17:55:55.400516 ZEBRA: RTM_DELROUTE 0.0.0.0/0 vrf default(0) table_id: 10012 metric: 20 Admin Distance: 0
2020/08/26 17:55:55.400527 ZEBRA: rib_delete: (0:10012):0.0.0.0/0: rn 0x5566b0ea7680, re 0x5566b0d01200 (pbr) was deleted from kernel, adding

We were receiving a notification from the kernel that the route was deleted and deciding
that we needed to reinstall it.  At that point in time when it got into the dplane
handlers to convert it to the dplane pthread, the dplane decided to drop the request
convert it too a success and not do anything.

This code change removes the conversion from this failure to success and
notifies the upper level about it.  After this change the default route
to table 10012 is now properly marked as rejected:

root@mlx-2700-07:mgmt:/var/log/frr# vtysh -c "show ip route table 10012"
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route, q - queued route, r - rejected route

VRF default table 10012:
F>r 0.0.0.0/0 [200/0] via 172.168.1.164, isp2-uplink (vrf PUBLIC), weight 1, 00:24:48

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-08-26 21:51:54 -04:00
.github .github: move pr template to subdir 2019-03-29 16:51:58 +00:00
alpine alpine: enable multi-arch builds 2020-06-24 16:33:18 -04:00
babeld *: un-split strings across lines 2020-07-14 10:37:25 +02:00
bfdd bfdd: fix parameter length 2020-08-24 18:45:53 +03:00
bgpd Merge pull request #7001 from ton31337/fix/deadcode_bgp_show_all_instances_neighbors_vty 2020-08-26 09:27:12 -04:00
debian debian: Add missing daemons to logrotation knowledge 2020-06-25 07:13:50 -04:00
doc Merge pull request #5799 from pguibert6WIND/flowspec_ipv6 2020-08-26 08:26:46 -04:00
docker docker: don't fail on chown /etc/frr 2020-06-10 00:20:04 -04:00
eigrpd *: introduce DEFPY_YANG & friends 2020-08-03 15:17:03 -03:00
fpm *: Replace sizeof something to sizeof(something) 2020-03-08 21:44:53 +02:00
gdb bgpd: Convert binfo to path 2018-10-09 14:26:30 -04:00
grpc lib: don't ignore error messages generated during the commit apply phase 2020-08-14 21:37:14 -03:00
include linux: UAPI for MAC sync 2020-08-05 06:46:12 -07:00
isisd isisd : Transformational changes to support different VRFs. 2020-08-14 13:46:22 -07:00
ldpd ldpd: ldp-oc withdraw fix 2020-08-05 16:01:52 -04:00
lib Merge pull request #5799 from pguibert6WIND/flowspec_ipv6 2020-08-26 08:26:46 -04:00
m4 build: find all future minor versions of python3 2020-07-09 06:47:31 +02:00
mlag zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
nhrpd nhrpd: ignore zebra updates about our routes being deleted/added 2020-07-31 13:50:57 +02:00
ospf6d Merge pull request #6732 from opensourcerouting/printfrr-prep 2020-07-29 14:29:34 -04:00
ospfclient *: Replace s_addr 0 => INADDR_ANY 2020-02-06 09:00:12 +02:00
ospfd Merge pull request #6726 from Orange-OpenSource/dev_ospf_sr 2020-08-24 16:23:45 -03:00
pbrd Merge pull request #6730 from wesleycoakley/pbrd-dscp-ecn 2020-07-23 12:08:38 -04:00
pimd pimd: Allow multiple secondary addresses to work 2020-08-10 10:32:17 -04:00
pkgsrc *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
python python: Make FRR build compatible with python 2.7 and 3.x 2020-08-19 19:38:28 +02:00
qpb build: add LLVM bitcode targets 2020-05-05 14:39:12 +02:00
redhat redhat: Update logrotate to have knowledge of all daemons 2020-06-25 07:12:59 -04:00
ripd *: introduce DEFPY_YANG & friends 2020-08-03 15:17:03 -03:00
ripngd *: introduce DEFPY_YANG & friends 2020-08-03 15:17:03 -03:00
sharpd sharpd: add a command to send ARP/NDP requests 2020-08-12 23:20:04 +02:00
snapcraft snapcraft: Add vrrpd to the snapcraft package 2019-11-19 10:46:33 +01:00
solaris doc: rename man pages to frr-* 2020-01-15 14:05:11 +01:00
staticd staticd: fix warning when creating routes without SR-TE colors 2020-08-19 20:07:01 -03:00
tests Merge pull request #5799 from pguibert6WIND/flowspec_ipv6 2020-08-26 08:26:46 -04:00
tools lib, tools: fix reloading of key sub-context in key chains 2020-08-24 09:54:55 -04:00
vrrpd Merge pull request #6908 from qlyoung/vrrp-add-vrf-module 2020-08-13 11:10:03 -03:00
vtysh Merge pull request #6809 from opensourcerouting/staticd-disable-acl 2020-08-04 14:01:26 -04:00
watchfrr watchfrr: add (network) namespace support 2020-07-22 12:56:04 +02:00
yang Merge pull request #6948 from xThaid/proactive_arp 2020-08-24 11:35:34 +00:00
zebra zebra: When we fail, actually note the failure 2020-08-26 21:51:54 -04:00
.clang-format clang-format: add FOREACH_SAFI to the ForEachMacros list 2020-08-03 12:18:24 -03:00
.dir-locals.el tools: fix emacs configuration file 2019-11-04 11:45:52 -03:00
.dockerignore docker: Make docker image on CentOS 7 2019-11-26 19:29:30 +00:00
.git-blame-ignore-revs *: Give git a clue about our whitespace changes 2020-08-18 07:54:07 -04:00
.gitignore python: add graphviz callgraphs 2020-05-05 14:39:12 +02:00
bootstrap.sh autoreconf -i 2007-02-06 19:28:28 +00:00
buildtest.sh config: switch a few references to say FRR 2017-07-12 11:25:33 -05:00
changelog-auto.in debian: cleanly split off from dist tarball 2019-02-19 21:31:18 +01:00
config.version.in build: carry --with-pkg-extra-version into tarballs 2018-10-24 15:11:50 +02:00
configure.ac build: Allow removal of build configs from version string 2020-06-19 11:15:43 -05: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 python: add graphviz callgraphs 2020-05-05 14:39:12 +02:00
README.md README.md: Add FRR Icon 2019-10-29 12:42:06 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00: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 as well as Solaris 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