diff options
Diffstat (limited to 'src/nm-act-request.c')
| -rw-r--r-- | src/nm-act-request.c | 30 |
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 |