about summary refs log tree commit diff
path: root/libnm-core/nm-setting-ethtool.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-setting-ethtool.c')
-rw-r--r--libnm-core/nm-setting-ethtool.c329
1 files changed, 157 insertions, 172 deletions
diff --git a/libnm-core/nm-setting-ethtool.c b/libnm-core/nm-setting-ethtool.c
index 17fbdc62..1c7fde65 100644
--- a/libnm-core/nm-setting-ethtool.c
+++ b/libnm-core/nm-setting-ethtool.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2018 Red Hat, Inc.
  */
@@ -23,16 +23,15 @@
 /*****************************************************************************/
 
 static const GVariantType *
-get_variant_type_from_ethtool_id (NMEthtoolID ethtool_id)
+get_variant_type_from_ethtool_id(NMEthtoolID ethtool_id)
 {
-	if (nm_ethtool_id_is_feature (ethtool_id))
-		return G_VARIANT_TYPE_BOOLEAN;
+    if (nm_ethtool_id_is_feature(ethtool_id))
+        return G_VARIANT_TYPE_BOOLEAN;
 
-	if (   nm_ethtool_id_is_coalesce (ethtool_id)
-	    || nm_ethtool_id_is_ring (ethtool_id))
-		return G_VARIANT_TYPE_UINT32;
+    if (nm_ethtool_id_is_coalesce(ethtool_id) || nm_ethtool_id_is_ring(ethtool_id))
+        return G_VARIANT_TYPE_UINT32;
 
-	return NULL;
+    return NULL;
 }
 
 /*****************************************************************************/
@@ -52,9 +51,9 @@ get_variant_type_from_ethtool_id (NMEthtoolID ethtool_id)
  * the stable versions 1.18.2, 1.16.4 and 1.14.8 (with linker version "libnm_1_14_8").
  */
 gboolean
-nm_ethtool_optname_is_feature (const char *optname)
+nm_ethtool_optname_is_feature(const char *optname)
 {
-	return optname && nm_ethtool_id_is_feature (nm_ethtool_id_get_by_name (optname));
+    return optname && nm_ethtool_id_is_feature(nm_ethtool_id_get_by_name(optname));
 }
 
 /**
@@ -68,9 +67,9 @@ nm_ethtool_optname_is_feature (const char *optname)
  * Since: 1.26
  */
 gboolean
-nm_ethtool_optname_is_coalesce (const char *optname)
+nm_ethtool_optname_is_coalesce(const char *optname)
 {
-	return optname && nm_ethtool_id_is_coalesce (nm_ethtool_id_get_by_name (optname));
+    return optname && nm_ethtool_id_is_coalesce(nm_ethtool_id_get_by_name(optname));
 }
 
 /**
@@ -84,9 +83,9 @@ nm_ethtool_optname_is_coalesce (const char *optname)
  * Since: 1.26
  */
 gboolean
-nm_ethtool_optname_is_ring (const char *optname)
+nm_ethtool_optname_is_ring(const char *optname)
 {
-	return optname && nm_ethtool_id_is_ring (nm_ethtool_id_get_by_name (optname));
+    return optname && nm_ethtool_id_is_ring(nm_ethtool_id_get_by_name(optname));
 }
 
 /*****************************************************************************/
@@ -99,16 +98,17 @@ nm_ethtool_optname_is_ring (const char *optname)
  * Since: 1.14
  */
 struct _NMSettingEthtool {
-	NMSetting parent;
+    NMSetting parent;
 };
 
 struct _NMSettingEthtoolClass {
-	NMSettingClass parent;
+    NMSettingClass parent;
 };
 
-G_DEFINE_TYPE (NMSettingEthtool, nm_setting_ethtool, NM_TYPE_SETTING)
+G_DEFINE_TYPE(NMSettingEthtool, nm_setting_ethtool, NM_TYPE_SETTING)
 
-#define NM_SETTING_ETHTOOL_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMSettingEthtool, NM_IS_SETTING_ETHTOOL, NMSetting)
+#define NM_SETTING_ETHTOOL_GET_PRIVATE(self) \
+    _NM_GET_PRIVATE(self, NMSettingEthtool, NM_IS_SETTING_ETHTOOL, NMSetting)
 
 /*****************************************************************************/
 
