[systemd-devel] Waiting for network routes to appear

Kevin P. Fleming kevin at km6g.us
Wed Jun 15 11:31:57 UTC 2022


I've got a number of systems that use BIRD to learn the routes
available on their networks, and as a result some services on those
systems attempt to start up before the routes have been learned. If
those services attempt to make network connections (even just DNS
queries), they will fail, and that's unpleasant.

I can't use existing systemd facilities to make these services wait,
because there's no mechanism available for BIRD to indicate that any
specific route has been learned, or a way to configure a service to
wait for a specific route.

I'm considering just writing a smallish Python program which will
accept (via configuration) a list of routes, and will listen to
netlink to wait for all of those routes to appear. I'd then make my
services dependent on this service reporting success. However, since
networkd already listens to netlink, it would certainly be possible
for it to provide this facility in some way.

If you'll pardon the analogy, I'm thinking of something like
RequiresMountsFor=, which makes service startup wait until mount units
have succeeded. Of course following this analogy we'd end up creating
the concept of a 'route unit', and I'm not sure that's really the
right thing to do here.

Is it worth trying to design some way for networkd to provide this
facility? if not, I'll just continue down the road of doing this
outside of systemd proper.


More information about the systemd-devel mailing list