diff options
author | Thomas Haller <thaller@redhat.com> | 2020-05-14 09:16:33 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-05-22 15:58:09 +0200 |
commit | 614f5f5a883f74beacf2b242a2a39d4a3536e558 (patch) | |
tree | c161b6682b2386ebf08737944219b32859897601 | |
parent | 49db9d8d787a69ea4afb78761effbb00d3dc0c85 (diff) | |
download | NetworkManager-614f5f5a883f74beacf2b242a2a39d4a3536e558.tar.gz |
libnm: use nm_setting_option_*() API in NMSettingEthtool
-rw-r--r-- | libnm-core/nm-setting-ethtool.c | 61 |
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; } /*****************************************************************************/ |