summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Vaclav <jvaclav@redhat.com>2024-02-19 14:39:25 +0100
committerFernando Fernandez Mancera <ffmancera@riseup.net>2024-03-11 11:42:19 +0100
commitec91aa3c70c09ccb203e69fc90ab84c85a364581 (patch)
tree79c1147e69e9572cafb5495ed905859ad64d636f
parent8f9ed29e2cf7eafc6ae4e0cd698f03ce2f635fe6 (diff)
libnm: add property_type argument to _nm_setting_property_define_direct_strv
The purpose of this is to allow overriding to_dbus_fcn and from_dbus_fcn when necessary (such as for special behavior regarding a deprecated/aliased properties).
-rw-r--r--src/libnm-core-impl/nm-setting-connection.c1
-rw-r--r--src/libnm-core-impl/nm-setting-match.c4
-rw-r--r--src/libnm-core-impl/nm-setting-private.h62
-rw-r--r--src/libnm-core-impl/nm-setting-wireless.c1
4 files changed, 38 insertions, 30 deletions
diff --git a/src/libnm-core-impl/nm-setting-connection.c b/src/libnm-core-impl/nm-setting-connection.c
index 44a87720c3..6818645ff3 100644
--- a/src/libnm-core-impl/nm-setting-connection.c
+++ b/src/libnm-core-impl/nm-setting-connection.c
@@ -2751,6 +2751,7 @@ nm_setting_connection_class_init(NMSettingConnectionClass *klass)
NM_SETTING_CONNECTION_SECONDARIES,
PROP_SECONDARIES,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingConnectionPrivate,
secondaries);
diff --git a/src/libnm-core-impl/nm-setting-match.c b/src/libnm-core-impl/nm-setting-match.c
index 7736b7c0b1..255283fc57 100644
--- a/src/libnm-core-impl/nm-setting-match.c
+++ b/src/libnm-core-impl/nm-setting-match.c
@@ -739,6 +739,7 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
NM_SETTING_MATCH_INTERFACE_NAME,
PROP_INTERFACE_NAME,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingMatch,
interface_name);
@@ -764,6 +765,7 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
NM_SETTING_MATCH_KERNEL_COMMAND_LINE,
PROP_KERNEL_COMMAND_LINE,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingMatch,
kernel_command_line);
@@ -783,6 +785,7 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
NM_SETTING_MATCH_DRIVER,
PROP_DRIVER,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingMatch,
driver);
@@ -824,6 +827,7 @@ nm_setting_match_class_init(NMSettingMatchClass *klass)
NM_SETTING_MATCH_PATH,
PROP_PATH,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingMatch,
path);
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index 013c78ac64..b8ba0d771a 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -869,36 +869,38 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
/*****************************************************************************/
-#define _nm_setting_property_define_direct_strv(properties_override, \
- obj_properties, \
- prop_name, \
- prop_id, \
- param_flags, \
- private_struct_type, \
- private_struct_field, \
- ... /* extra NMSettInfoProperty fields */) \
- ({ \
- GParamSpec *_param_spec; \
- \
- G_STATIC_ASSERT(!NM_FLAGS_ANY((param_flags), ~(NM_SETTING_PARAM_FUZZY_IGNORE))); \
- \
- _param_spec = g_param_spec_boxed("" prop_name "", \
- "", \
- "", \
- G_TYPE_STRV, \
- G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
- | G_PARAM_STATIC_STRINGS | (param_flags)); \
- \
- (obj_properties)[(prop_id)] = _param_spec; \
- \
- _nm_properties_override_gobj((properties_override), \
- _param_spec, \
- &nm_sett_info_propert_type_direct_strv, \
- .direct_offset = \
- NM_STRUCT_OFFSET_ENSURE_TYPE(NMValueStrv, \
- private_struct_type, \
- private_struct_field), \
- __VA_ARGS__); \
+#define _nm_setting_property_define_direct_strv(properties_override, \
+ obj_properties, \
+ prop_name, \
+ prop_id, \
+ param_flags, \
+ property_type, \
+ private_struct_type, \
+ private_struct_field, \
+ ... /* extra NMSettInfoProperty fields */) \
+ ({ \
+ GParamSpec *_param_spec; \
+ const NMSettInfoPropertType *_property_type; \
+ G_STATIC_ASSERT(!NM_FLAGS_ANY((param_flags), ~(NM_SETTING_PARAM_FUZZY_IGNORE))); \
+ \
+ _param_spec = g_param_spec_boxed("" prop_name "", \
+ "", \
+ "", \
+ G_TYPE_STRV, \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ \
+ (obj_properties)[(prop_id)] = _param_spec; \
+ _property_type = (property_type) ?: &nm_sett_info_propert_type_direct_strv; \
+ \
+ _nm_properties_override_gobj((properties_override), \
+ _param_spec, \
+ _property_type, \
+ .direct_offset = \
+ NM_STRUCT_OFFSET_ENSURE_TYPE(NMValueStrv, \
+ private_struct_type, \
+ private_struct_field), \
+ __VA_ARGS__); \
})
/*****************************************************************************/
diff --git a/src/libnm-core-impl/nm-setting-wireless.c b/src/libnm-core-impl/nm-setting-wireless.c
index 93461a99da..d9342862d4 100644
--- a/src/libnm-core-impl/nm-setting-wireless.c
+++ b/src/libnm-core-impl/nm-setting-wireless.c
@@ -1717,6 +1717,7 @@ nm_setting_wireless_class_init(NMSettingWirelessClass *klass)
NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST,
PROP_MAC_ADDRESS_BLACKLIST,
NM_SETTING_PARAM_FUZZY_IGNORE,
+ NULL,
NMSettingWirelessPrivate,
mac_address_blacklist,
.direct_set_strv_normalize_hwaddr = TRUE,