diff options
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r-- | nixos/modules/tasks/network-interfaces-scripted.nix | 5 | ||||
-rw-r--r-- | nixos/modules/tasks/network-interfaces.nix | 12 |
2 files changed, 9 insertions, 8 deletions
diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index 9dba6d1bd0a2..28bbc27a2693 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -210,12 +210,13 @@ let ${flip concatMapStrings (i.ipv4Routes ++ i.ipv6Routes) (route: let cidr = "${route.address}/${toString route.prefixLength}"; - nextHop = optionalString (route.nextHop != null) ''via "${route.nextHop}"''; + via = optionalString (route.via != null) ''via "${route.via}"''; + options = concatStrings (mapAttrsToList (name: val: "${name} ${val} ") route.options); in '' echo "${cidr}" >> $state echo -n "adding route ${cidr}... " - if out=$(ip route add "${cidr}" ${route.options} ${nextHop} dev "${i.name}" 2>&1); then + if out=$(ip route add "${cidr}" ${options} ${via} dev "${i.name}" 2>&1); then echo "done" elif ! echo "$out" | grep "File exists" >/dev/null 2>&1; then echo "failed" diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix index d437a829be5f..6f8ee147649d 100644 --- a/nixos/modules/tasks/network-interfaces.nix +++ b/nixos/modules/tasks/network-interfaces.nix @@ -131,16 +131,16 @@ let ''; }; - nextHop = mkOption { + via = mkOption { type = types.nullOr types.str; default = null; description = "IPv${toString v} address of the next hop."; }; options = mkOption { - type = types.str; - default = ""; - example = "mtu 1492 window 524288"; + type = types.attrsOf types.str; + default = { }; + example = { mtu = "1492"; window = "524288"; }; description = '' Other route options. See the symbol <literal>OPTION</literal> in the <literal>ip-route(8)</literal> manual page for the details. @@ -237,7 +237,7 @@ let default = []; example = [ { address = "10.0.0.0"; prefixLength = 16; } - { address = "192.168.2.0"; prefixLength = 24; nextHop = "192.168.1.1"; } + { address = "192.168.2.0"; prefixLength = 24; via = "192.168.1.1"; } ]; type = with types; listOf (submodule (routeOpts 4)); description = '' @@ -249,7 +249,7 @@ let default = []; example = [ { address = "fdfd:b3f0::"; prefixLength = 48; } - { address = "2001:1470:fffd:2098::"; prefixLength = 64; nextHop = "fdfd:b3f0::1"; } + { address = "2001:1470:fffd:2098::"; prefixLength = 64; via = "fdfd:b3f0::1"; } ]; type = with types; listOf (submodule (routeOpts 6)); description = '' |