mirror_frr/zebra
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
..
.gitignore *: globally ignore clippy-generated source 2018-03-09 17:52:15 -05:00
connected.c lib, zebra: Allow protocols to use Distance as part of RR semantics 2018-07-29 12:43:23 -04:00
connected.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
debug.c zebra: PBR show debugging IPSET/IPTABLE hooks declared 2018-05-25 15:49:38 +02:00
debug.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
GNOME-PRODUCT-ZEBRA-MIB Initial revision 2002-12-13 20:15:29 +00:00
GNOME-SMI Initial revision 2002-12-13 20:15:29 +00:00
if_ioctl_solaris.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
if_ioctl.c *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
if_netlink.c *: frr_elevate_privs whitespace fixes 2018-08-14 20:02:05 +00:00
if_netlink.h zebra: Remove unnecessary function parameter 2018-05-24 09:14:43 -04:00
if_sysctl.c build: zebra: remove *_method Makefile hacks 2017-07-31 23:03:30 +02:00
interface.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
interface.h zebra: Notice when our neighbor entry is removed and fight back 2018-04-09 08:04:39 -04:00
ioctl_solaris.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ioctl_solaris.h *: reindent 2017-07-17 14:04:07 +02:00
ioctl.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ioctl.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
ipforward_proc.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ipforward_solaris.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
ipforward_sysctl.c *: frr_elevate_privs whitespace fixes 2018-08-14 20:02:05 +00:00
ipforward.h *: reindent 2017-07-17 14:04:07 +02:00
irdp_interface.c zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
irdp_main.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
irdp_packet.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
irdp.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
kernel_netlink.c zebra: fix warnings from frr_elevate_privs() 2018-08-14 20:02:05 +00:00
kernel_netlink.h Refactor code for new fuzzing netlink flag 2018-07-24 13:39:25 -04:00
kernel_socket.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
kernel_socket.h zebra: cleanup blackhole support 2017-08-28 05:07:51 +02:00
label_manager.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
label_manager.h lib, zebra: fix formatting and style 2018-05-08 18:37:05 +02:00
main.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
Makefile build: convert zebra/ to non-recursive build 2017-07-31 23:03:30 +02:00
redistribute.c zebra : Zebra does not properly track which route-maps are changed (#2493) 2018-08-17 08:47:48 -07:00
redistribute.h zebra : Zebra does not properly track which route-maps are changed (#2493) 2018-08-17 08:47:48 -07:00
rib.h zebra : Zebra does not properly track which route-maps are changed (#2493) 2018-08-17 08:47:48 -07:00
router-id.c lib,zebra: fix json output when vrf1 when not active 2018-07-27 10:17:03 -04:00
router-id.h *: make consistent & update GPLv2 file headers 2017-05-15 16:37:41 +02:00
rt_netlink.c Merge pull request #2122 from donaldsharp/zebra_nhs 2018-08-08 08:07:24 -07:00
rt_netlink.h Merge pull request #2283 from donaldsharp/ignore_some_more 2018-05-27 11:02:15 -04:00
rt_socket.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
rt.h bgpd: support evpn nd ext community 2018-07-17 13:06:41 -07:00
rtadv.c Merge pull request #2448 from qlyoung/error-reference-cards 2018-08-16 16:39:40 +02:00
rtadv.h Revert "zebra: implement draft-bz-v4goawayflag-00" 2018-04-02 15:26:06 -04:00
rtread_getmsg.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
rtread_netlink.c *: PBR - netlink interaction and basic definitions 2018-03-09 11:07:41 -05:00
rtread_sysctl.c *: PBR - netlink interaction and basic definitions 2018-03-09 11:07:41 -05:00
rule_netlink.c zebra: Format log for address family check 2018-07-25 14:08:24 -04:00
rule_netlink.h zebra: Remove unnecessary function parameter 2018-05-24 09:14:43 -04:00
rule_socket.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
subdir.am zebra: Remove unmaintained and uncompilable code 2018-08-24 10:49:20 -04:00
table_manager.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
table_manager.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
testrib.conf zebra: Build the test client, can be useful, and add IPv6 to testrib.conf 2016-05-26 01:13:58 +00:00
zapi_msg.c zebra: When registering a nexthop, we do not always need to re-eval 2018-08-25 08:11:01 -04:00
zapi_msg.h zebra, lib: error references for zebra 2018-08-14 20:02:05 +00:00
zebra_errors.c *: rename ferr_ref -> log_ref 2018-08-14 20:02:05 +00:00
zebra_errors.h *: rename ferr_ref -> log_ref 2018-08-14 20:02:05 +00:00
zebra_fpm_dt.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_fpm_netlink.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_fpm_private.h *: reindent 2017-07-17 14:04:07 +02:00
zebra_fpm_protobuf.c zebra: Set "has" flags on optional scalar fields of FPM protobuf messages 2018-03-29 19:09:43 +03:00
zebra_fpm.c *: rename zlog_fer -> flog_err 2018-08-14 20:02:05 +00:00
zebra_l2_null.c *: reindent 2017-07-17 14:04:07 +02:00
zebra_l2.c *: use the FOR_ALL_INTERFACES abstraction from babeld 2017-10-10 09:05:46 -03:00
zebra_l2.h *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_memory.c *: reindent 2017-07-17 14:04:07 +02:00
zebra_memory.h zebra: Refactor 'struct rib' to be 'struct route_entry' 2017-06-01 08:00:05 -04:00
zebra_mpls_netlink.c zebra: Add enum dp_req_result to lsp install/deletes 2018-05-30 08:05:29 -04:00
zebra_mpls_null.c zebra: Add enum dp_req_result to lsp install/deletes 2018-05-30 08:05:29 -04:00
zebra_mpls_openbsd.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_mpls_vty.c zebra: Remove zebra_static.c and .h 2018-07-29 12:37:26 -04:00
zebra_mpls.c Merge pull request #2846 from donaldsharp/backet_data 2018-08-16 11:32:41 -04:00
zebra_mpls.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
zebra_mroute.c zebra: refactor zserv names, consolidate events 2018-05-29 19:06:16 +00:00
zebra_mroute.h zebra: standardize ZAPI message handler args 2018-03-12 14:57:05 -04:00
zebra_netns_id.c *: rename ferr_zlog -> flog_err_sys 2018-08-14 20:02:05 +00:00
zebra_netns_id.h zebra: upon startup, a NSID is assigned to default netns 2018-02-27 11:11:24 +01:00
zebra_netns_notify.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_netns_notify.h zebra: collect and get netnamespaces information 2018-02-27 11:11:24 +01:00
zebra_ns.c *: use frr_elevate_privs() (1/2: coccinelle) 2018-08-14 20:02:05 +00:00
zebra_ns.h zebra: ns_table list is extended to support multiple NETNS 2018-06-01 15:24:13 +02:00
zebra_pbr.c zebra: add information about which port is monitored 2018-07-24 12:17:57 +02:00
zebra_pbr.h zebra: show pbr iptable per iptable 2018-07-24 12:17:57 +02:00
zebra_ptm_redistribute.c zebra: refactor zserv names, consolidate events 2018-05-29 19:06:16 +00:00
zebra_ptm_redistribute.h *: reindent 2017-07-17 14:04:07 +02:00
zebra_ptm.c Merge pull request #2856 from opensourcerouting/bfd-work 2018-08-16 18:48:51 -04:00
zebra_ptm.h bfdd: re-route PTM-BFD daemon messages 2018-08-08 18:25:04 -03:00
zebra_pw.c zebra: fix "no pseudowire IFNAME" on vtysh 2018-08-13 18:59:31 -03:00
zebra_pw.h zebra: use hooks for client lifecycle callbacks 2018-04-22 22:50:24 -04:00
zebra_rib.c zebra: if multiple connecteds, select loopback or vrf if present 2018-08-23 18:49:48 +00:00
zebra_rnh.c zebra: When registering a nexthop, we do not always need to re-eval 2018-08-25 08:11:01 -04:00
zebra_rnh.h zebra: When registering a nexthop, we do not always need to re-eval 2018-08-25 08:11:01 -04:00
zebra_routemap.c zebra : routemap "match ipv6 address prefix list" does not work 2018-08-17 08:53:28 -07:00
zebra_routemap.h libs, daemons: use const in route-map apply 2018-07-23 10:34:35 -04:00
zebra_snmp.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_vrf.c zebra: Remove zebra_static.c and .h 2018-07-29 12:37:26 -04:00
zebra_vrf.h staticd: Start the addition of a staticd 2018-07-29 12:37:24 -04:00
zebra_vty.c Merge pull request #2799 from adharkar/frr-zebra_cli 2018-08-08 20:27:49 +02:00
zebra_vxlan_null.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_vxlan_private.h Merge pull request #2665 from chiragshah6/evpn_dev 2018-07-24 11:55:08 -04:00
zebra_vxlan.c zebra: mark router flag for remote neigh update 2018-08-22 15:34:53 -07:00
zebra_vxlan.h bgpd: support evpn nd ext community 2018-07-17 13:06:41 -07:00
zebra.conf.sample *: Remove cvs control points 2017-12-05 17:28:12 -05:00
zserv.c *: use frr_elevate_privs() (2/2: manual) 2018-08-14 20:02:05 +00:00
zserv.h zebra: dont delete pthreads from under themselves 2018-07-30 23:06:27 +00:00