| VPN daemon overview |
| ******************* |
| |
| |
| Manager interface |
| ================= |
| |
| Manager interface described in vpn-manager-api.txt is to be used |
| by both the connectivity UI and by ConnMan. The Create(), |
| Remove(), RegisterAgent() and UnregisterAgent() functions are for |
| UI usage. The GetConnections() method and ConnectionAdded() and |
| ConnectionRemoved() signals are for ConnMan VPN plugin to use. |
| |
| The UI should use the methods like this: |
| - Ask VPN properties (like certs, usernames etc) from the user. |
| - Call Manager.Create() to create a VPN connection (note that |
| the system does not yet try to connect to VPN at this point) |
| - Register an agent to vpnd so that vpnd can ask any extra |
| parameters etc from the user if needed. |
| - If the user wants to connect to VPN gateway, then the |
| connection attempt should be done in ConnMan side as |
| there will be a service created there. |
| - If the user wishes to remove the VPN configuration, the UI |
| can call the Manager.Remove() which removes the VPN connection. |
| If the VPN was in use, the VPN connection is also disconnected. |
| - When UI is terminated, the UI should call the UnregisterAgent() |
| |
| The ConnMan calls VPN daemon like this: |
| - There is a VPN plugin which at startup starts to listen the |
| ConnectionAdded() and ConnectionRemoved() signals. |
| - The VPN plugin will call GetConnections() in order to get |
| available VPN connections. It will then create a provider service |
| for each VPN connection that is returned. |
| - User can then connect to the VPN by calling the service Connect() |
| method |
| - The existing ConnMan Manager.ConnectProvider() interface can still |
| work by calling vpn.Manager.Create() and then call vpn.Connection.Connect() |
| but this ConnectProvider() interface will be deprecated at some |
| point. |
| |
| |
| |
| Connection interface |
| ==================== |
| |
| The Manager.Create() will return the object path of the created |
| vpn.Connection object and place it in idle state. Note that |
| vpn.Connection.PropertyChanged signal is not called when Connection |
| object is created because the same parameters are returned via |
| vpn.Manager.ConnectionAdded() signal. |
| The vpn.Connection object can be connected using the Connect() method |
| and disconnected by calling Disconnect() method. When the connection |
| is established (meaning VPN client has managed to create a connection |
| to VPN server), then State property is set to "ready" and PropertyChanged |
| signal is sent. If the connection cannot be established, then |
| State property is set to "failure". |
| After successfull connection, the relevant connection properties are sent |
| by PropertyChanged signal; like IPv[4|6] information, the index of the |
| VPN tunneling interface (if there is any), nameserver information, |
| server specified routes etc. |