dnsproxy: safely access server_list_sec for removing a list node
[platform/upstream/connman.git] / TODO
1 Background
2 ==========
3
4 - Priority scale: High, Medium and Low
5
6 - Complexity scale: C1, C2, C4 and C8.
7    The complexity scale is exponential, with complexity 1 being the
8    lowest complexity. Complexity is a function of both task 'complexity'
9    and task 'scope'.
10
11
12 Core
13 ====
14
15 - Personal firewall
16
17    Priority: Low
18    Complexity: C8
19
20    Discuss and implement a basic and safe firewalling strategy into
21    Connman. Provide a D-Bus API for personal firewalling.
22
23
24 - PACRunner extensions
25
26    Priority: Low
27    Complexity: C4
28
29    Support more URI schemes, support multiple connections, tighter
30    security integration.
31
32
33 - Check logging produced by connman_info()
34
35    Priority: Medium
36    Complexity: C1
37
38    Check that logging produced by connman_info() contains meaningful messages
39    and get rid of the unnecessary ones.
40
41
42 - Remove --nobacktrace option
43
44    Priority: Medium
45    Complexity: C1
46    When: 2.0
47
48    Remove the --nobacktrace option or change it to --backtrace depending on
49    the level of systemd integration or other factors.
50
51
52 - Clean up data structure usage
53
54    Priority: Medium
55    Complexity: C4
56
57    Use hash tables, queues and lists in the code. Check on the currently used
58    data structures and see if something can be simplified.
59
60
61 - Unit tests for DHCP, DNS and HTTP
62
63    Priority: Low
64    Complexity: C4
65
66    Create unit tests for these components starting with DHCP. Use gtest
67    from GLib for this task similarly to what has been done for OBEX in Bluez
68    and oFono in general.
69
70
71 - Support other time sources than NTP
72
73    Priority: Low
74    Complexity: C2
75
76    Support other time sources like cellular, GPS in addition to NTP.
77
78
79 - Get interface names from src/device.c
80
81    Priority: Low
82    Complexity: C2
83
84    Instead of using ioctls in connman_inet_ifindex and connman_inet_ifname,
85    utilize the information already provided by netlink in src/device.c.
86
87
88 - Support D-Bus ObjectManager
89
90    Priority: Medium
91    Complexity: C4
92
93    Support D-Bus ObjectManager by using functionality already present in
94    ./gdbus. Method calls and signals are already registered with gdbus, but
95    properties and replies especially in Agent are still handled with plain
96    dbus library function calls.
97
98    With this, Manager API is removed, and a WiFi P2P API based on
99    ObjectManager common to Linux desktops can be implemented.
100
101
102 Tethering
103 =========
104
105 - Verify if bridge has been correctly created and configured
106
107    Priority: Low
108    Complexity: C1
109
110    When enabling tethering check if there was any error while creating and
111    configuring the bridge before continue. It has been done only for WiFi
112    technology, for other tethering technologies it should be evaluated
113    and implemented in case it is advantageous.
114
115
116 WiFi
117 ====
118
119 - Clean up WiFi data structure usage
120
121    Priority: Medium
122    Complexity: C2
123
124    Struct wifi_data is passed as a pointer in some of the wifi plugin
125    callbacks. For example removing a WiFi USB stick causes RTNL and
126    wpa_supplicant to call the wifi plugin at the same time causing the
127    freeing of the wifi data structure. Fix up the code to have proper
128    reference counting or other handling in place for the shared wifi data
129    and the members in the data structure.
130
131
132 - EAP-AKA/SIM
133
134    Priority: Medium
135    Complexity: C2
136
137    This EAP is needed for SIM card based network authentication.
138    ConnMan here plays a minor role: Once wpa_supplicant is set up for
139    starting and EAP-AKA/SIM authentication, it will talk to a SIM card
140    through its pcsc-lite API.
141
142
143 - EAP-FAST
144
145    Priority: Low
146    Complexity: C1
147
148
149 - Removing wpa_supplicant 0.7.x legacy support
150
151   Priority: Low
152   Complexity: C1
153
154   Removing global country property setter in gsupplicant, and removing
155   wifi's technology set_regdom implementation. Removing autoscan fallback.
156   (Note: should be done around the end 2012)
157
158
159 Bluetooth
160 =========
161
162
163 Cellular
164 ========
165
166
167 VPN
168 ===
169
170 - IPsec
171
172    Priority: Medium
173    Complexity: C4
174
175
176 - L2TP & PPTP compatibility prefix removal
177
178    Priority: Medium
179    Complexity: C1
180    When: connman 2.0
181
182    The VPN config file provisioning patchset contains code that makes
183    PPP options to be marked by "PPPD." prefix. The code supports also
184    old "L2TP." and "PPTP." prefix for PPP options. Remove the compatibility
185    code and only allow "PPPD." prefix for PPP options.
186
187
188 - Update VPNC and OpenVPN with Agent support
189
190    Priority: Medium
191    Complexity: C2
192
193    Update VPNC and OpenVPN with VPN Agent support to request possible user
194    ids and passphrases.
195
196
197 - Change OpenConnect plugin to use libopenconnect
198
199    Priority: Medium
200    Complexity: C4
201
202    Current implementation of OpenConnect uses screenscraping and interactive
203    mode for accepting self signed certificates and reacting to PKCS pass
204    phrase requests. This should be replaced with libopenconnect use. It may be
205    worthwhile to attempt to replace the whole authentication with the use of
206    openconnect_obtain_cookie() whatever authentication type is used. This
207    would lead to using only the cookie when connecting (--cookie-on-stdin)
208    and would cleanup the code at run_connect().
209
210    The usage of stdout can be removed as unnecessary. Cookie should be
211    retrieved with openconnect_obtain_cookie(). Remove this also from
212    connman_task_run().
213
214    Function is_valid_protocol() must use openconnect_get_supported_protocols.
215    Also the static const char *protocols[] would be unnecessary.
216
217    Reading the stderr with byte-by-byte approach is to be removed, as well as
218    are the PKCS failures and requests in stderr IO channel processing.
219
220    The use of interactive mode toggle is to be removed. Non-interactive mode
221    must be used, which leads to using --syslog with each authentication type
222    as task arg.
223
224    If the peer certificate cannot be verified with normal means it is because
225    the peer certificate is self signed and the user setting
226    "AllowSelfSignedCert" has to be used for the verify certificate callback
227    reply. The callback for certificate validation must return zero if user has
228    allowed self signed certificates. In such case save the SHA1 fingerprint of
229    server certificate as it is done now, otherwise indicate error to
230    libopenconnect.
231
232 Tools
233 =====
234
235 - Add Clock API support to connmanctl
236
237    Priority: Low
238    Complexity: C2
239
240    The connmanctl command line tool should support Clock API.