Merge lp:~cyphermox/ubuntu/natty/connman/0.69 into lp:ubuntu/natty/connman

Proposed by Mathieu Trudel-Lapierre on 2011-02-10
Status: Merged
Merged at revision: 25
Proposed branch: lp:~cyphermox/ubuntu/natty/connman/0.69
Merge into: lp:ubuntu/natty/connman
Diff against target: 25752 lines (+11190/-7957)
127 files modified
AUTHORS (+4/-0)
ChangeLog (+44/-0)
Makefile.am (+20/-14)
Makefile.in (+277/-274)
Makefile.plugins (+42/-34)
README (+1/-16)
TODO (+6/-58)
acinclude.m4 (+1/-0)
configure (+211/-188)
configure.ac (+37/-26)
debian/changelog (+21/-0)
debian/control (+3/-2)
debian/manpages/connmand.8 (+10/-1)
debian/patches/04-wifi-add-a-disconnected-timer.patch (+58/-16)
debian/patches/09-disable-wifi-legacy.patch (+0/-38)
debian/patches/10-fix-dhcp-renewal-disconnect.patch (+172/-0)
debian/patches/series (+1/-1)
debian/rules (+3/-1)
doc/agent-api.txt (+30/-7)
doc/config-format.txt (+3/-1)
doc/counter-api.txt (+1/-1)
doc/ipconfig-api.txt (+1/-1)
doc/manager-api.txt (+0/-7)
doc/overview-api.txt (+11/-11)
doc/plugin-api.txt (+1/-1)
doc/service-api.txt (+12/-22)
doc/technology-api.txt (+23/-0)
gdbus/gdbus.h (+1/-1)
gdbus/mainloop.c (+1/-1)
gdbus/object.c (+18/-17)
gdbus/polkit.c (+2/-2)
gdbus/watch.c (+16/-17)
gdhcp/client.c (+322/-12)
gdhcp/common.c (+1/-0)
gdhcp/gdhcp.h (+4/-0)
gdhcp/ipv4ll.c (+139/-0)
gdhcp/ipv4ll.h (+55/-0)
gdhcp/server.c (+2/-2)
gsupplicant/dbus.c (+1/-3)
gsupplicant/gsupplicant.h (+34/-0)
gsupplicant/supplicant.c (+644/-33)
gweb/gresolv.c (+560/-93)
gweb/gweb.c (+199/-24)
gweb/gweb.h (+2/-0)
include/device.h (+2/-0)
include/dhcp.h (+0/-80)
include/inet.h (+9/-0)
include/ipconfig.h (+3/-20)
include/location.h (+3/-0)
include/network.h (+4/-3)
include/notifier.h (+1/-0)
include/ondemand.h (+0/-38)
include/provider.h (+10/-2)
include/proxy.h (+5/-0)
include/resolver.h (+2/-17)
include/service.h (+4/-0)
include/task.h (+1/-1)
include/technology.h (+6/-0)
plugins/bluetooth.c (+1/-0)
plugins/connman-nmcompat.conf (+14/-0)
plugins/dhcp.c (+0/-191)
plugins/dnsproxy.c (+0/-1371)
plugins/ethernet.c (+102/-0)
plugins/iospm.c (+1/-0)
plugins/iwmx.c (+1/-1)
plugins/mcc.h (+475/-0)
plugins/nmcompat.c (+282/-0)
plugins/ntpd.c (+2/-1)
plugins/ofono.c (+238/-65)
plugins/openconnect.c (+20/-7)
plugins/openvpn.c (+80/-56)
plugins/pacrunner.c (+163/-0)
plugins/portal.c (+45/-11)
plugins/supplicant.c (+0/-2692)
plugins/supplicant.h (+0/-41)
plugins/vpn.c (+16/-5)
plugins/vpn.h (+2/-1)
plugins/vpnc.c (+290/-0)
plugins/wifi-legacy.c (+0/-243)
plugins/wifi.c (+602/-147)
scripts/openconnect-script.c (+4/-0)
src/agent.c (+161/-1)
src/config.c (+165/-8)
src/connection.c (+8/-2)
src/connman.h (+34/-27)
src/dbus.c (+4/-0)
src/detect.c (+1/-0)
src/device.c (+48/-7)
src/dhcp.c (+183/-172)
src/dnsproxy.c (+1477/-0)
src/element.c (+8/-0)
src/inet.c (+102/-8)
src/ipconfig.c (+316/-224)
src/iptables.c (+4/-0)
src/ipv4.c (+5/-1)
src/location.c (+8/-0)
src/main.c (+7/-23)
src/manager.c (+2/-103)
src/network.c (+138/-92)
src/notifier.c (+19/-0)
src/ondemand.c (+0/-92)
src/provider.c (+230/-28)
src/proxy.c (+109/-7)
src/resolver.c (+291/-329)
src/rfkill.c (+4/-1)
src/rtnl.c (+167/-10)
src/selftest.c (+0/-43)
src/service.c (+535/-214)
src/session.c (+1/-0)
src/stats.c (+379/-51)
src/task.c (+8/-4)
src/technology.c (+258/-94)
src/tethering.c (+5/-29)
src/wpad.c (+19/-11)
test/disable-tethering (+23/-1)
test/enable-tethering (+37/-1)
test/get-services (+2/-1)
test/list-services (+3/-2)
test/monitor-services (+2/-1)
test/set-ip-method (+0/-34)
test/set-ipv4-method (+34/-0)
test/set-ipv6-method (+33/-0)
test/simple-agent (+51/-8)
test/test-manager (+9/-2)
tools/stats-ringbuffer-dump.c (+0/-408)
tools/stats-tool.c (+910/-0)
tools/web-test.c (+8/-0)
To merge this branch: bzr merge lp:~cyphermox/ubuntu/natty/connman/0.69
Reviewer Review Type Date Requested Status
Micah Gersten 2011-02-10 Approve on 2011-02-15
Review via email: mp+49322@code.launchpad.net

Description of the change

New ConnMan release as requested by Kalle; to support the new indicator-network release.

To post a comment you must log in.
34. By Mathieu Trudel-Lapierre on 2011-02-11

