summaryrefslogtreecommitdiffstats
path: root/nixos
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
parent9e5825ba8ec2c515a2b54b6f1e81362bef3d3833 (diff)
network-interface: Add extra bond options
Diffstat (limited to 'nixos')
-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