X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fipconfig.c;h=3b85827f329c9bd322579d49946042b1a88bbcaa;hb=83cbe1a9649ee49cb237558b3af8473d7899165a;hp=5f6e950d27288cc81744a4aa5be7d626c65d9b25;hpb=5bf6e62fa5cdf7d9a19af04948e53b7db07abbc8;p=platform%2Fupstream%2Fconnman.git diff --git a/src/ipconfig.c b/src/ipconfig.c index 5f6e950..3b85827 100644 --- a/src/ipconfig.c +++ b/src/ipconfig.c @@ -1849,6 +1849,7 @@ static int string2privacy(const char *privacy) void __connman_ipconfig_append_ipv4(struct connman_ipconfig *ipconfig, DBusMessageIter *iter) { + struct connman_ipaddress *append_addr = NULL; const char *str; DBG(""); @@ -1862,33 +1863,52 @@ void __connman_ipconfig_append_ipv4(struct connman_ipconfig *ipconfig, connman_dbus_dict_append_basic(iter, "Method", DBUS_TYPE_STRING, &str); - if (ipconfig->system == NULL) + append_addr = ipconfig->system; + + switch (ipconfig->method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + return; + + case CONNMAN_IPCONFIG_METHOD_FIXED: + if (append_addr == NULL) + append_addr = ipconfig->address; + break; + + case CONNMAN_IPCONFIG_METHOD_MANUAL: + case CONNMAN_IPCONFIG_METHOD_DHCP: + case CONNMAN_IPCONFIG_METHOD_AUTO: + break; + } + + if (append_addr == NULL) return; - if (ipconfig->system->local != NULL) { + if (append_addr->local != NULL) { in_addr_t addr; struct in_addr netmask; char *mask; connman_dbus_dict_append_basic(iter, "Address", - DBUS_TYPE_STRING, &ipconfig->system->local); + DBUS_TYPE_STRING, &append_addr->local); - addr = 0xffffffff << (32 - ipconfig->system->prefixlen); + addr = 0xffffffff << (32 - append_addr->prefixlen); netmask.s_addr = htonl(addr); mask = inet_ntoa(netmask); connman_dbus_dict_append_basic(iter, "Netmask", DBUS_TYPE_STRING, &mask); } - if (ipconfig->system->gateway != NULL) + if (append_addr->gateway != NULL) connman_dbus_dict_append_basic(iter, "Gateway", - DBUS_TYPE_STRING, &ipconfig->system->gateway); + DBUS_TYPE_STRING, &append_addr->gateway); } void __connman_ipconfig_append_ipv6(struct connman_ipconfig *ipconfig, DBusMessageIter *iter, struct connman_ipconfig *ipconfig_ipv4) { + struct connman_ipaddress *append_addr = NULL; const char *str, *privacy; DBG(""); @@ -1908,20 +1928,38 @@ void __connman_ipconfig_append_ipv6(struct connman_ipconfig *ipconfig, connman_dbus_dict_append_basic(iter, "Method", DBUS_TYPE_STRING, &str); - if (ipconfig->system == NULL) + append_addr = ipconfig->system; + + switch (ipconfig->method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + return; + + case CONNMAN_IPCONFIG_METHOD_FIXED: + if (append_addr == NULL) + append_addr = ipconfig->address; + break; + + case CONNMAN_IPCONFIG_METHOD_MANUAL: + case CONNMAN_IPCONFIG_METHOD_DHCP: + case CONNMAN_IPCONFIG_METHOD_AUTO: + break; + } + + if (append_addr == NULL) return; - if (ipconfig->system->local != NULL) { + if (append_addr->local != NULL) { connman_dbus_dict_append_basic(iter, "Address", - DBUS_TYPE_STRING, &ipconfig->system->local); + DBUS_TYPE_STRING, &append_addr->local); connman_dbus_dict_append_basic(iter, "PrefixLength", DBUS_TYPE_BYTE, - &ipconfig->system->prefixlen); + &append_addr->prefixlen); } - if (ipconfig->system->gateway != NULL) + if (append_addr->gateway != NULL) connman_dbus_dict_append_basic(iter, "Gateway", - DBUS_TYPE_STRING, &ipconfig->system->gateway); + DBUS_TYPE_STRING, &append_addr->gateway); privacy = privacy2string(ipconfig->ipv6_privacy_config); connman_dbus_dict_append_basic(iter, "Privacy",