[Nix-dev] [systemd] ip-up target params
Rickard Nilsson
rickard.nilsson at telia.com
Thu Sep 13 15:11:17 CEST 2012
Den 2012-09-13 09:01:43 skrev Mathijs Kwik <mathijs at bluescreen303.nl>:
> Eelco Dolstra <eelco.dolstra at logicblox.com> writes:
>
>> Hi,
>>
>> On 12/09/12 11:12, Mathijs Kwik wrote:
>>
>>> Currently (with upstart), network interfaces tigger ip-up once dhcpcd
>>> assigns them an ip-address.
>>> Upstart triggers had an option to supply extra params, and dhcpcd's
>>> hook used this to supply information on which interface got connected,
>>> and - if on wireless - to which AP a connection was made.
>>>
>>> I have a somewhat complicated networking setup, so I use these
>>> features a lot.
>>> Depending on which wifi AP (trusted/untrusted), I enable different
>>> firewall rules, openvpn tunnels and routes.
>>>
>>> Now, I think I should just define systemd targets for these
>>> environments (trusted/untrusted/home) and add the services I want to
>>> these.
>>> However, I need a way to tell upstart which of these targets to
>>> (de)activate.
>>> Currently, "ip-up" is hardcoded in dhcpcd's hook, "ip-down" is
>>> disabled (used to trigger when disconnecting wifi), and if multiple
>>> interfaces come up, nothing will happen if the ip-up target was
>>> already reached.
>>
>> Systemd units have a template instantiation mechanism which might be
>> useful
>> here. We can have units "if-up at .target" and "if-down at .target" that get
>> instantiated when a specific interface goes up or down. So if wlan0
>> appears, we
>> can instantiate "if-up at wlan0.target", which in turn can pull in other
>> dependencies.
>
> I'm using instantiation for my openvpn configs. It's very nice.
> Indeed targets per interface is a nice start, but for mobile systems
> such as laptops, the network I connect to matters more than the
> interface.
>
> As I think this kind of behaviour is useful to most laptop users, I
> would like to create a nixos module for defining "networks".
> A network then maps to a systemd target, and there are some options for
> detecting the current network, like the assigned IP address range, wifi
> BSSID, visible ip or mac addresses, DHCP server options. Stuff like that.
>
> But indeed, the output of the network-detection module would just be a
> shell script that performs the detection and then starts the associated
> target. So it's trivial to have that trigger either on the current ip-up
> or the future if-up at iface targets.
>
> I'll see what I can come up with.
+1
This sounds very promising. I would like to trigger my laptop backup jobs
based on network availability... (and point in time)
/ Rickard
More information about the nix-dev
mailing list