Hi, After a couple of RFC rounds, the VPN patches are more or less usable. This patchset provides drop-in replacement for current VPN functionality, so the ConnectProvider and RemoveProvider APIs in net.connman.Manager object still work but are marked as deprecated (could be removed at ConnMan 2.0 release). The user (or UIs) should use the new net.connman.vpn.Manager interface when configuring the VPN. The VPN service should be connected via the connman service API like all the other services.
This version of the patchset does not yet utilize the agent interface so VPN passwords etc are not asked from the user via agent but that feature is in the todo list. The VPN functionality has been tested with OpenVPN, Openconnect, L2TP and PPTP providers. Everything was working fine in my tests but I am sure there is still need for some tweaking. TODO: - add agent support to VPN providers (ask username/password etc) - add IPSec support - add VPN autoconnect support Cheers, Jukka PS. I have a rpm spec file (for Fedora) that supports new vpnd. I could send it separately to ml if someone wants to try the new VPN stuff in real environment. Everything works quite smoothly with latest UI (one just needs to disable NetworkManager first). The ConnMan UI for gnome3.4 can be get from extensions.gnome.org or if it is not there yet, then directly from https://github.com/connectivity/gnome-extension-connman/tree/gnome3.4 Jukka Rissanen (34): doc: VPN daemon API descriptions ipconfig: Move IP address API into separate ipaddress.c file device: Move device creation func into device.c log: Give program name and version in log init vpn: New vpn daemon that handles vpn connections and clients test: Renamed old VPN scripts test: New VPN test script that connect to connman-vpnd provider: Provider disconnect function made available to plugin provider: Add more driver interface functions needed by vpnd plugin provider: Remove obsolete stuff provider: Support functions added plugin: Add VPN plugin that will interact with vpnd provider: Initially provider ipconfigs are now OFF provider: Move around server and user route handling vpn: Resolve vpn hostname if necessary vpnd: Add -r option which enables route handling in vpnd vpn: Hash provider data using the ident instead of path doc: Example configuration file for vpnd vpn: Introduce config file for vpnd agent: Split agent code into generic and service specific parts vpn: Add agent support manager: Deprecating connect/remove provider API ipconfig: Add ipconfig unref function vpn: Free allocated ipconfig struct provider: Removed the connect part from the create() function vpn-provider: Send ConnectionAdded signal when needed provider: Add callback when creating vpn provider storage: Add function to remove provider files provider: Do not remove the provider as it would remove it from storage vpn-provider: Send ConnectionRemoved signal when needed vpn-provider: Remove vpn provider from storage when needed l2tp: Remember the connection password pptp: Remember the connection password vpnd: Make sure provider is taken to ready state .gitignore | 4 + Makefile.am | 104 ++- Makefile.plugins | 123 +-- configure.ac | 9 +- doc/manager-api.txt | 6 +- doc/vpn-connection-api.txt | 140 +++ doc/vpn-manager-api.txt | 50 ++ doc/vpn-overview.txt | 60 ++ include/agent.h | 73 ++ include/device.h | 1 + include/inet.h | 1 - include/ipaddress.h | 56 ++ include/ipconfig.h | 19 +- include/provider.h | 24 + include/vpn-dbus.h | 58 ++ plugins/iwmxsdk.c | 4 +- plugins/l2tp.c | 532 ----------- plugins/openconnect.c | 281 ------ plugins/openvpn.c | 310 ------- plugins/pptp.c | 338 ------- plugins/vpn.c | 1812 ++++++++++++++++++++++++++++++------- plugins/vpn.h | 48 - plugins/vpnc.c | 343 -------- src/agent-connman.c | 627 +++++++++++++ src/agent.c | 838 ++++-------------- src/connman.h | 16 +- src/detect.c | 2 +- src/device.c | 178 ++++ src/dhcp.c | 4 +- src/inet.c | 173 ---- src/ipaddress.c | 200 +++++ src/ipconfig.c | 167 +--- src/log.c | 5 +- src/main.c | 6 +- src/manager.c | 10 +- src/plugin.c | 2 +- src/provider.c | 1054 +++------------------- src/service.c | 64 +- src/storage.c | 47 + src/tethering.c | 4 +- test/connect-provider | 73 ++ test/connect-vpn | 73 -- test/disconnect-vpn | 21 - test/remove-provider | 21 + test/vpn-connect | 24 + test/vpn-disconnect | 24 + test/vpn-get | 43 + unit/test-nat.c | 2 +- vpn/connman-vpn.conf | 8 + vpn/connman-vpn.service.in | 11 + vpn/main.c | 344 ++++++++ vpn/net.connman.vpn.service.in | 5 + vpn/plugins/l2tp.c | 540 ++++++++++++ vpn/plugins/openconnect.c | 282 ++++++ vpn/plugins/openvpn.c | 311 +++++++ vpn/plugins/pptp.c | 346 ++++++++ vpn/plugins/vpn.c | 550 ++++++++++++ vpn/plugins/vpn.h | 63 ++ vpn/plugins/vpnc.c | 344 ++++++++ vpn/vpn-dbus.conf | 15 + vpn/vpn-ipconfig.c | 467 ++++++++++ vpn/vpn-manager.c | 189 ++++ vpn/vpn-polkit.conf | 11 + vpn/vpn-polkit.policy | 29 + vpn/vpn-provider.c | 1911 ++++++++++++++++++++++++++++++++++++++++ vpn/vpn-provider.h | 121 +++ vpn/vpn-rtnl.c | 1185 +++++++++++++++++++++++++ vpn/vpn-rtnl.h | 65 ++ vpn/vpn.h | 102 +++ vpn/vpn.ver | 8 + 70 files changed, 10662 insertions(+), 4319 deletions(-) create mode 100644 doc/vpn-connection-api.txt create mode 100644 doc/vpn-manager-api.txt create mode 100644 doc/vpn-overview.txt create mode 100644 include/agent.h create mode 100644 include/ipaddress.h create mode 100644 include/vpn-dbus.h delete mode 100644 plugins/l2tp.c delete mode 100644 plugins/openconnect.c delete mode 100644 plugins/openvpn.c delete mode 100644 plugins/pptp.c delete mode 100644 plugins/vpn.h delete mode 100644 plugins/vpnc.c create mode 100644 src/agent-connman.c create mode 100644 src/ipaddress.c create mode 100755 test/connect-provider delete mode 100755 test/connect-vpn delete mode 100755 test/disconnect-vpn create mode 100755 test/remove-provider create mode 100755 test/vpn-connect create mode 100755 test/vpn-disconnect create mode 100755 test/vpn-get create mode 100644 vpn/connman-vpn.conf create mode 100644 vpn/connman-vpn.service.in create mode 100644 vpn/main.c create mode 100644 vpn/net.connman.vpn.service.in create mode 100644 vpn/plugins/l2tp.c create mode 100644 vpn/plugins/openconnect.c create mode 100644 vpn/plugins/openvpn.c create mode 100644 vpn/plugins/pptp.c create mode 100644 vpn/plugins/vpn.c create mode 100644 vpn/plugins/vpn.h create mode 100644 vpn/plugins/vpnc.c create mode 100644 vpn/vpn-dbus.conf create mode 100644 vpn/vpn-ipconfig.c create mode 100644 vpn/vpn-manager.c create mode 100644 vpn/vpn-polkit.conf create mode 100644 vpn/vpn-polkit.policy create mode 100644 vpn/vpn-provider.c create mode 100644 vpn/vpn-provider.h create mode 100644 vpn/vpn-rtnl.c create mode 100644 vpn/vpn-rtnl.h create mode 100644 vpn/vpn.h create mode 100644 vpn/vpn.ver -- 1.7.11.4 _______________________________________________ connman mailing list [email protected] http://lists.connman.net/listinfo/connman
