mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-04-04 10:50:38 +02:00
libnm: unify implementations for bond-mode to/from string conversions
This commit is contained in:
parent
1dce227a59
commit
4dce22de78
3 changed files with 56 additions and 35 deletions
|
|
@ -36,18 +36,19 @@ _nm_setting_bond_remove_options_arp_interval(NMSettingBond *s_bond)
|
|||
nm_setting_bond_remove_option(s_bond, NM_SETTING_BOND_OPTION_ARP_IP_TARGET);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_mode_from_string,
|
||||
NMBondMode,
|
||||
{ g_return_val_if_fail(name, NM_BOND_MODE_UNKNOWN); },
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_MODE_NUM <= 9);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_MODE_NUM && name[0] >= '0' && name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_MODE_UNKNOWN; },
|
||||
{"0", NM_BOND_MODE_ROUNDROBIN},
|
||||
{"1", NM_BOND_MODE_ACTIVEBACKUP},
|
||||
{"2", NM_BOND_MODE_XOR},
|
||||
{"3", NM_BOND_MODE_BROADCAST},
|
||||
{"4", NM_BOND_MODE_8023AD},
|
||||
{"5", NM_BOND_MODE_TLB},
|
||||
{"6", NM_BOND_MODE_ALB},
|
||||
{"802.3ad", NM_BOND_MODE_8023AD},
|
||||
{"active-backup", NM_BOND_MODE_ACTIVEBACKUP},
|
||||
{"balance-alb", NM_BOND_MODE_ALB},
|
||||
|
|
@ -56,6 +57,47 @@ NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
|||
{"balance-xor", NM_BOND_MODE_XOR},
|
||||
{"broadcast", NM_BOND_MODE_BROADCAST}, );
|
||||
|
||||
const char *
|
||||
_nm_setting_bond_mode_to_string(int mode)
|
||||
{
|
||||
static const char *const modes[] = {
|
||||
[NM_BOND_MODE_8023AD] = "802.3ad",
|
||||
[NM_BOND_MODE_ACTIVEBACKUP] = "active-backup",
|
||||
[NM_BOND_MODE_ALB] = "balance-alb",
|
||||
[NM_BOND_MODE_BROADCAST] = "broadcast",
|
||||
[NM_BOND_MODE_ROUNDROBIN] = "balance-rr",
|
||||
[NM_BOND_MODE_TLB] = "balance-tlb",
|
||||
[NM_BOND_MODE_XOR] = "balance-xor",
|
||||
};
|
||||
|
||||
G_STATIC_ASSERT(G_N_ELEMENTS(modes) == _NM_BOND_MODE_NUM);
|
||||
|
||||
if (NM_MORE_ASSERT_ONCE(5)) {
|
||||
char sbuf[100];
|
||||
int i;
|
||||
NMBondMode m;
|
||||
|
||||
for (i = 0; i < (int) G_N_ELEMENTS(modes); i++) {
|
||||
nm_assert(modes[i]);
|
||||
nm_assert(i == _nm_setting_bond_mode_from_string(modes[i]));
|
||||
nm_assert(i == _nm_setting_bond_mode_from_string(nm_sprintf_buf(sbuf, "%d", i)));
|
||||
}
|
||||
nm_assert(NM_BOND_MODE_UNKNOWN == _nm_setting_bond_mode_from_string(NULL));
|
||||
nm_assert(NM_BOND_MODE_UNKNOWN == _nm_setting_bond_mode_from_string(""));
|
||||
for (i = -2; i < ((int) G_N_ELEMENTS(modes)) + 20; i++) {
|
||||
if (i < 0 || i >= G_N_ELEMENTS(modes))
|
||||
m = NM_BOND_MODE_UNKNOWN;
|
||||
else
|
||||
m = i;
|
||||
nm_assert(m == _nm_setting_bond_mode_from_string(nm_sprintf_buf(sbuf, "%d", i)));
|
||||
}
|
||||
}
|
||||
|
||||
if (mode >= 0 && mode < (int) G_N_ELEMENTS(modes))
|
||||
return modes[mode];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
gboolean
|
||||
|
|
|
|||
|
|
@ -65,11 +65,14 @@ typedef enum {
|
|||
NM_BOND_MODE_8023AD = 4,
|
||||
NM_BOND_MODE_TLB = 5,
|
||||
NM_BOND_MODE_ALB = 6,
|
||||
|
||||
_NM_BOND_MODE_NUM,
|
||||
} NMBondMode;
|
||||
|
||||
NMBondMode _nm_setting_bond_mode_from_string(const char *str);
|
||||
|
||||
const char *_nm_setting_bond_mode_to_string(int mode);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static inline guint32
|
||||
|
|
|
|||
|
|
@ -4942,20 +4942,7 @@ nm_utils_check_virtual_device_compatibility(GType virtual_type, GType other_type
|
|||
}
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
const char *str;
|
||||
const char *num;
|
||||
} BondMode;
|
||||
|
||||
static const BondMode bond_mode_table[] = {
|
||||
[0] = {"balance-rr", "0"},
|
||||
[1] = {"active-backup", "1"},
|
||||
[2] = {"balance-xor", "2"},
|
||||
[3] = {"broadcast", "3"},
|
||||
[4] = {"802.3ad", "4"},
|
||||
[5] = {"balance-tlb", "5"},
|
||||
[6] = {"balance-alb", "6"},
|
||||
};
|
||||
/*****************************************************************************/
|
||||
|
||||
/**
|
||||
* nm_utils_bond_mode_int_to_string:
|
||||
|
|
@ -4972,9 +4959,7 @@ static const BondMode bond_mode_table[] = {
|
|||
const char *
|
||||
nm_utils_bond_mode_int_to_string(int mode)
|
||||
{
|
||||
if (mode >= 0 && mode < G_N_ELEMENTS(bond_mode_table))
|
||||
return bond_mode_table[mode].str;
|
||||
return NULL;
|
||||
return _nm_setting_bond_mode_to_string(mode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -4993,16 +4978,7 @@ nm_utils_bond_mode_int_to_string(int mode)
|
|||
int
|
||||
nm_utils_bond_mode_string_to_int(const char *mode)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!mode || !*mode)
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS(bond_mode_table); i++) {
|
||||
if (NM_IN_STRSET(mode, bond_mode_table[i].str, bond_mode_table[i].num))
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
return _nm_setting_bond_mode_from_string(mode);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue