Export device and network names via service interface
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 1 Apr 2009 03:30:06 +0000 (20:30 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 1 Apr 2009 03:30:06 +0000 (20:30 -0700)
src/device.c
src/profile.c

index e8d46e9..1d43855 100644 (file)
@@ -298,14 +298,9 @@ static DBusMessage *get_properties(DBusConnection *conn,
                        DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
                        DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
 
-       str = type2description(device->type);
-       if (str != NULL && device->interface != NULL) {
-               char *name = g_strdup_printf("%s (%s)", str, device->interface);
-               if (name != NULL)
-                       connman_dbus_dict_append_variant(&dict, "Name",
-                                               DBUS_TYPE_STRING, &name);
-               g_free(name);
-       }
+       if (device->name != NULL)
+               connman_dbus_dict_append_variant(&dict, "Name",
+                                       DBUS_TYPE_STRING, &device->name);
 
        str = type2string(device->type);
        if (str != NULL)
@@ -930,6 +925,7 @@ struct connman_device *connman_device_create(const char *node,
        device->element.ipv4.method = CONNMAN_IPV4_METHOD_DHCP;
 
        device->type   = type;
+       device->name   = g_strdup(type2description(device->type));
        device->mode   = CONNMAN_DEVICE_MODE_UNKNOWN;
        device->policy = CONNMAN_DEVICE_POLICY_AUTO;
 
@@ -1061,6 +1057,13 @@ void connman_device_set_interface(struct connman_device *device,
 
        g_free(device->interface);
        device->interface = g_strdup(interface);
+
+       if (device->name == NULL) {
+               const char *str = type2description(device->type);
+               if (str != NULL && device->interface != NULL)
+                       device->name = g_strdup_printf("%s (%s)", str,
+                                                       device->interface);
+       }
 }
 
 /**
index 5115aad..e5aca9f 100644 (file)
@@ -31,8 +31,9 @@
 #define PROFILE_DEFAULT  "/profile/default"
 
 struct connman_group {
-       char *type;
        char *path;
+       char *type;
+       char *name;
        GSList *networks;
 };
 
@@ -64,6 +65,10 @@ static DBusMessage *get_properties(DBusConnection *conn,
                connman_dbus_dict_append_variant(&dict, "Type",
                                        DBUS_TYPE_STRING, &group->type);
 
+       if (group->name != NULL)
+               connman_dbus_dict_append_variant(&dict, "Name",
+                                       DBUS_TYPE_STRING, &group->name);
+
        dbus_message_iter_close_container(&array, &dict);
 
        return reply;
@@ -83,6 +88,7 @@ static void free_group(gpointer data)
        g_dbus_unregister_interface(connection, group->path,
                                                CONNMAN_SERVICE_INTERFACE);
 
+       g_free(group->name);
        g_free(group->type);
        g_free(group->path);
        g_free(group);
@@ -136,6 +142,7 @@ int __connman_profile_add_device(struct connman_device *device)
                return -EINVAL;
 
        group->type = g_strdup(__connman_device_get_type(device));
+       group->name = g_strdup(connman_device_get_string(device, "Name"));
 
        return 0;
 }
@@ -168,8 +175,10 @@ int __connman_profile_add_network(struct connman_network *network)
                return -EINVAL;
 
        g_free(group->type);
+       g_free(group->name);
 
        group->type = g_strdup(__connman_network_get_type(network));
+       group->name = g_strdup(connman_network_get_string(network, "Name"));
 
        return 0;
 }