Re: [PATCH 06/45] provider: Handle VPN configuration and association states

Denis Kenzior <[email protected]> Fri, 1 Aug 2025 14:34:10 -0500
Newsgroups dev.linux.lists.connman
Message-ID <[email protected]>
Hi Jussi,

On 7/11/25 9:26 AM, Jussi Laakkonen wrote:
> Set the association state when VPN is waiting for user input as an
> initial state after connecting the provider. Set the configuration
> state (as it is declaced to be the string to connect state in VPN)
> accordingly as well. Start VPN connect timeout in configuration
> state with restart option to ensure that the timeout begins from the
> last known configuration (connect) state.
> ---
>   include/provider.h |  9 +++++----
>   src/provider.c     | 22 +++++++++++++++++++++-
>   2 files changed, 26 insertions(+), 5 deletions(-)
> 
> diff --git a/include/provider.h b/include/provider.h
> index 3f2e36ad..aac47527 100644
> --- a/include/provider.h
> +++ b/include/provider.h
> @@ -44,10 +44,11 @@ enum connman_provider_type {
>   enum connman_provider_state {
>   	CONNMAN_PROVIDER_STATE_UNKNOWN       = 0,
>   	CONNMAN_PROVIDER_STATE_IDLE          = 1,
> -	CONNMAN_PROVIDER_STATE_CONNECT       = 2,
> -	CONNMAN_PROVIDER_STATE_READY         = 3,
> -	CONNMAN_PROVIDER_STATE_DISCONNECT    = 4,
> -	CONNMAN_PROVIDER_STATE_FAILURE       = 5,
> +	CONNMAN_PROVIDER_STATE_ASSOCIATION   = 2,
> +	CONNMAN_PROVIDER_STATE_CONNECT       = 3,
> +	CONNMAN_PROVIDER_STATE_READY         = 4,
> +	CONNMAN_PROVIDER_STATE_DISCONNECT    = 5,
> +	CONNMAN_PROVIDER_STATE_FAILURE       = 6,
>   };
>   
>   enum connman_provider_error {
> diff --git a/src/provider.c b/src/provider.c
> index 1f0ce10d..ab4aeafb 100644
> --- a/src/provider.c
> +++ b/src/provider.c
> @@ -126,6 +126,22 @@ static int provider_indicate_state(struct connman_provider *provider,
>   {
>   	DBG("state %d", state);
>   
> +	switch (state) {
> +	case CONNMAN_SERVICE_STATE_UNKNOWN:
> +	case CONNMAN_SERVICE_STATE_IDLE:
> +	case CONNMAN_SERVICE_STATE_ASSOCIATION:
> +		break;
> +	case CONNMAN_SERVICE_STATE_CONFIGURATION:
> +		__connman_service_start_connect_timeout(provider->vpn_service,
> +								true);

Possibly handle this inside service.c?

> +		break;
> +	case CONNMAN_SERVICE_STATE_READY:
> +	case CONNMAN_SERVICE_STATE_ONLINE:
> +	case CONNMAN_SERVICE_STATE_DISCONNECT:
> +	case CONNMAN_SERVICE_STATE_FAILURE:
> +		break;
> +	}
> +
>   	__connman_service_ipconfig_indicate_state(provider->vpn_service, state,
>   					CONNMAN_IPCONFIG_TYPE_IPV4);
>   

Regards,
-Denis