summary refs log tree commit diff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.in50
-rw-r--r--test/nm-online.c8
-rw-r--r--test/nm-tool.c258
3 files changed, 95 insertions, 221 deletions
diff --git a/test/Makefile.in b/test/Makefile.in
index 74cabe3a..b65f1647 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -40,16 +40,11 @@ subdir = test
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/compiler_warnings.m4 \
-	$(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gtk-doc.m4 \
-	$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
-	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/introspection.m4 \
-	$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
-	$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libnl-check.m4 \
-	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
-	$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/intltool.m4 \
+	$(top_srcdir)/m4/libnl-check.m4 $(top_srcdir)/m4/libtool.m4 \
+	$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
+	$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
+	$(top_srcdir)/m4/nls.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 mkinstalldirs = $(install_sh) -d
@@ -83,7 +78,7 @@ nm_tool_DEPENDENCIES = $(top_builddir)/libnm-glib/libnm-glib.la \
 	$(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \
 	$(am__DEPENDENCIES_1)
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -116,6 +111,7 @@ ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
 ALL_LINGUAS = @ALL_LINGUAS@
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
@@ -124,6 +120,8 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
@@ -140,7 +138,6 @@ DHCLIENT_PATH = @DHCLIENT_PATH@
 DHCLIENT_VERSION = @DHCLIENT_VERSION@
 DHCPCD_PATH = @DHCPCD_PATH@
 DISABLE_DEPRECATED = @DISABLE_DEPRECATED@
-DLLTOOL = @DLLTOOL@
 DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
@@ -149,7 +146,6 @@ ECHO_T = @ECHO_T@
 EGREP = @EGREP@
 EXEEXT = @EXEEXT@
 FGREP = @FGREP@
-GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
@@ -158,8 +154,8 @@ GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GLIB_LIBS = @GLIB_LIBS@
 GMODULE_CFLAGS = @GMODULE_CFLAGS@
 GMODULE_LIBS = @GMODULE_LIBS@
+GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GMSGFMT_015 = @GMSGFMT_015@
 GNUTLS_CFLAGS = @GNUTLS_CFLAGS@
 GNUTLS_LIBS = @GNUTLS_LIBS@
 GREP = @GREP@
@@ -174,23 +170,13 @@ INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
 INTLLIBS = @INTLLIBS@
 INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_PERL = @INTLTOOL_PERL@
 INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
-INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
-INTROSPECTION_CFLAGS = @INTROSPECTION_CFLAGS@
-INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
-INTROSPECTION_GENERATE = @INTROSPECTION_GENERATE@
-INTROSPECTION_GIRDIR = @INTROSPECTION_GIRDIR@
-INTROSPECTION_LIBS = @INTROSPECTION_LIBS@
-INTROSPECTION_MAKEFILE = @INTROSPECTION_MAKEFILE@
-INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
-INTROSPECTION_TYPELIBDIR = @INTROSPECTION_TYPELIBDIR@
 IPTABLES_PATH = @IPTABLES_PATH@
-IWMX_SDK_CFLAGS = @IWMX_SDK_CFLAGS@
-IWMX_SDK_LIBS = @IWMX_SDK_LIBS@
 KERNEL_FIRMWARE_DIR = @KERNEL_FIRMWARE_DIR@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
@@ -198,8 +184,6 @@ LIBDL = @LIBDL@
 LIBGCRYPT_CFLAGS = @LIBGCRYPT_CFLAGS@
 LIBGCRYPT_CONFIG = @LIBGCRYPT_CONFIG@
 LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@
-LIBICONV = @LIBICONV@
-LIBINTL = @LIBINTL@
 LIBM = @LIBM@
 LIBNL_CFLAGS = @LIBNL_CFLAGS@
 LIBNL_LIBS = @LIBNL_LIBS@
@@ -208,15 +192,13 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
-MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
+MKINSTALLDIRS = @MKINSTALLDIRS@
 MSGFMT = @MSGFMT@
-MSGFMT_015 = @MSGFMT_015@
+MSGFMT_OPTS = @MSGFMT_OPTS@
 MSGMERGE = @MSGMERGE@
 NM = @NM@
 NMEDIT = @NMEDIT@
@@ -242,9 +224,12 @@ PKGCONFIG_PATH = @PKGCONFIG_PATH@
 PKG_CONFIG = @PKG_CONFIG@
 PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
 PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+POFILES = @POFILES@
 POLKIT_CFLAGS = @POLKIT_CFLAGS@
 POLKIT_LIBS = @POLKIT_LIBS@
 POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 PPPD_PLUGIN_DIR = @PPPD_PLUGIN_DIR@
 RANLIB = @RANLIB@
 RESOLVCONF_PATH = @RESOLVCONF_PATH@
@@ -259,13 +244,10 @@ UUID_CFLAGS = @UUID_CFLAGS@
 UUID_LIBS = @UUID_LIBS@
 VERSION = @VERSION@
 XGETTEXT = @XGETTEXT@
-XGETTEXT_015 = @XGETTEXT_015@
-XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
 abs_top_srcdir = @abs_top_srcdir@
-ac_ct_AR = @ac_ct_AR@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
 am__include = @am__include@
diff --git a/test/nm-online.c b/test/nm-online.c
index 985cc774..27bf1789 100644
--- a/test/nm-online.c
+++ b/test/nm-online.c
@@ -66,9 +66,7 @@ static DBusHandlerResult dbus_filter (DBusConnection *connection G_GNUC_UNUSED,
 	if (!dbus_message_get_args (message, NULL, DBUS_TYPE_UINT32, &state, DBUS_TYPE_INVALID))
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 
-	if (   state == NM_STATE_CONNECTED_LOCAL
-	    || state == NM_STATE_CONNECTED_SITE
-	    || state == NM_STATE_CONNECTED_GLOBAL)
+	if (state == NM_STATE_CONNECTED)
 		g_main_loop_quit (loop);
 
 	return DBUS_HANDLER_RESULT_HANDLED;
@@ -195,9 +193,7 @@ int main (int argc, char *argv[])
 
 	/* Check after we setup the filter to ensure that we cannot race. */
 	state = check_online (connection);
-	if (   state == NM_STATE_CONNECTED_LOCAL
-	    || state == NM_STATE_CONNECTED_SITE
-	    || state == NM_STATE_CONNECTED_GLOBAL)
+	if (state == NM_STATE_CONNECTED)
 		return 0;
 	if (exit_no_nm && (state != NM_STATE_CONNECTING))
 		return 1;
diff --git a/test/nm-tool.c b/test/nm-tool.c
index a4b80df0..b1178eaf 100644
--- a/test/nm-tool.c
+++ b/test/nm-tool.c
@@ -1,4 +1,3 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 /* nm-tool - information tool for NetworkManager
  *
  * Dan Williams <dcbw@redhat.com>
@@ -17,11 +16,10 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * (C) Copyright 2005 - 2011 Red Hat, Inc.
+ * (C) Copyright 2005 - 2010 Red Hat, Inc.
  * (C) Copyright 2007 Novell, Inc.
  */
 
-#include <config.h>
 #include <glib.h>
 #include <dbus/dbus.h>
 #include <dbus/dbus-glib.h>
@@ -37,11 +35,9 @@
 #include <nm-device.h>
 #include <nm-device-ethernet.h>
 #include <nm-device-wifi.h>
-#include <nm-device-modem.h>
+#include <nm-gsm-device.h>
+#include <nm-cdma-device.h>
 #include <nm-device-bt.h>
-#if WITH_WIMAX
-#include <nm-device-wimax.h>
-#endif
 #include <nm-utils.h>
 #include <nm-setting-ip4-config.h>
 #include <nm-setting-ip6-config.h>
@@ -55,7 +51,8 @@
 #define DBUS_TYPE_G_MAP_OF_MAP_OF_VARIANT   (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, DBUS_TYPE_G_MAP_OF_VARIANT))
 #define DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH    (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH))
 
-static GHashTable *connections = NULL;
+static GHashTable *user_connections = NULL;
+static GHashTable *system_connections = NULL;
 
 static gboolean
 get_nm_state (NMClient *client)
@@ -70,21 +67,19 @@ get_nm_state (NMClient *client)
 	case NM_STATE_ASLEEP:
 		state_string = "asleep";
 		break;
+
 	case NM_STATE_CONNECTING:
 		state_string = "connecting";
 		break;
-	case NM_STATE_CONNECTED_LOCAL:
-		state_string = "connected (local only)";
-		break;
-	case NM_STATE_CONNECTED_SITE:
-		state_string = "connected (site only)";
-		break;
-	case NM_STATE_CONNECTED_GLOBAL:
-		state_string = "connected (global)";
+
+	case NM_STATE_CONNECTED:
+		state_string = "connected";
 		break;
+
 	case NM_STATE_DISCONNECTED:
 		state_string = "disconnected";
 		break;
+
 	case NM_STATE_UNKNOWN:
 	default:
 		state_string = "unknown";
@@ -198,48 +193,6 @@ detail_access_point (gpointer data, gpointer user_data)
 	g_free (tmp);
 }
 
-#if WITH_WIMAX
-static const char *
-wimax_network_type_to_str (NMWimaxNspNetworkType type)
-{
-	switch (type) {
-	case NM_WIMAX_NSP_NETWORK_TYPE_HOME:
-		return "Home";
-	case NM_WIMAX_NSP_NETWORK_TYPE_PARTNER:
-		return "Partner";
-	case NM_WIMAX_NSP_NETWORK_TYPE_ROAMING_PARTNER:
-		return "Roaming";
-	default:
-		return "Unknown";
-	}
-}
-
-static void
-detail_nsp (gpointer data, gpointer user_data)
-{
-	NMWimaxNsp *nsp = NM_WIMAX_NSP (data);
-	const char *active_name = (const char *) user_data;
-	const char *name;
-	char *label;
-	char *data_str;
-	gboolean active = FALSE;
-
-	name = nm_wimax_nsp_get_name (nsp);
-
-	if (active_name)
-		active = g_strcmp0 (active_name, name) == 0;
-
-	label = g_strdup_printf ("  %s%s", active ? "*" : "", name);
-	data_str = g_strdup_printf ("%d%% (%s)",
-				    nm_wimax_nsp_get_signal_quality (nsp),
-				    wimax_network_type_to_str (nm_wimax_nsp_get_network_type (nsp)));
-
-	print_string (label, data_str);
-	g_free (label);
-	g_free (data_str);
-}
-#endif
-
 static gchar *
 ip4_address_as_string (guint32 ip)
 {
@@ -252,8 +205,8 @@ ip4_address_as_string (guint32 ip)
 	if (inet_ntop (AF_INET, &tmp_addr, buf, INET_ADDRSTRLEN)) {
 		return g_strdup (buf);
 	} else {
-		g_warning ("%s: error converting IP4 address 0x%X",
-		           __func__, ntohl (tmp_addr.s_addr));
+		nm_warning ("%s: error converting IP4 address 0x%X",
+		            __func__, ntohl (tmp_addr.s_addr));
 		return NULL;
 	}
 }
@@ -273,8 +226,8 @@ ip6_address_as_string (const struct in6_addr *ip)
 		g_string_append_printf (ip6_str, "%02X", ip->s6_addr[0]);
 		for (j = 1; j < 16; j++)
 			g_string_append_printf (ip6_str, " %02X", ip->s6_addr[j]);
-		g_warning ("%s: error converting IP6 address %s",
-		           __func__, ip6_str->str);
+		nm_warning ("%s: error converting IP6 address %s",
+		            __func__, ip6_str->str);
 		g_string_free (ip6_str, TRUE);
 		return NULL;
 	}
@@ -297,14 +250,8 @@ get_dev_state_string (NMDeviceState state)
 		return "connecting (need authentication)";
 	else if (state == NM_DEVICE_STATE_IP_CONFIG)
 		return "connecting (getting IP configuration)";
-	else if (state == NM_DEVICE_STATE_IP_CHECK)
-		return "connecting (checking IP connectivity)";
-	else if (state == NM_DEVICE_STATE_SECONDARIES)
-		return "connecting (starting dependent connections)";
 	else if (state == NM_DEVICE_STATE_ACTIVATED)
 		return "connected";
-	else if (state == NM_DEVICE_STATE_DEACTIVATING)
-		return "disconnecting";
 	else if (state == NM_DEVICE_STATE_FAILED)
 		return "connection failed";
 	return "unknown";
@@ -313,6 +260,7 @@ get_dev_state_string (NMDeviceState state)
 static NMConnection *
 get_connection_for_active (NMActiveConnection *active)
 {
+	NMConnectionScope scope;
 	const char *path;
 
 	g_return_val_if_fail (active != NULL, NULL);
@@ -320,7 +268,14 @@ get_connection_for_active (NMActiveConnection *active)
 	path = nm_active_connection_get_connection (active);
 	g_return_val_if_fail (path != NULL, NULL);
 
-	return (NMConnection *) g_hash_table_lookup (connections, path);
+	scope = nm_active_connection_get_scope (active);
+	if (scope == NM_CONNECTION_SCOPE_USER)
+		return (NMConnection *) g_hash_table_lookup (user_connections, path);
+	else if (scope == NM_CONNECTION_SCOPE_SYSTEM)
+		return (NMConnection *) g_hash_table_lookup (system_connections, path);
+
+	g_warning ("error: unknown connection scope");
+	return NULL;
 }
 
 struct cb_info {
@@ -377,22 +332,12 @@ detail_device (gpointer data, gpointer user_data)
 		print_string ("Type", "Wired");
 	else if (NM_IS_DEVICE_WIFI (device))
 		print_string ("Type", "802.11 WiFi");
-	else if (NM_IS_DEVICE_MODEM (device)) {
-		NMDeviceModemCapabilities modem_caps;
-
-		modem_caps = nm_device_modem_get_current_capabilities (NM_DEVICE_MODEM (device));
-		if (modem_caps & NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS)
-			print_string ("Type", "Mobile Broadband (GSM)");
-		else if (modem_caps & NM_DEVICE_MODEM_CAPABILITY_CDMA_EVDO)
-			print_string ("Type", "Mobile Broadband (CDMA)");
-		else
-			print_string ("Type", "Mobile Broadband (unknown)");
-	} else if (NM_IS_DEVICE_BT (device))
+	else if (NM_IS_GSM_DEVICE (device))
+		print_string ("Type", "Mobile Broadband (GSM)");
+	else if (NM_IS_CDMA_DEVICE (device))
+		print_string ("Type", "Mobile Broadband (CDMA)");
+	else if (NM_IS_DEVICE_BT (device))
 		print_string ("Type", "Bluetooth");
-#if WITH_WIMAX
-	else if (NM_IS_DEVICE_WIMAX (device))
-		print_string ("Type", "WiMAX");
-#endif
 
 	print_string ("Driver", nm_device_get_driver (device) ? nm_device_get_driver (device) : "(unknown)");
 
@@ -408,10 +353,6 @@ detail_device (gpointer data, gpointer user_data)
 		tmp = g_strdup (nm_device_ethernet_get_hw_address (NM_DEVICE_ETHERNET (device)));
 	else if (NM_IS_DEVICE_WIFI (device))
 		tmp = g_strdup (nm_device_wifi_get_hw_address (NM_DEVICE_WIFI (device)));
-#if WITH_WIMAX
-	else if (NM_IS_DEVICE_WIMAX (device))
-		tmp = g_strdup (nm_device_wimax_get_hw_address (NM_DEVICE_WIMAX (device)));
-#endif
 
 	if (tmp) {
 		print_string ("HW Address", tmp);
@@ -477,68 +418,6 @@ detail_device (gpointer data, gpointer user_data)
 			print_string ("  Carrier", "on");
 		else
 			print_string ("  Carrier", "off");
-#if WITH_WIMAX
-	} else if (NM_IS_DEVICE_WIMAX (device)) {
-		NMDeviceWimax *wimax = NM_DEVICE_WIMAX (device);
-		NMWimaxNsp *active_nsp = NULL;
-		const char *active_name = NULL;
-		const GPtrArray *nsps;
-
-		if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) {
-			guint tmp_uint;
-			gint tmp_int;
-			const char *tmp_str;
-
-			active_nsp = nm_device_wimax_get_active_nsp (wimax);
-			active_name = active_nsp ? nm_wimax_nsp_get_name (active_nsp) : NULL;
-
-			printf ("\n  Link Status\n");
-
-			tmp_uint = nm_device_wimax_get_center_frequency (wimax);
-			if (tmp_uint)
-				tmp = g_strdup_printf ("%'.1f MHz", (double) tmp_uint / 1000.0);
-			else
-				tmp = g_strdup ("(unknown)");
-			print_string ("  Center Freq.", tmp);
-			g_free (tmp);
-
-			tmp_int = nm_device_wimax_get_rssi (wimax);
-			if (tmp_int)
-				tmp = g_strdup_printf ("%d dBm", tmp_int);
-			else
-				tmp = g_strdup ("(unknown)");
-			print_string ("  RSSI", tmp);
-			g_free (tmp);
-
-			tmp_int = nm_device_wimax_get_cinr (wimax);
-			if (tmp_int)
-				tmp = g_strdup_printf ("%d dB", tmp_int);
-			else
-				tmp = g_strdup ("(unknown)");
-			print_string ("  CINR", tmp);
-			g_free (tmp);
-
-			tmp_int = nm_device_wimax_get_tx_power (wimax);
-			if (tmp_int)
-				tmp = g_strdup_printf ("%'.2f dBm", (float) tmp_int / 2.0);
-			else
-				tmp = g_strdup ("(unknown)");
-			print_string ("  TX Power", tmp);
-			g_free (tmp);
-
-			tmp_str = nm_device_wimax_get_bsid (wimax);
-			if (tmp_str)
-				print_string ("  BSID", tmp_str);
-			else
-				print_string ("  BSID", "(unknown)");
-		}
-
-		printf ("\n  WiMAX NSPs %s\n", active_nsp ? "(* current NSP)" : "");
-
-		nsps = nm_device_wimax_get_nsps (NM_DEVICE_WIMAX (device));
-		if (nsps && nsps->len)
-			g_ptr_array_foreach ((GPtrArray *) nsps, detail_nsp, (gpointer) active_name);
-#endif
 	}
 
 	/* IP Setup info */
@@ -687,10 +566,12 @@ detail_vpn (gpointer data, gpointer user_data)
 static void
 get_one_connection (DBusGConnection *bus,
                     const char *path,
+                    NMConnectionScope scope,
                     GHashTable *table)
 {
 	DBusGProxy *proxy;
 	NMConnection *connection = NULL;
+	const char *service;
 	GError *error = NULL;
 	GHashTable *settings = NULL;
 
@@ -698,8 +579,10 @@ get_one_connection (DBusGConnection *bus,
 	g_return_if_fail (path != NULL);
 	g_return_if_fail (table != NULL);
 
-	proxy = dbus_g_proxy_new_for_name (bus, NM_DBUS_SERVICE,
-	                                   path, NM_DBUS_IFACE_SETTINGS_CONNECTION);
+	service = (scope == NM_CONNECTION_SCOPE_SYSTEM) ?
+		NM_DBUS_SERVICE_SYSTEM_SETTINGS : NM_DBUS_SERVICE_USER_SETTINGS;
+
+	proxy = dbus_g_proxy_new_for_name (bus, service, path, NM_DBUS_IFACE_SETTINGS_CONNECTION);
 	if (!proxy)
 		return;
 
@@ -707,7 +590,7 @@ get_one_connection (DBusGConnection *bus,
 	                        G_TYPE_INVALID,
 	                        DBUS_TYPE_G_MAP_OF_MAP_OF_VARIANT, &settings,
 	                        G_TYPE_INVALID)) {
-		g_warning ("error: cannot retrieve connection: %s", error ? error->message : "(unknown)");
+		nm_warning ("error: cannot retrieve connection: %s", error ? error->message : "(unknown)");
 		goto out;
 	}
 
@@ -715,13 +598,14 @@ get_one_connection (DBusGConnection *bus,
 	g_hash_table_destroy (settings);
 
 	if (!connection) {
-		g_warning ("error: invalid connection: '%s' / '%s' invalid: %d",
-		           error ? g_type_name (nm_connection_lookup_setting_type_by_quark (error->domain)) : "(unknown)",
-		           error ? error->message : "(unknown)",
-		           error ? error->code : -1);
+		nm_warning ("error: invalid connection: '%s' / '%s' invalid: %d",
+		            error ? g_type_name (nm_connection_lookup_setting_type_by_quark (error->domain)) : "(unknown)",
+		            error ? error->message : "(unknown)",
+		            error ? error->code : -1);
 		goto out;
 	}
 
+	nm_connection_set_scope (connection, scope);
 	nm_connection_set_path (connection, path);
 	g_hash_table_insert (table, g_strdup (path), g_object_ref (connection));
 
@@ -732,29 +616,27 @@ out:
 	g_object_unref (proxy);
 }
 
-static gboolean
-get_all_connections (void)
+static void
+get_connections_for_service (DBusGConnection *bus,
+                             NMConnectionScope scope,
+                             GHashTable *table)
 {
 	GError *error = NULL;
-	DBusGConnection *bus;
-	DBusGProxy *proxy = NULL;
+	DBusGProxy *proxy;
 	GPtrArray *paths = NULL;
 	int i;
-	gboolean sucess = FALSE;
+	const char *service;
 
-	bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
-	if (error || !bus) {
-		g_warning ("error: could not connect to dbus");
-		goto out;
-	}
+	service = (scope == NM_CONNECTION_SCOPE_SYSTEM) ?
+		NM_DBUS_SERVICE_SYSTEM_SETTINGS : NM_DBUS_SERVICE_USER_SETTINGS;
 
 	proxy = dbus_g_proxy_new_for_name (bus,
-	                                   NM_DBUS_SERVICE,
+	                                   service,
 	                                   NM_DBUS_PATH_SETTINGS,
 	                                   NM_DBUS_IFACE_SETTINGS);
 	if (!proxy) {
-		g_warning ("error: failed to create DBus proxy for settings service");
-		goto out;
+		g_warning ("error: failed to create DBus proxy for %s", service);
+		return;
 	}
 
 	if (!dbus_g_proxy_call (proxy, "ListConnections", &error,
@@ -766,20 +648,33 @@ get_all_connections (void)
 		goto out;
 	}
 
-	connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
-
 	for (i = 0; paths && (i < paths->len); i++)
-		get_one_connection (bus, g_ptr_array_index (paths, i), connections);
-
-	sucess = TRUE;
+		get_one_connection (bus, g_ptr_array_index (paths, i), scope, table);
 
 out:
-	if (bus)
-		dbus_g_connection_unref (bus);
-	if (proxy)
-		g_object_unref (proxy);
+	g_object_unref (proxy);
+}
+
+static gboolean
+get_all_connections (void)
+{
+	DBusGConnection *bus;
+	GError *error = NULL;
+
+	bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+	if (error || !bus) {
+		g_warning ("error: could not connect to dbus");
+		return FALSE;
+	}
+
+	user_connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+	get_connections_for_service (bus, NM_CONNECTION_SCOPE_USER, user_connections);
+
+	system_connections = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+	get_connections_for_service (bus, NM_CONNECTION_SCOPE_SYSTEM, system_connections);
 
-	return sucess;
+	dbus_g_connection_unref (bus);
+	return TRUE;
 }
 
 int
@@ -818,7 +713,8 @@ main (int argc, char *argv[])
 		g_ptr_array_foreach ((GPtrArray *) info.active, detail_vpn, &info);
 
 	g_object_unref (client);
-	g_hash_table_unref (connections);
+	g_hash_table_unref (user_connections);
+	g_hash_table_unref (system_connections);
 
 	return 0;
 }