summary refs log tree commit diff
path: root/src/libnm-core-impl/nm-setting-match.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2022-05-04 15:35:24 +0200
committerMichael Biebl <biebl@debian.org>2022-05-04 15:35:24 +0200
commit9959fdb2e8ddd06f2161798ca0a39c77d67c652d (patch)
tree2ce24a336d2b1c5fd5dec3090db312eded6c78ba /src/libnm-core-impl/nm-setting-match.c
parent8c623dddbdebe354cb94bfc559a5371a14865317 (diff)
New upstream version 1.37.92 upstream/1.37.92
Diffstat (limited to 'src/libnm-core-impl/nm-setting-match.c')
-rw-r--r--src/libnm-core-impl/nm-setting-match.c244
1 files changed, 103 insertions, 141 deletions
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index 0ddffee5..f0e9fdf8 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -32,11 +32,11 @@ NM_GOBJECT_PROPERTIES_DEFINE(NMSettingMatch,
  * Since: 1.14
  */
 struct _NMSettingMatch {
-    NMSetting parent;
-    GArray   *interface_name;
-    GArray   *kernel_command_line;
-    GArray   *driver;
-    GArray   *path;
+    NMSetting   parent;
+    NMValueStrv interface_name;
+    NMValueStrv kernel_command_line;
+    NMValueStrv driver;
+    NMValueStrv path;
 };
 
 struct _NMSettingMatchClass {
@@ -60,7 +60,7 @@ nm_setting_match_get_num_interface_names(NMSettingMatch *setting)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
 
-    return nm_g_array_len(setting->interface_name);
+    return nm_g_array_len(setting->interface_name.arr);
 }
 
 /**
@@ -77,10 +77,11 @@ nm_setting_match_get_interface_name(NMSettingMatch *setting, int idx)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    g_return_val_if_fail(setting->interface_name && idx >= 0 && idx < setting->interface_name->len,
+    g_return_val_if_fail(setting->interface_name.arr && idx >= 0
+                             && idx < setting->interface_name.arr->len,
                          NULL);
 
-    return nm_strvarray_get_idx(setting->interface_name, idx);
+    return nm_strvarray_get_idx(setting->interface_name.arr, idx);
 }
 
 /**
@@ -98,7 +99,7 @@ nm_setting_match_add_interface_name(NMSettingMatch *setting, const char *interfa
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
     g_return_if_fail(interface_name);
 
-    nm_strvarray_add(nm_strvarray_ensure(&setting->interface_name), interface_name);
+    nm_strvarray_add(nm_strvarray_ensure(&setting->interface_name.arr), interface_name);
     _notify(setting, PROP_INTERFACE_NAME);
 }
 
@@ -116,9 +117,10 @@ nm_setting_match_remove_interface_name(NMSettingMatch *setting, int idx)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    g_return_if_fail(setting->interface_name && idx >= 0 && idx < setting->interface_name->len);
+    g_return_if_fail(setting->interface_name.arr && idx >= 0
+                     && idx < setting->interface_name.arr->len);
 
-    g_array_remove_index(setting->interface_name, idx);
+    g_array_remove_index(setting->interface_name.arr, idx);
     _notify(setting, PROP_INTERFACE_NAME);
 }
 
@@ -139,7 +141,7 @@ nm_setting_match_remove_interface_name_by_value(NMSettingMatch *setting, const c
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
     g_return_val_if_fail(interface_name, FALSE);
 
-    if (nm_strvarray_remove_first(setting->interface_name, interface_name)) {
+    if (nm_strvarray_remove_first(setting->interface_name.arr, interface_name)) {
         _notify(setting, PROP_INTERFACE_NAME);
         return TRUE;
     }
@@ -160,8 +162,8 @@ nm_setting_match_clear_interface_names(NMSettingMatch *setting)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    if (nm_g_array_len(setting->interface_name) != 0) {
-        nm_clear_pointer(&setting->interface_name, g_array_unref);
+    if (nm_g_array_len(setting->interface_name.arr) != 0) {
+        nm_clear_pointer(&setting->interface_name.arr, g_array_unref);
         _notify(setting, PROP_INTERFACE_NAME);
     }
 }
@@ -185,7 +187,7 @@ nm_setting_match_get_interface_names(NMSettingMatch *setting, guint *length)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    return nm_strvarray_get_strv(&setting->interface_name, length);
+    return nm_strvarray_get_strv(&setting->interface_name.arr, length);
 }
 
 /*****************************************************************************/
@@ -203,7 +205,7 @@ nm_setting_match_get_num_kernel_command_lines(NMSettingMatch *setting)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
 
-    return nm_g_array_len(setting->kernel_command_line);
+    return nm_g_array_len(setting->kernel_command_line.arr);
 }
 
 /**
@@ -220,10 +222,11 @@ nm_setting_match_get_kernel_command_line(NMSettingMatch *setting, guint idx)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    g_return_val_if_fail(setting->kernel_command_line && idx < setting->kernel_command_line->len,
+    g_return_val_if_fail(setting->kernel_command_line.arr
+                             && idx < setting->kernel_command_line.arr->len,
                          NULL);
 
-    return nm_strvarray_get_idx(setting->kernel_command_line, idx);
+    return nm_strvarray_get_idx(setting->kernel_command_line.arr, idx);
 }
 
 /**
@@ -241,7 +244,7 @@ nm_setting_match_add_kernel_command_line(NMSettingMatch *setting, const char *ke
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
     g_return_if_fail(kernel_command_line);
 
-    nm_strvarray_add(nm_strvarray_ensure(&setting->kernel_command_line), kernel_command_line);
+    nm_strvarray_add(nm_strvarray_ensure(&setting->kernel_command_line.arr), kernel_command_line);
     _notify(setting, PROP_KERNEL_COMMAND_LINE);
 }
 
@@ -259,9 +262,10 @@ nm_setting_match_remove_kernel_command_line(NMSettingMatch *setting, guint idx)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    g_return_if_fail(setting->kernel_command_line && idx < setting->kernel_command_line->len);
+    g_return_if_fail(setting->kernel_command_line.arr
+                     && idx < setting->kernel_command_line.arr->len);
 
-    g_array_remove_index(setting->kernel_command_line, idx);
+    g_array_remove_index(setting->kernel_command_line.arr, idx);
     _notify(setting, PROP_KERNEL_COMMAND_LINE);
 }
 
@@ -283,7 +287,7 @@ nm_setting_match_remove_kernel_command_line_by_value(NMSettingMatch *setting,
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
     g_return_val_if_fail(kernel_command_line, FALSE);
 
-    if (nm_strvarray_remove_first(setting->kernel_command_line, kernel_command_line)) {
+    if (nm_strvarray_remove_first(setting->kernel_command_line.arr, kernel_command_line)) {
         _notify(setting, PROP_KERNEL_COMMAND_LINE);
         return TRUE;
     }
@@ -304,8 +308,8 @@ nm_setting_match_clear_kernel_command_lines(NMSettingMatch *setting)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    if (nm_g_array_len(setting->kernel_command_line) != 0) {
-        nm_clear_pointer(&setting->kernel_command_line, g_array_unref);
+    if (nm_g_array_len(setting->kernel_command_line.arr) != 0) {
+        nm_clear_pointer(&setting->kernel_command_line.arr, g_array_unref);
         _notify(setting, PROP_KERNEL_COMMAND_LINE);
     }
 }
@@ -326,7 +330,7 @@ nm_setting_match_get_kernel_command_lines(NMSettingMatch *setting, guint *length
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    return nm_strvarray_get_strv(&setting->kernel_command_line, length);
+    return nm_strvarray_get_strv(&setting->kernel_command_line.arr, length);
 }
 
 /*****************************************************************************/
