summaryrefslogtreecommitdiff
path: root/libnm-core/nm-setting-bond.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-setting-bond.c')
-rw-r--r--libnm-core/nm-setting-bond.c53
1 files changed, 25 insertions, 28 deletions
diff --git a/libnm-core/nm-setting-bond.c b/libnm-core/nm-setting-bond.c
index 1428ab6383..0cb38342a6 100644
--- a/libnm-core/nm-setting-bond.c
+++ b/libnm-core/nm-setting-bond.c
@@ -224,9 +224,10 @@ static NM_UTILS_STRING_TABLE_LOOKUP_DEFINE(
{NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE, ~(BIT(NM_BOND_MODE_ROUNDROBIN))},
{NM_SETTING_BOND_OPTION_PRIMARY,
~(BIT(NM_BOND_MODE_ACTIVEBACKUP) | BIT(NM_BOND_MODE_TLB) | BIT(NM_BOND_MODE_ALB))},
- {NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB, ~(BIT(NM_BOND_MODE_TLB))}, )
+ {NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB, ~(BIT(NM_BOND_MODE_TLB))}, );
- gboolean _nm_setting_bond_option_supported(const char *option, NMBondMode mode)
+gboolean
+_nm_setting_bond_option_supported(const char *option, NMBondMode mode)
{
nm_assert(option);
nm_assert(mode != NM_BOND_MODE_UNKNOWN);
@@ -514,8 +515,8 @@ validate_ifname(const char *name, const char *value)
return nm_utils_ifname_valid_kernel(value, NULL);
}
-static gboolean
-_setting_bond_validate_option(const char *name, const char *value, GError **error)
+gboolean
+_nm_setting_bond_validate_option(const char *name, const char *value, GError **error)
{
const OptionMeta *option_meta;
gboolean success;
@@ -588,7 +589,7 @@ handle_error:
gboolean
nm_setting_bond_validate_option(const char *name, const char *value)
{
- return _setting_bond_validate_option(name, value, NULL);
+ return _nm_setting_bond_validate_option(name, value, NULL);
}
/**
@@ -607,9 +608,6 @@ nm_setting_bond_get_option_by_name(NMSettingBond *setting, const char *name)
{
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), NULL);
- if (!nm_setting_bond_validate_option(name, NULL))
- return NULL;
-
return _bond_get_option(setting, name);
}
@@ -619,16 +617,18 @@ nm_setting_bond_get_option_by_name(NMSettingBond *setting, const char *name)
* @name: name for the option
* @value: value for the option
*
- * Add an option to the table. The option is compared to an internal list
- * of allowed options. Option names may contain only alphanumeric characters
- * (ie [a-zA-Z0-9]). Adding a new name replaces any existing name/value pair
+ * Add an option to the table. Adding a new name replaces any existing name/value pair
* that may already exist.
*
- * The order of how to set several options is relevant because there are options
- * that conflict with each other.
+ * Returns: returns %FALSE if either @name or @value is %NULL, in that case
+ * the option is not set. Otherwise, the function does not fail and does not validate
+ * the arguments. All validation happens via nm_connection_verify() or do basic validation
+ * yourself with nm_setting_bond_validate_option().
*
- * Returns: %TRUE if the option was valid and was added to the internal option
- * list, %FALSE if it was not.
+ * Note: Before 1.30, libnm would perform basic validation of the name and the value
+ * via nm_setting_bond_validate_option() and reject the request by returning FALSE.
+ * Since 1.30, libnm no longer rejects any values as the setter is not supposed
+ * to perform validation.
**/
gboolean
nm_setting_bond_add_option(NMSettingBond *setting, const char *name, const char *value)
@@ -637,16 +637,16 @@ nm_setting_bond_add_option(NMSettingBond *setting, const char *name, const char
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), FALSE);
- if (!value || !nm_setting_bond_validate_option(name, value))
+ if (!name)
+ return FALSE;
+ if (!value)
return FALSE;
priv = NM_SETTING_BOND_GET_PRIVATE(setting);
nm_clear_g_free(&priv->options_idx_cache);
g_hash_table_insert(priv->options, g_strdup(name), g_strdup(value));
-
_notify(setting, PROP_OPTIONS);
-
return TRUE;
}
@@ -665,20 +665,17 @@ gboolean
nm_setting_bond_remove_option(NMSettingBond *setting, const char *name)
{
NMSettingBondPrivate *priv;
- gboolean found;
g_return_val_if_fail(NM_IS_SETTING_BOND(setting), FALSE);
- if (!nm_setting_bond_validate_option(name, NULL))
- return FALSE;
-
priv = NM_SETTING_BOND_GET_PRIVATE(setting);
+ if (!g_hash_table_remove(priv->options, name))
+ return FALSE;
+
nm_clear_g_free(&priv->options_idx_cache);
- found = g_hash_table_remove(priv->options, name);
- if (found)
- _notify(setting, PROP_OPTIONS);
- return found;
+ _notify(setting, PROP_OPTIONS);
+ return TRUE;
}
/**
@@ -782,7 +779,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
for (i = 0; priv->options_idx_cache[i].name; i++) {
n = &priv->options_idx_cache[i];
- if (!n->value_str || !_setting_bond_validate_option(n->name, n->value_str, error)) {
+ if (!n->value_str || !_nm_setting_bond_validate_option(n->name, n->value_str, error)) {
g_prefix_error(error,
"%s.%s: ",
NM_SETTING_BOND_SETTING_NAME,
@@ -1112,7 +1109,7 @@ nm_setting_bond_init(NMSettingBond *setting)
NMSetting *
nm_setting_bond_new(void)
{
- return (NMSetting *) g_object_new(NM_TYPE_SETTING_BOND, NULL);
+ return g_object_new(NM_TYPE_SETTING_BOND, NULL);
}
static void