31f0213b6f
... and make bridge use it. We also had to convert bridge back into a pair of services. Downstreams want to depend on the bridge it self being configured even if not necessarily all the members are up. e.g. don't want to break ssh on lan if there's a misconfigured wlan device
29 lines
779 B
Nix
29 lines
779 B
Nix
{
|
|
liminix
|
|
, ifwait
|
|
, serviceFns
|
|
, lib
|
|
}:
|
|
{interface, family, address, prefixLength} :
|
|
let
|
|
inherit (liminix.services) oneshot;
|
|
# rather depending on the assumption that nobody will
|
|
# ever add two addresses which are the same but with different
|
|
# prefixes, or the same but different protocols
|
|
name = "${interface.name}.a.${address}";
|
|
up = ''
|
|
. ${serviceFns}
|
|
dev=$(output ${interface} ifname)
|
|
ip address add ${address}/${toString prefixLength} dev $dev
|
|
(in_outputs ${name}
|
|
echo ${address} > address
|
|
echo ${toString prefixLength} > prefix-length
|
|
echo ${family} > family
|
|
echo $dev > ifname
|
|
)
|
|
'';
|
|
in oneshot {
|
|
inherit name up;
|
|
down = "true"; # this has been broken for ~ ages
|
|
dependencies = [ interface ];
|
|
}
|