core-extra/daemon/core
Gabriel Somlo 6609d2c394 daemon: streamline Quagga startup
Currently, all Quagga daemons are started concurrently by their
respective CORE services, using "quaggaboot.sh" generated by the
'zebra' service. However, all routing services depend on 'zebra'
already running, and 'vtysh' depends on ALL other Quagga services
before it can push configuration from the common "Quagga.conf" to
all running daemons (see "waitforvtyfiles()" in "quaggaboot.sh").

The spinwait+timeout based implementation of "waitforvtyfiles()"
may, depending on load, give up too early and fail to configure
all Quagga daemons.

This patch streamlines the way Quagga daemons are started, by
launching them all from the 'zebra' service. The correct sequence
is to first launch the 'zebra' daemon itself, then proceed with
all routing daemons, and finish with a call to "vtysh -b" which
configures all running daemons.

The list of all applicable daemons to launch is obtained using
'grep' from Quagga.conf, in the same way "waitforvtyfiles()" used
to discover which *.vty files to look for in /var/run/quagga/.

The startup command for all services other than 'zebra' becomes
empty, and "quaggaboot.sh" issues a warning on attempts to have
it launch any other daemon.

Signed-off-by: Gabriel Somlo <glsomlo@cert.org>
2017-01-12 16:40:45 -05:00
..
addons initial import (Boeing r1752, NRL r878) 2013-08-29 14:21:13 +00:00
api daemon: Add an instantiation-complete CORE API event type. 2016-10-12 17:36:59 +00:00
bsd daemon: Used the communicate() method to interact with subprocesses. 2016-01-29 16:56:49 -05:00
emane daemon: Sort EMANE servers so NEM ids are deterministic. 2016-10-12 17:37:40 +00:00
misc daemon: Create a CoreServer class to represent CORE servers. 2016-10-12 17:36:42 +00:00
netns daemon: Wait longer for EMANE network interfaces to exist. 2016-10-12 17:37:27 +00:00
phys daemon: Used the communicate() method to interact with subprocesses. 2016-01-29 16:56:49 -05:00
services daemon: streamline Quagga startup 2017-01-12 16:40:45 -05:00
xen initial import (Boeing r1752, NRL r878) 2013-08-29 14:21:13 +00:00
.gitignore Add some gitignore files. 2015-01-28 02:15:45 +00:00
__init__.py globally replace old NRL URL with new 2013-12-04 21:45:42 +00:00
broker.py daemon: Fix determining when to handle API messages locally. 2016-10-19 18:49:34 -04:00
conf.py daemon: added option API TLVs so that per-interface parameters are kept for EMANE models when a single node has multiple interfaces of the same EMANE model type but different model parameters 2016-04-20 08:33:58 -07:00
constants.py.in initial import (Boeing r1752, NRL r878) 2013-08-29 14:21:13 +00:00
coreobj.py daemon: changes to support optional retainment of per-interface parameters for EMANE models when multiple EMANE models of the same type are used as interfaces for a node 2016-04-20 08:36:58 -07:00
coreserver.py Moved classes CoreRequestHandler, CoreDatagramRequestHandler, CoreServer, CoreUdpServer to a separate core.coreserver module. This will allow future definition of auxiliary request handlers for providing alternative interfaces with CORE. 2016-09-14 18:06:19 -07:00
location.py initial import (Boeing r1752, NRL r878) 2013-08-29 14:21:13 +00:00
mobility.py daemon: Create a CoreServer class to represent CORE servers. 2016-10-12 17:36:42 +00:00
pycore.py initial import (Boeing r1752, NRL r878) 2013-08-29 14:21:13 +00:00
sdt.py daemon: Use a set to store broker handlers. 2016-10-12 15:55:30 +00:00
service.py daemon: Add a startup service. 2015-09-11 18:12:57 -04:00
session.py daemon: Remove tracking remote node boot status. 2016-10-12 17:37:13 +00:00