diff options
author | Andreas Rammhold <andreas@rammhold.de> | 2019-05-11 00:28:24 +0200 |
---|---|---|
committer | Andreas Rammhold <andreas@rammhold.de> | 2019-06-03 15:05:16 +0200 |
commit | d600da70457a8ca8d9543eb48b73e7c5eae1656f (patch) | |
tree | e7ffd6019cce923cb978d28135ac02a8d1018750 /nixos/modules/tasks/network-interfaces-systemd.nix | |
parent | a32cd7d84a7c832574ef0f09862e41bf84709baf (diff) | |
download | nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar.gz nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar.bz2 nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar.lz nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar.xz nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.tar.zst nixpkgs-d600da70457a8ca8d9543eb48b73e7c5eae1656f.zip |
nixos/networkd: use the route section for default routes
With systemd v242 using the `Gateway` attribute of the `[Network]` section will lead to "onlink" routes on all the device that are matched by the default configuration (typically all devices) causing multiple default routes (even on localhost). We can only avoid that - while keeping our default route option - when we mark the route as explicitly not on link. Only gateways that are within a subnet of one of the assigned interface addresses will be installed into the routing table.
Diffstat (limited to 'nixos/modules/tasks/network-interfaces-systemd.nix')
-rw-r--r-- | nixos/modules/tasks/network-interfaces-systemd.nix | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index dd9ba9eec42..b9c1387cea5 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -59,7 +59,14 @@ in in { DHCP = override (dhcpStr cfg.useDHCP); } // optionalAttrs (gateway != [ ]) { - gateway = override gateway; + routes = override [ + { + routeConfig = { + Gateway = gateway; + GatewayOnlink = false; + }; + } + ]; } // optionalAttrs (domains != [ ]) { domains = override domains; }; |