@@ -344,7 +348,7 @@ nm_setting_match_get_num_drivers(NMSettingMatch *setting)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
 
-    return nm_g_array_len(setting->driver);
+    return nm_g_array_len(setting->driver.arr);
 }
 
 /**
@@ -361,9 +365,9 @@ nm_setting_match_get_driver(NMSettingMatch *setting, guint idx)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    g_return_val_if_fail(setting->driver && idx < setting->driver->len, NULL);
+    g_return_val_if_fail(setting->driver.arr && idx < setting->driver.arr->len, NULL);
 
-    return nm_strvarray_get_idx(setting->driver, idx);
+    return nm_strvarray_get_idx(setting->driver.arr, idx);
 }
 
 /**
@@ -381,7 +385,7 @@ nm_setting_match_add_driver(NMSettingMatch *setting, const char *driver)
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
     g_return_if_fail(driver);
 
-    nm_strvarray_add(nm_strvarray_ensure(&setting->driver), driver);
+    nm_strvarray_add(nm_strvarray_ensure(&setting->driver.arr), driver);
     _notify(setting, PROP_DRIVER);
 }
 
@@ -399,9 +403,9 @@ nm_setting_match_remove_driver(NMSettingMatch *setting, guint idx)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    g_return_if_fail(setting->driver && idx < setting->driver->len);
+    g_return_if_fail(setting->driver.arr && idx < setting->driver.arr->len);
 
-    g_array_remove_index(setting->driver, idx);
+    g_array_remove_index(setting->driver.arr, idx);
     _notify(setting, PROP_DRIVER);
 }
 
@@ -422,7 +426,7 @@ nm_setting_match_remove_driver_by_value(NMSettingMatch *setting, const char *dri
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
     g_return_val_if_fail(driver, FALSE);
 
-    if (nm_strvarray_remove_first(setting->driver, driver)) {
+    if (nm_strvarray_remove_first(setting->driver.arr, driver)) {
         _notify(setting, PROP_DRIVER);
         return TRUE;
     }
@@ -443,8 +447,8 @@ nm_setting_match_clear_drivers(NMSettingMatch *setting)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    if (nm_g_array_len(setting->driver) != 0) {
-        nm_clear_pointer(&setting->driver, g_array_unref);
+    if (nm_g_array_len(setting->driver.arr) != 0) {
+        nm_clear_pointer(&setting->driver.arr, g_array_unref);
         _notify(setting, PROP_DRIVER);
     }
 }
@@ -465,7 +469,7 @@ nm_setting_match_get_drivers(NMSettingMatch *setting, guint *length)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    return nm_strvarray_get_strv(&setting->driver, length);
+    return nm_strvarray_get_strv(&setting->driver.arr, length);
 }
 
 /*****************************************************************************/
