Re: [PATCH 00/11] Add association state for VPNs

Christian Hewitt <[email protected]>
Newsgroups dev.linux.lists.connman
Message-ID <[email protected]>
> On 24 Jan 2025, at 10:58 pm, Jussi Laakkonen <[email protected]> wrote:
> 
> This patch set adds the association state also for the VPNs. This state is to
> indicate that the VPN is waiting for VPN agent to provide input given by user.
> In this state service.c must not do connect timeout checks as the timers for
> both differ in length, default being 120s for connect timeout and 300s for VPN
> agent dialog timeout.
> 
> In order to facilitate this change the association state had to be implemented
> also for VPNs. It is common state for services and like with services the
> association state for VPNs preceeds the configuration state (on VPN side
> connect state). Both vpn.c plugins on connmand and vpnd side require changes
> to accommodate this state. When the VPN agent succeeds in getting the input
> from the user the state transitions from association to connect (configuration)
> state and, thus, requires no specific changes to VPN plugins.
> 
> On connmand side the association state is the initial state when VPN is getting
> connected and the state needs to be accounted as a connecting state in
> plugins/vpn.c to not to lose transport ident for it and in provider.c as a
> pre-configuration state to not to start the connect timeout for the VPN before
> the VPN is in configuration state. The reason for the latter is that the
> connect timeout should be exact and start from the point when
> connect/configuration state is entered.
> 
> On vpnd side association state is, like on connmand side, the initial state for
> the VPN getting connected. After the VPN agent succeeds getting the information
> from the user (credentials) the state transitions to connect (configuratioin).
> There may be a possibility for a VPN plugin to run without VPN agent and thus
> in these cases it is ensured that the vpn/plugins/vpn.c:vpn_notify() does
> the state transition in such cases. It is allowed go back to association state
> from connect state but not from other states.
> 
> Jussi Laakkonen (11):
>  agent: Cancel agent request on NoReply D-Bus error
>  vpn-provider: Use association state for VPN agent input wait
>  vpn: Add association state before connect state
>  vpn-agent: Do connect state transition after input dialog check
>  service: Explicit VPN connect timeout, ignore in VPN agent wait
>  provider: Handle VPN configuration and association states
>  vpn: Add support for association state, add state getter
>  vpn: Check if connecting when setting state or disconnecting
>  vpn: Add VPN agent use callback for plugins
>  vpn-provider: Transition to CONNECT state with agentless VPNs
>  doc: Update VPN documentation for association state
> 
> doc/vpn-connection-api.txt |  4 +--
> doc/vpn-overview.txt       |  7 ++++-
> include/provider.h         |  9 +++---
> plugins/vpn.c              | 23 ++++++++++++---
> src/agent.c                |  4 ++-
> src/connman.h              |  2 ++
> src/provider.c             | 22 ++++++++++++++-
> src/service.c              | 52 ++++++++++++++++++++++++++++++----
> vpn/plugins/vpn.c          | 44 ++++++++++++++++++++++++++++-
> vpn/plugins/vpn.h          | 12 ++++----
> vpn/vpn-agent.c            |  6 +++-
> vpn/vpn-provider.c         | 58 ++++++++++++++++++++++++++++++++++----
> vpn/vpn-provider.h         |  7 +++++
> 13 files changed, 220 insertions(+), 30 deletions(-)

I’ve been using this series combined with the following series and patch for several weeks:

https://patchwork.kernel.org/project/connman/list/?series=928220
https://patchwork.kernel.org/project/connman/patch/DB6PR10MB1845EBB07DB785B580B3F6ECE1E02@DB6PR10MB1845.EURPRD10.PROD.OUTLOOK.COM/

Plus a revert of this commit which I’ve previously flagged as breaking the default “route all traffic down tunnel” with WireGuard (the main use-case for LibreELEC users):

https://git.kernel.org/pub/scm/network/connman/connman.git/commit/?id=9eb1772d31b6fcf78e8711976696491aec9ff5df

For easier testing all patches are in this branch: https://github.com/chewitt/connman/commits/wireguard

No issues observed, so:

Tested-by: Christian Hewitt <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.