summary refs log tree commit diff
path: root/nixos/modules/tasks
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2014-10-04 17:57:51 -0700
committerWilliam A. Kennington III <william@wkennington.com>2014-10-04 17:59:10 -0700
commit93eb325004e8db6d6307067c8db921ddfad4727b (patch)
tree7fdb7e08d915b6b4247ffd65f0c20b9cb0ab3426 /nixos/modules/tasks
parent9e5825ba8ec2c515a2b54b6f1e81362bef3d3833 (diff)
downloadnixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar.gz
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar.bz2
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar.lz
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar.xz
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.tar.zst
nixlib-93eb325004e8db6d6307067c8db921ddfad4727b.zip
network-interface: Add extra bond options
Diffstat (limited to 'nixos/modules/tasks')
-rw-r--r--nixos/modules/tasks/network-interfaces.nix28
1 files changed, 26 insertions, 2 deletions
diff --git a/nixos/modules/tasks/network-interfaces.nix b/nixos/modules/tasks/network-interfaces.nix
index a2423a2bd304..4ed8d79bd652 100644
--- a/nixos/modules/tasks/network-interfaces.nix
+++ b/nixos/modules/tasks/network-interfaces.nix
@@ -345,10 +345,20 @@ in
 
         interfaces = mkOption {
           example = [ "enp4s0f0" "enp4s0f1" "wlan0" ];
-          type = types.listOf types.string;
+          type = types.listOf types.str;
           description = "The interfaces to bond together";
         };
 
+        lacp_rate = mkOption {
+          default = null;
+          example = "fast";
+          type = types.nullOr types.str;
+          description = ''
+            Option specifying the rate in which we'll ask our link partner
+            to transmit LACPDU packets in 802.3ad mode.
+          '';
+        };
+
         miimon = mkOption {
           default = null;
           example = 100;
@@ -364,7 +374,7 @@ in
         mode = mkOption {
           default = null;
           example = "active-backup";
-          type = types.nullOr types.string;
+          type = types.nullOr types.str;
           description = ''
             The mode which the bond will be running. The default mode for
             the bonding driver is balance-rr, optimizing for throughput.
@@ -373,6 +383,16 @@ in
           '';
         };
 
+        xmit_hash_policy = mkOption {
+          default = null;
+          example = "layer2+3";
+          type = types.nullOr types.str;
+          description = ''
+            Selects the transmit hash policy to use for slave selection in
+            balance-xor, 802.3ad, and tlb modes.
+          '';
+        };
+
       };
     };
 
@@ -766,10 +786,14 @@ in
               while [ ! -d /sys/class/net/${n} ]; do sleep 0.1; done;
 
               # Set the miimon and mode options
+              ${optionalString (v.lacp_rate != null)
+                "echo \"${v.lacp_rate}\" > /sys/class/net/${n}/bonding/lacp_rate"}
               ${optionalString (v.miimon != null)
                 "echo ${toString v.miimon} > /sys/class/net/${n}/bonding/miimon"}
               ${optionalString (v.mode != null)
                 "echo \"${v.mode}\" > /sys/class/net/${n}/bonding/mode"}
+              ${optionalString (v.xmit_hash_policy != null)
+                "echo \"${v.xmit_hash_policy}\" > /sys/class/net/${n}/bonding/xmit_hash_policy"}
 
               # Bring up the bridge and enslave the specified interfaces
               ip link set "${n}" up