Merge pull request #178110 from pennae/fix-networkd-gateways

nixos/networking: fix v4+v6 default gateways with networkd

pennae 9e109ffd ac186b37

Changed files
+7 -5
nixos
+4 -5
nixos/modules/tasks/network-interfaces-systemd.nix
···
genericNetwork = override:
let gateway = optional (cfg.defaultGateway != null && (cfg.defaultGateway.address or "") != "") cfg.defaultGateway.address
++ optional (cfg.defaultGateway6 != null && (cfg.defaultGateway6.address or "") != "") cfg.defaultGateway6.address;
-
in optionalAttrs (gateway != [ ]) {
-
routes = override [
-
{
+
makeGateway = gateway: {
routeConfig = {
Gateway = gateway;
GatewayOnLink = false;
};
-
}
-
];
+
};
+
in optionalAttrs (gateway != [ ]) {
+
routes = override (map makeGateway gateway);
} // optionalAttrs (domains != [ ]) {
domains = override domains;
};
+3
nixos/tests/networking.nix
···
useNetworkd = networkd;
useDHCP = false;
defaultGateway = "192.168.1.1";
+
defaultGateway6 = "fd00:1234:5678:1::1";
interfaces.eth1.ipv4.addresses = mkOverride 0 [
{ address = "192.168.1.2"; prefixLength = 24; }
{ address = "192.168.1.3"; prefixLength = 32; }
···
with subtest("Test default gateway"):
router.wait_until_succeeds("ping -c 1 192.168.3.1")
client.wait_until_succeeds("ping -c 1 192.168.3.1")
+
router.wait_until_succeeds("ping -c 1 fd00:1234:5678:3::1")
+
client.wait_until_succeeds("ping -c 1 fd00:1234:5678:3::1")
'';
};
routeType = {