mirror_frr/zebra
Donald Sharp dd25a6b3a3 zebra: Make rnh only send response once on first registration
The current code path of registration does this:

a) Lookup or create the rnh
b) register the client with the rnh for callback
   If this is a new rnh send a response to the client that
   only includes the rnh data that it has (nothing so no path)
   If this is a existing rnh send the actual path to the client,
     if it exists.
c) If a new client or a flag has changed refigure and send result
   to all clients.

This is problematic in that suppose the rnh is new.  Clients
will receive two answers:
  1) A call back with no nexthops
  2) A call back with the resolved # of nexthops

Imagine pim who depends on nht to handle this, pim will create
a mroute( because it does a hard lookup of the rpf as it is registering
the nexthop ), then it will receive the first callback causing
it to tear down the mroute and then receive the second callback
causing it to put it right back.. This is obviously not very
good for mroutes.

This code moves the send to the new client till after the new
client has connected, thus only allowing one callback to the new
client with the actual answer.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-04-04 08:45:20 -04:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
connected.c zebra: Modify lsp processing to be invoked as needed 2019-03-27 16:22:22 -04:00
connected.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
debug.c zebra: Add detailed debugging command for NHT tracking 2019-03-27 16:22:22 -04:00
debug.h zebra: Add detailed debugging command for NHT tracking 2019-03-27 16:22:22 -04:00
if_ioctl_solaris.c zebra: remove all instances of strncpy 2019-02-25 17:52:37 +00:00
if_ioctl.c zebra: remove all instances of strncpy 2019-02-25 17:52:37 +00:00
if_netlink.c Merge pull request #3869 from qlyoung/cocci-fixes 2019-03-06 15:54:44 +01:00
if_netlink.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
if_sysctl.c *: spelchek 2018-10-25 20:10:57 +02:00
interface.c Merge pull request #3723 from slrz/zebra-rtadv-add-rfc8106-support 2019-02-12 14:30:00 +01:00
interface.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
ioctl_solaris.c zebra: remove all instances of strncpy 2019-02-25 17:52:37 +00:00
ioctl_solaris.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
ioctl.c zebra: remove all instances of strncpy 2019-02-25 17:52:37 +00:00
ioctl.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
ipforward_proc.c zebra: fix includes 2018-09-06 20:56:41 +00:00
ipforward_solaris.c *: LIB_[ERR|WARN] -> EC_LIB 2018-09-13 19:34:28 +00:00
ipforward_sysctl.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
ipforward.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
irdp_interface.c zebra: Move the master thread handler to the zrouter structure 2019-01-31 09:20:46 -05:00
irdp_main.c *: remove trailing newlines from zlog messages 2019-03-14 18:41:15 +00:00
irdp_packet.c *: remove trailing newlines from zlog messages 2019-03-14 18:41:15 +00:00
irdp.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
kernel_netlink.c zebra: Fix extended ack error message parsing 2019-03-26 01:20:29 -04:00
kernel_netlink.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
kernel_socket.c zebra: conditionalize RTM_RESOLVE flag 2019-04-02 09:26:45 -04:00
kernel_socket.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
label_manager.c zebra: Move the master thread handler to the zrouter structure 2019-01-31 09:20:46 -05:00
label_manager.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
main.c zebra: When shutting down actually close the socket 2019-03-27 16:19:28 -04:00
Makefile build: convert zebra/ to non-recursive build 2017-07-31 23:03:30 +02:00
redistribute.c zebra: Remove zclient->idinfo restrictions 2019-02-05 09:13:30 -05:00
redistribute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
rib.h zebra: Modify lsp processing to be invoked as needed 2019-03-27 16:22:22 -04:00
router-id.c zebra: Remove struct zebra_t 2019-01-31 09:20:46 -05:00
router-id.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
rt_netlink.c zebra: Modify code so that dplane is responsible for indicating success/fail of install 2019-03-27 16:19:28 -04:00
rt_netlink.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
rt_socket.c zebra: Modify code so that dplane is responsible for indicating success/fail of install 2019-03-27 16:19:28 -04:00
rt.h zebra: Modify code so that dplane is responsible for indicating success/fail of install 2019-03-27 16:19:28 -04:00
rtadv.c zebra: Fix CLANG suggestion for braces on init of struct 2019-02-12 15:24:00 -05:00
rtadv.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
rtread_getmsg.c zebra: evpn remote delete fetch local entry 2018-12-31 14:40:31 -08:00
rtread_netlink.c zebra: evpn remote delete fetch local entry 2018-12-31 14:40:31 -08:00
rtread_sysctl.c zebra: evpn remote delete fetch local entry 2018-12-31 14:40:31 -08:00
rule_netlink.c zebra: add fwmark information at netlink level 2019-01-29 14:15:51 +01:00
rule_netlink.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
rule_socket.c zebra: Create zebra_dplane.c and .h 2018-09-19 18:29:55 -04:00
subdir.am zebra: Add code to allow us to add debug for mlag 2019-01-31 09:20:46 -05:00
table_manager.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
table_manager.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01: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: Make rnh only send response once on first registration 2019-04-04 08:45:20 -04:00
zapi_msg.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_dplane.c zebra: support skip-kernel for dataplane updates 2019-03-13 11:19:51 -04:00
zebra_dplane.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_errors.c zebra: reject routes without nexthops 2019-01-14 15:58:26 -02:00
zebra_errors.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_fpm_dt.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_fpm_netlink.c zebra: Use ROUTE_ENTRY_INSTALLED as decision for route is installed 2019-01-25 20:16:15 -05:00
zebra_fpm_private.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_fpm_protobuf.c *: fix clang-6 SA warnings 2018-09-08 20:34:35 +02:00
zebra_fpm.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
zebra_l2.c zebra: Let zebra know about bond and blond slave intf types 2018-11-12 11:40:33 -05:00
zebra_l2.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_memory.c zebra: prefer DEFINE_MTYPE_STATIC for local memtypes 2019-02-11 21:46:06 +01:00
zebra_memory.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_mlag.c zebra: Add ability to send to all clients updated capability information 2019-01-31 09:28:39 -05:00
zebra_mlag.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_mpls_netlink.c zebra: convert PW updates to async dataplane 2019-01-25 10:45:57 -05:00
zebra_mpls_null.c zebra: convert PW updates to async dataplane 2019-01-25 10:45:57 -05:00
zebra_mpls_openbsd.c zebra: use const in dplane pw nhlfe accessors 2019-03-07 15:06:36 -05:00
zebra_mpls_vty.c bgpd, ospfd, pimd, zebra: Convert more use_json locations to bool 2018-09-04 17:39:04 +00:00
zebra_mpls.c *: remove null check before XFREE 2019-02-25 23:00:46 +00:00
zebra_mpls.h zebra: Modify lsp processing to be invoked as needed 2019-03-27 16:22:22 -04:00
zebra_mroute.c zebra: Add some additional vrf debug for retrieving mroute info 2018-09-17 09:22:31 -04:00
zebra_mroute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_netns_id.c zebra: dead code (Coverity 1465497) 2018-10-02 15:45:44 +02:00
zebra_netns_id.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_netns_notify.c zebra: Move the master thread handler to the zrouter structure 2019-01-31 09:20:46 -05:00
zebra_netns_notify.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_ns.c zebra: start the netns notification mechanism after ns initialisation 2019-01-09 18:31:16 +01:00
zebra_ns.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_pbr.c *: return bool from boolean functions 2019-02-25 23:00:16 +00:00
zebra_pbr.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_ptm_redistribute.c zebra: Remove zclient->idinfo restrictions 2019-02-05 09:13:30 -05:00
zebra_ptm_redistribute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_ptm.c *: remove trailing newlines from zlog messages 2019-03-14 18:41:15 +00:00
zebra_ptm.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_pw.c Merge pull request #3684 from mjstapp/dplane_pw 2019-02-05 18:41:12 -05:00
zebra_pw.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_rib.c zebra: Modify lsp processing to be invoked as needed 2019-03-27 16:22:22 -04:00
zebra_rnh.c zebra: If we copy re than the state has changed 2019-03-27 16:22:22 -04:00
zebra_rnh.h zebra: Modify NHT to occur when needed. 2019-03-27 16:22:22 -04:00
zebra_routemap.c *: remove null check before XFREE 2019-02-25 23:00:46 +00:00
zebra_routemap.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_router.c zebra: zebra_router.c does not own the data plane shutdown of tables 2019-03-27 16:19:28 -04:00
zebra_router.h Merge branch 'master' into evpn-session-vrf 2019-03-28 18:41:38 +01:00
zebra_snmp.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
zebra_vrf.c zebra: Modify NHT to occur when needed. 2019-03-27 16:22:22 -04:00
zebra_vrf.h Merge branch 'master' into evpn-session-vrf 2019-03-28 18:41:38 +01:00
zebra_vty.c Merge branch 'master' into evpn-session-vrf 2019-03-28 18:41:38 +01:00
zebra_vxlan_private.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_vxlan.c Merge pull request #3923 from Tuetuopay/evpn-session-vrf 2019-04-03 08:00:14 -04:00
zebra_vxlan.h Merge branch 'master' into evpn-session-vrf 2019-03-28 18:41:38 +01:00
zebra.conf.sample *: Remove cvs control points 2017-12-05 17:28:12 -05:00
zserv.c zebra: When shutting down actually close the socket 2019-03-27 16:19:28 -04:00
zserv.h zebra: When shutting down actually close the socket 2019-03-27 16:19:28 -04:00