@@ -131,19 +131,16 @@ G_DEFINE_TYPE (NMSettingEthtool, nm_setting_ethtool, NM_TYPE_SETTING)
  * Deprecated: 1.26: use nm_setting_option_get_boolean() instead.
  */
 NMTernary
-nm_setting_ethtool_get_feature (NMSettingEthtool *setting,
-                                const char *optname)
+nm_setting_ethtool_get_feature(NMSettingEthtool *setting, const char *optname)
 {
-	gboolean 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);
+    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);
 
-	if (!nm_setting_option_get_boolean (NM_SETTING (setting), optname, &v))
-		return NM_TERNARY_DEFAULT;
-	return   v
-	       ? NM_TERNARY_TRUE
-	       : NM_TERNARY_FALSE;
+    if (!nm_setting_option_get_boolean(NM_SETTING(setting), optname, &v))
+        return NM_TERNARY_DEFAULT;
+    return v ? NM_TERNARY_TRUE : NM_TERNARY_FALSE;
 }
 
 /**
@@ -163,20 +160,16 @@ nm_setting_ethtool_get_feature (NMSettingEthtool *setting,
  * Deprecated: 1.26: use nm_setting_option_set() or nm_setting_option_set_boolean() instead.
  */
 void
-nm_setting_ethtool_set_feature (NMSettingEthtool *setting,
-                                const char *optname,
-                                NMTernary value)
+nm_setting_ethtool_set_feature(NMSettingEthtool *setting, const char *optname, NMTernary value)
 {
-	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));
-
-	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));
+    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));
+
+    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));
 }
 
 /**
@@ -190,53 +183,52 @@ nm_setting_ethtool_set_feature (NMSettingEthtool *setting,
  * Deprecated: 1.26: use nm_setting_option_clear_by_name() with nm_ethtool_optname_is_feature() predicate instead.
  */
 void
-nm_setting_ethtool_clear_features (NMSettingEthtool *setting)
+nm_setting_ethtool_clear_features(NMSettingEthtool *setting)
 {
-	g_return_if_fail (NM_IS_SETTING_ETHTOOL (setting));
+    g_return_if_fail(NM_IS_SETTING_ETHTOOL(setting));
 
-	nm_setting_option_clear_by_name (NM_SETTING (setting),
-	                                 nm_ethtool_optname_is_feature);
+    nm_setting_option_clear_by_name(NM_SETTING(setting), nm_ethtool_optname_is_feature);
 }
 
 /*****************************************************************************/
 
 guint
-nm_setting_ethtool_init_features (NMSettingEthtool *setting,
-                                  NMTernary *requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */)
+nm_setting_ethtool_init_features(
+    NMSettingEthtool *setting,
+    NMTernary *       requested /* indexed by NMEthtoolID - _NM_ETHTOOL_ID_FEATURE_FIRST */)
 {
-	GHashTable *hash;
-	GHashTableIter iter;
-	guint i;
-	guint n_req = 0;
-	const char *name;
-	GVariant *variant;
-
-	nm_assert (NM_IS_SETTING_ETHTOOL (setting));
-	nm_assert (requested);
-
-	for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++)
-		requested[i] = NM_TERNARY_DEFAULT;
-
-	hash = _nm_setting_option_hash (NM_SETTING (setting), FALSE);
-	if (!hash)
-		return 0;
-
-	g_hash_table_iter_init (&iter, hash);
-	while (g_hash_table_iter_next (&iter, (gpointer *) &name, (gpointer *) &variant)) {
-		NMEthtoolID ethtool_id = nm_ethtool_id_get_by_name (name);
-
-		if (!nm_ethtool_id_is_feature (ethtool_id))
-			continue;
-		if (!g_variant_is_of_type (variant, G_VARIANT_TYPE_BOOLEAN))
-			continue;
-
-		requested[_NM_ETHTOOL_ID_FEATURE_AS_IDX (ethtool_id)] =   g_variant_get_boolean (variant)
-		                                                        ? NM_TERNARY_TRUE
-		                                                        : NM_TERNARY_FALSE;
-		n_req++;
-	}
-
-	return n_req;
+    GHashTable *   hash;
+    GHashTableIter iter;
+    guint          i;
+    guint          n_req = 0;
+    const char *   name;
+    GVariant *     variant;
+
+    nm_assert(NM_IS_SETTING_ETHTOOL(setting));
+    nm_assert(requested);
+
+    for (i = 0; i < _NM_ETHTOOL_ID_FEATURE_NUM; i++)
+        requested[i] = NM_TERNARY_DEFAULT;
+
+    hash = _nm_setting_option_hash(NM_SETTING(setting), FALSE);
+    if (!hash)
+        return 0;
+
+    g_hash_table_iter_init(&iter, hash);
+    while (g_hash_table_iter_next(&iter, (gpointer *) &name, (gpointer *) &variant)) {
+        NMEthtoolID ethtool_id = nm_ethtool_id_get_by_name(name);
+
+        if (!nm_ethtool_id_is_feature(ethtool_id))
+            continue;
+        if (!g_variant_is_of_type(variant, G_VARIANT_TYPE_BOOLEAN))
+            continue;
+
+        requested[_NM_ETHTOOL_ID_FEATURE_AS_IDX(ethtool_id)] =
+            g_variant_get_boolean(variant) ? NM_TERNARY_TRUE : NM_TERNARY_FALSE;
+        n_req++;
+    }
+
+    return n_req;
 }
 
 /*****************************************************************************/
