diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.in | 50 | ||||
| -rw-r--r-- | test/nm-online.c | 8 | ||||
| -rw-r--r-- | test/nm-tool.c | 258 |
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; } |