[systemd-devel] Waiting for network routes to appear

Barry barry at barrys-emacs.org
Wed Jun 15 21:03:29 UTC 2022



> On 15 Jun 2022, at 12:32, Kevin P. Fleming <kevin at km6g.us> wrote:
> 
> 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.

To be robust why not make the services recover from network issues?
Then you do not need to care about the routes.
Of course you will need to know if services have outages.

Even if a route was working at some point what do you do if the route
goes down later?

Barry

> 
> 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