Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

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

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

authored by

pennae and committed by
GitHub
9e109ffd ac186b37

+7 -5
+4 -5
nixos/modules/tasks/network-interfaces-systemd.nix
··· 59 59 genericNetwork = override: 60 60 let gateway = optional (cfg.defaultGateway != null && (cfg.defaultGateway.address or "") != "") cfg.defaultGateway.address 61 61 ++ optional (cfg.defaultGateway6 != null && (cfg.defaultGateway6.address or "") != "") cfg.defaultGateway6.address; 62 - in optionalAttrs (gateway != [ ]) { 63 - routes = override [ 64 - { 62 + makeGateway = gateway: { 65 63 routeConfig = { 66 64 Gateway = gateway; 67 65 GatewayOnLink = false; 68 66 }; 69 - } 70 - ]; 67 + }; 68 + in optionalAttrs (gateway != [ ]) { 69 + routes = override (map makeGateway gateway); 71 70 } // optionalAttrs (domains != [ ]) { 72 71 domains = override domains; 73 72 };
+3
nixos/tests/networking.nix
··· 98 98 useNetworkd = networkd; 99 99 useDHCP = false; 100 100 defaultGateway = "192.168.1.1"; 101 + defaultGateway6 = "fd00:1234:5678:1::1"; 101 102 interfaces.eth1.ipv4.addresses = mkOverride 0 [ 102 103 { address = "192.168.1.2"; prefixLength = 24; } 103 104 { address = "192.168.1.3"; prefixLength = 32; } ··· 139 140 with subtest("Test default gateway"): 140 141 router.wait_until_succeeds("ping -c 1 192.168.3.1") 141 142 client.wait_until_succeeds("ping -c 1 192.168.3.1") 143 + router.wait_until_succeeds("ping -c 1 fd00:1234:5678:3::1") 144 + client.wait_until_succeeds("ping -c 1 fd00:1234:5678:3::1") 142 145 ''; 143 146 }; 144 147 routeType = {