@@ -483,7 +487,7 @@ nm_setting_match_get_num_paths(NMSettingMatch *setting)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), 0);
 
-    return nm_g_array_len(setting->path);
+    return nm_g_array_len(setting->path.arr);
 }
 
 /**
@@ -500,9 +504,9 @@ nm_setting_match_get_path(NMSettingMatch *setting, guint idx)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    g_return_val_if_fail(setting->path && idx < setting->path->len, NULL);
+    g_return_val_if_fail(setting->path.arr && idx < setting->path.arr->len, NULL);
 
-    return nm_strvarray_get_idx(setting->path, idx);
+    return nm_strvarray_get_idx(setting->path.arr, idx);
 }
 
 /**
@@ -520,7 +524,7 @@ nm_setting_match_add_path(NMSettingMatch *setting, const char *path)
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
     g_return_if_fail(path);
 
-    nm_strvarray_add(nm_strvarray_ensure(&setting->path), path);
+    nm_strvarray_add(nm_strvarray_ensure(&setting->path.arr), path);
     _notify(setting, PROP_PATH);
 }
 
@@ -538,9 +542,9 @@ nm_setting_match_remove_path(NMSettingMatch *setting, guint idx)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    g_return_if_fail(setting->path && idx < setting->path->len);
+    g_return_if_fail(setting->path.arr && idx < setting->path.arr->len);
 
-    g_array_remove_index(setting->path, idx);
+    g_array_remove_index(setting->path.arr, idx);
     _notify(setting, PROP_PATH);
 }
 
@@ -561,7 +565,7 @@ nm_setting_match_remove_path_by_value(NMSettingMatch *setting, const char *path)
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), FALSE);
     g_return_val_if_fail(path, FALSE);
 
-    if (nm_strvarray_remove_first(setting->path, path)) {
+    if (nm_strvarray_remove_first(setting->path.arr, path)) {
         _notify(setting, PROP_PATH);
         return TRUE;
     }
@@ -582,8 +586,8 @@ nm_setting_match_clear_paths(NMSettingMatch *setting)
 {
     g_return_if_fail(NM_IS_SETTING_MATCH(setting));
 
-    if (nm_g_array_len(setting->path) != 0) {
-        nm_clear_pointer(&setting->path, g_array_unref);
+    if (nm_g_array_len(setting->path.arr) != 0) {
+        nm_clear_pointer(&setting->path.arr, g_array_unref);
         _notify(setting, PROP_PATH);
     }
 }
@@ -604,58 +608,7 @@ nm_setting_match_get_paths(NMSettingMatch *setting, guint *length)
 {
     g_return_val_if_fail(NM_IS_SETTING_MATCH(setting), NULL);
 
-    return nm_strvarray_get_strv(&setting->path, length);
-}
-
-/*****************************************************************************/
-
-static void
-get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
-{
-    NMSettingMatch *self = NM_SETTING_MATCH(object);
-
-    switch (prop_id) {
-    case PROP_INTERFACE_NAME:
-        g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->interface_name, NULL));
-        break;
-    case PROP_KERNEL_COMMAND_LINE:
-        g_value_take_boxed(value,
-                           nm_strvarray_get_strv_non_empty_dup(self->kernel_command_line, NULL));
-        break;
-    case PROP_DRIVER:
-        g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->driver, NULL));
-        break;
-    case PROP_PATH:
-        g_value_take_boxed(value, nm_strvarray_get_strv_non_empty_dup(self->path, NULL));
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-        break;
-    }
-}
-
-static void
-set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
-{
-    NMSettingMatch *self = NM_SETTING_MATCH(object);
-
-    switch (prop_id) {
-    case PROP_INTERFACE_NAME:
-        nm_strvarray_set_strv(&self->interface_name, g_value_get_boxed(value));
-        break;
-    case PROP_KERNEL_COMMAND_LINE:
-        nm_strvarray_set_strv(&self->kernel_command_line, g_value_get_boxed(value));
-        break;
-    case PROP_DRIVER:
-        nm_strvarray_set_strv(&self->driver, g_value_get_boxed(value));
-        break;
-    case PROP_PATH:
-        nm_strvarray_set_strv(&self->path, g_value_get_boxed(value));
-        break;
-    default:
-        G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
-        break;
-    }
+    return nm_strvarray_get_strv(&setting->path.arr, length);
 }
 
 /*****************************************************************************/
