summaryrefslogtreecommitdiff
path: root/recipes/connman
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/connman
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/connman')
-rw-r--r--recipes/connman/connman-gnome_0.4.bb20
-rw-r--r--recipes/connman/connman.inc69
-rw-r--r--recipes/connman/connman_0.10.bb36
-rw-r--r--recipes/connman/connman_0.12.bb36
-rw-r--r--recipes/connman/connman_0.8.bb36
-rw-r--r--recipes/connman/connman_0.9.bb36
-rw-r--r--recipes/connman/connman_git.bb11
-rwxr-xr-xrecipes/connman/files/connman42
-rw-r--r--recipes/connman/files/connman-applet.desktop10
-rw-r--r--recipes/connman/files/connman-build-and-work.patch286
-rw-r--r--recipes/connman/files/phrase-lenght.diff23
-rw-r--r--recipes/connman/files/use_nm_in_cross_compiling.patch17
12 files changed, 622 insertions, 0 deletions
diff --git a/recipes/connman/connman-gnome_0.4.bb b/recipes/connman/connman-gnome_0.4.bb
new file mode 100644
index 0000000000..4f8d6e61f2
--- /dev/null
+++ b/recipes/connman/connman-gnome_0.4.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "gtk frontend for connman"
+HOMEPAGE = "http://www.moblin.org/projects/projects_connman.php"
+SECTION = "libs/network"
+LICENSE = "GPL"
+DEPENDS = "gtk+ dbus"
+PR = "r7"
+
+RRECOMMENDS_${PN} = "connman connman-plugin-ethernet connman-plugin-loopback connman-plugin-udhcp connman-plugin-wifi"
+
+SRC_URI = "http://www.kernel.org/pub/linux/network/connman/connman-gnome-${PV}.tar.gz \
+ file://phrase-lenght.diff;patch=1 \
+ file://connman-applet.desktop"
+
+inherit autotools gtk-icon-cache
+
+do_install_append() {
+ install -d ${D}${datadir}/applications/
+ install ${WORKDIR}/connman-applet.desktop ${D}${datadir}/applications/
+}
+
diff --git a/recipes/connman/connman.inc b/recipes/connman/connman.inc
new file mode 100644
index 0000000000..c79c22cabb
--- /dev/null
+++ b/recipes/connman/connman.inc
@@ -0,0 +1,69 @@
+DESCRIPTION = "The Moblin Connection Manager"
+HOMEPAGE = "http://www.moblin.org/projects/projects_connman.php"
+SECTION = "libs/network"
+LICENSE = "GPL"
+# we need to define the depends here, the dynamic stuff is too late
+DEPENDS = "wpa-supplicant dbus glib-2.0 ppp busybox dhclient resolvconf bluez4"
+
+EXTRA_OECONF += "\
+ ac_cv_path_WPASUPPLICANT=/usr/sbin/wpa_supplicant \
+ ac_cv_path_DHCLIENT=/sbin/dhclient \
+ ac_cv_path_UDHCPC=/sbin/udhcpc \
+ ac_cv_path_RESOLVCONF=/sbin/resolvconf \
+ ac_cv_path_PPPD=/usr/sbin/pppd \
+"
+
+INITSCRIPT_NAME = "connman"
+INITSCRIPT_PARAMS = "defaults 22"
+
+PARALLEL_MAKE = ""
+
+inherit autotools pkgconfig update-rc.d
+
+do_configure_append() {
+ ln -sf . include/connman
+}
+
+do_compile_append() {
+ sed -i -e s:deny:allow:g src/connman-dbus.conf
+}
+
+do_install_append() {
+ install -m 0755 ${WORKDIR}/connman ${D}${sysconfdir}/init.d/connman
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+python populate_packages_prepend() {
+ depmap = dict( pppd="ppp", udhcp="busybox connman-scripts", dhclient="dhclient", wifi="wpa-supplicant", resolvconf="resolvconf", bluetooth="bluez4" )
+ packages = []
+ hook = lambda file,pkg,b,c,d:packages.append((file,pkg))
+ plugin_dir = bb.data.expand('${libdir}/connman/plugins/', d)
+ plugin_name = bb.data.expand('${PN}-plugin-%s', d)
+ do_split_packages(d, plugin_dir, '^(.*).so$', plugin_name, '${PN} plugin for %s', extra_depends='', hook=hook )
+ for (file, package) in packages:
+ plugintype = package.split( '-' )[-1]
+ if plugintype in depmap:
+ rdepends = bb.data.getVar( "RDEPENDS_%s" % package, d )
+ bb.note( "Adding rdependency on %s to package %s" % ( depmap[plugintype], package ) )
+ bb.data.setVar("RDEPENDS_%s" % package, depmap[plugintype], d)
+}
+
+PACKAGES_DYNAMIC = "${PN}-plugin-*"
+
+PACKAGES += "${PN}-scripts"
+
+FILES_${PN} = "${bindir}/* ${sbindir}/* ${libexecdir}/* ${libdir}/lib*.so.* \
+ ${sysconfdir} ${sharedstatedir} ${localstatedir} \
+ ${base_bindir}/* ${base_sbindir}/* ${base_libdir}/*.so* ${datadir}/${PN} \
+ ${datadir}/pixmaps ${datadir}/applications \
+ ${datadir}/idl ${datadir}/omf ${datadir}/sounds \
+ ${libdir}/bonobo/servers \
+ ${datadir}/dbus-1/system-services/*"
+
+FILES_${PN}-scripts += "${libdir}/connman/scripts"
+FILES_${PN}-dbg += "${libdir}/connman/*/.debug"
+FILES_${PN}-dev += "${libdir}/connman/*/*.la"
+
diff --git a/recipes/connman/connman_0.10.bb b/recipes/connman/connman_0.10.bb
new file mode 100644
index 0000000000..aff8ccfd92
--- /dev/null
+++ b/recipes/connman/connman_0.10.bb
@@ -0,0 +1,36 @@
+require connman.inc
+PR = "r6"
+
+EXTRA_OECONF += "\
+ --disable-gtk-doc \
+ --enable-debug \
+ --enable-threads \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-wifi \
+ --disable-wimax \
+ --enable-bluetooth \
+ --enable-udhcp \
+ --enable-dhclient \
+ --enable-resolvconf \
+ --enable-dnsproxy \
+ --disable-novatel \
+ --disable-huawei \
+ --disable-hso \
+ --enable-ppp \
+# needs udev >= 129
+ --disable-udev \
+ --disable-polkit \
+ --enable-client \
+ --enable-fake \
+# --with-udhcpc=PROGRAM \
+# --with-dhclient=PROGRAM \
+# --with-resolvconf=PROGRAM \
+# --with-pppd=PROGRAM \
+"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
+ file://connman \
+"
+
diff --git a/recipes/connman/connman_0.12.bb b/recipes/connman/connman_0.12.bb
new file mode 100644
index 0000000000..c2bb92ba83
--- /dev/null
+++ b/recipes/connman/connman_0.12.bb
@@ -0,0 +1,36 @@
+require connman.inc
+PR = "r0"
+
+EXTRA_OECONF += "\
+ --disable-gtk-doc \
+ --enable-debug \
+ --enable-threads \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-wifi \
+ --disable-wimax \
+ --enable-bluetooth \
+ --enable-udhcp \
+ --enable-dhclient \
+ --enable-resolvconf \
+ --enable-dnsproxy \
+ --disable-novatel \
+ --disable-huawei \
+ --disable-hso \
+ --enable-ppp \
+# needs udev >= 129
+ --disable-udev \
+ --disable-polkit \
+ --enable-client \
+ --enable-fake \
+# --with-udhcpc=PROGRAM \
+# --with-dhclient=PROGRAM \
+# --with-resolvconf=PROGRAM \
+# --with-pppd=PROGRAM \
+"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
+ file://connman \
+"
+
diff --git a/recipes/connman/connman_0.8.bb b/recipes/connman/connman_0.8.bb
new file mode 100644
index 0000000000..45fa1b0da9
--- /dev/null
+++ b/recipes/connman/connman_0.8.bb
@@ -0,0 +1,36 @@
+require connman.inc
+PR = "r4"
+
+EXTRA_OECONF += "\
+ --disable-gtk-doc \
+ --enable-debug \
+ --enable-threads \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-wifi \
+ --disable-wimax \
+ --enable-bluetooth \
+ --enable-udhcp \
+ --enable-dhclient \
+ --enable-resolvconf \
+ --enable-dnsproxy \
+ --disable-novatel \
+ --disable-huawei \
+ --disable-hso \
+ --enable-ppp \
+# needs udev >= 129
+ --disable-udev \
+ --disable-polkit \
+ --enable-client \
+ --enable-fake \
+# --with-udhcpc=PROGRAM \
+# --with-dhclient=PROGRAM \
+# --with-resolvconf=PROGRAM \
+# --with-pppd=PROGRAM \
+"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
+ file://connman \
+"
+
diff --git a/recipes/connman/connman_0.9.bb b/recipes/connman/connman_0.9.bb
new file mode 100644
index 0000000000..45fa1b0da9
--- /dev/null
+++ b/recipes/connman/connman_0.9.bb
@@ -0,0 +1,36 @@
+require connman.inc
+PR = "r4"
+
+EXTRA_OECONF += "\
+ --disable-gtk-doc \
+ --enable-debug \
+ --enable-threads \
+ --enable-loopback \
+ --enable-ethernet \
+ --enable-wifi \
+ --disable-wimax \
+ --enable-bluetooth \
+ --enable-udhcp \
+ --enable-dhclient \
+ --enable-resolvconf \
+ --enable-dnsproxy \
+ --disable-novatel \
+ --disable-huawei \
+ --disable-hso \
+ --enable-ppp \
+# needs udev >= 129
+ --disable-udev \
+ --disable-polkit \
+ --enable-client \
+ --enable-fake \
+# --with-udhcpc=PROGRAM \
+# --with-dhclient=PROGRAM \
+# --with-resolvconf=PROGRAM \
+# --with-pppd=PROGRAM \
+"
+
+SRC_URI = "\
+ http://www.kernel.org/pub/linux/network/connman/connman-${PV}.tar.gz \
+ file://connman \
+"
+
diff --git a/recipes/connman/connman_git.bb b/recipes/connman/connman_git.bb
new file mode 100644
index 0000000000..3a04f5f541
--- /dev/null
+++ b/recipes/connman/connman_git.bb
@@ -0,0 +1,11 @@
+require connman.inc
+PV = "0.12+gitr${SRCREV}"
+PR = "r0"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "\
+ git://git.kernel.org/pub/scm/network/connman/connman.git;protocol=git \
+ file://connman \
+"
+S = "${WORKDIR}/git"
diff --git a/recipes/connman/files/connman b/recipes/connman/files/connman
new file mode 100755
index 0000000000..5e0f90e8cc
--- /dev/null
+++ b/recipes/connman/files/connman
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+DAEMON=/usr/sbin/connmand
+PIDFILE=/var/run/connmand.pid
+DESC="Connection Manager"
+
+if [ -f /etc/default/connman ] ; then
+ . /etc/default/connman
+fi
+
+set -e
+
+do_start() {
+ connmand
+}
+
+do_stop() {
+ start-stop-daemon --stop --name connmand --quiet
+}
+
+case "$1" in
+ start)
+ echo "Starting $DESC"
+ do_start
+ ;;
+ stop)
+ echo "Stopping $DESC"
+ do_stop
+ ;;
+ restart|force-reload)
+ echo "Restarting $DESC"
+ do_stop
+ sleep 1
+ do_start
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|restart|force-reload}" >&2
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/recipes/connman/files/connman-applet.desktop b/recipes/connman/files/connman-applet.desktop
new file mode 100644
index 0000000000..ad17682507
--- /dev/null
+++ b/recipes/connman/files/connman-applet.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Connection Manager
+Comment=Connection Manager applet
+Icon=stock_internet
+Exec=connman-applet
+Terminal=false
+Type=Application
+Categories=Network;GTK
+
diff --git a/recipes/connman/files/connman-build-and-work.patch b/recipes/connman/files/connman-build-and-work.patch
new file mode 100644
index 0000000000..482e7a5e1b
--- /dev/null
+++ b/recipes/connman/files/connman-build-and-work.patch
@@ -0,0 +1,286 @@
+diff --git a/include/iface.h b/include/iface.h
+index 3530f23..24f0a9a 100644
+--- a/include/iface.h
++++ b/include/iface.h
+@@ -161,7 +161,7 @@ extern void connman_iface_indicate_carrier_off(struct connman_iface *iface);
+ extern void connman_iface_indicate_configured(struct connman_iface *iface);
+
+ extern void connman_iface_indicate_station(struct connman_iface *iface,
+- const char *name, int strength, int security);
++ const char *bssid, const char *name, int strength, int security);
+
+ extern int connman_iface_get_ipv4(struct connman_iface *iface,
+ struct connman_ipv4 *ipv4);
+diff --git a/plugins/supplicant.c b/plugins/supplicant.c
+index cba93cd..a8a46ed 100644
+--- a/plugins/supplicant.c
++++ b/plugins/supplicant.c
+@@ -66,7 +66,9 @@ static GSList *tasks = NULL;
+
+ struct supplicant_ap {
+ gchar *identifier;
++ gchar *bssid;
+ GByteArray *ssid;
++ guint quality;
+ guint capabilities;
+ gboolean has_wep;
+ gboolean has_wpa;
+@@ -618,6 +620,24 @@ static void extract_ssid(struct supplicant_ap *ap, DBusMessageIter *value)
+ ap->identifier = g_strdup((char *) ssid);
+ }
+
++static void extract_bssid(struct supplicant_ap *ap, DBusMessageIter *value)
++{
++ DBusMessageIter array;
++ unsigned char *bssid;
++ int bssid_len;
++ char buf[20];
++
++ dbus_message_iter_recurse(value, &array);
++ dbus_message_iter_get_fixed_array(&array, &bssid, &bssid_len);
++ if (bssid_len >= 6) {
++ g_snprintf((char *)buf, sizeof(buf),
++ "%02x:%02x:%02x:%02x:%02x:%02x",
++ (int)bssid[0], (int)bssid[1], (int)bssid[2],
++ (int)bssid[3], (int)bssid[4], (int)bssid[5]);
++ ap->bssid = g_strdup((char *) buf);
++ }
++}
++
+ static void extract_wpaie(struct supplicant_ap *ap, DBusMessageIter *value)
+ {
+ DBusMessageIter array;
+@@ -657,6 +677,16 @@ static void extract_capabilites(struct supplicant_ap *ap,
+ ap->has_wep = TRUE;
+ }
+
++static void extract_quality(struct supplicant_ap *ap,
++ DBusMessageIter *value)
++{
++ guint quality;
++
++ dbus_message_iter_get_basic(value, &quality);
++
++ ap->quality = quality;
++}
++
+ static int parse_network_properties(struct supplicant_task *task,
+ DBusMessage *message)
+ {
+@@ -688,12 +718,16 @@ static int parse_network_properties(struct supplicant_task *task,
+
+ if (g_str_equal(key, "ssid") == TRUE)
+ extract_ssid(ap, &value);
++ else if (g_str_equal(key, "bssid") == TRUE)
++ extract_bssid(ap, &value);
+ else if (g_str_equal(key, "wpaie") == TRUE)
+ extract_wpaie(ap, &value);
+ else if (g_str_equal(key, "rsnie") == TRUE)
+ extract_rsnie(ap, &value);
+ else if (g_str_equal(key, "capabilities") == TRUE)
+ extract_capabilites(ap, &value);
++ else if (g_str_equal(key, "quality") == TRUE)
++ extract_quality(ap, &value);
+
+ dbus_message_iter_next(&dict);
+ }
+@@ -706,7 +740,8 @@ static int parse_network_properties(struct supplicant_task *task,
+ security |= 0x04;
+
+ connman_iface_indicate_station(task->iface,
+- ap->identifier, 25, security);
++ ap->bssid, ap->identifier, ap->quality,
++ security);
+
+ g_free(ap);
+
+diff --git a/src/iface-inet.c b/src/iface-inet.c
+index 82a1e8c..f780452 100644
+--- a/src/iface-inet.c
++++ b/src/iface-inet.c
+@@ -275,6 +275,10 @@ int __connman_iface_connect(struct connman_iface *iface,
+
+ iface->flags |= CONNMAN_IFACE_FLAG_RUNNING;
+
++ /* This actually makes it do a dhcp request properly when connections
++ * are estabished - it doesnt seem to otherwise */
++ iface->state = CONNMAN_IFACE_STATE_ENABLED;
++
+ return 0;
+ }
+
+diff --git a/src/iface.c b/src/iface.c
+index b2fd6d1..c70b25c 100644
+--- a/src/iface.c
++++ b/src/iface.c
+@@ -332,11 +332,13 @@ void connman_iface_indicate_configured(struct connman_iface *iface)
+ }
+ }
+
+-static void append_station(DBusMessage *reply, const char *name,
++static void append_station(DBusMessage *reply, const char *bssid, const char *name,
+ int signal, int security)
+ {
+ DBusMessageIter array, dict;
++ const char *wep = "WEP";
+ const char *wpa = "WPA";
++ const char *rsn = "RSN";
+
+ dbus_message_iter_init_append(reply, &array);
+
+@@ -345,25 +347,36 @@ static void append_station(DBusMessage *reply, const char *name,
+ DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
+ DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict);
+
+- append_entry(&dict, "ESSID", DBUS_TYPE_STRING, &name);
++ if (bssid) append_entry(&dict, "BSSID", DBUS_TYPE_STRING, &bssid);
++ if (name) append_entry(&dict, "ESSID", DBUS_TYPE_STRING, &name);
+ append_entry(&dict, "Signal", DBUS_TYPE_UINT16, &signal);
+
+- if (security > 0)
+- append_entry(&dict, "Security", DBUS_TYPE_STRING, &wpa);
++ if (security > 0) {
++ const char *sec = NULL;
++
++ if (security & 0x4)
++ sec = rsn;
++ else if (security & 0x2)
++ sec = wpa;
++ else if (security & 0x1)
++ sec = wep;
++ if (sec)
++ append_entry(&dict, "Security", DBUS_TYPE_STRING, &sec);
++ }
+
+ dbus_message_iter_close_container(&array, &dict);
+ }
+
+ void connman_iface_indicate_station(struct connman_iface *iface,
+- const char *name, int strength, int security)
++ const char *bssid, const char *name, int strength, int security)
+ {
+ DBusMessage *signal;
+- char *ssid, *passphrase;
++ char *ssid = NULL, *passphrase;
+ int len;
+
+- DBG("iface %p security %d name %s", iface, security, name);
++ DBG("iface %p security %d name %s bssid %s", iface, security, name, bssid);
+
+- if (name == NULL || strlen(name) == 0)
++ if (bssid == NULL || strlen(bssid) == 0)
+ return;
+
+ signal = dbus_message_new_signal(iface->path,
+@@ -371,7 +384,7 @@ void connman_iface_indicate_station(struct connman_iface *iface,
+ if (signal == NULL)
+ return;
+
+- append_station(signal, name, strength, security);
++ append_station(signal, bssid, name, strength, security);
+
+ dbus_connection_send(connection, signal, NULL);
+ dbus_message_unref(signal);
+@@ -386,17 +399,21 @@ void connman_iface_indicate_station(struct connman_iface *iface,
+ default:
+ break;
+ }
+-
+- len = strlen(name);
+- ssid = strdup(name);
+- if (ssid == NULL)
++
++ passphrase = __connman_iface_find_passphrase(iface, bssid);
++
++ if (!passphrase && name) {
++ len = strlen(name);
++ ssid = strdup(name);
++ /* The D-Link access points return a 0x05 at the end of the SSID */
++ if (len > 0 && ssid[len - 1] == '\05')
++ ssid[len - 1] = '\0';
++ }
++
++ if (!passphrase && ssid == NULL)
+ return;
+-
+- /* The D-Link access points return a 0x05 at the end of the SSID */
+- if (ssid[len - 1] == '\05')
+- ssid[len - 1] = '\0';
+-
+- passphrase = __connman_iface_find_passphrase(iface, ssid);
++ if (!passphrase)
++ passphrase = __connman_iface_find_passphrase(iface, ssid);
+ if (passphrase != NULL) {
+ DBG("network %s passphrase %s", ssid, passphrase);
+
+@@ -1154,7 +1171,7 @@ static GDBusMethodTable iface_methods[] = {
+ { "GetNetwork", "", "a{sv}", get_network },
+ { "SetNetwork", "a{sv}", "", set_network },
+ { "ListNetworks", "", "ao", list_networks },
+- { "CreateNetwork", "a{av}", "o", create_network },
++ { "CreateNetwork", "a{sv}", "o", create_network },
+ { "RemoveNetwork", "o", "", remove_network },
+ { "SelectNetwork", "o", "", select_network },
+ { "GetIPv4", "", "a{sv}", get_ipv4 },
+@@ -1301,7 +1318,7 @@ static int probe_device(LibHalContext *ctx,
+
+ conn = libhal_ctx_get_dbus_connection(ctx);
+
+- g_dbus_register_object(conn, iface->path, iface, device_free);
++ g_dbus_register_object(conn, iface->path);
+
+ interfaces = g_slist_append(interfaces, iface);
+
+@@ -1313,7 +1330,7 @@ static int probe_device(LibHalContext *ctx,
+
+ g_dbus_register_interface(conn, iface->path,
+ CONNMAN_IFACE_INTERFACE,
+- iface_methods, iface_signals, NULL);
++ iface_methods, iface_signals, NULL, iface, device_free);
+
+ DBG("iface %p identifier %s", iface, iface->identifier);
+
+diff --git a/src/manager.c b/src/manager.c
+index 9d14cd7..78b017f 100644
+--- a/src/manager.c
++++ b/src/manager.c
+@@ -218,18 +218,18 @@ int __connman_manager_init(DBusConnection *conn, gboolean compat)
+ if (connection == NULL)
+ return -1;
+
+- g_dbus_register_object(connection, CONNMAN_MANAGER_PATH, NULL, NULL);
++ g_dbus_register_object(connection, CONNMAN_MANAGER_PATH);
+
+ g_dbus_register_interface(connection, CONNMAN_MANAGER_PATH,
+ CONNMAN_MANAGER_INTERFACE,
+ manager_methods,
+- manager_signals, NULL);
++ manager_signals, NULL, NULL, NULL);
+
+ if (compat == TRUE) {
+- g_dbus_register_object(connection, NM_PATH, NULL, NULL);
++ g_dbus_register_object(connection, NM_PATH);
+
+ g_dbus_register_interface(connection, NM_PATH, NM_INTERFACE,
+- nm_methods, NULL, NULL);
++ nm_methods, NULL, NULL, NULL, NULL);
+
+ nm_compat = TRUE;
+ }
+diff --git a/src/network.c b/src/network.c
+index 9da8fea..a5ec2b9 100644
+--- a/src/network.c
++++ b/src/network.c
+@@ -157,10 +157,10 @@ const char *__connman_iface_add_network(struct connman_iface *iface,
+
+ networks = g_slist_append(networks, network);
+
+- g_dbus_register_object(connection, path, network, network_free);
++ g_dbus_register_object(connection, path);
+
+ g_dbus_register_interface(connection, path, CONNMAN_NETWORK_INTERFACE,
+- network_methods, NULL, NULL);
++ network_methods, NULL, NULL, network, network_free);
+
+ return path;
+ }
diff --git a/recipes/connman/files/phrase-lenght.diff b/recipes/connman/files/phrase-lenght.diff
new file mode 100644
index 0000000000..383c86cd3a
--- /dev/null
+++ b/recipes/connman/files/phrase-lenght.diff
@@ -0,0 +1,23 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Fri, 30 Jan 2009 14:34:05 +0000 (+0100)
+Subject: Don't limit input field length for passphrases
+X-Git-Url: http://git.moblin.org/cgi-bin/gitweb/gitweb.cgi?p=projects%2Fconnman-gnome.git;a=commitdiff_plain;h=faa1dee0cea9bdf47d91f5665880dab335dd94b4
+
+Don't limit input field length for passphrases
+---
+
+diff --git a/applet/main.c b/applet/main.c
+index cf12a34..434e7c8 100644
+--- a/applet/main.c
++++ b/applet/main.c
+@@ -151,8 +151,8 @@ static void passphrase_dialog(const char *path, const char *name)
+ GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0);
+
+ entry = gtk_entry_new();
+- gtk_entry_set_max_length(GTK_ENTRY(entry), 16);
+- gtk_entry_set_width_chars(GTK_ENTRY(entry), 16);
++ gtk_entry_set_max_length(GTK_ENTRY(entry), 120);
++ gtk_entry_set_width_chars(GTK_ENTRY(entry), 20);
+ gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
+ gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+ gtk_container_add(GTK_CONTAINER(vbox), entry);
diff --git a/recipes/connman/files/use_nm_in_cross_compiling.patch b/recipes/connman/files/use_nm_in_cross_compiling.patch
new file mode 100644
index 0000000000..e9f2b29e3e
--- /dev/null
+++ b/recipes/connman/files/use_nm_in_cross_compiling.patch
@@ -0,0 +1,17 @@
+Index: git/src/Makefile.am
+===================================================================
+--- git.orig/src/Makefile.am 2008-09-18 16:48:44.000000000 +0800
++++ git/src/Makefile.am 2008-09-18 16:49:54.000000000 +0800
+@@ -44,7 +44,11 @@
+ MAINTAINERCLEANFILES = Makefile.in
+
+ connman.exp:
+- nm -B *.o | awk '{ print $$3 }' | sort -u | grep -E -e '^connman_' > $@
++ if test -n $$host ; then \
++ $(host)-nm -B *.o | awk '{ print $$3 }' | sort -u | grep -E -e '^connman_' > $@ ;\
++ else \
++ nm -B *.o | awk '{ print $$3 }' | sort -u | grep -E -e '^connman_' > $@ ;\
++ fi
+
+ connman.ver: connman.exp
+ echo "{ global:" > $@