]> git.puffer.fish Git - matthieu/frr.git/commit
tools: fix systemd dependency graph
authorQuentin Young <qlyoung@cumulusnetworks.com>
Wed, 6 Feb 2019 19:40:55 +0000 (19:40 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Wed, 6 Feb 2019 19:47:56 +0000 (19:47 +0000)
commit9f238ccd3168b31a4bebcc454000cac2ec606715
tree275e519ab6654f118c0c5acfb827279df64c8cc6
parent09d4653198b467c45089cce2c1393aff01ed20db
tools: fix systemd dependency graph

Currently our systemd dependencies look something like this (example
from vanilla Debian 9):

$ systemctl list-dependencies frr
frr.service
● ├─system.slice
● └─sysinit.target
  ...

$ systemctl list-dependencies --reverse frr
frr.service
● └─network-online.target
●   └─apt-daily.service

Note that sysinit.target does not depend on any network* service or
target.

In other words, unless there is a service that requires
network-online.service, even if FRR is enabled it will not be started.
Therefore network-online.target is the wrong unit to have in WantedBy=,
as it is not always started.

This patch updates our service file so that it is properly started by
the system when enabled, delayed until networking is up, and if possible
delayed until after NetworkManager, systemd-networkd or any other
networking configuration manager has finished performing its tasks -
i.e. after network-online.target.

After these changes our new dependency graph looks like this:

$ systemctl list-dependencies frr
frr.service
● ├─system.slice
● │ └─networking.service
● ├─network.target
● └─sysinit.target
  ...

$ systemctl list-dependencies --reverse frr
frr.service
● └─multi-user.target
●   └─graphical.target

This way, FRR will be started by multi-user.target (just like most
applications), but delayed until after networking has been configured.

In the same stroke, this should also fix issues on systems that do not
provide "networking.service" (such as CentOS 7).

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@diac24.net>
redhat/frr.service
tools/frr.service