@@ -259,106 +251,100 @@ nm_setting_ethtool_init_features (NMSettingEthtool *setting,
  * Deprecated: 1.26: use nm_setting_option_get_all_names() instead.
  */
 const char **
-nm_setting_ethtool_get_optnames (NMSettingEthtool *setting,
-                                 guint *out_length)
+nm_setting_ethtool_get_optnames(NMSettingEthtool *setting, guint *out_length)
 {
-	const char *const*names;
-	guint len;
+    const char *const *names;
+    guint              len;
 
-	g_return_val_if_fail (NM_IS_SETTING_ETHTOOL (setting), NULL);
+    g_return_val_if_fail(NM_IS_SETTING_ETHTOOL(setting), NULL);
 
-	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;
+    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;
 }
 
 /*****************************************************************************/
 
 static gboolean
-verify (NMSetting *setting, NMConnection *connection, GError **error)
+verify(NMSetting *setting, NMConnection *connection, GError **error)
 {
-	const char *const*optnames;
-	GVariant *const*variants;
-	guint len;
-	guint i;
-
-	len = _nm_setting_option_get_all (setting, &optnames, &variants);
-
-	for (i = 0; i < len; i++) {
-		const char *optname = optnames[i];
-		GVariant *variant = variants[i];
-		const GVariantType *variant_type;
-		NMEthtoolID ethtool_id;
-
-		ethtool_id = nm_ethtool_id_get_by_name (optname);
-		variant_type = get_variant_type_from_ethtool_id (ethtool_id);
-
-		if (!variant_type) {
-			g_set_error_literal (error,
-			                     NM_CONNECTION_ERROR,
-			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-			                     _("unsupported ethtool setting"));
-			g_prefix_error (error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
-			return FALSE;
-		}
-
-		if (!g_variant_is_of_type (variant, variant_type)) {
-			g_set_error_literal (error,
-			                     NM_CONNECTION_ERROR,
-			                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-			                     _("setting has invalid variant type"));
-			g_prefix_error (error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
-			return FALSE;
-		}
-
-		if (NM_IN_SET (ethtool_id,
-		               NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX,
-		               NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)) {
-			if (!NM_IN_SET (g_variant_get_uint32 (variant), 0, 1)) {
-				g_set_error_literal (error,
-				                     NM_CONNECTION_ERROR,
-				                     NM_CONNECTION_ERROR_INVALID_PROPERTY,
-				                     _("coalesce option must be either 0 or 1"));
-				g_prefix_error (error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
-				return FALSE;
-			}
-		}
-	}
-
-	return TRUE;
+    const char *const *optnames;
+    GVariant *const *  variants;
+    guint              len;
+    guint              i;
+
+    len = _nm_setting_option_get_all(setting, &optnames, &variants);
+
+    for (i = 0; i < len; i++) {
+        const char *        optname = optnames[i];
+        GVariant *          variant = variants[i];
+        const GVariantType *variant_type;
+        NMEthtoolID         ethtool_id;
+
+        ethtool_id   = nm_ethtool_id_get_by_name(optname);
+        variant_type = get_variant_type_from_ethtool_id(ethtool_id);
+
+        if (!variant_type) {
+            g_set_error_literal(error,
+                                NM_CONNECTION_ERROR,
+                                NM_CONNECTION_ERROR_INVALID_PROPERTY,
+                                _("unsupported ethtool setting"));
+            g_prefix_error(error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
+            return FALSE;
+        }
+
+        if (!g_variant_is_of_type(variant, variant_type)) {
+            g_set_error_literal(error,
+                                NM_CONNECTION_ERROR,
+                                NM_CONNECTION_ERROR_INVALID_PROPERTY,
+                                _("setting has invalid variant type"));
+            g_prefix_error(error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
+            return FALSE;
+        }
+
+        if (NM_IN_SET(ethtool_id,
+                      NM_ETHTOOL_ID_COALESCE_ADAPTIVE_RX,
+                      NM_ETHTOOL_ID_COALESCE_ADAPTIVE_TX)) {
+            if (!NM_IN_SET(g_variant_get_uint32(variant), 0, 1)) {
+                g_set_error_literal(error,
+                                    NM_CONNECTION_ERROR,
+                                    NM_CONNECTION_ERROR_INVALID_PROPERTY,
+                                    _("coalesce option must be either 0 or 1"));
+                g_prefix_error(error, "%s.%s: ", NM_SETTING_ETHTOOL_SETTING_NAME, optname);
+                return FALSE;
+            }
+        }
+    }
+
+    return TRUE;
 }
 
 /*****************************************************************************/
 
 static const GVariantType *
-get_variant_type (const NMSettInfoSetting *sett_info,
-                  const char *name,
-                  GError **error)
+get_variant_type(const NMSettInfoSetting *sett_info, const char *name, GError **error)
 {
-	const GVariantType *variant_type;
+    const GVariantType *variant_type;
 
-	variant_type = get_variant_type_from_ethtool_id (nm_ethtool_id_get_by_name (name));
+    variant_type = get_variant_type_from_ethtool_id(nm_ethtool_id_get_by_name(name));
 
-	if (!variant_type) {
-		g_set_error (error,
-		             NM_CONNECTION_ERROR,
-		             NM_CONNECTION_ERROR_INVALID_PROPERTY,
-		             _("unknown ethtool option '%s'"),
-		             name);
-		return NULL;
-	}
+    if (!variant_type) {
+        g_set_error(error,
+                    NM_CONNECTION_ERROR,
+                    NM_CONNECTION_ERROR_INVALID_PROPERTY,
+                    _("unknown ethtool option '%s'"),
+                    name);
+        return NULL;
+    }
 
-	return variant_type;
+    return variant_type;
 }
 
 /*****************************************************************************/
 
 static void
-nm_setting_ethtool_init (NMSettingEthtool *setting)
-{
-}
+nm_setting_ethtool_init(NMSettingEthtool *setting)
+{}
 
 /**
  * nm_setting_ethtool_new:
@@ -370,24 +356,23 @@ nm_setting_ethtool_init (NMSettingEthtool *setting)
  * Since: 1.14
  **/
 NMSetting *
-nm_setting_ethtool_new (void)
+nm_setting_ethtool_new(void)
 {
-	return g_object_new (NM_TYPE_SETTING_ETHTOOL, NULL);
+    return g_object_new(NM_TYPE_SETTING_ETHTOOL, NULL);
 }
 
 static void
-nm_setting_ethtool_class_init (NMSettingEthtoolClass *klass)
+nm_setting_ethtool_class_init(NMSettingEthtoolClass *klass)
 {
-	NMSettingClass *setting_class = NM_SETTING_CLASS (klass);
-
-	setting_class->verify = verify;
-
-	_nm_setting_class_commit_full (setting_class,
-	                               NM_META_SETTING_TYPE_ETHTOOL,
-	                               NM_SETT_INFO_SETT_DETAIL (
-	                                 .gendata_info = NM_SETT_INFO_SETT_GENDATA (
-	                                     .get_variant_type = get_variant_type,
-	                                 ),
-	                               ),
-	                               NULL);
+    NMSettingClass *setting_class = NM_SETTING_CLASS(klass);
+
+    setting_class->verify = verify;
+
+    _nm_setting_class_commit_full(
+        setting_class,
+        NM_META_SETTING_TYPE_ETHTOOL,
+        NM_SETT_INFO_SETT_DETAIL(.gendata_info =
+                                     NM_SETT_INFO_SETT_GENDATA(.get_variant_type =
+                                                                   get_variant_type, ), ),
+        NULL);
 }