summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2020-05-14 09:16:33 +0200
committerThomas Haller <thaller@redhat.com>2020-05-22 15:58:09 +0200
commit614f5f5a883f74beacf2b242a2a39d4a3536e558 (patch)
treec161b6682b2386ebf08737944219b32859897601
parent49db9d8d787a69ea4afb78761effbb00d3dc0c85 (diff)
downloadNetworkManager-614f5f5a883f74beacf2b242a2a39d4a3536e558.tar.gz
libnm: use nm_setting_option_*() API in NMSettingEthtool
-rw-r--r--libnm-core/nm-setting-ethtool.c61
1 files changed, 18 insertions, 43 deletions
diff --git a/libnm-core/nm-setting-ethtool.c b/libnm-core/nm-setting-ethtool.c
index ac0310da82..fd749780ca 100644
--- a/libnm-core/nm-setting-ethtool.c
+++ b/libnm-core/nm-setting-ethtool.c
@@ -140,19 +140,16 @@ NMTernary
nm_setting_ethtool_get_feature (NMSettingEthtool *setting,
const char *optname)
{
- GVariant *v;
+ gboolean v;
g_return_val_if_fail (NM_IS_SETTING_ETHTOOL (setting), NM_TERNARY_DEFAULT);
g_return_val_if_fail (optname && nm_ethtool_optname_is_feature (optname), NM_TERNARY_DEFAULT);
- v = nm_setting_option_get (NM_SETTING (setting), optname);
- if ( v
- && g_variant_is_of_type (v, G_VARIANT_TYPE_BOOLEAN)) {
- return g_variant_get_boolean (v)
- ? NM_TERNARY_TRUE
- : NM_TERNARY_FALSE;
- }
- return NM_TERNARY_DEFAULT;
+ if (!nm_setting_option_get_boolean (NM_SETTING (setting), optname, &v))
+ return NM_TERNARY_DEFAULT;
+ return v
+ ? NM_TERNARY_TRUE
+ : NM_TERNARY_FALSE;
}
/**
@@ -174,43 +171,16 @@ nm_setting_ethtool_set_feature (NMSettingEthtool *setting,
const char *optname,
NMTernary value)
{
- GHashTable *hash;
- GVariant *v;
-
g_return_if_fail (NM_IS_SETTING_ETHTOOL (setting));
g_return_if_fail (optname && nm_ethtool_optname_is_feature (optname));
g_return_if_fail (NM_IN_SET (value, NM_TERNARY_DEFAULT,
NM_TERNARY_FALSE,
NM_TERNARY_TRUE));
- hash = _nm_setting_option_hash (NM_SETTING (setting),
- value != NM_TERNARY_DEFAULT);
-
- if (value == NM_TERNARY_DEFAULT) {
- if (hash) {
- if (g_hash_table_remove (hash, optname))
- _notify_attributes (setting);
- }
- return;
- }
-
- v = g_hash_table_lookup (hash, optname);
- if ( v
- && g_variant_is_of_type (v, G_VARIANT_TYPE_BOOLEAN)) {
- if (g_variant_get_boolean (v)) {
- if (value == NM_TERNARY_TRUE)
- return;
- } else {
- if (value == NM_TERNARY_FALSE)
- return;
- }
- }
-
- v = g_variant_ref_sink (g_variant_new_boolean (value != NM_TERNARY_FALSE));
- g_hash_table_insert (hash,
- g_strdup (optname),
- v);
- _notify_attributes (setting);
+ if (value == NM_TERNARY_DEFAULT)
+ nm_setting_option_set (NM_SETTING (setting), optname, NULL);
+ else
+ nm_setting_option_set_boolean (NM_SETTING (setting), optname, (value != NM_TERNARY_FALSE));
}
/**
@@ -491,11 +461,16 @@ const char **
nm_setting_ethtool_get_optnames (NMSettingEthtool *setting,
guint *out_length)
{
+ const char *const*names;
+ guint len;
+
g_return_val_if_fail (NM_IS_SETTING_ETHTOOL (setting), NULL);
- return nm_utils_strdict_get_keys (_nm_setting_option_hash (NM_SETTING (setting), FALSE),
- TRUE,
- out_length);
+ names = nm_setting_option_get_all_names (NM_SETTING (setting), &len);
+ NM_SET_OUT (out_length, len);
+ return len > 0
+ ? nm_memdup (names, sizeof (names[0]) * (((gsize) len) + 1u))
+ : NULL;
}
/*****************************************************************************/