chiark / gitweb /
networkd: bond - explicitly map to kernel mode values
authorTom Gundersen <teg@jklm.no>
Mon, 14 Jul 2014 10:13:45 +0000 (12:13 +0200)
committerTom Gundersen <teg@jklm.no>
Mon, 14 Jul 2014 10:13:45 +0000 (12:13 +0200)
src/network/networkd-bond.c

index 4437ee437246d381cb46f8fccc9ad2e64a98b276..1e156775ee088fd6598d07cbd855ee297f920476 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <netinet/ether.h>
 #include <arpa/inet.h>
-#include <net/if.h>
+#include <linux/if_bonding.h>
 
 #include "conf-parser.h"
 #include "sd-rtnl.h"
@@ -42,6 +42,27 @@ static const char* const bond_mode_table[_NETDEV_BOND_MODE_MAX] = {
 DEFINE_STRING_TABLE_LOOKUP(bond_mode, BondMode);
 DEFINE_CONFIG_PARSE_ENUM(config_parse_bond_mode, bond_mode, BondMode, "Failed to parse bond mode");
 
+static uint8_t bond_mode_to_kernel(BondMode mode) {
+        switch (mode) {
+        case NETDEV_BOND_MODE_BALANCE_RR:
+                return BOND_MODE_ROUNDROBIN;
+        case NETDEV_BOND_MODE_ACTIVE_BACKUP:
+                return BOND_MODE_ACTIVEBACKUP;
+        case NETDEV_BOND_MODE_BALANCE_XOR:
+                return BOND_MODE_XOR;
+        case NETDEV_BOND_MODE_BROADCAST:
+                return BOND_MODE_BROADCAST;
+        case NETDEV_BOND_MODE_802_3AD:
+                return BOND_MODE_8023AD;
+        case NETDEV_BOND_MODE_BALANCE_TLB:
+                return BOND_MODE_TLB;
+        case NETDEV_BOND_MODE_BALANCE_ALB:
+                return BOND_MODE_ALB;
+        default:
+                return (uint8_t) -1;
+        }
+}
+
 static int netdev_fill_bond_rtnl_message(NetDev *netdev, sd_rtnl_message *m) {
         int r;
 
@@ -73,7 +94,8 @@ static int netdev_fill_bond_rtnl_message(NetDev *netdev, sd_rtnl_message *m) {
         }
 
         if (netdev->bond_mode != _NETDEV_BOND_MODE_INVALID) {
-                r = sd_rtnl_message_append_u8(m, IFLA_BOND_MODE, netdev->bond_mode);
+                r = sd_rtnl_message_append_u8(m, IFLA_BOND_MODE,
+                                              bond_mode_to_kernel(netdev->bond_mode));
                 if (r < 0) {
                         log_error_netdev(netdev,
                                          "Could not append IFLA_BOND_MODE attribute: %s",