Go to file
Donald Sharp 1d30d1f4a8 zebra: When registering a nexthop, we do not always need to re-eval
The code prior to this change, was allowing clients to register
for nexthop tracking.  Then zebra would look up the rnh and
send to that particular client any known data.  Additionally
zebra was blindly re-evaluating the rnh for every registration.

This leads to interesting behavior in that all people registered
for that nexthop will get callbacks even if nothing changes.

Modify the code to know if we have evaluated the rnh or not
and if so limit the re-evaluation to when absolutely necessary

This is of particular importance to do because of nht callbacks
for protocols cause those protocols to do not insignificant
work and as more protocols are registering for nht callbacks
we will cause more work than is necessary.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-25 08:11:01 -04:00
alpine alpine: add unit tests to build 2018-06-14 10:27:24 -07:00
babeld *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
bfdd bfdd: fix coverity scan issue (CID 1472622) 2018-08-16 18:33:32 -03:00
bgpd Merge pull request #2804 from kssoman/bgp_fix 2018-08-24 07:46:22 -04:00
debianpkg doc, debianpkg: Cleanup tcp-zebra configure options 2018-08-20 13:17:34 -04:00
doc doc, lib, zebra: Remove deprecated encode and decode functionality 2018-08-24 10:56:15 -04:00
docker unit tests: support code coverage instrumentation and reports 2018-07-04 11:06:11 -07:00
eigrpd *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
fpm build: clean up BUILT_SOURCES 2017-08-04 11:13:55 +02:00
gdb gdb: Add a directory of files with gdb macros 2016-05-26 15:33:30 +00:00
include include: add netlink.h to our build system 2018-06-21 08:07:30 -04:00
init build: delete .cvsignore files 2011-12-13 14:27:01 +04:00
isisd isisd, ospfd, tests: Switch to using stream_resize_inplace 2018-08-22 07:58:54 -04:00
ldpd *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
lib doc, lib, zebra: Remove deprecated encode and decode functionality 2018-08-24 10:56:15 -04:00
m4 build: non-recursive auxiliary directories 2017-07-31 23:03:30 +02:00
nhrpd *: rename ferr_ref -> log_ref 2018-08-14 20:02:05 +00:00
ospf6d Merge pull request #2814 from qlyoung/fix-ospf6d-lsa-uaf-test 2018-08-20 18:16:46 +02:00
ospfclient ospfd: Remove unused function 2018-08-21 08:40:51 -04:00
ospfd isisd, ospfd, tests: Switch to using stream_resize_inplace 2018-08-22 07:58:54 -04:00
pbrd lib, vtysh: fix inconsistent interface commands in vtysh 2018-08-13 18:59:31 -03:00
pimd zebra: if multiple connecteds, select loopback or vrf if present 2018-08-23 18:49:48 +00:00
pkgsrc *: Remove cvs control points 2017-12-05 17:28:12 -05:00
ports pimd: merge pimd as of 2015-01-19 2016-05-25 20:38:32 -04:00
python lib, python: DEFPY_ATTR, DEFPY_HIDDEN 2018-04-10 12:19:03 -04:00
qpb *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
redhat bfdd: wire to the build process 2018-08-08 18:24:58 -03:00
ripd *: frr_elevate_privs whitespace fixes 2018-08-14 20:02:05 +00:00
ripngd Merge pull request #2448 from qlyoung/error-reference-cards 2018-08-16 16:39:40 +02:00
sharpd sharpd, staticd: Add access_list_init 2018-08-15 20:14:22 -04:00
snapcraft snapcraft: Add RPKI to snap package 2018-08-18 13:33:01 -07:00
solaris gitignore: update references to FRR 2017-07-12 11:55:04 -05:00
staticd static: remove useless debug variable 2018-08-22 10:04:49 +02:00
tests Merge pull request #2886 from donaldsharp/stream_resize 2018-08-22 16:04:37 -04:00
tools *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
vtysh bgpd: fix rpki exit command 2018-08-23 16:10:12 +00:00
watchfrr *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
zebra zebra: When registering a nexthop, we do not always need to re-eval 2018-08-25 08:11:01 -04:00
.clang-format lib: import new JSON iteration macro 2018-08-08 18:01:20 -03:00
.dir-locals.el .dir-locals.el: show trailing whitespace 2017-11-07 12:05:09 -05:00
.dockerignore alpine packaging: build packages and base image directly from git 2018-04-04 10:05:44 -07:00
.gitignore *: globally ignore clippy-generated source 2018-03-09 17:52:15 -05:00
AUTHORS Initial revision 2002-12-13 20:15:29 +00: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 Rename: freerangerouting --> frrouting 2017-03-30 14:24:05 -04:00
common.am *: disable all sanitizers for clippy build 2018-06-08 17:22:13 +00:00
configure.ac lib: Remove smux option for snmp 2018-08-23 08:36:07 -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
defaults.h *: reindent 2017-07-17 14:04:07 +02:00
Makefile.am bfdd: wire to the build process 2018-08-08 18:24:58 -03:00
NEWS release: 0.99.24 2016-06-03 15:56:44 -04:00
README frr: fix typo in README 2018-05-14 11:06:27 -04:00
stamp-h.in Initial revision 2002-12-13 20:15:29 +00:00

FRRouting is free software that implements and manages various IPv4 and IPv6
routing protocols.

Currently FRRouting supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, RIPng,
IS-IS, PIM-SM/MSDP, LDP and Babel as well as very early support for EIGRP and
NHRP.

See doc/user/bugs.rst for information on how to report bugs.

See doc/developer/workflow.rst for information on contributing.

See the file COPYING for copying conditions.

Public email discussion can be found at https://lists.frrouting.org/listinfo

Our public slack channel is at https://frrouting.slack.com