From e536d40eaea5dcdc0743b0a5e8e17faa46608a50 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Wed, 19 Feb 2020 23:31:24 +0100 Subject: New upstream version 1.22.8 --- libnm/libnm.ver | 5 +++++ libnm/nm-active-connection.c | 29 +++++++++++++++++++++++++++++ libnm/nm-client.c | 14 +++++++++++--- libnm/nm-libnm-utils.h | 2 ++ libnm/nm-property-docs.xml | 13 +++++++------ libnm/nm-settings-docs.xml | 13 +++++++------ libnm/nm-settings-ifcfg-rh-docs.xml | 2 ++ 7 files changed, 63 insertions(+), 15 deletions(-) (limited to 'libnm') diff --git a/libnm/libnm.ver b/libnm/libnm.ver index 5e6dd230..326383c8 100644 --- a/libnm/libnm.ver +++ b/libnm/libnm.ver @@ -1657,3 +1657,8 @@ libnm_1_22_2 { global: nm_client_get_capabilities; } libnm_1_22_0; + +libnm_1_22_8 { +global: + nm_setting_ip6_config_get_ra_timeout; +} libnm_1_22_2; diff --git a/libnm/nm-active-connection.c b/libnm/nm-active-connection.c index aa8504e6..ade2edbe 100644 --- a/libnm/nm-active-connection.c +++ b/libnm/nm-active-connection.c @@ -425,6 +425,33 @@ _nm_active_connection_state_changed_commit (NMActiveConnection *self, _notify_event_state_changed, g_object_ref (self)); } +/*****************************************************************************/ + +static gboolean +is_ready (NMObject *nmobj) +{ + NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (nmobj); + + /* Usually, we don't want to expose our NMObject instances until they are fully initialized. + * For NMRemoteSetting this means to wait until GetSettings() returns. + * + * Note that most object types reference each other (directly or indirectly). E.g. the + * NMActiveConnection refers to the NMRemoteConnection and the NMDevice instance. So, + * we don't want to hide them too long, otherwise basically the entire set of objects + * will be hidden until they are all initialized. So, usually, when a NMObject references + * objects that are not yet initialized, that reference will just be NULL but the object + * will be considered ready already. + * + * For NMActiveConnection referencing a NMRemoteConnection don't do that. Here we wait for the + * NMRemoteConnection to be ready as well. This is somewhat arbitrary special casing, but + * the effect is that when nm_client_add_and_activate*() returns, the NMActiveConnection already + * references a initialized NMRemoteConnection. + */ + if (!nml_dbus_property_o_is_ready_fully (&priv->property_o[PROPERTY_O_IDX_CONNECTION])) + return FALSE; + + return NM_OBJECT_CLASS (nm_active_connection_parent_class)->is_ready (nmobj); +} /*****************************************************************************/ @@ -550,6 +577,8 @@ nm_active_connection_class_init (NMActiveConnectionClass *klass) object_class->get_property = get_property; object_class->finalize = finalize; + nm_object_class->is_ready = is_ready; + _NM_OBJECT_CLASS_INIT_PRIV_PTR_INDIRECT (nm_object_class, NMActiveConnection); _NM_OBJECT_CLASS_INIT_PROPERTY_O_FIELDS_N (nm_object_class, NMActiveConnectionPrivate, property_o); diff --git a/libnm/nm-client.c b/libnm/nm-client.c index 4fa1c1f3..0c4daab2 100644 --- a/libnm/nm-client.c +++ b/libnm/nm-client.c @@ -1256,7 +1256,7 @@ nml_dbus_object_obj_changed_link (NMClient *self, nm_assert (changed_type != NML_DBUS_OBJ_CHANGED_TYPE_NONE); if (!NM_FLAGS_ALL ((NMLDBusObjChangedType ) dbobj->obj_changed_type, changed_type)) - NML_NMCLIENT_LOG_T (self, "[%s] changed-type 0x%02x linked", dbobj->dbus_path->str, (guint) changed_type); + NML_NMCLIENT_LOG_T (self, "[%s]: changed-type 0x%02x linked", dbobj->dbus_path->str, (guint) changed_type); if (dbobj->obj_changed_type == NML_DBUS_OBJ_CHANGED_TYPE_NONE) { NMClientPrivate *priv; @@ -1302,7 +1302,7 @@ nml_dbus_object_obj_changed_consume (NMClient *self, if (dbobj->obj_changed_type == NML_DBUS_OBJ_CHANGED_TYPE_NONE) { c_list_unlink (&dbobj->obj_changed_lst); nm_assert (changed_type_res != NML_DBUS_OBJ_CHANGED_TYPE_NONE); - NML_NMCLIENT_LOG_T (self, "[%s] changed-type 0x%02x consumed", dbobj->dbus_path->str, (guint) changed_type_res); + NML_NMCLIENT_LOG_T (self, "[%s]: changed-type 0x%02x consumed", dbobj->dbus_path->str, (guint) changed_type_res); return changed_type_res; } @@ -1310,7 +1310,7 @@ nml_dbus_object_obj_changed_consume (NMClient *self, nm_assert (!c_list_contains (&priv->obj_changed_lst_head, &dbobj->obj_changed_lst)); nm_c_list_move_tail (&priv->obj_changed_lst_head, &dbobj->obj_changed_lst); - NML_NMCLIENT_LOG_T (self, "[%s] changed-type 0x%02x consumed (still has 0x%02x)", dbobj->dbus_path->str, (guint) changed_type_res, (guint) dbobj->obj_changed_type); + NML_NMCLIENT_LOG_T (self, "[%s]: changed-type 0x%02x consumed (still has 0x%02x)", dbobj->dbus_path->str, (guint) changed_type_res, (guint) dbobj->obj_changed_type); return changed_type_res; } @@ -1567,6 +1567,14 @@ nml_dbus_property_o_is_ready (const NMLDBusPropertyO *pr_o) || !pr_o->owner_dbobj; } +gboolean +nml_dbus_property_o_is_ready_fully (const NMLDBusPropertyO *pr_o) +{ + return !pr_o->owner_dbobj + || !pr_o->obj_watcher + || pr_o->nmobj; +} + static void nml_dbus_property_o_notify_changed (NMLDBusPropertyO *pr_o, NMClient *self) diff --git a/libnm/nm-libnm-utils.h b/libnm/nm-libnm-utils.h index 8ac05d70..9138e08c 100644 --- a/libnm/nm-libnm-utils.h +++ b/libnm/nm-libnm-utils.h @@ -210,6 +210,8 @@ gpointer nml_dbus_property_o_get_obj (NMLDBusPropertyO *pr_o); gboolean nml_dbus_property_o_is_ready (const NMLDBusPropertyO *pr_o); +gboolean nml_dbus_property_o_is_ready_fully (const NMLDBusPropertyO *pr_o); + void nml_dbus_property_o_clear (NMLDBusPropertyO *pr_o, NMClient *client); diff --git a/libnm/nm-property-docs.xml b/libnm/nm-property-docs.xml index cdf60f8c..fe5672a1 100644 --- a/libnm/nm-property-docs.xml +++ b/libnm/nm-property-docs.xml @@ -13,9 +13,9 @@ - + - + @@ -177,10 +177,10 @@ - + - + @@ -201,10 +201,10 @@ - + - + @@ -213,6 +213,7 @@ + diff --git a/libnm/nm-settings-docs.xml b/libnm/nm-settings-docs.xml index 08178df5..68f09cdb 100644 --- a/libnm/nm-settings-docs.xml +++ b/libnm/nm-settings-docs.xml @@ -13,9 +13,9 @@ - + - + @@ -180,10 +180,10 @@ - + - + @@ -206,10 +206,10 @@ - + - + @@ -218,6 +218,7 @@ + diff --git a/libnm/nm-settings-ifcfg-rh-docs.xml b/libnm/nm-settings-ifcfg-rh-docs.xml index 7bed7f4d..9934e4de 100644 --- a/libnm/nm-settings-ifcfg-rh-docs.xml +++ b/libnm/nm-settings-ifcfg-rh-docs.xml @@ -219,6 +219,7 @@ but in route6-* file instead in the form of command line for 'ip route add& + +