summary refs log tree commit diff
path: root/nixos/modules/tasks
diff options
context:
space:
mode:
authorrnhmjoj <rnhmjoj@inventati.org>2017-07-28 16:45:58 +0200
committerrnhmjoj <rnhmjoj@inventati.org>2018-02-17 14:01:23 +0100
commitf41111c4da9a7eb5cade95d945eec7576757d27d (patch)
tree4b0616ec89107b10aa06920baf73fde5428b82ce /nixos/modules/tasks
parentd00c91c5dab1428941c4ee61e341b01a26f14c90 (diff)
downloadnixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar.gz
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar.bz2
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar.lz
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar.xz
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.tar.zst
nixlib-f41111c4da9a7eb5cade95d945eec7576757d27d.zip
nixos/tests: add test for static routes
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r--nixos/modules/tasks/network-interfaces-scripted.nix5
-rw-r--r--nixos/modules/tasks/network-interfaces.nix12
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 = ''