mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-11-10 01:33:11 +01:00
135 lines
3.7 KiB
Nix
135 lines
3.7 KiB
Nix
{ lib, ... }:
|
|
{
|
|
name = "systemd-networkd-batadv";
|
|
|
|
meta = with lib.maintainers; {
|
|
maintainers = [ herbetom ];
|
|
};
|
|
|
|
nodes = {
|
|
machineA =
|
|
{ config, pkgs, ... }:
|
|
{
|
|
virtualisation.vlans = [ 1 ];
|
|
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
|
|
|
|
networking = {
|
|
useNetworkd = true;
|
|
useDHCP = false;
|
|
firewall.enable = false;
|
|
};
|
|
|
|
# Use default batman_adv module from kernel
|
|
boot.extraModulePackages = [ ];
|
|
|
|
environment.systemPackages = [
|
|
pkgs.batctl
|
|
pkgs.jq
|
|
];
|
|
|
|
systemd.network = {
|
|
networks."10-eth1" = {
|
|
matchConfig.Name = "eth1";
|
|
networkConfig = {
|
|
BatmanAdvanced = config.systemd.network.netdevs."20-bat0".netdevConfig.Name;
|
|
IPv6AcceptRA = false;
|
|
};
|
|
};
|
|
netdevs."20-bat0" = {
|
|
netdevConfig = {
|
|
Name = "bat0";
|
|
Kind = "batadv";
|
|
MACAddress = "00:00:5e:00:53:00";
|
|
};
|
|
batmanAdvancedConfig = {
|
|
OriginatorIntervalSec = "5";
|
|
RoutingAlgorithm = "batman-iv";
|
|
};
|
|
};
|
|
networks."20-bat0" = {
|
|
matchConfig.Name = config.systemd.network.netdevs."20-bat0".netdevConfig.Name;
|
|
networkConfig.IPv6AcceptRA = false;
|
|
address = [
|
|
"10.0.0.1/24"
|
|
"2001:db8::a/64"
|
|
];
|
|
|
|
};
|
|
};
|
|
};
|
|
machineB =
|
|
{ config, pkgs, ... }:
|
|
{
|
|
virtualisation.vlans = [ 1 ];
|
|
systemd.services.systemd-networkd.environment.SYSTEMD_LOG_LEVEL = "debug";
|
|
|
|
networking = {
|
|
useNetworkd = true;
|
|
useDHCP = false;
|
|
firewall.enable = false;
|
|
};
|
|
|
|
# Use batman_adv module from nixpkgs
|
|
boot.extraModulePackages = [ config.boot.kernelPackages.batman_adv ];
|
|
|
|
environment.systemPackages = [
|
|
pkgs.batctl
|
|
pkgs.jq
|
|
];
|
|
|
|
systemd.network = {
|
|
networks."10-eth1" = {
|
|
matchConfig.Name = "eth1";
|
|
networkConfig = {
|
|
BatmanAdvanced = config.systemd.network.netdevs."20-bat0".netdevConfig.Name;
|
|
IPv6AcceptRA = false;
|
|
};
|
|
};
|
|
netdevs."20-bat0" = {
|
|
netdevConfig = {
|
|
Name = "bat0";
|
|
Kind = "batadv";
|
|
MACAddress = "00:00:5e:00:53:10";
|
|
};
|
|
batmanAdvancedConfig = {
|
|
OriginatorIntervalSec = "5";
|
|
RoutingAlgorithm = "batman-iv";
|
|
};
|
|
};
|
|
networks."20-bat0" = {
|
|
matchConfig.Name = config.systemd.network.netdevs."20-bat0".netdevConfig.Name;
|
|
networkConfig.IPv6AcceptRA = false;
|
|
address = [
|
|
"10.0.0.2/24"
|
|
"2001:db8::b/64"
|
|
];
|
|
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
start_all()
|
|
|
|
machineA.wait_for_unit("default.target")
|
|
machineB.wait_for_unit("default.target")
|
|
|
|
print(machineA.succeed("batctl -v").strip())
|
|
print(machineB.succeed("batctl -v").strip())
|
|
|
|
machineA.wait_until_succeeds('batctl neighbors_json | jq -e ".[0].neigh_address | select(length > 0)"')
|
|
|
|
print(machineA.succeed("batctl n").strip())
|
|
print(machineB.succeed("batctl n").strip())
|
|
|
|
print(machineA.wait_until_succeeds("batctl ping -c 5 00:00:5e:00:53:10").strip())
|
|
print(machineB.wait_until_succeeds("batctl ping -c 5 00:00:5e:00:53:00").strip())
|
|
|
|
print(machineA.wait_until_succeeds("ping -c 5 2001:db8::b"))
|
|
print(machineB.wait_until_succeeds("ping -c 5 10.0.0.1"))
|
|
|
|
machineA.fail("ping -c 3 10.0.0.99")
|
|
'';
|
|
}
|