debian/manpages/connmand.8: update to add BUGS section and fix AUTHORS
(LP: #587779)

Micah Gersten (micahg) wrote :

I think this is mostly fine, I'm just wondering whether or not the binary depends on dhcp3-client is still wanted.

review: Needs Information
Daniel Holbach (dholbach) wrote :

I'm also not sure about the use of "Conflicts" - is there actual files conflicting or should it be "Breaks" instead?

Mathieu Trudel-Lapierre (cyphermox) wrote :

> I'm also not sure about the use of "Conflicts" - is there actual files
> conflicting or should it be "Breaks" instead?

I was wondering the same, expecting that Breaks is indeed a better choice, but lintian disagrees with not having a version number for the Breaks field, and the following entry from the Debian Policy Manual, section 7.4; "Conflicts should be used": "in other cases where one must prevent simultaneous installation of two packages for reasons that are ongoing (not fixed in a later version of one of the packages)"

35. By Mathieu Trudel-Lapierre on 2011-02-14

debian/control: Remove binary Depends on dhcp3-client for connman.

Mathieu Trudel-Lapierre (cyphermox) wrote :

> I think this is mostly fine, I'm just wondering whether or not the binary
> depends on dhcp3-client is still wanted.

Micah, that was indeed an oversight; connman provides its own DHCP client.

Micah Gersten (micahg) wrote :

I'll upload this in the morning. Thanks. I believe the usage of Conflicts here is correct.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'AUTHORS'
2--- AUTHORS 2010-11-30 15:51:10 +0000
3+++ AUTHORS 2011-02-14 13:15:11 +0000
4@@ -18,3 +18,7 @@
5 Patrik Flykt <patrik.flykt@nokia.com>
6 David Woodhouse <dwmw2@infradead.org>
7 Gustavo F. Padovan <padovan@profusion.mobi>
8+Julien Massot <jmassot@aldebaran-robotics.com>
9+Jukka Rissanen <jukka.rissanen@nokia.com>
10+Grant Erickson <marathon96@gmail.com>
11+Guillaume Lucas <guillaumex.lucas@intel.com>
12
13=== modified file 'ChangeLog'
14--- ChangeLog 2010-11-30 15:51:10 +0000
15+++ ChangeLog 2011-02-14 13:15:11 +0000
16@@ -1,3 +1,47 @@
17+ver 0.69:
18+ Fix issue with not handling DNS proxy failures gracefully.
19+ Fix issue with double free in statistics handling.
20+ Fix issue with early tethering bridge creation.
21+ Add support for tethering property per technology.
22+ Add support for initial WiFi tethering feature.
23+ Add support for using PACrunner as proxy driver.
24+ Add support for WPS as part of the security property.
25+
26+ver 0.68:
27+ Fix issue with wrong name of PolicyKit configuration file.
28+ Fix issue with inconsistency of WiFi scan states.
29+ Fix issue with missing auto-reconnect and oFono.
30+ Add support for vpnc based private networks.
31+ Add support for WiFi Protected Setup handling.
32+ Remove legacy WiFi plugin.
33+
34+ver 0.67:
35+ Fix issue with oFono plugin and multiple online calls.
36+ Fix issue with checking for AutoConnect service property.
37+ Remove deprecated MCC and MNC service properties.
38+
39+ver 0.66:
40+ Fix multiple set of memory leaks.
41+ Fix issue with WPA supplicant phase2 values.
42+ Fix issue with WiFi access points after kill/restart.
43+ Fix issue with correct PACrunner configuration loading.
44+ Add support for loading provision files at runtime.
45+ Add support for setting proxy auto-configuration.
46+ Add support for IPv6 auto-configured addresses.
47+
48+ver 0.65:
49+ Use new WiFi plugin by default.
50+ Fix issue with handling already powered devices.
51+ Fix issue with handling proxy PAC option from DHCP.
52+ Add support for handling regulatory domain settings.
53+ Add support for handling IPv6 router advertisements.
54+ Add support for handling IPv6 nameservers.
55+ Add support for handling multiple search domains.
56+ Add support for handling oFono modem lockdown.
57+ Add support for handling IPv6 DNS connections.
58+ Add support for IPv4 Link-Local negotiation.
59+ Add support for USB CDC Tethering functionality.
60+
61 ver 0.64:
62 Update service name to net.connman domain.
63 Fix issue with disabling a technology twice.
64
65=== modified file 'Makefile.am'
66--- Makefile.am 2010-11-30 15:51:10 +0000
67+++ Makefile.am 2011-02-14 13:15:11 +0000
68@@ -7,15 +7,14 @@
69 include/notifier.h \
70 include/storage.h include/service.h \
71 include/resolver.h include/ipconfig.h \
72- include/device.h include/network.h include/inet.h \
73- include/ondemand.h
74+ include/device.h include/network.h include/inet.h
75
76 nodist_include_HEADERS = include/version.h
77
78 noinst_HEADERS = include/driver.h include/element.h include/property.h \
79 include/rtnl.h include/wifi.h include/task.h \
80 include/dbus.h include/rfkill.h include/option.h \
81- include/profile.h include/provider.h include/dhcp.h \
82+ include/profile.h include/provider.h \
83 include/utsname.h include/timeserver.h include/proxy.h \
84 include/location.h include/technology.h
85
86@@ -27,15 +26,20 @@
87 gdbus/object.c gdbus/polkit.c
88
89 gdhcp_sources = gdhcp/gdhcp.h gdhcp/common.h gdhcp/common.c gdhcp/client.c \
90- gdhcp/server.c
91+ gdhcp/server.c gdhcp/ipv4ll.h gdhcp/ipv4ll.c
92
93 gweb_sources = gweb/gweb.h gweb/gweb.c gweb/gresolv.h gweb/gresolv.c \
94 gweb/giognutls.h gweb/giognutls.c
95
96 if DATAFILES
97+
98+if NMCOMPAT
99+nmcompat_conf = plugins/connman-nmcompat.conf
100+endif
101+
102 dbusconfdir = @DBUS_CONFDIR@
103
104-dbusconf_DATA = src/connman.conf
105+dbusconf_DATA = src/connman.conf $(nmcompat_conf)
106
107 if SYSTEMD
108 systemdunitdir = @SYSTEMD_UNITDIR@
109@@ -62,7 +66,7 @@
110 gweb/gresolv.h gweb/gresolv.c \
111 gweb/giognutls.h gweb/gionotls.c \
112 $(builtin_sources) src/connman.ver \
113- src/main.c src/connman.h src/log.c src/selftest.c \
114+ src/main.c src/connman.h src/log.c \
115 src/error.c src/plugin.c src/task.c src/element.c \
116 src/device.c src/network.c src/connection.c \
117 src/manager.c src/profile.c src/service.c \
118@@ -72,8 +76,8 @@
119 src/utsname.c src/timeserver.c src/rfkill.c \
120 src/wifi.c src/storage.c src/dbus.c src/config.c \
121 src/technology.c src/counter.c src/location.c \
122- src/session.c src/tethering.c src/ondemand.c \
123- src/wpad.c src/wispr.c src/stats.c src/iptables.c
124+ src/session.c src/tethering.c src/wpad.c src/wispr.c \
125+ src/stats.c src/iptables.c src/dnsproxy.c
126
127 src_connmand_LDADD = $(builtin_libadd) @GLIB_LIBS@ @DBUS_LIBS@ \
128 @CAPNG_LIBS@ @XTABLES_LIBS@ -lresolv -ldl
129@@ -110,7 +114,8 @@
130
131 INCLUDES = -I$(builddir)/include -I$(builddir)/src -I$(srcdir)/gdbus
132
133-EXTRA_DIST = src/genbuiltin src/connman-dbus.conf src/connman-polkit.conf
134+EXTRA_DIST = src/genbuiltin src/connman-dbus.conf src/connman-polkit.conf \
135+ plugins/connman-nmcompat.conf
136
137
138 script_DATA =
139@@ -132,7 +137,7 @@
140 tools/addr-test tools/web-test tools/resolv-test \
141 tools/dbus-test tools/polkit-test \
142 tools/iptables-test tools/tap-test tools/wpad-test \
143- tools/stats-ringbuffer-dump
144+ tools/stats-tool
145
146 tools_wispr_SOURCES = $(gweb_sources) tools/wispr.c
147 tools_wispr_LDADD = @GLIB_LIBS@ @GNUTLS_LIBS@ -lresolv
148@@ -153,6 +158,8 @@
149 tools_wpad_test_SOURCES = gweb/gresolv.h gweb/gresolv.c tools/wpad-test.c
150 tools_wpad_test_LDADD = @GLIB_LIBS@ -lresolv
151
152+tools_stats_tool_LDADD = @GLIB_LIBS@
153+
154 tools_dhcp_test_SOURCES = $(gdhcp_sources) tools/dhcp-test.c
155 tools_dhcp_test_LDADD = @GLIB_LIBS@
156
157@@ -173,9 +180,9 @@
158 test/simple-agent test/show-introspection test/test-compat \
159 test/test-manager test/test-connman test/monitor-connman \
160 test/connect-vpn test/disconnect-vpn test/monitor-manager \
161- test/test-counter test/set-ip-method test/set-nameservers \
162- test/set-domains test/find-service test/get-services \
163- test/get-proxy-autoconfig test/set-proxy \
164+ test/test-counter test/set-ipv4-method test/set-ipv6-method \
165+ test/set-nameservers test/set-domains test/find-service \
166+ test/get-services test/get-proxy-autoconfig test/set-proxy \
167 test/enable-tethering test/disable-tethering test/backtrace
168
169 if TEST
170@@ -204,7 +211,6 @@
171 --enable-wifi \
172 --enable-bluetooth \
173 --enable-ofono \
174- --enable-dnsproxy \
175 --enable-pacrunner \
176 --enable-google \
177 --enable-meego \
178
179=== modified file 'Makefile.in'
180--- Makefile.in 2010-11-30 15:44:36 +0000
181+++ Makefile.in 2011-02-14 13:15:11 +0000
182@@ -40,7 +40,7 @@
183 host_triplet = @host@
184 noinst_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2)
185 sbin_PROGRAMS = src/connmand$(EXEEXT)
186-script_PROGRAMS = $(am__EXEEXT_3) $(am__EXEEXT_4)
187+script_PROGRAMS = $(am__EXEEXT_3) $(am__EXEEXT_4) $(am__EXEEXT_5)
188 DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
189 $(noinst_HEADERS) $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
190 $(srcdir)/Makefile.plugins $(srcdir)/config.h.in \
191@@ -59,17 +59,10 @@
192 @ETHERNET_BUILTIN_TRUE@@ETHERNET_TRUE@am__append_6 = plugins/ethernet.c
193 @ETHERNET_BUILTIN_FALSE@@ETHERNET_TRUE@am__append_7 = plugins/ethernet.la
194 @ETHERNET_BUILTIN_FALSE@@ETHERNET_TRUE@am__append_8 = $(plugins_ethernet_la_OBJECTS)
195-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@am__append_9 = wifi wifi_legacy
196-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@am__append_10 = plugins/wifi.c \
197-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ $(gsupplicant_sources) \
198-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ plugins/wifi-legacy.c \
199-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ plugins/supplicant.h \
200-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ plugins/supplicant.c
201-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am__append_11 = plugins/wifi.la \
202-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ plugins/wifi_legacy.la
203-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am__append_12 = \
204-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ $(plugins_wifi_la_OBJECTS) \
205-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ $(plugins_wifi_legacy_la_OBJECTS)
206+@WIFI_BUILTIN_TRUE@@WIFI_TRUE@am__append_9 = wifi
207+@WIFI_BUILTIN_TRUE@@WIFI_TRUE@am__append_10 = plugins/wifi.c $(gsupplicant_sources)
208+@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am__append_11 = plugins/wifi.la
209+@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am__append_12 = $(plugins_wifi_la_OBJECTS)
210 @BLUETOOTH_BUILTIN_TRUE@@BLUETOOTH_TRUE@am__append_13 = bluetooth
211 @BLUETOOTH_BUILTIN_TRUE@@BLUETOOTH_TRUE@am__append_14 = plugins/bluetooth.c
212 @BLUETOOTH_BUILTIN_FALSE@@BLUETOOTH_TRUE@am__append_15 = plugins/bluetooth.la
213@@ -79,7 +72,7 @@
214 @HH2SERIAL_GPS_BUILTIN_FALSE@@HH2SERIAL_GPS_TRUE@am__append_19 = plugins/hh2serial-gps.la
215 @HH2SERIAL_GPS_BUILTIN_FALSE@@HH2SERIAL_GPS_TRUE@am__append_20 = $(plugins_hh2serial_gps_la_OBJECTS)
216 @OFONO_BUILTIN_TRUE@@OFONO_TRUE@am__append_21 = ofono
217-@OFONO_BUILTIN_TRUE@@OFONO_TRUE@am__append_22 = plugins/ofono.c
218+@OFONO_BUILTIN_TRUE@@OFONO_TRUE@am__append_22 = plugins/mcc.h plugins/ofono.c
219 @OFONO_BUILTIN_FALSE@@OFONO_TRUE@am__append_23 = plugins/ofono.la
220 @OFONO_BUILTIN_FALSE@@OFONO_TRUE@am__append_24 = $(plugins_ofono_la_OBJECTS)
221 @OPENCONNECT_BUILTIN_TRUE@@OPENCONNECT_TRUE@am__append_25 = openconnect
222@@ -92,52 +85,56 @@
223 @OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@am__append_32 = -DOPENVPN=\"@OPENVPN@\"
224 @OPENVPN_BUILTIN_FALSE@@OPENVPN_TRUE@am__append_33 = plugins/openvpn.la
225 @OPENVPN_BUILTIN_FALSE@@OPENVPN_TRUE@am__append_34 = $(plugins_openvpn_la_OBJECTS)
226-@OPENCONNECT_BUILTIN_TRUE@am__append_35 = plugins/vpn.c plugins/vpn.h
227-@OPENCONNECT_BUILTIN_FALSE@@OPENVPN_BUILTIN_TRUE@am__append_36 = plugins/vpn.c plugins/vpn.h
228-@PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@am__append_37 = portal
229-@PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@am__append_38 = plugins/portal.c
230-@PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@am__append_39 = plugins/portal.la
231-@PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@am__append_40 = $(plugins_portal_la_OBJECTS)
232-@DNSPROXY_BUILTIN_TRUE@@DNSPROXY_TRUE@am__append_41 = dnsproxy
233-@DNSPROXY_BUILTIN_TRUE@@DNSPROXY_TRUE@am__append_42 = plugins/dnsproxy.c
234-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@am__append_43 = plugins/dnsproxy.la
235-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@am__append_44 = $(plugins_dnsproxy_la_OBJECTS)
236-@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__append_45 = pacrunner
237-@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__append_46 = plugins/pacrunner.c
238-@PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@am__append_47 = plugins/pacrunner.la
239-@PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@am__append_48 = $(plugins_pacrunner_la_OBJECTS)
240-@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__append_49 = google
241-@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__append_50 = plugins/google.c
242-@GOOGLE_BUILTIN_FALSE@@GOOGLE_TRUE@am__append_51 = plugins/google.la
243-@GOOGLE_BUILTIN_FALSE@@GOOGLE_TRUE@am__append_52 = $(plugins_google_la_OBJECTS)
244-@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__append_53 = meego
245-@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__append_54 = plugins/meego.c
246-@MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@am__append_55 = plugins/meego.la
247-@MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@am__append_56 = $(plugins_meego_la_OBJECTS)
248-@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__append_57 = polkit
249-@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__append_58 = plugins/polkit.c
250-@POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@am__append_59 = plugins/polkit.la
251-@POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@am__append_60 = $(plugins_polkit_la_OBJECTS)
252-@IWMX_TRUE@am__append_61 = plugins/iwmxsdk.la
253-@IWMX_TRUE@am__append_62 = $(plugins_iwmxsdk_la_OBJECTS)
254-@IOSPM_TRUE@am__append_63 = plugins/iospm.la
255-@IOSPM_TRUE@am__append_64 = $(plugins_iospm_la_OBJECTS)
256-@FAKE_TRUE@am__append_65 = plugins/fake.la
257-@FAKE_TRUE@am__append_66 = $(plugins_fake_la_OBJECTS)
258-@OPENCONNECT_TRUE@am__append_67 = scripts/openconnect-script
259+@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__append_35 = vpnc
260+@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__append_36 = plugins/vpnc.c
261+@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__append_37 = -DVPNC=\"@VPNC@\"
262+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@am__append_38 = plugins/vpnc.la
263+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@am__append_39 = $(plugins_vpnc_la_OBJECTS)
264+@PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@am__append_40 = portal
265+@PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@am__append_41 = plugins/portal.c
266+@PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@am__append_42 = plugins/portal.la
267+@PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@am__append_43 = $(plugins_portal_la_OBJECTS)
268+@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__append_44 = pacrunner
269+@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__append_45 = plugins/pacrunner.c
270+@PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@am__append_46 = plugins/pacrunner.la
271+@PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@am__append_47 = $(plugins_pacrunner_la_OBJECTS)
272+@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__append_48 = google
273+@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__append_49 = plugins/google.c
274+@GOOGLE_BUILTIN_FALSE@@GOOGLE_TRUE@am__append_50 = plugins/google.la
275+@GOOGLE_BUILTIN_FALSE@@GOOGLE_TRUE@am__append_51 = $(plugins_google_la_OBJECTS)
276+@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__append_52 = meego
277+@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__append_53 = plugins/meego.c
278+@MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@am__append_54 = plugins/meego.la
279+@MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@am__append_55 = $(plugins_meego_la_OBJECTS)
280+@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__append_56 = polkit
281+@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__append_57 = plugins/polkit.c
282+@POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@am__append_58 = plugins/polkit.la
283+@POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@am__append_59 = $(plugins_polkit_la_OBJECTS)
284+@IWMX_TRUE@am__append_60 = plugins/iwmxsdk.la
285+@IWMX_TRUE@am__append_61 = $(plugins_iwmxsdk_la_OBJECTS)
286+@IOSPM_TRUE@am__append_62 = plugins/iospm.la
287+@IOSPM_TRUE@am__append_63 = $(plugins_iospm_la_OBJECTS)
288+@FAKE_TRUE@am__append_64 = plugins/fake.la
289+@FAKE_TRUE@am__append_65 = $(plugins_fake_la_OBJECTS)
290+@OPENCONNECT_TRUE@am__append_66 = scripts/openconnect-script
291+@OPENCONNECT_FALSE@@VPNC_TRUE@am__append_67 = scripts/openconnect-script
292 @OPENVPN_TRUE@am__append_68 = scripts/openvpn-script
293 @NTPD_BUILTIN_TRUE@@NTPD_TRUE@am__append_69 = ntpd
294 @NTPD_BUILTIN_TRUE@@NTPD_TRUE@am__append_70 = plugins/ntpd.c
295 @NTPD_BUILTIN_TRUE@@NTPD_TRUE@am__append_71 = -DNTPD=\"@NTPD@\"
296 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@am__append_72 = plugins/ntpd.la
297 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@am__append_73 = $(plugins_ntpd_la_OBJECTS)
298-@CLIENT_TRUE@am__append_74 = client/cm
299-@TOOLS_TRUE@am__append_75 = tools/wispr tools/wifi-scan tools/supplicant-test \
300+@NMCOMPAT_BUILTIN_TRUE@@NMCOMPAT_TRUE@am__append_74 = nmcompat
301+@NMCOMPAT_BUILTIN_TRUE@@NMCOMPAT_TRUE@am__append_75 = plugins/nmcompat.c
302+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@am__append_76 = plugins/nmcompat.la
303+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@am__append_77 = $(plugins_nmcompat_la_OBJECTS)
304+@CLIENT_TRUE@am__append_78 = client/cm
305+@TOOLS_TRUE@am__append_79 = tools/wispr tools/wifi-scan tools/supplicant-test \
306 @TOOLS_TRUE@ tools/dhcp-test tools/dhcp-server-test \
307 @TOOLS_TRUE@ tools/addr-test tools/web-test tools/resolv-test \
308 @TOOLS_TRUE@ tools/dbus-test tools/polkit-test \
309 @TOOLS_TRUE@ tools/iptables-test tools/tap-test tools/wpad-test \
310-@TOOLS_TRUE@ tools/stats-ringbuffer-dump
311+@TOOLS_TRUE@ tools/stats-tool
312
313 subdir = .
314 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
315@@ -194,15 +191,6 @@
316 $(plugins_bluetooth_la_LDFLAGS) $(LDFLAGS) -o $@
317 @BLUETOOTH_BUILTIN_FALSE@@BLUETOOTH_TRUE@am_plugins_bluetooth_la_rpath = \
318 @BLUETOOTH_BUILTIN_FALSE@@BLUETOOTH_TRUE@ -rpath $(plugindir)
319-plugins_dnsproxy_la_LIBADD =
320-plugins_dnsproxy_la_SOURCES = plugins/dnsproxy.c
321-plugins_dnsproxy_la_OBJECTS = plugins/plugins_dnsproxy_la-dnsproxy.lo
322-plugins_dnsproxy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
323- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
324- $(plugins_dnsproxy_la_CFLAGS) $(CFLAGS) \
325- $(plugins_dnsproxy_la_LDFLAGS) $(LDFLAGS) -o $@
326-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@am_plugins_dnsproxy_la_rpath = \
327-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@ -rpath $(plugindir)
328 plugins_ethernet_la_LIBADD =
329 plugins_ethernet_la_SOURCES = plugins/ethernet.c
330 plugins_ethernet_la_OBJECTS = plugins/plugins_ethernet_la-ethernet.lo
331@@ -278,6 +266,15 @@
332 $(plugins_meego_la_LDFLAGS) $(LDFLAGS) -o $@
333 @MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@am_plugins_meego_la_rpath = -rpath \
334 @MEEGO_BUILTIN_FALSE@@MEEGO_TRUE@ $(plugindir)
335+plugins_nmcompat_la_LIBADD =
336+plugins_nmcompat_la_SOURCES = plugins/nmcompat.c
337+plugins_nmcompat_la_OBJECTS = plugins/plugins_nmcompat_la-nmcompat.lo
338+plugins_nmcompat_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
339+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
340+ $(plugins_nmcompat_la_CFLAGS) $(CFLAGS) \
341+ $(plugins_nmcompat_la_LDFLAGS) $(LDFLAGS) -o $@
342+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@am_plugins_nmcompat_la_rpath = \
343+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@ -rpath $(plugindir)
344 plugins_ntpd_la_LIBADD =
345 plugins_ntpd_la_SOURCES = plugins/ntpd.c
346 plugins_ntpd_la_OBJECTS = plugins/plugins_ntpd_la-ntpd.lo
347@@ -288,8 +285,9 @@
348 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@am_plugins_ntpd_la_rpath = -rpath \
349 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@ $(plugindir)
350 plugins_ofono_la_LIBADD =
351-plugins_ofono_la_SOURCES = plugins/ofono.c
352-plugins_ofono_la_OBJECTS = plugins/plugins_ofono_la-ofono.lo
353+am__plugins_ofono_la_SOURCES_DIST = plugins/mcc.h plugins/ofono.c
354+@OFONO_BUILTIN_FALSE@@OFONO_TRUE@am_plugins_ofono_la_OBJECTS = plugins/plugins_ofono_la-ofono.lo
355+plugins_ofono_la_OBJECTS = $(am_plugins_ofono_la_OBJECTS)
356 plugins_ofono_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
357 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
358 $(plugins_ofono_la_CFLAGS) $(CFLAGS) \
359@@ -349,6 +347,19 @@
360 $(plugins_portal_la_LDFLAGS) $(LDFLAGS) -o $@
361 @PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@am_plugins_portal_la_rpath = \
362 @PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@ -rpath $(plugindir)
363+plugins_vpnc_la_LIBADD =
364+am__plugins_vpnc_la_SOURCES_DIST = plugins/vpn.h plugins/vpn.c \
365+ plugins/vpnc.c
366+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@am_plugins_vpnc_la_OBJECTS = \
367+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ plugins/plugins_vpnc_la-vpn.lo \
368+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ plugins/plugins_vpnc_la-vpnc.lo
369+plugins_vpnc_la_OBJECTS = $(am_plugins_vpnc_la_OBJECTS)
370+plugins_vpnc_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
371+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
372+ $(plugins_vpnc_la_CFLAGS) $(CFLAGS) $(plugins_vpnc_la_LDFLAGS) \
373+ $(LDFLAGS) -o $@
374+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@am_plugins_vpnc_la_rpath = -rpath \
375+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ $(plugindir)
376 plugins_wifi_la_LIBADD =
377 am__plugins_wifi_la_SOURCES_DIST = plugins/wifi.c \
378 gsupplicant/gsupplicant.h gsupplicant/dbus.h \
379@@ -364,18 +375,6 @@
380 $(LDFLAGS) -o $@
381 @WIFI_BUILTIN_FALSE@@WIFI_TRUE@am_plugins_wifi_la_rpath = -rpath \
382 @WIFI_BUILTIN_FALSE@@WIFI_TRUE@ $(plugindir)
383-plugins_wifi_legacy_la_LIBADD =
384-am__plugins_wifi_legacy_la_SOURCES_DIST = plugins/wifi-legacy.c \
385- plugins/supplicant.h plugins/supplicant.c
386-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am_plugins_wifi_legacy_la_OBJECTS = plugins/plugins_wifi_legacy_la-wifi-legacy.lo \
387-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ plugins/plugins_wifi_legacy_la-supplicant.lo
388-plugins_wifi_legacy_la_OBJECTS = $(am_plugins_wifi_legacy_la_OBJECTS)
389-plugins_wifi_legacy_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
390- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
391- $(plugins_wifi_legacy_la_CFLAGS) $(CFLAGS) \
392- $(plugins_wifi_legacy_la_LDFLAGS) $(LDFLAGS) -o $@
393-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@am_plugins_wifi_legacy_la_rpath = \
394-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ -rpath $(plugindir)
395 @CLIENT_TRUE@am__EXEEXT_1 = client/cm$(EXEEXT)
396 @TOOLS_TRUE@am__EXEEXT_2 = tools/wispr$(EXEEXT) \
397 @TOOLS_TRUE@ tools/wifi-scan$(EXEEXT) \
398@@ -388,9 +387,10 @@
399 @TOOLS_TRUE@ tools/polkit-test$(EXEEXT) \
400 @TOOLS_TRUE@ tools/iptables-test$(EXEEXT) \
401 @TOOLS_TRUE@ tools/tap-test$(EXEEXT) tools/wpad-test$(EXEEXT) \
402-@TOOLS_TRUE@ tools/stats-ringbuffer-dump$(EXEEXT)
403+@TOOLS_TRUE@ tools/stats-tool$(EXEEXT)
404 @OPENCONNECT_TRUE@am__EXEEXT_3 = scripts/openconnect-script$(EXEEXT)
405-@OPENVPN_TRUE@am__EXEEXT_4 = scripts/openvpn-script$(EXEEXT)
406+@OPENCONNECT_FALSE@@VPNC_TRUE@am__EXEEXT_4 = scripts/openconnect-script$(EXEEXT)
407+@OPENVPN_TRUE@am__EXEEXT_5 = scripts/openvpn-script$(EXEEXT)
408 PROGRAMS = $(noinst_PROGRAMS) $(sbin_PROGRAMS) $(script_PROGRAMS)
409 am__client_cm_SOURCES_DIST = client/main.c
410 @CLIENT_TRUE@am_client_cm_OBJECTS = client/main.$(OBJEXT)
411@@ -406,40 +406,36 @@
412 am__src_connmand_SOURCES_DIST = gdbus/gdbus.h gdbus/mainloop.c \
413 gdbus/watch.c gdbus/object.c gdbus/polkit.c gdhcp/gdhcp.h \
414 gdhcp/common.h gdhcp/common.c gdhcp/client.c gdhcp/server.c \
415- gweb/gweb.h gweb/gweb.c gweb/gresolv.h gweb/gresolv.c \
416- gweb/giognutls.h gweb/gionotls.c plugins/dhcp.c \
417+ gdhcp/ipv4ll.h gdhcp/ipv4ll.c gweb/gweb.h gweb/gweb.c \
418+ gweb/gresolv.h gweb/gresolv.c gweb/giognutls.h gweb/gionotls.c \
419 plugins/loopback.c plugins/ethernet.c plugins/wifi.c \
420 gsupplicant/gsupplicant.h gsupplicant/dbus.h \
421 gsupplicant/supplicant.c gsupplicant/dbus.c \
422- plugins/wifi-legacy.c plugins/supplicant.h \
423- plugins/supplicant.c plugins/bluetooth.c \
424- plugins/hh2serial-gps.c plugins/ofono.c plugins/openconnect.c \
425- plugins/openvpn.c plugins/vpn.c plugins/vpn.h plugins/portal.c \
426- plugins/dnsproxy.c plugins/pacrunner.c plugins/google.c \
427- plugins/meego.c plugins/polkit.c plugins/ntpd.c \
428- src/connman.ver src/main.c src/connman.h src/log.c \
429- src/selftest.c src/error.c src/plugin.c src/task.c \
430- src/element.c src/device.c src/network.c src/connection.c \
431- src/manager.c src/profile.c src/service.c src/agent.c \
432- src/notifier.c src/provider.c src/resolver.c src/ipconfig.c \
433- src/detect.c src/inet.c src/ipv4.c src/dhcp.c src/rtnl.c \
434- src/proxy.c src/utsname.c src/timeserver.c src/rfkill.c \
435- src/wifi.c src/storage.c src/dbus.c src/config.c \
436- src/technology.c src/counter.c src/location.c src/session.c \
437- src/tethering.c src/ondemand.c src/wpad.c src/wispr.c \
438- src/stats.c src/iptables.c
439+ plugins/bluetooth.c plugins/hh2serial-gps.c plugins/mcc.h \
440+ plugins/ofono.c plugins/openconnect.c plugins/openvpn.c \
441+ plugins/vpnc.c plugins/vpn.c plugins/vpn.h plugins/portal.c \
442+ plugins/pacrunner.c plugins/google.c plugins/meego.c \
443+ plugins/polkit.c plugins/ntpd.c plugins/nmcompat.c \
444+ src/connman.ver src/main.c src/connman.h src/log.c src/error.c \
445+ src/plugin.c src/task.c src/element.c src/device.c \
446+ src/network.c src/connection.c src/manager.c src/profile.c \
447+ src/service.c src/agent.c src/notifier.c src/provider.c \
448+ src/resolver.c src/ipconfig.c src/detect.c src/inet.c \
449+ src/ipv4.c src/dhcp.c src/rtnl.c src/proxy.c src/utsname.c \
450+ src/timeserver.c src/rfkill.c src/wifi.c src/storage.c \
451+ src/dbus.c src/config.c src/technology.c src/counter.c \
452+ src/location.c src/session.c src/tethering.c src/wpad.c \
453+ src/wispr.c src/stats.c src/iptables.c src/dnsproxy.c
454 am__objects_2 = gdbus/mainloop.$(OBJEXT) gdbus/watch.$(OBJEXT) \
455 gdbus/object.$(OBJEXT) gdbus/polkit.$(OBJEXT)
456 am__objects_3 = gdhcp/common.$(OBJEXT) gdhcp/client.$(OBJEXT) \
457- gdhcp/server.$(OBJEXT)
458+ gdhcp/server.$(OBJEXT) gdhcp/ipv4ll.$(OBJEXT)
459 @LOOPBACK_BUILTIN_TRUE@@LOOPBACK_TRUE@am__objects_4 = plugins/loopback.$(OBJEXT)
460 @ETHERNET_BUILTIN_TRUE@@ETHERNET_TRUE@am__objects_5 = plugins/ethernet.$(OBJEXT)
461 am__objects_6 = gsupplicant/supplicant.$(OBJEXT) \
462 gsupplicant/dbus.$(OBJEXT)
463 @WIFI_BUILTIN_TRUE@@WIFI_TRUE@am__objects_7 = plugins/wifi.$(OBJEXT) \
464-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ $(am__objects_6) \
465-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ plugins/wifi-legacy.$(OBJEXT) \
466-@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ plugins/supplicant.$(OBJEXT)
467+@WIFI_BUILTIN_TRUE@@WIFI_TRUE@ $(am__objects_6)
468 @BLUETOOTH_BUILTIN_TRUE@@BLUETOOTH_TRUE@am__objects_8 = plugins/bluetooth.$(OBJEXT)
469 @HH2SERIAL_GPS_BUILTIN_TRUE@@HH2SERIAL_GPS_TRUE@am__objects_9 = plugins/hh2serial-gps.$(OBJEXT)
470 @OFONO_BUILTIN_TRUE@@OFONO_TRUE@am__objects_10 = \
471@@ -447,46 +443,51 @@
472 @OPENCONNECT_BUILTIN_TRUE@@OPENCONNECT_TRUE@am__objects_11 = plugins/openconnect.$(OBJEXT)
473 @OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@am__objects_12 = \
474 @OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@ plugins/openvpn.$(OBJEXT)
475-@OPENCONNECT_BUILTIN_TRUE@am__objects_13 = plugins/vpn.$(OBJEXT)
476-@OPENCONNECT_BUILTIN_FALSE@@OPENVPN_BUILTIN_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
477+@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__objects_13 = plugins/vpnc.$(OBJEXT)
478+@OPENCONNECT_BUILTIN_FALSE@@OPENVPN_BUILTIN_FALSE@@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
479+@OPENCONNECT_BUILTIN_FALSE@@OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
480+@OPENCONNECT_BUILTIN_FALSE@@OPENVPN_FALSE@@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
481+@OPENCONNECT_BUILTIN_TRUE@@OPENCONNECT_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
482+@OPENCONNECT_FALSE@@OPENVPN_BUILTIN_FALSE@@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
483+@OPENCONNECT_FALSE@@OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
484+@OPENCONNECT_FALSE@@OPENVPN_FALSE@@VPNC_BUILTIN_TRUE@@VPNC_TRUE@am__objects_14 = plugins/vpn.$(OBJEXT)
485 @PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@am__objects_15 = \
486 @PORTAL_BUILTIN_TRUE@@PORTAL_TRUE@ plugins/portal.$(OBJEXT)
487-@DNSPROXY_BUILTIN_TRUE@@DNSPROXY_TRUE@am__objects_16 = plugins/dnsproxy.$(OBJEXT)
488-@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__objects_17 = plugins/pacrunner.$(OBJEXT)
489-@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__objects_18 = \
490+@PACRUNNER_BUILTIN_TRUE@@PACRUNNER_TRUE@am__objects_16 = plugins/pacrunner.$(OBJEXT)
491+@GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@am__objects_17 = \
492 @GOOGLE_BUILTIN_TRUE@@GOOGLE_TRUE@ plugins/google.$(OBJEXT)
493-@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__objects_19 = \
494+@MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@am__objects_18 = \
495 @MEEGO_BUILTIN_TRUE@@MEEGO_TRUE@ plugins/meego.$(OBJEXT)
496-@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__objects_20 = \
497+@POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@am__objects_19 = \
498 @POLKIT_BUILTIN_TRUE@@POLKIT_TRUE@ plugins/polkit.$(OBJEXT)
499-@NTPD_BUILTIN_TRUE@@NTPD_TRUE@am__objects_21 = plugins/ntpd.$(OBJEXT)
500-am__objects_22 = plugins/dhcp.$(OBJEXT) $(am__objects_4) \
501- $(am__objects_5) $(am__objects_7) $(am__objects_8) \
502- $(am__objects_9) $(am__objects_10) $(am__objects_11) \
503- $(am__objects_12) $(am__objects_13) $(am__objects_14) \
504- $(am__objects_15) $(am__objects_16) $(am__objects_17) \
505- $(am__objects_18) $(am__objects_19) $(am__objects_20) \
506- $(am__objects_21)
507+@NTPD_BUILTIN_TRUE@@NTPD_TRUE@am__objects_20 = plugins/ntpd.$(OBJEXT)
508+@NMCOMPAT_BUILTIN_TRUE@@NMCOMPAT_TRUE@am__objects_21 = plugins/nmcompat.$(OBJEXT)
509+am__objects_22 = $(am__objects_4) $(am__objects_5) $(am__objects_7) \
510+ $(am__objects_8) $(am__objects_9) $(am__objects_10) \
511+ $(am__objects_11) $(am__objects_12) $(am__objects_13) \
512+ $(am__objects_14) $(am__objects_15) $(am__objects_16) \
513+ $(am__objects_17) $(am__objects_18) $(am__objects_19) \
514+ $(am__objects_20) $(am__objects_21)
515 am_src_connmand_OBJECTS = $(am__objects_2) $(am__objects_3) \
516 gweb/gweb.$(OBJEXT) gweb/gresolv.$(OBJEXT) \
517 gweb/gionotls.$(OBJEXT) $(am__objects_22) src/main.$(OBJEXT) \
518- src/log.$(OBJEXT) src/selftest.$(OBJEXT) src/error.$(OBJEXT) \
519- src/plugin.$(OBJEXT) src/task.$(OBJEXT) src/element.$(OBJEXT) \
520- src/device.$(OBJEXT) src/network.$(OBJEXT) \
521- src/connection.$(OBJEXT) src/manager.$(OBJEXT) \
522- src/profile.$(OBJEXT) src/service.$(OBJEXT) \
523- src/agent.$(OBJEXT) src/notifier.$(OBJEXT) \
524- src/provider.$(OBJEXT) src/resolver.$(OBJEXT) \
525- src/ipconfig.$(OBJEXT) src/detect.$(OBJEXT) src/inet.$(OBJEXT) \
526- src/ipv4.$(OBJEXT) src/dhcp.$(OBJEXT) src/rtnl.$(OBJEXT) \
527- src/proxy.$(OBJEXT) src/utsname.$(OBJEXT) \
528- src/timeserver.$(OBJEXT) src/rfkill.$(OBJEXT) \
529- src/wifi.$(OBJEXT) src/storage.$(OBJEXT) src/dbus.$(OBJEXT) \
530- src/config.$(OBJEXT) src/technology.$(OBJEXT) \
531- src/counter.$(OBJEXT) src/location.$(OBJEXT) \
532- src/session.$(OBJEXT) src/tethering.$(OBJEXT) \
533- src/ondemand.$(OBJEXT) src/wpad.$(OBJEXT) src/wispr.$(OBJEXT) \
534- src/stats.$(OBJEXT) src/iptables.$(OBJEXT)
535+ src/log.$(OBJEXT) src/error.$(OBJEXT) src/plugin.$(OBJEXT) \
536+ src/task.$(OBJEXT) src/element.$(OBJEXT) src/device.$(OBJEXT) \
537+ src/network.$(OBJEXT) src/connection.$(OBJEXT) \
538+ src/manager.$(OBJEXT) src/profile.$(OBJEXT) \
539+ src/service.$(OBJEXT) src/agent.$(OBJEXT) \
540+ src/notifier.$(OBJEXT) src/provider.$(OBJEXT) \
541+ src/resolver.$(OBJEXT) src/ipconfig.$(OBJEXT) \
542+ src/detect.$(OBJEXT) src/inet.$(OBJEXT) src/ipv4.$(OBJEXT) \
543+ src/dhcp.$(OBJEXT) src/rtnl.$(OBJEXT) src/proxy.$(OBJEXT) \
544+ src/utsname.$(OBJEXT) src/timeserver.$(OBJEXT) \
545+ src/rfkill.$(OBJEXT) src/wifi.$(OBJEXT) src/storage.$(OBJEXT) \
546+ src/dbus.$(OBJEXT) src/config.$(OBJEXT) \
547+ src/technology.$(OBJEXT) src/counter.$(OBJEXT) \
548+ src/location.$(OBJEXT) src/session.$(OBJEXT) \
549+ src/tethering.$(OBJEXT) src/wpad.$(OBJEXT) src/wispr.$(OBJEXT) \
550+ src/stats.$(OBJEXT) src/iptables.$(OBJEXT) \
551+ src/dnsproxy.$(OBJEXT)
552 src_connmand_OBJECTS = $(am_src_connmand_OBJECTS)
553 am__DEPENDENCIES_1 =
554 src_connmand_DEPENDENCIES = $(am__DEPENDENCIES_1)
555@@ -503,14 +504,15 @@
556 tools_dbus_test_OBJECTS = $(am_tools_dbus_test_OBJECTS)
557 tools_dbus_test_DEPENDENCIES =
558 am__tools_dhcp_server_test_SOURCES_DIST = gdhcp/gdhcp.h gdhcp/common.h \
559- gdhcp/common.c gdhcp/client.c gdhcp/server.c \
560- tools/dhcp-server-test.c
561+ gdhcp/common.c gdhcp/client.c gdhcp/server.c gdhcp/ipv4ll.h \
562+ gdhcp/ipv4ll.c tools/dhcp-server-test.c
563 @TOOLS_TRUE@am_tools_dhcp_server_test_OBJECTS = $(am__objects_3) \
564 @TOOLS_TRUE@ tools/dhcp-server-test.$(OBJEXT)
565 tools_dhcp_server_test_OBJECTS = $(am_tools_dhcp_server_test_OBJECTS)
566 tools_dhcp_server_test_DEPENDENCIES =
567 am__tools_dhcp_test_SOURCES_DIST = gdhcp/gdhcp.h gdhcp/common.h \
568- gdhcp/common.c gdhcp/client.c gdhcp/server.c tools/dhcp-test.c
569+ gdhcp/common.c gdhcp/client.c gdhcp/server.c gdhcp/ipv4ll.h \
570+ gdhcp/ipv4ll.c tools/dhcp-test.c
571 @TOOLS_TRUE@am_tools_dhcp_test_OBJECTS = $(am__objects_3) \
572 @TOOLS_TRUE@ tools/dhcp-test.$(OBJEXT)
573 tools_dhcp_test_OBJECTS = $(am_tools_dhcp_test_OBJECTS)
574@@ -527,10 +529,9 @@
575 @TOOLS_TRUE@ tools/resolv-test.$(OBJEXT)
576 tools_resolv_test_OBJECTS = $(am_tools_resolv_test_OBJECTS)
577 tools_resolv_test_DEPENDENCIES =
578-tools_stats_ringbuffer_dump_SOURCES = tools/stats-ringbuffer-dump.c
579-tools_stats_ringbuffer_dump_OBJECTS = \
580- tools/stats-ringbuffer-dump.$(OBJEXT)
581-tools_stats_ringbuffer_dump_LDADD = $(LDADD)
582+tools_stats_tool_SOURCES = tools/stats-tool.c
583+tools_stats_tool_OBJECTS = tools/stats-tool.$(OBJEXT)
584+tools_stats_tool_DEPENDENCIES =
585 am__tools_supplicant_test_SOURCES_DIST = gdbus/gdbus.h \
586 gdbus/mainloop.c gdbus/watch.c gdbus/object.c gdbus/polkit.c \
587 tools/supplicant-test.c tools/supplicant-dbus.h \
588@@ -595,42 +596,41 @@
589 AM_V_GEN = $(am__v_GEN_$(V))
590 am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
591 am__v_GEN_0 = @echo " GEN " $@;
592-SOURCES = plugins/bluetooth.c plugins/dnsproxy.c plugins/ethernet.c \
593- plugins/fake.c plugins/google.c plugins/hh2serial-gps.c \
594- plugins/iospm.c $(plugins_iwmxsdk_la_SOURCES) \
595- plugins/loopback.c plugins/meego.c plugins/ntpd.c \
596- plugins/ofono.c $(plugins_openconnect_la_SOURCES) \
597+SOURCES = plugins/bluetooth.c plugins/ethernet.c plugins/fake.c \
598+ plugins/google.c plugins/hh2serial-gps.c plugins/iospm.c \
599+ $(plugins_iwmxsdk_la_SOURCES) plugins/loopback.c \
600+ plugins/meego.c plugins/nmcompat.c plugins/ntpd.c \
601+ $(plugins_ofono_la_SOURCES) $(plugins_openconnect_la_SOURCES) \
602 $(plugins_openvpn_la_SOURCES) plugins/pacrunner.c \
603- plugins/polkit.c plugins/portal.c $(plugins_wifi_la_SOURCES) \
604- $(plugins_wifi_legacy_la_SOURCES) $(client_cm_SOURCES) \
605+ plugins/polkit.c plugins/portal.c $(plugins_vpnc_la_SOURCES) \
606+ $(plugins_wifi_la_SOURCES) $(client_cm_SOURCES) \
607 scripts/openconnect-script.c scripts/openvpn-script.c \
608 $(src_connmand_SOURCES) tools/addr-test.c \
609 $(tools_dbus_test_SOURCES) $(tools_dhcp_server_test_SOURCES) \
610 $(tools_dhcp_test_SOURCES) tools/iptables-test.c \
611 tools/polkit-test.c $(tools_resolv_test_SOURCES) \
612- tools/stats-ringbuffer-dump.c $(tools_supplicant_test_SOURCES) \
613+ tools/stats-tool.c $(tools_supplicant_test_SOURCES) \
614 tools/tap-test.c $(tools_web_test_SOURCES) tools/wifi-scan.c \
615 $(tools_wispr_SOURCES) $(tools_wpad_test_SOURCES)
616-DIST_SOURCES = plugins/bluetooth.c plugins/dnsproxy.c \
617- plugins/ethernet.c plugins/fake.c plugins/google.c \
618- plugins/hh2serial-gps.c plugins/iospm.c \
619+DIST_SOURCES = plugins/bluetooth.c plugins/ethernet.c plugins/fake.c \
620+ plugins/google.c plugins/hh2serial-gps.c plugins/iospm.c \
621 $(am__plugins_iwmxsdk_la_SOURCES_DIST) plugins/loopback.c \
622- plugins/meego.c plugins/ntpd.c plugins/ofono.c \
623+ plugins/meego.c plugins/nmcompat.c plugins/ntpd.c \
624+ $(am__plugins_ofono_la_SOURCES_DIST) \
625 $(am__plugins_openconnect_la_SOURCES_DIST) \
626 $(am__plugins_openvpn_la_SOURCES_DIST) plugins/pacrunner.c \
627 plugins/polkit.c plugins/portal.c \
628+ $(am__plugins_vpnc_la_SOURCES_DIST) \
629 $(am__plugins_wifi_la_SOURCES_DIST) \
630- $(am__plugins_wifi_legacy_la_SOURCES_DIST) \
631 $(am__client_cm_SOURCES_DIST) scripts/openconnect-script.c \
632 scripts/openvpn-script.c $(am__src_connmand_SOURCES_DIST) \
633 tools/addr-test.c $(am__tools_dbus_test_SOURCES_DIST) \
634 $(am__tools_dhcp_server_test_SOURCES_DIST) \
635 $(am__tools_dhcp_test_SOURCES_DIST) tools/iptables-test.c \
636 tools/polkit-test.c $(am__tools_resolv_test_SOURCES_DIST) \
637- tools/stats-ringbuffer-dump.c \
638- $(am__tools_supplicant_test_SOURCES_DIST) tools/tap-test.c \
639- $(am__tools_web_test_SOURCES_DIST) tools/wifi-scan.c \
640- $(am__tools_wispr_SOURCES_DIST) \
641+ tools/stats-tool.c $(am__tools_supplicant_test_SOURCES_DIST) \
642+ tools/tap-test.c $(am__tools_web_test_SOURCES_DIST) \
643+ tools/wifi-scan.c $(am__tools_wispr_SOURCES_DIST) \
644 $(am__tools_wpad_test_SOURCES_DIST)
645 DATA = $(dbusconf_DATA) $(pkgconfig_DATA) $(policy_DATA) \
646 $(script_DATA) $(systemdunit_DATA)
647@@ -731,10 +731,9 @@
648 SET_MAKE = @SET_MAKE@
649 SHELL = @SHELL@
650 STRIP = @STRIP@
651-SYSTEMD_CFLAGS = @SYSTEMD_CFLAGS@
652-SYSTEMD_LIBS = @SYSTEMD_LIBS@
653 SYSTEMD_UNITDIR = @SYSTEMD_UNITDIR@
654 VERSION = @VERSION@
655+VPNC = @VPNC@
656 WPASUPPLICANT = @WPASUPPLICANT@
657 XTABLES_CFLAGS = @XTABLES_CFLAGS@
658 XTABLES_LIBS = @XTABLES_LIBS@
659@@ -795,14 +794,13 @@
660 include/notifier.h \
661 include/storage.h include/service.h \
662 include/resolver.h include/ipconfig.h \
663- include/device.h include/network.h include/inet.h \
664- include/ondemand.h
665+ include/device.h include/network.h include/inet.h
666
667 nodist_include_HEADERS = include/version.h
668 noinst_HEADERS = include/driver.h include/element.h include/property.h \
669 include/rtnl.h include/wifi.h include/task.h \
670 include/dbus.h include/rfkill.h include/option.h \
671- include/profile.h include/provider.h include/dhcp.h \
672+ include/profile.h include/provider.h \
673 include/utsname.h include/timeserver.h include/proxy.h \
674 include/location.h include/technology.h
675
676@@ -813,46 +811,51 @@
677 gdbus/object.c gdbus/polkit.c
678
679 gdhcp_sources = gdhcp/gdhcp.h gdhcp/common.h gdhcp/common.c gdhcp/client.c \
680- gdhcp/server.c
681+ gdhcp/server.c gdhcp/ipv4ll.h gdhcp/ipv4ll.c
682
683 gweb_sources = gweb/gweb.h gweb/gweb.c gweb/gresolv.h gweb/gresolv.c \
684 gweb/giognutls.h gweb/giognutls.c
685
686+@DATAFILES_TRUE@@NMCOMPAT_TRUE@nmcompat_conf = plugins/connman-nmcompat.conf
687 @DATAFILES_TRUE@dbusconfdir = @DBUS_CONFDIR@
688-@DATAFILES_TRUE@dbusconf_DATA = src/connman.conf
689+@DATAFILES_TRUE@dbusconf_DATA = src/connman.conf $(nmcompat_conf)
690 @DATAFILES_TRUE@@SYSTEMD_TRUE@systemdunitdir = @SYSTEMD_UNITDIR@
691 @DATAFILES_TRUE@@SYSTEMD_TRUE@systemdunit_DATA = src/connman.service
692 plugin_LTLIBRARIES = $(am__append_3) $(am__append_7) $(am__append_11) \
693 $(am__append_15) $(am__append_19) $(am__append_23) \
694- $(am__append_28) $(am__append_33) $(am__append_39) \
695+ $(am__append_28) $(am__append_33) $(am__append_38) \
696+ $(am__append_42) $(am__append_46) $(am__append_50) \
697+ $(am__append_54) $(am__append_58) $(am__append_60) \
698+ $(am__append_62) $(am__append_64) $(am__append_72) \
699+ $(am__append_76)
700+plugin_objects = $(am__append_4) $(am__append_8) $(am__append_12) \
701+ $(am__append_16) $(am__append_20) $(am__append_24) \
702+ $(am__append_29) $(am__append_34) $(am__append_39) \
703 $(am__append_43) $(am__append_47) $(am__append_51) \
704 $(am__append_55) $(am__append_59) $(am__append_61) \
705- $(am__append_63) $(am__append_65) $(am__append_72)
706-plugin_objects = $(am__append_4) $(am__append_8) $(am__append_12) \
707- $(am__append_16) $(am__append_20) $(am__append_24) \
708- $(am__append_29) $(am__append_34) $(am__append_40) \
709- $(am__append_44) $(am__append_48) $(am__append_52) \
710- $(am__append_56) $(am__append_60) $(am__append_62) \
711- $(am__append_64) $(am__append_66) $(am__append_73)
712-builtin_modules = dhcp $(am__append_1) $(am__append_5) $(am__append_9) \
713+ $(am__append_63) $(am__append_65) $(am__append_73) \
714+ $(am__append_77)
715+builtin_modules = $(am__append_1) $(am__append_5) $(am__append_9) \
716 $(am__append_13) $(am__append_17) $(am__append_21) \
717- $(am__append_25) $(am__append_30) $(am__append_37) \
718- $(am__append_41) $(am__append_45) $(am__append_49) \
719- $(am__append_53) $(am__append_57) $(am__append_69)
720-builtin_sources = plugins/dhcp.c $(am__append_2) $(am__append_6) \
721- $(am__append_10) $(am__append_14) $(am__append_18) \
722- $(am__append_22) $(am__append_26) $(am__append_31) \
723- $(am__append_35) $(am__append_36) $(am__append_38) \
724- $(am__append_42) $(am__append_46) $(am__append_50) \
725- $(am__append_54) $(am__append_58) $(am__append_70)
726+ $(am__append_25) $(am__append_30) $(am__append_35) \
727+ $(am__append_40) $(am__append_44) $(am__append_48) \
728+ $(am__append_52) $(am__append_56) $(am__append_69) \
729+ $(am__append_74)
730+builtin_sources = $(am__append_2) $(am__append_6) $(am__append_10) \
731+ $(am__append_14) $(am__append_18) $(am__append_22) \
732+ $(am__append_26) $(am__append_31) $(am__append_36) \
733+ $(builtin_vpn_sources) $(am__append_41) $(am__append_45) \
734+ $(am__append_49) $(am__append_53) $(am__append_57) \
735+ $(am__append_70) $(am__append_75)
736 builtin_libadd =
737-builtin_cflags = $(am__append_27) $(am__append_32) $(am__append_71)
738+builtin_cflags = $(am__append_27) $(am__append_32) $(am__append_37) \
739+ $(am__append_71)
740 src_connmand_SOURCES = $(gdbus_sources) $(gdhcp_sources) \
741 gweb/gweb.h gweb/gweb.c \
742 gweb/gresolv.h gweb/gresolv.c \
743 gweb/giognutls.h gweb/gionotls.c \
744 $(builtin_sources) src/connman.ver \
745- src/main.c src/connman.h src/log.c src/selftest.c \
746+ src/main.c src/connman.h src/log.c \
747 src/error.c src/plugin.c src/task.c src/element.c \
748 src/device.c src/network.c src/connection.c \
749 src/manager.c src/profile.c src/service.c \
750@@ -862,8 +865,8 @@
751 src/utsname.c src/timeserver.c src/rfkill.c \
752 src/wifi.c src/storage.c src/dbus.c src/config.c \
753 src/technology.c src/counter.c src/location.c \
754- src/session.c src/tethering.c src/ondemand.c \
755- src/wpad.c src/wispr.c src/stats.c src/iptables.c
756+ src/session.c src/tethering.c src/wpad.c src/wispr.c \
757+ src/stats.c src/iptables.c src/dnsproxy.c
758
759 src_connmand_LDADD = $(builtin_libadd) @GLIB_LIBS@ @DBUS_LIBS@ \
760 @CAPNG_LIBS@ @XTABLES_LIBS@ -lresolv -ldl
761@@ -891,12 +894,12 @@
762
763 INCLUDES = -I$(builddir)/include -I$(builddir)/src -I$(srcdir)/gdbus
764 EXTRA_DIST = src/genbuiltin src/connman-dbus.conf \
765- src/connman-polkit.conf plugins/polkit.policy $(test_scripts) \
766- doc/overview-api.txt doc/behavior-api.txt doc/ipconfig-api.txt \
767- doc/plugin-api.txt doc/manager-api.txt doc/agent-api.txt \
768- doc/profile-api.txt doc/service-api.txt doc/technology-api.txt \
769- doc/counter-api.txt doc/advanced-configuration.txt \
770- doc/config-format.txt
771+ src/connman-polkit.conf plugins/connman-nmcompat.conf \
772+ plugins/polkit.policy $(test_scripts) doc/overview-api.txt \
773+ doc/behavior-api.txt doc/ipconfig-api.txt doc/plugin-api.txt \
774+ doc/manager-api.txt doc/agent-api.txt doc/profile-api.txt \
775+ doc/service-api.txt doc/technology-api.txt doc/counter-api.txt \
776+ doc/advanced-configuration.txt doc/config-format.txt
777 script_DATA =
778 script_LTLIBRARIES =
779 plugin_cflags = -fvisibility=hidden -I$(srcdir)/gdbus \
780@@ -913,17 +916,16 @@
781 @WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_la_SOURCES = plugins/wifi.c $(gsupplicant_sources)
782 @WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_la_CFLAGS = $(plugin_cflags)
783 @WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_la_LDFLAGS = $(plugin_ldflags)
784-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_legacy_la_SOURCES = plugins/wifi-legacy.c \
785-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@ plugins/supplicant.h plugins/supplicant.c
786-
787-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_legacy_la_CFLAGS = $(plugin_cflags)
788-@WIFI_BUILTIN_FALSE@@WIFI_TRUE@plugins_wifi_legacy_la_LDFLAGS = $(plugin_ldflags)
789 @BLUETOOTH_BUILTIN_FALSE@@BLUETOOTH_TRUE@plugins_bluetooth_la_CFLAGS = $(plugin_cflags)
790 @BLUETOOTH_BUILTIN_FALSE@@BLUETOOTH_TRUE@plugins_bluetooth_la_LDFLAGS = $(plugin_ldflags)
791 @HH2SERIAL_GPS_BUILTIN_FALSE@@HH2SERIAL_GPS_TRUE@plugins_hh2serial_gps_la_CFLAGS = $(plugin_cflags)
792 @HH2SERIAL_GPS_BUILTIN_FALSE@@HH2SERIAL_GPS_TRUE@plugins_hh2serial_gps_la_LDFLAGS = $(plugin_ldflags)
793+@OFONO_BUILTIN_FALSE@@OFONO_TRUE@plugins_ofono_la_SOURCES = plugins/mcc.h plugins/ofono.c
794 @OFONO_BUILTIN_FALSE@@OFONO_TRUE@plugins_ofono_la_CFLAGS = $(plugin_cflags)
795 @OFONO_BUILTIN_FALSE@@OFONO_TRUE@plugins_ofono_la_LDFLAGS = $(plugin_ldflags)
796+@OPENCONNECT_BUILTIN_TRUE@@OPENCONNECT_TRUE@builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
797+@OPENVPN_BUILTIN_TRUE@@OPENVPN_TRUE@builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
798+@VPNC_BUILTIN_TRUE@@VPNC_TRUE@builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
799 @OPENCONNECT_BUILTIN_FALSE@@OPENCONNECT_TRUE@plugins_openconnect_la_SOURCES = plugins/vpn.h plugins/vpn.c \
800 @OPENCONNECT_BUILTIN_FALSE@@OPENCONNECT_TRUE@ plugins/openconnect.c
801
802@@ -940,10 +942,16 @@
803 @OPENVPN_BUILTIN_FALSE@@OPENVPN_TRUE@ -DSCRIPTDIR=\""$(build_scriptdir)"\"
804
805 @OPENVPN_BUILTIN_FALSE@@OPENVPN_TRUE@plugins_openvpn_la_LDFLAGS = $(plugin_ldflags)
806+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@plugins_vpnc_la_SOURCES = plugins/vpn.h plugins/vpn.c \
807+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ plugins/vpnc.c
808+
809+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@plugins_vpnc_la_CFLAGS = $(plugin_cflags) -DVPNC=\"@VPNC@\" \
810+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ -DSTATEDIR=\""$(statedir)"\" \
811+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@ -DSCRIPTDIR=\""$(build_scriptdir)"\"
812+
813+@VPNC_BUILTIN_FALSE@@VPNC_TRUE@plugins_vpnc_la_LDFLAGS = $(plugin_ldflags)
814 @PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@plugins_portal_la_CFLAGS = $(plugin_cflags)
815 @PORTAL_BUILTIN_FALSE@@PORTAL_TRUE@plugins_portal_la_LDFLAGS = $(plugin_ldflags)
816-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@plugins_dnsproxy_la_CFLAGS = $(plugin_cflags)
817-@DNSPROXY_BUILTIN_FALSE@@DNSPROXY_TRUE@plugins_dnsproxy_la_LDFLAGS = $(plugin_ldflags)
818 @PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@plugins_pacrunner_la_CFLAGS = $(plugin_cflags)
819 @PACRUNNER_BUILTIN_FALSE@@PACRUNNER_TRUE@plugins_pacrunner_la_LDFLAGS = $(plugin_ldflags)
820 @GOOGLE_BUILTIN_FALSE@@GOOGLE_TRUE@plugins_google_la_CFLAGS = $(plugin_cflags)
821@@ -953,7 +961,7 @@
822 @POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@plugins_polkit_la_CFLAGS = $(plugin_cflags)
823 @POLKIT_BUILTIN_FALSE@@POLKIT_TRUE@plugins_polkit_la_LDFLAGS = $(plugin_ldflags)
824 @DATAFILES_TRUE@@POLKIT_TRUE@policydir = @POLKIT_DATADIR@
825-@DATAFILES_TRUE@@POLKIT_TRUE@policy_DATA = plugins/connman.policy
826+@DATAFILES_TRUE@@POLKIT_TRUE@policy_DATA = plugins/net.connman.policy
827 @IWMX_TRUE@plugins_iwmxsdk_la_SOURCES = plugins/iwmx.h plugins/iwmx.c plugins/iwmxsdk.c
828 @IWMX_TRUE@plugins_iwmxsdk_la_CFLAGS = $(plugin_cflags) @IWMXSDK_CFLAGS@
829 @IWMX_TRUE@plugins_iwmxsdk_la_LIBADD = @IWMXSDK_LIBS@ @GLIB_LIBS@
830@@ -962,10 +970,13 @@
831 @IOSPM_TRUE@plugins_iospm_la_LDFLAGS = $(plugin_ldflags)
832 @FAKE_TRUE@plugins_fake_la_CFLAGS = $(plugin_cflags)
833 @FAKE_TRUE@plugins_fake_la_LDFLAGS = $(plugin_ldflags)
834+@OPENCONNECT_FALSE@@VPNC_TRUE@scripts_openconnect_script_LDADD = @DBUS_LIBS@
835 @OPENCONNECT_TRUE@scripts_openconnect_script_LDADD = @DBUS_LIBS@
836 @OPENVPN_TRUE@scripts_openvpn_script_LDADD = @DBUS_LIBS@
837 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@plugins_ntpd_la_CFLAGS = $(plugin_cflags) -DNTPD=\"@NTPD@\"
838 @NTPD_BUILTIN_FALSE@@NTPD_TRUE@plugins_ntpd_la_LDFLAGS = $(plugin_ldflags)
839+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@plugins_nmcompat_la_CFLAGS = $(plugin_cflags)
840+@NMCOMPAT_BUILTIN_FALSE@@NMCOMPAT_TRUE@plugins_nmcompat_la_LDFLAGS = $(plugin_ldflags)
841 @CLIENT_TRUE@client_cm_SOURCES = client/main.c
842 @CLIENT_TRUE@client_cm_LDADD = @DBUS_LIBS@
843 @TOOLS_TRUE@tools_wispr_SOURCES = $(gweb_sources) tools/wispr.c
844@@ -982,6 +993,7 @@
845 @TOOLS_TRUE@tools_resolv_test_LDADD = @GLIB_LIBS@ -lresolv
846 @TOOLS_TRUE@tools_wpad_test_SOURCES = gweb/gresolv.h gweb/gresolv.c tools/wpad-test.c
847 @TOOLS_TRUE@tools_wpad_test_LDADD = @GLIB_LIBS@ -lresolv
848+@TOOLS_TRUE@tools_stats_tool_LDADD = @GLIB_LIBS@
849 @TOOLS_TRUE@tools_dhcp_test_SOURCES = $(gdhcp_sources) tools/dhcp-test.c
850 @TOOLS_TRUE@tools_dhcp_test_LDADD = @GLIB_LIBS@
851 @TOOLS_TRUE@tools_dhcp_server_test_SOURCES = $(gdhcp_sources) tools/dhcp-server-test.c
852@@ -996,9 +1008,9 @@
853 test/simple-agent test/show-introspection test/test-compat \
854 test/test-manager test/test-connman test/monitor-connman \
855 test/connect-vpn test/disconnect-vpn test/monitor-manager \
856- test/test-counter test/set-ip-method test/set-nameservers \
857- test/set-domains test/find-service test/get-services \
858- test/get-proxy-autoconfig test/set-proxy \
859+ test/test-counter test/set-ipv4-method test/set-ipv6-method \
860+ test/set-nameservers test/set-domains test/find-service \
861+ test/get-services test/get-proxy-autoconfig test/set-proxy \
862 test/enable-tethering test/disable-tethering test/backtrace
863
864 @TEST_TRUE@testdir = $(pkglibdir)/test
865@@ -1012,7 +1024,6 @@
866 --enable-wifi \
867 --enable-bluetooth \
868 --enable-ofono \
869- --enable-dnsproxy \
870 --enable-pacrunner \
871 --enable-google \
872 --enable-meego \
873@@ -1166,10 +1177,6 @@
874 plugins/$(DEPDIR)/$(am__dirstamp)
875 plugins/bluetooth.la: $(plugins_bluetooth_la_OBJECTS) $(plugins_bluetooth_la_DEPENDENCIES) plugins/$(am__dirstamp)
876 $(AM_V_CCLD)$(plugins_bluetooth_la_LINK) $(am_plugins_bluetooth_la_rpath) $(plugins_bluetooth_la_OBJECTS) $(plugins_bluetooth_la_LIBADD) $(LIBS)
877-plugins/plugins_dnsproxy_la-dnsproxy.lo: plugins/$(am__dirstamp) \
878- plugins/$(DEPDIR)/$(am__dirstamp)
879-plugins/dnsproxy.la: $(plugins_dnsproxy_la_OBJECTS) $(plugins_dnsproxy_la_DEPENDENCIES) plugins/$(am__dirstamp)
880- $(AM_V_CCLD)$(plugins_dnsproxy_la_LINK) $(am_plugins_dnsproxy_la_rpath) $(plugins_dnsproxy_la_OBJECTS) $(plugins_dnsproxy_la_LIBADD) $(LIBS)
881 plugins/plugins_ethernet_la-ethernet.lo: plugins/$(am__dirstamp) \
882 plugins/$(DEPDIR)/$(am__dirstamp)
883 plugins/ethernet.la: $(plugins_ethernet_la_OBJECTS) $(plugins_ethernet_la_DEPENDENCIES) plugins/$(am__dirstamp)
884@@ -1204,6 +1211,10 @@
885 plugins/$(DEPDIR)/$(am__dirstamp)
886 plugins/meego.la: $(plugins_meego_la_OBJECTS) $(plugins_meego_la_DEPENDENCIES) plugins/$(am__dirstamp)
887 $(AM_V_CCLD)$(plugins_meego_la_LINK) $(am_plugins_meego_la_rpath) $(plugins_meego_la_OBJECTS) $(plugins_meego_la_LIBADD) $(LIBS)
888+plugins/plugins_nmcompat_la-nmcompat.lo: plugins/$(am__dirstamp) \
889+ plugins/$(DEPDIR)/$(am__dirstamp)
890+plugins/nmcompat.la: $(plugins_nmcompat_la_OBJECTS) $(plugins_nmcompat_la_DEPENDENCIES) plugins/$(am__dirstamp)
891+ $(AM_V_CCLD)$(plugins_nmcompat_la_LINK) $(am_plugins_nmcompat_la_rpath) $(plugins_nmcompat_la_OBJECTS) $(plugins_nmcompat_la_LIBADD) $(LIBS)
892 plugins/plugins_ntpd_la-ntpd.lo: plugins/$(am__dirstamp) \
893 plugins/$(DEPDIR)/$(am__dirstamp)
894 plugins/ntpd.la: $(plugins_ntpd_la_OBJECTS) $(plugins_ntpd_la_DEPENDENCIES) plugins/$(am__dirstamp)
895@@ -1236,6 +1247,12 @@
896 plugins/$(DEPDIR)/$(am__dirstamp)
897 plugins/portal.la: $(plugins_portal_la_OBJECTS) $(plugins_portal_la_DEPENDENCIES) plugins/$(am__dirstamp)
898 $(AM_V_CCLD)$(plugins_portal_la_LINK) $(am_plugins_portal_la_rpath) $(plugins_portal_la_OBJECTS) $(plugins_portal_la_LIBADD) $(LIBS)
899+plugins/plugins_vpnc_la-vpn.lo: plugins/$(am__dirstamp) \
900+ plugins/$(DEPDIR)/$(am__dirstamp)
901+plugins/plugins_vpnc_la-vpnc.lo: plugins/$(am__dirstamp) \
902+ plugins/$(DEPDIR)/$(am__dirstamp)
903+plugins/vpnc.la: $(plugins_vpnc_la_OBJECTS) $(plugins_vpnc_la_DEPENDENCIES) plugins/$(am__dirstamp)
904+ $(AM_V_CCLD)$(plugins_vpnc_la_LINK) $(am_plugins_vpnc_la_rpath) $(plugins_vpnc_la_OBJECTS) $(plugins_vpnc_la_LIBADD) $(LIBS)
905 plugins/plugins_wifi_la-wifi.lo: plugins/$(am__dirstamp) \
906 plugins/$(DEPDIR)/$(am__dirstamp)
907 gsupplicant/$(am__dirstamp):
908@@ -1251,12 +1268,6 @@
909 gsupplicant/$(DEPDIR)/$(am__dirstamp)
910 plugins/wifi.la: $(plugins_wifi_la_OBJECTS) $(plugins_wifi_la_DEPENDENCIES) plugins/$(am__dirstamp)
911 $(AM_V_CCLD)$(plugins_wifi_la_LINK) $(am_plugins_wifi_la_rpath) $(plugins_wifi_la_OBJECTS) $(plugins_wifi_la_LIBADD) $(LIBS)
912-plugins/plugins_wifi_legacy_la-wifi-legacy.lo: \
913- plugins/$(am__dirstamp) plugins/$(DEPDIR)/$(am__dirstamp)
914-plugins/plugins_wifi_legacy_la-supplicant.lo: plugins/$(am__dirstamp) \
915- plugins/$(DEPDIR)/$(am__dirstamp)
916-plugins/wifi_legacy.la: $(plugins_wifi_legacy_la_OBJECTS) $(plugins_wifi_legacy_la_DEPENDENCIES) plugins/$(am__dirstamp)
917- $(AM_V_CCLD)$(plugins_wifi_legacy_la_LINK) $(am_plugins_wifi_legacy_la_rpath) $(plugins_wifi_legacy_la_OBJECTS) $(plugins_wifi_legacy_la_LIBADD) $(LIBS)
918
919 clean-noinstPROGRAMS:
920 @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
921@@ -1405,6 +1416,8 @@
922 gdhcp/$(DEPDIR)/$(am__dirstamp)
923 gdhcp/server.$(OBJEXT): gdhcp/$(am__dirstamp) \
924 gdhcp/$(DEPDIR)/$(am__dirstamp)
925+gdhcp/ipv4ll.$(OBJEXT): gdhcp/$(am__dirstamp) \
926+ gdhcp/$(DEPDIR)/$(am__dirstamp)
927 gweb/$(am__dirstamp):
928 @$(MKDIR_P) gweb
929 @: > gweb/$(am__dirstamp)
930@@ -1417,8 +1430,6 @@
931 gweb/$(DEPDIR)/$(am__dirstamp)
932 gweb/gionotls.$(OBJEXT): gweb/$(am__dirstamp) \
933 gweb/$(DEPDIR)/$(am__dirstamp)
934-plugins/dhcp.$(OBJEXT): plugins/$(am__dirstamp) \
935- plugins/$(DEPDIR)/$(am__dirstamp)
936 plugins/loopback.$(OBJEXT): plugins/$(am__dirstamp) \
937 plugins/$(DEPDIR)/$(am__dirstamp)
938 plugins/ethernet.$(OBJEXT): plugins/$(am__dirstamp) \
939@@ -1429,10 +1440,6 @@
940 gsupplicant/$(DEPDIR)/$(am__dirstamp)
941 gsupplicant/dbus.$(OBJEXT): gsupplicant/$(am__dirstamp) \
942 gsupplicant/$(DEPDIR)/$(am__dirstamp)
943-plugins/wifi-legacy.$(OBJEXT): plugins/$(am__dirstamp) \
944- plugins/$(DEPDIR)/$(am__dirstamp)
945-plugins/supplicant.$(OBJEXT): plugins/$(am__dirstamp) \
946- plugins/$(DEPDIR)/$(am__dirstamp)
947 plugins/bluetooth.$(OBJEXT): plugins/$(am__dirstamp) \
948 plugins/$(DEPDIR)/$(am__dirstamp)
949 plugins/hh2serial-gps.$(OBJEXT): plugins/$(am__dirstamp) \
950@@ -1443,12 +1450,12 @@
951 plugins/$(DEPDIR)/$(am__dirstamp)
952 plugins/openvpn.$(OBJEXT): plugins/$(am__dirstamp) \
953 plugins/$(DEPDIR)/$(am__dirstamp)
954+plugins/vpnc.$(OBJEXT): plugins/$(am__dirstamp) \
955+ plugins/$(DEPDIR)/$(am__dirstamp)
956 plugins/vpn.$(OBJEXT): plugins/$(am__dirstamp) \
957 plugins/$(DEPDIR)/$(am__dirstamp)
958 plugins/portal.$(OBJEXT): plugins/$(am__dirstamp) \
959 plugins/$(DEPDIR)/$(am__dirstamp)
960-plugins/dnsproxy.$(OBJEXT): plugins/$(am__dirstamp) \
961- plugins/$(DEPDIR)/$(am__dirstamp)
962 plugins/pacrunner.$(OBJEXT): plugins/$(am__dirstamp) \
963 plugins/$(DEPDIR)/$(am__dirstamp)
964 plugins/google.$(OBJEXT): plugins/$(am__dirstamp) \
965@@ -1459,6 +1466,8 @@
966 plugins/$(DEPDIR)/$(am__dirstamp)
967 plugins/ntpd.$(OBJEXT): plugins/$(am__dirstamp) \
968 plugins/$(DEPDIR)/$(am__dirstamp)
969+plugins/nmcompat.$(OBJEXT): plugins/$(am__dirstamp) \
970+ plugins/$(DEPDIR)/$(am__dirstamp)
971 src/$(am__dirstamp):
972 @$(MKDIR_P) src
973 @: > src/$(am__dirstamp)
974@@ -1467,8 +1476,6 @@
975 @: > src/$(DEPDIR)/$(am__dirstamp)
976 src/main.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
977 src/log.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
978-src/selftest.$(OBJEXT): src/$(am__dirstamp) \
979- src/$(DEPDIR)/$(am__dirstamp)
980 src/error.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
981 src/plugin.$(OBJEXT): src/$(am__dirstamp) \
982 src/$(DEPDIR)/$(am__dirstamp)
983@@ -1525,13 +1532,13 @@
984 src/$(DEPDIR)/$(am__dirstamp)
985 src/tethering.$(OBJEXT): src/$(am__dirstamp) \
986 src/$(DEPDIR)/$(am__dirstamp)
987-src/ondemand.$(OBJEXT): src/$(am__dirstamp) \
988- src/$(DEPDIR)/$(am__dirstamp)
989 src/wpad.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
990 src/wispr.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
991 src/stats.$(OBJEXT): src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp)
992 src/iptables.$(OBJEXT): src/$(am__dirstamp) \
993 src/$(DEPDIR)/$(am__dirstamp)
994+src/dnsproxy.$(OBJEXT): src/$(am__dirstamp) \
995+ src/$(DEPDIR)/$(am__dirstamp)
996 src/connmand$(EXEEXT): $(src_connmand_OBJECTS) $(src_connmand_DEPENDENCIES) src/$(am__dirstamp)
997 @rm -f src/connmand$(EXEEXT)
998 $(AM_V_CCLD)$(src_connmand_LINK) $(src_connmand_OBJECTS) $(src_connmand_LDADD) $(LIBS)
999@@ -1576,11 +1583,11 @@
1000 tools/resolv-test$(EXEEXT): $(tools_resolv_test_OBJECTS) $(tools_resolv_test_DEPENDENCIES) tools/$(am__dirstamp)
1001 @rm -f tools/resolv-test$(EXEEXT)
1002 $(AM_V_CCLD)$(LINK) $(tools_resolv_test_OBJECTS) $(tools_resolv_test_LDADD) $(LIBS)
1003-tools/stats-ringbuffer-dump.$(OBJEXT): tools/$(am__dirstamp) \
1004+tools/stats-tool.$(OBJEXT): tools/$(am__dirstamp) \
1005 tools/$(DEPDIR)/$(am__dirstamp)
1006-tools/stats-ringbuffer-dump$(EXEEXT): $(tools_stats_ringbuffer_dump_OBJECTS) $(tools_stats_ringbuffer_dump_DEPENDENCIES) tools/$(am__dirstamp)
1007- @rm -f tools/stats-ringbuffer-dump$(EXEEXT)
1008- $(AM_V_CCLD)$(LINK) $(tools_stats_ringbuffer_dump_OBJECTS) $(tools_stats_ringbuffer_dump_LDADD) $(LIBS)
1009+tools/stats-tool$(EXEEXT): $(tools_stats_tool_OBJECTS) $(tools_stats_tool_DEPENDENCIES) tools/$(am__dirstamp)
1010+ @rm -f tools/stats-tool$(EXEEXT)
1011+ $(AM_V_CCLD)$(LINK) $(tools_stats_tool_OBJECTS) $(tools_stats_tool_LDADD) $(LIBS)
1012 tools/supplicant-test.$(OBJEXT): tools/$(am__dirstamp) \
1013 tools/$(DEPDIR)/$(am__dirstamp)
1014 tools/supplicant-dbus.$(OBJEXT): tools/$(am__dirstamp) \
1015@@ -1661,6 +1668,7 @@
1016 -rm -f gdbus/watch.$(OBJEXT)
1017 -rm -f gdhcp/client.$(OBJEXT)
1018 -rm -f gdhcp/common.$(OBJEXT)
1019+ -rm -f gdhcp/ipv4ll.$(OBJEXT)
1020 -rm -f gdhcp/server.$(OBJEXT)
1021 -rm -f gsupplicant/dbus.$(OBJEXT)
1022 -rm -f gsupplicant/plugins_wifi_la-dbus.$(OBJEXT)
1023@@ -1673,13 +1681,12 @@
1024 -rm -f gweb/gresolv.$(OBJEXT)
1025 -rm -f gweb/gweb.$(OBJEXT)
1026 -rm -f plugins/bluetooth.$(OBJEXT)
1027- -rm -f plugins/dhcp.$(OBJEXT)
1028- -rm -f plugins/dnsproxy.$(OBJEXT)
1029 -rm -f plugins/ethernet.$(OBJEXT)
1030 -rm -f plugins/google.$(OBJEXT)
1031 -rm -f plugins/hh2serial-gps.$(OBJEXT)
1032 -rm -f plugins/loopback.$(OBJEXT)
1033 -rm -f plugins/meego.$(OBJEXT)
1034+ -rm -f plugins/nmcompat.$(OBJEXT)
1035 -rm -f plugins/ntpd.$(OBJEXT)
1036 -rm -f plugins/ofono.$(OBJEXT)
1037 -rm -f plugins/openconnect.$(OBJEXT)
1038@@ -1687,8 +1694,6 @@
1039 -rm -f plugins/pacrunner.$(OBJEXT)
1040 -rm -f plugins/plugins_bluetooth_la-bluetooth.$(OBJEXT)
1041 -rm -f plugins/plugins_bluetooth_la-bluetooth.lo
1042- -rm -f plugins/plugins_dnsproxy_la-dnsproxy.$(OBJEXT)
1043- -rm -f plugins/plugins_dnsproxy_la-dnsproxy.lo
1044 -rm -f plugins/plugins_ethernet_la-ethernet.$(OBJEXT)
1045 -rm -f plugins/plugins_ethernet_la-ethernet.lo
1046 -rm -f plugins/plugins_fake_la-fake.$(OBJEXT)
1047@@ -1707,6 +1712,8 @@
1048 -rm -f plugins/plugins_loopback_la-loopback.lo
1049 -rm -f plugins/plugins_meego_la-meego.$(OBJEXT)
1050 -rm -f plugins/plugins_meego_la-meego.lo
1051+ -rm -f plugins/plugins_nmcompat_la-nmcompat.$(OBJEXT)
1052+ -rm -f plugins/plugins_nmcompat_la-nmcompat.lo
1053 -rm -f plugins/plugins_ntpd_la-ntpd.$(OBJEXT)
1054 -rm -f plugins/plugins_ntpd_la-ntpd.lo
1055 -rm -f plugins/plugins_ofono_la-ofono.$(OBJEXT)
1056@@ -1725,17 +1732,16 @@
1057 -rm -f plugins/plugins_polkit_la-polkit.lo
1058 -rm -f plugins/plugins_portal_la-portal.$(OBJEXT)
1059 -rm -f plugins/plugins_portal_la-portal.lo
1060+ -rm -f plugins/plugins_vpnc_la-vpn.$(OBJEXT)
1061+ -rm -f plugins/plugins_vpnc_la-vpn.lo
1062+ -rm -f plugins/plugins_vpnc_la-vpnc.$(OBJEXT)
1063+ -rm -f plugins/plugins_vpnc_la-vpnc.lo
1064 -rm -f plugins/plugins_wifi_la-wifi.$(OBJEXT)
1065 -rm -f plugins/plugins_wifi_la-wifi.lo
1066- -rm -f plugins/plugins_wifi_legacy_la-supplicant.$(OBJEXT)
1067- -rm -f plugins/plugins_wifi_legacy_la-supplicant.lo
1068- -rm -f plugins/plugins_wifi_legacy_la-wifi-legacy.$(OBJEXT)
1069- -rm -f plugins/plugins_wifi_legacy_la-wifi-legacy.lo
1070 -rm -f plugins/polkit.$(OBJEXT)
1071 -rm -f plugins/portal.$(OBJEXT)
1072- -rm -f plugins/supplicant.$(OBJEXT)
1073 -rm -f plugins/vpn.$(OBJEXT)
1074- -rm -f plugins/wifi-legacy.$(OBJEXT)
1075+ -rm -f plugins/vpnc.$(OBJEXT)
1076 -rm -f plugins/wifi.$(OBJEXT)
1077 -rm -f scripts/openconnect-script.$(OBJEXT)
1078 -rm -f scripts/openvpn-script.$(OBJEXT)
1079@@ -1747,6 +1753,7 @@
1080 -rm -f src/detect.$(OBJEXT)
1081 -rm -f src/device.$(OBJEXT)
1082 -rm -f src/dhcp.$(OBJEXT)
1083+ -rm -f src/dnsproxy.$(OBJEXT)
1084 -rm -f src/element.$(OBJEXT)
1085 -rm -f src/error.$(OBJEXT)
1086 -rm -f src/inet.$(OBJEXT)
1087@@ -1759,7 +1766,6 @@
1088 -rm -f src/manager.$(OBJEXT)
1089 -rm -f src/network.$(OBJEXT)
1090 -rm -f src/notifier.$(OBJEXT)
1091- -rm -f src/ondemand.$(OBJEXT)
1092 -rm -f src/plugin.$(OBJEXT)
1093 -rm -f src/profile.$(OBJEXT)
1094 -rm -f src/provider.$(OBJEXT)
1095@@ -1767,7 +1773,6 @@
1096 -rm -f src/resolver.$(OBJEXT)
1097 -rm -f src/rfkill.$(OBJEXT)
1098 -rm -f src/rtnl.$(OBJEXT)
1099- -rm -f src/selftest.$(OBJEXT)
1100 -rm -f src/service.$(OBJEXT)
1101 -rm -f src/session.$(OBJEXT)
1102 -rm -f src/stats.$(OBJEXT)
1103@@ -1787,7 +1792,7 @@
1104 -rm -f tools/iptables-test.$(OBJEXT)
1105 -rm -f tools/polkit-test.$(OBJEXT)
1106 -rm -f tools/resolv-test.$(OBJEXT)
1107- -rm -f tools/stats-ringbuffer-dump.$(OBJEXT)
1108+ -rm -f tools/stats-tool.$(OBJEXT)
1109 -rm -f tools/supplicant-dbus.$(OBJEXT)
1110 -rm -f tools/supplicant-test.$(OBJEXT)
1111 -rm -f tools/supplicant.$(OBJEXT)
1112@@ -1807,6 +1812,7 @@
1113 @AMDEP_TRUE@@am__include@ @am__quote@gdbus/$(DEPDIR)/watch.Po@am__quote@
1114 @AMDEP_TRUE@@am__include@ @am__quote@gdhcp/$(DEPDIR)/client.Po@am__quote@
1115 @AMDEP_TRUE@@am__include@ @am__quote@gdhcp/$(DEPDIR)/common.Po@am__quote@
1116+@AMDEP_TRUE@@am__include@ @am__quote@gdhcp/$(DEPDIR)/ipv4ll.Po@am__quote@
1117 @AMDEP_TRUE@@am__include@ @am__quote@gdhcp/$(DEPDIR)/server.Po@am__quote@
1118 @AMDEP_TRUE@@am__include@ @am__quote@gsupplicant/$(DEPDIR)/dbus.Po@am__quote@
1119 @AMDEP_TRUE@@am__include@ @am__quote@gsupplicant/$(DEPDIR)/plugins_wifi_la-dbus.Plo@am__quote@
1120@@ -1817,20 +1823,18 @@
1121 @AMDEP_TRUE@@am__include@ @am__quote@gweb/$(DEPDIR)/gresolv.Po@am__quote@
1122 @AMDEP_TRUE@@am__include@ @am__quote@gweb/$(DEPDIR)/gweb.Po@am__quote@
1123 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/bluetooth.Po@am__quote@
1124-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/dhcp.Po@am__quote@
1125-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/dnsproxy.Po@am__quote@
1126 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/ethernet.Po@am__quote@
1127 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/google.Po@am__quote@
1128 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/hh2serial-gps.Po@am__quote@
1129 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/loopback.Po@am__quote@
1130 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/meego.Po@am__quote@
1131+@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/nmcompat.Po@am__quote@
1132 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/ntpd.Po@am__quote@
1133 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/ofono.Po@am__quote@
1134 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/openconnect.Po@am__quote@
1135 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/openvpn.Po@am__quote@
1136 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/pacrunner.Po@am__quote@
1137 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_bluetooth_la-bluetooth.Plo@am__quote@
1138-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_dnsproxy_la-dnsproxy.Plo@am__quote@
1139 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_ethernet_la-ethernet.Plo@am__quote@
1140 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_fake_la-fake.Plo@am__quote@
1141 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_google_la-google.Plo@am__quote@
1142@@ -1840,6 +1844,7 @@
1143 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_iwmxsdk_la-iwmxsdk.Plo@am__quote@
1144 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_loopback_la-loopback.Plo@am__quote@
1145 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_meego_la-meego.Plo@am__quote@
1146+@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_nmcompat_la-nmcompat.Plo@am__quote@
1147 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_ntpd_la-ntpd.Plo@am__quote@
1148 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_ofono_la-ofono.Plo@am__quote@
1149 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_openconnect_la-openconnect.Plo@am__quote@
1150@@ -1849,14 +1854,13 @@
1151 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_pacrunner_la-pacrunner.Plo@am__quote@
1152 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_polkit_la-polkit.Plo@am__quote@
1153 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_portal_la-portal.Plo@am__quote@
1154+@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_vpnc_la-vpn.Plo@am__quote@
1155+@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_vpnc_la-vpnc.Plo@am__quote@
1156 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_wifi_la-wifi.Plo@am__quote@
1157-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_wifi_legacy_la-supplicant.Plo@am__quote@
1158-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/plugins_wifi_legacy_la-wifi-legacy.Plo@am__quote@
1159 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/polkit.Po@am__quote@
1160 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/portal.Po@am__quote@
1161-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/supplicant.Po@am__quote@
1162 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/vpn.Po@am__quote@
1163-@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/wifi-legacy.Po@am__quote@
1164+@AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/vpnc.Po@am__quote@
1165 @AMDEP_TRUE@@am__include@ @am__quote@plugins/$(DEPDIR)/wifi.Po@am__quote@
1166 @AMDEP_TRUE@@am__include@ @am__quote@scripts/$(DEPDIR)/openconnect-script.Po@am__quote@
1167 @AMDEP_TRUE@@am__include@ @am__quote@scripts/$(DEPDIR)/openvpn-script.Po@am__quote@
1168@@ -1868,6 +1872,7 @@
1169 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/detect.Po@am__quote@
1170 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/device.Po@am__quote@
1171 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dhcp.Po@am__quote@
1172+@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/dnsproxy.Po@am__quote@
1173 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/element.Po@am__quote@
1174 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/error.Po@am__quote@
1175 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/inet.Po@am__quote@
1176@@ -1880,7 +1885,6 @@
1177 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/manager.Po@am__quote@
1178 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/network.Po@am__quote@
1179 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/notifier.Po@am__quote@
1180-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/ondemand.Po@am__quote@
1181 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/plugin.Po@am__quote@
1182 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/profile.Po@am__quote@
1183 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/provider.Po@am__quote@
1184@@ -1888,7 +1892,6 @@
1185 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/resolver.Po@am__quote@
1186 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rfkill.Po@am__quote@
1187 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/rtnl.Po@am__quote@
1188-@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/selftest.Po@am__quote@
1189 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/service.Po@am__quote@
1190 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/session.Po@am__quote@
1191 @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/stats.Po@am__quote@
1192@@ -1908,7 +1911,7 @@
1193 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/iptables-test.Po@am__quote@
1194 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/polkit-test.Po@am__quote@
1195 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/resolv-test.Po@am__quote@
1196-@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/stats-ringbuffer-dump.Po@am__quote@
1197+@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/stats-tool.Po@am__quote@
1198 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/supplicant-dbus.Po@am__quote@
1199 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/supplicant-test.Po@am__quote@
1200 @AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/supplicant.Po@am__quote@
1201@@ -1953,14 +1956,6 @@
1202 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1203 @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_bluetooth_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_bluetooth_la-bluetooth.lo `test -f 'plugins/bluetooth.c' || echo '$(srcdir)/'`plugins/bluetooth.c
1204
1205-plugins/plugins_dnsproxy_la-dnsproxy.lo: plugins/dnsproxy.c
1206-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_dnsproxy_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_dnsproxy_la-dnsproxy.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_dnsproxy_la-dnsproxy.Tpo -c -o plugins/plugins_dnsproxy_la-dnsproxy.lo `test -f 'plugins/dnsproxy.c' || echo '$(srcdir)/'`plugins/dnsproxy.c
1207-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_dnsproxy_la-dnsproxy.Tpo plugins/$(DEPDIR)/plugins_dnsproxy_la-dnsproxy.Plo
1208-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1209-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/dnsproxy.c' object='plugins/plugins_dnsproxy_la-dnsproxy.lo' libtool=yes @AMDEPBACKSLASH@
1210-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1211-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_dnsproxy_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_dnsproxy_la-dnsproxy.lo `test -f 'plugins/dnsproxy.c' || echo '$(srcdir)/'`plugins/dnsproxy.c
1212-
1213 plugins/plugins_ethernet_la-ethernet.lo: plugins/ethernet.c
1214 @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_ethernet_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_ethernet_la-ethernet.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_ethernet_la-ethernet.Tpo -c -o plugins/plugins_ethernet_la-ethernet.lo `test -f 'plugins/ethernet.c' || echo '$(srcdir)/'`plugins/ethernet.c
1215 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_ethernet_la-ethernet.Tpo plugins/$(DEPDIR)/plugins_ethernet_la-ethernet.Plo
1216@@ -2033,6 +2028,14 @@
1217 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1218 @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_meego_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_meego_la-meego.lo `test -f 'plugins/meego.c' || echo '$(srcdir)/'`plugins/meego.c
1219
1220+plugins/plugins_nmcompat_la-nmcompat.lo: plugins/nmcompat.c
1221+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_nmcompat_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_nmcompat_la-nmcompat.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_nmcompat_la-nmcompat.Tpo -c -o plugins/plugins_nmcompat_la-nmcompat.lo `test -f 'plugins/nmcompat.c' || echo '$(srcdir)/'`plugins/nmcompat.c
1222+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_nmcompat_la-nmcompat.Tpo plugins/$(DEPDIR)/plugins_nmcompat_la-nmcompat.Plo
1223+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1224+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/nmcompat.c' object='plugins/plugins_nmcompat_la-nmcompat.lo' libtool=yes @AMDEPBACKSLASH@
1225+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1226+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_nmcompat_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_nmcompat_la-nmcompat.lo `test -f 'plugins/nmcompat.c' || echo '$(srcdir)/'`plugins/nmcompat.c
1227+
1228 plugins/plugins_ntpd_la-ntpd.lo: plugins/ntpd.c
1229 @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_ntpd_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_ntpd_la-ntpd.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_ntpd_la-ntpd.Tpo -c -o plugins/plugins_ntpd_la-ntpd.lo `test -f 'plugins/ntpd.c' || echo '$(srcdir)/'`plugins/ntpd.c
1230 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_ntpd_la-ntpd.Tpo plugins/$(DEPDIR)/plugins_ntpd_la-ntpd.Plo
1231@@ -2105,6 +2108,22 @@
1232 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1233 @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_portal_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_portal_la-portal.lo `test -f 'plugins/portal.c' || echo '$(srcdir)/'`plugins/portal.c
1234
1235+plugins/plugins_vpnc_la-vpn.lo: plugins/vpn.c
1236+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_vpnc_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_vpnc_la-vpn.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_vpnc_la-vpn.Tpo -c -o plugins/plugins_vpnc_la-vpn.lo `test -f 'plugins/vpn.c' || echo '$(srcdir)/'`plugins/vpn.c
1237+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_vpnc_la-vpn.Tpo plugins/$(DEPDIR)/plugins_vpnc_la-vpn.Plo
1238+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1239+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/vpn.c' object='plugins/plugins_vpnc_la-vpn.lo' libtool=yes @AMDEPBACKSLASH@
1240+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1241+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_vpnc_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_vpnc_la-vpn.lo `test -f 'plugins/vpn.c' || echo '$(srcdir)/'`plugins/vpn.c
1242+
1243+plugins/plugins_vpnc_la-vpnc.lo: plugins/vpnc.c
1244+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_vpnc_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_vpnc_la-vpnc.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_vpnc_la-vpnc.Tpo -c -o plugins/plugins_vpnc_la-vpnc.lo `test -f 'plugins/vpnc.c' || echo '$(srcdir)/'`plugins/vpnc.c
1245+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_vpnc_la-vpnc.Tpo plugins/$(DEPDIR)/plugins_vpnc_la-vpnc.Plo
1246+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1247+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/vpnc.c' object='plugins/plugins_vpnc_la-vpnc.lo' libtool=yes @AMDEPBACKSLASH@
1248+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1249+@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_vpnc_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_vpnc_la-vpnc.lo `test -f 'plugins/vpnc.c' || echo '$(srcdir)/'`plugins/vpnc.c
1250+
1251 plugins/plugins_wifi_la-wifi.lo: plugins/wifi.c
1252 @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_wifi_la-wifi.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_wifi_la-wifi.Tpo -c -o plugins/plugins_wifi_la-wifi.lo `test -f 'plugins/wifi.c' || echo '$(srcdir)/'`plugins/wifi.c
1253 @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_wifi_la-wifi.Tpo plugins/$(DEPDIR)/plugins_wifi_la-wifi.Plo
1254@@ -2129,22 +2148,6 @@
1255 @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1256 @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_la_CFLAGS) $(CFLAGS) -c -o gsupplicant/plugins_wifi_la-dbus.lo `test -f 'gsupplicant/dbus.c' || echo '$(srcdir)/'`gsupplicant/dbus.c
1257
1258-plugins/plugins_wifi_legacy_la-wifi-legacy.lo: plugins/wifi-legacy.c
1259-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_legacy_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_wifi_legacy_la-wifi-legacy.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_wifi_legacy_la-wifi-legacy.Tpo -c -o plugins/plugins_wifi_legacy_la-wifi-legacy.lo `test -f 'plugins/wifi-legacy.c' || echo '$(srcdir)/'`plugins/wifi-legacy.c
1260-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_wifi_legacy_la-wifi-legacy.Tpo plugins/$(DEPDIR)/plugins_wifi_legacy_la-wifi-legacy.Plo
1261-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1262-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/wifi-legacy.c' object='plugins/plugins_wifi_legacy_la-wifi-legacy.lo' libtool=yes @AMDEPBACKSLASH@
1263-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1264-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_legacy_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_wifi_legacy_la-wifi-legacy.lo `test -f 'plugins/wifi-legacy.c' || echo '$(srcdir)/'`plugins/wifi-legacy.c
1265-
1266-plugins/plugins_wifi_legacy_la-supplicant.lo: plugins/supplicant.c
1267-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_legacy_la_CFLAGS) $(CFLAGS) -MT plugins/plugins_wifi_legacy_la-supplicant.lo -MD -MP -MF plugins/$(DEPDIR)/plugins_wifi_legacy_la-supplicant.Tpo -c -o plugins/plugins_wifi_legacy_la-supplicant.lo `test -f 'plugins/supplicant.c' || echo '$(srcdir)/'`plugins/supplicant.c
1268-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) plugins/$(DEPDIR)/plugins_wifi_legacy_la-supplicant.Tpo plugins/$(DEPDIR)/plugins_wifi_legacy_la-supplicant.Plo
1269-@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
1270-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugins/supplicant.c' object='plugins/plugins_wifi_legacy_la-supplicant.lo' libtool=yes @AMDEPBACKSLASH@
1271-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
1272-@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(plugins_wifi_legacy_la_CFLAGS) $(CFLAGS) -c -o plugins/plugins_wifi_legacy_la-supplicant.lo `test -f 'plugins/supplicant.c' || echo '$(srcdir)/'`plugins/supplicant.c
1273-
1274 mostlyclean-libtool:
1275 -rm -f *.lo
1276
1277@@ -2670,7 +2673,7 @@
1278 uninstall-testSCRIPTS
1279
1280
1281-plugins/connman.policy: plugins/polkit.policy
1282+plugins/net.connman.policy: plugins/polkit.policy
1283 @POLKIT_TRUE@ $(AM_V_GEN)cp $< $@
1284
1285 src/plugin.$(OBJEXT): src/builtin.h
1286
1287=== modified file 'Makefile.plugins'
1288--- Makefile.plugins 2010-11-30 15:51:10 +0000
1289+++ Makefile.plugins 2011-02-14 13:15:11 +0000
1290@@ -4,9 +4,6 @@
1291 plugin_ldflags = -no-undefined -module -avoid-version
1292
1293
1294-builtin_modules += dhcp
1295-builtin_sources += plugins/dhcp.c
1296-
1297 if LOOPBACK
1298 if LOOPBACK_BUILTIN
1299 builtin_modules += loopback
1300@@ -39,9 +36,6 @@
1301 builtin_modules += wifi
1302 builtin_sources += plugins/wifi.c $(gsupplicant_sources)
1303
1304-builtin_modules += wifi_legacy
1305-builtin_sources += plugins/wifi-legacy.c \
1306- plugins/supplicant.h plugins/supplicant.c
1307 else
1308 plugin_LTLIBRARIES += plugins/wifi.la
1309 plugin_objects += $(plugins_wifi_la_OBJECTS)
1310@@ -49,13 +43,6 @@
1311 plugins_wifi_la_CFLAGS = $(plugin_cflags)
1312 plugins_wifi_la_LDFLAGS = $(plugin_ldflags)
1313
1314-plugin_LTLIBRARIES += plugins/wifi_legacy.la
1315-plugin_objects += $(plugins_wifi_legacy_la_OBJECTS)
1316-plugins_wifi_legacy_la_SOURCES = plugins/wifi-legacy.c \
1317- plugins/supplicant.h plugins/supplicant.c
1318-plugins_wifi_legacy_la_CFLAGS = $(plugin_cflags)
1319-plugins_wifi_legacy_la_LDFLAGS = $(plugin_ldflags)
1320-
1321 endif
1322 endif
1323
1324@@ -86,10 +73,11 @@
1325 if OFONO
1326 if OFONO_BUILTIN
1327 builtin_modules += ofono
1328-builtin_sources += plugins/ofono.c
1329+builtin_sources += plugins/mcc.h plugins/ofono.c
1330 else
1331 plugin_LTLIBRARIES += plugins/ofono.la
1332 plugin_objects += $(plugins_ofono_la_OBJECTS)
1333+plugins_ofono_la_SOURCES = plugins/mcc.h plugins/ofono.c
1334 plugins_ofono_la_CFLAGS = $(plugin_cflags)
1335 plugins_ofono_la_LDFLAGS = $(plugin_ldflags)
1336 endif
1337@@ -99,6 +87,7 @@
1338 if OPENCONNECT_BUILTIN
1339 builtin_modules += openconnect
1340 builtin_sources += plugins/openconnect.c
1341+builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
1342 builtin_cflags += -DOPENCONNECT=\"@OPENCONNECT@\"
1343 else
1344 plugin_LTLIBRARIES += plugins/openconnect.la
1345@@ -116,6 +105,7 @@
1346 if OPENVPN_BUILTIN
1347 builtin_modules += openvpn
1348 builtin_sources += plugins/openvpn.c
1349+builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
1350 builtin_cflags += -DOPENVPN=\"@OPENVPN@\"
1351 else
1352 plugin_LTLIBRARIES += plugins/openvpn.la
1353@@ -129,13 +119,25 @@
1354 endif
1355 endif
1356
1357-if OPENCONNECT_BUILTIN
1358-builtin_sources += plugins/vpn.c plugins/vpn.h
1359+if VPNC
1360+if VPNC_BUILTIN
1361+builtin_modules += vpnc
1362+builtin_sources += plugins/vpnc.c
1363+builtin_vpn_sources = plugins/vpn.c plugins/vpn.h
1364+builtin_cflags += -DVPNC=\"@VPNC@\"
1365 else
1366-if OPENVPN_BUILTIN
1367-builtin_sources += plugins/vpn.c plugins/vpn.h
1368-endif
1369-endif
1370+plugin_LTLIBRARIES += plugins/vpnc.la
1371+plugin_objects += $(plugins_vpnc_la_OBJECTS)
1372+plugins_vpnc_la_SOURCES = plugins/vpn.h plugins/vpn.c \
1373+ plugins/vpnc.c
1374+plugins_vpnc_la_CFLAGS = $(plugin_cflags) -DVPNC=\"@VPNC@\" \
1375+ -DSTATEDIR=\""$(statedir)"\" \
1376+ -DSCRIPTDIR=\""$(build_scriptdir)"\"
1377+plugins_vpnc_la_LDFLAGS = $(plugin_ldflags)
1378+endif
1379+endif
1380+
1381+builtin_sources += $(builtin_vpn_sources)
1382
1383 if PORTAL
1384 if PORTAL_BUILTIN
1385@@ -149,18 +151,6 @@
1386 endif
1387 endif
1388
1389-if DNSPROXY
1390-if DNSPROXY_BUILTIN
1391-builtin_modules += dnsproxy
1392-builtin_sources += plugins/dnsproxy.c
1393-else
1394-plugin_LTLIBRARIES += plugins/dnsproxy.la
1395-plugin_objects += $(plugins_dnsproxy_la_OBJECTS)
1396-plugins_dnsproxy_la_CFLAGS = $(plugin_cflags)
1397-plugins_dnsproxy_la_LDFLAGS = $(plugin_ldflags)
1398-endif
1399-endif
1400-
1401 if PACRUNNER
1402 if PACRUNNER_BUILTIN
1403 builtin_modules += pacrunner
1404@@ -211,7 +201,7 @@
1405 if DATAFILES
1406 policydir = @POLKIT_DATADIR@
1407
1408-policy_DATA = plugins/connman.policy
1409+policy_DATA = plugins/net.connman.policy
1410 endif
1411 endif
1412
1413@@ -242,6 +232,12 @@
1414 script_PROGRAMS += scripts/openconnect-script
1415
1416 scripts_openconnect_script_LDADD = @DBUS_LIBS@
1417+else
1418+if VPNC
1419+script_PROGRAMS += scripts/openconnect-script
1420+
1421+scripts_openconnect_script_LDADD = @DBUS_LIBS@
1422+endif
1423 endif
1424
1425 if OPENVPN
1426@@ -263,9 +259,21 @@
1427 endif
1428 endif
1429
1430+if NMCOMPAT
1431+if NMCOMPAT_BUILTIN
1432+builtin_modules += nmcompat
1433+builtin_sources += plugins/nmcompat.c
1434+else
1435+plugin_LTLIBRARIES += plugins/nmcompat.la
1436+plugin_objects += $(plugins_nmcompat_la_OBJECTS)
1437+plugins_nmcompat_la_CFLAGS = $(plugin_cflags)
1438+plugins_nmcompat_la_LDFLAGS = $(plugin_ldflags)
1439+endif
1440+endif
1441+
1442 EXTRA_DIST += plugins/polkit.policy
1443
1444-plugins/connman.policy: plugins/polkit.policy
1445+plugins/net.connman.policy: plugins/polkit.policy
1446 if POLKIT
1447 $(AM_V_GEN)cp $< $@
1448 endif
1449
1450=== modified file 'README'
1451--- README 2010-11-30 15:44:36 +0000
1452+++ README 2011-02-14 13:15:11 +0000
1453@@ -11,6 +11,7 @@
1454 - Generic plugin infrastructure
1455 - Device and network abstraction (with basic storage support)
1456 - IPv4, routing and DNS configuration
1457+ - DNS Proxy
1458
1459 Various plugins can be enabled for networking support:
1460 - Ethernet plugin
1461@@ -18,7 +19,6 @@
1462 - Bluetooth plugin
1463
1464 Also plugins with additional features are available:
1465- - Resolver plugin (DNS proxy)
1466 - Loopback setup
1467 - PolicyKit support
1468
1469@@ -59,21 +59,6 @@
1470
1471 Enable support for Bluetooth devices (requires BlueZ)
1472
1473- --enable-dnsproxy
1474-
1475- Enable DNS proxy support for /etc/resolv.conf abstraction
1476-
1477- The best solution for multiple connections and proper DNS
1478- handling is a DNS proxy server. This binds a DNS proxy
1479- server to port 53 on the loopback interface (127.0.0.1).
1480-
1481- The /etc/resolv.conf file needs a "nameserver 127.0.0.1"
1482- entry, but can now set the immutable bit or be on a read-only
1483- filesystem. No further modification to that file will be made.
1484-
1485- It is important that this is not used together with other
1486- DNS proxy solution like dnsmasq.
1487-
1488 --enable-loopback
1489
1490 Enable setup of loopback device
1491
1492=== modified file 'TODO'
1493--- TODO 2010-11-30 15:44:36 +0000
1494+++ TODO 2011-02-14 13:15:11 +0000
1495@@ -18,46 +18,12 @@
1496 Owner: Samuel Ortiz <sameo@linux.intel.com>
1497
1498
1499-- IPv4LL
1500-
1501- Priority: Medium
1502- Complexity: C4
1503- Owner: Julien Massot <jmassot@aldebaran-robotics.com>
1504-
1505- The IPv4 Link Local support should be integrated into DHCP-lib.
1506- IPv4LL should be started when DHCP failed, and then DHCP should
1507- be scheduled for periodic trials.
1508- Also, there should be no default route going through an IPv4LL
1509- interface.
1510-
1511-
1512 - VPNc
1513
1514 Priority: Low
1515 Complexity: C2
1516
1517
1518-- Agent callbacks
1519-
1520- Priority: Medium
1521- Complexity: C2
1522- Owner: Patrik Flykt <patrik.flykt@nokia.com>
1523-
1524- Implement Agent API according to doc/agent-api.txt
1525-
1526-
1527-- Moving DNS proxy code to ConnMan core
1528-
1529- Priority: Medium
1530- Complexity: C2
1531-
1532- Supporting DNS proxy or resolv.conf direct editing seems more than
1533- plenty as far as resolving is concerned. So the idea is to move the
1534- dnsproxy plugin code to ConnMan core and have an additional command
1535- line option in case one would like to stick with the current
1536- resolver.c code for editing resolv.conf.
1537-
1538-
1539 - WiFi tethering
1540 Priority: Medium
1541 Complexity: C4
1542@@ -85,11 +51,10 @@
1543
1544 Priority: Medium
1545 Complexity: C2
1546- Owner: Lucio Maciel <lucio.maciel@hp.com>
1547+ Owner: Henri Bragge <henri.bragge@ixonos.com>
1548
1549- The current service provisioning lacks inotify support for adding
1550- new provision files on the fly, and a D-Bus interface for modifying
1551- existing ones.
1552+ The current service provisioning lacks a D-Bus interface for modifying
1553+ existing configurations.
1554
1555
1556 - WiSPR support
1557@@ -118,16 +83,6 @@
1558 WiFi
1559 ====
1560
1561-- WPS
1562-
1563- Priority: Low
1564- Complexity: C2
1565- Dependencies: Core:Agent callbacks
1566- Owner: Tomasz Bursztyka <tomasz.bursztyka@nokia.com>
1567-
1568- Support in gsupplicant and connman core (network/service).
1569-
1570-
1571 - Ad-Hoc support
1572
1573 Priority: Medium
1574@@ -155,16 +110,18 @@
1575 through its pcsc-lite API.
1576
1577
1578-- EAP-Fast
1579+- EAP-FAST
1580
1581 Priority: Low
1582 Complexity: C1
1583+ Owner: Henri Bragge <henri.bragge@ixonos.com>
1584
1585
1586 - EAP-GTC
1587
1588 Priority: Low
1589 Complexity: C1
1590+ Owner: Henri Bragge <henri.bragge@ixonos.com>
1591
1592
1593 - WiFi p2p
1594@@ -173,15 +130,6 @@
1595 Complexity: C2
1596
1597
1598-- WiFi CRDA setting through 3G country
1599-
1600- Priority: Medium
1601- Complexity: C2
1602- Owner: Samuel Ortiz <sameo@linux.intel.com>
1603-
1604- Setting the 802.11 country based on the 3G MNC/MCC.
1605-
1606-
1607 Bluetooth
1608 =========
1609
1610
1611=== modified file 'acinclude.m4'
1612--- acinclude.m4 2009-07-14 21:23:02 +0000
1613+++ acinclude.m4 2011-02-14 13:15:11 +0000
1614@@ -22,6 +22,7 @@
1615 CFLAGS+=" -Wmissing-declarations"
1616 CFLAGS+=" -Wredundant-decls"
1617 CFLAGS+=" -Wcast-align"
1618+ CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED"
1619 fi
1620 ])
1621
1622
1623=== modified file 'configure'
1624--- configure 2010-11-30 15:44:36 +0000
1625+++ configure 2011-02-14 13:15:11 +0000
1626@@ -1,6 +1,6 @@
1627 #! /bin/sh
1628 # Guess values for system-dependent variables and create Makefiles.
1629-# Generated by GNU Autoconf 2.63 for connman 0.64.
1630+# Generated by GNU Autoconf 2.63 for connman 0.69.
1631 #
1632 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
1633 # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
1634@@ -743,8 +743,8 @@
1635 # Identity of this package.
1636 PACKAGE_NAME='connman'
1637 PACKAGE_TARNAME='connman'
1638-PACKAGE_VERSION='0.64'
1639-PACKAGE_STRING='connman 0.64'
1640+PACKAGE_VERSION='0.69'
1641+PACKAGE_STRING='connman 0.69'
1642 PACKAGE_BUGREPORT=''
1643
1644 ac_default_prefix=/usr/local
1645@@ -809,13 +809,11 @@
1646 POLKIT_FALSE
1647 POLKIT_TRUE
1648 POLKIT_DATADIR
1649+XTABLES_LIBS
1650+XTABLES_CFLAGS
1651 SYSTEMD_FALSE
1652 SYSTEMD_TRUE
1653 SYSTEMD_UNITDIR
1654-SYSTEMD_LIBS
1655-SYSTEMD_CFLAGS
1656-XTABLES_LIBS
1657-XTABLES_CFLAGS
1658 DBUS_DATADIR
1659 DBUS_CONFDIR
1660 DBUS_LIBS
1661@@ -824,6 +822,10 @@
1662 GTHREAD_CFLAGS
1663 GLIB_LIBS
1664 GLIB_CFLAGS
1665+NMCOMPAT_BUILTIN_FALSE
1666+NMCOMPAT_BUILTIN_TRUE
1667+NMCOMPAT_FALSE
1668+NMCOMPAT_TRUE
1669 NTPD_BUILTIN_FALSE
1670 NTPD_BUILTIN_TRUE
1671 NTPD_FALSE
1672@@ -847,14 +849,15 @@
1673 PACRUNNER_BUILTIN_TRUE
1674 PACRUNNER_FALSE
1675 PACRUNNER_TRUE
1676-DNSPROXY_BUILTIN_FALSE
1677-DNSPROXY_BUILTIN_TRUE
1678-DNSPROXY_FALSE
1679-DNSPROXY_TRUE
1680 LOOPBACK_BUILTIN_FALSE
1681 LOOPBACK_BUILTIN_TRUE
1682 LOOPBACK_FALSE
1683 LOOPBACK_TRUE
1684+VPNC_BUILTIN_FALSE
1685+VPNC_BUILTIN_TRUE
1686+VPNC_FALSE
1687+VPNC_TRUE
1688+VPNC
1689 OPENVPN_BUILTIN_FALSE
1690 OPENVPN_BUILTIN_TRUE
1691 OPENVPN_FALSE
1692@@ -1036,8 +1039,9 @@
1693 enable_portal
1694 with_openvpn
1695 enable_openvpn
1696+with_vpnc
1697+enable_vpnc
1698 enable_loopback
1699-enable_dnsproxy
1700 enable_pacrunner
1701 enable_google
1702 enable_meego
1703@@ -1046,10 +1050,11 @@
1704 enable_iospm
1705 with_ntpd
1706 enable_ntpd
1707+enable_nmcompat
1708 with_stats_max_file_size
1709 with_dbusconfdir
1710 with_dbusdatadir
1711-enable_systemd
1712+with_systemdunitdir
1713 enable_polkit
1714 enable_client
1715 enable_tools
1716@@ -1078,8 +1083,6 @@
1717 DBUS_LIBS
1718 XTABLES_CFLAGS
1719 XTABLES_LIBS
1720-SYSTEMD_CFLAGS
1721-SYSTEMD_LIBS
1722 NETLINK_CFLAGS
1723 NETLINK_LIBS
1724 GNUTLS_CFLAGS
1725@@ -1638,7 +1641,7 @@
1726 # Omit some internal or obsolete options to make the list less imposing.
1727 # This message is too long to be a string in the A/UX 3.1 sh.
1728 cat <<_ACEOF
1729-\`configure' configures connman 0.64 to adapt to many kinds of systems.
1730+\`configure' configures connman 0.69 to adapt to many kinds of systems.
1731
1732 Usage: $0 [OPTION]... [VAR=VALUE]...
1733
1734@@ -1708,7 +1711,7 @@
1735
1736 if test -n "$ac_init_help"; then
1737 case $ac_init_help in
1738- short | recursive ) echo "Configuration of connman 0.64:";;
1739+ short | recursive ) echo "Configuration of connman 0.69:";;
1740 esac
1741 cat <<\_ACEOF
1742
1743@@ -1740,15 +1743,15 @@
1744 --enable-openconnect enable openconnect support
1745 --enable-portal enable portal detection support
1746 --enable-openvpn enable openvpn support
1747+ --enable-vpnc enable vpnc support
1748 --enable-loopback enable loopback support
1749- --enable-dnsproxy enable DNS proxy support
1750 --enable-pacrunner enable PAC runner support
1751 --enable-google enable Google Public DNS support
1752 --enable-meego enable MeeGo features support
1753 --enable-iwmx enable Intel WiMAX support
1754 --enable-iospm enable Intel OSPM support
1755 --enable-ntpd enable ntpd support
1756- --enable-systemd enable systemd support
1757+ --enable-nmcompat enable nmcompat support
1758 --enable-polkit enable PolicyKit support
1759 --enable-client enable command line client
1760 --enable-tools enable testing tools
1761@@ -1767,12 +1770,15 @@
1762 --with-openconnect=PROGRAM
1763 specify location of openconnect binary
1764 --with-openvpn=PROGRAM specify location of openvpn binary
1765+ --with-vpnc=PROGRAM specify location of vpnc binary
1766 --with-iwmxsdk=PATH path to Intel WiMAX SDK
1767 --with-ntpd=PROGRAM specify ntpd binary location
1768 --with-stats-max-file-size=SIZE
1769 Maximal size of a statistics round robin file
1770 --with-dbusconfdir=PATH path to D-Bus config directory
1771 --with-dbusdatadir=PATH path to D-Bus data directory
1772+ --with-systemdunitdir=DIR
1773+ path to systemd service directory
1774
1775 Some influential environment variables:
1776 PKG_CONFIG path to pkg-config utility
1777@@ -1800,10 +1806,6 @@
1778 C compiler flags for XTABLES, overriding pkg-config
1779 XTABLES_LIBS
1780 linker flags for XTABLES, overriding pkg-config
1781- SYSTEMD_CFLAGS
1782- C compiler flags for SYSTEMD, overriding pkg-config
1783- SYSTEMD_LIBS
1784- linker flags for SYSTEMD, overriding pkg-config
1785 NETLINK_CFLAGS
1786 C compiler flags for NETLINK, overriding pkg-config
1787 NETLINK_LIBS
1788@@ -1880,7 +1882,7 @@
1789 test -n "$ac_init_help" && exit $ac_status
1790 if $ac_init_version; then
1791 cat <<\_ACEOF
1792-connman configure 0.64
1793+connman configure 0.69
1794 generated by GNU Autoconf 2.63
1795
1796 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
1797@@ -1894,7 +1896,7 @@
1798 This file contains any messages produced by compilers while
1799 running configure, to aid debugging if configure makes a mistake.
1800
1801-It was created by connman $as_me 0.64, which was
1802+It was created by connman $as_me 0.69, which was
1803 generated by GNU Autoconf 2.63. Invocation command line was
1804
1805 $ $0 $@
1806@@ -2744,7 +2746,7 @@
1807
1808 # Define the identity of the package.
1809 PACKAGE='connman'
1810- VERSION='0.64'
1811+ VERSION='0.69'
1812
1813
1814 cat >>confdefs.h <<_ACEOF
1815@@ -2955,6 +2957,7 @@
1816 CFLAGS+=" -Wmissing-declarations"
1817 CFLAGS+=" -Wredundant-decls"
1818 CFLAGS+=" -Wcast-align"
1819+ CFLAGS="$CFLAGS -DG_DISABLE_DEPRECATED"
1820 fi
1821
1822
1823@@ -5077,13 +5080,13 @@
1824 else
1825 lt_cv_nm_interface="BSD nm"
1826 echo "int some_variable = 0;" > conftest.$ac_ext
1827- (eval echo "\"\$as_me:5080: $ac_compile\"" >&5)
1828+ (eval echo "\"\$as_me:5083: $ac_compile\"" >&5)
1829 (eval "$ac_compile" 2>conftest.err)
1830 cat conftest.err >&5
1831- (eval echo "\"\$as_me:5083: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
1832+ (eval echo "\"\$as_me:5086: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
1833 (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
1834 cat conftest.err >&5
1835- (eval echo "\"\$as_me:5086: output\"" >&5)
1836+ (eval echo "\"\$as_me:5089: output\"" >&5)
1837 cat conftest.out >&5
1838 if $GREP 'External.*some_variable' conftest.out > /dev/null; then
1839 lt_cv_nm_interface="MS dumpbin"
1840@@ -6289,7 +6292,7 @@
1841 ;;
1842 *-*-irix6*)
1843 # Find out which ABI we are using.
1844- echo '#line 6292 "configure"' > conftest.$ac_ext
1845+ echo '#line 6295 "configure"' > conftest.$ac_ext
1846 if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
1847 (eval $ac_compile) 2>&5
1848 ac_status=$?
1849@@ -8112,11 +8115,11 @@
1850 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1851 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
1852 -e 's:$: $lt_compiler_flag:'`
1853- (eval echo "\"\$as_me:8115: $lt_compile\"" >&5)
1854+ (eval echo "\"\$as_me:8118: $lt_compile\"" >&5)
1855 (eval "$lt_compile" 2>conftest.err)
1856 ac_status=$?
1857 cat conftest.err >&5
1858- echo "$as_me:8119: \$? = $ac_status" >&5
1859+ echo "$as_me:8122: \$? = $ac_status" >&5
1860 if (exit $ac_status) && test -s "$ac_outfile"; then
1861 # The compiler can only warn and ignore the option if not recognized
1862 # So say no if there are warnings other than the usual output.
1863@@ -8451,11 +8454,11 @@
1864 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1865 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
1866 -e 's:$: $lt_compiler_flag:'`
1867- (eval echo "\"\$as_me:8454: $lt_compile\"" >&5)
1868+ (eval echo "\"\$as_me:8457: $lt_compile\"" >&5)
1869 (eval "$lt_compile" 2>conftest.err)
1870 ac_status=$?
1871 cat conftest.err >&5
1872- echo "$as_me:8458: \$? = $ac_status" >&5
1873+ echo "$as_me:8461: \$? = $ac_status" >&5
1874 if (exit $ac_status) && test -s "$ac_outfile"; then
1875 # The compiler can only warn and ignore the option if not recognized
1876 # So say no if there are warnings other than the usual output.
1877@@ -8556,11 +8559,11 @@
1878 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1879 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
1880 -e 's:$: $lt_compiler_flag:'`
1881- (eval echo "\"\$as_me:8559: $lt_compile\"" >&5)
1882+ (eval echo "\"\$as_me:8562: $lt_compile\"" >&5)
1883 (eval "$lt_compile" 2>out/conftest.err)
1884 ac_status=$?
1885 cat out/conftest.err >&5
1886- echo "$as_me:8563: \$? = $ac_status" >&5
1887+ echo "$as_me:8566: \$? = $ac_status" >&5
1888 if (exit $ac_status) && test -s out/conftest2.$ac_objext
1889 then
1890 # The compiler can only warn and ignore the option if not recognized
1891@@ -8611,11 +8614,11 @@
1892 -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
1893 -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
1894 -e 's:$: $lt_compiler_flag:'`
1895- (eval echo "\"\$as_me:8614: $lt_compile\"" >&5)
1896+ (eval echo "\"\$as_me:8617: $lt_compile\"" >&5)
1897 (eval "$lt_compile" 2>out/conftest.err)
1898 ac_status=$?
1899 cat out/conftest.err >&5
1900- echo "$as_me:8618: \$? = $ac_status" >&5
1901+ echo "$as_me:8621: \$? = $ac_status" >&5
1902 if (exit $ac_status) && test -s out/conftest2.$ac_objext
1903 then
1904 # The compiler can only warn and ignore the option if not recognized
1905@@ -11414,7 +11417,7 @@
1906 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
1907 lt_status=$lt_dlunknown
1908 cat > conftest.$ac_ext <<_LT_EOF
1909-#line 11417 "configure"
1910+#line 11420 "configure"
1911 #include "confdefs.h"
1912
1913 #if HAVE_DLFCN_H
1914@@ -11510,7 +11513,7 @@
1915 lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
1916 lt_status=$lt_dlunknown
1917 cat > conftest.$ac_ext <<_LT_EOF
1918-#line 11513 "configure"
1919+#line 11516 "configure"
1920 #include "confdefs.h"
1921
1922 #if HAVE_DLFCN_H
1923@@ -12228,6 +12231,85 @@
1924 fi
1925
1926
1927+
1928+# Check whether --with-vpnc was given.
1929+if test "${with_vpnc+set}" = set; then
1930+ withval=$with_vpnc; path_vpnc=${withval}
1931+fi
1932+
1933+
1934+# Check whether --enable-vpnc was given.
1935+if test "${enable_vpnc+set}" = set; then
1936+ enableval=$enable_vpnc; enable_vpnc=${enableval}
1937+else
1938+ enable_vpnc="no"
1939+fi
1940+
1941+if (test "${enable_vpnc}" != "no"); then
1942+ if (test -z "${path_vpnc}"); then
1943+ # Extract the first word of "vpnc", so it can be a program name with args.
1944+set dummy vpnc; ac_word=$2
1945+{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
1946+$as_echo_n "checking for $ac_word... " >&6; }
1947+if test "${ac_cv_path_VPNC+set}" = set; then
1948+ $as_echo_n "(cached) " >&6
1949+else
1950+ case $VPNC in
1951+ [\\/]* | ?:[\\/]*)
1952+ ac_cv_path_VPNC="$VPNC" # Let the user override the test with a path.
1953+ ;;
1954+ *)
1955+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1956+as_dummy="$PATH:/sbin:/usr/sbin"
1957+for as_dir in $as_dummy
1958+do
1959+ IFS=$as_save_IFS
1960+ test -z "$as_dir" && as_dir=.
1961+ for ac_exec_ext in '' $ac_executable_extensions; do
1962+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
1963+ ac_cv_path_VPNC="$as_dir/$ac_word$ac_exec_ext"
1964+ $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
1965+ break 2
1966+ fi
1967+done
1968+done
1969+IFS=$as_save_IFS
1970+
1971+ ;;
1972+esac
1973+fi
1974+VPNC=$ac_cv_path_VPNC
1975+if test -n "$VPNC"; then
1976+ { $as_echo "$as_me:$LINENO: result: $VPNC" >&5
1977+$as_echo "$VPNC" >&6; }
1978+else
1979+ { $as_echo "$as_me:$LINENO: result: no" >&5
1980+$as_echo "no" >&6; }
1981+fi
1982+
1983+
1984+ else
1985+ VPNC="${path_vpnc}"
1986+
1987+ fi
1988+fi
1989+ if test "${enable_vpnc}" != "no"; then
1990+ VPNC_TRUE=
1991+ VPNC_FALSE='#'
1992+else
1993+ VPNC_TRUE='#'
1994+ VPNC_FALSE=
1995+fi
1996+
1997+ if test "${enable_vpnc}" = "builtin"; then
1998+ VPNC_BUILTIN_TRUE=
1999+ VPNC_BUILTIN_FALSE='#'
2000+else
2001+ VPNC_BUILTIN_TRUE='#'
2002+ VPNC_BUILTIN_FALSE=
2003+fi
2004+
2005+
2006 # Check whether --enable-loopback was given.
2007 if test "${enable_loopback+set}" = set; then
2008 enableval=$enable_loopback; enable_loopback=${enableval}
2009@@ -12478,31 +12560,6 @@
2010 fi
2011
2012
2013-# Check whether --enable-dnsproxy was given.
2014-if test "${enable_dnsproxy+set}" = set; then
2015- enableval=$enable_dnsproxy; enable_dnsproxy=${enableval}
2016-else
2017- enable_dnsproxy="no"
2018-fi
2019-
2020-
2021- if test "${enable_dnsproxy}" != "no"; then
2022- DNSPROXY_TRUE=
2023- DNSPROXY_FALSE='#'
2024-else
2025- DNSPROXY_TRUE='#'
2026- DNSPROXY_FALSE=
2027-fi
2028-
2029- if test "${enable_dnsproxy}" = "builtin"; then
2030- DNSPROXY_BUILTIN_TRUE=
2031- DNSPROXY_BUILTIN_FALSE='#'
2032-else
2033- DNSPROXY_BUILTIN_TRUE='#'
2034- DNSPROXY_BUILTIN_FALSE=
2035-fi
2036-
2037-
2038 # Check whether --enable-pacrunner was given.
2039 if test "${enable_pacrunner+set}" = set; then
2040 enableval=$enable_pacrunner; enable_pacrunner=${enableval}
2041@@ -13634,6 +13691,30 @@
2042 fi
2043
2044
2045+# Check whether --enable-nmcompat was given.
2046+if test "${enable_nmcompat+set}" = set; then
2047+ enableval=$enable_nmcompat; enable_nmcompat=${enableval}
2048+else
2049+ enable_nmcompat="no"
2050+fi
2051+
2052+ if test "${enable_nmcompat}" != "no"; then
2053+ NMCOMPAT_TRUE=
2054+ NMCOMPAT_FALSE='#'
2055+else
2056+ NMCOMPAT_TRUE='#'
2057+ NMCOMPAT_FALSE=
2058+fi
2059+
2060+ if test "${enable_nmcompat}" = "builtin"; then
2061+ NMCOMPAT_BUILTIN_TRUE=
2062+ NMCOMPAT_BUILTIN_FALSE='#'
2063+else
2064+ NMCOMPAT_BUILTIN_TRUE='#'
2065+ NMCOMPAT_BUILTIN_FALSE=
2066+fi
2067+
2068+
2069
2070 # Check whether --with-stats-max-file-size was given.
2071 if test "${with_stats_max_file_size+set}" = set; then
2072@@ -13642,8 +13723,8 @@
2073
2074
2075 if (test -z "${stats_max_file_size}"); then
2076- # default size is 512 kByte
2077- stats_max_file_size="512 * 8 * 128"
2078+ # default size is 16 kByte
2079+ stats_max_file_size="16 * 8 * 128"
2080 fi
2081
2082
2083@@ -13661,12 +13742,12 @@
2084 pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
2085 elif test -n "$PKG_CONFIG"; then
2086 if test -n "$PKG_CONFIG" && \
2087- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\"") >&5
2088- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5
2089+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.22\"") >&5
2090+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.22") 2>&5
2091 ac_status=$?
2092 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
2093 (exit $ac_status); }; then
2094- pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.16" 2>/dev/null`
2095+ pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.22" 2>/dev/null`
2096 else
2097 pkg_failed=yes
2098 fi
2099@@ -13677,12 +13758,12 @@
2100 pkg_cv_GLIB_LIBS="$GLIB_LIBS"
2101 elif test -n "$PKG_CONFIG"; then
2102 if test -n "$PKG_CONFIG" && \
2103- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.16\"") >&5
2104- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.16") 2>&5
2105+ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.22\"") >&5
2106+ ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.22") 2>&5
2107 ac_status=$?
2108 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
2109 (exit $ac_status); }; then
2110- pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.16" 2>/dev/null`
2111+ pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.22" 2>/dev/null`
2112 else
2113 pkg_failed=yes
2114 fi
2115@@ -13700,21 +13781,21 @@
2116 _pkg_short_errors_supported=no
2117 fi
2118 if test $_pkg_short_errors_supported = yes; then
2119- GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.16" 2>&1`
2120+ GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.22" 2>&1`
2121 else
2122- GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.16" 2>&1`
2123+ GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.22" 2>&1`
2124 fi
2125 # Put the nasty error message in config.log where it belongs
2126 echo "$GLIB_PKG_ERRORS" >&5
2127
2128 { $as_echo "$as_me:$LINENO: result: no" >&5
2129 $as_echo "no" >&6; }
2130- { { $as_echo "$as_me:$LINENO: error: GLib >= 2.16 is required" >&5
2131-$as_echo "$as_me: error: GLib >= 2.16 is required" >&2;}
2132+ { { $as_echo "$as_me:$LINENO: error: GLib >= 2.22 is required" >&5
2133+$as_echo "$as_me: error: GLib >= 2.22 is required" >&2;}
2134 { (exit 1); exit 1; }; }
2135 elif test $pkg_failed = untried; then
2136- { { $as_echo "$as_me:$LINENO: error: GLib >= 2.16 is required" >&5
2137-$as_echo "$as_me: error: GLib >= 2.16 is required" >&2;}
2138+ { { $as_echo "$as_me:$LINENO: error: GLib >= 2.22 is required" >&5
2139+$as_echo "$as_me: error: GLib >= 2.22 is required" >&2;}
2140 { (exit 1); exit 1; }; }
2141 else
2142 GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS
2143@@ -13987,6 +14068,27 @@
2144
2145
2146
2147+# Check whether --with-systemdunitdir was given.
2148+if test "${with_systemdunitdir+set}" = set; then
2149+ withval=$with_systemdunitdir; path_systemdunit=${withval}
2150+else
2151+ path_systemdunit="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"
2152+fi
2153+
2154+if (test -n "${path_systemdunit}"); then
2155+ SYSTEMD_UNITDIR="${path_systemdunit}"
2156+
2157+fi
2158+ if test -n "${path_systemdunit}"; then
2159+ SYSTEMD_TRUE=
2160+ SYSTEMD_FALSE='#'
2161+else
2162+ SYSTEMD_TRUE='#'
2163+ SYSTEMD_FALSE=
2164+fi
2165+
2166+
2167+
2168 pkg_failed=no
2169 { $as_echo "$as_me:$LINENO: checking for XTABLES" >&5
2170 $as_echo_n "checking for XTABLES... " >&6; }
2171@@ -14060,99 +14162,6 @@
2172
2173
2174
2175-
2176-# Check whether --enable-systemd was given.
2177-if test "${enable_systemd+set}" = set; then
2178- enableval=$enable_systemd; enable_systemd=${enableval}
2179-fi
2180-
2181-if (test "${enable_systemd}" = "yes"); then
2182-
2183-pkg_failed=no
2184-{ $as_echo "$as_me:$LINENO: checking for SYSTEMD" >&5
2185-$as_echo_n "checking for SYSTEMD... " >&6; }
2186-
2187-if test -n "$SYSTEMD_CFLAGS"; then
2188- pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"
2189- elif test -n "$PKG_CONFIG"; then
2190- if test -n "$PKG_CONFIG" && \
2191- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"systemd\"") >&5
2192- ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
2193- ac_status=$?
2194- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
2195- (exit $ac_status); }; then
2196- pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "systemd" 2>/dev/null`
2197-else
2198- pkg_failed=yes
2199-fi
2200- else
2201- pkg_failed=untried
2202-fi
2203-if test -n "$SYSTEMD_LIBS"; then
2204- pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS"
2205- elif test -n "$PKG_CONFIG"; then
2206- if test -n "$PKG_CONFIG" && \
2207- { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"systemd\"") >&5
2208- ($PKG_CONFIG --exists --print-errors "systemd") 2>&5
2209- ac_status=$?
2210- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
2211- (exit $ac_status); }; then
2212- pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "systemd" 2>/dev/null`
2213-else
2214- pkg_failed=yes
2215-fi
2216- else
2217- pkg_failed=untried
2218-fi
2219-
2220-
2221-
2222-if test $pkg_failed = yes; then
2223-
2224-if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
2225- _pkg_short_errors_supported=yes
2226-else
2227- _pkg_short_errors_supported=no
2228-fi
2229- if test $_pkg_short_errors_supported = yes; then
2230- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "systemd" 2>&1`
2231- else
2232- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors "systemd" 2>&1`
2233- fi
2234- # Put the nasty error message in config.log where it belongs
2235- echo "$SYSTEMD_PKG_ERRORS" >&5
2236-
2237- { $as_echo "$as_me:$LINENO: result: no" >&5
2238-$as_echo "no" >&6; }
2239- { { $as_echo "$as_me:$LINENO: error: systemd is required" >&5
2240-$as_echo "$as_me: error: systemd is required" >&2;}
2241- { (exit 1); exit 1; }; }
2242-elif test $pkg_failed = untried; then
2243- { { $as_echo "$as_me:$LINENO: error: systemd is required" >&5
2244-$as_echo "$as_me: error: systemd is required" >&2;}
2245- { (exit 1); exit 1; }; }
2246-else
2247- SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
2248- SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
2249- { $as_echo "$as_me:$LINENO: result: yes" >&5
2250-$as_echo "yes" >&6; }
2251- dummy=yes
2252-fi
2253- SYSTEMD_UNITDIR="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"
2254- if (test -z "${SYSTEM_UNITDIR}"); then
2255- SYSTEMD_UNITDIR="/lib/systemd/system"
2256- fi
2257-
2258-fi
2259- if test "${enable_systemd}" = "yes"; then
2260- SYSTEMD_TRUE=
2261- SYSTEMD_FALSE='#'
2262-else
2263- SYSTEMD_TRUE='#'
2264- SYSTEMD_FALSE=
2265-fi
2266-
2267-
2268 # Check whether --enable-polkit was given.
2269 if test "${enable_polkit+set}" = set; then
2270 enableval=$enable_polkit; enable_polkit=${enableval}
2271@@ -14744,6 +14753,20 @@
2272 Usually this means the macro was only invoked conditionally." >&2;}
2273 { (exit 1); exit 1; }; }
2274 fi
2275+if test -z "${VPNC_TRUE}" && test -z "${VPNC_FALSE}"; then
2276+ { { $as_echo "$as_me:$LINENO: error: conditional \"VPNC\" was never defined.
2277+Usually this means the macro was only invoked conditionally." >&5
2278+$as_echo "$as_me: error: conditional \"VPNC\" was never defined.
2279+Usually this means the macro was only invoked conditionally." >&2;}
2280+ { (exit 1); exit 1; }; }
2281+fi
2282+if test -z "${VPNC_BUILTIN_TRUE}" && test -z "${VPNC_BUILTIN_FALSE}"; then
2283+ { { $as_echo "$as_me:$LINENO: error: conditional \"VPNC_BUILTIN\" was never defined.
2284+Usually this means the macro was only invoked conditionally." >&5
2285+$as_echo "$as_me: error: conditional \"VPNC_BUILTIN\" was never defined.
2286+Usually this means the macro was only invoked conditionally." >&2;}
2287+ { (exit 1); exit 1; }; }
2288+fi
2289 if test -z "${LOOPBACK_TRUE}" && test -z "${LOOPBACK_FALSE}"; then
2290 { { $as_echo "$as_me:$LINENO: error: conditional \"LOOPBACK\" was never defined.
2291 Usually this means the macro was only invoked conditionally." >&5
2292@@ -14758,20 +14781,6 @@
2293 Usually this means the macro was only invoked conditionally." >&2;}
2294 { (exit 1); exit 1; }; }
2295 fi
2296-if test -z "${DNSPROXY_TRUE}" && test -z "${DNSPROXY_FALSE}"; then
2297- { { $as_echo "$as_me:$LINENO: error: conditional \"DNSPROXY\" was never defined.
2298-Usually this means the macro was only invoked conditionally." >&5
2299-$as_echo "$as_me: error: conditional \"DNSPROXY\" was never defined.
2300-Usually this means the macro was only invoked conditionally." >&2;}
2301- { (exit 1); exit 1; }; }
2302-fi
2303-if test -z "${DNSPROXY_BUILTIN_TRUE}" && test -z "${DNSPROXY_BUILTIN_FALSE}"; then
2304- { { $as_echo "$as_me:$LINENO: error: conditional \"DNSPROXY_BUILTIN\" was never defined.
2305-Usually this means the macro was only invoked conditionally." >&5
2306-$as_echo "$as_me: error: conditional \"DNSPROXY_BUILTIN\" was never defined.
2307-Usually this means the macro was only invoked conditionally." >&2;}
2308- { (exit 1); exit 1; }; }
2309-fi
2310 if test -z "${PACRUNNER_TRUE}" && test -z "${PACRUNNER_FALSE}"; then
2311 { { $as_echo "$as_me:$LINENO: error: conditional \"PACRUNNER\" was never defined.
2312 Usually this means the macro was only invoked conditionally." >&5
2313@@ -14842,6 +14851,20 @@
2314 Usually this means the macro was only invoked conditionally." >&2;}
2315 { (exit 1); exit 1; }; }
2316 fi
2317+if test -z "${NMCOMPAT_TRUE}" && test -z "${NMCOMPAT_FALSE}"; then
2318+ { { $as_echo "$as_me:$LINENO: error: conditional \"NMCOMPAT\" was never defined.
2319+Usually this means the macro was only invoked conditionally." >&5
2320+$as_echo "$as_me: error: conditional \"NMCOMPAT\" was never defined.
2321+Usually this means the macro was only invoked conditionally." >&2;}
2322+ { (exit 1); exit 1; }; }
2323+fi
2324+if test -z "${NMCOMPAT_BUILTIN_TRUE}" && test -z "${NMCOMPAT_BUILTIN_FALSE}"; then
2325+ { { $as_echo "$as_me:$LINENO: error: conditional \"NMCOMPAT_BUILTIN\" was never defined.
2326+Usually this means the macro was only invoked conditionally." >&5
2327+$as_echo "$as_me: error: conditional \"NMCOMPAT_BUILTIN\" was never defined.
2328+Usually this means the macro was only invoked conditionally." >&2;}
2329+ { (exit 1); exit 1; }; }
2330+fi
2331 if test -z "${SYSTEMD_TRUE}" && test -z "${SYSTEMD_FALSE}"; then
2332 { { $as_echo "$as_me:$LINENO: error: conditional \"SYSTEMD\" was never defined.
2333 Usually this means the macro was only invoked conditionally." >&5
2334@@ -15220,7 +15243,7 @@
2335 # report actual input values of CONFIG_FILES etc. instead of their
2336 # values after options handling.
2337 ac_log="
2338-This file was extended by connman $as_me 0.64, which was
2339+This file was extended by connman $as_me 0.69, which was
2340 generated by GNU Autoconf 2.63. Invocation command line was
2341
2342 CONFIG_FILES = $CONFIG_FILES
2343@@ -15283,7 +15306,7 @@
2344 _ACEOF
2345 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
2346 ac_cs_version="\\
2347-connman config.status 0.64
2348+connman config.status 0.69
2349 configured by $0, generated by GNU Autoconf 2.63,
2350 with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
2351
2352
2353=== modified file 'configure.ac'
2354--- configure.ac 2010-11-30 15:51:10 +0000
2355+++ configure.ac 2011-02-14 13:15:11 +0000
2356@@ -1,5 +1,5 @@
2357 AC_PREREQ(2.60)
2358-AC_INIT(connman, 0.64)
2359+AC_INIT(connman, 0.69)
2360
2361 AM_INIT_AUTOMAKE([foreign subdir-objects])
2362 AM_CONFIG_HEADER(config.h)
2363@@ -135,6 +135,23 @@
2364 AM_CONDITIONAL(OPENVPN, test "${enable_openvpn}" != "no")
2365 AM_CONDITIONAL(OPENVPN_BUILTIN, test "${enable_openvpn}" = "builtin")
2366
2367+AC_ARG_WITH(vpnc, AC_HELP_STRING([--with-vpnc=PROGRAM],
2368+ [specify location of vpnc binary]), [path_vpnc=${withval}])
2369+
2370+AC_ARG_ENABLE(vpnc,
2371+ AC_HELP_STRING([--enable-vpnc], [enable vpnc support]),
2372+ [enable_vpnc=${enableval}], [enable_vpnc="no"])
2373+if (test "${enable_vpnc}" != "no"); then
2374+ if (test -z "${path_vpnc}"); then
2375+ AC_PATH_PROG(VPNC, [vpnc], [], $PATH:/sbin:/usr/sbin)
2376+ else
2377+ VPNC="${path_vpnc}"
2378+ AC_SUBST(VPNC)
2379+ fi
2380+fi
2381+AM_CONDITIONAL(VPNC, test "${enable_vpnc}" != "no")
2382+AM_CONDITIONAL(VPNC_BUILTIN, test "${enable_vpnc}" = "builtin")
2383+
2384 AC_ARG_ENABLE(loopback,
2385 AC_HELP_STRING([--enable-loopback], [enable loopback support]),
2386 [enable_loopback=${enableval}], [enable_loopback="no"])
2387@@ -148,13 +165,6 @@
2388 AM_CONDITIONAL(LOOPBACK, test "${enable_loopback}" != "no")
2389 AM_CONDITIONAL(LOOPBACK_BUILTIN, test "${enable_loopback}" = "builtin")
2390
2391-AC_ARG_ENABLE(dnsproxy,
2392- AC_HELP_STRING([--enable-dnsproxy], [enable DNS proxy support]),
2393- [enable_dnsproxy=${enableval}], [enable_dnsproxy="no"])
2394-
2395-AM_CONDITIONAL(DNSPROXY, test "${enable_dnsproxy}" != "no")
2396-AM_CONDITIONAL(DNSPROXY_BUILTIN, test "${enable_dnsproxy}" = "builtin")
2397-
2398 AC_ARG_ENABLE(pacrunner,
2399 AC_HELP_STRING([--enable-pacrunner], [enable PAC runner support]),
2400 [enable_pacrunner=${enableval}], [enable_pacrunner="no"])
2401@@ -264,19 +274,25 @@
2402 AM_CONDITIONAL(NTPD, test "${enable_ntpd}" != "no")
2403 AM_CONDITIONAL(NTPD_BUILTIN, test "${enable_ntpd}" = "builtin")
2404
2405+AC_ARG_ENABLE(nmcompat,
2406+ AC_HELP_STRING([--enable-nmcompat], [enable nmcompat support]),
2407+ [enable_nmcompat=${enableval}], [enable_nmcompat="no"])
2408+AM_CONDITIONAL(NMCOMPAT, test "${enable_nmcompat}" != "no")
2409+AM_CONDITIONAL(NMCOMPAT_BUILTIN, test "${enable_nmcompat}" = "builtin")
2410+
2411 AC_ARG_WITH(stats-max-file-size, AC_HELP_STRING([--with-stats-max-file-size=SIZE],
2412 [Maximal size of a statistics round robin file]),
2413 [stats_max_file_size=${withval}])
2414
2415 if (test -z "${stats_max_file_size}"); then
2416- # default size is 512 kByte
2417- stats_max_file_size="512 * 8 * 128"
2418+ # default size is 16 kByte
2419+ stats_max_file_size="16 * 8 * 128"
2420 fi
2421
2422 AC_DEFINE_UNQUOTED([STATS_MAX_FILE_SIZE], (${stats_max_file_size}), [Maximal size of a statistics round robin file])
2423
2424-PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes,
2425- AC_MSG_ERROR(GLib >= 2.16 is required))
2426+PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.22, dummy=yes,
2427+ AC_MSG_ERROR(GLib >= 2.22 is required))
2428 AC_SUBST(GLIB_CFLAGS)
2429 AC_SUBST(GLIB_LIBS)
2430
2431@@ -316,25 +332,20 @@
2432 fi
2433 AC_SUBST(DBUS_DATADIR)
2434
2435+AC_ARG_WITH([systemdunitdir], AC_HELP_STRING([--with-systemdunitdir=DIR],
2436+ [path to systemd service directory]), [path_systemdunit=${withval}],
2437+ [path_systemdunit="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"])
2438+if (test -n "${path_systemdunit}"); then
2439+ SYSTEMD_UNITDIR="${path_systemdunit}"
2440+ AC_SUBST(SYSTEMD_UNITDIR)
2441+fi
2442+AM_CONDITIONAL(SYSTEMD, test -n "${path_systemdunit}")
2443+
2444 PKG_CHECK_MODULES(XTABLES, xtables, dummy=yes,
2445 AC_MSG_ERROR(Xtables library is required))
2446 AC_SUBST(XTABLES_CFLAGS)
2447 AC_SUBST(XTABLES_LIBS)
2448
2449-
2450-AC_ARG_ENABLE(systemd, AC_HELP_STRING([--enable-systemd],
2451- [enable systemd support]), [enable_systemd=${enableval}])
2452-if (test "${enable_systemd}" = "yes"); then
2453- PKG_CHECK_MODULES(SYSTEMD, systemd, dummy=yes,
2454- AC_MSG_ERROR(systemd is required))
2455- SYSTEMD_UNITDIR="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"
2456- if (test -z "${SYSTEM_UNITDIR}"); then
2457- SYSTEMD_UNITDIR="/lib/systemd/system"
2458- fi
2459- AC_SUBST(SYSTEMD_UNITDIR)
2460-fi
2461-AM_CONDITIONAL(SYSTEMD, test "${enable_systemd}" = "yes")
2462-
2463 AC_ARG_ENABLE(polkit,
2464 AC_HELP_STRING([--enable-polkit], [enable PolicyKit support]),
2465 [enable_polkit=${enableval}], [enable_polkit="no"])
2466
2467=== modified file 'debian/changelog'
2468--- debian/changelog 2010-12-01 18:04:21 +0000
2469+++ debian/changelog 2011-02-14 13:15:11 +0000
2470@@ -1,3 +1,24 @@
2471+connman (0.69-0ubuntu1) UNRELEASED; urgency=low
2472+
2473+ * New upstream release.
2474+ - dhcpd.conf domain-name not transmitted to /etc/resolv.conf (LP: #604581)
2475+ - provide NM compatiblity code for applications which request network
2476+ status (LP: #586033)
2477+ * debian/control: explicitly Conflict with network-manager. (LP: #659460)
2478+ * debian/rules: enable udev and the builtin dhclient during build.
2479+ * debian/patches/04-wifi-add-a-disconnected-timer.patch: refreshed.
2480+ * debian/patches/09-disable-wifi-legacy.patch: dropped.
2481+ * debian/control: drop dhcp3-client Build-Depends, it's no longer required.
2482+ * debian/patches/10-fix-dhcp-renewal-disconnect.patch: avoid disconnections
2483+ caused by calling dhcp_bound() when DHCP renewal results in no IP change.
2484+ (LP: #713146)
2485+ * debian/control: Recommend indicator-network for UI. (LP: #704867)
2486+ * debian/manpages/connmand.8: update to add BUGS section and fix AUTHORS
2487+ (LP: #587779)
2488+ * debian/control: Remove binary Depends on dhcp3-client for connman.
2489+
2490+ -- Mathieu Trudel-Lapierre <mathieu-tl@ubuntu.com> Mon, 14 Feb 2011 08:11:57 -0500
2491+
2492 connman (0.64-0ubuntu1) natty; urgency=low
2493
2494 * New upstream release.
2495
2496=== modified file 'debian/control'
2497--- debian/control 2010-12-01 18:04:21 +0000
2498+++ debian/control 2011-02-14 13:15:11 +0000
2499@@ -10,7 +10,6 @@
2500 dpkg-dev (>= 1.13.19),
2501 quilt,
2502 libudev-dev,
2503- dhcp3-client,
2504 ppp-dev,
2505 libglib2.0-dev,
2506 libdbus-1-dev,
2507@@ -20,7 +19,9 @@
2508
2509 Package: connman
2510 Architecture: any
2511-Depends: ${shlibs:Depends}, ${misc:Depends}, dhcp3-client
2512+Depends: ${shlibs:Depends}, ${misc:Depends}
2513+Conflicts: network-manager
2514+Recommends: indicator-network
2515 Description: Intel Connection Manager daemon
2516 The Linux Connection Manager project provides a daemon for managing
2517 Internet connections within embedded devices running the Linux
2518
2519=== modified file 'debian/manpages/connmand.8'
2520--- debian/manpages/connmand.8 2010-02-03 22:54:32 +0000
2521+++ debian/manpages/connmand.8 2011-02-14 13:15:11 +0000
2522@@ -45,7 +45,16 @@
2523 .IP \fB\-v/\-\-version\fP
2524 Show version information and exit.
2525
2526+.SH BUGS
2527+
2528+ConnMan bugs should be filed against the ConnMan project on the MeeGo bug
2529+tracker, at \fBhttps://bugs.meego.com/\fP.
2530+
2531 .SH AUTHOR
2532
2533-Mathieu Trudel <mathieu\-tl@ubuntu.com>
2534+ConnMan was written by Marcel Holtmann <marcel@holtmann.org>,
2535+Samuel Ortiz <sameo@linux.intel.com>, and many others.
2536+
2537+This manual page was written by Mathieu Trudel <mathieu\-tl@ubuntu.com>,
2538+for the Debian and Ubuntu projects (but may be used by others).
2539
2540
2541=== modified file 'debian/patches/04-wifi-add-a-disconnected-timer.patch'
2542--- debian/patches/04-wifi-add-a-disconnected-timer.patch 2010-11-30 17:05:17 +0000
2543+++ debian/patches/04-wifi-add-a-disconnected-timer.patch 2011-02-14 13:15:11 +0000
2544@@ -24,17 +24,32 @@
2545
2546 Index: head.packaging/plugins/wifi.c
2547 ===================================================================
2548---- head.packaging.orig/plugins/wifi.c 2010-11-30 08:34:39.000000000 +0200
2549-+++ head.packaging/plugins/wifi.c 2010-11-30 08:34:42.000000000 +0200
2550-@@ -61,6 +61,7 @@
2551+--- head.packaging.orig/plugins/wifi.c 2011-02-08 17:05:22.000000000 +0200
2552++++ head.packaging/plugins/wifi.c 2011-02-08 17:06:55.000000000 +0200
2553+@@ -69,10 +69,13 @@
2554 int index;
2555 unsigned flags;
2556 unsigned int watch;
2557 + guint disconnect_timer;
2558 };
2559
2560+ static GList *iface_list = NULL;
2561+
2562++static void stop_disconnected_timer(GSupplicantInterface *interface);
2563++
2564 static int get_bssid(struct connman_device *device,
2565-@@ -311,6 +312,58 @@
2566+ unsigned char *bssid, unsigned int *bssid_len)
2567+ {
2568+@@ -489,6 +492,8 @@
2569+
2570+ connman_network_set_associating(network, FALSE);
2571+
2572++ stop_disconnected_timer(wifi->interface);
2573++
2574+ if (wifi->disconnecting == TRUE)
2575+ return -EALREADY;
2576+
2577+@@ -654,6 +659,73 @@
2578 return "UNKNOWN";
2579 }
2580
2581@@ -43,6 +58,7 @@
2582 + GSupplicantInterface *interface;
2583 + struct connman_network *network;
2584 + struct wifi_data *wifi;
2585++ connman_bool_t wps;
2586 +
2587 + DBG("");
2588 +
2589@@ -55,6 +71,20 @@
2590 +
2591 + network = wifi->network;
2592 +
2593++ /*
2594++ * If we're in one of the idle modes, we have
2595++ * not started association yet and thus setting
2596++ * those ones to FALSE could cancel an association
2597++ * in progress.
2598++ */
2599++ wps = connman_network_get_bool(network, "WiFi.UseWPS");
2600++ if (wps == TRUE)
2601++ if (is_idle_wps(interface, wifi) == TRUE)
2602++ return FALSE;
2603++
2604++ if (is_idle(wifi))
2605++ return FALSE;
2606++
2607 + connman_network_set_associating(network, FALSE);
2608 + connman_network_set_connected(network, FALSE);
2609 +
2610@@ -93,7 +123,15 @@
2611 static void interface_state(GSupplicantInterface *interface)
2612 {
2613 struct connman_network *network;
2614-@@ -330,8 +383,10 @@
2615+@@ -662,7 +734,6 @@
2616+ GSupplicantState state = g_supplicant_interface_get_state(interface);
2617+ unsigned char bssid[ETH_ALEN];
2618+ unsigned int bssid_len;
2619+- connman_bool_t wps;
2620+
2621+ wifi = g_supplicant_interface_get_data(interface);
2622+
2623+@@ -674,8 +745,10 @@
2624 network = wifi->network;
2625 device = wifi->device;
2626
2627@@ -105,7 +143,7 @@
2628
2629 switch (state) {
2630 case G_SUPPLICANT_STATE_SCANNING:
2631-@@ -347,6 +402,8 @@
2632+@@ -694,6 +767,8 @@
2633 /* reset scan trigger and schedule background scan */
2634 connman_device_schedule_scan(device);
2635
2636@@ -114,22 +152,26 @@
2637 if (get_bssid(device, bssid, &bssid_len) == 0)
2638 connman_network_set_address(network,
2639 bssid, bssid_len);
2640-@@ -354,8 +411,7 @@
2641+@@ -701,21 +776,7 @@
2642 break;
2643
2644 case G_SUPPLICANT_STATE_DISCONNECTED:
2645+- /*
2646+- * If we're in one of the idle modes, we have
2647+- * not started association yet and thus setting
2648+- * those ones to FALSE could cancel an association
2649+- * in progress.
2650+- */
2651+- wps = connman_network_get_bool(network, "WiFi.UseWPS");
2652+- if (wps == TRUE)
2653+- if (is_idle_wps(interface, wifi) == TRUE)
2654+- break;
2655+-
2656+- if (is_idle(wifi))
2657+- break;
2658 - connman_network_set_associating(network, FALSE);
2659 - connman_network_set_connected(network, FALSE);
2660 + start_disconnected_timer(interface);
2661 break;
2662
2663 case G_SUPPLICANT_STATE_INACTIVE:
2664-@@ -638,6 +694,8 @@
2665-
2666- connman_network_set_associating(network, FALSE);
2667-
2668-+ stop_disconnected_timer(wifi->interface);
2669-+
2670- return g_supplicant_interface_disconnect(wifi->interface,
2671- disconnect_callback, wifi);
2672- }
2673
2674=== removed file 'debian/patches/09-disable-wifi-legacy.patch'
2675--- debian/patches/09-disable-wifi-legacy.patch 2010-11-30 20:57:55 +0000
2676+++ debian/patches/09-disable-wifi-legacy.patch 1970-01-01 00:00:00 +0000
2677@@ -1,38 +0,0 @@
2678-Disable wifi-legacy
2679-
2680-From: Kalle Valo <kalle.valo@canonical.com>
2681-
2682-
2683----
2684- Makefile.plugins | 11 -----------
2685- 1 files changed, 0 insertions(+), 11 deletions(-)
2686-
2687-Index: head.packaging/Makefile.plugins
2688-===================================================================
2689---- head.packaging.orig/Makefile.plugins 2010-11-30 08:32:46.000000000 +0200
2690-+++ head.packaging/Makefile.plugins 2010-11-30 08:37:51.000000000 +0200
2691-@@ -38,24 +38,12 @@
2692- if WIFI_BUILTIN
2693- builtin_modules += wifi
2694- builtin_sources += plugins/wifi.c $(gsupplicant_sources)
2695--
2696--builtin_modules += wifi_legacy
2697--builtin_sources += plugins/wifi-legacy.c \
2698-- plugins/supplicant.h plugins/supplicant.c
2699- else
2700- plugin_LTLIBRARIES += plugins/wifi.la
2701- plugin_objects += $(plugins_wifi_la_OBJECTS)
2702- plugins_wifi_la_SOURCES = plugins/wifi.c $(gsupplicant_sources)
2703- plugins_wifi_la_CFLAGS = $(plugin_cflags)
2704- plugins_wifi_la_LDFLAGS = $(plugin_ldflags)
2705--
2706--plugin_LTLIBRARIES += plugins/wifi_legacy.la
2707--plugin_objects += $(plugins_wifi_legacy_la_OBJECTS)
2708--plugins_wifi_legacy_la_SOURCES = plugins/wifi-legacy.c \
2709-- plugins/supplicant.h plugins/supplicant.c
2710--plugins_wifi_legacy_la_CFLAGS = $(plugin_cflags)
2711--plugins_wifi_legacy_la_LDFLAGS = $(plugin_ldflags)
2712--
2713- endif
2714- endif
2715-
2716
2717=== added file 'debian/patches/10-fix-dhcp-renewal-disconnect.patch'
2718--- debian/patches/10-fix-dhcp-renewal-disconnect.patch 1970-01-01 00:00:00 +0000
2719+++ debian/patches/10-fix-dhcp-renewal-disconnect.patch 2011-02-14 13:15:11 +0000
2720@@ -0,0 +1,172 @@
2721+From: Kalle Valo <kalle.valo@canonical.com>
2722+Subject: [RFC PATCH] dhcp: call dhcp_bound() only when something has changed
2723+Date: Mon Feb 7 06:04:33 PST 2011
2724+Bug-Ubuntu: https://bugs.edge.launchpad.net/connman/+bug/713146
2725+Forwarded: http://lists.connman.net/pipermail/connman/2011-February/003770.html
2726+Last-Update: 2011-02-10
2727+
2728+A user reported that his konversation (a kde irc client) is disconnecting
2729+periodically every 30 minutes. After some investigation the culprit was
2730+dhcp renewal handling in connman. connman removes and adds again ip settings
2731+during every dhcp renewal and that confused konversation.
2732+
2733+Even when ignoring the konversation problem it's not very robust to remove
2734+settings removed from dhcp and then again set the exactly same settings.
2735+
2736+Here's a patch which adds checks if the dhcp settings have really changed
2737+and only then dhcp_bound() is called.
2738+
2739+Please comment.
2740+---
2741+ src/dhcp.c | 62 ++++++++++++++++++++++++++++++++++++++++++------------------
2742+ 1 files changed, 43 insertions(+), 19 deletions(-)
2743+
2744+Index: connman-0.69/src/dhcp.c
2745+===================================================================
2746+--- connman-0.69.orig/src/dhcp.c 2011-02-10 16:51:54.000000000 -0500
2747++++ connman-0.69/src/dhcp.c 2011-02-10 16:58:26.000000000 -0500
2748+@@ -50,24 +50,29 @@
2749+ struct connman_element *element;
2750+ };
2751+
2752+-static void dhcp_set_value(struct connman_dhcp *dhcp,
2753++static gboolean dhcp_set_value(struct connman_dhcp *dhcp,
2754+ const char *key, const char *value)
2755+ {
2756+ char **nameservers;
2757+
2758+- if (g_strcmp0(key, "Address") == 0) {
2759++ if (g_strcmp0(key, "Address") == 0 &&
2760++ g_strcmp0(dhcp->element->ipv4.address, value) != 0) {
2761+ g_free(dhcp->element->ipv4.address);
2762+ dhcp->element->ipv4.address = g_strdup(value);
2763+- } else if (g_strcmp0(key, "Netmask") == 0) {
2764++ } else if (g_strcmp0(key, "Netmask") == 0 &&
2765++ g_strcmp0(dhcp->element->ipv4.netmask, value) != 0) {
2766+ g_free(dhcp->element->ipv4.netmask);
2767+ dhcp->element->ipv4.netmask = g_strdup(value);
2768+- } else if (g_strcmp0(key, "Gateway") == 0) {
2769++ } else if (g_strcmp0(key, "Gateway") == 0 &&
2770++ g_strcmp0(dhcp->element->ipv4.gateway, value) != 0) {
2771+ g_free(dhcp->element->ipv4.gateway);
2772+ dhcp->element->ipv4.gateway = g_strdup(value);
2773+- } else if (g_strcmp0(key, "Network") == 0) {
2774++ } else if (g_strcmp0(key, "Network") == 0 &&
2775++ g_strcmp0(dhcp->element->ipv4.network, value) != 0) {
2776+ g_free(dhcp->element->ipv4.network);
2777+ dhcp->element->ipv4.network = g_strdup(value);
2778+- } else if (g_strcmp0(key, "Broadcast") == 0) {
2779++ } else if (g_strcmp0(key, "Broadcast") == 0 &&
2780++ g_strcmp0(dhcp->element->ipv4.broadcast, value) != 0) {
2781+ g_free(dhcp->element->ipv4.broadcast);
2782+ dhcp->element->ipv4.broadcast = g_strdup(value);
2783+ } else if (g_strcmp0(key, "Nameserver") == 0) {
2784+@@ -80,28 +85,41 @@
2785+ */
2786+ dhcp->element->ipv4.nameserver = g_strdup(nameservers[0]);
2787+ g_strfreev(nameservers);
2788+- } else if (g_strcmp0(key, "Domainname") == 0) {
2789++
2790++ /*
2791++ * FIXME: compare values and don't do anything if they are
2792++ * the same
2793++ */
2794++ return FALSE;
2795++ } else if (g_strcmp0(key, "Domainname") == 0 &&
2796++ g_strcmp0(dhcp->element->domainname, value) != 0) {
2797+ g_free(dhcp->element->domainname);
2798+ dhcp->element->domainname = g_strdup(value);
2799+
2800+ __connman_utsname_set_domainname(value);
2801+- } else if (g_strcmp0(key, "Hostname") == 0) {
2802++ } else if (g_strcmp0(key, "Hostname") == 0 &&
2803++ g_strcmp0(dhcp->element->hostname, value) != 0) {
2804+ g_free(dhcp->element->hostname);
2805+ dhcp->element->hostname = g_strdup(value);
2806+
2807+ connman_info("ignoring dhcp hostname %s", value);
2808+- } else if (g_strcmp0(key, "Timeserver") == 0) {
2809++ } else if (g_strcmp0(key, "Timeserver") == 0 &&
2810++ g_strcmp0(dhcp->element->ipv4.timeserver, value) != 0) {
2811+ connman_info("Timeserver %s", value);
2812+
2813+ g_free(dhcp->element->ipv4.timeserver);
2814+ dhcp->element->ipv4.timeserver = g_strdup(value);
2815+ } else if (g_strcmp0(key, "MTU") == 0) {
2816+- } else if (g_strcmp0(key, "PAC") == 0) {
2817++ } else if (g_strcmp0(key, "PAC") == 0 &&
2818++ g_strcmp0(dhcp->element->ipv4.pac, value) != 0) {
2819+ connman_info("PAC configuration %s", value);
2820+
2821+ g_free(dhcp->element->ipv4.pac);
2822+ dhcp->element->ipv4.pac = g_strdup(value);
2823+- }
2824++ } else
2825++ return FALSE;
2826++
2827++ return TRUE;
2828+ }
2829+
2830+ static void dhcp_bound(struct connman_dhcp *dhcp)
2831+@@ -153,17 +171,18 @@
2832+ GList *list, *option = NULL;
2833+ char *address, *nameservers;
2834+ size_t ns_strlen = 0;
2835++ gboolean changed = FALSE;
2836+
2837+ DBG("Lease available");
2838+
2839+ address = g_dhcp_client_get_address(dhcp_client);
2840+ if (address != NULL)
2841+- dhcp_set_value(dhcp, "Address", address);
2842++ changed |= dhcp_set_value(dhcp, "Address", address);
2843+ g_free(address);
2844+
2845+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_SUBNET);
2846+ if (option != NULL)
2847+- dhcp_set_value(dhcp, "Netmask", option->data);
2848++ changed |= dhcp_set_value(dhcp, "Netmask", option->data);
2849+
2850+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_DNS_SERVER);
2851+ for (list = option; list; list = list->next)
2852+@@ -177,29 +196,34 @@
2853+ ns_index += strlen((char *) list->data) + 1;
2854+ }
2855+
2856+- dhcp_set_value(dhcp, "Nameserver", nameservers);
2857++ changed |= dhcp_set_value(dhcp, "Nameserver", nameservers);
2858+ }
2859+ g_free(nameservers);
2860+
2861+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_DOMAIN_NAME);
2862+ if (option != NULL)
2863+- dhcp_set_value(dhcp, "Domainname", option->data);
2864++ changed |= dhcp_set_value(dhcp, "Domainname", option->data);
2865+
2866+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_ROUTER);
2867+ if (option != NULL)
2868+- dhcp_set_value(dhcp, "Gateway", option->data);
2869++ changed |= dhcp_set_value(dhcp, "Gateway", option->data);
2870+
2871+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_HOST_NAME);
2872+ if (option != NULL)
2873+- dhcp_set_value(dhcp, "Hostname", option->data);
2874++ changed |= dhcp_set_value(dhcp, "Hostname", option->data);
2875+
2876+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_NTP_SERVER);
2877+ if (option != NULL)
2878+- dhcp_set_value(dhcp, "Timeserver", option->data);
2879++ changed |= dhcp_set_value(dhcp, "Timeserver", option->data);
2880+
2881+ option = g_dhcp_client_get_option(dhcp_client, 252);
2882+ if (option != NULL)
2883+- dhcp_set_value(dhcp, "PAC", option->data);
2884++ changed |= dhcp_set_value(dhcp, "PAC", option->data);
2885++
2886++ DBG("changed %d", changed);
2887++
2888++ if (changed == FALSE)
2889++ return;
2890+
2891+ dhcp_bound(dhcp);
2892+ }
2893
2894=== modified file 'debian/patches/series'
2895--- debian/patches/series 2010-11-30 20:57:55 +0000
2896+++ debian/patches/series 2011-02-14 13:15:11 +0000
2897@@ -4,4 +4,4 @@
2898 04-wifi-add-a-disconnected-timer.patch
2899 05-wifi-don-t-set-associating-sta.patch
2900 08-remove-internal-backtrace-hand.patch
2901-09-disable-wifi-legacy.patch
2902+10-fix-dhcp-renewal-disconnect.patch
2903
2904=== modified file 'debian/rules'
2905--- debian/rules 2010-11-30 16:34:03 +0000
2906+++ debian/rules 2011-02-14 13:15:11 +0000
2907@@ -16,14 +16,16 @@
2908 DEB_DESTDIR = $(CURDIR)/debian/tmp/
2909
2910 DEB_CONFIGURE_EXTRA_FLAGS += \
2911+ --enable-dhclient=builtin \
2912 --enable-ethernet=builtin \
2913 --enable-loopback=builtin \
2914 --enable-pie \
2915 --enable-wifi=builtin \
2916+ --enable-ofono=builtin \
2917 --enable-bluetooth=builtin \
2918+ --enable-udev \
2919 --disable-polkit \
2920 --enable-client \
2921- --enable-ofono=builtin \
2922 $(NULL)
2923
2924 DEB_DH_MAKESHLIBS_ARGS_ALL := -X/usr/lib/connman/
2925
2926=== modified file 'doc/agent-api.txt'
2927--- doc/agent-api.txt 2010-11-30 15:44:36 +0000
2928+++ doc/agent-api.txt 2011-02-14 13:15:11 +0000
2929@@ -21,7 +21,7 @@
2930 A special return value can be used to trigger a
2931 retry of the failed transaction.
2932
2933- Possible Errors: [service].Error.Retry
2934+ Possible Errors: net.connman.Agent.Error.Retry
2935
2936 dict RequestInput(object service, dict fields)
2937
2938@@ -31,8 +31,8 @@
2939
2940 The return value should be a dictionary where the
2941 keys are the field names and the values are the
2942- actual fields. Alternative an error indicating that
2943- the request got cannceled can be returned.
2944+ actual fields. Alternatively an error indicating that
2945+ the request got canceled can be returned.
2946
2947 Most common return field names are "Name" and of
2948 course "Passphrase".
2949@@ -40,7 +40,7 @@
2950 The dictionary arguments contains field names with
2951 their input parameters.
2952
2953- Possible Errors: [service].Error.Canceled
2954+ Possible Errors: net.connman.Agent.Error.Canceled
2955
2956 void Cancel()
2957
2958@@ -66,18 +66,27 @@
2959 The passphrase for a network. For example a WEP
2960 key or a PSK passphrase.
2961
2962+ string WPS
2963+
2964+ This field requests the use of WPS to get associated.
2965+ This is an alternate choice against Passphrase when
2966+ requested service supports WPS. The reply can contain
2967+ either empty pin, if user wants to use push-button
2968+ method, or a pin code if user wants to use the pin
2969+ method.
2970+
2971 Arguments string Type
2972
2973 Contains the type of a field. For example "psk",
2974- "wep", "ssid" or plain "string".
2975+ "wep", "ssid", "wpspin" or plain "string".
2976
2977 string Requirement
2978
2979 Contains the requirement option. Valid values are
2980 "mandatory", "optional" or "alternate".
2981
2982- The "alternate" specifies that this field can be
2983- return as an alternative to another one. An example
2984+ The "alternate" value specifies that this field can be
2985+ returned as an alternative to another one. An example
2986 would be the network name or SSID.
2987
2988 All "mandatory" fields must be returned, while the
2989@@ -109,3 +118,17 @@
2990 }
2991 }
2992 ==> { "Name" : "My hidden network" }
2993+
2994+ Requesting a passphrase for a WPA2 network with WPS alternative:
2995+
2996+ RequestInput("/service3",
2997+ { "Passphrase" : { "Type" : "psk",
2998+ "Requirement" : "mandatory",
2999+ "Alternates" : [ "WPS" ]
3000+ },
3001+ "WPS" : { "Type" : "wpspin",
3002+ "Requirement" : "alternate"
3003+ }
3004+ }
3005+
3006+ ==> { "WPS" : "123456" }
3007
3008=== modified file 'doc/config-format.txt'
3009--- doc/config-format.txt 2010-11-30 15:44:36 +0000
3010+++ doc/config-format.txt 2011-02-14 13:15:11 +0000
3011@@ -39,7 +39,9 @@
3012 passphrase. The PrivateKeyPassphrase field is ignored when this field is set
3013 to fsid.
3014 - Identity: Identity string for EAP.
3015-- Phase2: Phase2 (inner authentication with TLS tunnel) parameters.
3016+- Phase2: Phase2 (inner authentication with TLS tunnel) authentication method.
3017+Prefix the value with "EAP-" to indicate the usage of an EAP-based inner
3018+authentication method (should only be used with EAP = TTLS).
3019 - Passphrase: RSN/WPA/WPA2 Passphrase
3020
3021
3022
3023=== modified file 'doc/counter-api.txt'
3024--- doc/counter-api.txt 2010-11-30 15:44:36 +0000
3025+++ doc/counter-api.txt 2011-02-14 13:15:11 +0000
3026@@ -27,7 +27,7 @@
3027 When "home" counter is active, then "roaming" counter
3028 will contain an empty dictionary and vise-versa.
3029
3030- The dictionary argument contains following entries:
3031+ The dictionary argument contains the following entries:
3032
3033 RX.Packets
3034
3035
3036=== modified file 'doc/ipconfig-api.txt'
3037--- doc/ipconfig-api.txt 2010-08-04 17:22:28 +0000
3038+++ doc/ipconfig-api.txt 2011-02-14 13:15:11 +0000
3039@@ -5,7 +5,7 @@
3040 IP basics
3041 =========
3042
3043-The core IP handling is designed around network interfaces or more precise
3044+The core IP handling is designed around network interfaces or more precisely
3045 what the Linux kernel handles as struct net_device. Via RTNL every interface
3046 is tracked and an IP device created for it.
3047
3048
3049=== modified file 'doc/manager-api.txt'
3050--- doc/manager-api.txt 2010-11-30 15:44:36 +0000
3051+++ doc/manager-api.txt 2011-02-14 13:15:11 +0000
3052@@ -249,13 +249,6 @@
3053 the limited usage of WiFi or Bluetooth devices might
3054 be allowed in some situations.
3055
3056- boolean Tethering [readwrite]
3057-
3058- This option allows to enable or disable the support
3059- for tethering. When tethering is enabled then the
3060- default service is bridged to all client where
3061- connection sharing is supported.
3062-
3063 object ActiveProfile [readwrite]
3064
3065 Object path of the current active profile.
3066
3067=== modified file 'doc/overview-api.txt'
3068--- doc/overview-api.txt 2010-11-30 15:44:36 +0000
3069+++ doc/overview-api.txt 2011-02-14 13:15:11 +0000
3070@@ -37,7 +37,7 @@
3071 | Other WiMAX (strength 50) |
3072 +---------------------------------------+
3073
3074-If non of the services has been used before the sorting order will be done
3075+If none of the services has been used before the sorting order will be done
3076 with these priorities:
3077
3078 1. Ethernet (lower index numbers first)
3079@@ -63,12 +63,12 @@
3080 strength value is normalized to 0-100 (effectively a percentage) and allows
3081 an easy sorting.
3082
3083-If the signal strength is identical than the WiMAX network should be shown
3084+If the signal strength is identical then the WiMAX network should be shown
3085 first since it is a licensed spectrum and more reliable. Also the number
3086 of WiMAX networks will be smaller than the number of WiFi since that operates
3087 in an unlicensed spectrum.
3088
3089-WiFi networks with the same signal strength are then sorted by its security
3090+WiFi networks with the same signal strength are then sorted by their security
3091 setting. WPA2 encrypted networks should be preferred over WPA/WEP and also
3092 unencrypted ones. After that they will be sorted by the SSID in alphabetical
3093 order.
3094@@ -122,13 +122,13 @@
3095 | |
3096
3097 This means that all services with an order > 0 have favorite=yes and all
3098-other have favorite=no setting. The favorite setting is exposed via a
3099+others have favorite=no setting. The favorite setting is exposed via a
3100 property over the service interface. As mentioned above, the order number
3101 is only used internally.
3102
3103-Within Connection Manager many service can be connected at the same time and
3104+Within Connection Manager many services can be connected at the same time and
3105 also have an IP assignment. However only one can have the default route. The
3106-service with the the default route will always be sorted at the top of the
3107+service with the default route will always be sorted at the top of the
3108 list.
3109
3110 +---------------------------------------+
3111@@ -230,8 +230,8 @@
3112 will be converted into printable form. Unprintable characters are replaced
3113 with spaces.
3114
3115-For WiMAX networks the provide name like Clear or X-OHM will be used. This
3116-name either comes directly from the networks itself or from a provisioning
3117+For WiMAX networks the provider name like Clear or X-OHM will be used. This
3118+name either comes directly from the network itself or from a provisioning
3119 database of the WiMAX service.
3120
3121 For Bluetooth the device alias is used. The alias is different since it
3122@@ -382,7 +382,7 @@
3123
3124 service.Connect() or service.Disconnect()
3125
3126-It is possible to connect multiple service if the underlying technology
3127+It is possible to connect multiple services if the underlying technology
3128 allows it. For example it would be possible to connect to a WiFi network
3129 and a Bluetooth service at the same time. Trying to connect to a second WiFi
3130 network with the same WiFi hardware would result in an automatic disconnect
3131@@ -393,7 +393,7 @@
3132 such errors and will also be notified of changes via signals.
3133
3134 In future versions Connection Manager will interact with an agent to confirm
3135-certain transaction with the user. This functionality is currently not
3136+certain transactions with the user. This functionality is currently not
3137 implemented.
3138
3139 To monitor the current status of a service the state property can be used. It
3140@@ -403,6 +403,6 @@
3141
3142 print properties["State"]
3143
3144-All state changes are also send via the PropertyChanged signal on the
3145+All state changes are also sent via the PropertyChanged signal on the
3146 service interface. This allows asynchronous monitoring without having to poll
3147 Connection Manager for changes.
3148
3149=== modified file 'doc/plugin-api.txt'
3150--- doc/plugin-api.txt 2010-08-04 17:22:28 +0000
3151+++ doc/plugin-api.txt 2011-02-14 13:15:11 +0000
3152@@ -7,7 +7,7 @@
3153
3154 The Connection Manager supports plugins for various actions. The basic plugin
3155 contains of plugin description via CONNMAN_PLUGIN_DEFINE and also init/exit
3156-callbacks definied through that description.
3157+callbacks defined through that description.
3158
3159 #include <connman/plugin.h>
3160
3161
3162=== modified file 'doc/service-api.txt'
3163--- doc/service-api.txt 2010-11-30 15:44:36 +0000
3164+++ doc/service-api.txt 2011-02-14 13:15:11 +0000
3165@@ -132,7 +132,7 @@
3166 The service error status details.
3167
3168 When error occur during connection or disconnection
3169- the detailed information are represented in this
3170+ the detailed information is represented in this
3171 property to help the user interface to present the
3172 user with alternate options.
3173
3174@@ -174,15 +174,15 @@
3175 This property might be only present for WiFi and
3176 Cellular services.
3177
3178- string Security [readonly]
3179+ array{string} Security [readonly]
3180
3181 If the service type is WiFi, then this property is
3182- present and contains the security method or key
3183- management setting.
3184+ present and contains the list of security methods
3185+ or key management settings.
3186
3187- Possible values are "none", "wep", "psk" and
3188- also "ieee8021x". Alternate values for "psk"
3189- can also be "wpa" and "rsn".
3190+ Possible values are "none", "wep", "psk", "ieee8021x"
3191+ and also "wps". Alternate values for "psk" can also
3192+ be "wpa" and "rsn".
3193
3194 This property might be only present for WiFi
3195 services.
3196@@ -198,7 +198,7 @@
3197 If the service type is WiFi, then this property
3198 can be used to store a passphrase.
3199
3200- No PropertyChanged signals will be send for this
3201+ No PropertyChanged signals will be sent for this
3202 property. The PassphraseRequired property should
3203 be monitored instead.
3204
3205@@ -243,7 +243,9 @@
3206 boolean AutoConnect [readwrite]
3207
3208 If set to true, this service will auto-connect
3209- when not other connection is available.
3210+ when no other connection is available.
3211+
3212+ The service won't auto-connect while roaming.
3213
3214 For favorite services it is possible to change
3215 this value to prevent or permit automatic
3216@@ -266,16 +268,6 @@
3217 sometimes data plan specific. Possible examples
3218 are "isp.cingular" or "internet.t-mobile".
3219
3220- string MCC [readonly]
3221-
3222- If the service is Cellular, then this property
3223- contains the Mobile Country Code.
3224-
3225- string MNC [readonly]
3226-
3227- If the service is Cellular, then this property
3228- contains the Mobile Network Code.
3229-
3230 boolean Roaming [readonly]
3231
3232 This property indicates if this service is roaming.
3233@@ -364,15 +356,13 @@
3234
3235 string Method [readonly]
3236
3237- Possible values are "dhcp", "manual"
3238+ Possible values are "auto", "manual"
3239 and "off".
3240
3241 The value "fixed" indicates an IP address
3242 that can not be modified. For example
3243 cellular networks return fixed information.
3244
3245- "dhcp" is not supported currently.
3246-
3247 string Address [readonly]
3248
3249 The current configured IPv6 address.
3250
3251=== modified file 'doc/technology-api.txt'
3252--- doc/technology-api.txt 2010-11-30 15:44:36 +0000
3253+++ doc/technology-api.txt 2011-02-14 13:15:11 +0000
3254@@ -35,3 +35,26 @@
3255 This information should only be used to determine
3256 advanced properties or showing the correct icon
3257 to the user.
3258+
3259+ boolean Tethering [readwrite]
3260+
3261+ This option allows to enable or disable the support
3262+ for tethering. When tethering is enabled then the
3263+ default service is bridged to all clients connected
3264+ through the technology.
3265+
3266+ string TetheringIdentifier [readwrite]
3267+
3268+ The tethering broadcasted identifier.
3269+
3270+ This property is only valid for the WiFi technology,
3271+ and is then mapped to the WiFi AP SSID clients will
3272+ have to join in order to gain internet connectivity.
3273+
3274+ string TetheringPassphrase [readwrite]
3275+
3276+ The tethering connection passphrase.
3277+
3278+ This property is only valid for the WiFi technology,
3279+ and is then mapped to the WPA pre-shared key clients
3280+ will have to use in order to establish a connection.
3281
3282=== modified file 'gdbus/gdbus.h'
3283--- gdbus/gdbus.h 2010-11-30 15:44:36 +0000
3284+++ gdbus/gdbus.h 2011-02-14 13:15:11 +0000
3285@@ -2,7 +2,7 @@
3286 *
3287 * D-Bus helper library
3288 *
3289- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
3290+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
3291 *
3292 *
3293 * This program is free software; you can redistribute it and/or modify
3294
3295=== modified file 'gdbus/mainloop.c'
3296--- gdbus/mainloop.c 2010-11-30 15:44:36 +0000
3297+++ gdbus/mainloop.c 2011-02-14 13:15:11 +0000
3298@@ -2,7 +2,7 @@
3299 *
3300 * D-Bus helper library
3301 *
3302- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
3303+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
3304 *
3305 *
3306 * This program is free software; you can redistribute it and/or modify
3307
3308=== modified file 'gdbus/object.c'
3309--- gdbus/object.c 2010-11-30 15:44:36 +0000
3310+++ gdbus/object.c 2011-02-14 13:15:11 +0000
3311@@ -2,7 +2,7 @@
3312 *
3313 * D-Bus helper library
3314 *
3315- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
3316+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
3317 *
3318 *
3319 * This program is free software; you can redistribute it and/or modify
3320@@ -162,7 +162,7 @@
3321
3322 gstr = g_string_new(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE);
3323
3324- g_string_append_printf(gstr, "<node name=\"%s\">\n", path);
3325+ g_string_append_printf(gstr, "<node>\n");
3326
3327 for (list = data->interfaces; list; list = list->next) {
3328 struct interface_data *iface = list->data;
3329@@ -201,12 +201,12 @@
3330 return NULL;
3331 }
3332
3333- if (!data->introspect)
3334+ if (data->introspect == NULL)
3335 generate_introspection_xml(connection, data,
3336 dbus_message_get_path(message));
3337
3338 reply = dbus_message_new_method_return(message);
3339- if (!reply)
3340+ if (reply == NULL)
3341 return NULL;
3342
3343 dbus_message_append_args(reply, DBUS_TYPE_STRING, &data->introspect,
3344@@ -405,7 +405,7 @@
3345 {
3346 GSList *list;
3347
3348- if (!name)
3349+ if (name == NULL)
3350 return NULL;
3351
3352 for (list = interfaces; list; list = list->next) {
3353@@ -428,7 +428,7 @@
3354 interface = dbus_message_get_interface(message);
3355
3356 iface = find_interface(data->interfaces, interface);
3357- if (!iface)
3358+ if (iface == NULL)
3359 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
3360
3361 for (method = iface->methods; method &&
3362@@ -464,7 +464,7 @@
3363
3364 parent_path = g_strdup(child_path);
3365 slash = strrchr(parent_path, '/');
3366- if (!slash)
3367+ if (slash == NULL)
3368 goto done;
3369
3370 if (slash == parent_path && parent_path[1] != '\0')
3371@@ -475,13 +475,14 @@
3372 if (!strlen(parent_path))
3373 goto done;
3374
3375- if (!dbus_connection_get_object_path_data(conn, parent_path,
3376- (void *) &data)) {
3377- invalidate_parent_data(conn, parent_path);
3378+ if (dbus_connection_get_object_path_data(conn, parent_path,
3379+ (void *) &data) == FALSE) {
3380 goto done;
3381 }
3382
3383- if (!data)
3384+ invalidate_parent_data(conn, parent_path);
3385+
3386+ if (data == NULL)
3387 goto done;
3388
3389 g_free(data->introspect);
3390@@ -554,7 +555,7 @@
3391 struct interface_data *iface;
3392
3393 iface = find_interface(data->interfaces, name);
3394- if (!iface)
3395+ if (iface == NULL)
3396 return FALSE;
3397
3398 data->interfaces = g_slist_remove(data->interfaces, iface);
3399@@ -601,14 +602,14 @@
3400
3401 *args = NULL;
3402 if (!dbus_connection_get_object_path_data(conn, path,
3403- (void *) &data) || !data) {
3404+ (void *) &data) || data == NULL) {
3405 error("dbus_connection_emit_signal: path %s isn't registered",
3406 path);
3407 return FALSE;
3408 }
3409
3410 iface = find_interface(data->interfaces, interface);
3411- if (!iface) {
3412+ if (iface == NULL) {
3413 error("dbus_connection_emit_signal: %s does not implement %s",
3414 path, interface);
3415 return FALSE;
3416@@ -621,7 +622,7 @@
3417 }
3418 }
3419
3420- if (!*args) {
3421+ if (*args == NULL) {
3422 error("No signal named %s on interface %s", name, interface);
3423 return FALSE;
3424 }
3425@@ -644,7 +645,7 @@
3426 return FALSE;
3427
3428 signal = dbus_message_new_signal(path, interface, name);
3429- if (!signal) {
3430+ if (signal == NULL) {
3431 error("Unable to allocate new %s.%s signal", interface, name);
3432 return FALSE;
3433 }
3434@@ -702,7 +703,7 @@
3435 {
3436 struct generic_data *data = NULL;
3437
3438- if (!path)
3439+ if (path == NULL)
3440 return FALSE;
3441
3442 if (dbus_connection_get_object_path_data(connection, path,
3443
3444=== modified file 'gdbus/polkit.c'
3445--- gdbus/polkit.c 2010-11-30 15:44:36 +0000
3446+++ gdbus/polkit.c 2011-02-14 13:15:11 +0000
3447@@ -2,7 +2,7 @@
3448 *
3449 * D-Bus helper library
3450 *
3451- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
3452+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
3453 *
3454 *
3455 * This program is free software; you can redistribute it and/or modify
3456@@ -163,7 +163,7 @@
3457
3458 msg = dbus_message_new_method_call(AUTHORITY_DBUS, AUTHORITY_PATH,
3459 AUTHORITY_INTF, "CheckAuthorization");
3460- if (!msg) {
3461+ if (msg == NULL) {
3462 dbus_free(data);
3463 return -ENOMEM;
3464 }
3465
3466=== modified file 'gdbus/watch.c'
3467--- gdbus/watch.c 2010-11-30 15:44:36 +0000
3468+++ gdbus/watch.c 2011-02-14 13:15:11 +0000
3469@@ -2,7 +2,7 @@
3470 *
3471 * D-Bus helper library
3472 *
3473- * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org>
3474+ * Copyright (C) 2004-2011 Marcel Holtmann <marcel@holtmann.org>
3475 *
3476 *
3477 * This program is free software; you can redistribute it and/or modify
3478@@ -204,8 +204,7 @@
3479 struct filter_data *data;
3480 const char *name = NULL, *owner = NULL;
3481
3482- if (!filter_data_find(connection, NULL, NULL, NULL, NULL, NULL,
3483- NULL)) {
3484+ if (filter_data_find(connection, NULL, NULL, NULL, NULL, NULL, NULL) == NULL) {
3485 if (!dbus_connection_add_filter(connection,
3486 message_filter, NULL, NULL)) {
3487 error("dbus_connection_add_filter() failed");
3488@@ -382,7 +381,7 @@
3489 /* Remove filter if there are no listeners left for the connection */
3490 data = filter_data_find(connection, NULL, NULL, NULL, NULL, NULL,
3491 NULL);
3492- if (!data)
3493+ if (data == NULL)
3494 dbus_connection_remove_filter(connection, message_filter,
3495 NULL);
3496
3497@@ -478,18 +477,18 @@
3498 cb->conn_func(connection, cb->user_data);
3499 }
3500
3501+ /* Check if the watch was removed/freed by the callback
3502+ * function */
3503+ if (!g_slist_find(data->callbacks, cb))
3504+ continue;
3505+
3506 /* Only auto remove if it is a bus name watch */
3507 if (data->argument[0] == ':' &&
3508- (!cb->conn_func || !cb->disc_func)) {
3509+ (cb->conn_func == NULL || cb->disc_func == NULL)) {
3510 filter_data_remove_callback(data, cb);
3511 continue;
3512 }
3513
3514- /* Check if the watch was removed/freed by the callback
3515- * function */
3516- if (!g_slist_find(data->callbacks, cb))
3517- continue;
3518-
3519 data->callbacks = g_slist_remove(data->callbacks, cb);
3520 data->processed = g_slist_append(data->processed, cb);
3521 }
3522@@ -517,7 +516,7 @@
3523 /* Sender is always bus name */
3524 data = filter_data_find(connection, NULL, sender, path, iface, member,
3525 arg);
3526- if (!data) {
3527+ if (data == NULL) {
3528 error("Got %s.%s signal which has no listeners", iface, member);
3529 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
3530 }
3531@@ -543,7 +542,7 @@
3532 /* Remove filter if there no listener left for the connection */
3533 data = filter_data_find(connection, NULL, NULL, NULL, NULL, NULL,
3534 NULL);
3535- if (!data)
3536+ if (data == NULL)
3537 dbus_connection_remove_filter(connection, message_filter,
3538 NULL);
3539
3540@@ -658,18 +657,18 @@
3541 struct filter_data *data;
3542 struct filter_callback *cb;
3543
3544- if (!name)
3545+ if (name == NULL)
3546 return 0;
3547
3548 data = filter_data_get(connection, service_filter, NULL, NULL,
3549 DBUS_INTERFACE_DBUS, "NameOwnerChanged",
3550 name);
3551- if (!data)
3552+ if (data == NULL)
3553 return 0;
3554
3555 cb = filter_data_add_callback(data, connect, disconnect, NULL, NULL,
3556 user_data);
3557- if (!cb)
3558+ if (cb == NULL)
3559 return 0;
3560
3561 if (connect)
3562@@ -697,12 +696,12 @@
3563
3564 data = filter_data_get(connection, signal_filter, sender, path,
3565 interface, member, NULL);
3566- if (!data)
3567+ if (data == NULL)
3568 return 0;
3569
3570 cb = filter_data_add_callback(data, NULL, NULL, function, destroy,
3571 user_data);
3572- if (!cb)
3573+ if (cb == NULL)
3574 return 0;
3575
3576 if (data->name != NULL && data->name_watch == 0)
3577
3578=== modified file 'gdhcp/client.c'
3579--- gdhcp/client.c 2010-11-30 15:44:36 +0000
3580+++ gdhcp/client.c 2011-02-14 13:15:11 +0000
3581@@ -23,6 +23,7 @@
3582 #include <config.h>
3583 #endif
3584
3585+#define _GNU_SOURCE
3586 #include <stdio.h>
3587 #include <errno.h>
3588 #include <unistd.h>
3589@@ -32,6 +33,7 @@
3590 #include <arpa/inet.h>
3591
3592 #include <netpacket/packet.h>
3593+#include <netinet/if_ether.h>
3594 #include <net/ethernet.h>
3595
3596 #include <linux/if.h>
3597@@ -41,6 +43,7 @@
3598
3599 #include "gdhcp.h"
3600 #include "common.h"
3601+#include "ipv4ll.h"
3602
3603 #define DISCOVER_TIMEOUT 3
3604 #define DISCOVER_RETRIES 10
3605@@ -52,6 +55,7 @@
3606 L_NONE,
3607 L2,
3608 L3,
3609+ L_ARP,
3610 } ListenMode;
3611
3612 typedef enum _dhcp_client_state {
3613@@ -61,6 +65,10 @@
3614 RENEWING,
3615 REBINDING,
3616 RELEASED,
3617+ IPV4LL_PROBE,
3618+ IPV4LL_ANNOUNCE,
3619+ IPV4LL_MONITOR,
3620+ IPV4LL_DEFEND,
3621 } ClientState;
3622
3623 struct _GDHCPClient {
3624@@ -79,6 +87,7 @@
3625 int listener_sockfd;
3626 uint8_t retry_times;
3627 uint8_t ack_retry_times;
3628+ uint8_t conflicts;
3629 guint timeout;
3630 guint listener_watch;
3631 GIOChannel *listener_channel;
3632@@ -88,10 +97,14 @@
3633 GHashTable *send_value_hash;
3634 GDHCPClientEventFunc lease_available_cb;
3635 gpointer lease_available_data;
3636+ GDHCPClientEventFunc ipv4ll_available_cb;
3637+ gpointer ipv4ll_available_data;
3638 GDHCPClientEventFunc no_lease_cb;
3639 gpointer no_lease_data;
3640 GDHCPClientEventFunc lease_lost_cb;
3641 gpointer lease_lost_data;
3642+ GDHCPClientEventFunc ipv4ll_lost_cb;
3643+ gpointer ipv4ll_lost_data;
3644 GDHCPClientEventFunc address_conflict_cb;
3645 gpointer address_conflict_data;
3646 GDHCPDebugFunc debug_func;
3647@@ -267,7 +280,83 @@
3648 server, SERVER_PORT);
3649 }
3650
3651-
3652+static gboolean ipv4ll_probe_timeout(gpointer dhcp_data);
3653+static int switch_listening_mode(GDHCPClient *dhcp_client,
3654+ ListenMode listen_mode);
3655+
3656+static gboolean send_probe_packet(gpointer dhcp_data)
3657+{
3658+ GDHCPClient *dhcp_client;
3659+ guint timeout;
3660+
3661+ dhcp_client = dhcp_data;
3662+ /* if requested_ip is not valid, pick a new address*/
3663+ if (dhcp_client->requested_ip == 0) {
3664+ debug(dhcp_client, "pick a new random address");
3665+ dhcp_client->requested_ip = ipv4ll_random_ip(0);
3666+ }
3667+
3668+ debug(dhcp_client, "sending IPV4LL probe request");
3669+
3670+ if (dhcp_client->retry_times == 1) {
3671+ dhcp_client->state = IPV4LL_PROBE;
3672+ switch_listening_mode(dhcp_client, L_ARP);
3673+ }
3674+ ipv4ll_send_arp_packet(dhcp_client->mac_address, 0,
3675+ dhcp_client->requested_ip, dhcp_client->ifindex);
3676+
3677+ if (dhcp_client->retry_times < PROBE_NUM) {
3678+ /*add a random timeout in range of PROBE_MIN to PROBE_MAX*/
3679+ timeout = ipv4ll_random_delay_ms(PROBE_MAX-PROBE_MIN);
3680+ timeout += PROBE_MIN*1000;
3681+ } else
3682+ timeout = (ANNOUNCE_WAIT * 1000);
3683+
3684+ dhcp_client->timeout = g_timeout_add_full(G_PRIORITY_HIGH,
3685+ timeout,
3686+ ipv4ll_probe_timeout,
3687+ dhcp_client,
3688+ NULL);
3689+ return FALSE;
3690+}
3691+
3692+static gboolean ipv4ll_announce_timeout(gpointer dhcp_data);
3693+static gboolean ipv4ll_defend_timeout(gpointer dhcp_data);
3694+
3695+static gboolean send_announce_packet(gpointer dhcp_data)
3696+{
3697+ GDHCPClient *dhcp_client;
3698+
3699+ dhcp_client = dhcp_data;
3700+
3701+ debug(dhcp_client, "sending IPV4LL announce request");
3702+
3703+ ipv4ll_send_arp_packet(dhcp_client->mac_address,
3704+ dhcp_client->requested_ip,
3705+ dhcp_client->requested_ip,
3706+ dhcp_client->ifindex);
3707+
3708+ if (dhcp_client->timeout > 0)
3709+ g_source_remove(dhcp_client->timeout);
3710+ dhcp_client->timeout = 0;
3711+
3712+ if (dhcp_client->state == IPV4LL_DEFEND) {
3713+ dhcp_client->timeout =
3714+ g_timeout_add_seconds_full(G_PRIORITY_HIGH,
3715+ DEFEND_INTERVAL,
3716+ ipv4ll_defend_timeout,
3717+ dhcp_client,
3718+ NULL);
3719+ return TRUE;
3720+ } else
3721+ dhcp_client->timeout =
3722+ g_timeout_add_seconds_full(G_PRIORITY_HIGH,
3723+ ANNOUNCE_INTERVAL,
3724+ ipv4ll_announce_timeout,
3725+ dhcp_client,
3726+ NULL);
3727+ return TRUE;
3728+}
3729
3730 static void get_interface_mac_address(int index, uint8_t *mac_address)
3731 {
3732@@ -350,8 +439,10 @@
3733 dhcp_client->type = type;
3734 dhcp_client->ifindex = ifindex;
3735 dhcp_client->lease_available_cb = NULL;
3736+ dhcp_client->ipv4ll_available_cb = NULL;
3737 dhcp_client->no_lease_cb = NULL;
3738 dhcp_client->lease_lost_cb = NULL;
3739+ dhcp_client->ipv4ll_lost_cb = NULL;
3740 dhcp_client->address_conflict_cb = NULL;
3741 dhcp_client->listener_watch = 0;
3742 dhcp_client->retry_times = 0;
3743@@ -435,6 +526,7 @@
3744 setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
3745 sizeof(filter_prog));
3746
3747+ memset(&sock, 0, sizeof(sock));
3748 sock.sll_family = AF_PACKET;
3749 sock.sll_protocol = htons(ETH_P_IP);
3750 sock.sll_ifindex = ifindex;
3751@@ -515,6 +607,131 @@
3752 return bytes - (sizeof(packet.ip) + sizeof(packet.udp));
3753 }
3754
3755+static void ipv4ll_start(GDHCPClient *dhcp_client)
3756+{
3757+ guint timeout;
3758+ int seed;
3759+
3760+ if (dhcp_client->timeout > 0) {
3761+ g_source_remove(dhcp_client->timeout);
3762+ dhcp_client->timeout = 0;
3763+ }
3764+
3765+ switch_listening_mode(dhcp_client, L_NONE);
3766+ dhcp_client->type = G_DHCP_IPV4LL;
3767+ dhcp_client->retry_times = 0;
3768+ dhcp_client->requested_ip = 0;
3769+
3770+ /*try to start with a based mac address ip*/
3771+ seed = (dhcp_client->mac_address[4] << 8 | dhcp_client->mac_address[4]);
3772+ dhcp_client->requested_ip = ipv4ll_random_ip(seed);
3773+
3774+ /*first wait a random delay to avoid storm of arp request on boot*/
3775+ timeout = ipv4ll_random_delay_ms(PROBE_WAIT);
3776+
3777+ dhcp_client->retry_times++;
3778+ dhcp_client->timeout = g_timeout_add_full(G_PRIORITY_HIGH,
3779+ timeout,
3780+ send_probe_packet,
3781+ dhcp_client,
3782+ NULL);
3783+}
3784+
3785+static void ipv4ll_stop(GDHCPClient *dhcp_client)
3786+{
3787+
3788+ switch_listening_mode(dhcp_client, L_NONE);
3789+
3790+ if (dhcp_client->timeout > 0)
3791+ g_source_remove(dhcp_client->timeout);
3792+
3793+ if (dhcp_client->listener_watch > 0) {
3794+ g_source_remove(dhcp_client->listener_watch);
3795+ dhcp_client->listener_watch = 0;
3796+ }
3797+
3798+ dhcp_client->state = IPV4LL_PROBE;
3799+ dhcp_client->retry_times = 0;
3800+ dhcp_client->requested_ip = 0;
3801+
3802+ g_free(dhcp_client->assigned_ip);
3803+ dhcp_client->assigned_ip = NULL;
3804+}
3805+
3806+static int ipv4ll_recv_arp_packet(GDHCPClient *dhcp_client)
3807+{
3808+ int bytes;
3809+ struct ether_arp arp;
3810+ uint32_t ip_requested;
3811+ int source_conflict;
3812+ int target_conflict;
3813+
3814+ memset(&arp, 0, sizeof(arp));
3815+ bytes = 0;
3816+ bytes = read(dhcp_client->listener_sockfd, &arp, sizeof(arp));
3817+ if (bytes < 0)
3818+ return bytes;
3819+
3820+ if (arp.arp_op != htons(ARPOP_REPLY) &&
3821+ arp.arp_op != htons(ARPOP_REQUEST))
3822+ return -EINVAL;
3823+
3824+ ip_requested = ntohl(dhcp_client->requested_ip);
3825+ source_conflict = !memcmp(arp.arp_spa, &ip_requested,
3826+ sizeof(ip_requested));
3827+
3828+ target_conflict = !memcmp(arp.arp_tpa, &ip_requested,
3829+ sizeof(ip_requested));
3830+
3831+ if (!source_conflict && !target_conflict)
3832+ return 0;
3833+
3834+ dhcp_client->conflicts++;
3835+
3836+ debug(dhcp_client, "IPV4LL conflict detected");
3837+
3838+ if (dhcp_client->state == IPV4LL_MONITOR) {
3839+ if (!source_conflict)
3840+ return 0;
3841+ dhcp_client->state = IPV4LL_DEFEND;
3842+ debug(dhcp_client, "DEFEND mode conflicts : %d",
3843+ dhcp_client->conflicts);
3844+ /*Try to defend with a single announce*/
3845+ send_announce_packet(dhcp_client);
3846+ return 0;
3847+ }
3848+
3849+ if (dhcp_client->state == IPV4LL_DEFEND) {
3850+ if (!source_conflict)
3851+ return 0;
3852+ else if (dhcp_client->ipv4ll_lost_cb != NULL)
3853+ dhcp_client->ipv4ll_lost_cb(dhcp_client,
3854+ dhcp_client->ipv4ll_lost_data);
3855+ }
3856+
3857+ ipv4ll_stop(dhcp_client);
3858+
3859+ if (dhcp_client->conflicts < MAX_CONFLICTS) {
3860+ /*restart whole state machine*/
3861+ dhcp_client->retry_times++;
3862+ dhcp_client->timeout =
3863+ g_timeout_add_full(G_PRIORITY_HIGH,
3864+ ipv4ll_random_delay_ms(PROBE_WAIT),
3865+ send_probe_packet,
3866+ dhcp_client,
3867+ NULL);
3868+ }
3869+ /* Here we got a lot of conflicts, RFC3927 states that we have
3870+ * to wait RATE_LIMIT_INTERVAL before retrying,
3871+ * but we just report failure.
3872+ */
3873+ else if (dhcp_client->no_lease_cb != NULL)
3874+ dhcp_client->no_lease_cb(dhcp_client,
3875+ dhcp_client->no_lease_data);
3876+
3877+ return 0;
3878+}
3879+
3880 static gboolean check_package_owner(GDHCPClient *dhcp_client,
3881 struct dhcp_packet *packet)
3882 {
3883@@ -577,6 +794,8 @@
3884 else if (listen_mode == L3)
3885 listener_sockfd = dhcp_l3_socket(CLIENT_PORT,
3886 dhcp_client->interface);
3887+ else if (listen_mode == L_ARP)
3888+ listener_sockfd = ipv4ll_arp_socket(dhcp_client->ifindex);
3889 else
3890 return -EIO;
3891
3892@@ -596,8 +815,8 @@
3893
3894 g_io_channel_set_close_on_unref(listener_channel, TRUE);
3895 dhcp_client->listener_watch =
3896- g_io_add_watch_full(listener_channel,
3897- G_PRIORITY_HIGH, G_IO_IN,
3898+ g_io_add_watch_full(listener_channel, G_PRIORITY_HIGH,
3899+ G_IO_IN | G_IO_NVAL | G_IO_ERR | G_IO_HUP,
3900 listener_event, dhcp_client,
3901 NULL);
3902 g_io_channel_unref(dhcp_client->listener_channel);
3903@@ -612,10 +831,7 @@
3904
3905 if (dhcp_client->retry_times == REQUEST_RETRIES) {
3906 dhcp_client->state = INIT_SELECTING;
3907-
3908- if (dhcp_client->no_lease_cb != NULL)
3909- dhcp_client->no_lease_cb(dhcp_client,
3910- dhcp_client->no_lease_data);
3911+ ipv4ll_start(dhcp_client);
3912
3913 return;
3914 }
3915@@ -926,6 +1142,10 @@
3916 re = dhcp_recv_l2_packet(&packet, dhcp_client->listener_sockfd);
3917 else if (dhcp_client->listen_mode == L3)
3918 re = dhcp_recv_l3_packet(&packet, dhcp_client->listener_sockfd);
3919+ else if (dhcp_client->listen_mode == L_ARP) {
3920+ re = ipv4ll_recv_arp_packet(dhcp_client);
3921+ return TRUE;
3922+ }
3923 else
3924 re = -EIO;
3925
3926@@ -937,7 +1157,7 @@
3927
3928 message_type = dhcp_get_option(&packet, DHCP_MESSAGE_TYPE);
3929 if (message_type == NULL)
3930- /* No message type option, ignore pakcage */
3931+ /* No message type option, ignore package */
3932 return TRUE;
3933
3934 debug(dhcp_client, "received DHCP packet (current state %d)",
3935@@ -1022,15 +1242,73 @@
3936 return FALSE;
3937 }
3938
3939+static gboolean ipv4ll_defend_timeout(gpointer dhcp_data)
3940+{
3941+ GDHCPClient *dhcp_client = dhcp_data;
3942+
3943+ debug(dhcp_client, "back to MONITOR mode");
3944+
3945+ dhcp_client->conflicts = 0;
3946+ dhcp_client->state = IPV4LL_MONITOR;
3947+
3948+ return FALSE;
3949+}
3950+
3951+static gboolean ipv4ll_announce_timeout(gpointer dhcp_data)
3952+{
3953+ GDHCPClient *dhcp_client = dhcp_data;
3954+ uint32_t ip;
3955+
3956+ debug(dhcp_client, "request timeout (retries %d)",
3957+ dhcp_client->retry_times);
3958+
3959+ if (dhcp_client->retry_times != ANNOUNCE_NUM){
3960+ dhcp_client->retry_times++;
3961+ send_announce_packet(dhcp_client);
3962+ return FALSE;
3963+ }
3964+
3965+ ip = htonl(dhcp_client->requested_ip);
3966+ debug(dhcp_client, "switching to monitor mode");
3967+ dhcp_client->state = IPV4LL_MONITOR;
3968+ dhcp_client->assigned_ip = get_ip(ip);
3969+
3970+ if (dhcp_client->ipv4ll_available_cb != NULL)
3971+ dhcp_client->ipv4ll_available_cb(dhcp_client,
3972+ dhcp_client->ipv4ll_available_data);
3973+ dhcp_client->conflicts = 0;
3974+
3975+ return FALSE;
3976+}
3977+
3978+static gboolean ipv4ll_probe_timeout(gpointer dhcp_data)
3979+{
3980+
3981+ GDHCPClient *dhcp_client = dhcp_data;
3982+
3983+ debug(dhcp_client, "IPV4LL probe timeout (retries %d)",
3984+ dhcp_client->retry_times);
3985+
3986+ if (dhcp_client->retry_times == PROBE_NUM) {
3987+ dhcp_client->state = IPV4LL_ANNOUNCE;
3988+ dhcp_client->retry_times = 0;
3989+
3990+ dhcp_client->retry_times++;
3991+ send_announce_packet(dhcp_client);
3992+ return FALSE;
3993+ }
3994+ dhcp_client->retry_times++;
3995+ send_probe_packet(dhcp_client);
3996+
3997+ return FALSE;
3998+}
3999+
4000 int g_dhcp_client_start(GDHCPClient *dhcp_client)
4001 {
4002 int re;
4003
4004 if (dhcp_client->retry_times == DISCOVER_RETRIES) {
4005- if (dhcp_client->no_lease_cb != NULL)
4006- dhcp_client->no_lease_cb(dhcp_client,
4007- dhcp_client->no_lease_data);
4008-
4009+ ipv4ll_start(dhcp_client);
4010 return 0;
4011 }
4012
4013@@ -1103,6 +1381,10 @@
4014 dhcp_client->lease_available_cb = func;
4015 dhcp_client->lease_available_data = data;
4016 return;
4017+ case G_DHCP_CLIENT_EVENT_IPV4LL_AVAILABLE:
4018+ dhcp_client->ipv4ll_available_cb = func;
4019+ dhcp_client->ipv4ll_available_data = data;
4020+ return;
4021 case G_DHCP_CLIENT_EVENT_NO_LEASE:
4022 dhcp_client->no_lease_cb = func;
4023 dhcp_client->no_lease_data = data;
4024@@ -1111,6 +1393,10 @@
4025 dhcp_client->lease_lost_cb = func;
4026 dhcp_client->lease_lost_data = data;
4027 return;
4028+ case G_DHCP_CLIENT_EVENT_IPV4LL_LOST:
4029+ dhcp_client->ipv4ll_lost_cb = func;
4030+ dhcp_client->ipv4ll_lost_data = data;
4031+ return;
4032 case G_DHCP_CLIENT_EVENT_ADDRESS_CONFLICT:
4033 dhcp_client->address_conflict_cb = func;
4034 dhcp_client->address_conflict_data = data;
4035@@ -1128,6 +1414,30 @@
4036 return g_strdup(dhcp_client->assigned_ip);
4037 }
4038
4039+char *g_dhcp_client_get_netmask(GDHCPClient *dhcp_client)
4040+{
4041+ GList *option = NULL;
4042+
4043+ switch (dhcp_client->state) {
4044+ case IPV4LL_DEFEND:
4045+ case IPV4LL_MONITOR:
4046+ return g_strdup("255.255.0.0");
4047+ case BOUND:
4048+ case RENEWING:
4049+ case REBINDING:
4050+ option = g_dhcp_client_get_option(dhcp_client, G_DHCP_SUBNET);
4051+ if (option != NULL)
4052+ return g_strdup(option->data);
4053+ case INIT_SELECTING:
4054+ case REQUESTING:
4055+ case RELEASED:
4056+ case IPV4LL_PROBE:
4057+ case IPV4LL_ANNOUNCE:
4058+ break;
4059+ }
4060+ return NULL;
4061+}
4062+
4063 GDHCPClientError g_dhcp_client_set_request(GDHCPClient *dhcp_client,
4064 unsigned char option_code)
4065 {
4066
4067=== modified file 'gdhcp/common.c'
4068--- gdhcp/common.c 2010-11-30 15:44:36 +0000
4069+++ gdhcp/common.c 2011-02-14 13:15:11 +0000
4070@@ -52,6 +52,7 @@
4071 { OPTION_U16, 0x39 }, /* max-size */
4072 { OPTION_STRING, 0x3c }, /* vendor */
4073 { OPTION_STRING, 0x3d }, /* client-id */
4074+ { OPTION_STRING, 0xfc }, /* UNOFFICIAL proxy-pac */
4075 { OPTION_UNKNOWN, 0x00 },
4076 };
4077
4078
4079=== modified file 'gdhcp/gdhcp.h'
4080--- gdhcp/gdhcp.h 2010-11-30 15:44:36 +0000
4081+++ gdhcp/gdhcp.h 2011-02-14 13:15:11 +0000
4082@@ -45,14 +45,17 @@
4083
4084 typedef enum {
4085 G_DHCP_CLIENT_EVENT_LEASE_AVAILABLE,
4086+ G_DHCP_CLIENT_EVENT_IPV4LL_AVAILABLE,
4087 G_DHCP_CLIENT_EVENT_NO_LEASE,
4088 G_DHCP_CLIENT_EVENT_LEASE_LOST,
4089+ G_DHCP_CLIENT_EVENT_IPV4LL_LOST,
4090 G_DHCP_CLIENT_EVENT_ADDRESS_CONFLICT,
4091 } GDHCPClientEvent;
4092
4093 typedef enum {
4094 G_DHCP_IPV4,
4095 G_DHCP_IPV6,
4096+ G_DHCP_IPV4LL,
4097 } GDHCPType;
4098
4099 #define G_DHCP_SUBNET 0x01
4100@@ -88,6 +91,7 @@
4101 const char *option_value);
4102
4103 char *g_dhcp_client_get_address(GDHCPClient *client);
4104+char *g_dhcp_client_get_netmask(GDHCPClient *client);
4105 GList *g_dhcp_client_get_option(GDHCPClient *client,
4106 unsigned char option_code);
4107 int g_dhcp_client_get_index(GDHCPClient *client);
4108
4109=== added file 'gdhcp/ipv4ll.c'
4110--- gdhcp/ipv4ll.c 1970-01-01 00:00:00 +0000
4111+++ gdhcp/ipv4ll.c 2011-02-14 13:15:11 +0000
4112@@ -0,0 +1,139 @@
4113+/*
4114+ *
4115+ * IPV4 Local Link library with GLib integration
4116+ *
4117+ * Copyright (C) 2009-2010 Aldebaran Robotics. All rights reserved.
4118+ *
4119+ * This program is free software; you can redistribute it and/or modify
4120+ * it under the terms of the GNU General Public License version 2 as
4121+ * published by the Free Software Foundation.
4122+ *
4123+ * This program is distributed in the hope that it will be useful,
4124+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4125+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4126+ * GNU General Public License for more details.
4127+ *
4128+ * You should have received a copy of the GNU General Public License
4129+ * along with this program; if not, write to the Free Software
4130+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4131+ *
4132+ */
4133+#include <string.h>
4134+#include <stdlib.h>
4135+#include <errno.h>
4136+#include <unistd.h>
4137+
4138+#include <sys/time.h>
4139+#include <sys/socket.h>
4140+#include <sys/types.h>
4141+#include <netpacket/packet.h>
4142+#include <net/ethernet.h>
4143+#include <netinet/if_ether.h>
4144+
4145+#include <arpa/inet.h>
4146+
4147+#include <glib.h>
4148+#include "ipv4ll.h"
4149+
4150+/**
4151+ * Return a random link local IP
4152+ */
4153+uint32_t ipv4ll_random_ip(int seed)
4154+{
4155+ unsigned tmp;
4156+
4157+ if (seed)
4158+ srand(seed);
4159+ else {
4160+ struct timeval tv;
4161+ gettimeofday(&tv, NULL);
4162+ srand(tv.tv_usec);
4163+ }
4164+ do {
4165+ tmp = rand();
4166+ tmp = tmp & IN_CLASSB_HOST;
4167+ } while (tmp > (IN_CLASSB_HOST - 0x0200));
4168+ return ((LINKLOCAL_ADDR + 0x0100) + tmp);
4169+}
4170+
4171+/**
4172+ * Return a random delay in range of zero to secs*1000
4173+ */
4174+guint ipv4ll_random_delay_ms(guint secs)
4175+{
4176+ struct timeval tv;
4177+ guint tmp;
4178+
4179+ gettimeofday(&tv, NULL);
4180+ srand(tv.tv_usec);
4181+ tmp = rand();
4182+ return tmp % (secs * 1000);
4183+}
4184+
4185+int ipv4ll_send_arp_packet(uint8_t* source_eth, uint32_t source_ip,
4186+ uint32_t target_ip, int ifindex)
4187+{
4188+ struct sockaddr_ll dest;
4189+ struct ether_arp p;
4190+ uint32_t ip_source;
4191+ uint32_t ip_target;
4192+ int fd, n;
4193+
4194+ fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ARP));
4195+ if (fd < 0)
4196+ return -errno;
4197+
4198+ memset(&dest, 0, sizeof(dest));
4199+ memset(&p, 0, sizeof(p));
4200+
4201+ dest.sll_family = AF_PACKET;
4202+ dest.sll_protocol = htons(ETH_P_ARP);
4203+ dest.sll_ifindex = ifindex;
4204+ dest.sll_halen = ETH_ALEN;
4205+ memset(dest.sll_addr, 0xFF, ETH_ALEN);
4206+ if (bind(fd, (struct sockaddr *)&dest, sizeof(dest)) < 0) {
4207+ close(fd);
4208+ return -errno;
4209+ }
4210+
4211+ ip_source = htonl(source_ip);
4212+ ip_target = htonl(target_ip);
4213+ p.arp_hrd = htons(ARPHRD_ETHER);
4214+ p.arp_pro = htons(ETHERTYPE_IP);
4215+ p.arp_hln = ETH_ALEN;
4216+ p.arp_pln = 4;
4217+ p.arp_op = htons(ARPOP_REQUEST);
4218+
4219+ memcpy(&p.arp_sha, source_eth, ETH_ALEN);
4220+ memcpy(&p.arp_spa, &ip_source, sizeof(p.arp_spa));
4221+ memcpy(&p.arp_tpa, &ip_target, sizeof(p.arp_tpa));
4222+
4223+ n = sendto(fd, &p, sizeof(p), 0,
4224+ (struct sockaddr*) &dest, sizeof(dest));
4225+ if (n < 0)
4226+ return -errno;
4227+
4228+ close(fd);
4229+
4230+ return n;
4231+}
4232+
4233+int ipv4ll_arp_socket(int ifindex)
4234+{
4235+ int fd;
4236+ struct sockaddr_ll sock;
4237+ fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ARP));
4238+ if (fd < 0)
4239+ return fd;
4240+
4241+ sock.sll_family = AF_PACKET;
4242+ sock.sll_protocol = htons(ETH_P_ARP);
4243+ sock.sll_ifindex = ifindex;
4244+
4245+ if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) != 0) {
4246+ close(fd);
4247+ return -errno;
4248+ }
4249+
4250+ return fd;
4251+}
4252
4253=== added file 'gdhcp/ipv4ll.h'
4254--- gdhcp/ipv4ll.h 1970-01-01 00:00:00 +0000
4255+++ gdhcp/ipv4ll.h 2011-02-14 13:15:11 +0000
4256@@ -0,0 +1,55 @@
4257+/*
4258+ *
4259+ * IPV4 Local Link library with GLib integration
4260+ *
4261+ * Copyright (C) 2009-2010 Aldebaran Robotics. All rights reserved.
4262+ *
4263+ * This program is free software; you can redistribute it and/or modify
4264+ * it under the terms of the GNU General Public License version 2 as
4265+ * published by the Free Software Foundation.
4266+ *
4267+ * This program is distributed in the hope that it will be useful,
4268+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4269+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4270+ * GNU General Public License for more details.
4271+ *
4272+ * You should have received a copy of the GNU General Public License
4273+ * along with this program; if not, write to the Free Software
4274+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
4275+ *
4276+ */
4277+
4278+#ifndef __G_IPV4LL_H
4279+#define __G_IPV4LL_H
4280+
4281+#include <glib.h>
4282+
4283+#ifdef __cplusplus
4284+extern "C" {
4285+#endif
4286+
4287+/* 169.254.0.0 */
4288+#define LINKLOCAL_ADDR 0xa9fe0000
4289+
4290+/* See RFC 3927 */
4291+#define PROBE_WAIT 1
4292+#define PROBE_NUM 3
4293+#define PROBE_MIN 1
4294+#define PROBE_MAX 2
4295+#define ANNOUNCE_WAIT 2
4296+#define ANNOUNCE_NUM 2
4297+#define ANNOUNCE_INTERVAL 2
4298+#define MAX_CONFLICTS 10
4299+#define RATE_LIMIT_INTERVAL 60
4300+#define DEFEND_INTERVAL 10
4301+
4302+uint32_t ipv4ll_random_ip(int seed);
4303+guint ipv4ll_random_delay_ms(guint secs);
4304+int ipv4ll_send_arp_packet(uint8_t* source_eth, uint32_t source_ip,
4305+ uint32_t target_ip, int ifindex);
4306+int ipv4ll_arp_socket(int ifindex);
4307+
4308+#ifdef __cplusplus
4309+}
4310+#endif
4311+#endif /* !IPV4LL_H_ */
4312
4313=== modified file 'gdhcp/server.c'
4314--- gdhcp/server.c 2010-11-30 15:44:36 +0000
4315+++ gdhcp/server.c 2011-02-14 13:15:11 +0000
4316@@ -769,8 +769,8 @@
4317
4318 g_io_channel_set_close_on_unref(listener_channel, TRUE);
4319 dhcp_server->listener_watch =
4320- g_io_add_watch_full(listener_channel,
4321- G_PRIORITY_HIGH, G_IO_IN,
4322+ g_io_add_watch_full(listener_channel, G_PRIORITY_HIGH,
4323+ G_IO_IN | G_IO_NVAL | G_IO_ERR | G_IO_HUP,
4324 listener_event, dhcp_server,
4325 NULL);
4326 g_io_channel_unref(dhcp_server->listener_channel);
4327
4328=== modified file 'gsupplicant/dbus.c'
4329--- gsupplicant/dbus.c 2010-11-30 15:44:36 +0000
4330+++ gsupplicant/dbus.c 2011-02-14 13:15:11 +0000
4331@@ -285,13 +285,11 @@
4332 else
4333 error = NULL;
4334
4335- if (dbus_message_iter_init(reply, &iter) == FALSE)
4336- goto done;
4337+ dbus_message_iter_init(reply, &iter);
4338
4339 if (data->function != NULL)
4340 data->function(error, &iter, data->user_data);
4341
4342-done:
4343 dbus_message_unref(reply);
4344
4345 dbus_pending_call_unref(call);
4346
4347=== modified file 'gsupplicant/gsupplicant.h'
4348--- gsupplicant/gsupplicant.h 2010-11-30 15:44:36 +0000
4349+++ gsupplicant/gsupplicant.h 2011-02-14 13:15:11 +0000
4350@@ -61,6 +61,9 @@
4351 #define G_SUPPLICANT_KEYMGMT_WPA_EAP_256 (1 << 8)
4352 #define G_SUPPLICANT_KEYMGMT_WPS (1 << 9)
4353
4354+#define G_SUPPLICANT_PROTO_WPA (1 << 0)
4355+#define G_SUPPLICANT_PROTO_RSN (1 << 1)
4356+
4357 #define G_SUPPLICANT_GROUP_WEP40 (1 << 0)
4358 #define G_SUPPLICANT_GROUP_WEP104 (1 << 1)
4359 #define G_SUPPLICANT_GROUP_TKIP (1 << 2)
4360@@ -74,6 +77,7 @@
4361 G_SUPPLICANT_MODE_UNKNOWN,
4362 G_SUPPLICANT_MODE_INFRA,
4363 G_SUPPLICANT_MODE_IBSS,
4364+ G_SUPPLICANT_MODE_MASTER,
4365 } GSupplicantMode;
4366
4367 typedef enum {
4368@@ -97,11 +101,22 @@
4369 G_SUPPLICANT_STATE_COMPLETED,
4370 } GSupplicantState;
4371
4372+typedef enum {
4373+ G_SUPPLICANT_WPS_STATE_UNKNOWN,
4374+ G_SUPPLICANT_WPS_STATE_SUCCESS,
4375+ G_SUPPLICANT_WPS_STATE_FAIL,
4376+} GSupplicantWpsState;
4377+
4378 struct _GSupplicantSSID {
4379 const void *ssid;
4380 unsigned int ssid_len;
4381+ unsigned int scan_ssid;
4382 GSupplicantMode mode;
4383 GSupplicantSecurity security;
4384+ unsigned int protocol;
4385+ unsigned int pairwise_cipher;
4386+ unsigned int group_cipher;
4387+ unsigned int freq;
4388 const char *eap;
4389 const char *passphrase;
4390 const char *identity;
4391@@ -110,10 +125,19 @@
4392 const char *private_key_path;
4393 const char *private_key_passphrase;
4394 const char *phase2_auth;
4395+ dbus_bool_t use_wps;
4396+ const char *pin_wps;
4397 };
4398
4399 typedef struct _GSupplicantSSID GSupplicantSSID;
4400
4401+/* global API */
4402+typedef void (*GSupplicantCountryCallback) (void *user_data);
4403+
4404+int g_supplicant_set_country(const char *alpha2,
4405+ GSupplicantCountryCallback callback,
4406+ const void *user_data);
4407+
4408 /* Interface API */
4409 struct _GSupplicantInterface;
4410
4411@@ -124,6 +148,7 @@
4412 void *user_data);
4413
4414 int g_supplicant_interface_create(const char *ifname, const char *driver,
4415+ const char *bridge,
4416 GSupplicantInterfaceCallback callback,
4417 void *user_data);
4418 int g_supplicant_interface_remove(GSupplicantInterface *interface,
4419@@ -142,12 +167,20 @@
4420 GSupplicantInterfaceCallback callback,
4421 void *user_data);
4422
4423+int g_supplicant_interface_set_apscan(GSupplicantInterface *interface,
4424+ unsigned int ap_scan);
4425+
4426 void g_supplicant_interface_set_data(GSupplicantInterface *interface,
4427 void *data);
4428 void *g_supplicant_interface_get_data(GSupplicantInterface *interface);
4429 const char *g_supplicant_interface_get_ifname(GSupplicantInterface *interface);
4430 const char *g_supplicant_interface_get_driver(GSupplicantInterface *interface);
4431 GSupplicantState g_supplicant_interface_get_state(GSupplicantInterface *interface);
4432+const char *g_supplicant_interface_get_wps_key(GSupplicantInterface *interface);
4433+const void *g_supplicant_interface_get_wps_ssid(GSupplicantInterface *interface,
4434+ unsigned int *ssid_len);
4435+GSupplicantWpsState g_supplicant_interface_get_wps_state(GSupplicantInterface *interface);
4436+unsigned int g_supplicant_interface_get_mode(GSupplicantInterface *interface);
4437
4438 /* Network API */
4439 struct _GSupplicantNetwork;
4440@@ -163,6 +196,7 @@
4441 const char *g_supplicant_network_get_mode(GSupplicantNetwork *network);
4442 const char *g_supplicant_network_get_security(GSupplicantNetwork *network);
4443 dbus_int16_t g_supplicant_network_get_signal(GSupplicantNetwork *network);
4444+dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network);
4445
4446 struct _GSupplicantCallbacks {
4447 void (*system_ready) (void);
4448
4449=== modified file 'gsupplicant/supplicant.c'
4450--- gsupplicant/supplicant.c 2010-11-30 15:44:36 +0000
4451+++ gsupplicant/supplicant.c 2011-02-14 13:15:11 +0000
4452@@ -136,6 +136,12 @@
4453 static GHashTable *interface_table;
4454 static GHashTable *bss_mapping;
4455
4456+struct _GSupplicantWpsCredentials {
4457+ unsigned char ssid[32];
4458+ unsigned int ssid_len;
4459+ char *key;
4460+};
4461+
4462 struct _GSupplicantInterface {
4463 char *path;
4464 char *network_path;
4465@@ -155,6 +161,8 @@
4466 char *ifname;
4467 char *driver;
4468 char *bridge;
4469+ struct _GSupplicantWpsCredentials wps_cred;
4470+ GSupplicantWpsState wps_state;
4471 GHashTable *network_table;
4472 GHashTable *net_mapping;
4473 GHashTable *bss_mapping;
4474@@ -171,6 +179,7 @@
4475 dbus_int16_t signal;
4476 GSupplicantMode mode;
4477 GSupplicantSecurity security;
4478+ dbus_bool_t wps;
4479 GHashTable *bss_table;
4480 GHashTable *config_table;
4481 };
4482@@ -235,6 +244,8 @@
4483 return "managed";
4484 case G_SUPPLICANT_MODE_IBSS:
4485 return "adhoc";
4486+ case G_SUPPLICANT_MODE_MASTER:
4487+ return "ap";
4488 }
4489
4490 return NULL;
4491@@ -405,7 +416,9 @@
4492
4493 callback_interface_removed(interface);
4494
4495+ g_free(interface->wps_cred.key);
4496 g_free(interface->path);
4497+ g_free(interface->network_path);
4498 g_free(interface->ifname);
4499 g_free(interface->driver);
4500 g_free(interface->bridge);
4501@@ -422,6 +435,7 @@
4502
4503 g_hash_table_destroy(network->config_table);
4504
4505+ g_free(network->path);
4506 g_free(network->group);
4507 g_free(network->name);
4508 g_free(network);
4509@@ -600,6 +614,22 @@
4510 key, dbus_message_iter_get_arg_type(iter));
4511 }
4512
4513+static void set_apscan(DBusMessageIter *iter, void *user_data)
4514+{
4515+ unsigned int ap_scan = *(unsigned int *)user_data;
4516+
4517+ dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &ap_scan);
4518+}
4519+
4520+int g_supplicant_interface_set_apscan(GSupplicantInterface *interface,
4521+ unsigned int ap_scan)
4522+{
4523+ return supplicant_dbus_property_set(interface->path,
4524+ SUPPLICANT_INTERFACE ".Interface",
4525+ "ApScan", DBUS_TYPE_UINT32_AS_STRING,
4526+ set_apscan, NULL, &ap_scan);
4527+}
4528+
4529 void g_supplicant_interface_set_data(GSupplicantInterface *interface,
4530 void *data)
4531 {
4532@@ -642,6 +672,46 @@
4533 return interface->state;
4534 }
4535
4536+const char *g_supplicant_interface_get_wps_key(GSupplicantInterface *interface)
4537+{
4538+ if (interface == NULL)
4539+ return NULL;
4540+
4541+ return (const char *)interface->wps_cred.key;
4542+}
4543+
4544+const void *g_supplicant_interface_get_wps_ssid(GSupplicantInterface *interface,
4545+ unsigned int *ssid_len)
4546+{
4547+ if (ssid_len == NULL)
4548+ return NULL;
4549+
4550+ if (interface == NULL || interface->wps_cred.ssid == NULL) {
4551+ *ssid_len = 0;
4552+ return NULL;
4553+ }
4554+
4555+ *ssid_len = interface->wps_cred.ssid_len;
4556+ return interface->wps_cred.ssid;
4557+}
4558+
4559+GSupplicantWpsState g_supplicant_interface_get_wps_state(
4560+ GSupplicantInterface *interface)
4561+{
4562+ if (interface == NULL)
4563+ return G_SUPPLICANT_WPS_STATE_UNKNOWN;
4564+
4565+ return interface->wps_state;
4566+}
4567+
4568+unsigned int g_supplicant_interface_get_mode(GSupplicantInterface *interface)
4569+{
4570+ if (interface == NULL)
4571+ return 0;
4572+
4573+ return interface->mode_capa;
4574+}
4575+
4576 GSupplicantInterface *g_supplicant_network_get_interface(
4577 GSupplicantNetwork *network)
4578 {
4579@@ -711,6 +781,14 @@
4580 return network->signal;
4581 }
4582
4583+dbus_bool_t g_supplicant_network_get_wps(GSupplicantNetwork *network)
4584+{
4585+ if (network == NULL)
4586+ return FALSE;
4587+
4588+ return network->wps;
4589+}
4590+
4591 static void merge_network(GSupplicantNetwork *network)
4592 {
4593 GString *str;
4594@@ -928,6 +1006,10 @@
4595 memcpy(network->ssid, bss->ssid, bss->ssid_len);
4596 network->signal = bss->signal;
4597
4598+ network->wps = FALSE;
4599+ if ((bss->keymgmt & G_SUPPLICANT_KEYMGMT_WPS) != 0)
4600+ network->wps = TRUE;
4601+
4602 network->bss_table = g_hash_table_new_full(g_str_hash, g_str_equal,
4603 NULL, remove_bss);
4604
4605@@ -1022,6 +1104,82 @@
4606
4607 }
4608
4609+static unsigned int get_tlv(unsigned char *ie, unsigned int ie_size,
4610+ unsigned int type)
4611+{
4612+ unsigned int len = 0;
4613+
4614+ while (len + 4 < ie_size) {
4615+ unsigned int hi = ie[len];
4616+ unsigned int lo = ie[len + 1];
4617+ unsigned int tmp_type = (hi << 8) + lo;
4618+ unsigned int v_len = 0;
4619+
4620+ /* hi and lo are used to recreate an unsigned int
4621+ * based on 2 8bits length unsigned int. */
4622+
4623+ hi = ie[len + 2];
4624+ lo = ie[len + 3];
4625+ v_len = (hi << 8) + lo;
4626+
4627+ if (tmp_type == type) {
4628+ unsigned int ret_value = 0;
4629+ unsigned char *value = (unsigned char *)&ret_value;
4630+
4631+ SUPPLICANT_DBG("IE: match type 0x%x", type);
4632+
4633+ /* Verifying length relevance */
4634+ if (v_len > sizeof(unsigned int) ||
4635+ len + 4 + v_len > ie_size)
4636+ break;
4637+
4638+ memcpy(value, ie + len + 4, v_len);
4639+
4640+ SUPPLICANT_DBG("returning 0x%x", ret_value);
4641+ return ret_value;
4642+ }
4643+
4644+ len += v_len + 4;
4645+ }
4646+
4647+ SUPPLICANT_DBG("returning 0");
4648+ return 0;
4649+}
4650+
4651+static void bss_process_ies(DBusMessageIter *iter, void *user_data)
4652+{
4653+ struct g_supplicant_bss *bss = user_data;
4654+ const unsigned char WPS_OUI[] = { 0x00, 0x50, 0xf2, 0x04 };
4655+ unsigned char *ie, *ie_end;
4656+ DBusMessageIter array;
4657+ int ie_len;
4658+
4659+#define WMM_WPA1_WPS_INFO 221
4660+#define WPS_INFO_MIN_LEN 6
4661+#define WPS_VERSION_TLV 0x104A
4662+#define WPS_STATE_TLV 0x1044
4663+#define WPS_VERSION 0x10
4664+
4665+ dbus_message_iter_recurse(iter, &array);
4666+ dbus_message_iter_get_fixed_array(&array, &ie, &ie_len);
4667+
4668+ if (ie == NULL || ie_len < 2)
4669+ return;
4670+
4671+ for (ie_end = ie+ie_len; ie+ie[1]+1 <= ie_end; ie += ie[1]+2) {
4672+ if (ie[0] != WMM_WPA1_WPS_INFO || ie[1] < WPS_INFO_MIN_LEN ||
4673+ memcmp(ie+2, WPS_OUI, sizeof(WPS_OUI)) != 0)
4674+ continue;
4675+
4676+ SUPPLICANT_DBG("IE: match WPS_OUI");
4677+
4678+ if (get_tlv(&ie[6], ie[1],
4679+ WPS_VERSION_TLV) == WPS_VERSION &&
4680+ get_tlv(&ie[6], ie[1],
4681+ WPS_STATE_TLV) != 0)
4682+ bss->keymgmt |= G_SUPPLICANT_KEYMGMT_WPS;
4683+ }
4684+}
4685
4686 static void bss_property(const char *key, DBusMessageIter *iter,
4687 void *user_data)
4688@@ -1132,12 +1290,15 @@
4689 G_SUPPLICANT_KEYMGMT_WPA_FT_PSK |
4690 G_SUPPLICANT_KEYMGMT_WPA_PSK_256))
4691 bss->psk = TRUE;
4692- } else
4693+ } else if (g_strcmp0(key, "IEs") == 0)
4694+ bss_process_ies(iter, bss);
4695+ else
4696 SUPPLICANT_DBG("key %s type %c",
4697 key, dbus_message_iter_get_arg_type(iter));
4698 }
4699
4700-static void interface_bss_added(DBusMessageIter *iter, void *user_data)
4701+static struct g_supplicant_bss *interface_bss_added(DBusMessageIter *iter,
4702+ void *user_data)
4703 {
4704 GSupplicantInterface *interface = user_data;
4705 GSupplicantNetwork *network;
4706@@ -1148,10 +1309,10 @@
4707
4708 dbus_message_iter_get_basic(iter, &path);
4709 if (path == NULL)
4710- return;
4711+ return NULL;
4712
4713 if (g_strcmp0(path, "/") == 0)
4714- return;
4715+ return NULL;
4716
4717 SUPPLICANT_DBG("%s", path);
4718
4719@@ -1159,24 +1320,51 @@
4720 if (network != NULL) {
4721 bss = g_hash_table_lookup(network->bss_table, path);
4722 if (bss != NULL)
4723- return;
4724+ return NULL;
4725 }
4726
4727 bss = g_try_new0(struct g_supplicant_bss, 1);
4728 if (bss == NULL)
4729- return;
4730+ return NULL;
4731
4732 bss->interface = interface;
4733 bss->path = g_strdup(path);
4734
4735+ return bss;
4736+}
4737+
4738+static void interface_bss_added_with_keys(DBusMessageIter *iter,
4739+ void *user_data)
4740+{
4741+ struct g_supplicant_bss *bss;
4742+
4743+ SUPPLICANT_DBG("");
4744+
4745+ bss = interface_bss_added(iter, user_data);
4746+ if (bss == NULL)
4747+ return;
4748+
4749 dbus_message_iter_next(iter);
4750- if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_INVALID) {
4751- supplicant_dbus_property_foreach(iter, bss_property, bss);
4752- bss_property(NULL, NULL, bss);
4753- return;
4754- }
4755-
4756- supplicant_dbus_property_get_all(path,
4757+
4758+ if (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_INVALID)
4759+ return;
4760+
4761+ supplicant_dbus_property_foreach(iter, bss_property, bss);
4762+ bss_property(NULL, NULL, bss);
4763+}
4764+
4765+static void interface_bss_added_without_keys(DBusMessageIter *iter,
4766+ void *user_data)
4767+{
4768+ struct g_supplicant_bss *bss;
4769+
4770+ SUPPLICANT_DBG("");
4771+
4772+ bss = interface_bss_added(iter, user_data);
4773+ if (bss == NULL)
4774+ return;
4775+
4776+ supplicant_dbus_property_get_all(bss->path,
4777 SUPPLICANT_INTERFACE ".BSS",
4778 bss_property, bss);
4779 }
4780@@ -1270,26 +1458,32 @@
4781 const char *str = NULL;
4782
4783 dbus_message_iter_get_basic(iter, &str);
4784- if (str != NULL)
4785+ if (str != NULL) {
4786+ g_free(interface->ifname);
4787 interface->ifname = g_strdup(str);
4788+ }
4789 } else if (g_strcmp0(key, "Driver") == 0) {
4790 const char *str = NULL;
4791
4792 dbus_message_iter_get_basic(iter, &str);
4793- if (str != NULL)
4794+ if (str != NULL) {
4795+ g_free(interface->driver);
4796 interface->driver = g_strdup(str);
4797+ }
4798 } else if (g_strcmp0(key, "BridgeIfname") == 0) {
4799 const char *str = NULL;
4800
4801 dbus_message_iter_get_basic(iter, &str);
4802- if (str != NULL)
4803+ if (str != NULL) {
4804+ g_free(interface->bridge);
4805 interface->bridge = g_strdup(str);
4806+ }
4807 } else if (g_strcmp0(key, "CurrentBSS") == 0) {
4808- interface_bss_added(iter, interface);
4809+ interface_bss_added_without_keys(iter, interface);
4810 } else if (g_strcmp0(key, "CurrentNetwork") == 0) {
4811 interface_network_added(iter, interface);
4812 } else if (g_strcmp0(key, "BSSs") == 0) {
4813- supplicant_dbus_array_foreach(iter, interface_bss_added,
4814+ supplicant_dbus_array_foreach(iter, interface_bss_added_without_keys,
4815 interface);
4816 } else if (g_strcmp0(key, "Blobs") == 0) {
4817 /* Nothing */
4818@@ -1455,6 +1649,11 @@
4819 } else if (g_strcmp0(key, "EapMethods") == 0) {
4820 supplicant_dbus_array_foreach(iter, eap_method, NULL);
4821 debug_strvalmap("EAP method", eap_method_map, eap_methods);
4822+ } else if (g_strcmp0(key, "Country") == 0) {
4823+ const char *country = NULL;
4824+
4825+ dbus_message_iter_get_basic(iter, &country);
4826+ SUPPLICANT_DBG("Country %s", country);
4827 } else
4828 SUPPLICANT_DBG("key %s type %c",
4829 key, dbus_message_iter_get_arg_type(iter));
4830@@ -1580,7 +1779,7 @@
4831 if (interface == NULL)
4832 return;
4833
4834- interface_bss_added(iter, interface);
4835+ interface_bss_added_with_keys(iter, interface);
4836 }
4837
4838 static void signal_bss_removed(const char *path, DBusMessageIter *iter)
4839@@ -1645,6 +1844,106 @@
4840 supplicant_dbus_property_foreach(iter, bss_property, bss);
4841 }
4842
4843+static void wps_credentials(const char *key, DBusMessageIter *iter,
4844+ void *user_data)
4845+{
4846+ GSupplicantInterface *interface = user_data;
4847+
4848+ if (key == NULL)
4849+ return;
4850+
4851+ SUPPLICANT_DBG("key %s", key);
4852+
4853+ if (g_strcmp0(key, "Key") == 0) {
4854+ DBusMessageIter array;
4855+ unsigned char *key;
4856+ int key_len;
4857+
4858+ dbus_message_iter_recurse(iter, &array);
4859+ dbus_message_iter_get_fixed_array(&array, &key, &key_len);
4860+
4861+ g_free(interface->wps_cred.key);
4862+ interface->wps_cred.key = g_try_malloc0(
4863+ sizeof(char) * key_len+1);
4864+
4865+ if (interface->wps_cred.key == NULL)
4866+ return;
4867+
4868+ memcpy(interface->wps_cred.key, key, sizeof(char) * key_len);
4869+
4870+ SUPPLICANT_DBG("WPS key present");
4871+ } else if (g_strcmp0(key, "SSID") == 0) {
4872+ DBusMessageIter array;
4873+ unsigned char *ssid;
4874+ int ssid_len;
4875+
4876+ dbus_message_iter_recurse(iter, &array);
4877+ dbus_message_iter_get_fixed_array(&array, &ssid, &ssid_len);
4878+
4879+ if (ssid_len > 0 && ssid_len < 33) {
4880+ memcpy(interface->wps_cred.ssid, ssid, ssid_len);
4881+ interface->wps_cred.ssid_len = ssid_len;
4882+ } else {
4883+ memset(interface->wps_cred.ssid, 0, 32);
4884+ interface->wps_cred.ssid_len = 0;
4885+ }
4886+ }
4887+}
4888+
4889+static void signal_wps_credentials(const char *path, DBusMessageIter *iter)
4890+{
4891+ GSupplicantInterface *interface;
4892+
4893+ SUPPLICANT_DBG("");
4894+
4895+ interface = g_hash_table_lookup(interface_table, path);
4896+ if (interface == NULL)
4897+ return;
4898+
4899+ supplicant_dbus_property_foreach(iter, wps_credentials, interface);
4900+}
4901+
4902+static void wps_event_args(const char *key, DBusMessageIter *iter,
4903+ void *user_data)
4904+{
4905+ GSupplicantInterface *interface = user_data;
4906+
4907+ if (key == NULL || interface == NULL)
4908+ return;
4909+
4910+ SUPPLICANT_DBG("Arg Key %s", key);
4911+}
4912+
4913+static void signal_wps_event(const char *path, DBusMessageIter *iter)
4914+{
4915+ GSupplicantInterface *interface;
4916+ const char *name = NULL;
4917+
4918+ SUPPLICANT_DBG("");
4919+
4920+ interface = g_hash_table_lookup(interface_table, path);
4921+ if (interface == NULL)
4922+ return;
4923+
4924+ dbus_message_iter_get_basic(iter, &name);
4925+
4926+ SUPPLICANT_DBG("Name: %s", name);
4927+
4928+ if (g_strcmp0(name, "success") == 0)
4929+ interface->wps_state = G_SUPPLICANT_WPS_STATE_SUCCESS;
4930+ else if (g_strcmp0(name, "failed") == 0)
4931+ interface->wps_state = G_SUPPLICANT_WPS_STATE_FAIL;
4932+ else
4933+ interface->wps_state = G_SUPPLICANT_WPS_STATE_UNKNOWN;
4934+
4935+ if (!dbus_message_iter_has_next(iter))
4936+ return;
4937+
4938+ dbus_message_iter_next(iter);
4939+
4940+ supplicant_dbus_property_foreach(iter, wps_event_args, interface);
4941+}
4942+
4943 static struct {
4944 const char *interface;
4945 const char *member;
4946@@ -1666,6 +1965,9 @@
4947
4948 { SUPPLICANT_INTERFACE ".BSS", "PropertiesChanged", signal_bss_changed },
4949
4950+ { SUPPLICANT_INTERFACE ".Interface.WPS", "Credentials", signal_wps_credentials },
4951+ { SUPPLICANT_INTERFACE ".Interface.WPS", "Event", signal_wps_event },
4952+
4953 { }
4954 };
4955
4956@@ -1699,6 +2001,69 @@
4957 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
4958 }
4959
4960+struct supplicant_regdom {
4961+ GSupplicantCountryCallback callback;
4962+ const void *user_data;
4963+};
4964+
4965+static void country_result(const char *error,
4966+ DBusMessageIter *iter, void *user_data)
4967+{
4968+ struct supplicant_regdom *regdom = user_data;
4969+ char *alpha2;
4970+
4971+ SUPPLICANT_DBG("Country setting result");
4972+
4973+ if (user_data == NULL)
4974+ return;
4975+
4976+ if (error == NULL) {
4977+ alpha2 = (char *)regdom->user_data;
4978+ } else {
4979+ SUPPLICANT_DBG("Country setting failure %s", error);
4980+ alpha2 = NULL;
4981+ }
4982+
4983+ if (regdom->callback)
4984+ regdom->callback(alpha2);
4985+
4986+ g_free(regdom);
4987+}
4988+
4989+static void country_params(DBusMessageIter *iter, void *user_data)
4990+{
4991+ struct supplicant_regdom *regdom = user_data;
4992+ const char *country;
4993+
4994+ country = regdom->user_data;
4995+
4996+ dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &country);
4997+}
4998+
4999+int g_supplicant_set_country(const char *alpha2,
5000+ GSupplicantCountryCallback callback,
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches