Hi, I've noticed "connman_network_set_connected" is called at the end of "set_connected" function, however if method is ipv4, ipv6 is let to "unknown" and a "return" is done before calling the function which does the "ipconfig" of gsm IP address. Please find the correction I suggest as first approach:
regards Thierry >From 92332cf29bc10372f915d687cfc95eb64789a6a9 Mon Sep 17 00:00:00 2001 From: Thierry Boureille <[email protected]> Date: Tue, 28 Jun 2011 13:35:13 +0200 Subject: [PATCH] oFono : Fix connection which can't be called in ipv4 --- plugins/ofono.c | 68 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 38 insertions(+), 30 deletions(-) diff --git a/plugins/ofono.c b/plugins/ofono.c index 0c23462..3152b24 100644 --- a/plugins/ofono.c +++ b/plugins/ofono.c @@ -419,44 +419,52 @@ static void set_connected(struct network_info *info, connman_bool_t connected) { DBG("network %p connected %d", info->network, connected); + if (info->ipv4_method != CONNMAN_IPCONFIG_METHOD_UNKNOWN) { - switch (info->ipv4_method) { - case CONNMAN_IPCONFIG_METHOD_UNKNOWN: - case CONNMAN_IPCONFIG_METHOD_OFF: - case CONNMAN_IPCONFIG_METHOD_MANUAL: - case CONNMAN_IPCONFIG_METHOD_AUTO: - return; + switch (info->ipv4_method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + case CONNMAN_IPCONFIG_METHOD_MANUAL: + case CONNMAN_IPCONFIG_METHOD_AUTO: + return; - case CONNMAN_IPCONFIG_METHOD_FIXED: - connman_network_set_ipv4_method(info->network, - info->ipv4_method); - connman_network_set_ipaddress(info->network, - &info->ipv4_address); + case CONNMAN_IPCONFIG_METHOD_FIXED: - break; + connman_network_set_ipv4_method(info->network, + info->ipv4_method); - case CONNMAN_IPCONFIG_METHOD_DHCP: - connman_network_set_ipv4_method(info->network, - info->ipv4_method); + connman_network_set_ipaddress(info->network, + &info->ipv4_address); - break; - } + break; - switch (info->ipv6_method) { - case CONNMAN_IPCONFIG_METHOD_UNKNOWN: - case CONNMAN_IPCONFIG_METHOD_OFF: - case CONNMAN_IPCONFIG_METHOD_MANUAL: - case CONNMAN_IPCONFIG_METHOD_DHCP: - case CONNMAN_IPCONFIG_METHOD_AUTO: - return; + case CONNMAN_IPCONFIG_METHOD_DHCP: + connman_network_set_ipv4_method(info->network, + info->ipv4_method); + + break; + } - case CONNMAN_IPCONFIG_METHOD_FIXED: - connman_network_set_ipv6_method(info->network, - info->ipv6_method); - connman_network_set_ipaddress(info->network, - &info->ipv6_address); + } else if (info->ipv6_method != CONNMAN_IPCONFIG_METHOD_UNKNOWN) { - break; + switch (info->ipv6_method) { + case CONNMAN_IPCONFIG_METHOD_UNKNOWN: + case CONNMAN_IPCONFIG_METHOD_OFF: + case CONNMAN_IPCONFIG_METHOD_MANUAL: + case CONNMAN_IPCONFIG_METHOD_DHCP: + case CONNMAN_IPCONFIG_METHOD_AUTO: + return; + + case CONNMAN_IPCONFIG_METHOD_FIXED: + connman_network_set_ipv6_method(info->network, + info->ipv6_method); + connman_network_set_ipaddress(info->network, + &info->ipv6_address); + + break; + } + } else { + return; } connman_network_set_connected(info->network, connected); -- 1.7.3 _______________________________________________ connman mailing list [email protected] http://lists.connman.net/listinfo/connman
