From: Marcel Holtmann Date: Mon, 5 Jan 2009 21:26:58 +0000 (+0100) Subject: Add support for IPv4 details in connection interface X-Git-Tag: 2.0_alpha~4123 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9de932200a6f5b7bce5015bd2faee005da77e225;p=framework%2Fconnectivity%2Fconnman.git Add support for IPv4 details in connection interface --- diff --git a/include/element.h b/include/element.h index 4824731..70e1ae4 100644 --- a/include/element.h +++ b/include/element.h @@ -30,6 +30,7 @@ extern "C" { #include #include +#include /** * SECTION:element @@ -101,6 +102,7 @@ struct connman_element { GSList *properties; struct { + enum connman_ipv4_method method; gchar *address; gchar *netmask; gchar *gateway; diff --git a/src/connection.c b/src/connection.c index 79ae34d..01a84cc 100644 --- a/src/connection.c +++ b/src/connection.c @@ -205,6 +205,8 @@ static DBusMessage *get_properties(DBusConnection *conn, struct connman_element *element = data; DBusMessage *reply; DBusMessageIter array, dict; + const char *method = NULL; + const char *address = NULL, *netmask = NULL, *gateway = NULL; DBG("conn %p", conn); @@ -226,6 +228,32 @@ static DBusMessage *get_properties(DBusConnection *conn, connman_dbus_dict_append_variant(&dict, "Default", DBUS_TYPE_BOOLEAN, &element->enabled); + connman_element_get_value(element, + CONNMAN_PROPERTY_ID_IPV4_METHOD, &method); + + connman_element_get_value(element, + CONNMAN_PROPERTY_ID_IPV4_ADDRESS, &address); + connman_element_get_value(element, + CONNMAN_PROPERTY_ID_IPV4_NETMASK, &netmask); + connman_element_get_value(element, + CONNMAN_PROPERTY_ID_IPV4_GATEWAY, &gateway); + + if (method != NULL) + connman_dbus_dict_append_variant(&dict, "IPv4.Method", + DBUS_TYPE_STRING, &method); + + if (address != NULL) + connman_dbus_dict_append_variant(&dict, "IPv4.Address", + DBUS_TYPE_STRING, &address); + + if (netmask != NULL) + connman_dbus_dict_append_variant(&dict, "IPv4.Netmask", + DBUS_TYPE_STRING, &netmask); + + if (gateway != NULL) + connman_dbus_dict_append_variant(&dict, "IPv4.Gateway", + DBUS_TYPE_STRING, &gateway); + dbus_message_iter_close_container(&array, &dict); return reply; diff --git a/src/element.c b/src/element.c index 129fa62..a81f755 100644 --- a/src/element.c +++ b/src/element.c @@ -1005,6 +1005,14 @@ int connman_element_get_value(struct connman_element *element, return -EINVAL; switch (id) { + case CONNMAN_PROPERTY_ID_IPV4_METHOD: + if (element->ipv4.method == CONNMAN_IPV4_METHOD_UNKNOWN) + return connman_element_get_value(element->parent, + id, value); + __connman_element_lock(element); + *((const char **) value) = __connman_ipv4_method2string(element->ipv4.method); + __connman_element_unlock(element); + break; case CONNMAN_PROPERTY_ID_IPV4_ADDRESS: if (element->ipv4.address == NULL) return connman_element_get_value(element->parent, @@ -1351,6 +1359,9 @@ int connman_element_register(struct connman_element *element, } } + if (element->type == CONNMAN_ELEMENT_TYPE_DHCP) + element->ipv4.method = CONNMAN_IPV4_METHOD_DHCP; + element->parent = parent; __connman_element_unlock(element);