@@ -698,9 +651,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
     NMSettingMatch *self = NM_SETTING_MATCH(setting);
     guint           i;
 
-    if (self->interface_name) {
-        for (i = 0; i < self->interface_name->len; i++) {
-            if (nm_str_is_empty(nm_strvarray_get_idx(self->interface_name, i))) {
+    if (self->interface_name.arr) {
+        for (i = 0; i < self->interface_name.arr->len; i++) {
+            if (nm_str_is_empty(nm_strvarray_get_idx(self->interface_name.arr, i))) {
                 g_set_error(error,
                             NM_CONNECTION_ERROR,
                             NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -714,9 +667,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
         }
     }
 
-    if (self->kernel_command_line) {
-        for (i = 0; i < self->kernel_command_line->len; i++) {
-            if (nm_str_is_empty(nm_strvarray_get_idx(self->kernel_command_line, i))) {
+    if (self->kernel_command_line.arr) {
+        for (i = 0; i < self->kernel_command_line.arr->len; i++) {
+            if (nm_str_is_empty(nm_strvarray_get_idx(self->kernel_command_line.arr, i))) {
                 g_set_error(error,
                             NM_CONNECTION_ERROR,
                             NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -730,9 +683,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
         }
     }
 
-    if (self->driver) {
-        for (i = 0; i < self->driver->len; i++) {
-            if (nm_str_is_empty(nm_strvarray_get_idx(self->driver, i))) {
+    if (self->driver.arr) {
+        for (i = 0; i < self->driver.arr->len; i++) {
+            if (nm_str_is_empty(nm_strvarray_get_idx(self->driver.arr, i))) {
                 g_set_error(error,
                             NM_CONNECTION_ERROR,
                             NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -746,9 +699,9 @@ verify(NMSetting *setting, NMConnection *connection, GError **error)
         }
     }
 
-    if (self->path) {
-        for (i = 0; i < self->path->len; i++) {
-            if (nm_str_is_empty(nm_strvarray_get_idx(self->path, i))) {
+    if (self->path.arr) {
+        for (i = 0; i < self->path.arr->len; i++) {
+            if (nm_str_is_empty(nm_strvarray_get_idx(self->path.arr, i))) {
                 g_set_error(error,
                             NM_CONNECTION_ERROR,
                             NM_CONNECTION_ERROR_INVALID_PROPERTY,
@@ -770,10 +723,10 @@ finalize(GObject *object)
 {
     NMSettingMatch *self = NM_SETTING_MATCH(object);
 
-    nm_clear_pointer(&self->interface_name, g_array_unref);
-    nm_clear_pointer(&self->kernel_command_line, g_array_unref);
-    nm_clear_pointer(&self->driver, g_array_unref);
-    nm_clear_pointer(&self->path, g_array_unref);
+    nm_clear_pointer(&self->interface_name.arr, g_array_unref);
+    nm_clear_pointer(&self->kernel_command_line.arr, g_array_unref);
+    nm_clear_pointer(&self->driver.arr, g_array_unref);
+    nm_clear_pointer(&self->path.arr, g_array_unref);
 
     G_OBJECT_CLASS(nm_setting_match_parent_class)->finalize(object);
 }
@@ -781,11 +734,12 @@ finalize(GObject *object)
 static void
 nm_setting_match_class_init(NMSettingMatchClass *klass)
 {
-    GObjectClass   *object_class  = G_OBJECT_CLASS(klass);
-    NMSettingClass *setting_class = NM_SETTING_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();
 
-    object_class->get_property = get_property;
-    object_class->set_property = set_property;
+    object_class->get_property = _nm_setting_property_get_property_direct;
+    object_class->set_property = _nm_setting_property_set_property_direct;
     object_class->finalize     = finalize;
 
     setting_class->verify = verify;
@@ -810,12 +764,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
      *
      * Since: 1.14
      **/
-    obj_properties[PROP_INTERFACE_NAME] = g_param_spec_boxed(
-        NM_SETTING_MATCH_INTERFACE_NAME,
-        "",
-        "",
-        G_TYPE_STRV,
-        NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_strv(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_MATCH_INTERFACE_NAME,
+                                            PROP_INTERFACE_NAME,
+                                            NM_SETTING_PARAM_FUZZY_IGNORE,
+                                            NMSettingMatch,
+                                            interface_name);
 
     /**
      * NMSettingMatch:kernel-command-line
@@ -834,12 +789,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
      *
      * Since: 1.26
      **/
-    obj_properties[PROP_KERNEL_COMMAND_LINE] = g_param_spec_boxed(
-        NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
-        "",
-        "",
-        G_TYPE_STRV,
-        NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_strv(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
+                                            PROP_KERNEL_COMMAND_LINE,
+                                            NM_SETTING_PARAM_FUZZY_IGNORE,
+                                            NMSettingMatch,
+                                            kernel_command_line);
 
     /**
      * NMSettingMatch:driver
@@ -852,12 +808,13 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
      *
      * Since: 1.26
      **/
-    obj_properties[PROP_DRIVER] = g_param_spec_boxed(
-        NM_SETTING_MATCH_DRIVER,
-        "",
-        "",
-        G_TYPE_STRV,
-        NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_strv(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_MATCH_DRIVER,
+                                            PROP_DRIVER,
+                                            NM_SETTING_PARAM_FUZZY_IGNORE,
+                                            NMSettingMatch,
+                                            driver);
 
     /**
      * NMSettingMatch:path
@@ -892,14 +849,19 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
      * example: MATCH_PATH="pci-0000:01:00.0 pci-0000:0c:00.0"
      * ---end---
      */
-    obj_properties[PROP_PATH] = g_param_spec_boxed(NM_SETTING_MATCH_PATH,
-                                                   "",
-                                                   "",
-                                                   G_TYPE_STRV,
-                                                   NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_READWRITE
-                                                       | G_PARAM_STATIC_STRINGS);
+    _nm_setting_property_define_direct_strv(properties_override,
+                                            obj_properties,
+                                            NM_SETTING_MATCH_PATH,
+                                            PROP_PATH,
+                                            NM_SETTING_PARAM_FUZZY_IGNORE,
+                                            NMSettingMatch,
+                                            path);
 
     g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
 
-    _nm_setting_class_commit(setting_class, NM_META_SETTING_TYPE_MATCH, NULL, NULL, 0);
+    _nm_setting_class_commit(setting_class,
+                             NM_META_SETTING_TYPE_MATCH,
+                             NULL,
+                             properties_override,
+                             0);
 }