Go to file
Donald Sharp c9e4abf81f zebra: Allow system routes to recurse through themselves
Currently if a end user has something like this:

Routing entry for 192.168.212.1/32
  Known via "kernel", distance 0, metric 100, best
  Last update 00:07:50 ago
  * directly connected, ens5

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, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

K>* 0.0.0.0/0 [0/100] via 192.168.212.1, ens5, src 192.168.212.19, 00:00:15
C>* 192.168.212.0/27 is directly connected, ens5, 00:07:50
K>* 192.168.212.1/32 [0/100] is directly connected, ens5, 00:07:50

And FRR does a link flap, it refigures the route and rejects the default
route:

2022/04/09 16:38:20 ZEBRA: [NZNZ4-7P54Y] default(0:254):0.0.0.0/0: Processing rn 0x56224dbb5b00
2022/04/09 16:38:20 ZEBRA: [ZJVZ4-XEGPF] default(0:254):0.0.0.0/0: Examine re 0x56224dbddc20 (kernel) status: Changed Installed flags: Selected dist 0 metric 100
2022/04/09 16:38:20 ZEBRA: [GG8QH-195KE] nexthop_active_update: re 0x56224dbddc20 nhe 0x56224dbdd950 (7), curr_nhe 0x56224dedb550
2022/04/09 16:38:20 ZEBRA: [T9JWA-N8HM5] nexthop_active_check: re 0x56224dbddc20, nexthop 192.168.212.1, via ens5
2022/04/09 16:38:20 ZEBRA: [M7EN1-55BTH]         nexthop_active: Route Type kernel has not turned on recursion
2022/04/09 16:38:20 ZEBRA: [HJ48M-MB610]         nexthop_active_check: Unable to find active nexthop
2022/04/09 16:38:20 ZEBRA: [JPJF4-TGCY5] default(0:254):0.0.0.0/0: After processing: old_selected 0x56224dbddc20 new_selected 0x0 old_fib 0x56224dbddc20 new_fib 0x0

So the 192.168.212.1 route is matched for the nexthop but it is not connected and
zebra treats it as a problem.  Modify the code such that if a system route
matches through another system route, then it should work imo.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-04-09 13:17:14 -04:00
.github .github: improve bug report template 2020-10-20 16:12:03 -04: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 *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
bgpd Merge pull request #10927 from bobuhiro11/refactor_srv6_locator_chunks 2022-04-06 21:36:39 +03:00
debian debian: include frr@.service in deb 2022-03-04 13:10:08 +02:00
doc Merge pull request #10831 from anlancs/doc-mh-esi-type0 2022-04-04 08:47:01 +03: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 *: Fix spelling of Following 2022-04-01 16:27:55 -04:00
ldpd Merge pull request #10447 from ton31337/fix/json_with_whitespaces 2022-03-13 18:19:33 -04:00
lib lib, pimd: add a bunch of address helpers 2022-04-07 14:00:36 +02: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 *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
ospf6d *: Fix spelling of Gracefull 2022-04-02 07:46:19 -04:00
ospfclient *: Fix spelling of Following 2022-04-01 16:27:55 -04:00
ospfd *: Fix spelling of Gracefull 2022-04-02 07:46:19 -04:00
pathd *: Fix spelling of wether 2022-04-02 07:46:19 -04: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: use SSM check helper 2022-04-07 14:00:40 +02: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 debian, redhat: updating changelog for new release 2022-02-02 21:49:42 +02:00
ripd *: Fix spelling of Inteface 2022-04-02 07:46:19 -04:00
ripngd *: Fix spelling of Inteface 2022-04-02 07:46:19 -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 tests: Add a test to ensure that FRR does not loose kernel routes 2022-04-08 08:15:20 -04:00
tools tools: Modify all_stop to actually try to stop all daemons 2022-03-30 07:44:31 -04:00
vrrpd vrrpd: Allow it to be built in directory 2022-03-11 07:49:03 -05:00
vtysh vtysh: remove extraneous newline 2022-04-07 17:55:35 +02:00
watchfrr watchfrr: Convert daemon_state_t to an enum instead of a typedef 2022-04-07 08:57:42 -04:00
yang lib, yang: Fix spellinig of miliseconds 2022-04-02 07:48:18 -04:00
zebra zebra: Allow system routes to recurse through themselves 2022-04-09 13:17:14 -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 build: stick -g into LDFLAGS 2022-03-31 17:35:32 +02: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