service: Simplify nameserver route adding and removing
[framework/connectivity/connman.git] / doc / agent-api.txt
1 Agent hierarchy
2 ===============
3
4 Service         unique name
5 Interface       net.connman.Agent
6 Object path     freely definable
7
8 Methods         void Release()
9
10                         This method gets called when the service daemon
11                         unregisters the agent. An agent can use it to do
12                         cleanup tasks. There is no need to unregister the
13                         agent, because when this method gets called it has
14                         already been unregistered.
15
16                 void ReportError(object service, string error)
17
18                         This method gets called when an error has to be
19                         reported to the user.
20
21                         A special return value can be used to trigger a
22                         retry of the failed transaction.
23
24                         Possible Errors: net.connman.Agent.Error.Retry
25
26                 void RequestBrowser(object service, string url)
27
28                         This method gets called when it is required
29                         to ask the user to open a website to procceed
30                         with login handling.
31
32                         This can happen if connected to a hotspot portal
33                         page without WISPr support.
34
35                         Possible Errors: net.connman.Agent.Error.Canceled
36
37                 dict RequestInput(object service, dict fields)
38
39                         This method gets called when trying to connect to
40                         a service and some extra input is required. For
41                         example a passphrase or the name of a hidden network.
42
43                         The return value should be a dictionary where the
44                         keys are the field names and the values are the
45                         actual fields. Alternatively an error indicating that
46                         the request got canceled can be returned.
47
48                         Most common return field names are "Name" and of
49                         course "Passphrase".
50
51                         The dictionary arguments contains field names with
52                         their input parameters.
53
54                         In case of WISPr credentials requests and if the user
55                         prefers to login through the browser by himself, agent
56                         will have to return a LaunchBrowser error (see below).
57
58                         Possible Errors: net.connman.Agent.Error.Canceled
59                                          net.connman.Agent.Error.LaunchBrowser
60
61                 void Cancel()
62
63                         This method gets called to indicate that the agent
64                         request failed before a reply was returned.
65
66 Fields          string Name
67
68                         The name of a network. This field will be requested
69                         when trying to connect to a hidden network.
70
71                 array{byte} SSID
72
73                         This field is an alternative to "Name" for WiFi
74                         networks and can be used to return the exact binary
75                         representation of a network name.
76
77                         Normally returning the "Name" field is the better
78                         option here.
79
80                 string Identity
81
82                         Identity (username) for EAP authentication methods.
83
84                 string Passphrase
85
86                         The passphrase for authentication. For example a WEP
87                         key, a PSK passphrase or a passphrase for EAP
88                         authentication methods.
89
90                 string WPS
91
92                         This field requests the use of WPS to get associated.
93                         This is an alternate choice against Passphrase when
94                         requested service supports WPS. The reply can contain
95                         either empty pin, if user wants to use push-button
96                         method, or a pin code if user wants to use the pin
97                         method.
98
99                 string Username
100
101                         Username for WISPr authentication. This field will be
102                         requested when connecting to a WISPr-enabled hotspot.
103
104                 string Password
105
106                         Password for WISPr authentication. This field will be
107                         requested when connecting to a WISPr-enabled hotspot.
108
109 Arguments       string Type
110
111                         Contains the type of a field. For example "psk", "wep"
112                         "passphrase", "response", "ssid", "wpspin" or plain
113                         "string".
114
115                 string Requirement
116
117                         Contains the requirement option. Valid values are
118                         "mandatory", "optional" or "alternate".
119
120                         The "alternate" value specifies that this field can be
121                         returned as an alternative to another one. An example
122                         would be the network name or SSID.
123
124                         All "mandatory" fields must be returned, while the
125                         "optional" can be returned if available.
126
127                 array{string} Alternates
128
129                         Contains the list of alternate field names this
130                         field can be represented by.
131
132 Examples        Requesting a passphrase for WPA2 network
133
134                         RequestInput("/service1",
135                                 { "Passphrase" : { "Type"        : "psk",
136                                                    "Requirement" : "mandatory"
137                                                  }
138                                 }
139                         ==> { "Passphrase" : "secret123" }
140
141                 Requesting name for hidden network
142
143                         RequestInput("/service2",
144                                 { "Name" : { "Type"        : "string",
145                                              "Requirement" : "mandatory",
146                                              "Alternates"  : [ "SSID" ]
147                                            },
148                                   "SSID" : { "Type"        : "ssid",
149                                              "Requirement" : "alternate"
150                                            }
151                                 }
152                         ==> { "Name" : "My hidden network" }
153
154                 Requesting a passphrase for a WPA2 network with WPS alternative:
155
156                         RequestInput("/service3",
157                                 { "Passphrase" : { "Type"        : "psk",
158                                                    "Requirement" : "mandatory",
159                                                    "Alternates"  : [ "WPS" ]
160                                                  },
161                                   "WPS"        : { "Type"        : "wpspin",
162                                                    "Requirement" : "alternate"
163                                                  }
164                                 }
165
166                         ==> { "WPS" : "123456" }
167
168                 Requesting passphrase for a WPA-Enterprise network:
169
170                         RequestInput("/service4",
171                                 { "Identity"   : { "Type"        : "string",
172                                                    "Requirement" : "mandatory"
173                                                  },
174                                   "Passphrase" : { "Type"        : "passphrase",
175                                                    "Requirement" : "mandatory"
176                                                  }
177                                 }
178
179                         ==> { "Identity" : "alice", "Passphrase": "secret123" }
180
181                 Requesting challenge response for a WPA-Enterprise network:
182
183                         RequestInput("/service4",
184                                 { "Identity"   : { "Type"        : "string",
185                                                    "Requirement" : "mandatory"
186                                                  },
187                                   "Passphrase" : { "Type"        : "response",
188                                                    "Requirement" : "mandatory"
189                                                  }
190                                 }
191
192                         ==> { "Identity" : "bob", "Passphrase": "secret123" }
193
194                 Requesting username and password for a WISPr-enabled hotspot:
195
196                         RequestInput("/service5",
197                                 { "Username"   : { "Type"        : "string",
198                                                    "Requirement" : "mandatory"
199                                                  },
200                                   "Password"   : { "Type"        : "passphrase",
201                                                    "Requirement" : "mandatory"
202                                                  }
203                                 }
204
205                         ==> { "Username" : "foo", "Password": "secret" }