t #2

Closed
lbailly wants to merge 57 commits from CI into main
3 changed files with 15 additions and 3 deletions
Showing only changes of commit 21ff11503e - Show all commits

View file

@ -28,6 +28,12 @@ in
type = types.str; type = types.str;
description = "bridge interface name to create"; description = "bridge interface name to create";
}; };
macAddressFromInterface = mkOption {
type = types.nullOr liminix.lib.types.service;
default = null;
description = "reuse mac address from an existing interface service";
};
}; };
members = config.system.callService ./members.nix { members = config.system.callService ./members.nix {
primary = mkOption { primary = mkOption {

View file

@ -3,15 +3,20 @@
, ifwait , ifwait
, lib , lib
}: }:
{ ifname } : { ifname, macAddressFromInterface ? null } :
let let
inherit (liminix.services) bundle oneshot; inherit (liminix.services) bundle oneshot;
inherit (lib) mkOption types; inherit (lib) mkOption types optional;
in oneshot rec { in oneshot rec {
name = "${ifname}.link"; name = "${ifname}.link";
up = '' up = ''
ip link add name ${ifname} type bridge ${if macAddressFromInterface == null then
"ip link add name ${ifname} type bridge"
else
"ip link add name ${ifname} address $(output ${macAddressFromInterface} ether) type bridge"}
${liminix.networking.ifup name ifname} ${liminix.networking.ifup name ifname}
''; '';
down = "ip link set down dev ${ifname}"; down = "ip link set down dev ${ifname}";
dependencies = optional (macAddressFromInterface != null) macAddressFromInterface;
} }

View file

@ -9,6 +9,7 @@
ip link set up dev ${ifname} ip link set up dev ${ifname}
(in_outputs ${name} (in_outputs ${name}
echo ${ifname} > ifname echo ${ifname} > ifname
cat /sys/class/net/${ifname}/address > ether
) )
''; '';
} }