summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2023-12-12 10:27:04 +0100
committerThomas Haller <thaller@redhat.com>2023-12-12 10:27:04 +0100
commitd256831510658251870ecf63ca507c13afd0f4df (patch)
treee61b282bd0e1c2fbe01ee146c28cce491d1c67e9
parent821612dcf44a5d048a9b65f42cebe6d033d78333 (diff)
parentb1dbe942e8d7b133525b72c111d17a2f76825a5f (diff)
libnm: merge branch 'th/libnm-explicit-notify'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1817
-rw-r--r--src/libnm-core-impl/nm-setting-ip-config.c47
-rw-r--r--src/libnm-core-impl/nm-setting-private.h108
-rw-r--r--src/libnm-core-impl/nm-setting.c9
-rw-r--r--src/libnm-core-impl/tests/test-general.c8
-rw-r--r--src/libnm-core-impl/tests/test-setting.c18
5 files changed, 93 insertions, 97 deletions
diff --git a/src/libnm-core-impl/nm-setting-ip-config.c b/src/libnm-core-impl/nm-setting-ip-config.c
index 3bbad42544..b28998db97 100644
--- a/src/libnm-core-impl/nm-setting-ip-config.c
+++ b/src/libnm-core-impl/nm-setting-ip-config.c
@@ -6201,6 +6201,7 @@ set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *ps
nm_strvarray_add(priv->dns_options.arr, str);
}
}
+ _notify(NM_SETTING_IP_CONFIG(object), PROP_DNS_OPTIONS);
break;
case PROP_ADDRESSES:
g_ptr_array_unref(priv->addresses);
@@ -6288,12 +6289,13 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
* shared method must be configured on the interface which shares the internet
* to a subnet, not on the uplink which is shared.
**/
- obj_properties[PROP_METHOD] = g_param_spec_string(
- NM_SETTING_IP_CONFIG_METHOD,
- "",
- "",
- NULL,
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_METHOD] =
+ g_param_spec_string(NM_SETTING_IP_CONFIG_METHOD,
+ "",
+ "",
+ NULL,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY
+ | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:dns:
@@ -6336,7 +6338,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
"",
G_TYPE_STRV,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:dns-options:
@@ -6375,7 +6377,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
"",
G_TYPE_STRV,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:dns-priority:
@@ -6468,14 +6470,15 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
* for WireGuard interfaces, so usually it should not be set in that case. See
* #NMSettingWireGuard:ip4-auto-default-route.
**/
- obj_properties[PROP_GATEWAY] = g_param_spec_string(
- NM_SETTING_IP_CONFIG_GATEWAY,
- "",
- "",
- NULL,
- /* On D-Bus, the legacy property "addresses" contains the gateway.
- * This was replaced by "address-data" and "gateway". */
- G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
+ obj_properties[PROP_GATEWAY] =
+ g_param_spec_string(NM_SETTING_IP_CONFIG_GATEWAY,
+ "",
+ "",
+ NULL,
+ /* On D-Bus, the legacy property "addresses" contains the gateway.
+ * This was replaced by "address-data" and "gateway". */
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY
+ | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:routes: (type GPtrArray(NMIPRoute))
@@ -6512,7 +6515,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
-1,
G_MAXUINT32,
-1,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:route-table:
@@ -6587,7 +6590,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
"",
NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:dhcp-send-hostname:
@@ -6748,7 +6751,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
"",
NULL,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:dhcp-hostname-flags:
@@ -6802,7 +6805,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
"",
G_TYPE_STRV,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:auto-route-ext-gw:
@@ -6821,7 +6824,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
NM_TYPE_TERNARY,
NM_TERNARY_DEFAULT,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
/**
* NMSettingIPConfig:replace-local-rule:
@@ -6837,7 +6840,7 @@ nm_setting_ip_config_class_init(NMSettingIPConfigClass *klass)
"",
NM_TYPE_TERNARY,
NM_TERNARY_DEFAULT,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
g_object_class_install_properties(object_class, _PROPERTY_ENUMS_LAST, obj_properties);
}
diff --git a/src/libnm-core-impl/nm-setting-private.h b/src/libnm-core-impl/nm-setting-private.h
index f31796a664..aaaaaf8c4e 100644
--- a/src/libnm-core-impl/nm-setting-private.h
+++ b/src/libnm-core-impl/nm-setting-private.h
@@ -677,14 +677,14 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
G_STATIC_ASSERT((default_value) <= (max_value)); \
G_STATIC_ASSERT((max_value) <= G_MAXINT64); \
\
- _param_spec = \
- g_param_spec_int64("" prop_name "", \
- "", \
- "", \
- (min_value), \
- (max_value), \
- (default_value), \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_int64("" prop_name "", \
+ "", \
+ "", \
+ (min_value), \
+ (max_value), \
+ (default_value), \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -722,14 +722,14 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
G_STATIC_ASSERT((default_value) == 0 || (default_value) -1u < (max_value)); \
G_STATIC_ASSERT((max_value) <= G_MAXUINT64); \
\
- _param_spec = \
- g_param_spec_uint64("" prop_name "", \
- "", \
- "", \
- (min_value), \
- (max_value), \
- (default_value), \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_uint64("" prop_name "", \
+ "", \
+ "", \
+ (min_value), \
+ (max_value), \
+ (default_value), \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -768,12 +768,12 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
nm_assert(_property_type->direct_type == NM_VALUE_TYPE_STRING); \
nm_assert(_property_type->to_dbus_fcn == _nm_setting_property_to_dbus_fcn_direct); \
\
- _param_spec = \
- g_param_spec_string("" prop_name "", \
- "", \
- "", \
- NULL, \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_string("" prop_name "", \
+ "", \
+ "", \
+ NULL, \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -822,12 +822,12 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
~(NM_SETTING_PARAM_SECRET | NM_SETTING_PARAM_INFERRABLE \
| NM_SETTING_PARAM_FUZZY_IGNORE))); \
\
- _param_spec = \
- g_param_spec_boxed("" prop_name "", \
- "", \
- "", \
- G_TYPE_BYTES, \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_boxed("" prop_name "", \
+ "", \
+ "", \
+ G_TYPE_BYTES, \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -857,12 +857,12 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
\
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_STATIC_STRINGS | (param_flags)); \
+ _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; \
\
@@ -898,13 +898,13 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
~(NM_SETTING_PARAM_REAPPLY_IMMEDIATELY | NM_SETTING_PARAM_FUZZY_IGNORE \
| NM_SETTING_PARAM_INFERRABLE))); \
\
- _param_spec = \
- g_param_spec_enum("" prop_name "", \
- "", \
- "", \
- (gtype_enum), \
- (default_value), \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_enum("" prop_name "", \
+ "", \
+ "", \
+ (gtype_enum), \
+ (default_value), \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -959,13 +959,13 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
!NM_FLAGS_ANY((param_flags), \
~(NM_SETTING_PARAM_FUZZY_IGNORE | NM_SETTING_PARAM_INFERRABLE))); \
\
- _param_spec = \
- g_param_spec_flags("" prop_name "", \
- "", \
- "", \
- (gtype_flags), \
- (default_value), \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_flags("" prop_name "", \
+ "", \
+ "", \
+ (gtype_flags), \
+ (default_value), \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
@@ -1018,12 +1018,12 @@ _nm_properties_override(GArray *properties_override, const NMSettInfoProperty *p
| NM_SETTING_PARAM_INFERRABLE \
| NM_SETTING_PARAM_REAPPLY_IMMEDIATELY))); \
\
- _param_spec = \
- g_param_spec_string("" prop_name "", \
- "", \
- "", \
- NULL, \
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | (param_flags)); \
+ _param_spec = g_param_spec_string("" prop_name "", \
+ "", \
+ "", \
+ NULL, \
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY \
+ | G_PARAM_STATIC_STRINGS | (param_flags)); \
\
(obj_properties)[(prop_id)] = _param_spec; \
\
diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c
index 4999e46baf..fdb2b1299d 100644
--- a/src/libnm-core-impl/nm-setting.c
+++ b/src/libnm-core-impl/nm-setting.c
@@ -989,10 +989,11 @@ _nm_setting_property_set_property_direct(GObject *object,
nm_assert_not_reached();
out_notify:
- nm_gobject_notify_together_by_pspec(
- object,
- NM_FLAGS_HAS(pspec->flags, G_PARAM_EXPLICIT_NOTIFY) ? property_info->param_spec : NULL,
- property_info->direct_also_notify);
+ nm_assert(NM_FLAGS_HAS(pspec->flags, G_PARAM_EXPLICIT_NOTIFY));
+
+ nm_gobject_notify_together_by_pspec(object,
+ property_info->param_spec,
+ property_info->direct_also_notify);
return;
diff --git a/src/libnm-core-impl/tests/test-general.c b/src/libnm-core-impl/tests/test-general.c
index e34cc8c282..2d7f9dd789 100644
--- a/src/libnm-core-impl/tests/test-general.c
+++ b/src/libnm-core-impl/tests/test-general.c
@@ -5676,9 +5676,13 @@ test_setting_wireless_security_changed_signal(void)
"wep-key0",
NM_SETTING_SECRET_FLAG_AGENT_OWNED,
NULL)));
+ ASSERT_UNCHANGED(g_assert(nm_setting_set_secret_flags(NM_SETTING(s_wsec),
+ "wep-key1",
+ NM_SETTING_SECRET_FLAG_AGENT_OWNED,
+ NULL)));
ASSERT_CHANGED(g_assert(nm_setting_set_secret_flags(NM_SETTING(s_wsec),
"wep-key1",
- NM_SETTING_SECRET_FLAG_AGENT_OWNED,
+ NM_SETTING_SECRET_FLAG_NOT_SAVED,
NULL)));
ASSERT_CHANGED(g_assert(nm_setting_set_secret_flags(NM_SETTING(s_wsec),
"wep-key2",
@@ -5686,7 +5690,7 @@ test_setting_wireless_security_changed_signal(void)
NULL)));
ASSERT_CHANGED(g_assert(nm_setting_set_secret_flags(NM_SETTING(s_wsec),
"wep-key3",
- NM_SETTING_SECRET_FLAG_AGENT_OWNED,
+ NM_SETTING_SECRET_FLAG_NOT_SAVED,
NULL)));
g_object_unref(connection);
diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c
index 1a1df172a6..9824306b71 100644
--- a/src/libnm-core-impl/tests/test-setting.c
+++ b/src/libnm-core-impl/tests/test-setting.c
@@ -4903,26 +4903,14 @@ check_done:;
g_array_append_val(property_types_data, prop_idx_val);
if (sip->param_spec) {
- gboolean expected;
-
- /* TODO: we should move all "direct" properties to use G_PARAM_EXPLICIT_NOTIFY.
- *
- * Currently only certain direct properties are as such. This should change.
+ /* All "direct" properties use G_PARAM_EXPLICIT_NOTIFY.
*
* Warning: this is potentially dangerous, because implementations MUST remember
* to notify the property change in set_property(). Optimally, the property uses
* _nm_setting_property_set_property_direct(), which takes care of that.
*/
- expected = NM_IN_SET(sip->property_type->direct_type,
- NM_VALUE_TYPE_BOOL,
- NM_VALUE_TYPE_UINT32,
- NM_VALUE_TYPE_INT32);
-
- if (NM_FLAGS_HAS(sip->param_spec->flags, G_PARAM_EXPLICIT_NOTIFY)) {
- g_assert(expected);
- } else {
- g_assert(!expected);
- }
+ if (sip->property_type->direct_type != NM_VALUE_TYPE_NONE)
+ g_assert(NM_FLAGS_HAS(sip->param_spec->flags, G_PARAM_EXPLICIT_NOTIFY));
}
if (sip->param_spec) {