Re: [RFC v2] network: Merge identical ipconfig code paths
On Wed, 2015-02-11 at 13:54 +0200, Patrik Flykt wrote: Configure IPv4 and IPv6 configurations only once in __connman_network_enable_ipconfig() and use this function when setting the network connected. Remove obsolete function and rework the rest to centralise configuration state and error reporting. The variable network-connecting is true as long as the IPv4 or IPv6 address configuration phase is ongoing. Fixed according to Jukka's comment and applied. Cheers, Patrik ___ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman
Re: [RFC v2] network: Merge identical ipconfig code paths
Hi, tested this also with jolla's fork and seems to be working (played with it only 10min). Br, Pasi On 11.02.2015 13:54, Patrik Flykt wrote: Configure IPv4 and IPv6 configurations only once in __connman_network_enable_ipconfig() and use this function when setting the network connected. Remove obsolete function and rework the rest to centralise configuration state and error reporting. The variable network-connecting is true as long as the IPv4 or IPv6 address configuration phase is ongoing. --- Hi, This is a fairly large patch that removes duplicate code in set_connected() in favor of using the one in __connman_network_set_ipconfig(). There is no change in functionality in this patch. v2 fixes a glitch with variable naming wrt rebasing Please test, Patrik ___ connman mailing list connman@connman.net https://lists.connman.net/mailman/listinfo/connman
Re: [RFC v2] network: Merge identical ipconfig code paths
Hi Patrik, On ke, 2015-02-11 at 13:54 +0200, Patrik Flykt wrote: Configure IPv4 and IPv6 configurations only once in __connman_network_enable_ipconfig() and use this function when setting the network connected. Remove obsolete function and rework the rest to centralise configuration state and error reporting. The variable network-connecting is true as long as the IPv4 or IPv6 address configuration phase is ongoing. --- Hi, This is a fairly large patch that removes duplicate code in set_connected() in favor of using the one in __connman_network_set_ipconfig(). There is no change in functionality in this patch. v2 fixes a glitch with variable naming wrt rebasing Please test, Patrik src/connman.h | 5 +- src/network.c | 218 +- src/service.c | 21 +++--- 3 files changed, 80 insertions(+), 164 deletions(-) diff --git a/src/connman.h b/src/connman.h index 8d4a692..d4765cc 100644 --- a/src/connman.h +++ b/src/connman.h @@ -587,9 +587,8 @@ int __connman_network_connect(struct connman_network *network); int __connman_network_disconnect(struct connman_network *network); int __connman_network_clear_ipconfig(struct connman_network *network, struct connman_ipconfig *ipconfig); -int __connman_network_set_ipconfig(struct connman_network *network, - struct connman_ipconfig *ipconfig_ipv4, - struct connman_ipconfig *ipconfig_ipv6); +int __connman_network_enable_ipconfig(struct connman_network *network, + struct connman_ipconfig *ipconfig); const char *__connman_network_get_type(struct connman_network *network); const char *__connman_network_get_group(struct connman_network *network); diff --git a/src/network.c b/src/network.c index 0cef220..253966e 100644 --- a/src/network.c +++ b/src/network.c @@ -153,10 +153,6 @@ static void dhcp_success(struct connman_network *network) if (!service) goto err; - connman_network_set_associating(network, false); - - network-connecting = false; - ipconfig_ipv4 = __connman_service_get_ip4config(service); DBG(lease acquired for ipconfig %p, ipconfig_ipv4); @@ -188,9 +184,6 @@ static void dhcp_failure(struct connman_network *network) if (!service) return; - connman_network_set_associating(network, false); - network-connecting = false; - ipconfig_ipv4 = __connman_service_get_ip4config(service); DBG(lease lost for ipconfig %p, ipconfig_ipv4); @@ -206,55 +199,24 @@ static void dhcp_callback(struct connman_ipconfig *ipconfig, struct connman_network *network, bool success, gpointer data) { + network-connecting = false; + if (success) dhcp_success(network); else dhcp_failure(network); } -static int set_connected_fixed(struct connman_network *network) -{ - struct connman_service *service; - struct connman_ipconfig *ipconfig_ipv4; - int err; - - DBG(); - - service = connman_service_lookup_from_network(network); - - ipconfig_ipv4 = __connman_service_get_ip4config(service); - - set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV4); - - network-connecting = false; - - connman_network_set_associating(network, false); - - err = __connman_ipconfig_address_add(ipconfig_ipv4); - if (err 0) - goto err; - - err = __connman_ipconfig_gateway_add(ipconfig_ipv4); - if (err 0) - goto err; - - return 0; - -err: - connman_network_set_error(network, - CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL); - - return err; -} - -static void set_connected_manual(struct connman_network *network) +static int set_connected_manual(struct connman_network *network) { + int err = 0; struct connman_service *service; struct connman_ipconfig *ipconfig; - int err; DBG(network %p, network); + network-connecting = false; + service = connman_service_lookup_from_network(network); ipconfig = __connman_service_get_ip4config(service); @@ -262,8 +224,6 @@ static void set_connected_manual(struct connman_network *network) if (!__connman_ipconfig_get_local(ipconfig)) __connman_service_read_ip4config(service); - set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV4); - err = __connman_ipconfig_address_add(ipconfig); if (err 0) goto err; @@ -272,16 +232,8 @@ static void set_connected_manual(struct connman_network *network) if (err 0) goto err; - network-connecting = false; - - connman_network_set_associating(network, false); - - return; - err: -
[RFC v2] network: Merge identical ipconfig code paths
Configure IPv4 and IPv6 configurations only once in __connman_network_enable_ipconfig() and use this function when setting the network connected. Remove obsolete function and rework the rest to centralise configuration state and error reporting. The variable network-connecting is true as long as the IPv4 or IPv6 address configuration phase is ongoing. --- Hi, This is a fairly large patch that removes duplicate code in set_connected() in favor of using the one in __connman_network_set_ipconfig(). There is no change in functionality in this patch. v2 fixes a glitch with variable naming wrt rebasing Please test, Patrik src/connman.h | 5 +- src/network.c | 218 +- src/service.c | 21 +++--- 3 files changed, 80 insertions(+), 164 deletions(-) diff --git a/src/connman.h b/src/connman.h index 8d4a692..d4765cc 100644 --- a/src/connman.h +++ b/src/connman.h @@ -587,9 +587,8 @@ int __connman_network_connect(struct connman_network *network); int __connman_network_disconnect(struct connman_network *network); int __connman_network_clear_ipconfig(struct connman_network *network, struct connman_ipconfig *ipconfig); -int __connman_network_set_ipconfig(struct connman_network *network, - struct connman_ipconfig *ipconfig_ipv4, - struct connman_ipconfig *ipconfig_ipv6); +int __connman_network_enable_ipconfig(struct connman_network *network, + struct connman_ipconfig *ipconfig); const char *__connman_network_get_type(struct connman_network *network); const char *__connman_network_get_group(struct connman_network *network); diff --git a/src/network.c b/src/network.c index 0cef220..253966e 100644 --- a/src/network.c +++ b/src/network.c @@ -153,10 +153,6 @@ static void dhcp_success(struct connman_network *network) if (!service) goto err; - connman_network_set_associating(network, false); - - network-connecting = false; - ipconfig_ipv4 = __connman_service_get_ip4config(service); DBG(lease acquired for ipconfig %p, ipconfig_ipv4); @@ -188,9 +184,6 @@ static void dhcp_failure(struct connman_network *network) if (!service) return; - connman_network_set_associating(network, false); - network-connecting = false; - ipconfig_ipv4 = __connman_service_get_ip4config(service); DBG(lease lost for ipconfig %p, ipconfig_ipv4); @@ -206,55 +199,24 @@ static void dhcp_callback(struct connman_ipconfig *ipconfig, struct connman_network *network, bool success, gpointer data) { + network-connecting = false; + if (success) dhcp_success(network); else dhcp_failure(network); } -static int set_connected_fixed(struct connman_network *network) -{ - struct connman_service *service; - struct connman_ipconfig *ipconfig_ipv4; - int err; - - DBG(); - - service = connman_service_lookup_from_network(network); - - ipconfig_ipv4 = __connman_service_get_ip4config(service); - - set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV4); - - network-connecting = false; - - connman_network_set_associating(network, false); - - err = __connman_ipconfig_address_add(ipconfig_ipv4); - if (err 0) - goto err; - - err = __connman_ipconfig_gateway_add(ipconfig_ipv4); - if (err 0) - goto err; - - return 0; - -err: - connman_network_set_error(network, - CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL); - - return err; -} - -static void set_connected_manual(struct connman_network *network) +static int set_connected_manual(struct connman_network *network) { + int err = 0; struct connman_service *service; struct connman_ipconfig *ipconfig; - int err; DBG(network %p, network); + network-connecting = false; + service = connman_service_lookup_from_network(network); ipconfig = __connman_service_get_ip4config(service); @@ -262,8 +224,6 @@ static void set_connected_manual(struct connman_network *network) if (!__connman_ipconfig_get_local(ipconfig)) __connman_service_read_ip4config(service); - set_configuration(network, CONNMAN_IPCONFIG_TYPE_IPV4); - err = __connman_ipconfig_address_add(ipconfig); if (err 0) goto err; @@ -272,16 +232,8 @@ static void set_connected_manual(struct connman_network *network) if (err 0) goto err; - network-connecting = false; - - connman_network_set_associating(network, false); - - return; - err: - connman_network_set_error(network, - CONNMAN_NETWORK_ERROR_CONFIGURE_FAIL); -