dnsproxy: Only one copy of the relevant buffers will be made to a TCP request
[framework/connectivity/connman.git] / doc / agent-api.txt
index 27bd321..8201ac1 100644 (file)
 Agent hierarchy
-***************
+===============
 
-Service name   [unique name]
-Interface name org.freedesktop.connman.Agent
-Object path    [random object]
+Service                unique name
+Interface      net.connman.Agent
+Object path    freely definable
 
 Methods                void Release()
 
+                       This method gets called when the service daemon
+                       unregisters the agent. An agent can use it to do
+                       cleanup tasks. There is no need to unregister the
+                       agent, because when this method gets called it has
+                       already been unregistered.
 
-Method: Release
-===============
-This method will be called when the core releases the agent. This normally
-happens when the core shuts down.
+               void ReportError(object service, string error)
+
+                       This method gets called when an error has to be
+                       reported to the user.
+
+                       A special return value can be used to trigger a
+                       retry of the failed transaction.
+
+                       Possible Errors: net.connman.Agent.Error.Retry
+
+               void RequestBrowser(object service, string url)
+
+                       This method gets called when it is required
+                       to ask the user to open a website to procceed
+                       with login handling.
+
+                       This can happen if connected to a hotspot portal
+                       page without WISPr support.
+
+                       Possible Errors: net.connman.Agent.Error.Canceled
+
+               dict RequestInput(object service, dict fields)
+
+                       This method gets called when trying to connect to
+                       a service and some extra input is required. For
+                       example a passphrase or the name of a hidden network.
+
+                       The return value should be a dictionary where the
+                       keys are the field names and the values are the
+                       actual fields. Alternatively an error indicating that
+                       the request got canceled can be returned.
+
+                       Most common return field names are "Name" and of
+                       course "Passphrase".
+
+                       The dictionary arguments contains field names with
+                       their input parameters.
+
+                       In case of WISPr credentials requests and if the user
+                       prefers to login through the browser by himself, agent
+                       will have to return a LaunchBrowser error (see below).
+
+                       Possible Errors: net.connman.Agent.Error.Canceled
+                                        net.connman.Agent.Error.LaunchBrowser
+
+               void Cancel()
+
+                       This method gets called to indicate that the agent
+                       request failed before a reply was returned.
+
+Fields         string Name
+
+                       The name of a network. This field will be requested
+                       when trying to connect to a hidden network.
+
+               array{byte} SSID
+
+                       This field is an alternative to "Name" for WiFi
+                       networks and can be used to return the exact binary
+                       representation of a network name.
+
+                       Normally returning the "Name" field is the better
+                       option here.
+
+               string Identity
+
+                       Identity (username) for EAP authentication methods.
+
+               string Passphrase
+
+                       The passphrase for authentication. For example a WEP
+                       key, a PSK passphrase or a passphrase for EAP
+                       authentication methods.
+
+               string PreviousPassphrase
+
+                       The previous passphrase successfully saved, i.e.
+                       which lead to a successfull connection. This field is
+                       provided as an informational argument when connecting
+                       with it does not work anymore, for instance when it
+                       has been changed on the AP. Such argument appears when
+                       a RequestInput is raised after a retry.
+
+               string WPS
+
+                       This field requests the use of WPS to get associated.
+                       This is an alternate choice against Passphrase when
+                       requested service supports WPS. The reply can contain
+                       either empty pin, if user wants to use push-button
+                       method, or a pin code if user wants to use the pin
+                       method.
+
+               string Username
+
+                       Username for WISPr authentication. This field will be
+                       requested when connecting to a WISPr-enabled hotspot.
+
+               string Password
+
+                       Password for WISPr authentication. This field will be
+                       requested when connecting to a WISPr-enabled hotspot.
+
+Arguments      string Type
+
+                       Contains the type of a field. For example "psk", "wep"
+                       "informational", "passphrase", "response", "ssid",
+                       "wpspin" or plain "string". "informational" has no
+                       "Requirement" but a "Value".
+
+               string Requirement
+
+                       Contains the requirement option. Valid values are
+                       "mandatory", "optional" or "alternate".
+
+                       The "alternate" value specifies that this field can be
+                       returned as an alternative to another one. An example
+                       would be the network name or SSID.
+
+                       All "mandatory" fields must be returned, while the
+                       "optional" can be returned if available.
+
+               array{string} Alternates
+
+                       Contains the list of alternate field names this
+                       field can be represented by.
+
+               string Value
+
+                       Contains data as a string, relatively to an
+                       "informational" argument.
+
+Examples       Requesting a passphrase for WPA2 network
+
+                       RequestInput("/service1",
+                               { "Passphrase" : { "Type"        : "psk",
+                                                  "Requirement" : "mandatory"
+                                                }
+                               }
+                       ==> { "Passphrase" : "secret123" }
+
+               Requesting a passphrase after an error on the previous one:
+
+                       RequestInput("/service1",
+                               { "Passphrase" : { "Type"        : "psk",
+                                                  "Requirement" : "mandatory"
+                                                },
+                                 "PreviousPassphrase" :
+                                               { "Type"  : "informational",
+                                                 "Value" : "secret123"
+                                               }
+                               }
+
+               Requesting name for hidden network
+
+                       RequestInput("/service2",
+                               { "Name" : { "Type"        : "string",
+                                            "Requirement" : "mandatory",
+                                            "Alternates"  : [ "SSID" ]
+                                          },
+                                 "SSID" : { "Type"        : "ssid",
+                                            "Requirement" : "alternate"
+                                          }
+                               }
+                       ==> { "Name" : "My hidden network" }
+
+               Requesting a passphrase for a WPA2 network with WPS alternative:
+
+                       RequestInput("/service3",
+                               { "Passphrase" : { "Type"        : "psk",
+                                                  "Requirement" : "mandatory",
+                                                  "Alternates"  : [ "WPS" ]
+                                                },
+                                 "WPS"        : { "Type"        : "wpspin",
+                                                  "Requirement" : "alternate"
+                                                }
+                               }
+
+                       ==> { "WPS" : "123456" }
+
+               Requesting passphrase for a WPA-Enterprise network:
+
+                       RequestInput("/service4",
+                               { "Identity"   : { "Type"        : "string",
+                                                  "Requirement" : "mandatory"
+                                                },
+                                 "Passphrase" : { "Type"        : "passphrase",
+                                                  "Requirement" : "mandatory"
+                                                }
+                               }
+
+                       ==> { "Identity" : "alice", "Passphrase": "secret123" }
+
+               Requesting challenge response for a WPA-Enterprise network:
+
+                       RequestInput("/service4",
+                               { "Identity"   : { "Type"        : "string",
+                                                  "Requirement" : "mandatory"
+                                                },
+                                 "Passphrase" : { "Type"        : "response",
+                                                  "Requirement" : "mandatory"
+                                                }
+                               }
+
+                       ==> { "Identity" : "bob", "Passphrase": "secret123" }
+
+               Requesting username and password for a WISPr-enabled hotspot:
+
+                       RequestInput("/service5",
+                               { "Username"   : { "Type"        : "string",
+                                                  "Requirement" : "mandatory"
+                                                },
+                                 "Password"   : { "Type"        : "passphrase",
+                                                  "Requirement" : "mandatory"
+                                                }
+                               }
 
-To get notified when the core exits, an agent should also watch out for the
-NameOwnerChanged from org.freedesktop.connman service.
+                       ==> { "Username" : "foo", "Password": "secret" }