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

nixos/networking: fix v4+v6 default gateways with networkd
This commit is contained in:
pennae 2022-06-20 14:17:41 +00:00 committed by GitHub
commit 9e109ffdb5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 5 deletions

View file

@ -59,15 +59,14 @@ in
genericNetwork = override: genericNetwork = override:
let gateway = optional (cfg.defaultGateway != null && (cfg.defaultGateway.address or "") != "") cfg.defaultGateway.address let gateway = optional (cfg.defaultGateway != null && (cfg.defaultGateway.address or "") != "") cfg.defaultGateway.address
++ optional (cfg.defaultGateway6 != null && (cfg.defaultGateway6.address or "") != "") cfg.defaultGateway6.address; ++ optional (cfg.defaultGateway6 != null && (cfg.defaultGateway6.address or "") != "") cfg.defaultGateway6.address;
in optionalAttrs (gateway != [ ]) { makeGateway = gateway: {
routes = override [
{
routeConfig = { routeConfig = {
Gateway = gateway; Gateway = gateway;
GatewayOnLink = false; GatewayOnLink = false;
}; };
} };
]; in optionalAttrs (gateway != [ ]) {
routes = override (map makeGateway gateway);
} // optionalAttrs (domains != [ ]) { } // optionalAttrs (domains != [ ]) {
domains = override domains; domains = override domains;
}; };

View file

@ -98,6 +98,7 @@ let
useNetworkd = networkd; useNetworkd = networkd;
useDHCP = false; useDHCP = false;
defaultGateway = "192.168.1.1"; defaultGateway = "192.168.1.1";
defaultGateway6 = "fd00:1234:5678:1::1";
interfaces.eth1.ipv4.addresses = mkOverride 0 [ interfaces.eth1.ipv4.addresses = mkOverride 0 [
{ address = "192.168.1.2"; prefixLength = 24; } { address = "192.168.1.2"; prefixLength = 24; }
{ address = "192.168.1.3"; prefixLength = 32; } { address = "192.168.1.3"; prefixLength = 32; }
@ -139,6 +140,8 @@ let
with subtest("Test default gateway"): with subtest("Test default gateway"):
router.wait_until_succeeds("ping -c 1 192.168.3.1") router.wait_until_succeeds("ping -c 1 192.168.3.1")
client.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 = { routeType = {