about summary refs log tree commit diff
path: root/src/nm-act-request.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nm-act-request.c')
-rw-r--r--src/nm-act-request.c30
1 files changed, 19 insertions, 11 deletions
diff --git a/src/nm-act-request.c b/src/nm-act-request.c
index 3a04667b..03964896 100644
--- a/src/nm-act-request.c
+++ b/src/nm-act-request.c
@@ -495,31 +495,39 @@ static void
 get_property (GObject *object, guint prop_id,
               GValue *value, GParamSpec *pspec)
 {
+	NMActiveConnection *active;
 	NMDevice *device;
-
-	device = nm_active_connection_get_device (NM_ACTIVE_CONNECTION (object));
-	if (!device) {
-		g_value_set_string (value, "/");
-		return;
-	}
+	char *name;
 
 	switch (prop_id) {
 	case PROP_IP4_CONFIG:
-		g_object_get_property (G_OBJECT (device), NM_DEVICE_IP4_CONFIG, value);
+		name = NM_DEVICE_IP4_CONFIG;
 		break;
 	case PROP_DHCP4_CONFIG:
-		g_object_get_property (G_OBJECT (device), NM_DEVICE_DHCP4_CONFIG, value);
+		name = NM_DEVICE_DHCP4_CONFIG;
 		break;
 	case PROP_IP6_CONFIG:
-		g_object_get_property (G_OBJECT (device), NM_DEVICE_IP6_CONFIG, value);
+		name = NM_DEVICE_IP6_CONFIG;
 		break;
 	case PROP_DHCP6_CONFIG:
-		g_object_get_property (G_OBJECT (device), NM_DEVICE_DHCP6_CONFIG, value);
+		name = NM_DEVICE_DHCP6_CONFIG;
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
+		return;
 	}
+
+	active = NM_ACTIVE_CONNECTION (object);
+	device = nm_active_connection_get_device (active);
+	if (   !device
+	    || !NM_IN_SET (nm_active_connection_get_state (active),
+	                   NM_ACTIVE_CONNECTION_STATE_ACTIVATED,
+	                   NM_ACTIVE_CONNECTION_STATE_DEACTIVATING)) {
+		g_value_set_string (value, "/");
+		return;
+	}
+
+	g_object_get_property (G_OBJECT (device), name, value);
 }
 
 static void