summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2011-06-12 18:24:18 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-14 13:23:50 +0100
commit28246a275a0d7208f0361735685688803965648e (patch)
tree93c240bf234a435ce11dee0c49b1779425467bed
parent250c89a34fedeadf5c098b64cb1833e45194a108 (diff)
downloadopenembedded-core-28246a275a0d7208f0361735685688803965648e.tar.gz
openembedded-core-28246a275a0d7208f0361735685688803965648e.tar.bz2
openembedded-core-28246a275a0d7208f0361735685688803965648e.zip
connman-gnome 0.5: build from git
All the local patches were applied upstream, so let's build straight from git to make that clear Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch19
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch4162
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/remove-connman-property-desktop-file.patch42
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/service_name_update.patch36
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome_0.5.bb13
5 files changed, 4 insertions, 4268 deletions
diff --git a/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch b/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch
deleted file mode 100644
index d34257ba0f..0000000000
--- a/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Even if all services are not available, we still need to let user have
-the ability to configure network, for example, online/offline, etc.
-Therefore enable the callback menu even when status is unavailable.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-
-diff --git a/applet/status.c b/applet/status.c
-index 13ec752..d817f22 100644
---- a/applet/status.c
-+++ b/applet/status.c
-@@ -231,8 +231,6 @@ void status_unavailable(void)
- {
- icon_animation_stop(animation);
-
-- available = FALSE;
--
- gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_notifier);
- gtk_status_icon_set_tooltip(statusicon,
- "Connection Manager daemon is not running");
diff --git a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch b/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch
deleted file mode 100644
index 2fe8bb80fb..0000000000
--- a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch
+++ /dev/null
@@ -1,4162 +0,0 @@
-connman-gnome: Change the code to fit recent connman
-
-The recent connman changes from "device" based to "service" based.
-Therefore most of the interaction protocol between connman and
-connman-gnome has changed. This commit uses the new dbus interface
-to interact with connman. With this change, connman-gnome could
-do wired and wireless interface configurations with latest connman.
-
-Besides, some UI is re-designed to be more neat and friendly to
-end user.
-
-Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
-
-diff --git a/applet/main.c b/applet/main.c
-index 2a9b36e..08d394c 100644
---- a/applet/main.c
-+++ b/applet/main.c
-@@ -98,279 +98,21 @@ static void settings_callback(GtkWidget *item, gpointer user_data)
- g_printerr("Couldn't execute command: %s\n", command);
- }
-
--static void toggled_callback(GtkWidget *button, gpointer user_data)
--{
-- GtkWidget *entry = user_data;
-- gboolean mode;
--
-- mode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
--
-- gtk_entry_set_visibility(GTK_ENTRY(entry), mode);
--}
--
--static void passphrase_dialog(const char *path, const char *name)
--{
-- GtkWidget *dialog;
-- GtkWidget *button;
-- GtkWidget *image;
-- GtkWidget *label;
-- GtkWidget *entry;
-- GtkWidget *table;
-- GtkWidget *vbox;
--
-- dialog = gtk_dialog_new();
-- gtk_window_set_title(GTK_WINDOW(dialog), _("Enter passphrase"));
-- gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
-- gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
-- gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
-- gtk_window_set_urgency_hint(GTK_WINDOW(dialog), TRUE);
-- gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
--
-- button = gtk_dialog_add_button(GTK_DIALOG(dialog),
-- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
-- button = gtk_dialog_add_button(GTK_DIALOG(dialog),
-- GTK_STOCK_OK, GTK_RESPONSE_ACCEPT);
-- gtk_widget_grab_default(button);
--
-- table = gtk_table_new(5, 2, FALSE);
-- gtk_table_set_row_spacings(GTK_TABLE(table), 4);
-- gtk_table_set_col_spacings(GTK_TABLE(table), 20);
-- gtk_container_set_border_width(GTK_CONTAINER(table), 12);
-- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), table);
-- image = gtk_image_new_from_icon_name(GTK_STOCK_DIALOG_AUTHENTICATION,
-- GTK_ICON_SIZE_DIALOG);
-- gtk_misc_set_alignment(GTK_MISC(image), 0.0, 0.0);
-- gtk_table_attach(GTK_TABLE(table), image, 0, 1, 0, 5,
-- GTK_SHRINK, GTK_FILL, 0, 0);
-- vbox = gtk_vbox_new(FALSE, 6);
--
-- label = gtk_label_new(_("Network requires input of a passphrase:"));
-- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
-- gtk_container_add(GTK_CONTAINER(vbox), label);
-- gtk_table_attach(GTK_TABLE(table), vbox, 1, 2, 0, 1,
-- GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0);
--
-- entry = gtk_entry_new();
-- 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);
--
-- button = gtk_check_button_new_with_label(_("Show input"));
-- gtk_container_add(GTK_CONTAINER(vbox), button);
--
-- g_signal_connect(G_OBJECT(button), "toggled",
-- G_CALLBACK(toggled_callback), entry);
--
-- button = gtk_check_button_new_with_label(_("Remember network"));
-- gtk_container_add(GTK_CONTAINER(vbox), button);
--
-- gtk_widget_show_all(dialog);
--
-- if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
-- const gchar *passphrase;
-- gboolean remember;
--
-- passphrase = gtk_entry_get_text(GTK_ENTRY(entry));
-- remember = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button));
--
-- connman_client_set_passphrase(client, path, passphrase);
-- connman_client_set_remember(client, path, remember);
--
-- status_prepare();
-- connman_client_connect(client, path);
-- }
--
-- gtk_widget_destroy(dialog);
--}
--
--static void activate_callback(GtkWidget *item, gpointer user_data)
--{
-- const gchar *path = user_data;
-- guint security;
-- gchar *passphrase;
--
-- security = connman_client_get_security(client, path);
-- if (security == CONNMAN_SECURITY_UNKNOWN)
-- return;
--
-- if (security == CONNMAN_SECURITY_NONE) {
-- status_prepare();
-- connman_client_connect(client, path);
-- return;
-- }
--
-- passphrase = connman_client_get_passphrase(client, path);
-- if (passphrase != NULL) {
-- g_free(passphrase);
--
-- status_prepare();
-- connman_client_connect(client, path);
-- return;
-- }
--
-- passphrase_dialog(path, NULL);
--}
--
--static void disconnect_callback(GtkWidget *item, gpointer user_data)
--{
-- connman_client_disconnect(client, NULL);
--}
--
--static GtkWidget *create_popupmenu(void)
--{
-- GtkWidget *menu;
-- GtkWidget *item;
--
-- menu = gtk_menu_new();
--
-- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL);
-- g_signal_connect(item, "activate", G_CALLBACK(settings_callback), NULL);
-- gtk_widget_show(item);
-- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
--
-- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
-- g_signal_connect(item, "activate", G_CALLBACK(about_callback), NULL);
-- gtk_widget_show(item);
-- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
--
-- return menu;
--}
--
--static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid,
-- guint security, guint strength)
--{
-- GtkWidget *item;
-- GtkWidget *hbox;
-- GtkWidget *label;
-- GtkWidget *image;
-- GtkWidget *progress;
--
-- item = gtk_check_menu_item_new();
-- gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE);
--
-- hbox = gtk_hbox_new(FALSE, 6);
-- gtk_container_add(GTK_CONTAINER(item), hbox);
-- gtk_widget_show(hbox);
--
-- label = gtk_label_new(NULL);
-- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-- gtk_label_set_text(GTK_LABEL(label), ssid);
-- gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
-- gtk_widget_show(label);
--
-- image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION,
-- GTK_ICON_SIZE_MENU);
-- gtk_misc_set_alignment(GTK_MISC(image), 1.0, 0.5);
-- if (security != CONNMAN_SECURITY_NONE) {
-- gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
-- gtk_widget_show(image);
-- }
--
-- progress = gtk_progress_bar_new();
-- gtk_widget_set_size_request(progress, 100, -1);
-- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress),
-- (double) strength / 100);
-- gtk_box_pack_end(GTK_BOX(hbox), progress, FALSE, TRUE, 0);
-- gtk_widget_show(progress);
--
-- gtk_widget_show(item);
-- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
--
-- return item;
--}
--
--static void enumerate_networks(GtkMenu *menu,
-- GtkTreeModel *model, GtkTreeIter *parent)
--{
-- GtkTreeIter iter;
-- gboolean cont;
--
-- cont = gtk_tree_model_iter_children(model, &iter, parent);
--
-- while (cont == TRUE) {
-- GtkWidget *item;
-- DBusGProxy *proxy;
-- guint strength, security;
-- gchar *name, *path;
-- gboolean inrange, connected;
--
-- gtk_tree_model_get(model, &iter,
-- CONNMAN_COLUMN_PROXY, &proxy,
-- CONNMAN_COLUMN_NAME, &name,
-- CONNMAN_COLUMN_INRANGE, &inrange,
-- CONNMAN_COLUMN_ENABLED, &connected,
-- CONNMAN_COLUMN_STRENGTH, &strength,
-- CONNMAN_COLUMN_SECURITY, &security, -1);
--
-- if (connected == TRUE || inrange == TRUE) {
-- item = append_menuitem(menu, name, security, strength);
-- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item),
-- connected);
--
-- path = g_strdup(dbus_g_proxy_get_path(proxy));
-- g_signal_connect(item, "activate",
-- G_CALLBACK(activate_callback), path);
-- }
--
-- g_free(name);
--
-- cont = gtk_tree_model_iter_next(model, &iter);
-- }
--}
--
- static gboolean menu_callback(GtkMenu *menu)
- {
-- GtkTreeModel *model;
-- GtkTreeIter parent;
- GtkWidget *item;
-- gboolean cont;
--
-- connman_client_propose_scan(client, NULL);
--
-- model = connman_client_get_device_network_model(client);
--
-- cont = gtk_tree_model_get_iter_first(model, &parent);
--
-- while (cont == TRUE) {
-- guint type;
-- gchar *name;
--
-- gtk_tree_model_get(model, &parent,
-- CONNMAN_COLUMN_TYPE, &type,
-- CONNMAN_COLUMN_NAME, &name, -1);
--
-- switch (type) {
-- case CONNMAN_TYPE_WIFI:
-- case CONNMAN_TYPE_WIMAX:
-- enumerate_networks(menu, model, &parent);
-- break;
-- default:
-- break;
-- }
--
-- g_free(name);
--
-- cont = gtk_tree_model_iter_next(model, &parent);
-- }
--
-- g_object_unref(model);
-
- item = gtk_separator_menu_item_new();
- gtk_widget_show(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
-- item = gtk_menu_item_new_with_label(_("Disconnect Network"));
-- g_signal_connect(item, "activate",
-- G_CALLBACK(disconnect_callback), NULL);
-+ item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL);
-+ g_signal_connect(item, "activate", G_CALLBACK(settings_callback), NULL);
- gtk_widget_show(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
-- item = gtk_menu_item_new_with_label(_("Join Other Network..."));
-- gtk_widget_set_sensitive(item, FALSE);
-- //g_signal_connect(item, "activate",
-- // G_CALLBACK(join_callback), NULL);
-+ item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
-+ g_signal_connect(item, "activate", G_CALLBACK(about_callback), NULL);
- gtk_widget_show(item);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
-@@ -387,16 +129,17 @@ static void update_status(GtkTreeModel *model)
- cont = gtk_tree_model_get_iter_first(model, &iter);
-
- while (cont == TRUE) {
-- gboolean enabled;
-+ gchar *state;
-
- gtk_tree_model_get(model, &iter,
- CONNMAN_COLUMN_TYPE, &type,
- CONNMAN_COLUMN_STRENGTH, &strength,
-- CONNMAN_COLUMN_ENABLED, &enabled, -1);
-+ CONNMAN_COLUMN_STATE, &state, -1);
-
- online = TRUE;
-
-- if (enabled == TRUE)
-+ if ((type == CONNMAN_TYPE_ETHERNET && (g_str_equal(state, "idle") || g_str_equal(state, "online"))) ||
-+ (type == CONNMAN_TYPE_WIFI && (g_str_equal(state, "ready") || g_str_equal(state, "online"))))
- break;
-
- cont = gtk_tree_model_iter_next(model, &iter);
-@@ -453,7 +196,7 @@ int main(int argc, char *argv[])
-
- g_set_application_name(_("Connection Manager"));
-
-- status_init(menu_callback, create_popupmenu());
-+ status_init(menu_callback);
-
- client = connman_client_new();
- model = connman_client_get_connection_model(client);
-diff --git a/applet/status.c b/applet/status.c
-index ef11bcc..13ec752 100644
---- a/applet/status.c
-+++ b/applet/status.c
-@@ -170,19 +170,6 @@ static void activate_callback(GObject *object, gpointer user_data)
- GTK_STATUS_ICON(object), 1, activate_time);
- }
-
--static void popup_callback(GObject *object, guint button,
-- guint activate_time, gpointer user_data)
--{
-- GtkMenu *menu = user_data;
--
-- if (menu == NULL)
-- return;
--
-- gtk_menu_popup(menu, NULL, NULL,
-- gtk_status_icon_position_menu,
-- GTK_STATUS_ICON(object), button, activate_time);
--}
--
- static GtkIconTheme *icontheme;
- static IconAnimation *animation;
- static GdkPixbuf *pixbuf_notifier;
-@@ -190,7 +177,7 @@ static GdkPixbuf *pixbuf_none;
- static GdkPixbuf *pixbuf_wired;
- static GdkPixbuf *pixbuf_signal[5];
-
--int status_init(StatusCallback activate, GtkWidget *popup)
-+int status_init(StatusCallback activate)
- {
- GdkScreen *screen;
-
-@@ -219,9 +206,6 @@ int status_init(StatusCallback activate, GtkWidget *popup)
- g_signal_connect(statusicon, "activate",
- G_CALLBACK(activate_callback), activate);
-
-- g_signal_connect(statusicon, "popup-menu",
-- G_CALLBACK(popup_callback), popup);
--
- return 0;
- }
-
-@@ -292,8 +276,6 @@ void status_config(void)
-
- static void set_ready(gint signal)
- {
-- int index;
--
- available = TRUE;
-
- if (signal < 0) {
-@@ -302,12 +284,7 @@ static void set_ready(gint signal)
- return;
- }
-
-- if (signal == 0)
-- index = 0;
-- else
-- index = 3;
--
-- gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_signal[index]);
-+ gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_signal[4]);
- gtk_status_icon_set_tooltip(statusicon, NULL);
- }
-
-diff --git a/applet/status.h b/applet/status.h
-index 772a7b2..8a3c83c 100644
---- a/applet/status.h
-+++ b/applet/status.h
-@@ -21,7 +21,7 @@
-
- typedef gboolean (* StatusCallback) (GtkMenu *menu);
-
--int status_init(StatusCallback activate, GtkWidget *popup);
-+int status_init(StatusCallback activate);
- void status_cleanup(void);
-
- void status_unavailable(void);
-diff --git a/common/Makefile.am b/common/Makefile.am
-index ff3a996..8d74a46 100644
---- a/common/Makefile.am
-+++ b/common/Makefile.am
-@@ -5,13 +5,6 @@ libcommon_a_SOURCES = connman-dbus.c connman-dbus.h \
- connman-client.h connman-client.c \
- instance.h instance.c
-
--noinst_PROGRAMS = connman-demo test-client
--
--connman_demo_SOURCES = demo.c
--connman_demo_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@
--
--test_client_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@
--
- BUILT_SOURCES = marshal.h marshal.c \
- connman-dbus-glue.h \
- instance-glue.h
-diff --git a/common/connman-client.c b/common/connman-client.c
-index aad0a22..4f9cf64 100644
---- a/common/connman-client.c
-+++ b/common/connman-client.c
-@@ -98,13 +98,13 @@ static void connman_client_init(ConnmanClient *client)
-
- priv->store = gtk_tree_store_new(_CONNMAN_NUM_COLUMNS, G_TYPE_OBJECT,
- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT,
-- G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
-- G_TYPE_UINT, G_TYPE_UINT, G_TYPE_STRING,
-- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT,
-- G_TYPE_STRING);
-+ G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING,
-+ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
-+ G_TYPE_STRING, G_TYPE_STRING,
-+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
-
- g_object_set_data(G_OBJECT(priv->store),
-- "State", g_strdup("unavailable"));
-+ "State", g_strdup("unavailable"));
-
- priv->dbus = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS,
- DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
-@@ -191,13 +191,23 @@ static gboolean device_filter(GtkTreeModel *model,
- {
- DBusGProxy *proxy;
- gboolean active;
-+ guint type;
-
-- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -1);
-+ gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy,
-+ CONNMAN_COLUMN_TYPE, &type,
-+ -1);
-+
-+ switch (type) {
-+ case CONNMAN_TYPE_LABEL_ETHERNET:
-+ case CONNMAN_TYPE_LABEL_WIFI:
-+ case CONNMAN_TYPE_SYSCONFIG:
-+ return TRUE;
-+ }
-
- if (proxy == NULL)
- return FALSE;
-
-- active = g_str_equal(CONNMAN_DEVICE_INTERFACE,
-+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE,
- dbus_g_proxy_get_interface(proxy));
-
- g_object_unref(proxy);
-@@ -231,10 +241,10 @@ static gboolean device_network_filter(GtkTreeModel *model,
- if (proxy == NULL)
- return FALSE;
-
-- active = g_str_equal(CONNMAN_DEVICE_INTERFACE,
-+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE,
- dbus_g_proxy_get_interface(proxy));
- if (active == FALSE)
-- active = g_str_equal(CONNMAN_NETWORK_INTERFACE,
-+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE,
- dbus_g_proxy_get_interface(proxy));
-
- g_object_unref(proxy);
-@@ -277,7 +287,7 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client,
- gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter,
- CONNMAN_COLUMN_PROXY, &proxy, -1);
-
-- if (g_str_equal(CONNMAN_DEVICE_INTERFACE,
-+ if (g_str_equal(CONNMAN_SERVICE_INTERFACE,
- dbus_g_proxy_get_interface(proxy)) == TRUE)
- found = g_str_has_prefix(dbus_g_proxy_get_path(proxy),
- device);
-@@ -314,7 +324,7 @@ static gboolean connection_filter(GtkTreeModel *model,
- if (proxy == NULL)
- return FALSE;
-
-- active = g_str_equal(CONNMAN_CONNECTION_INTERFACE,
-+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE,
- dbus_g_proxy_get_interface(proxy));
-
- g_object_unref(proxy);
-@@ -337,28 +347,37 @@ GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client)
- return model;
- }
-
--void connman_client_set_policy(ConnmanClient *client, const gchar *device,
-- const gchar *policy)
-+gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device,
-+ struct ipv4_config *ipv4_config)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
- DBusGProxy *proxy;
- GValue value = { 0 };
-+ gboolean ret;
-+ GHashTable *ipv4 = g_hash_table_new(g_str_hash, g_str_equal);
-+
-+ g_hash_table_insert(ipv4, "Method", (gpointer)ipv4_config->method);
-+ g_hash_table_insert(ipv4, "Address", (gpointer)ipv4_config->address);
-+ g_hash_table_insert(ipv4, "Netmask", (gpointer)ipv4_config->netmask);
-+ g_hash_table_insert(ipv4, "Gateway", (gpointer)ipv4_config->gateway);
-
- DBG("client %p", client);
-
- if (device == NULL)
-- return;
-+ return FALSE;
-
- proxy = connman_dbus_get_proxy(priv->store, device);
- if (proxy == NULL)
-- return;
-+ return FALSE;
-
-- g_value_init(&value, G_TYPE_STRING);
-- g_value_set_string(&value, policy);
-+ g_value_init(&value, DBUS_TYPE_G_STRING_STRING_HASHTABLE);
-+ g_value_set_boxed(&value, ipv4);
-
-- connman_set_property(proxy, "Policy", &value, NULL);
-+ ret = connman_set_property(proxy, "IPv4.Configuration", &value, NULL);
-
- g_object_unref(proxy);
-+
-+ return ret;
- }
-
- void connman_client_set_powered(ConnmanClient *client, const gchar *device,
-@@ -385,98 +404,128 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device,
- g_object_unref(proxy);
- }
-
--static gboolean device_scan(GtkTreeModel *model, GtkTreePath *path,
-- GtkTreeIter *iter, gpointer user_data)
-+void connman_client_request_scan(ConnmanClient *client, char *scantype,
-+ connman_request_scan_reply callback, gpointer userdata)
- {
-- DBusGProxy *proxy;
-- gboolean enabled;
-+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-
-- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy,
-- CONNMAN_COLUMN_ENABLED, &enabled, -1);
-+ DBG("client %p", client);
-
-- if (proxy == NULL)
-- return FALSE;
-+ connman_request_scan_async(priv->manager, scantype, callback, userdata);
-+}
-
-- if (g_str_equal(dbus_g_proxy_get_interface(proxy),
-- CONNMAN_DEVICE_INTERFACE) == FALSE)
-- return FALSE;
-+gboolean connman_client_get_offline_status(ConnmanClient *client)
-+{
-+ GHashTable *hash;
-+ GValue *value;
-+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-+ gboolean ret;
-
-- if (enabled == FALSE)
-- return FALSE;
-+ DBG("client %p", client);
-
-- connman_propose_scan(proxy, NULL);
-+ ret = connman_get_properties(priv->manager, &hash, NULL);
-
-- g_object_unref(proxy);
-+ if (ret == FALSE)
-+ goto done;
-+
-+ value = g_hash_table_lookup(hash, "OfflineMode");
-+ ret = value ? g_value_get_boolean(value) : FALSE;
-+
-+done:
-+ return ret;
-
-- return FALSE;
- }
-
--void connman_client_propose_scan(ConnmanClient *client, const gchar *device)
-+void connman_client_set_offlinemode(ConnmanClient *client, gboolean status)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-- DBusGProxy *proxy;
-+ GValue value = { 0 };
-
- DBG("client %p", client);
-
-- if (device == NULL) {
-- gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store),
-- device_scan, NULL);
-- return;
-- }
--
-- proxy = connman_dbus_get_proxy(priv->store, device);
-- if (proxy == NULL)
-- return;
--
-- connman_propose_scan(proxy, NULL);
-+ g_value_init(&value, G_TYPE_BOOLEAN);
-+ g_value_set_boolean(&value, status);
-
-- g_object_unref(proxy);
-+ connman_set_property(priv->manager, "OfflineMode", &value, NULL);
- }
-
- static gboolean network_disconnect(GtkTreeModel *model, GtkTreePath *path,
- GtkTreeIter *iter, gpointer user_data)
- {
- DBusGProxy *proxy;
-- gboolean enabled;
-+ char *name;
-+ guint type;
-
- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy,
-- CONNMAN_COLUMN_ENABLED, &enabled, -1);
-+ CONNMAN_COLUMN_NAME, &name,
-+ CONNMAN_COLUMN_TYPE, &type,
-+ -1);
-
- if (proxy == NULL)
-- return FALSE;
-+ return TRUE;
-
- if (g_str_equal(dbus_g_proxy_get_interface(proxy),
-- CONNMAN_NETWORK_INTERFACE) == FALSE)
-- return FALSE;
-+ CONNMAN_SERVICE_INTERFACE) == FALSE)
-+ return TRUE;
-
-- if (enabled == TRUE)
-+ if (type == CONNMAN_TYPE_WIFI)
- connman_disconnect(proxy, NULL);
-
- g_object_unref(proxy);
-
-- return enabled;
-+ return FALSE;
- }
-
--void connman_client_connect(ConnmanClient *client, const gchar *network)
-+gboolean connman_client_connect(ConnmanClient *client, const gchar *network)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
- DBusGProxy *proxy;
-+ gboolean ret = FALSE;
-
- DBG("client %p", client);
-+ DBG("network %s", network);
-
- if (network == NULL)
-- return;
-+ goto done;
-
- gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store),
- network_disconnect, NULL);
-
- proxy = connman_dbus_get_proxy(priv->store, network);
- if (proxy == NULL)
-- return;
-+ goto done;
-
-- connman_connect(proxy, NULL);
-+ ret = connman_connect(proxy, NULL);
-
- g_object_unref(proxy);
-+
-+done:
-+ return ret;
-+}
-+
-+void connman_client_connect_async(ConnmanClient *client, const gchar *network,
-+ connman_connect_reply callback, gpointer userdata)
-+{
-+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-+ DBusGProxy *proxy;
-+
-+ DBG("client %p", client);
-+ DBG("network %s", network);
-+
-+ if (network == NULL)
-+ goto done;
-+
-+ gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store),
-+ network_disconnect, NULL);
-+
-+ proxy = connman_dbus_get_proxy(priv->store, network);
-+ if (proxy == NULL)
-+ goto done;
-+
-+ connman_connect_async(proxy, callback, userdata);
-+
-+done:
-+ return;
- }
-
- static void connman_client_disconnect_all(ConnmanClient *client)
-@@ -487,32 +536,37 @@ static void connman_client_disconnect_all(ConnmanClient *client)
- network_disconnect, NULL);
- }
-
--void connman_client_disconnect(ConnmanClient *client, const gchar *network)
-+gboolean connman_client_disconnect(ConnmanClient *client, const gchar *network)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
- DBusGProxy *proxy;
-+ gboolean ret = FALSE;
-
- DBG("client %p", client);
-
- if (network == NULL) {
-+ ret = TRUE;
- connman_client_disconnect_all(client);
-- return;
-+ goto done;
- }
-
- proxy = connman_dbus_get_proxy(priv->store, network);
- if (proxy == NULL)
-- return;
-+ goto done;
-
-- connman_disconnect(proxy, NULL);
-+ ret = connman_disconnect(proxy, NULL);
-
- g_object_unref(proxy);
-+
-+done:
-+ return ret;
- }
-
--guint connman_client_get_security(ConnmanClient *client, const gchar *network)
-+gchar *connman_client_get_security(ConnmanClient *client, const gchar *network)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
- GtkTreeIter iter;
-- guint security;
-+ gchar *security;
-
- DBG("client %p", client);
-
-@@ -548,41 +602,60 @@ gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network
- return passphrase;
- }
-
--void connman_client_set_passphrase(ConnmanClient *client, const gchar *network,
-+gboolean connman_client_set_passphrase(ConnmanClient *client, const gchar *network,
- const gchar *passphrase)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
- DBusGProxy *proxy;
- GValue value = { 0 };
-+ gboolean ret = FALSE;
-
- DBG("client %p", client);
-+ DBG("network %p", network);
-
- if (network == NULL)
-- return;
-+ goto done;
-
- proxy = connman_dbus_get_proxy(priv->store, network);
- if (proxy == NULL)
-- return;
-+ goto done;
-
- g_value_init(&value, G_TYPE_STRING);
- g_value_set_string(&value, passphrase);
-
-- connman_set_property(proxy, "WiFi.Passphrase", &value, NULL);
-+ ret = connman_set_property(proxy, "Passphrase", &value, NULL);
-
- g_value_unset(&value);
-
- g_object_unref(proxy);
-+done:
-+ return ret;
- }
-
--void connman_client_set_remember(ConnmanClient *client, const gchar *network,
-- gboolean remember)
-+void connman_client_set_callback(ConnmanClient *client,
-+ ConnmanClientCallback callback, gpointer user_data)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-- DBusGProxy *proxy;
-- GValue value = { 0 };
-+ gchar *state;
-
- DBG("client %p", client);
-
-+ priv->callback = callback;
-+ priv->userdata = user_data;
-+
-+ g_object_set_data(G_OBJECT(priv->store), "callback", callback);
-+ g_object_set_data(G_OBJECT(priv->store), "userdata", user_data);
-+
-+ state = g_object_get_data(G_OBJECT(priv->store), "State");
-+ if (state != NULL && priv->callback != NULL)
-+ priv->callback(state, priv->userdata);
-+}
-+
-+void connman_client_remove(ConnmanClient *client, const gchar *network)
-+{
-+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-+ DBusGProxy *proxy;
-+
- if (network == NULL)
- return;
-
-@@ -590,31 +663,46 @@ void connman_client_set_remember(ConnmanClient *client, const gchar *network,
- if (proxy == NULL)
- return;
-
-- g_value_init(&value, G_TYPE_BOOLEAN);
-- g_value_set_boolean(&value, remember);
-+ connman_remove(proxy, NULL);
-+
-+ g_object_unref(proxy);
-+}
-+
-+void connman_client_enable_technology(ConnmanClient *client, const char *network,
-+ const gchar *technology)
-+{
-+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-+ DBusGProxy *proxy;
-+ int ret;
-
-- connman_set_property(proxy, "Remember", &value, NULL);
-+ if (network== NULL)
-+ return;
-
-- g_value_unset(&value);
-+ proxy = connman_dbus_get_proxy(priv->store, network);
-+ if (proxy == NULL)
-+ return;
-+
-+ ret = connman_enable_technology(proxy, technology, NULL);
-
- g_object_unref(proxy);
- }
-
--void connman_client_set_callback(ConnmanClient *client,
-- ConnmanClientCallback callback, gpointer user_data)
-+void connman_client_disable_technology(ConnmanClient *client, const char *network,
-+ const gchar *technology)
- {
- ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client);
-- gchar *state;
-+ DBusGProxy *proxy;
-+ int ret;
-
-- DBG("client %p", client);
-
-- priv->callback = callback;
-- priv->userdata = user_data;
-+ if (network == NULL)
-+ return;
-
-- g_object_set_data(G_OBJECT(priv->store), "callback", callback);
-- g_object_set_data(G_OBJECT(priv->store), "userdata", user_data);
-+ proxy = connman_dbus_get_proxy(priv->store, network);
-+ if (proxy == NULL)
-+ return;
-
-- state = g_object_get_data(G_OBJECT(priv->store), "State");
-- if (state != NULL && priv->callback != NULL)
-- priv->callback(state, priv->userdata);
-+ ret = connman_disable_technology(proxy, technology, NULL);
-+
-+ g_object_unref(proxy);
- }
-diff --git a/common/connman-client.h b/common/connman-client.h
-index f30dae4..00c328a 100644
---- a/common/connman-client.h
-+++ b/common/connman-client.h
-@@ -23,6 +23,7 @@
- #define __CONNMAN_CLIENT_H
-
- #include <gtk/gtk.h>
-+#include "connman-dbus-glue.h"
-
- G_BEGIN_DECLS
-
-@@ -49,6 +50,13 @@ struct _ConnmanClientClass {
- GObjectClass parent_class;
- };
-
-+struct ipv4_config {
-+ const gchar *method;
-+ const gchar *address;
-+ const gchar *netmask;
-+ const gchar *gateway;
-+};
-+
- GType connman_client_get_type(void);
-
- ConnmanClient *connman_client_new(void);
-@@ -60,18 +68,20 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client,
- const gchar *device);
- GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client);
-
--void connman_client_set_policy(ConnmanClient *client, const gchar *device,
-- const gchar *policy);
- void connman_client_set_powered(ConnmanClient *client, const gchar *device,
- gboolean powered);
- void connman_client_propose_scan(ConnmanClient *client, const gchar *device);
-
--void connman_client_connect(ConnmanClient *client, const gchar *network);
--void connman_client_disconnect(ConnmanClient *client, const gchar *network);
-+gboolean connman_client_connect(ConnmanClient *client, const gchar *network);
-+
-+void connman_client_connect_async(ConnmanClient *client, const gchar *network,
-+ connman_connect_reply callback, gpointer userdata);
-
--guint connman_client_get_security(ConnmanClient *client, const gchar *network);
-+gboolean connman_client_disconnect(ConnmanClient *client, const gchar *network);
-+
-+gchar *connman_client_get_security(ConnmanClient *client, const gchar *network);
- gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network);
--void connman_client_set_passphrase(ConnmanClient *client, const gchar *network,
-+gboolean connman_client_set_passphrase(ConnmanClient *client, const gchar *network,
- const gchar *passphrase);
- void connman_client_set_remember(ConnmanClient *client, const gchar *network,
- gboolean remember);
-@@ -81,37 +91,63 @@ typedef void (* ConnmanClientCallback) (const char *status, void *user_data);
- void connman_client_set_callback(ConnmanClient *client,
- ConnmanClientCallback callback, gpointer user_data);
-
-+gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device,
-+ struct ipv4_config *ipv4_config);
-+
-+gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path,
-+ GtkTreeIter *iter);
-+void connman_client_remove(ConnmanClient *client, const gchar *network);
-+
-+void connman_client_request_scan(ConnmanClient *client, char *scantype,
-+ connman_request_scan_reply callback, gpointer userdata);
-+gboolean connman_client_get_offline_status(ConnmanClient *client);
-+void connman_client_set_offlinemode(ConnmanClient *client, gboolean status);
-+
-+void connman_client_enable_technology(ConnmanClient *client, const char *network,
-+ const gchar *technology);
-+void connman_client_disable_technology(ConnmanClient *client, const char *network,
-+ const gchar *technology);
- enum {
- CONNMAN_COLUMN_PROXY, /* G_TYPE_OBJECT */
-+ CONNMAN_COLUMN_STATE, /* G_TYPE_STRING */
- CONNMAN_COLUMN_NAME, /* G_TYPE_STRING */
-- CONNMAN_COLUMN_ICON, /* G_TYPE_STRING */
- CONNMAN_COLUMN_TYPE, /* G_TYPE_UINT */
-- CONNMAN_COLUMN_ENABLED, /* G_TYPE_BOOLEAN */
-- CONNMAN_COLUMN_INRANGE, /* G_TYPE_BOOLEAN */
-- CONNMAN_COLUMN_REMEMBER, /* G_TYPE_BOOLEAN */
-+ CONNMAN_COLUMN_ICON, /* G_TYPE_STRING */
- CONNMAN_COLUMN_STRENGTH, /* G_TYPE_UINT */
-- CONNMAN_COLUMN_SECURITY, /* G_TYPE_UINT */
-+ CONNMAN_COLUMN_SECURITY, /* G_TYPE_STRING */
- CONNMAN_COLUMN_PASSPHRASE, /* G_TYPE_STRING */
-- CONNMAN_COLUMN_NETWORK,
-- CONNMAN_COLUMN_ADDRESS,
-- CONNMAN_COLUMN_POLICY,
-- CONNMAN_COLUMN_DEVICE,
-- _CONNMAN_NUM_COLUMNS
-+
-+ CONNMAN_COLUMN_METHOD, /* G_TYPE_STRING */
-+ CONNMAN_COLUMN_ADDRESS, /* G_TYPE_STRING */
-+ CONNMAN_COLUMN_NETMASK, /* G_TYPE_STRING */
-+ CONNMAN_COLUMN_GATEWAY, /* G_TYPE_STRING */
-+
-+ CONNMAN_COLUMN_ETHERNET_ENABLED, /* G_TYPE_BOOLEAN */
-+ CONNMAN_COLUMN_WIFI_ENABLED, /* G_TYPE_BOOLEAN */
-+
-+ CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_BOOLEAN */
-+
-+ _CONNMAN_NUM_COLUMNS,
-+
- };
-
- enum {
- CONNMAN_TYPE_UNKNOWN,
-+
- CONNMAN_TYPE_ETHERNET,
- CONNMAN_TYPE_WIFI