From: Tom Gundersen Date: Mon, 14 Jul 2014 10:13:45 +0000 (+0200) Subject: networkd: bond - explicitly map to kernel mode values X-Git-Tag: v216~636 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=b621239e29ac5483fb3f340d4e46fbb4b081fee7 networkd: bond - explicitly map to kernel mode values --- diff --git a/src/network/networkd-bond.c b/src/network/networkd-bond.c index 4437ee437..1e156775e 100644 --- a/src/network/networkd-bond.c +++ b/src/network/networkd-bond.c @@ -22,7 +22,7 @@ #include #include -#include +#include #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",