[systemd-devel] Passive vs Active targets

Thomas HUMMEL thomas.hummel at pasteur.fr
Tue Feb 15 18:22:32 UTC 2022



On 15/02/2022 18:13, Lennart Poettering wrote:
> On Di, 15.02.22 17:30, Thomas HUMMEL (thomas.hummel at pasteur.fr) wrote:
> 

> A passive unit is a sync point that should be pulled in by the service
> that actually needs it to operate correctly. hence: ask the question whether
> networkd/NetworkManager will operate only correctly if nftables
> finished start-up before it? I think that answer is a clear "no". But
> the opposite holds, i.e. nftables only operates as a safe firewall if
> it is run *before* networkd/NM start up. Thus it should be nftables
> that pulls network-pre.target in, not networkd/NM, because it matters
> to nftables, and it doesn't to networkd/NM.
> 
>> Or maybe it is the other way around : by pulling it *and* knowing that
>> network interface is configured After= nftable.service is guaranteed to set
>> up its firewall before any interface gets configured.
> 
> So yeah, passive units are mostly about synchronization, i.e. if they
> are pulled in they should have units on both sides, otherwise they
> make no sense.

Exactly: that's what I meant with my nftables/NetworkManger above: not 
that I thought it made sense for NetworkManager to pull 
network-pre.target in. I meant it made no sense for nftable alone to 
order Before= something it "created".
Hence I kinda wrongfully saw a passive target as a syncpoint for other 
units than those which pull them in. But you're right: one side of the 
synchonization is actually the unit pulling in the passive target ! I 
just took that for granted/forgot it.

I kinda thought/implied it was more or less required (or the way to do 
it) to order Before= a passive target we were pulling in.

So, although I did not see the case : would it be legit to pull a 
passive target and order After= it (I only saw Before= for the one I 
checked I think) ?

Thanks again for your help

--
Thomas HUMMEL


More information about the systemd-devel mailing list