libnm-utils: convert string bond opts to int
NMPlatform code for bond netlink support will use the numeric values, therefore we need functions to convert all the string values to int.
This commit is contained in:
@@ -40,6 +40,121 @@ _nm_setting_bond_remove_options_arp_interval(NMSettingBond *s_bond)
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_ad_select_from_string,
|
||||
NMBondAdSelect,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_AD_SELECT_NUM <= 3);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_AD_SELECT_NUM && name[0] >= '0' && name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_AD_SELECT_STABLE; },
|
||||
{"bandwith", NM_BOND_AD_SELECT_BANDWIDTH},
|
||||
{"count", NM_BOND_AD_SELECT_COUNT},
|
||||
{"stable", NM_BOND_AD_SELECT_STABLE}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_arp_all_targets_from_string,
|
||||
NMBondArpAllTargets,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_ARP_ALL_TARGETS_NUM <= 2);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_ARP_ALL_TARGETS_NUM && name[0] >= '0'
|
||||
&& name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_ARP_ALL_TARGETS_ANY; },
|
||||
{"all", NM_BOND_ARP_ALL_TARGETS_ALL},
|
||||
{"any", NM_BOND_ARP_ALL_TARGETS_ANY}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_fail_over_mac_from_string,
|
||||
NMBondFailOverMac,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_FAIL_OVER_MAC_NUM <= 3);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_FAIL_OVER_MAC_NUM && name[0] >= '0'
|
||||
&& name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_FAIL_OVER_MAC_NONE; },
|
||||
{"active", NM_BOND_FAIL_OVER_MAC_ACTIVE},
|
||||
{"follow", NM_BOND_FAIL_OVER_MAC_FOLLOW},
|
||||
{"none", NM_BOND_FAIL_OVER_MAC_NONE}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_lacp_rate_from_string,
|
||||
NMBondLacpRate,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_LACP_RATE_NUM <= 2);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_LACP_RATE_NUM && name[0] >= '0' && name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_LACP_RATE_SLOW; },
|
||||
{"fast", NM_BOND_LACP_RATE_FAST},
|
||||
{"slow", NM_BOND_LACP_RATE_SLOW}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_arp_validate_from_string,
|
||||
NMBondArpValidate,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_ARP_VALIDATE_NUM <= 7);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_ARP_VALIDATE_NUM && name[0] >= '0'
|
||||
&& name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_ARP_VALIDATE_NONE; },
|
||||
{"active", NM_BOND_ARP_VALIDATE_ACTIVE},
|
||||
{"all", NM_BOND_ARP_VALIDATE_ALL},
|
||||
{"backup", NM_BOND_ARP_VALIDATE_BACKUP},
|
||||
{"filter", NM_BOND_ARP_VALIDATE_FILTER},
|
||||
{"filter_active", NM_BOND_ARP_VALIDATE_FILTER_ACTIVE},
|
||||
{"filter_backup", NM_BOND_ARP_VALIDATE_FILTER_BACKUP},
|
||||
{"none", NM_BOND_ARP_VALIDATE_NONE}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_primary_reselect_from_string,
|
||||
NMBondPrimaryReselect,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_PRIMARY_RESELECT_NUM <= 3);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_PRIMARY_RESELECT_NUM && name[0] >= '0'
|
||||
&& name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_PRIMARY_RESELECT_ALWAYS; },
|
||||
{"always", NM_BOND_PRIMARY_RESELECT_ALWAYS},
|
||||
{"better", NM_BOND_PRIMARY_RESELECT_BETTER},
|
||||
{"failure", NM_BOND_PRIMARY_RESELECT_FAILURE}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_xmit_hash_policy_from_string,
|
||||
NMBondXmitHashPolicy,
|
||||
{
|
||||
G_STATIC_ASSERT_EXPR(_NM_BOND_XMIT_HASH_POLICY_NUM <= 6);
|
||||
|
||||
if (name && name[0] < '0' + _NM_BOND_XMIT_HASH_POLICY_NUM && name[0] >= '0'
|
||||
&& name[1] == '\0') {
|
||||
return name[0] - '0';
|
||||
}
|
||||
},
|
||||
{ return NM_BOND_XMIT_HASH_POLICY_LAYER2; },
|
||||
{"encap2+3", NM_BOND_XMIT_HASH_POLICY_ENCAP2_3},
|
||||
{"encap3+4", NM_BOND_XMIT_HASH_POLICY_ENCAP3_4},
|
||||
{"layer2", NM_BOND_XMIT_HASH_POLICY_LAYER2},
|
||||
{"layer2+3", NM_BOND_XMIT_HASH_POLICY_LAYER2_3},
|
||||
{"layer3+4", NM_BOND_XMIT_HASH_POLICY_LAYER3_4},
|
||||
{"vlan+srcmac", NM_BOND_XMIT_HASH_POLICY_VLAN_SRCMAC}, );
|
||||
|
||||
NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
|
||||
_nm_setting_bond_mode_from_string,
|
||||
NMBondMode,
|
||||
|
@@ -57,6 +57,102 @@ const char **nm_utils_bond_option_arp_ip_targets_split(const char *arp_ip_target
|
||||
void _nm_setting_bond_remove_options_miimon(NMSettingBond *s_bond);
|
||||
void _nm_setting_bond_remove_options_arp_interval(NMSettingBond *s_bond);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_AD_SELECT_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_AD_SELECT_STABLE = 0,
|
||||
NM_BOND_AD_SELECT_BANDWIDTH = 1,
|
||||
NM_BOND_AD_SELECT_COUNT = 2,
|
||||
|
||||
_NM_BOND_AD_SELECT_NUM,
|
||||
} NMBondAdSelect;
|
||||
|
||||
NMBondAdSelect _nm_setting_bond_ad_select_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_ARP_ALL_TARGETS_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_ARP_ALL_TARGETS_ANY = 0,
|
||||
NM_BOND_ARP_ALL_TARGETS_ALL = 1,
|
||||
|
||||
_NM_BOND_ARP_ALL_TARGETS_NUM,
|
||||
} NMBondArpAllTargets;
|
||||
|
||||
NMBondArpAllTargets _nm_setting_bond_arp_all_targets_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_FAIL_OVER_MAC_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_FAIL_OVER_MAC_NONE = 0,
|
||||
NM_BOND_FAIL_OVER_MAC_ACTIVE = 1,
|
||||
NM_BOND_FAIL_OVER_MAC_FOLLOW = 2,
|
||||
|
||||
_NM_BOND_FAIL_OVER_MAC_NUM,
|
||||
} NMBondFailOverMac;
|
||||
|
||||
NMBondFailOverMac _nm_setting_bond_fail_over_mac_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_LACP_RATE_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_LACP_RATE_SLOW = 0,
|
||||
NM_BOND_LACP_RATE_FAST = 1,
|
||||
|
||||
_NM_BOND_LACP_RATE_NUM,
|
||||
} NMBondLacpRate;
|
||||
|
||||
NMBondLacpRate _nm_setting_bond_lacp_rate_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_ARP_VALIDATE_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_ARP_VALIDATE_NONE = 0,
|
||||
NM_BOND_ARP_VALIDATE_ACTIVE = 1,
|
||||
NM_BOND_ARP_VALIDATE_BACKUP = 2,
|
||||
NM_BOND_ARP_VALIDATE_ALL = 3,
|
||||
NM_BOND_ARP_VALIDATE_FILTER = 4,
|
||||
NM_BOND_ARP_VALIDATE_FILTER_ACTIVE = 5,
|
||||
NM_BOND_ARP_VALIDATE_FILTER_BACKUP = 6,
|
||||
|
||||
_NM_BOND_ARP_VALIDATE_NUM,
|
||||
} NMBondArpValidate;
|
||||
|
||||
NMBondArpValidate _nm_setting_bond_arp_validate_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_PRIMARY_RESELECT_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_PRIMARY_RESELECT_ALWAYS = 0,
|
||||
NM_BOND_PRIMARY_RESELECT_BETTER = 1,
|
||||
NM_BOND_PRIMARY_RESELECT_FAILURE = 2,
|
||||
|
||||
_NM_BOND_PRIMARY_RESELECT_NUM,
|
||||
} NMBondPrimaryReselect;
|
||||
|
||||
NMBondPrimaryReselect _nm_setting_bond_primary_reselect_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_XMIT_HASH_POLICY_UNKNOWN = -1,
|
||||
|
||||
/* The numeric values correspond to kernel's numbering. */
|
||||
NM_BOND_XMIT_HASH_POLICY_LAYER2 = 0,
|
||||
NM_BOND_XMIT_HASH_POLICY_LAYER3_4 = 1,
|
||||
NM_BOND_XMIT_HASH_POLICY_LAYER2_3 = 2,
|
||||
NM_BOND_XMIT_HASH_POLICY_ENCAP2_3 = 3,
|
||||
NM_BOND_XMIT_HASH_POLICY_ENCAP3_4 = 4,
|
||||
NM_BOND_XMIT_HASH_POLICY_VLAN_SRCMAC = 5,
|
||||
|
||||
_NM_BOND_XMIT_HASH_POLICY_NUM,
|
||||
} NMBondXmitHashPolicy;
|
||||
|
||||
NMBondXmitHashPolicy _nm_setting_bond_xmit_hash_policy_from_string(const char *str);
|
||||
|
||||
typedef enum {
|
||||
NM_BOND_MODE_UNKNOWN = -1,
|
||||
|
||||
|
@@ -764,6 +764,39 @@ _nm_setting_bond_get_option_type(NMSettingBond *setting, const char *name)
|
||||
return option_meta->opt_type;
|
||||
}
|
||||
|
||||
guint32
|
||||
_nm_setting_bond_opt_value_as_u32(NMSettingBond *s_bond, const char *opt)
|
||||
{
|
||||
nm_assert(_get_option_meta(opt)->opt_type == NM_BOND_OPTION_TYPE_INT);
|
||||
return _nm_utils_ascii_str_to_uint64(nm_setting_bond_get_option_normalized(s_bond, opt),
|
||||
10,
|
||||
0,
|
||||
G_MAXUINT32,
|
||||
0);
|
||||
}
|
||||
|
||||
guint16
|
||||
_nm_setting_bond_opt_value_as_u16(NMSettingBond *s_bond, const char *opt)
|
||||
{
|
||||
nm_assert(_get_option_meta(opt)->opt_type == NM_BOND_OPTION_TYPE_INT);
|
||||
return _nm_utils_ascii_str_to_uint64(nm_setting_bond_get_option_normalized(s_bond, opt),
|
||||
10,
|
||||
0,
|
||||
G_MAXUINT16,
|
||||
0);
|
||||
}
|
||||
|
||||
guint8
|
||||
_nm_setting_bond_opt_value_as_u8(NMSettingBond *s_bond, const char *opt)
|
||||
{
|
||||
nm_assert(_get_option_meta(opt)->opt_type == NM_BOND_OPTION_TYPE_INT);
|
||||
return _nm_utils_ascii_str_to_uint64(nm_setting_bond_get_option_normalized(s_bond, opt),
|
||||
10,
|
||||
0,
|
||||
G_MAXUINT8,
|
||||
0);
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static gboolean
|
||||
|
@@ -517,6 +517,10 @@ NMConnectionMultiConnect _nm_connection_get_multi_connect(NMConnection *connecti
|
||||
|
||||
gboolean _nm_setting_bond_option_supported(const char *option, NMBondMode mode);
|
||||
|
||||
guint32 _nm_setting_bond_opt_value_as_u32(NMSettingBond *s_bond, const char *opt);
|
||||
guint16 _nm_setting_bond_opt_value_as_u16(NMSettingBond *s_bond, const char *opt);
|
||||
guint8 _nm_setting_bond_opt_value_as_u8(NMSettingBond *s_bond, const char *opt);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
GPtrArray *_nm_setting_bridge_get_vlans(NMSettingBridge *setting);
|
||||
|
Reference in New Issue
Block a user