summary refs log tree commit diff
path: root/src/nm-active-connection.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2020-06-28 18:58:14 +0200
committerMichael Biebl <biebl@debian.org>2020-06-28 18:58:14 +0200
commita54ac63bbf9b2c71026ac9028a8ffaf186cf3c82 (patch)
tree6a32883bd916c4096357b35298beff6db8bcd0b5 /src/nm-active-connection.c
parent45e8e1149027529194982212c804c0468aa01d98 (diff)
New upstream version 1.25.90 upstream/1.25.90
Diffstat (limited to 'src/nm-active-connection.c')
-rw-r--r--src/nm-active-connection.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/nm-active-connection.c b/src/nm-active-connection.c
index f1bb1ede..08037ebe 100644
--- a/src/nm-active-connection.c
+++ b/src/nm-active-connection.c
@@ -163,6 +163,7 @@ NM_UTILS_FLAGS2STR_DEFINE (_state_flags_to_string, NMActivationStateFlags,
 	NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_IP6_READY,                            "ip6-ready"),
 	NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_MASTER_HAS_SLAVES,                    "master-has-slaves"),
 	NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_LIFETIME_BOUND_TO_PROFILE_VISIBILITY, "lifetime-bound-to-profile-visibility"),
+	NM_UTILS_FLAGS2STR (NM_ACTIVATION_STATE_FLAG_EXTERNAL,                             "external"),
 );
 
 /*****************************************************************************/
@@ -340,7 +341,12 @@ nm_active_connection_set_state_fail (NMActiveConnection *self,
 NMActivationStateFlags
 nm_active_connection_get_state_flags (NMActiveConnection *self)
 {
-	return NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->state_flags;
+	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
+
+	return   priv->state_flags
+	       | (  priv->activation_type == NM_ACTIVATION_TYPE_EXTERNAL
+	          ? NM_ACTIVATION_STATE_FLAG_EXTERNAL
+	          : NM_ACTIVATION_STATE_FLAG_NONE);
 }
 
 void
@@ -351,6 +357,8 @@ nm_active_connection_set_state_flags_full (NMActiveConnection *self,
 	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
 	NMActivationStateFlags f;
 
+	nm_assert (!NM_FLAGS_HAS (mask, NM_ACTIVATION_STATE_FLAG_EXTERNAL));
+
 	f = (priv->state_flags & ~mask) | (state_flags & mask);
 	if (f != priv->state_flags) {
 		char buf1[_NM_ACTIVATION_STATE_FLAG_TO_STRING_BUFSIZE];
@@ -869,10 +877,14 @@ _set_activation_type (NMActiveConnection *self,
                       NMActivationType activation_type)
 {
 	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
+	gboolean state_flags_changed;
 
 	if (priv->activation_type == activation_type)
 		return;
 
+	state_flags_changed =    (priv->activation_type == NM_ACTIVATION_TYPE_EXTERNAL)
+	                      != (activation_type == NM_ACTIVATION_TYPE_EXTERNAL);
+
 	priv->activation_type = activation_type;
 
 	if (priv->settings_connection.obj) {
@@ -881,6 +893,9 @@ _set_activation_type (NMActiveConnection *self,
 		else
 			g_signal_handlers_disconnect_by_func (priv->settings_connection.obj, _settings_connection_flags_changed, self);
 	}
+
+	if (state_flags_changed)
+		_notify (self, PROP_STATE_FLAGS);
 }
 
 static void
@@ -953,7 +968,7 @@ _settings_connection_flags_changed (NMSettingsConnection *settings_connection,
 	nm_assert (NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->settings_connection.obj == settings_connection);
 
 	if (NM_FLAGS_HAS (nm_settings_connection_get_flags (settings_connection),
-	                  NM_SETTINGS_CONNECTION_INT_FLAGS_NM_GENERATED))
+	                  NM_SETTINGS_CONNECTION_INT_FLAGS_EXTERNAL))
 		return;
 
 	_set_activation_type_managed (self);
@@ -1253,7 +1268,8 @@ static void
 get_property (GObject *object, guint prop_id,
               GValue *value, GParamSpec *pspec)
 {
-	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (object);
+	NMActiveConnection *self = NM_ACTIVE_CONNECTION (object);
+	NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
 	char **strv;
 	NMDevice *master_device = NULL;
 
@@ -1300,7 +1316,7 @@ get_property (GObject *object, guint prop_id,
 		}
 		break;
 	case PROP_STATE_FLAGS:
-		g_value_set_uint (value, priv->state_flags);
+		g_value_set_uint (value, nm_active_connection_get_state_flags (self));
 		break;
 	case PROP_DEFAULT:
 		g_value_set_boolean (value, priv->is_default);