summary refs log tree commit diff
path: root/src/libnm-core-impl/nm-setting-sriov.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libnm-core-impl/nm-setting-sriov.c')
-rw-r--r--src/libnm-core-impl/nm-setting-sriov.c144
1 files changed, 66 insertions, 78 deletions
diff --git a/src/libnm-core-impl/nm-setting-sriov.c b/src/libnm-core-impl/nm-setting-sriov.c
index a024dba6..30dd8f54 100644
--- a/src/libnm-core-impl/nm-setting-sriov.c
+++ b/src/libnm-core-impl/nm-setting-sriov.c
@@ -30,8 +30,8 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingSriov, PROP_TOTAL_VFS, PROP_VFS, PROP_AUTO
 struct _NMSettingSriov {
     NMSetting  parent;
     GPtrArray *vfs;
-    guint      total_vfs;
-    NMTernary  autoprobe_drivers;
+    int        autoprobe_drivers;
+    guint32    total_vfs;
 };
 
 struct _NMSettingSriovClass {
@@ -49,7 +49,7 @@ struct _NMSriovVF {
     guint       index;
     GHashTable *attributes;
     GHashTable *vlans;
-    guint *     vlan_ids;
+    guint      *vlan_ids;
 };
 
 typedef struct {
@@ -163,9 +163,9 @@ gboolean
 nm_sriov_vf_equal(const NMSriovVF *vf, const NMSriovVF *other)
 {
     GHashTableIter iter;
-    const char *   key;
-    GVariant *     value, *value2;
-    VFVlan *       vlan, *vlan2;
+    const char    *key;
+    GVariant      *value, *value2;
+    VFVlan        *vlan, *vlan2;
     guint          n_vlans;
 
     g_return_val_if_fail(vf, FALSE);
@@ -239,11 +239,11 @@ vf_add_vlan(NMSriovVF *vf, guint vlan_id, guint qos, NMSriovVFVlanProtocol proto
 NMSriovVF *
 nm_sriov_vf_dup(const NMSriovVF *vf)
 {
-    NMSriovVF *    copy;
+    NMSriovVF     *copy;
     GHashTableIter iter;
-    const char *   name;
-    GVariant *     variant;
-    VFVlan *       vlan;
+    const char    *name;
+    GVariant      *variant;
+    VFVlan        *vlan;
 
     g_return_val_if_fail(vf, NULL);
     g_return_val_if_fail(vf->refcount > 0, NULL);
@@ -350,13 +350,13 @@ nm_sriov_vf_get_attribute(const NMSriovVF *vf, const char *name)
 const NMVariantAttributeSpec *const _nm_sriov_vf_attribute_spec[] = {
     NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(NM_SRIOV_VF_ATTRIBUTE_MAC,
                                      G_VARIANT_TYPE_STRING,
-                                     .str_type = 'm', ),
+                                     .type_detail = 'm', ),
     NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(NM_SRIOV_VF_ATTRIBUTE_SPOOF_CHECK, G_VARIANT_TYPE_BOOLEAN, ),
     NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(NM_SRIOV_VF_ATTRIBUTE_TRUST, G_VARIANT_TYPE_BOOLEAN, ),
     NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(NM_SRIOV_VF_ATTRIBUTE_MIN_TX_RATE, G_VARIANT_TYPE_UINT32, ),
     NM_VARIANT_ATTRIBUTE_SPEC_DEFINE(NM_SRIOV_VF_ATTRIBUTE_MAX_TX_RATE, G_VARIANT_TYPE_UINT32, ),
     /* D-Bus only, synthetic attributes */
-    NM_VARIANT_ATTRIBUTE_SPEC_DEFINE("vlans", G_VARIANT_TYPE_STRING, .str_type = 'd', ),
+    NM_VARIANT_ATTRIBUTE_SPEC_DEFINE("vlans", G_VARIANT_TYPE_STRING, .type_detail = 'd', ),
     NULL,
 };
 
@@ -378,7 +378,8 @@ gboolean
 nm_sriov_vf_attribute_validate(const char *name, GVariant *value, gboolean *known, GError **error)
 {
     const NMVariantAttributeSpec *const *iter;
-    const NMVariantAttributeSpec *       spec = NULL;
+    const NMVariantAttributeSpec        *spec = NULL;
+    const char                          *string;
 
     g_return_val_if_fail(name, FALSE);
     g_return_val_if_fail(value, FALSE);
@@ -391,7 +392,7 @@ nm_sriov_vf_attribute_validate(const char *name, GVariant *value, gboolean *know
         }
     }
 
-    if (!spec || spec->str_type == 'd') {
+    if (!spec || spec->type_detail == 'd') {
         NM_SET_OUT(known, FALSE);
         g_set_error_literal(error,
                             NM_CONNECTION_ERROR,
@@ -411,24 +412,23 @@ nm_sriov_vf_attribute_validate(const char *name, GVariant *value, gboolean *know
         return FALSE;
     }
 
-    if (g_variant_type_equal(spec->type, G_VARIANT_TYPE_STRING)) {
-        const char *string;
-
-        switch (spec->str_type) {
-        case 'm': /* MAC address */
-            string = g_variant_get_string(value, NULL);
-            if (!nm_utils_hwaddr_valid(string, -1)) {
-                g_set_error(error,
-                            NM_CONNECTION_ERROR,
-                            NM_CONNECTION_ERROR_FAILED,
-                            _("'%s' is not a valid MAC address"),
-                            string);
-                return FALSE;
-            }
-            break;
-        default:
-            break;
+    switch (spec->type_detail) {
+    case 'm': /* MAC address */
+        string = g_variant_get_string(value, NULL);
+        if (!nm_utils_hwaddr_valid(string, -1)) {
+            g_set_error(error,
+                        NM_CONNECTION_ERROR,
+                        NM_CONNECTION_ERROR_FAILED,
+                        _("'%s' is not a valid MAC address"),
+                        string);
+            return FALSE;
         }
+        break;
+    case '\0':
+        break;
+    default:
+        nm_assert_not_reached();
+        break;
     }
 
     return TRUE;
@@ -438,9 +438,9 @@ gboolean
 _nm_sriov_vf_attribute_validate_all(const NMSriovVF *vf, GError **error)
 {
     GHashTableIter iter;
-    const char *   name;
-    GVariant *     variant;
-    GVariant *     min, *max;
+    const char    *name;
+    GVariant      *variant;
+    GVariant      *min, *max;
 
     g_return_val_if_fail(vf, FALSE);
     g_return_val_if_fail(vf->refcount > 0, FALSE);
@@ -546,7 +546,7 @@ const guint *
 nm_sriov_vf_get_vlan_ids(const NMSriovVF *vf, guint *length)
 {
     GHashTableIter iter;
-    VFVlan *       vlan;
+    VFVlan        *vlan;
     guint          num, i;
 
     g_return_val_if_fail(vf, NULL);
@@ -888,10 +888,10 @@ vfs_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
     if (vfs) {
         for (i = 0; i < vfs->len; i++) {
             gs_free const char **attr_names = NULL;
-            NMSriovVF *          vf         = vfs->pdata[i];
+            NMSriovVF           *vf         = vfs->pdata[i];
             GVariantBuilder      vf_builder;
-            const guint *        vlan_ids;
-            const char **        name;
+            const guint         *vlan_ids;
+            const char         **name;
             guint                num_vlans = 0;
 
             g_variant_builder_init(&vf_builder, G_VARIANT_TYPE_VARDICT);
@@ -954,20 +954,20 @@ vfs_to_dbus(_NM_SETT_INFO_PROP_TO_DBUS_FCN_ARGS _nm_nil)
 static gboolean
 vfs_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
 {
-    GPtrArray *  vfs;
+    GPtrArray   *vfs;
     GVariantIter vf_iter;
-    GVariant *   vf_var;
+    GVariant    *vf_var;
 
     g_return_val_if_fail(g_variant_is_of_type(value, G_VARIANT_TYPE("aa{sv}")), FALSE);
 
     vfs = g_ptr_array_new_with_free_func((GDestroyNotify) nm_sriov_vf_unref);
     g_variant_iter_init(&vf_iter, value);
     while (g_variant_iter_next(&vf_iter, "@a{sv}", &vf_var)) {
-        NMSriovVF *  vf;
+        NMSriovVF   *vf;
         guint32      index;
         GVariantIter attr_iter;
-        const char * attr_name;
-        GVariant *   attr_var, *vlans_var;
+        const char  *attr_name;
+        GVariant    *attr_var, *vlans_var;
 
         if (!g_variant_lookup(vf_var, "index", "u", &index))
             goto next;
@@ -983,7 +983,7 @@ vfs_from_dbus(_NM_SETT_INFO_PROP_FROM_DBUS_FCN_ARGS _nm_nil)
 
         if (g_variant_lookup(vf_var, "vlans", "@aa{sv}", &vlans_var)) {
             GVariantIter vlan_iter;
-            GVariant *   vlan_var;
+            GVariant    *vlan_var;
 
             g_variant_iter_init(&vlan_iter, vlans_var);
             while (g_variant_iter_next(&vlan_iter, "@a{sv}", &vlan_var)) {
@@ -1035,7 +1035,7 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
 
         h = g_hash_table_new(nm_direct_hash, NULL);
         for (i = 0; i < self->vfs->len; i++) {
-            NMSriovVF *   vf            = self->vfs->pdata[i];
+            NMSriovVF            *vf    = self->vfs->pdata[i];
             gs_free_error GError *local = NULL;
 
             if (vf->index >= self->total_vfs) {
@@ -1138,20 +1138,14 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
     NMSettingSriov *self = NM_SETTING_SRIOV(object);
 
     switch (prop_id) {
-    case PROP_TOTAL_VFS:
-        g_value_set_uint(value, self->total_vfs);
-        break;
     case PROP_VFS:
         g_value_take_boxed(value,
                            _nm_utils_copy_array(self->vfs,
                                                 (NMUtilsCopyFunc) nm_sriov_vf_dup,
                                                 (GDestroyNotify) nm_sriov_vf_unref));
         break;
-    case PROP_AUTOPROBE_DRIVERS:
-        g_value_set_enum(value, self->autoprobe_drivers);
-        break;
     default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        _nm_setting_property_get_property_direct(object, prop_id, value, pspec);
         break;
     }
 }
@@ -1162,20 +1156,14 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
     NMSettingSriov *self = NM_SETTING_SRIOV(object);
 
     switch (prop_id) {
-    case PROP_TOTAL_VFS:
-        self->total_vfs = g_value_get_uint(value);
-        break;
     case PROP_VFS:
         g_ptr_array_unref(self->vfs);
         self->vfs = _nm_utils_copy_array(g_value_get_boxed(value),
                                          (NMUtilsCopyFunc) nm_sriov_vf_dup,
                                          (GDestroyNotify) nm_sriov_vf_unref);
         break;
-    case PROP_AUTOPROBE_DRIVERS:
-        self->autoprobe_drivers = g_value_get_enum(value);
-        break;
     default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+        _nm_setting_property_set_property_direct(object, prop_id, value, pspec);
         break;
     }
 }
@@ -1186,8 +1174,6 @@ static void
 nm_setting_sriov_init(NMSettingSriov *setting)
 {
     setting->vfs = g_ptr_array_new_with_free_func((GDestroyNotify) nm_sriov_vf_unref);
-
-    setting->autoprobe_drivers = NM_TERNARY_DEFAULT;
 }
 
 /**
@@ -1218,9 +1204,9 @@ finalize(GObject *object)
 static void
 nm_setting_sriov_class_init(NMSettingSriovClass *klass)
 {
-    GObjectClass *  object_class        = G_OBJECT_CLASS(klass);
+    GObjectClass   *object_class        = G_OBJECT_CLASS(klass);
     NMSettingClass *setting_class       = NM_SETTING_CLASS(klass);
-    GArray *        properties_override = _nm_sett_info_property_override_create_array();
+    GArray         *properties_override = _nm_sett_info_property_override_create_array();
 
     object_class->get_property = get_property;
     object_class->set_property = set_property;
@@ -1248,14 +1234,16 @@ nm_setting_sriov_class_init(NMSettingSriovClass *klass)
      * example: SRIOV_TOTAL_VFS=16
      * ---end---
      */
-    obj_properties[PROP_TOTAL_VFS] = g_param_spec_uint(
-        NM_SETTING_SRIOV_TOTAL_VFS,
-        "",
-        "",
-        0,
-        G_MAXUINT32,
-        0,
-        NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_uint32(properties_override,
+                                              obj_properties,
+                                              NM_SETTING_SRIOV_TOTAL_VFS,
+                                              PROP_TOTAL_VFS,
+                                              0,
+                                              G_MAXUINT32,
+                                              0,
+                                              NM_SETTING_PARAM_FUZZY_IGNORE,
+                                              NMSettingSriov,
+                                              total_vfs);
 
     /**
      * NMSettingSriov:vfs: (type GPtrArray(NMSriovVF))
@@ -1335,13 +1323,13 @@ nm_setting_sriov_class_init(NMSettingSriovClass *klass)
      * example: SRIOV_AUTOPROBE_DRIVERS=0,1
      * ---end---
      */
-    obj_properties[PROP_AUTOPROBE_DRIVERS] = g_param_spec_enum(
-        NM_SETTING_SRIOV_AUTOPROBE_DRIVERS,
-        "",
-        "",
-        NM_TYPE_TERNARY,
-        NM_TERNARY_DEFAULT,
-        NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_ternary_enum(properties_override,
+                                                    obj_properties,
+                                                    NM_SETTING_SRIOV_AUTOPROBE_DRIVERS,
+                                                    PROP_AUTOPROBE_DRIVERS,
+                                                    NM_SETTING_PARAM_FUZZY_IGNORE,
+                                                    NMSettingSriov,
+                                                    autoprobe_drivers);
 
     g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);