mirror_frr/zebra
Donald Sharp 6c12c8ab76 zebra: Fix Startup with > 1k interfaces
Zebra in rt_netlink.c has a while (1) loop that handles
recvmsg from the netlink socket.  In early bootup a
situation can occur whereby the netlink messages
take a long time to parse.  This time starts to
take an exponential amount of time the more netlink
messages that you read in.  There reaches
a point where the incoming netlink messages are
coming in at about the same rate that they are processed.
This ends up causing the while (1) loop to never exit.
Eventually this causes quagga to fail when the watchdog message
is never sent to systemd.

This patch attempts to address this deficiency in that
we allow for a pause from reading in netlink messages
to allow other work to be done.  This pause drains
the work queue items created by the netlink received
data and allows zebra to respond to other system input.

I believe we will need to come back in and modify zebra
startup a bit more.  There are ineffiencies that need
to be addressed as part of boot up.

Ticket: CM-9992
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Wilson Kok <wkok@cumulusnetworks.com>
2016-03-31 08:20:53 -04:00
..
.gitignore [administrivia] Update gitignore files 2008-08-22 20:02:08 +01:00
client_main.c quagga: remove babel 2016-02-11 08:55:24 -08:00
connected.c Zebra: Restrict automatic RA enable to relevant interfaces 2016-02-18 18:47:32 -08:00
connected.h Zebra: Remove reliance on NEXTHOP_TYPE_IPV4_ONLINK 2015-11-16 12:48:07 -08:00
debug.c Zebra: Cleanup RIB debugs 2015-11-20 08:48:32 -08:00
debug.h Zebra: Cleanup RIB debugs 2015-11-20 08:48:32 -08: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 lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_ioctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_netlink.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
if_proc.c zebra: zebra-warnings.patch 2015-05-19 18:04:26 -07:00
if_sysctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
interface.c zebra: add or delete router-id when interface moves vrfs 2016-03-25 11:51:35 +00:00
interface.h Quagga: Implement VRF change semantics for an interface 2016-02-25 19:30:53 +00:00
ioctl_null.c testzebra: pragma weak: detect systems with weak alias and provide alternative 2013-01-11 21:50:06 +01:00
ioctl_solaris.c Fixed ioctl_solaris.c:if_get_mtu() for IPv6'less operation 2007-08-21 16:12:40 +00:00
ioctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
ioctl.h [zebra/solaris] Interface state fixups for Solaris. 2006-01-25 04:31:40 +00:00
ipforward_aix.c Initial revision 2002-12-13 20:15:29 +00:00
ipforward_ews.c Initial revision 2002-12-13 20:15:29 +00:00
ipforward_proc.c zebra: fix warnings in forward proc 2011-12-07 01:24:09 +04:00
ipforward_solaris.c 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
ipforward_sysctl.c 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
ipforward.h 2005-06-28 Paul Jakma <paul.jakma@sun.com> 2005-06-28 17:17:12 +00:00
irdp_interface.c zebra: zebra-warnings.patch 2015-05-19 18:04:26 -07:00
irdp_main.c zebra: deal with irdp compile warnings 2009-12-10 14:22:44 +03:00
irdp_packet.c *: nuke ^L (page feed) 2014-06-04 06:58:02 +02:00
irdp.h zebra: deal with irdp compile warnings 2009-12-10 14:22:44 +03:00
kernel_netlink.c Initial revision 2002-12-13 20:15:29 +00:00
kernel_null.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
kernel_socket.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
kernel_socket.h [lib] mes_lookup string lookup table argument should be marked const 2008-08-22 19:52:58 +01:00
main.c zebra: Some small modifications to actually delete the vrf 2016-03-23 05:30:08 -07:00
Makefile.am Makfile issues to compile better 2016-03-18 09:35:58 -04:00
misc_null.c zebra: zebra-warnings.patch 2015-05-19 18:04:26 -07:00
mtu_kvm.c 2004-05-09 Paul Jakma <paul@dishone.st> 2004-05-09 11:00:23 +00:00
redistribute_null.c zebra: Replace vrf with zebra_vrf in a few places 2016-03-23 05:29:15 -07:00
redistribute.c zebra: Replace vrf with zebra_vrf in a few places 2016-03-23 05:29:15 -07:00
redistribute.h zebra: Replace vrf with zebra_vrf in a few places 2016-03-23 05:29:15 -07:00
rib.h Zebra: Perform NHT evaluation for VRFs 2016-02-23 03:42:19 +00:00
router-id.c zebra: Use vrf name instead of vrf-id for router-id definition 2016-03-29 19:43:57 +00:00
router-id.h zebra: maintain the router-id per VRF 2015-10-30 00:19:15 -07:00
rt_ioctl.c zebra, bgp: Remove some missed values 2015-12-09 04:26:02 -08:00
rt_netlink.c zebra: Fix Startup with > 1k interfaces 2016-03-31 08:20:53 -04:00
rt_netlink.h lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rt_socket.c ZEBRA: Remove NEXTHOP_TYPE_XXX_IFNAME 2015-12-04 10:44:37 -08:00
rt.h Zebra: Implement route replace for IPv6 2015-11-19 12:22:55 -08:00
rtadv_null.c Enable IPv6 ND RA for interfaces that have an IPv6 address 2015-12-07 13:05:34 -08:00
rtadv.c Zebra: Restrict IPv6 RA to valid interfaces 2016-03-22 16:52:35 +00:00
rtadv.h Zebra: Restrict IPv6 RA to valid interfaces 2016-03-22 16:52:35 +00:00
rtread_getmsg.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rtread_netlink.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
rtread_proc.c Multi-Instance OSPF Summary 2015-05-19 18:03:42 -07:00
rtread_sysctl.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
test_main.c lib, zebra: The Bulk of the conversion over to NS and VRF 2016-02-01 10:55:42 -08:00
testrib.conf zebra: Add an example config file for testzebra 2009-08-28 14:51:37 +01:00
zebra_fpm_netlink.c ZEBRA: Remove NEXTHOP_TYPE_XXX_IFNAME 2015-12-04 10:44:37 -08:00
zebra_fpm_private.h zebra: add module to communicate routes to FPM 2012-11-30 21:41:17 +01:00
zebra_fpm.c Quagga: Fixup some compile warnings 2015-11-23 13:31:11 -08:00
zebra_fpm.h zebra: add module to communicate routes to FPM 2012-11-30 21:41:17 +01:00
zebra_ptm_null.c Zebra and bgpd: VRF support for BFD 2016-03-08 05:10:56 -08:00
zebra_ptm_redistribute.c Zebra and bgpd: VRF support for BFD 2016-03-08 05:10:56 -08:00
zebra_ptm_redistribute.h Zebra and bgpd: VRF support for BFD 2016-03-08 05:10:56 -08:00
zebra_ptm.c bgpd, lib, zebra: Add ability to retrieve ifp without specifying a vrf 2016-03-23 12:38:30 -07:00
zebra_ptm.h Support for multi-client and client reg msg 2016-03-08 23:31:32 -08:00
zebra_rib.c Zebra: Fix handling of larger table-ids 2016-03-24 22:38:40 -07:00
zebra_rnh_null.c Zebra: Fix static NHT to work properly in a VRF 2016-02-26 19:13:34 +00:00
zebra_rnh.c Zebra: Fix static NHT to work properly in a VRF 2016-02-26 19:51:34 +00:00
zebra_rnh.h Zebra: Fix static NHT to work properly in a VRF 2016-02-26 19:51:34 +00:00
zebra_routemap.c Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster 2015-12-08 17:01:20 -08:00
zebra_routemap.h Create override for quagga reinstall of originated routes 2015-08-26 05:21:40 -07:00
zebra_snmp.c ZEBRA: Remove NEXTHOP_TYPE_XXX_IFNAME 2015-12-04 10:44:37 -08:00
zebra_vty.c Zebra: Fix IPv6 static route config in a VRF 2016-03-29 17:41:59 -07:00
zebra.conf.sample Initial revision 2002-12-13 20:15:29 +00:00
zserv.c zebra: Replace vrf with zebra_vrf in a few places 2016-03-23 05:29:15 -07:00
zserv.h zebra: Replace vrf with zebra_vrf in a few places 2016-03-23 05:29:15 -07:00