diff options
author | Michael Biebl <biebl@debian.org> | 2011-05-27 19:57:25 +0200 |
---|---|---|
committer | Michael Biebl <biebl@debian.org> | 2011-05-27 19:57:25 +0200 |
commit | d465e5fac63f36bcf4069e36827f4b62c494556d (patch) | |
tree | 65f4ba9567e091233cdf3279f7ba3c9479e74a1c | |
parent | 9f806e97a24bba61417ae312fcc0da40914266fb (diff) |
Imported Upstream version 0.8.9997upstream/0.8.9997
128 files changed, 4684 insertions, 1770 deletions
@@ -88,6 +88,11 @@ are still missing. If the wifi driver supports AP mode, then in src/supplicant-manager/ NM should send an AP-mode config instead of sending the adhoc config. +Note that some devices (airo, ipw2100, ipw2200, iwl3945, iwl4965, atmel, zd1201) +will never support AP mode due to firmware limitations, so we clearly must still +provide Ad-Hoc connection sharing support for those devices and switch between +Ad-Hoc and AP mode depending on device capabilities. + * On-Demand WiFi Scan support @@ -189,15 +194,40 @@ signals. A patch here: http://cgit.freedesktop.org/NetworkManager/NetworkManager/commit/?h=vpn-ip-method -shows that, but internally NM needs to process this request, and instead of -applying given IPv4 or IPv6 configuration (since there isn't any yet) it should -kick off a DHCP request and wait for the request to finish. When it does -finish it should apply the configuration to the interface. Most of the DHCP -code is already written, but src/vpn-manager/nm-vpn-connection.c would need -updates to recognize the new "method" property of the IP4Config signal and -handle the DHCP lifetime after that. The base NMDevice class in nm-device.c -has code for handling the DHCP lifetime, connecting to NMDHCPManager signals -for renew and failure processing, etc, and could be used as an example. +shows that. In nm-vpn-connection.c, upon receipt of the D-Bus Ip4Config signal +from the VPN plugin, NetworkManager would inspect the "method" property of the +ip4 config dictionary. If that property was present and set to "auto" then +DHCP would be started using the network interface returned in the dict. The +nm_vpn_connection_ip4_config_get() function should be split up into two +functions, one containing the existing code for static configuration, and a +second for handling DHCP kickoff. Minimal parsing of the response should be +handled in the newly reduced nm_vpn_connection_ip4_config_get() function. + +To handle DHCP, the NMVPNConnectionPrivate structure should have two members +added: + + NMDHCPManager *dhcp_manager; + NMDHCPClient *dhcp4_client; + +which would be initialized in the new DHCP handler code split off from +nm_vpn_connection_ip4_config_get(). These new members would be disposed of in +both vpn_cleanup() and dispose(), though remember to stop any ongoing DHCP +transaction when doing so (see dhcp4_cleanup() in nm-device.c for example code). +For basic code to start the DHCP transaction, see dhcp4_start() in nm-device.c +as well. After calling nm_dhcp_manager_start_ip4() and connecting the signals +to monitor success and failure, the VPN IP4 config handler would simply return +without changing VPN state, unless a failure occurred. + +Then, when the DHCP transaction succeeds, which we'd know by checking the +DHCP client state changes in the "state-changed" signal handler we attached to +the DHCP client object returned from nm_dhcp_manager_start_ip4(), the code +would retrieve the completed NMIP4Config object from the DHCP client using the +nm_dhcp_client_get_ip4_config() function, and then proceed to execute +essentially the bottom-half of the existing nm_vpn_connection_ip4_config_get() +function to merge that config with user overrides and apply it to the VPN +tunnel interface. Other state changes from the DHCP client might trigger a +failure of the VPN connection, just like DHCP timeouts and lease-renewal +failures do for other devices (see dhcp_state_changed() in nm-device.c). * WPS @@ -243,3 +273,113 @@ association using WPS, since quite a few routers out there are broken, or because the user has no physical access to the router itself, but has been given as passphrase/PSK instead. + +* Proxies + +HTTP and other proxies are per-connection configuration. It's highly unlikely +that the same proxy you need to use at work is used at home or in a coffee shop. +Thus, it makes sense that which proxy settings to use should be updated when +network connections change. NetworkManager is a perfect place to do this since +it tracks which network connections are active, and it already queries the +network for automatic proxy configuration via DHCP and WPAD. + +We should add a new NMSetting subclass called NMSettingProxy that holds +necessary proxy configuration. The properties of this setting should be a +superset of what is provided in the Firefox proxy configuration screen and the +various desktop environment proxy configuration tools like the GNOME Network +Proxy control panel; this should include at a minimum: + + method: "auto", "manual", "none" + default-proxy: string + default-proxy-port: uint + default-always: boolean (use default proxy for all protocols) + ssl-proxy: string + ssl-proxy-port: uint + ftp-proxy: string + ftp-proxy-port: uint + socks-proxy: string + socks-proxy-port: uint + socks-version: uint, either 4 or 5 + no-proxy-for: array of strings (things not to use the proxy for, ie ".foobar.com", + "192.168.0.1/24", an IPv6 address, etc) + pac-url: string (URL of PAC file, overrides DHCP-provided WPAD value) + (FIXME: proxy authentication? do we need separate user/pass properties for + each protocol type? should NM handle proxy auth or should it be punted + to each application?) + +After completing IP configuration but still during the NM_DEVICE_STATE_IP_CONFIG +activation stage, NetworkManager would merge the automatically supplied proxy +configuration (from DHCP's WPAD option) with user-provided overrides from the +NMSettingProxy and send the results to the system. The 'default' connection's +proxy configuration would be preferred, so we'd have to update proxy +configuration from nm-policy.c the same time we update DNS information and the +default route. + +The merged proxy configuration would then be sent to the system. There is no +canonical proxy daemon in-use, so we should have plugins (if not separate +shared libraries, then certainly encapsulated source files that implement a +common glib GInterface or are subclasses of eg a parent NMProxyHandler class) +that handle different system proxy handlers. Some of the proxy handlers are: + + libproxy: need to figure out how it gets proxy info and have NM write merged + proxy config out to that location + pacrunner: a D-Bus enabled daemon, NM would call D-Bus methods of the + pacrunner service with the proxy information + GNOME/KDE: how do these desktop environments retrieve proxy configuration? + + +* Bridging and Bonding Support + +The largest complication here is that NetworkManager normally operates on +physical interfaces, while bridging and bonding involve tying multiple physical +interfaces together into a logical interface. This has interesting implications +for the D-Bus API and the NM device model. The first complication is that +we may need to do 802.1x port authentication on an interface before it can +communicate with the other side of the link, and those credentials may be +different for each interface; thus we may need to do separate 802.1x +operations on each interface that is part of a bridge/bond before adding each +one to the master bridge/bond interface. + +In this way bridge/bond interfaces may be treated the same way as NetworkManager +treats VPN interfaces already; one or more physical interface NMConnections must +be activated before the master bridge/bond interface's NMConnection can be +activated, though this all happens internally. + +To enable bridging and bonding in the NMConnection itself, we should create +new NMSettingBridge and NMSettingBond classes that contain information specific +to each. Both settings would contain a 'components' property with an +'array of string' type which would contain the UUIDs of the Connections of +physical interfaces that compose the bridge or bond. Thus NetworkManager would +have the necessary information to tie lower-level interface configuration +(802.1x, MTU, MAC address locking, duplex mode, speed, etc) to each physical +interface that will be part of the bridge/bond, configure the interface with +it, and then configure the master bridge/bond interface at upper layers using +configuration specific for the bridge/bond interface (like IP details). Thus +for a single active bridge, two or more NMConnections would be activated; one +for each physical interface component of the bridge/bond, and one for the master +bridge/bond interface itself. + +NMSettingBridge would contain at least the following keys: + + components: (array of string) UUIDs of component connections + stp: (boolean) on to enable STP, off to disable + +NMSettingBond would contain at least the following keys: + + components: (array of string) UUIDs of component connections + mode: (string) one of "balance-rr", "active-backup", "balance-xor", + "broadcast", "802.3ad", "balance-tlb", or "balance-alb" + monitor-interval: (uint) Specifies link monitoring interval (in milliseconds); + NM will always enable netlink carrier monitoring if this + value is non-zero so this property only affects speed and + duplex checking + +In the future we may consider adding other bonding parameters like "up-delay" +and "down-delay". + +Then we'd add a 'component' (boolean) property to NMSettingConnection to +indicate that the component interface connections were in fact components of +a bridge or bond and shouldn't be automatically started by NetworkManager or +displayed as separate connections in the user interface. + +TO BE CONTINUED diff --git a/callouts/nm-dispatcher-utils.c b/callouts/nm-dispatcher-utils.c index 97ee1a4be..887e80dda 100644 --- a/callouts/nm-dispatcher-utils.c +++ b/callouts/nm-dispatcher-utils.c @@ -410,6 +410,12 @@ nm_dispatcher_utils_construct_envp (const char *action, if (!strcmp (action, "hostname")) return g_new0 (char *, 1); + /* Canonicalize the VPN interface name; "" is used when passing it through + * D-Bus so make sure that's fixed up here. + */ + if (vpn_ip_iface && !strlen (vpn_ip_iface)) + vpn_ip_iface = NULL; + con_setting_hash = g_hash_table_lookup (connection_hash, NM_SETTING_CONNECTION_SETTING_NAME); if (!con_setting_hash) { g_warning ("Failed to read connection setting"); @@ -437,6 +443,8 @@ nm_dispatcher_utils_construct_envp (const char *action, return NULL; } iface = g_value_get_string (value); + if (iface && !strlen (iface)) + iface = NULL; /* IP interface name */ value = g_hash_table_lookup (device_props, NMD_DEVICE_PROPS_IP_INTERFACE); diff --git a/callouts/tests/dispatcher-old-down b/callouts/tests/dispatcher-old-down index 4210921d3..6396287f7 100644 --- a/callouts/tests/dispatcher-old-down +++ b/callouts/tests/dispatcher-old-down @@ -1,6 +1,6 @@ [main] action=down -iface=wlan0 +expected-iface=wlan0 uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 id=Random Connection diff --git a/callouts/tests/dispatcher-old-up b/callouts/tests/dispatcher-old-up index ed15fef54..76e3be8de 100644 --- a/callouts/tests/dispatcher-old-up +++ b/callouts/tests/dispatcher-old-up @@ -1,6 +1,6 @@ [main] action=up -iface=wlan0 +expected-iface=wlan0 uuid=3fd2a33a-d81b-423f-ae99-e6baba742311 id=Random Connection diff --git a/callouts/tests/dispatcher-old-vpn-down b/callouts/tests/dispatcher-old-vpn-down index b45d8ea85..c11cbfd1e 100644 --- a/callouts/tests/dispatcher-old-vpn-down +++ b/callouts/tests/dispatcher-old-vpn-down @@ -1,6 +1,6 @@ [main] action=vpn-down -iface=tun0 +expected-iface=tun0 uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e id=Random Connection diff --git a/callouts/tests/dispatcher-old-vpn-up b/callouts/tests/dispatcher-old-vpn-up index f3b502def..ad47c91d5 100644 --- a/callouts/tests/dispatcher-old-vpn-up +++ b/callouts/tests/dispatcher-old-vpn-up @@ -1,6 +1,6 @@ [main] action=vpn-up -iface=tun0 +expected-iface=tun0 uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e id=Random Connection diff --git a/callouts/tests/test-dispatcher-envp.c b/callouts/tests/test-dispatcher-envp.c index b4dbd784a..34b9dbf54 100644 --- a/callouts/tests/test-dispatcher-envp.c +++ b/callouts/tests/test-dispatcher-envp.c @@ -130,18 +130,21 @@ static gboolean parse_main (GKeyFile *kf, GHashTable **out_con_hash, GHashTable **out_con_props, - char **out_iface, + char **out_expected_iface, char **out_action, + char **out_vpn_ip_iface, GError **error) { char *uuid, *id; NMConnection *connection; NMSettingConnection *s_con; - *out_iface = g_key_file_get_string (kf, "main", "iface", error); - if (*out_iface == NULL) + *out_expected_iface = g_key_file_get_string (kf, "main", "expected-iface", error); + if (*out_expected_iface == NULL) return FALSE; + *out_vpn_ip_iface = g_key_file_get_string (kf, "main", "vpn-ip-iface", NULL); + *out_action = g_key_file_get_string (kf, "main", "action", error); if (*out_action == NULL) return FALSE; @@ -413,7 +416,7 @@ get_dispatcher_file (const char *file, GHashTable **out_device_ip6_props, GHashTable **out_device_dhcp4_props, GHashTable **out_device_dhcp6_props, - const char **out_vpn_ip_iface, + char **out_vpn_ip_iface, GHashTable **out_vpn_ip4_props, GHashTable **out_vpn_ip6_props, char **out_expected_iface, @@ -429,7 +432,13 @@ get_dispatcher_file (const char *file, if (!g_key_file_load_from_file (kf, file, G_KEY_FILE_NONE, error)) return FALSE; - if (!parse_main (kf, out_con_hash, out_con_props, out_expected_iface, out_action, error)) + if (!parse_main (kf, + out_con_hash, + out_con_props, + out_expected_iface, + out_action, + out_vpn_ip_iface, + error)) goto out; if (!parse_device (kf, out_device_props, error)) @@ -474,7 +483,7 @@ out: /*******************************************/ static void -test_generic (const char *path, const char *file) +test_generic (const char *path, const char *file, const char *override_vpn_ip_iface) { GHashTable *con_hash = NULL; GHashTable *con_props = NULL; @@ -483,7 +492,7 @@ test_generic (const char *path, const char *file) GHashTable *device_ip6_props = NULL; GHashTable *device_dhcp4_props = NULL; GHashTable *device_dhcp6_props = NULL; - const char *vpn_ip_iface = NULL; + char *vpn_ip_iface = NULL; GHashTable *vpn_ip4_props = NULL; GHashTable *vpn_ip6_props = NULL; char *expected_iface = NULL; @@ -525,25 +534,31 @@ test_generic (const char *path, const char *file) device_ip6_props, device_dhcp4_props, device_dhcp6_props, - vpn_ip_iface, + override_vpn_ip_iface ? override_vpn_ip_iface : vpn_ip_iface, vpn_ip4_props, vpn_ip6_props, &out_iface); /* Print out environment for now */ - g_message ("\n"); +#ifdef DEBUG + g_message ("\n******* Generated environment:"); for (iter = denv; iter && *iter; iter++) g_message (" %s", *iter); +#endif - g_assert_cmpint (g_strv_length (denv), ==, g_hash_table_size (expected_env)); - +#ifdef DEBUG { GHashTableIter k; const char *key; + + g_message ("\n******* Expected environment:"); g_hash_table_iter_init (&k, expected_env); while (g_hash_table_iter_next (&k, (gpointer) &key, NULL)) g_message (" %s", key); } +#endif + + g_assert_cmpint (g_strv_length (denv), ==, g_hash_table_size (expected_env)); /* Compare dispatcher generated env and expected env */ for (iter = denv; iter && *iter; iter++) { @@ -556,6 +571,27 @@ test_generic (const char *path, const char *file) } g_assert_cmpstr (expected_iface, ==, out_iface); + + g_free (out_iface); + g_free (vpn_ip_iface); + g_free (expected_iface); + g_free (action); + g_hash_table_destroy (con_hash); + g_hash_table_destroy (con_props); + g_hash_table_destroy (device_props); + if (device_ip4_props) + g_hash_table_destroy (device_ip4_props); + if (device_ip6_props) + g_hash_table_destroy (device_ip6_props); + if (device_dhcp4_props) + g_hash_table_destroy (device_dhcp4_props); + if (device_dhcp6_props) + g_hash_table_destroy (device_dhcp6_props); + if (vpn_ip4_props) + g_hash_table_destroy (vpn_ip4_props); + if (vpn_ip6_props) + g_hash_table_destroy (vpn_ip6_props); + g_hash_table_destroy (expected_env); } /*******************************************/ @@ -563,25 +599,34 @@ test_generic (const char *path, const char *file) static void test_old_up (const char *path) { - test_generic (path, "dispatcher-old-up"); + test_generic (path, "dispatcher-old-up", NULL); } static void test_old_down (const char *path) { - test_generic (path, "dispatcher-old-down"); + test_generic (path, "dispatcher-old-down", NULL); } static void test_old_vpn_up (const char *path) { - test_generic (path, "dispatcher-old-vpn-up"); + test_generic (path, "dispatcher-old-vpn-up", NULL); } static void test_old_vpn_down (const char *path) { - test_generic (path, "dispatcher-old-vpn-down"); + test_generic (path, "dispatcher-old-vpn-down", NULL); +} + +static void +test_up_empty_vpn_iface (const char *path) +{ + /* Test that an empty VPN iface variable, like is passed through D-Bus + * from NM, is ignored by the dispatcher environment construction code. + */ + test_generic (path, "dispatcher-old-up", ""); } /*******************************************/ @@ -610,6 +655,8 @@ int main (int argc, char **argv) g_test_suite_add (suite, TESTCASE (test_old_vpn_up, argv[1])); g_test_suite_add (suite, TESTCASE (test_old_vpn_down, argv[1])); + g_test_suite_add (suite, TESTCASE (test_up_empty_vpn_iface, argv[1])); + return g_test_run (); } diff --git a/config.h.in b/config.h.in index d9cdcb45e..bdbd783e7 100644 --- a/config.h.in +++ b/config.h.in @@ -53,9 +53,6 @@ /* Define to 1 if you have the <paths.h> header file. */ #undef HAVE_PATHS_H -/* Define if you have a polkit with polkit_authority_get_sync() */ -#undef HAVE_POLKIT_AUTHORITY_GET_SYNC - /* Define to 1 if you have the <pppd/pppd.h> header file. */ #undef HAVE_PPPD_PPPD_H @@ -214,6 +211,9 @@ /* Version number of package */ #undef VERSION +/* Define if you have PolicyKit support */ +#undef WITH_POLKIT + /* Define if you have PPP support */ #undef WITH_PPP @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for NetworkManager 0.8.999. +# Generated by GNU Autoconf 2.68 for NetworkManager 0.8.9997. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager>. # @@ -571,8 +571,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='NetworkManager' PACKAGE_TARNAME='NetworkManager' -PACKAGE_VERSION='0.8.999' -PACKAGE_STRING='NetworkManager 0.8.999' +PACKAGE_VERSION='0.8.9997' +PACKAGE_STRING='NetworkManager 0.8.9997' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager' PACKAGE_URL='' @@ -656,6 +656,8 @@ GNUTLS_CFLAGS PKGCONFIG_PATH NSS_LIBS NSS_CFLAGS +WITH_POLKIT_FALSE +WITH_POLKIT_TRUE POLKIT_LIBS POLKIT_CFLAGS WITH_WIMAX_FALSE @@ -921,6 +923,7 @@ with_udev_dir with_systemdsystemunitdir with_ck enable_wimax +enable_polkit with_crypto with_dbus_sys_dir enable_ppp @@ -1520,7 +1523,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures NetworkManager 0.8.999 to adapt to many kinds of systems. +\`configure' configures NetworkManager 0.8.9997 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1590,7 +1593,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of NetworkManager 0.8.999:";; + short | recursive ) echo "Configuration of NetworkManager 0.8.9997:";; esac cat <<\_ACEOF @@ -1615,6 +1618,7 @@ Optional Features: Enable introspection for this build --enable-qt enable Qt examples --enable-wimax enable WiMAX support + --enable-polkit enable PolicyKit support --enable-ppp enable PPP/PPPoE support --enable-more-warnings Maximum compiler warnings --enable-gtk-doc use gtk-doc to build documentation [[default=no]] @@ -1783,7 +1787,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -NetworkManager configure 0.8.999 +NetworkManager configure 0.8.9997 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2327,7 +2331,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by NetworkManager $as_me 0.8.999, which was +It was created by NetworkManager $as_me 0.8.9997, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3148,7 +3152,7 @@ fi # Define the identity of the package. PACKAGE='NetworkManager' - VERSION='0.8.999' + VERSION='0.8.9997' cat >>confdefs.h <<_ACEOF @@ -16275,8 +16279,8 @@ fi NM_MAJOR_VERSION=0 NM_MINOR_VERSION=8 -NM_MICRO_VERSION=999 -NM_VERSION=0.8.999 +NM_MICRO_VERSION=9997 +NM_VERSION=0.8.9997 @@ -21209,12 +21213,12 @@ if test -n "$POLKIT_CFLAGS"; then pkg_cv_POLKIT_CFLAGS="$POLKIT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 + ($PKG_CONFIG --exists --print-errors "polkit-gobject-1 >= 0.97") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_POLKIT_CFLAGS=`$PKG_CONFIG --cflags "polkit-gobject-1" 2>/dev/null` + pkg_cv_POLKIT_CFLAGS=`$PKG_CONFIG --cflags "polkit-gobject-1 >= 0.97" 2>/dev/null` else pkg_failed=yes fi @@ -21225,12 +21229,12 @@ if test -n "$POLKIT_LIBS"; then pkg_cv_POLKIT_LIBS="$POLKIT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1\""; } >&5 - ($PKG_CONFIG --exists --print-errors "polkit-gobject-1") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"polkit-gobject-1 >= 0.97\""; } >&5 + ($PKG_CONFIG --exists --print-errors "polkit-gobject-1 >= 0.97") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_POLKIT_LIBS=`$PKG_CONFIG --libs "polkit-gobject-1" 2>/dev/null` + pkg_cv_POLKIT_LIBS=`$PKG_CONFIG --libs "polkit-gobject-1 >= 0.97" 2>/dev/null` else pkg_failed=yes fi @@ -21250,98 +21254,55 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - POLKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "polkit-gobject-1" 2>&1` + POLKIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "polkit-gobject-1 >= 0.97" 2>&1` else - POLKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "polkit-gobject-1" 2>&1` + POLKIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "polkit-gobject-1 >= 0.97" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$POLKIT_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (polkit-gobject-1) were not met: - -$POLKIT_PKG_ERRORS - -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. - -Alternatively, you may set the environment variables POLKIT_CFLAGS -and POLKIT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 - + have_polkit=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it -is in your PATH or set the PKG_CONFIG environment variable to the full -path to pkg-config. - -Alternatively, you may set the environment variables POLKIT_CFLAGS -and POLKIT_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. - -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details" "$LINENO" 5; } - + have_polkit=no else POLKIT_CFLAGS=$pkg_cv_POLKIT_CFLAGS POLKIT_LIBS=$pkg_cv_POLKIT_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - + have_polkit=yes +fi +# Check whether --enable-polkit was given. +if test "${enable_polkit+set}" = set; then : + enableval=$enable_polkit; enable_polkit=${enableval} +else + enable_polkit=${have_polkit} fi +if (test "${enable_polkit}" = "yes"); then + if test x"$have_polkit" = x"no"; then + as_fn_error $? "PolicyKit development headers are required" "$LINENO" 5 + fi -# Check for polkit_authority_get_sync() -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for polkit_authority_get_sync in -lpolkit-gobject-1" >&5 -$as_echo_n "checking for polkit_authority_get_sync in -lpolkit-gobject-1... " >&6; } -if ${ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpolkit-gobject-1 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char polkit_authority_get_sync (); -int -main () -{ -return polkit_authority_get_sync (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync=yes + +$as_echo "#define WITH_POLKIT 1" >>confdefs.h + else - ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS + +$as_echo "#define WITH_POLKIT 0" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync" >&5 -$as_echo "$ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync" >&6; } -if test "x$ac_cv_lib_polkit_gobject_1_polkit_authority_get_sync" = xyes; then : - ac_have_pk_auth_get_sync="1" + if test "${enable_polkit}" = "yes"; then + WITH_POLKIT_TRUE= + WITH_POLKIT_FALSE='#' else - ac_have_pk_auth_get_sync="0" + WITH_POLKIT_TRUE='#' + WITH_POLKIT_FALSE= fi -cat >>confdefs.h <<_ACEOF -#define HAVE_POLKIT_AUTHORITY_GET_SYNC $ac_have_pk_auth_get_sync -_ACEOF - - # Check whether --with-crypto was given. if test "${with_crypto+set}" = set; then : @@ -22516,6 +22477,10 @@ if test -z "${WITH_WIMAX_TRUE}" && test -z "${WITH_WIMAX_FALSE}"; then as_fn_error $? "conditional \"WITH_WIMAX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${WITH_POLKIT_TRUE}" && test -z "${WITH_POLKIT_FALSE}"; then + as_fn_error $? "conditional \"WITH_POLKIT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_NSS_TRUE}" && test -z "${WITH_NSS_FALSE}"; then as_fn_error $? "conditional \"WITH_NSS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -22961,7 +22926,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by NetworkManager $as_me 0.8.999, which was +This file was extended by NetworkManager $as_me 0.8.9997, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23027,7 +22992,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -NetworkManager config.status 0.8.999 +NetworkManager config.status 0.8.9997 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -25323,6 +25288,12 @@ else echo systemd support: no fi +if test "${enable_polkit}" = "yes"; then + echo PolicyKit support: yes +else + echo PolicyKit support: no +fi + if test -n "${with_ck}"; then echo ConsoleKit support: ${with_ck} else diff --git a/configure.ac b/configure.ac index b18ccc063..74765de35 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.63]) dnl The NM version number m4_define([nm_major_version], [0]) m4_define([nm_minor_version], [8]) -m4_define([nm_micro_version], [999]) +m4_define([nm_micro_version], [9997]) m4_define([nm_version], [nm_major_version.nm_minor_version.nm_micro_version]) @@ -337,12 +337,20 @@ else fi AM_CONDITIONAL(WITH_WIMAX, test "${enable_wimax}" = "yes") -PKG_CHECK_MODULES(POLKIT, polkit-gobject-1) -AC_SUBST(POLKIT_CFLAGS) - -# Check for polkit_authority_get_sync() -AC_CHECK_LIB([polkit-gobject-1], [polkit_authority_get_sync], ac_have_pk_auth_get_sync="1", ac_have_pk_auth_get_sync="0") -AC_DEFINE_UNQUOTED(HAVE_POLKIT_AUTHORITY_GET_SYNC, $ac_have_pk_auth_get_sync, [Define if you have a polkit with polkit_authority_get_sync()]) +PKG_CHECK_MODULES(POLKIT, [polkit-gobject-1 >= 0.97], [have_polkit=yes],[have_polkit=no]) +AC_ARG_ENABLE(polkit, AS_HELP_STRING([--enable-polkit], [enable PolicyKit support]), + [enable_polkit=${enableval}], [enable_polkit=${have_polkit}]) +if (test "${enable_polkit}" = "yes"); then + if test x"$have_polkit" = x"no"; then + AC_MSG_ERROR(PolicyKit development headers are required) + fi + AC_SUBST(POLKIT_CFLAGS) + AC_SUBST(POLKIT_LIBS) + AC_DEFINE(WITH_POLKIT, 1, [Define if you have PolicyKit support]) +else + AC_DEFINE(WITH_POLKIT, 0, [Define if you have PolicyKit support]) +fi +AM_CONDITIONAL(WITH_POLKIT, test "${enable_polkit}" = "yes") AC_ARG_WITH(crypto, AS_HELP_STRING([--with-crypto=nss | gnutls], [Cryptography library to use for certificate and key operations]),ac_crypto=$withval, ac_crypto=nss) @@ -705,6 +713,12 @@ else echo systemd support: no fi +if test "${enable_polkit}" = "yes"; then + echo PolicyKit support: yes +else + echo PolicyKit support: no +fi + if test -n "${with_ck}"; then echo ConsoleKit support: ${with_ck} else diff --git a/data/NetworkManager-wait-online.service.in b/data/NetworkManager-wait-online.service.in index 1a43d1744..0772568ff 100644 --- a/data/NetworkManager-wait-online.service.in +++ b/data/NetworkManager-wait-online.service.in @@ -1,12 +1,12 @@ [Unit] Description=Network Manager Wait Online -Requires=NetworkManager.service +After=NetworkManager.service Wants=network.target Before=network.target [Service] Type=oneshot -ExecStart=@bindir@/nm-online -q --timeout=30 +ExecStart=@bindir@/nm-online -q -x --timeout=30 [Install] -WantedBy=multi-user.target +WantedBy=network.target diff --git a/docs/api/html/NetworkManager.devhelp b/docs/api/html/NetworkManager.devhelp index 3954eb817..bf173496e 100644 --- a/docs/api/html/NetworkManager.devhelp +++ b/docs/api/html/NetworkManager.devhelp @@ -4,23 +4,23 @@ <chapters> <sub name="D-Bus API Reference" link="ref-dbus.html"/> <sub name="Network Configuration Setting Specification" link="ref-settings.html"> - <sub name="Configuration Settings" link="ref-settings.html#id642206"/> + <sub name="Configuration Settings" link="ref-settings.html#id384567"/> <sub name="Secret flag types" link="secrets-flags.html"/> </sub> <sub name="Migrating from NetworkManager 0.8 to NetworkManager 0.9" link="ref-migrating.html"> - <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id625668"> - <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id638875"/> - <sub name="User Secret Agents" link="ref-migrating.html#id620793"/> - <sub name="Settings Service Interface Changes" link="ref-migrating.html#id633331"/> - <sub name="Connection Object Interface Changes" link="ref-migrating.html#id633880"/> - <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id648331"/> - <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id654458"/> - <sub name="Support for WiMAX Devices" link="ref-migrating.html#id611268"/> - <sub name="New Device States" link="ref-migrating.html#id653428"/> - <sub name="New Active Connection State" link="ref-migrating.html#id622367"/> - <sub name="Consolidated Modem Devices" link="ref-migrating.html#id621211"/> - <sub name="Secret Property Flags" link="ref-migrating.html#id602069"/> - <sub name="Deprecated Methods Removed" link="ref-migrating.html#id617041"/> + <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id368030"> + <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id381237"/> + <sub name="User Secret Agents" link="ref-migrating.html#id363154"/> + <sub name="Settings Service Interface Changes" link="ref-migrating.html#id375692"/> + <sub name="Connection Object Interface Changes" link="ref-migrating.html#id376241"/> + <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id390693"/> + <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id396820"/> + <sub name="Support for WiMAX Devices" link="ref-migrating.html#id353630"/> + <sub name="New Device States" link="ref-migrating.html#id395790"/> + <sub name="New Active Connection State" link="ref-migrating.html#id364728"/> + <sub name="Consolidated Modem Devices" link="ref-migrating.html#id363573"/> + <sub name="Secret Property Flags" link="ref-migrating.html#id344431"/> + <sub name="Deprecated Methods Removed" link="ref-migrating.html#id359402"/> </sub> </sub> <sub name="Index" link="ix01.html"/> diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2 index 5ca2e583e..20f2b1479 100644 --- a/docs/api/html/NetworkManager.devhelp2 +++ b/docs/api/html/NetworkManager.devhelp2 @@ -4,23 +4,23 @@ <chapters> <sub name="D-Bus API Reference" link="ref-dbus.html"/> <sub name="Network Configuration Setting Specification" link="ref-settings.html"> - <sub name="Configuration Settings" link="ref-settings.html#id642206"/> + <sub name="Configuration Settings" link="ref-settings.html#id384567"/> <sub name="Secret flag types" link="secrets-flags.html"/> </sub> <sub name="Migrating from NetworkManager 0.8 to NetworkManager 0.9" link="ref-migrating.html"> - <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id625668"> - <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id638875"/> - <sub name="User Secret Agents" link="ref-migrating.html#id620793"/> - <sub name="Settings Service Interface Changes" link="ref-migrating.html#id633331"/> - <sub name="Connection Object Interface Changes" link="ref-migrating.html#id633880"/> - <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id648331"/> - <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id654458"/> - <sub name="Support for WiMAX Devices" link="ref-migrating.html#id611268"/> - <sub name="New Device States" link="ref-migrating.html#id653428"/> - <sub name="New Active Connection State" link="ref-migrating.html#id622367"/> - <sub name="Consolidated Modem Devices" link="ref-migrating.html#id621211"/> - <sub name="Secret Property Flags" link="ref-migrating.html#id602069"/> - <sub name="Deprecated Methods Removed" link="ref-migrating.html#id617041"/> + <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id368030"> + <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id381237"/> + <sub name="User Secret Agents" link="ref-migrating.html#id363154"/> + <sub name="Settings Service Interface Changes" link="ref-migrating.html#id375692"/> + <sub name="Connection Object Interface Changes" link="ref-migrating.html#id376241"/> + <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id390693"/> + <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id396820"/> + <sub name="Support for WiMAX Devices" link="ref-migrating.html#id353630"/> + <sub name="New Device States" link="ref-migrating.html#id395790"/> + <sub name="New Active Connection State" link="ref-migrating.html#id364728"/> + <sub name="Consolidated Modem Devices" link="ref-migrating.html#id363573"/> + <sub name="Secret Property Flags" link="ref-migrating.html#id344431"/> + <sub name="Deprecated Methods Removed" link="ref-migrating.html#id359402"/> </sub> </sub> <sub name="Index" link="ix01.html"/> diff --git a/docs/api/html/index.html b/docs/api/html/index.html index 392f24f2f..091a42903 100644 --- a/docs/api/html/index.html +++ b/docs/api/html/index.html @@ -22,11 +22,11 @@ <code class="email"><<a class="email" href="mailto:dcbw@redhat.com">dcbw@redhat.com</a>></code><br> </p></div></div> </div></div></div> -<div><p class="releaseinfo">Version 0.8.999 +<div><p class="releaseinfo">Version 0.8.9997 </p></div> <div><p class="copyright">Copyright © 2011 The NetworkManager Authors</p></div> <div><div class="legalnotice"> -<a name="id572086"></a><p> +<a name="id314448"></a><p> Permission is granted to copy, distribute and/or modify this document under the terms of the <em class="citetitle">GNU Free Documentation License</em>, Version 1.1 or any later @@ -61,25 +61,25 @@ <dt><span class="chapter"><a href="ref-dbus.html">D-Bus API Reference</a></span></dt> <dt><span class="chapter"><a href="ref-settings.html">Network Configuration Setting Specification</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-settings.html#id642206">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id384567">Configuration Settings</a></span></dt> <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt> </dl></dd> <dt><span class="chapter"><a href="ref-migrating.html">Migrating from NetworkManager 0.8 to NetworkManager 0.9</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-migrating.html#id625668">Architecture and D-Bus API Changes in 0.9</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id368030">Architecture and D-Bus API Changes in 0.9</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-migrating.html#id638875">Elimination of the User Settings Service</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id620793">User Secret Agents</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id633331">Settings Service Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id633880">Connection Object Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id648331">Permissions Methods Consolidation</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id654458">AddConnection Returns Object Path of New Connection</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id611268">Support for WiMAX Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id653428">New Device States</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id622367">New Active Connection State</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id621211">Consolidated Modem Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id602069">Secret Property Flags</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id617041">Deprecated Methods Removed</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id381237">Elimination of the User Settings Service</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id363154">User Secret Agents</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id375692">Settings Service Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id376241">Connection Object Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id390693">Permissions Methods Consolidation</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id396820">AddConnection Returns Object Path of New Connection</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id353630">Support for WiMAX Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id395790">New Device States</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id364728">New Active Connection State</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id363573">Consolidated Modem Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id344431">Secret Property Flags</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id359402">Deprecated Methods Removed</a></span></dt> </dl></dd> </dl></dd> <dt><span class="index"><a href="ix01.html">Index</a></span></dt> diff --git a/docs/api/html/ix01.html b/docs/api/html/ix01.html index f5efded94..1387212fa 100644 --- a/docs/api/html/ix01.html +++ b/docs/api/html/ix01.html @@ -21,7 +21,7 @@ </tr></table> <div class="index"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id601978"></a>Index</h2></div></div></div> +<a name="id344340"></a>Index</h2></div></div></div> <div class="index"></div> </div> <div class="footer"> diff --git a/docs/api/html/ref-migrating.html b/docs/api/html/ref-migrating.html index 8798b9a4c..8324e2634 100644 --- a/docs/api/html/ref-migrating.html +++ b/docs/api/html/ref-migrating.html @@ -23,20 +23,20 @@ <div class="titlepage"><div><div><h2 class="title"> <a name="ref-migrating"></a>Migrating from NetworkManager 0.8 to NetworkManager 0.9</h2></div></div></div> <div class="toc"><dl> -<dt><span class="section"><a href="ref-migrating.html#id625668">Architecture and D-Bus API Changes in 0.9</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id368030">Architecture and D-Bus API Changes in 0.9</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-migrating.html#id638875">Elimination of the User Settings Service</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id620793">User Secret Agents</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id633331">Settings Service Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id633880">Connection Object Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id648331">Permissions Methods Consolidation</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id654458">AddConnection Returns Object Path of New Connection</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id611268">Support for WiMAX Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id653428">New Device States</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id622367">New Active Connection State</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id621211">Consolidated Modem Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id602069">Secret Property Flags</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id617041">Deprecated Methods Removed</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id381237">Elimination of the User Settings Service</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id363154">User Secret Agents</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id375692">Settings Service Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id376241">Connection Object Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id390693">Permissions Methods Consolidation</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id396820">AddConnection Returns Object Path of New Connection</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id353630">Support for WiMAX Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id395790">New Device States</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id364728">New Active Connection State</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id363573">Consolidated Modem Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id344431">Secret Property Flags</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id359402">Deprecated Methods Removed</a></span></dt> </dl></dd> </dl></div> <p> @@ -50,14 +50,14 @@ </p> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id625668"></a>Architecture and D-Bus API Changes in 0.9</h2></div></div></div> +<a name="id368030"></a>Architecture and D-Bus API Changes in 0.9</h2></div></div></div> <p> This section details the architectural and D-Bus API changes in NetworkManager 0.9. </p> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id638875"></a>Elimination of the User Settings Service</h3></div></div></div> +<a name="id381237"></a>Elimination of the User Settings Service</h3></div></div></div> <p> Previously there were two "settings services", or D-Bus services that provided and saved network configuration information. NetworkManager @@ -103,7 +103,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id620793"></a>User Secret Agents</h3></div></div></div> +<a name="id363154"></a>User Secret Agents</h3></div></div></div> <p> Even with the elimination of the user settings service, in some cases it is still desirable to store secrets in the user's session and not in @@ -152,7 +152,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id633331"></a>Settings Service Interface Changes</h3></div></div></div> +<a name="id375692"></a>Settings Service Interface Changes</h3></div></div></div> <p> With the elimination of the user settings service, the old <code class="literal">org.freedesktop.NetworkManagerUserSettings</code> and @@ -188,7 +188,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id633880"></a>Connection Object Interface Changes</h3></div></div></div> +<a name="id376241"></a>Connection Object Interface Changes</h3></div></div></div> <p> Consistent with the interface changes to the Settings object, the Connection object's D-Bus interface has changed to @@ -222,7 +222,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id648331"></a>Permissions Methods Consolidation</h3></div></div></div> +<a name="id390693"></a>Permissions Methods Consolidation</h3></div></div></div> <p> Previously there were two D-Bus method calls to retrieve the list of operations that a user client could perform, and two signals notifying @@ -254,7 +254,7 @@ are now string-based permissions. The mapping is as follows: </p> <div class="table"> -<a name="id643012"></a><p class="title"><b>Table 17. </b></p> +<a name="id385374"></a><p class="title"><b>Table 17. </b></p> <div class="table-contents"><table border="1"> <colgroup> <col> @@ -305,7 +305,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id654458"></a>AddConnection Returns Object Path of New Connection</h3></div></div></div> +<a name="id396820"></a>AddConnection Returns Object Path of New Connection</h3></div></div></div> <p> The <a class="ulink" href="spec.html#org.freedesktop.NetworkManager.Settings" target="_top"> <code class="literal">org.freedesktop.NetworkManager.Settings.AddConnection</code> @@ -323,7 +323,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id611268"></a>Support for WiMAX Devices</h3></div></div></div> +<a name="id353630"></a>Support for WiMAX Devices</h3></div></div></div> <p> NetworkManager now supports Intel WiMAX mobile broadband devices. A corresponding device type (<code class="literal">NM_DEVICE_TYPE_WIMAX</code>) and @@ -346,7 +346,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id653428"></a>New Device States</h3></div></div></div> +<a name="id395790"></a>New Device States</h3></div></div></div> <p> A few <a class="ulink" href="spec.html#type-NM_DEVICE_STATE" target="_top">new device states</a> have been added, and all device states have been renumbered for flexibility. @@ -361,7 +361,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id622367"></a>New Active Connection State</h3></div></div></div> +<a name="id364728"></a>New Active Connection State</h3></div></div></div> <p> Along with the new device states, an <a class="ulink" href="spec.html#type-NM_ACTIVE_CONNECTION_STATE" target="_top">additional @@ -377,7 +377,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id621211"></a>Consolidated Modem Devices</h3></div></div></div> +<a name="id363573"></a>Consolidated Modem Devices</h3></div></div></div> <p> Many new mobile broadband devices support multiple access families, like Qualcomm Gobi cards (CDMA/EVDO and GSM/UMTS), or multi-mode EVDO/LTE @@ -413,7 +413,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id602069"></a>Secret Property Flags</h3></div></div></div> +<a name="id344431"></a>Secret Property Flags</h3></div></div></div> <p> In the Connection object's configuration properties, each setting's secret properties (like WiFi passphrases, or public key passwords, etc) now has @@ -422,7 +422,7 @@ following values: </p> <div class="table"> -<a name="id602078"></a><p class="title"><b>Table 18. </b></p> +<a name="id344439"></a><p class="title"><b>Table 18. </b></p> <div class="table-contents"><table border="1"> <colgroup> <col> @@ -484,7 +484,7 @@ </div> <div class="section"> <div class="titlepage"><div><div><h3 class="title"> -<a name="id617041"></a>Deprecated Methods Removed</h3></div></div></div> +<a name="id359402"></a>Deprecated Methods Removed</h3></div></div></div> <p> A few methods and signals of the <code class="literal">org.freedesktop.NetworkManager</code> interface deprecated in version 0.7 have been removed. All the @@ -494,7 +494,7 @@ their replacements: </p> <div class="table"> -<a name="id617055"></a><p class="title"><b>Table 19. </b></p> +<a name="id359416"></a><p class="title"><b>Table 19. </b></p> <div class="table-contents"><table border="1"> <colgroup> <col> diff --git a/docs/api/html/ref-settings.html b/docs/api/html/ref-settings.html index 7924bbce4..6f947c7d6 100644 --- a/docs/api/html/ref-settings.html +++ b/docs/api/html/ref-settings.html @@ -23,7 +23,7 @@ <div class="titlepage"><div><div><h2 class="title"> <a name="ref-settings"></a>Network Configuration Setting Specification</h2></div></div></div> <div class="toc"><dl> -<dt><span class="section"><a href="ref-settings.html#id642206">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id384567">Configuration Settings</a></span></dt> <dt><span class="section"><a href="secrets-flags.html">Secret flag types</a></span></dt> </dl></div> <p> @@ -35,11 +35,11 @@ </p> <div class="section"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id642206"></a>Configuration Settings</h2></div></div></div> +<a name="id384567"></a>Configuration Settings</h2></div></div></div> <p> </p> <div class="table"> -<a name="id642214"></a><p class="title"><b>Table 1. 802-1x setting</b></p> +<a name="id384575"></a><p class="title"><b>Table 1. 802-1x setting</b></p> <div class="table-contents"><table summary="802-1x setting" border="1"> <colgroup> <col> @@ -204,7 +204,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id629228"></a><p class="title"><b>Table 2. bluetooth setting</b></p> +<a name="id371590"></a><p class="title"><b>Table 2. bluetooth setting</b></p> <div class="table-contents"><table summary="bluetooth setting" border="1"> <colgroup> <col> @@ -243,7 +243,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id629361"></a><p class="title"><b>Table 3. cdma setting</b></p> +<a name="id371722"></a><p class="title"><b>Table 3. cdma setting</b></p> <div class="table-contents"><table summary="cdma setting" border="1"> <colgroup> <col> @@ -294,7 +294,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id629559"></a><p class="title"><b>Table 4. connection setting</b></p> +<a name="id371921"></a><p class="title"><b>Table 4. connection setting</b></p> <div class="table-contents"><table summary="connection setting" border="1"> <colgroup> <col> @@ -363,7 +363,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id629860"></a><p class="title"><b>Table 5. gsm setting</b></p> +<a name="id372222"></a><p class="title"><b>Table 5. gsm setting</b></p> <div class="table-contents"><table summary="gsm setting" border="1"> <colgroup> <col> @@ -456,7 +456,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id630285"></a><p class="title"><b>Table 6. ipv4 setting</b></p> +<a name="id372646"></a><p class="title"><b>Table 6. ipv4 setting</b></p> <div class="table-contents"><table summary="ipv4 setting" border="1"> <colgroup> <col> @@ -555,7 +555,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id659187"></a><p class="title"><b>Table 7. ipv6 setting</b></p> +<a name="id401548"></a><p class="title"><b>Table 7. ipv6 setting</b></p> <div class="table-contents"><table summary="ipv6 setting" border="1"> <colgroup> <col> @@ -636,7 +636,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id659505"></a><p class="title"><b>Table 8. 802-11-olpc-mesh setting</b></p> +<a name="id401866"></a><p class="title"><b>Table 8. 802-11-olpc-mesh setting</b></p> <div class="table-contents"><table summary="802-11-olpc-mesh setting" border="1"> <colgroup> <col> @@ -681,7 +681,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id659643"></a><p class="title"><b>Table 9. ppp setting</b></p> +<a name="id402005"></a><p class="title"><b>Table 9. ppp setting</b></p> <div class="table-contents"><table summary="ppp setting" border="1"> <colgroup> <col> @@ -816,7 +816,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id660173"></a><p class="title"><b>Table 10. pppoe setting</b></p> +<a name="id402535"></a><p class="title"><b>Table 10. pppoe setting</b></p> <div class="table-contents"><table summary="pppoe setting" border="1"> <colgroup> <col> @@ -867,7 +867,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id660338"></a><p class="title"><b>Table 11. serial setting</b></p> +<a name="id402700"></a><p class="title"><b>Table 11. serial setting</b></p> <div class="table-contents"><table summary="serial setting" border="1"> <colgroup> <col> @@ -924,7 +924,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id660529"></a><p class="title"><b>Table 12. vpn setting</b></p> +<a name="id402891"></a><p class="title"><b>Table 12. vpn setting</b></p> <div class="table-contents"><table summary="vpn setting" border="1"> <colgroup> <col> @@ -975,7 +975,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id660695"></a><p class="title"><b>Table 13. wimax setting</b></p> +<a name="id403056"></a><p class="title"><b>Table 13. wimax setting</b></p> <div class="table-contents"><table summary="wimax setting" border="1"> <colgroup> <col> @@ -1014,7 +1014,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id660819"></a><p class="title"><b>Table 14. 802-3-ethernet setting</b></p> +<a name="id403181"></a><p class="title"><b>Table 14. 802-3-ethernet setting</b></p> <div class="table-contents"><table summary="802-3-ethernet setting" border="1"> <colgroup> <col> @@ -1101,7 +1101,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id661226"></a><p class="title"><b>Table 15. 802-11-wireless setting</b></p> +<a name="id403587"></a><p class="title"><b>Table 15. 802-11-wireless setting</b></p> <div class="table-contents"><table summary="802-11-wireless setting" border="1"> <colgroup> <col> @@ -1200,7 +1200,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id661703"></a><p class="title"><b>Table 16. 802-11-wireless-security setting</b></p> +<a name="id404064"></a><p class="title"><b>Table 16. 802-11-wireless-security setting</b></p> <div class="table-contents"><table summary="802-11-wireless-security setting" border="1"> <colgroup> <col> diff --git a/docs/api/html/spec.html b/docs/api/html/spec.html index 5bb127d43..4533e7863 100644 --- a/docs/api/html/spec.html +++ b/docs/api/html/spec.html @@ -258,7 +258,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ related to that domain. Available domains are: [NONE, HW, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, USER_SET, SYS_SET, SUSPEND, CORE, - DEVICE, OLPC] + DEVICE, OLPC]. If an empty string is given, the log level is changed + but the current set of log domains remains unchanged. </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.state" id="org.freedesktop.NetworkManager.state">state</a> ( ) → @@ -476,6 +477,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ (<a xmlns="" href="#type-NM_DEVICE_STATE">NM_DEVICE_STATE</a>) </dt><dd> The current state of the device. + </dd><dt><code>ActiveConnection</code> - + <code>o</code> - + <code>(read)</code></dt><dd> + Object path of an ActiveConnection object that "owns" this device during + activation. The ActiveConnection object tracks the life-cycle of a + connection to a specific network and implements the + org.freedesktop.NetworkManager.Connection.Active D-Bus interface. </dd><dt><code>Ip4Config</code> - <code>o</code> - <code>(read)</code></dt><dd> @@ -1093,7 +1101,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </div></div><p>Interface has no properties.</p> - <h1><a name="org.freedesktop.NetworkManager.Connection.Active" id="org.freedesktop.NetworkManager.Connection.Active"></a>org.freedesktop.NetworkManager.Connection.Active</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged" id="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged">PropertiesChanged</a> ( + <h1><a name="org.freedesktop.NetworkManager.Connection.Active" id="org.freedesktop.NetworkManager.Connection.Active"></a>org.freedesktop.NetworkManager.Connection.Active</h1> + Objects that implement the Connection.Active interface represent an attempt + to connect to a network using the details provided by a Connection object. + The Connection.Active object tracks the life-cycle of the connection + attempt and if successful indicates whether the connected network is the + "default" or preferred network for access. + <p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged" id="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged">PropertiesChanged</a> ( a{sv}: properties )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> - <code>a{sv}</code> diff --git a/docs/api/spec.html b/docs/api/spec.html index 5bb127d43..4533e7863 100644 --- a/docs/api/spec.html +++ b/docs/api/spec.html @@ -258,7 +258,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ related to that domain. Available domains are: [NONE, HW, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, USER_SET, SYS_SET, SUSPEND, CORE, - DEVICE, OLPC] + DEVICE, OLPC]. If an empty string is given, the log level is changed + but the current set of log domains remains unchanged. </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.state" id="org.freedesktop.NetworkManager.state">state</a> ( ) → @@ -476,6 +477,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ (<a xmlns="" href="#type-NM_DEVICE_STATE">NM_DEVICE_STATE</a>) </dt><dd> The current state of the device. + </dd><dt><code>ActiveConnection</code> - + <code>o</code> - + <code>(read)</code></dt><dd> + Object path of an ActiveConnection object that "owns" this device during + activation. The ActiveConnection object tracks the life-cycle of a + connection to a specific network and implements the + org.freedesktop.NetworkManager.Connection.Active D-Bus interface. </dd><dt><code>Ip4Config</code> - <code>o</code> - <code>(read)</code></dt><dd> @@ -1093,7 +1101,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </div></div><p>Interface has no properties.</p> - <h1><a name="org.freedesktop.NetworkManager.Connection.Active" id="org.freedesktop.NetworkManager.Connection.Active"></a>org.freedesktop.NetworkManager.Connection.Active</h1><p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged" id="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged">PropertiesChanged</a> ( + <h1><a name="org.freedesktop.NetworkManager.Connection.Active" id="org.freedesktop.NetworkManager.Connection.Active"></a>org.freedesktop.NetworkManager.Connection.Active</h1> + Objects that implement the Connection.Active interface represent an attempt + to connect to a network using the details provided by a Connection object. + The Connection.Active object tracks the life-cycle of the connection + attempt and if successful indicates whether the connected network is the + "default" or preferred network for access. + <p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged" id="org.freedesktop.NetworkManager.Connection.Active.PropertiesChanged">PropertiesChanged</a> ( a{sv}: properties )</h3><div class="docstring"></div><div><h4>Parameters</h4><dl><dt><code>properties</code> - <code>a{sv}</code> diff --git a/docs/api/version.xml b/docs/api/version.xml index b81eb02c3..020982195 100644 --- a/docs/api/version.xml +++ b/docs/api/version.xml @@ -1 +1 @@ -0.8.999 +0.8.9997 diff --git a/docs/libnm-glib/html/NMAccessPoint.html b/docs/libnm-glib/html/NMAccessPoint.html index 08cf78e84..6124f9bb3 100644 --- a/docs/libnm-glib/html/NMAccessPoint.html +++ b/docs/libnm-glib/html/NMAccessPoint.html @@ -68,7 +68,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="N (<em class="parameter"><code><a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="type">NMAccessPoint</span></a> *ap</code></em>, <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *connections</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMAccessPoint.html#nm-access-point-connection-valid" title="nm_access_point_connection_valid ()">nm_access_point_connection_valid</a> (<em class="parameter"><code><a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="type">NMAccessPoint</span></a> *ap</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>); + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>); const <span class="returnvalue">char</span> * <a class="link" href="NMAccessPoint.html#nm-access-point-get-hw-address" title="nm_access_point_get_hw_address ()">nm_access_point_get_hw_address</a> (<em class="parameter"><code><a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="type">NMAccessPoint</span></a> *ap</code></em>); </pre> </div> @@ -457,13 +457,13 @@ other attributes like security settings, channel, etc. <tr> <td><p><span class="term"><em class="parameter"><code>connections</code></em> :</span></p></td> <td>a list of -<span class="type">NMConnection</span> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> +<a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td>a -list of <span class="type">NMConnection</span> objects that could be activated with the given <em class="parameter"><code>ap</code></em>. +list of <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects that could be activated with the given <em class="parameter"><code>ap</code></em>. The elements of the list are owned by their creator and should not be freed by the caller, but the returned list itself is owned by the caller and should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#g-slist-free"><code class="function">g_slist_free()</code></a> when it is no longer required. <span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> @@ -476,7 +476,7 @@ be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly- <div class="refsect2"> <a name="nm-access-point-connection-valid"></a><h3>nm_access_point_connection_valid ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_access_point_connection_valid (<em class="parameter"><code><a class="link" href="NMAccessPoint.html" title="NMAccessPoint"><span class="type">NMAccessPoint</span></a> *ap</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>);</pre> + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> <p> </p> </div> diff --git a/docs/libnm-glib/html/NMActiveConnection.html b/docs/libnm-glib/html/NMActiveConnection.html index 7f597bfe2..f8548683b 100644 --- a/docs/libnm-glib/html/NMActiveConnection.html +++ b/docs/libnm-glib/html/NMActiveConnection.html @@ -202,7 +202,7 @@ Creates a new <a class="link" href="NMActiveConnection.html" title="NMActiveConn <a name="nm-active-connection-get-connection"></a><h3>nm_active_connection_get_connection ()</h3> <pre class="programlisting">const <span class="returnvalue">char</span> * nm_active_connection_get_connection (<em class="parameter"><code><a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a> *connection</code></em>);</pre> <p> -Gets the <span class="type">NMConnection</span>'s DBus object path. +Gets the <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a>'s DBus object path. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> @@ -214,7 +214,7 @@ Gets the <span class="type">NMConnection</span>'s DBus object path. </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> -<td>the object path of the <span class="type">NMConnection</span> inside of <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>. +<td>the object path of the <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> inside of <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>. This is the internal string used by the connection, and must not be modified.</td> </tr> </tbody> @@ -225,7 +225,7 @@ This is the internal string used by the connection, and must not be modified.</t <a name="nm-active-connection-get-uuid"></a><h3>nm_active_connection_get_uuid ()</h3> <pre class="programlisting">const <span class="returnvalue">char</span> * nm_active_connection_get_uuid (<em class="parameter"><code><a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a> *connection</code></em>);</pre> <p> -Gets the <span class="type">NMConnection</span>'s UUID. +Gets the <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a>'s UUID. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> @@ -237,7 +237,7 @@ Gets the <span class="type">NMConnection</span>'s UUID. </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> -<td>the UUID of the <span class="type">NMConnection</span> that backs the <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>. +<td>the UUID of the <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> that backs the <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>. This is the internal string used by the connection, and must not be modified.</td> </tr> </tbody> diff --git a/docs/libnm-glib/html/NMClient.html b/docs/libnm-glib/html/NMClient.html index b8834f84e..26d99de00 100644 --- a/docs/libnm-glib/html/NMClient.html +++ b/docs/libnm-glib/html/NMClient.html @@ -67,7 +67,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays. <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <span class="returnvalue">void</span> <a class="link" href="NMClient.html#nm-client-activate-connection" title="nm_client_activate_connection ()">nm_client_activate_connection</a> (<em class="parameter"><code><a class="link" href="NMClient.html" title="NMClient"><span class="type">NMClient</span></a> *client</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, <em class="parameter"><code>const <span class="type">char</span> *specific_object</code></em>, <em class="parameter"><code><a class="link" href="NMClient.html#NMClientActivateFn" title="NMClientActivateFn ()"><span class="type">NMClientActivateFn</span></a> callback</code></em>, @@ -79,7 +79,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays. <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <span class="returnvalue">void</span> <a class="link" href="NMClient.html#nm-client-add-and-activate-connection" title="nm_client_add_and_activate_connection ()">nm_client_add_and_activate_connection</a> (<em class="parameter"><code><a class="link" href="NMClient.html" title="NMClient"><span class="type">NMClient</span></a> *client</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *partial</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *partial</code></em>, <em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, <em class="parameter"><code>const <span class="type">char</span> *specific_object</code></em>, <em class="parameter"><code><a class="link" href="NMClient.html#NMClientAddActivateFn" title="NMClientAddActivateFn ()"><span class="type">NMClientAddActivateFn</span></a> callback</code></em>, @@ -390,7 +390,7 @@ Gets a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type"> <div class="refsect2"> <a name="nm-client-activate-connection"></a><h3>nm_client_activate_connection ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> nm_client_activate_connection (<em class="parameter"><code><a class="link" href="NMClient.html" title="NMClient"><span class="type">NMClient</span></a> *client</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, <em class="parameter"><code>const <span class="type">char</span> *specific_object</code></em>, <em class="parameter"><code><a class="link" href="NMClient.html#NMClientActivateFn" title="NMClientActivateFn ()"><span class="type">NMClientActivateFn</span></a> callback</code></em>, @@ -414,7 +414,7 @@ determine which network to connect to given the settings in <em class="parameter </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>an <span class="type">NMConnection</span> +<td>an <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> </td> </tr> <tr> @@ -462,7 +462,7 @@ details of the newly added connection. <span class="annotation">[<acronym title= <a name="nm-client-add-and-activate-connection"></a><h3>nm_client_add_and_activate_connection ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> nm_client_add_and_activate_connection (<em class="parameter"><code><a class="link" href="NMClient.html" title="NMClient"><span class="type">NMClient</span></a> *client</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *partial</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *partial</code></em>, <em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, <em class="parameter"><code>const <span class="type">char</span> *specific_object</code></em>, <em class="parameter"><code><a class="link" href="NMClient.html#NMClientAddActivateFn" title="NMClientAddActivateFn ()"><span class="type">NMClientAddActivateFn</span></a> callback</code></em>, @@ -483,7 +483,7 @@ Cannot be used for VPN connections at this time. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>partial</code></em> :</span></p></td> -<td>an <span class="type">NMConnection</span> to add; the connection may be +<td>an <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> to add; the connection may be partially filled (or even NULL) and will be completed by NetworkManager using the given <em class="parameter"><code>device</code></em> and <em class="parameter"><code>specific_object</code></em> before being added. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span> </td> diff --git a/docs/libnm-glib/html/NMDevice.html b/docs/libnm-glib/html/NMDevice.html index 3af508c4f..f7f01aa2a 100644 --- a/docs/libnm-glib/html/NMDevice.html +++ b/docs/libnm-glib/html/NMDevice.html @@ -56,6 +56,7 @@ #define <a class="link" href="NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS" title="NM_DEVICE_IP6_CONFIG">NM_DEVICE_IP6_CONFIG</a> #define <a class="link" href="NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS" title="NM_DEVICE_DHCP6_CONFIG">NM_DEVICE_DHCP6_CONFIG</a> #define <a class="link" href="NMDevice.html#NM-DEVICE-STATE:CAPS" title="NM_DEVICE_STATE">NM_DEVICE_STATE</a> +#define <a class="link" href="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS" title="NM_DEVICE_ACTIVE_CONNECTION">NM_DEVICE_ACTIVE_CONNECTION</a> #define <a class="link" href="NMDevice.html#NM-DEVICE-VENDOR:CAPS" title="NM_DEVICE_VENDOR">NM_DEVICE_VENDOR</a> #define <a class="link" href="NMDevice.html#NM-DEVICE-PRODUCT:CAPS" title="NM_DEVICE_PRODUCT">NM_DEVICE_PRODUCT</a> <a class="link" href="NMDevice.html#NMDevice-struct" title="NMDevice">NMDevice</a>; @@ -75,6 +76,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMD <a class="link" href="NMIP6Config.html" title="NMIP6Config"><span class="returnvalue">NMIP6Config</span></a> * <a class="link" href="NMDevice.html#nm-device-get-ip6-config" title="nm_device_get_ip6_config ()">nm_device_get_ip6_config</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); <a class="link" href="NMDHCP6Config.html" title="NMDHCP6Config"><span class="returnvalue">NMDHCP6Config</span></a> * <a class="link" href="NMDevice.html#nm-device-get-dhcp6-config" title="nm_device_get_dhcp6_config ()">nm_device_get_dhcp6_config</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); <span class="returnvalue">NMDeviceState</span> <a class="link" href="NMDevice.html#nm-device-get-state" title="nm_device_get_state ()">nm_device_get_state</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); +<a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="returnvalue">NMActiveConnection</span></a> * <a class="link" href="NMDevice.html#nm-device-get-active-connection" title="nm_device_get_active_connection ()">nm_device_get_active_connection</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); const <span class="returnvalue">char</span> * <a class="link" href="NMDevice.html#nm-device-get-product" title="nm_device_get_product ()">nm_device_get_product</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); const <span class="returnvalue">char</span> * <a class="link" href="NMDevice.html#nm-device-get-vendor" title="nm_device_get_vendor ()">nm_device_get_vendor</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>); <span class="returnvalue">void</span> (<a class="link" href="NMDevice.html#NMDeviceDeactivateFn" title="NMDeviceDeactivateFn ()">*NMDeviceDeactivateFn</a>) (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, @@ -86,7 +88,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMD <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="returnvalue">GSList</span></a> * <a class="link" href="NMDevice.html#nm-device-filter-connections" title="nm_device_filter_connections ()">nm_device_filter_connections</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *connections</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMDevice.html#nm-device-connection-valid" title="nm_device_connection_valid ()">nm_device_connection_valid</a> (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>); + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>); </pre> </div> <div class="refsect1"> @@ -105,6 +107,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMD <div class="refsect1"> <a name="NMDevice.properties"></a><h2>Properties</h2> <pre class="synopsis"> + "<a class="link" href="NMDevice.html#NMDevice--active-connection" title='The "active-connection" property'>active-connection</a>" <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>* : Read "<a class="link" href="NMDevice.html#NMDevice--capabilities" title='The "capabilities" property'>capabilities</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read "<a class="link" href="NMDevice.html#NMDevice--device-type" title='The "device-type" property'>device-type</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read / Write / Construct Only "<a class="link" href="NMDevice.html#NMDevice--dhcp4-config" title='The "dhcp4-config" property'>dhcp4-config</a>" <a class="link" href="NMDHCP4Config.html" title="NMDHCP4Config"><span class="type">NMDHCP4Config</span></a>* : Read @@ -240,6 +243,14 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMD </div> <hr> <div class="refsect2"> +<a name="NM-DEVICE-ACTIVE-CONNECTION:CAPS"></a><h3>NM_DEVICE_ACTIVE_CONNECTION</h3> +<pre class="programlisting">#define NM_DEVICE_ACTIVE_CONNECTION "active-connection" +</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> <a name="NM-DEVICE-VENDOR:CAPS"></a><h3>NM_DEVICE_VENDOR</h3> <pre class="programlisting">#define NM_DEVICE_VENDOR "vendor" </pre> @@ -620,6 +631,29 @@ Gets the current <a class="link" href="NMDevice.html" title="NMDevice"><span cla </div> <hr> <div class="refsect2"> +<a name="nm-device-get-active-connection"></a><h3>nm_device_get_active_connection ()</h3> +<pre class="programlisting"><a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="returnvalue">NMActiveConnection</span></a> * nm_device_get_active_connection (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre> +<p> +Gets the <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a> object which owns this device during activation. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>device</code></em> :</span></p></td> +<td>a <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> <a name="nm-device-get-product"></a><h3>nm_device_get_product ()</h3> <pre class="programlisting">const <span class="returnvalue">char</span> * nm_device_get_product (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>);</pre> <p> @@ -728,13 +762,13 @@ incompatible with the device. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connections</code></em> :</span></p></td> -<td>a list of <span class="type">NMConnection</span> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> +<td>a list of <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td>a -list of <span class="type">NMConnection</span> objects that could be activated with the given <em class="parameter"><code>device</code></em>. +list of <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects that could be activated with the given <em class="parameter"><code>device</code></em>. The elements of the list are owned by their creator and should not be freed by the caller, but the returned list itself is owned by the caller and should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#g-slist-free"><code class="function">g_slist_free()</code></a> when it is no longer required. <span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> @@ -747,7 +781,7 @@ be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly- <div class="refsect2"> <a name="nm-device-connection-valid"></a><h3>nm_device_connection_valid ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_device_connection_valid (<em class="parameter"><code><a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> *device</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>);</pre> + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> <p> Validates a given connection for a given <a class="link" href="NMDevice.html" title="NMDevice"><span class="type">NMDevice</span></a> object and returns whether the connection may be activated with the device. For example if @@ -766,7 +800,7 @@ device. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>an <span class="type">NMConnection</span> to validate against <em class="parameter"><code>device</code></em> +<td>an <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> to validate against <em class="parameter"><code>device</code></em> </td> </tr> <tr> @@ -782,6 +816,14 @@ if is incompatible with the device's capabilities and characteristics.</td> <div class="refsect1"> <a name="NMDevice.property-details"></a><h2>Property Details</h2> <div class="refsect2"> +<a name="NMDevice--active-connection"></a><h3>The <code class="literal">"active-connection"</code> property</h3> +<pre class="programlisting"> "active-connection" <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a>* : Read</pre> +<p> +The <a class="link" href="NMActiveConnection.html" title="NMActiveConnection"><span class="type">NMActiveConnection</span></a> object that "owns" this device during activation. +</p> +</div> +<hr> +<div class="refsect2"> <a name="NMDevice--capabilities"></a><h3>The <code class="literal">"capabilities"</code> property</h3> <pre class="programlisting"> "capabilities" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint"><span class="type">guint</span></a> : Read</pre> <p> diff --git a/docs/libnm-glib/html/NMRemoteConnection.html b/docs/libnm-glib/html/NMRemoteConnection.html index 07e3564bf..8be508bee 100644 --- a/docs/libnm-glib/html/NMRemoteConnection.html +++ b/docs/libnm-glib/html/NMRemoteConnection.html @@ -75,7 +75,7 @@ <a name="NMRemoteConnection.object-hierarchy"></a><h2>Object Hierarchy</h2> <pre class="synopsis"> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> - +----NMConnection + +----<a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html">NMConnection</a> +----NMRemoteConnection </pre> </div> @@ -329,7 +329,7 @@ invisible to the current user. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>a <span class="type">NMConnection</span> +<td>a <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> </td> </tr> <tr> @@ -353,7 +353,7 @@ still visible to the user. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>a <span class="type">NMConnection</span> +<td>a <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> </td> </tr> <tr> diff --git a/docs/libnm-glib/html/NMRemoteSettings.html b/docs/libnm-glib/html/NMRemoteSettings.html index b3741ef3e..4274c72a9 100644 --- a/docs/libnm-glib/html/NMRemoteSettings.html +++ b/docs/libnm-glib/html/NMRemoteSettings.html @@ -73,7 +73,7 @@ struct <a class="link" href="NMRemoteSettings.html#NMRemoteSettings (<em class="parameter"><code><a class="link" href="NMRemoteSettings.html" title="NMRemoteSettings"><span class="type">NMRemoteSettings</span></a> *settings</code></em>, <em class="parameter"><code>const <span class="type">char</span> *uuid</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMRemoteSettings.html#nm-remote-settings-add-connection" title="nm_remote_settings_add_connection ()">nm_remote_settings_add_connection</a> (<em class="parameter"><code><a class="link" href="NMRemoteSettings.html" title="NMRemoteSettings"><span class="type">NMRemoteSettings</span></a> *settings</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMRemoteSettings.html#NMRemoteSettingsAddConnectionFunc" title="NMRemoteSettingsAddConnectionFunc ()"><span class="type">NMRemoteSettingsAddConnectionFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMRemoteSettings.html#nm-remote-settings-save-hostname" title="nm_remote_settings_save_hostname ()">nm_remote_settings_save_hostname</a> (<em class="parameter"><code><a class="link" href="NMRemoteSettings.html" title="NMRemoteSettings"><span class="type">NMRemoteSettings</span></a> *settings</code></em>, @@ -394,7 +394,7 @@ not known. <span class="annotation">[<acronym title="Don't free data after the c <div class="refsect2"> <a name="nm-remote-settings-add-connection"></a><h3>nm_remote_settings_add_connection ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_remote_settings_add_connection (<em class="parameter"><code><a class="link" href="NMRemoteSettings.html" title="NMRemoteSettings"><span class="type">NMRemoteSettings</span></a> *settings</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMRemoteSettings.html#NMRemoteSettingsAddConnectionFunc" title="NMRemoteSettingsAddConnectionFunc ()"><span class="type">NMRemoteSettingsAddConnectionFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> <p> diff --git a/docs/libnm-glib/html/NMSecretAgent.html b/docs/libnm-glib/html/NMSecretAgent.html index 8da09f9cd..4b08499c2 100644 --- a/docs/libnm-glib/html/NMSecretAgent.html +++ b/docs/libnm-glib/html/NMSecretAgent.html @@ -53,16 +53,16 @@ enum <a class="link" href="NMSecretAgent.html#NMSecretAgentGetSec #define <a class="link" href="NMSecretAgent.html#NM-SECRET-AGENT-REGISTRATION-RESULT:CAPS" title="NM_SECRET_AGENT_REGISTRATION_RESULT">NM_SECRET_AGENT_REGISTRATION_RESULT</a> <a class="link" href="NMSecretAgent.html#NMSecretAgent-struct" title="NMSecretAgent">NMSecretAgent</a>; <span class="returnvalue">void</span> (<a class="link" href="NMSecretAgent.html#NMSecretAgentGetSecretsFunc" title="NMSecretAgentGetSecretsFunc ()">*NMSecretAgentGetSecretsFunc</a>) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *secrets</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <span class="returnvalue">void</span> (<a class="link" href="NMSecretAgent.html#NMSecretAgentSaveSecretsFunc" title="NMSecretAgentSaveSecretsFunc ()">*NMSecretAgentSaveSecretsFunc</a>) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <span class="returnvalue">void</span> (<a class="link" href="NMSecretAgent.html#NMSecretAgentDeleteSecretsFunc" title="NMSecretAgentDeleteSecretsFunc ()">*NMSecretAgentDeleteSecretsFunc</a>) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); <a class="link" href="NMSecretAgent.html#NMSecretAgentClass" title="NMSecretAgentClass">NMSecretAgentClass</a>; @@ -70,18 +70,18 @@ enum <a class="link" href="NMSecretAgent.html#NMSecretAgentGetSec <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSecretAgent.html#nm-secret-agent-register" title="nm_secret_agent_register ()">nm_secret_agent_register</a> (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSecretAgent.html#nm-secret-agent-unregister" title="nm_secret_agent_unregister ()">nm_secret_agent_unregister</a> (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>); <span class="returnvalue">void</span> <a class="link" href="NMSecretAgent.html#nm-secret-agent-get-secrets" title="nm_secret_agent_get_secrets ()">nm_secret_agent_get_secrets</a> (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code>const <span class="type">char</span> *setting_name</code></em>, <em class="parameter"><code>const <span class="type">char</span> **hints</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentGetSecretsFlags" title="enum NMSecretAgentGetSecretsFlags"><span class="type">NMSecretAgentGetSecretsFlags</span></a> flags</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentGetSecretsFunc" title="NMSecretAgentGetSecretsFunc ()"><span class="type">NMSecretAgentGetSecretsFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> callback_data</code></em>); <span class="returnvalue">void</span> <a class="link" href="NMSecretAgent.html#nm-secret-agent-save-secrets" title="nm_secret_agent_save_secrets ()">nm_secret_agent_save_secrets</a> (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentSaveSecretsFunc" title="NMSecretAgentSaveSecretsFunc ()"><span class="type">NMSecretAgentSaveSecretsFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> callback_data</code></em>); <span class="returnvalue">void</span> <a class="link" href="NMSecretAgent.html#nm-secret-agent-delete-secrets" title="nm_secret_agent_delete_secrets ()">nm_secret_agent_delete_secrets</a> (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentDeleteSecretsFunc" title="NMSecretAgentDeleteSecretsFunc ()"><span class="type">NMSecretAgentDeleteSecretsFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> callback_data</code></em>); </pre> @@ -225,7 +225,7 @@ is allowed. <div class="refsect2"> <a name="NMSecretAgentGetSecretsFunc"></a><h3>NMSecretAgentGetSecretsFunc ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> (*NMSecretAgentGetSecretsFunc) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *secrets</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> @@ -236,7 +236,7 @@ is allowed. <div class="refsect2"> <a name="NMSecretAgentSaveSecretsFunc"></a><h3>NMSecretAgentSaveSecretsFunc ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> (*NMSecretAgentSaveSecretsFunc) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> <p> @@ -246,7 +246,7 @@ is allowed. <div class="refsect2"> <a name="NMSecretAgentDeleteSecretsFunc"></a><h3>NMSecretAgentDeleteSecretsFunc ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> (*NMSecretAgentDeleteSecretsFunc) (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *agent</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> <p> @@ -388,7 +388,7 @@ store secrets on behalf of this user. <div class="refsect2"> <a name="nm-secret-agent-get-secrets"></a><h3>nm_secret_agent_get_secrets ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> nm_secret_agent_get_secrets (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code>const <span class="type">char</span> *setting_name</code></em>, <em class="parameter"><code>const <span class="type">char</span> **hints</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentGetSecretsFlags" title="enum NMSecretAgentGetSecretsFlags"><span class="type">NMSecretAgentGetSecretsFlags</span></a> flags</code></em>, @@ -414,7 +414,7 @@ VFunc: get_secrets </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>the <span class="type">NMConnection</span> for which we're asked secrets</td> +<td>the <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> for which we're asked secrets</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>setting_name</code></em> :</span></p></td> @@ -446,7 +446,7 @@ VFunc: get_secrets <div class="refsect2"> <a name="nm-secret-agent-save-secrets"></a><h3>nm_secret_agent_save_secrets ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> nm_secret_agent_save_secrets (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentSaveSecretsFunc" title="NMSecretAgentSaveSecretsFunc ()"><span class="type">NMSecretAgentSaveSecretsFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> callback_data</code></em>);</pre> <p> @@ -466,7 +466,7 @@ VFunc: save_secrets </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>a <span class="type">NMConnection</span> +<td>a <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> </td> </tr> <tr> @@ -486,7 +486,7 @@ VFunc: save_secrets <div class="refsect2"> <a name="nm-secret-agent-delete-secrets"></a><h3>nm_secret_agent_delete_secrets ()</h3> <pre class="programlisting"><span class="returnvalue">void</span> nm_secret_agent_delete_secrets (<em class="parameter"><code><a class="link" href="NMSecretAgent.html" title="NMSecretAgent"><span class="type">NMSecretAgent</span></a> *self</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a class="link" href="NMSecretAgent.html#NMSecretAgentDeleteSecretsFunc" title="NMSecretAgentDeleteSecretsFunc ()"><span class="type">NMSecretAgentDeleteSecretsFunc</span></a> callback</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> callback_data</code></em>);</pre> <p> @@ -506,7 +506,7 @@ VFunc: delete_secrets </tr> <tr> <td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> -<td>a <span class="type">NMConnection</span> +<td>a <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> </td> </tr> <tr> diff --git a/docs/libnm-glib/html/NMWimaxNsp.html b/docs/libnm-glib/html/NMWimaxNsp.html index 10f11410f..dfff7ffdf 100644 --- a/docs/libnm-glib/html/NMWimaxNsp.html +++ b/docs/libnm-glib/html/NMWimaxNsp.html @@ -55,7 +55,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMWim <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="returnvalue">GSList</span></a> * <a class="link" href="NMWimaxNsp.html#nm-wimax-nsp-filter-connections" title="nm_wimax_nsp_filter_connections ()">nm_wimax_nsp_filter_connections</a> (<em class="parameter"><code><a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp"><span class="type">NMWimaxNsp</span></a> *nsp</code></em>, <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> *connections</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMWimaxNsp.html#nm-wimax-nsp-connection-valid" title="nm_wimax_nsp_connection_valid ()">nm_wimax_nsp_connection_valid</a> (<em class="parameter"><code><a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp"><span class="type">NMWimaxNsp</span></a> *nsp</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>); + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>); </pre> </div> <div class="refsect1"> @@ -256,13 +256,13 @@ returned connections will match the <em class="parameter"><code>nsp</code></em>' <tr> <td><p><span class="term"><em class="parameter"><code>connections</code></em> :</span></p></td> <td>a list of -<span class="type">NMConnection</span> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> +<a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects to filter. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> </td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> <td>a -list of <span class="type">NMConnection</span> objects that could be activated with the given <em class="parameter"><code>nsp</code></em>. +list of <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> objects that could be activated with the given <em class="parameter"><code>nsp</code></em>. The elements of the list are owned by their creator and should not be freed by the caller, but the returned list itself is owned by the caller and should be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#g-slist-free"><code class="function">g_slist_free()</code></a> when it is no longer required. <span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NetworkManager.Connection]</span> @@ -275,7 +275,7 @@ be freed with <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly- <div class="refsect2"> <a name="nm-wimax-nsp-connection-valid"></a><h3>nm_wimax_nsp_connection_valid ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_wimax_nsp_connection_valid (<em class="parameter"><code><a class="link" href="NMWimaxNsp.html" title="NMWimaxNsp"><span class="type">NMWimaxNsp</span></a> *nsp</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>);</pre> + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> <p> </p> </div> diff --git a/docs/libnm-glib/html/api-index-full.html b/docs/libnm-glib/html/api-index-full.html index f2b1352a8..311e89966 100644 --- a/docs/libnm-glib/html/api-index-full.html +++ b/docs/libnm-glib/html/api-index-full.html @@ -533,6 +533,10 @@ dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER, function in nm-sec </dt> <dd></dd> <dt> +<a class="link" href="NMDevice.html#NMDevice--active-connection" title='The "active-connection" property'>NMDevice:active-connection</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a> +</dt> +<dd></dd> +<dt> <a class="link" href="NMDevice.html#NMDevice--capabilities" title='The "capabilities" property'>NMDevice:capabilities</a>, object property in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a> </dt> <dd></dd> @@ -745,6 +749,10 @@ dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER, function in nm-sec </dt> <dd></dd> <dt> +<a class="link" href="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS" title="NM_DEVICE_ACTIVE_CONNECTION">NM_DEVICE_ACTIVE_CONNECTION</a>, macro in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a> +</dt> +<dd></dd> +<dt> <a class="link" href="NMDeviceBt.html#NM-DEVICE-BT-CAPABILITIES:CAPS" title="NM_DEVICE_BT_CAPABILITIES">NM_DEVICE_BT_CAPABILITIES</a>, macro in <a class="link" href="NMDeviceBt.html" title="NMDeviceBt">NMDeviceBt</a> </dt> <dd></dd> @@ -845,6 +853,10 @@ dbus_glib_marshal_nm_secret_agent_VOID__BOXED_STRING_POINTER, function in nm-sec </dt> <dd></dd> <dt> +<a class="link" href="NMDevice.html#nm-device-get-active-connection" title="nm_device_get_active_connection ()">nm_device_get_active_connection</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a> +</dt> +<dd></dd> +<dt> <a class="link" href="NMDevice.html#nm-device-get-capabilities" title="nm_device_get_capabilities ()">nm_device_get_capabilities</a>, function in <a class="link" href="NMDevice.html" title="NMDevice">NMDevice</a> </dt> <dd></dd> diff --git a/docs/libnm-glib/html/ch02.html b/docs/libnm-glib/html/ch02.html index 6d8146616..bfc170070 100644 --- a/docs/libnm-glib/html/ch02.html +++ b/docs/libnm-glib/html/ch02.html @@ -21,7 +21,7 @@ </tr></table> <div class="chapter"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id366291"></a>libnm-glib API Reference</h2></div></div></div> +<a name="id340247"></a>libnm-glib API Reference</h2></div></div></div> <div class="toc"><dl> <dt> <span class="refentrytitle"><a href="NMClient.html">NMClient</a></span><span class="refpurpose"></span> diff --git a/docs/libnm-glib/html/index.html b/docs/libnm-glib/html/index.html index 0eb745a34..665edd03a 100644 --- a/docs/libnm-glib/html/index.html +++ b/docs/libnm-glib/html/index.html @@ -29,7 +29,7 @@ </p></div> <div><p class="copyright">Copyright © 2011 The NetworkManager Authors</p></div> <div><div class="legalnotice"> -<a name="id336694"></a><p> +<a name="id310650"></a><p> Permission is granted to copy, distribute and/or modify this document under the terms of the <em class="citetitle">GNU Free Documentation License</em>, Version 1.1 or any later diff --git a/docs/libnm-glib/html/index.sgml b/docs/libnm-glib/html/index.sgml index de8edcebd..db6d2d8af 100644 --- a/docs/libnm-glib/html/index.sgml +++ b/docs/libnm-glib/html/index.sgml @@ -112,6 +112,7 @@ <ANCHOR id="NM-DEVICE-IP6-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS"> <ANCHOR id="NM-DEVICE-DHCP6-CONFIG:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS"> <ANCHOR id="NM-DEVICE-STATE:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-STATE:CAPS"> +<ANCHOR id="NM-DEVICE-ACTIVE-CONNECTION:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS"> <ANCHOR id="NM-DEVICE-VENDOR:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-VENDOR:CAPS"> <ANCHOR id="NM-DEVICE-PRODUCT:CAPS" href="libnm-glib/NMDevice.html#NM-DEVICE-PRODUCT:CAPS"> <ANCHOR id="NMDevice-struct" href="libnm-glib/NMDevice.html#NMDevice-struct"> @@ -130,6 +131,7 @@ <ANCHOR id="nm-device-get-ip6-config" href="libnm-glib/NMDevice.html#nm-device-get-ip6-config"> <ANCHOR id="nm-device-get-dhcp6-config" href="libnm-glib/NMDevice.html#nm-device-get-dhcp6-config"> <ANCHOR id="nm-device-get-state" href="libnm-glib/NMDevice.html#nm-device-get-state"> +<ANCHOR id="nm-device-get-active-connection" href="libnm-glib/NMDevice.html#nm-device-get-active-connection"> <ANCHOR id="nm-device-get-product" href="libnm-glib/NMDevice.html#nm-device-get-product"> <ANCHOR id="nm-device-get-vendor" href="libnm-glib/NMDevice.html#nm-device-get-vendor"> <ANCHOR id="NMDeviceDeactivateFn" href="libnm-glib/NMDevice.html#NMDeviceDeactivateFn"> @@ -137,6 +139,7 @@ <ANCHOR id="nm-device-filter-connections" href="libnm-glib/NMDevice.html#nm-device-filter-connections"> <ANCHOR id="nm-device-connection-valid" href="libnm-glib/NMDevice.html#nm-device-connection-valid"> <ANCHOR id="NMDevice.property-details" href="libnm-glib/NMDevice.html#NMDevice.property-details"> +<ANCHOR id="NMDevice--active-connection" href="libnm-glib/NMDevice.html#NMDevice--active-connection"> <ANCHOR id="NMDevice--capabilities" href="libnm-glib/NMDevice.html#NMDevice--capabilities"> <ANCHOR id="NMDevice--device-type" href="libnm-glib/NMDevice.html#NMDevice--device-type"> <ANCHOR id="NMDevice--dhcp4-config" href="libnm-glib/NMDevice.html#NMDevice--dhcp4-config"> diff --git a/docs/libnm-glib/html/libnm-glib-NMVpnPluginUi.html b/docs/libnm-glib/html/libnm-glib-NMVpnPluginUi.html index d517644e2..834996c20 100644 --- a/docs/libnm-glib/html/libnm-glib-NMVpnPluginUi.html +++ b/docs/libnm-glib/html/libnm-glib-NMVpnPluginUi.html @@ -49,23 +49,23 @@ enum <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface">NMVpnPluginUiInterface</a>; <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="returnvalue">NMVpnPluginUiWidgetInterface</span></a> * <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-ui-factory" title="nm_vpn_plugin_ui_interface_ui_factory ()">nm_vpn_plugin_ui_interface_ui_factory</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#guint32"><span class="returnvalue">guint32</span></a> <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-get-capabilities" title="nm_vpn_plugin_ui_interface_get_capabilities ()">nm_vpn_plugin_ui_interface_get_capabilities</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>); -<span class="returnvalue">NMConnection</span> * <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-import" title="nm_vpn_plugin_ui_interface_import ()">nm_vpn_plugin_ui_interface_import</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, +<a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="returnvalue">NMConnection</span></a> * <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-import" title="nm_vpn_plugin_ui_interface_import ()">nm_vpn_plugin_ui_interface_import</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-export" title="nm_vpn_plugin_ui_interface_export ()">nm_vpn_plugin_ui_interface_export</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); <span class="returnvalue">char</span> * <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-get-suggested-name" title="nm_vpn_plugin_ui_interface_get_suggested_name ()">nm_vpn_plugin_ui_interface_get_suggested_name</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>); + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-interface-delete-connection" title="nm_vpn_plugin_ui_interface_delete_connection ()">nm_vpn_plugin_ui_interface_delete_connection</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); #define <a class="link" href="libnm-glib-NMVpnPluginUi.html#NM-TYPE-VPN-PLUGIN-UI-WIDGET-INTERFACE:CAPS" title="NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE">NM_TYPE_VPN_PLUGIN_UI_WIDGET_INTERFACE</a> #define <a class="link" href="libnm-glib-NMVpnPluginUi.html#NM-VPN-PLUGIN-UI-WIDGET-INTERFACE:CAPS" title="NM_VPN_PLUGIN_UI_WIDGET_INTERFACE()">NM_VPN_PLUGIN_UI_WIDGET_INTERFACE</a> (obj) @@ -78,11 +78,11 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="type">NMVpnPluginUiWidgetInterface</span></a> *iface</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-widget-interface-update-connection" title="nm_vpn_plugin_ui_widget_interface_update_connection ()">nm_vpn_plugin_ui_widget_interface_update_connection</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="type">NMVpnPluginUiWidgetInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="libnm-glib-NMVpnPluginUi.html#nm-vpn-plugin-ui-widget-interface-save-secrets" title="nm_vpn_plugin_ui_widget_interface_save_secrets ()">nm_vpn_plugin_ui_widget_interface_save_secrets</a> (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="type">NMVpnPluginUiWidgetInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); </pre> </div> @@ -236,7 +236,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-interface-ui-factory"></a><h3>nm_vpn_plugin_ui_interface_ui_factory ()</h3> <pre class="programlisting"><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="returnvalue">NMVpnPluginUiWidgetInterface</span></a> * nm_vpn_plugin_ui_interface_ui_factory (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> </p> @@ -252,7 +252,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <hr> <div class="refsect2"> <a name="nm-vpn-plugin-ui-interface-import"></a><h3>nm_vpn_plugin_ui_interface_import ()</h3> -<pre class="programlisting"><span class="returnvalue">NMConnection</span> * nm_vpn_plugin_ui_interface_import (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, +<pre class="programlisting"><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="returnvalue">NMConnection</span></a> * nm_vpn_plugin_ui_interface_import (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> @@ -263,7 +263,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-interface-export"></a><h3>nm_vpn_plugin_ui_interface_export ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_vpn_plugin_ui_interface_export (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, <em class="parameter"><code>const <span class="type">char</span> *path</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> </p> @@ -273,7 +273,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-interface-get-suggested-name"></a><h3>nm_vpn_plugin_ui_interface_get_suggested_name ()</h3> <pre class="programlisting"><span class="returnvalue">char</span> * nm_vpn_plugin_ui_interface_get_suggested_name (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>);</pre> + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> <p> </p> </div> @@ -282,7 +282,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-interface-delete-connection"></a><h3>nm_vpn_plugin_ui_interface_delete_connection ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_vpn_plugin_ui_interface_delete_connection (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiInterface" title="struct NMVpnPluginUiInterface"><span class="type">NMVpnPluginUiInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> </p> @@ -377,7 +377,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-widget-interface-update-connection"></a><h3>nm_vpn_plugin_ui_widget_interface_update_connection ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_vpn_plugin_ui_widget_interface_update_connection (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="type">NMVpnPluginUiWidgetInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> </p> @@ -387,7 +387,7 @@ struct <a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPlu <a name="nm-vpn-plugin-ui-widget-interface-save-secrets"></a><h3>nm_vpn_plugin_ui_widget_interface_save_secrets ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_vpn_plugin_ui_widget_interface_save_secrets (<em class="parameter"><code><a class="link" href="libnm-glib-NMVpnPluginUi.html#NMVpnPluginUiWidgetInterface" title="struct NMVpnPluginUiWidgetInterface"><span class="type">NMVpnPluginUiWidgetInterface</span></a> *iface</code></em>, - <em class="parameter"><code><span class="type">NMConnection</span> *connection</code></em>, + <em class="parameter"><code><a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html"><span class="type">NMConnection</span></a> *connection</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> <p> </p> diff --git a/docs/libnm-glib/html/libnm-glib.devhelp b/docs/libnm-glib/html/libnm-glib.devhelp index 784eca149..cd1d08574 100644 --- a/docs/libnm-glib/html/libnm-glib.devhelp +++ b/docs/libnm-glib/html/libnm-glib.devhelp @@ -122,6 +122,7 @@ <function name="NM_DEVICE_IP6_CONFIG" link="NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS"/> <function name="NM_DEVICE_DHCP6_CONFIG" link="NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS"/> <function name="NM_DEVICE_STATE" link="NMDevice.html#NM-DEVICE-STATE:CAPS"/> + <function name="NM_DEVICE_ACTIVE_CONNECTION" link="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS"/> <function name="NM_DEVICE_VENDOR" link="NMDevice.html#NM-DEVICE-VENDOR:CAPS"/> <function name="NM_DEVICE_PRODUCT" link="NMDevice.html#NM-DEVICE-PRODUCT:CAPS"/> <function name="NMDevice" link="NMDevice.html#NMDevice-struct"/> @@ -140,12 +141,14 @@ <function name="nm_device_get_ip6_config ()" link="NMDevice.html#nm-device-get-ip6-config"/> <function name="nm_device_get_dhcp6_config ()" link="NMDevice.html#nm-device-get-dhcp6-config"/> <function name="nm_device_get_state ()" link="NMDevice.html#nm-device-get-state"/> + <function name="nm_device_get_active_connection ()" link="NMDevice.html#nm-device-get-active-connection"/> <function name="nm_device_get_product ()" link="NMDevice.html#nm-device-get-product"/> <function name="nm_device_get_vendor ()" link="NMDevice.html#nm-device-get-vendor"/> <function name="NMDeviceDeactivateFn ()" link="NMDevice.html#NMDeviceDeactivateFn"/> <function name="nm_device_disconnect ()" link="NMDevice.html#nm-device-disconnect"/> <function name="nm_device_filter_connections ()" link="NMDevice.html#nm-device-filter-connections"/> <function name="nm_device_connection_valid ()" link="NMDevice.html#nm-device-connection-valid"/> + <function name="The "active-connection" property" link="NMDevice.html#NMDevice--active-connection"/> <function name="The "capabilities" property" link="NMDevice.html#NMDevice--capabilities"/> <function name="The "device-type" property" link="NMDevice.html#NMDevice--device-type"/> <function name="The "dhcp4-config" property" link="NMDevice.html#NMDevice--dhcp4-config"/> diff --git a/docs/libnm-glib/html/libnm-glib.devhelp2 b/docs/libnm-glib/html/libnm-glib.devhelp2 index 4cc1d64b1..a74fd6879 100644 --- a/docs/libnm-glib/html/libnm-glib.devhelp2 +++ b/docs/libnm-glib/html/libnm-glib.devhelp2 @@ -122,6 +122,7 @@ <keyword type="macro" name="NM_DEVICE_IP6_CONFIG" link="NMDevice.html#NM-DEVICE-IP6-CONFIG:CAPS"/> <keyword type="macro" name="NM_DEVICE_DHCP6_CONFIG" link="NMDevice.html#NM-DEVICE-DHCP6-CONFIG:CAPS"/> <keyword type="macro" name="NM_DEVICE_STATE" link="NMDevice.html#NM-DEVICE-STATE:CAPS"/> + <keyword type="macro" name="NM_DEVICE_ACTIVE_CONNECTION" link="NMDevice.html#NM-DEVICE-ACTIVE-CONNECTION:CAPS"/> <keyword type="macro" name="NM_DEVICE_VENDOR" link="NMDevice.html#NM-DEVICE-VENDOR:CAPS"/> <keyword type="macro" name="NM_DEVICE_PRODUCT" link="NMDevice.html#NM-DEVICE-PRODUCT:CAPS"/> <keyword type="struct" name="NMDevice" link="NMDevice.html#NMDevice-struct"/> @@ -140,12 +141,14 @@ <keyword type="function" name="nm_device_get_ip6_config ()" link="NMDevice.html#nm-device-get-ip6-config"/> <keyword type="function" name="nm_device_get_dhcp6_config ()" link="NMDevice.html#nm-device-get-dhcp6-config"/> <keyword type="function" name="nm_device_get_state ()" link="NMDevice.html#nm-device-get-state"/> + <keyword type="function" name="nm_device_get_active_connection ()" link="NMDevice.html#nm-device-get-active-connection"/> <keyword type="function" name="nm_device_get_product ()" link="NMDevice.html#nm-device-get-product"/> <keyword type="function" name="nm_device_get_vendor ()" link="NMDevice.html#nm-device-get-vendor"/> <keyword type="function" name="NMDeviceDeactivateFn ()" link="NMDevice.html#NMDeviceDeactivateFn"/> <keyword type="function" name="nm_device_disconnect ()" link="NMDevice.html#nm-device-disconnect"/> <keyword type="function" name="nm_device_filter_connections ()" link="NMDevice.html#nm-device-filter-connections"/> <keyword type="function" name="nm_device_connection_valid ()" link="NMDevice.html#nm-device-connection-valid"/> + <keyword type="property" name="The "active-connection" property" link="NMDevice.html#NMDevice--active-connection"/> <keyword type="property" name="The "capabilities" property" link="NMDevice.html#NMDevice--capabilities"/> <keyword type="property" name="The "device-type" property" link="NMDevice.html#NMDevice--device-type"/> <keyword type="property" name="The "dhcp4-config" property" link="NMDevice.html#NMDevice--dhcp4-config"/> diff --git a/docs/libnm-glib/html/object-tree.html b/docs/libnm-glib/html/object-tree.html index 1ebe13691..6bcd8f422 100644 --- a/docs/libnm-glib/html/object-tree.html +++ b/docs/libnm-glib/html/object-tree.html @@ -41,7 +41,7 @@ <a class="link" href="NMDHCP4Config.html" title="NMDHCP4Config">NMDHCP4Config</a> <a class="link" href="NMDHCP6Config.html" title="NMDHCP6Config">NMDHCP6Config</a> <a class="link" href="NMRemoteSettings.html" title="NMRemoteSettings">NMRemoteSettings</a> - NMConnection + <a href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/NMConnection.html">NMConnection</a> <a class="link" href="NMRemoteConnection.html" title="NMRemoteConnection">NMRemoteConnection</a> <a class="link" href="NMSecretAgent.html" title="NMSecretAgent">NMSecretAgent</a> </pre> diff --git a/docs/libnm-glib/libnm-glib-sections.txt b/docs/libnm-glib/libnm-glib-sections.txt index 71910fd58..90733f9b2 100644 --- a/docs/libnm-glib/libnm-glib-sections.txt +++ b/docs/libnm-glib/libnm-glib-sections.txt @@ -302,6 +302,7 @@ NM_DEVICE_DHCP4_CONFIG NM_DEVICE_IP6_CONFIG NM_DEVICE_DHCP6_CONFIG NM_DEVICE_STATE +NM_DEVICE_ACTIVE_CONNECTION NM_DEVICE_VENDOR NM_DEVICE_PRODUCT NMDevice @@ -320,6 +321,7 @@ nm_device_get_dhcp4_config nm_device_get_ip6_config nm_device_get_dhcp6_config nm_device_get_state +nm_device_get_active_connection nm_device_get_product nm_device_get_vendor NMDeviceDeactivateFn diff --git a/docs/libnm-util/html/NMConnection.html b/docs/libnm-util/html/NMConnection.html new file mode 100644 index 000000000..489a2fd63 --- /dev/null +++ b/docs/libnm-util/html/NMConnection.html @@ -0,0 +1,1371 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<title>NMConnection</title> +<meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> +<link rel="home" href="index.html" title="libnm-util Reference Manual"> +<link rel="up" href="ch01.html" title="libnm-util API Reference"> +<link rel="prev" href="ch01.html" title="libnm-util API Reference"> +<link rel="next" href="NMSetting.html" title="NMSetting"> +<meta name="generator" content="GTK-Doc V1.17 (XML mode)"> +<link rel="stylesheet" href="style.css" type="text/css"> +</head> +<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> +<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> +<tr valign="middle"> +<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> +<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> +<th width="100%" align="center">libnm-util Reference Manual</th> +<td><a accesskey="n" href="NMSetting.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +</tr> +<tr><td colspan="5" class="shortcuts"> +<a href="#NMConnection.synopsis" class="shortcut">Top</a> + | + <a href="#NMConnection.description" class="shortcut">Description</a> + | + <a href="#NMConnection.object-hierarchy" class="shortcut">Object Hierarchy</a> + | + <a href="#NMConnection.properties" class="shortcut">Properties</a> + | + <a href="#NMConnection.signals" class="shortcut">Signals</a> +</td></tr> +</table> +<div class="refentry"> +<a name="NMConnection"></a><div class="titlepage"></div> +<div class="refnamediv"><table width="100%"><tr> +<td valign="top"> +<h2><span class="refentrytitle"><a name="NMConnection.top_of_page"></a>NMConnection</span></h2> +<p>NMConnection — Describes a connection to specific network or provider</p> +</td> +<td valign="top" align="right"></td> +</tr></table></div> +<div class="refsynopsisdiv"> +<a name="NMConnection.synopsis"></a><h2>Synopsis</h2> +<a name="NMConnectionError"></a><pre class="synopsis"> +#include <nm-connection.h> + +enum <a class="link" href="NMConnection.html#NMConnectionError">NMConnectionError</a>; +#define <a class="link" href="NMConnection.html#NM-TYPE-CONNECTION-ERROR:CAPS" title="NM_TYPE_CONNECTION_ERROR">NM_TYPE_CONNECTION_ERROR</a> +#define <a class="link" href="NMConnection.html#NM-CONNECTION-ERROR:CAPS" title="NM_CONNECTION_ERROR">NM_CONNECTION_ERROR</a> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a> <a class="link" href="NMConnection.html#nm-connection-error-quark" title="nm_connection_error_quark ()">nm_connection_error_quark</a> (<em class="parameter"><code><span class="type">void</span></code></em>); +#define <a class="link" href="NMConnection.html#NM-CONNECTION-PATH:CAPS" title="NM_CONNECTION_PATH">NM_CONNECTION_PATH</a> + <a class="link" href="NMConnection.html#NMConnection-struct" title="NMConnection">NMConnection</a>; + <a class="link" href="NMConnection.html#NMConnectionClass" title="NMConnectionClass">NMConnectionClass</a>; +<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="NMConnection.html#nm-connection-get-type" title="nm_connection_get_type ()">nm_connection_get_type</a> (<em class="parameter"><code><span class="type">void</span></code></em>); +<a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * <a class="link" href="NMConnection.html#nm-connection-new" title="nm_connection_new ()">nm_connection_new</a> (<em class="parameter"><code><span class="type">void</span></code></em>); +<a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * <a class="link" href="NMConnection.html#nm-connection-new-from-hash" title="nm_connection_new_from_hash ()">nm_connection_new_from_hash</a> (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *hash</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); +<a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * <a class="link" href="NMConnection.html#nm-connection-duplicate" title="nm_connection_duplicate ()">nm_connection_duplicate</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * <a class="link" href="NMConnection.html#nm-connection-create-setting" title="nm_connection_create_setting ()">nm_connection_create_setting</a> (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-add-setting" title="nm_connection_add_setting ()">nm_connection_add_setting</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-remove-setting" title="nm_connection_remove_setting ()">nm_connection_remove_setting</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> setting_type</code></em>); +<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting" title="nm_connection_get_setting ()">nm_connection_get_setting</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> setting_type</code></em>); +<a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-by-name" title="nm_connection_get_setting_by_name ()">nm_connection_get_setting_by_name</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMConnection.html#nm-connection-replace-settings" title="nm_connection_replace_settings ()">nm_connection_replace_settings</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *new_settings</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMConnection.html#nm-connection-compare" title="nm_connection_compare ()">nm_connection_compare</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *a</code></em>, + <em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *b</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags"><span class="type">NMSettingCompareFlags</span></a> flags</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMConnection.html#nm-connection-diff" title="nm_connection_diff ()">nm_connection_diff</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *a</code></em>, + <em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *b</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags"><span class="type">NMSettingCompareFlags</span></a> flags</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> **out_settings</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMConnection.html#nm-connection-verify" title="nm_connection_verify ()">nm_connection_verify</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="NMConnection.html#nm-connection-need-secrets" title="nm_connection_need_secrets ()">nm_connection_need_secrets</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **hints</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-clear-secrets" title="nm_connection_clear_secrets ()">nm_connection_clear_secrets</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMConnection.html#nm-connection-update-secrets" title="nm_connection_update_secrets ()">nm_connection_update_secrets</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *setting_name</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *setting_secrets</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-set-path" title="nm_connection_set_path ()">nm_connection_set_path</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *path</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="NMConnection.html#nm-connection-get-path" title="nm_connection_get_path ()">nm_connection_get_path</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-for-each-setting-value" title="nm_connection_for_each_setting_value ()">nm_connection_for_each_setting_value</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingValueIterFn" title="NMSettingValueIterFn ()"><span class="type">NMSettingValueIterFn</span></a> func</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>); +<a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> * <a class="link" href="NMConnection.html#nm-connection-to-hash" title="nm_connection_to_hash ()">nm_connection_to_hash</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingHashFlags" title="enum NMSettingHashFlags"><span class="type">NMSettingHashFlags</span></a> flags</code></em>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-dump" title="nm_connection_dump ()">nm_connection_dump</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="NMConnection.html#nm-connection-lookup-setting-type" title="nm_connection_lookup_setting_type ()">nm_connection_lookup_setting_type</a> (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>); +<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> <a class="link" href="NMConnection.html#nm-connection-lookup-setting-type-by-quark" title="nm_connection_lookup_setting_type_by_quark ()">nm_connection_lookup_setting_type_by_quark</a> + (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="type">GQuark</span></a> error_quark</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="NMConnection.html#nm-connection-get-uuid" title="nm_connection_get_uuid ()">nm_connection_get_uuid</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +const <span class="returnvalue">char</span> * <a class="link" href="NMConnection.html#nm-connection-get-id" title="nm_connection_get_id ()">nm_connection_get_id</a> (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="returnvalue">NMSetting8021x</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-802-1x" title="nm_connection_get_setting_802_1x ()">nm_connection_get_setting_802_1x</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="returnvalue">NMSettingBluetooth</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-bluetooth" title="nm_connection_get_setting_bluetooth ()">nm_connection_get_setting_bluetooth</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingCdma.html" title="NMSettingCdma"><span class="returnvalue">NMSettingCdma</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-cdma" title="nm_connection_get_setting_cdma ()">nm_connection_get_setting_cdma</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="returnvalue">NMSettingConnection</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-connection" title="nm_connection_get_setting_connection ()">nm_connection_get_setting_connection</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingGsm.html" title="NMSettingGsm"><span class="returnvalue">NMSettingGsm</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-gsm" title="nm_connection_get_setting_gsm ()">nm_connection_get_setting_gsm</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config"><span class="returnvalue">NMSettingIP4Config</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-ip4-config" title="nm_connection_get_setting_ip4_config ()">nm_connection_get_setting_ip4_config</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="returnvalue">NMSettingIP6Config</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-ip6-config" title="nm_connection_get_setting_ip6_config ()">nm_connection_get_setting_ip6_config</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh"><span class="returnvalue">NMSettingOlpcMesh</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-olpc-mesh" title="nm_connection_get_setting_olpc_mesh ()">nm_connection_get_setting_olpc_mesh</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="returnvalue">NMSettingPPP</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-ppp" title="nm_connection_get_setting_ppp ()">nm_connection_get_setting_ppp</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="returnvalue">NMSettingPPPOE</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-pppoe" title="nm_connection_get_setting_pppoe ()">nm_connection_get_setting_pppoe</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingVPN.html" title="NMSettingVPN"><span class="returnvalue">NMSettingVPN</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-vpn" title="nm_connection_get_setting_vpn ()">nm_connection_get_setting_vpn</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<span class="returnvalue">NMSettingWimax</span> * <a class="link" href="NMConnection.html#nm-connection-get-setting-wimax" title="nm_connection_get_setting_wimax ()">nm_connection_get_setting_wimax</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="returnvalue">NMSettingWired</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-wired" title="nm_connection_get_setting_wired ()">nm_connection_get_setting_wired</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="returnvalue">NMSettingWireless</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-wireless" title="nm_connection_get_setting_wireless ()">nm_connection_get_setting_wireless</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +<a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity"><span class="returnvalue">NMSettingWirelessSecurity</span></a> * <a class="link" href="NMConnection.html#nm-connection-get-setting-wireless-security" title="nm_connection_get_setting_wireless_security ()">nm_connection_get_setting_wireless_security</a> + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>); +</pre> +</div> +<div class="refsect1"> +<a name="NMConnection.object-hierarchy"></a><h2>Object Hierarchy</h2> +<pre class="synopsis"> + GEnum + +----NMConnectionError +</pre> +<pre class="synopsis"> + <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> + +----NMConnection +</pre> +</div> +<div class="refsect1"> +<a name="NMConnection.properties"></a><h2>Properties</h2> +<pre class="synopsis"> + "<a class="link" href="NMConnection.html#NMConnection--path" title='The "path" property'>path</a>" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write / Construct +</pre> +</div> +<div class="refsect1"> +<a name="NMConnection.signals"></a><h2>Signals</h2> +<pre class="synopsis"> + "<a class="link" href="NMConnection.html#NMConnection-secrets-updated" title='The "secrets-updated" signal'>secrets-updated</a>" : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a> +</pre> +</div> +<div class="refsect1"> +<a name="NMConnection.description"></a><h2>Description</h2> +<p> +An <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> describes all the settings and configuration values that +are necessary to configure network devices for operation on a specific +network. Connections are the fundamental operating object for +NetworkManager; no device is connected without a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>, or +disconnected without having been connected with a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. +</p> +<p> +Each <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> contains a list of <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> objects usually referenced +by name (using <a class="link" href="NMConnection.html#nm-connection-get-setting-by-name" title="nm_connection_get_setting_by_name ()"><code class="function">nm_connection_get_setting_by_name()</code></a>) or by type (with +<a class="link" href="NMConnection.html#nm-connection-get-setting" title="nm_connection_get_setting ()"><code class="function">nm_connection_get_setting()</code></a>). The settings describe the actual parameters +with which the network devices are configured, including device-specific +parameters (MTU, SSID, APN, channel, rate, etc) and IP-level parameters +(addresses, routes, addressing methods, etc). +</p> +</div> +<div class="refsect1"> +<a name="NMConnection.details"></a><h2>Details</h2> +<div class="refsect2"> +<a name="NMConnectionError"></a><h3>enum NMConnectionError</h3> +<pre class="programlisting">typedef enum +{ + NM_CONNECTION_ERROR_UNKNOWN = 0, + NM_CONNECTION_ERROR_CONNECTION_SETTING_NOT_FOUND, + NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID +} NMConnectionError; +</pre> +<p> +Describes errors that may result from operations involving a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><a name="NM-CONNECTION-ERROR-UNKNOWN:CAPS"></a><span class="term"><code class="literal">NM_CONNECTION_ERROR_UNKNOWN</code></span></p></td> +<td>unknown or unclassified error +</td> +</tr> +<tr> +<td><p><a name="NM-CONNECTION-ERROR-CONNECTION-SETTING-NOT-FOUND:CAPS"></a><span class="term"><code class="literal">NM_CONNECTION_ERROR_CONNECTION_SETTING_NOT_FOUND</code></span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> object + did not contain the required <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a> object, which must be + present for all connections +</td> +</tr> +<tr> +<td><p><a name="NM-CONNECTION-ERROR-CONNECTION-TYPE-INVALID:CAPS"></a><span class="term"><code class="literal">NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID</code></span></p></td> +<td>the 'type' property of the + 'connection' setting did not point to a valid connection base type; ie + it was not a hardware-related setting like <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> or + <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a>. +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="NM-TYPE-CONNECTION-ERROR:CAPS"></a><h3>NM_TYPE_CONNECTION_ERROR</h3> +<pre class="programlisting">#define NM_TYPE_CONNECTION_ERROR (nm_connection_error_get_type ()) +</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> +<a name="NM-CONNECTION-ERROR:CAPS"></a><h3>NM_CONNECTION_ERROR</h3> +<pre class="programlisting">#define NM_CONNECTION_ERROR nm_connection_error_quark () +</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-error-quark"></a><h3>nm_connection_error_quark ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="returnvalue">GQuark</span></a> nm_connection_error_quark (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p> +Registers an error quark for <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> if necessary. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the error quark used for <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> errors.</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="NM-CONNECTION-PATH:CAPS"></a><h3>NM_CONNECTION_PATH</h3> +<pre class="programlisting">#define NM_CONNECTION_PATH "path" +</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> +<a name="NMConnection-struct"></a><h3>NMConnection</h3> +<pre class="programlisting">typedef struct _NMConnection NMConnection;</pre> +<p> +The NMConnection struct contains only private data. +It should only be accessed through the functions described below. +</p> +</div> +<hr> +<div class="refsect2"> +<a name="NMConnectionClass"></a><h3>NMConnectionClass</h3> +<pre class="programlisting">typedef struct { + GObjectClass parent; + + /* Signals */ + void (*secrets_updated) (NMConnection *connection, const char * setting); +} NMConnectionClass; +</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-type"></a><h3>nm_connection_get_type ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> nm_connection_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p> +</p> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-new"></a><h3>nm_connection_new ()</h3> +<pre class="programlisting"><a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * nm_connection_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p> +Creates a new <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> object with no <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> objects. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the new empty <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> object</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-new-from-hash"></a><h3>nm_connection_new_from_hash ()</h3> +<pre class="programlisting"><a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * nm_connection_new_from_hash (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *hash</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> +<p> +Creates a new <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> from a hash table describing the connection. See +<a class="link" href="NMConnection.html#nm-connection-to-hash" title="nm_connection_to_hash ()"><code class="function">nm_connection_to_hash()</code></a> for a description of the expected hash table. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>hash</code></em> :</span></p></td> +<td>the <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> describing +the connection. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GLib.HashTable]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> +<td>on unsuccessful return, an error</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the new <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> object, populated with settings created +from the values in the hash table, or NULL if the connection failed to +validate</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-duplicate"></a><h3>nm_connection_duplicate ()</h3> +<pre class="programlisting"><a class="link" href="NMConnection.html" title="NMConnection"><span class="returnvalue">NMConnection</span></a> * nm_connection_duplicate (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +Duplicates a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> to duplicate</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> containing the same settings and properties +as the source <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-create-setting"></a><h3>nm_connection_create_setting ()</h3> +<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * nm_connection_create_setting (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre> +<p> +Create a new <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object of the desired type, given a setting name. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td> +<td>a setting name</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the new setting object, or NULL if the setting name was unknown. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-add-setting"></a><h3>nm_connection_add_setting ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_add_setting (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>);</pre> +<p> +Adds a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> to the connection, replacing any previous <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> of the +same name which has previously been added to the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. The +connection takes ownership of the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object and does not increase +the setting object's reference count. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td> +<td>the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> to add to the connection object. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-remove-setting"></a><h3>nm_connection_remove_setting ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_remove_setting (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> setting_type</code></em>);</pre> +<p> +Removes the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> with the given <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> from the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. This +operation dereferences the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting_type</code></em> :</span></p></td> +<td>the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting object to remove</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting"></a><h3>nm_connection_get_setting ()</h3> +<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * nm_connection_get_setting (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> setting_type</code></em>);</pre> +<p> +Gets the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> with the given <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a>, if one has been previously added +to the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting_type</code></em> :</span></p></td> +<td>the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting object to return</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a>, or NULL if no setting of that type was previously +added to the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-by-name"></a><h3>nm_connection_get_setting_by_name ()</h3> +<pre class="programlisting"><a class="link" href="NMSetting.html" title="NMSetting"><span class="returnvalue">NMSetting</span></a> * nm_connection_get_setting_by_name (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre> +<p> +Gets the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> with the given name, if one has been previously added +the the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td> +<td>a setting name</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a>, or NULL if no setting with that name was previously +added to the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-replace-settings"></a><h3>nm_connection_replace_settings ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_connection_replace_settings (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *new_settings</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>new_settings</code></em> :</span></p></td> +<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> of settings. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GLib.HashTable]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> +<td>location to store error, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the settings were valid and added to the connection, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> +if they were not</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-compare"></a><h3>nm_connection_compare ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_connection_compare (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *a</code></em>, + <em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *b</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags"><span class="type">NMSettingCompareFlags</span></a> flags</code></em>);</pre> +<p> +Compares two <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> objects for similarity, with comparison behavior +modified by a set of flags. See <a class="link" href="NMSetting.html#nm-setting-compare" title="nm_setting_compare ()"><code class="function">nm_setting_compare()</code></a> for a description of +each flag's behavior. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>a</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>b</code></em> :</span></p></td> +<td>a second <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> to compare with the first</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>compare flags, e.g. <a class="link" href="NMSetting.html#NM-SETTING-COMPARE-FLAG-EXACT:CAPS"><code class="literal">NM_SETTING_COMPARE_FLAG_EXACT</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the comparison succeeds, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it does not</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-diff"></a><h3>nm_connection_diff ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_connection_diff (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *a</code></em>, + <em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *b</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags"><span class="type">NMSettingCompareFlags</span></a> flags</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> **out_settings</code></em>);</pre> +<p> +Compares two <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> objects for similarity, with comparison behavior +modified by a set of flags. See <a class="link" href="NMSetting.html#nm-setting-compare" title="nm_setting_compare ()"><code class="function">nm_setting_compare()</code></a> for a description of +each flag's behavior. If the connections differ, settings and keys within +each setting that differ are added to the returned <em class="parameter"><code>out_settings</code></em> hash table. +No values are returned, only key names. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>a</code></em> :</span></p></td> +<td>a <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>b</code></em> :</span></p></td> +<td>a second <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> to compare with the first</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>compare flags, e.g. <a class="link" href="NMSetting.html#NM-SETTING-COMPARE-FLAG-EXACT:CAPS"><code class="literal">NM_SETTING_COMPARE_FLAG_EXACT</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>out_settings</code></em> :</span></p></td> +<td>if the +connections differ, on return a hash table mapping setting names to +second-level GHashTable (utf8 to guint32), which contains the key names that +differ mapped to one or more of <a class="link" href="NMSetting.html#NMSettingDiffResult" title="enum NMSettingDiffResult"><code class="literal">NMSettingDiffResult</code></a> as a bitfield. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GLib.HashTable]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the connections contain the same values, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if they do +not</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-verify"></a><h3>nm_connection_verify ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_connection_verify (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> +<p> +Validates the connection and all its settings. Each setting's properties +have allowed values, and some values are dependent on other values. For +example, if a WiFi connection is security enabled, the <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> +setting object's 'security' property must contain the setting name of the +<a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity"><span class="type">NMSettingWirelessSecurity</span></a> object, which must also be present in the +connection for the connection to be valid. As another example, the +<a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> object's 'mac-address' property must be a validly formatted +MAC address. The returned <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> contains information about which +setting and which property failed validation, and how it failed validation. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> to verify</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> +<td>location to store error, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the connection is valid, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if it is not</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-need-secrets"></a><h3>nm_connection_need_secrets ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * nm_connection_need_secrets (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **hints</code></em>);</pre> +<p> +Returns the name of the first setting object in the connection which would +need secrets to make a successful connection. The returned hints are only +intended as a guide to what secrets may be required, because in some +circumstances, there is no way to conclusively determine exactly which +secrets are needed. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>hints</code></em> :</span></p></td> +<td>the address of a pointer to a <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a>, initialized to NULL, which on +return points to an allocated <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> containing the property names of +secrets of the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> which may be required; the caller owns the array +and must free the each array element with <a href="http://library.gnome.org/devel/glib/unstable/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a>, as well as the array +itself with <a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#g-ptr-array-free"><code class="function">g_ptr_array_free()</code></a>. <span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym> callee-allocates][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the setting name of the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object which has invalid or +missing secrets</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-clear-secrets"></a><h3>nm_connection_clear_secrets ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_clear_secrets (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +Clears and frees any secrets that may be stored in the connection, to avoid +keeping secret data in memory when not needed. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-update-secrets"></a><h3>nm_connection_update_secrets ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_connection_update_secrets (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *setting_name</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> *setting_secrets</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> +<p> +Update the specified setting's secrets, given a hash table of secrets +intended for that setting (deserialized from D-Bus for example). Will also +extract the given setting's secrets hash if given a hash of hashes, as would +be returned from <a class="link" href="NMConnection.html#nm-connection-to-hash" title="nm_connection_to_hash ()"><code class="function">nm_connection_to_hash()</code></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting_name</code></em> :</span></p></td> +<td>the setting object name to which the secrets apply</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting_secrets</code></em> :</span></p></td> +<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> mapping +string:<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of setting property names and secrets of the given <em class="parameter"><code>setting_name</code></em>. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GObject.Value]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> +<td>location to store error, or <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td> +<a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the secrets were successfully updated and the connection +is valid, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> on failure or if the setting was never added to the connection</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-set-path"></a><h3>nm_connection_set_path ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_set_path (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *path</code></em>);</pre> +<p> +Sets the D-Bus path of the connection. This property is not serialized, and +is only for the reference of the caller. Sets the <a class="link" href="NMConnection.html#NMConnection--path" title='The "path" property'><span class="type">"path"</span></a> +property. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>path</code></em> :</span></p></td> +<td>the D-Bus path of the connection as given by the settings service +which provides the connection</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-path"></a><h3>nm_connection_get_path ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * nm_connection_get_path (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +Returns the connection's D-Bus path. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the D-Bus path of the connection, previously set by a call to +<a class="link" href="NMConnection.html#nm-connection-set-path" title="nm_connection_set_path ()"><code class="function">nm_connection_set_path()</code></a>.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-for-each-setting-value"></a><h3>nm_connection_for_each_setting_value ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_for_each_setting_value + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingValueIterFn" title="NMSettingValueIterFn ()"><span class="type">NMSettingValueIterFn</span></a> func</code></em>, + <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> +<p> +Iterates over the properties of each <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object in the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>, +calling the supplied user function for each property. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td> +<td>user-supplied function called for each setting's property. <span class="annotation">[<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>]</span> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>user data passed to <em class="parameter"><code>func</code></em> at each invocation</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-to-hash"></a><h3>nm_connection_to_hash ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="returnvalue">GHashTable</span></a> * nm_connection_to_hash (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingHashFlags" title="enum NMSettingHashFlags"><span class="type">NMSettingHashFlags</span></a> flags</code></em>);</pre> +<p> +Converts the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> into a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> describing the connection, +suitable for marshalling over D-Bus or serializing. The hash table mapping +is string:<a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> with each element in the returned hash representing +a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object. The keys are setting object names, and the values +are <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTables</span></a> mapping string:GValue, each of which represents the +properties of the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>hash flags, e.g. <a class="link" href="NMSetting.html#NM-SETTING-HASH-FLAG-ALL:CAPS"><code class="literal">NM_SETTING_HASH_FLAG_ALL</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>a new +<a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> describing the connection, its settings, and each setting's +properties. The caller owns the hash table and must unref the hash table +with <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#g-hash-table-unref"><code class="function">g_hash_table_unref()</code></a> when it is no longer needed. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GLib.HashTable]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-dump"></a><h3>nm_connection_dump ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_dump (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +Print the connection to stdout. For debugging purposes ONLY, should NOT +be used for serialization of the connection or machine-parsed in any way. The +output format is not guaranteed to be stable and may change at any time. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody><tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr></tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-lookup-setting-type"></a><h3>nm_connection_lookup_setting_type ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> nm_connection_lookup_setting_type (<em class="parameter"><code>const <span class="type">char</span> *name</code></em>);</pre> +<p> +Returns the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting's class for a given setting name. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>name</code></em> :</span></p></td> +<td>a setting name</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting's class</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-lookup-setting-type-by-quark"></a><h3>nm_connection_lookup_setting_type_by_quark ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a> nm_connection_lookup_setting_type_by_quark + (<em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Quarks.html#GQuark"><span class="type">GQuark</span></a> error_quark</code></em>);</pre> +<p> +Returns the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting's class for a given setting error quark. +Useful for figuring out which setting a returned error is for. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>error_quark</code></em> :</span></p></td> +<td>a setting error quark</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GType"><span class="type">GType</span></a> of the setting's class</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-uuid"></a><h3>nm_connection_get_uuid ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * nm_connection_get_uuid (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return the UUID from the connection's <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the UUID from the connection's 'connection' setting</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-id"></a><h3>nm_connection_get_id ()</h3> +<pre class="programlisting">const <span class="returnvalue">char</span> * nm_connection_get_id (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return the ID from the connection's <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>the ID from the connection's 'connection' setting</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-802-1x"></a><h3>nm_connection_get_setting_802_1x ()</h3> +<pre class="programlisting"><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="returnvalue">NMSetting8021x</span></a> * nm_connection_get_setting_802_1x + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-bluetooth"></a><h3>nm_connection_get_setting_bluetooth ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="returnvalue">NMSettingBluetooth</span></a> * nm_connection_get_setting_bluetooth + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="type">NMSettingBluetooth</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth"><span class="type">NMSettingBluetooth</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-cdma"></a><h3>nm_connection_get_setting_cdma ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingCdma.html" title="NMSettingCdma"><span class="returnvalue">NMSettingCdma</span></a> * nm_connection_get_setting_cdma + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingCdma.html" title="NMSettingCdma"><span class="type">NMSettingCdma</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingCdma.html" title="NMSettingCdma"><span class="type">NMSettingCdma</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-connection"></a><h3>nm_connection_get_setting_connection ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="returnvalue">NMSettingConnection</span></a> * nm_connection_get_setting_connection + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-gsm"></a><h3>nm_connection_get_setting_gsm ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingGsm.html" title="NMSettingGsm"><span class="returnvalue">NMSettingGsm</span></a> * nm_connection_get_setting_gsm + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingGsm.html" title="NMSettingGsm"><span class="type">NMSettingGsm</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingGsm.html" title="NMSettingGsm"><span class="type">NMSettingGsm</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-ip4-config"></a><h3>nm_connection_get_setting_ip4_config ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config"><span class="returnvalue">NMSettingIP4Config</span></a> * nm_connection_get_setting_ip4_config + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config"><span class="type">NMSettingIP4Config</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config"><span class="type">NMSettingIP4Config</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-ip6-config"></a><h3>nm_connection_get_setting_ip6_config ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="returnvalue">NMSettingIP6Config</span></a> * nm_connection_get_setting_ip6_config + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="type">NMSettingIP6Config</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config"><span class="type">NMSettingIP6Config</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-olpc-mesh"></a><h3>nm_connection_get_setting_olpc_mesh ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh"><span class="returnvalue">NMSettingOlpcMesh</span></a> * nm_connection_get_setting_olpc_mesh + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh"><span class="type">NMSettingOlpcMesh</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingOlpcMesh.html" title="NMSettingOlpcMesh"><span class="type">NMSettingOlpcMesh</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-ppp"></a><h3>nm_connection_get_setting_ppp ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="returnvalue">NMSettingPPP</span></a> * nm_connection_get_setting_ppp + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingPPP.html" title="NMSettingPPP"><span class="type">NMSettingPPP</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-pppoe"></a><h3>nm_connection_get_setting_pppoe ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="returnvalue">NMSettingPPPOE</span></a> * nm_connection_get_setting_pppoe + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <span class="type">NMSettingPPOE</span> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingPPPOE.html" title="NMSettingPPPOE"><span class="type">NMSettingPPPOE</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-vpn"></a><h3>nm_connection_get_setting_vpn ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingVPN.html" title="NMSettingVPN"><span class="returnvalue">NMSettingVPN</span></a> * nm_connection_get_setting_vpn + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingVPN.html" title="NMSettingVPN"><span class="type">NMSettingVPN</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingVPN.html" title="NMSettingVPN"><span class="type">NMSettingVPN</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-wimax"></a><h3>nm_connection_get_setting_wimax ()</h3> +<pre class="programlisting"><span class="returnvalue">NMSettingWimax</span> * nm_connection_get_setting_wimax + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <span class="type">NMSettingWimax</span> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <span class="type">NMSettingWimax</span> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-wired"></a><h3>nm_connection_get_setting_wired ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="returnvalue">NMSettingWired</span></a> * nm_connection_get_setting_wired + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingWired.html" title="NMSettingWired"><span class="type">NMSettingWired</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-wireless"></a><h3>nm_connection_get_setting_wireless ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="returnvalue">NMSettingWireless</span></a> * nm_connection_get_setting_wireless + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingWireless.html" title="NMSettingWireless"><span class="type">NMSettingWireless</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> +<a name="nm-connection-get-setting-wireless-security"></a><h3>nm_connection_get_setting_wireless_security ()</h3> +<pre class="programlisting"><a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity"><span class="returnvalue">NMSettingWirelessSecurity</span></a> * nm_connection_get_setting_wireless_security + (<em class="parameter"><code><a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection</code></em>);</pre> +<p> +A shortcut to return any <a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity"><span class="type">NMSettingWirelessSecurity</span></a> the connection might contain. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> +</td> +</tr> +<tr> +<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> +<td>an <a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity"><span class="type">NMSettingWirelessSecurity</span></a> if the connection contains one, otherwise NULL. <span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span> +</td> +</tr> +</tbody> +</table></div> +</div> +</div> +<div class="refsect1"> +<a name="NMConnection.property-details"></a><h2>Property Details</h2> +<div class="refsect2"> +<a name="NMConnection--path"></a><h3>The <code class="literal">"path"</code> property</h3> +<pre class="programlisting"> "path" <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>* : Read / Write / Construct</pre> +<p> +The connection's D-Bus path, used only by the calling process as a record +of the D-Bus path of the connection as provided by a settings service. +</p> +<p>Default value: NULL</p> +</div> +</div> +<div class="refsect1"> +<a name="NMConnection.signal-details"></a><h2>Signal Details</h2> +<div class="refsect2"> +<a name="NMConnection-secrets-updated"></a><h3>The <code class="literal">"secrets-updated"</code> signal</h3> +<pre class="programlisting"><span class="returnvalue">void</span> user_function (<a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> *connection, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *setting_name, + <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data) : <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS"><code class="literal">Run First</code></a></pre> +<p> +The ::secrets-updated signal is emitted when the secrets of a setting +have been changed. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>connection</code></em> :</span></p></td> +<td>the object on which the signal is emitted</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting_name</code></em> :</span></p></td> +<td>the setting name of the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> for which secrets were +updated</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>user data set when the signal handler was connected.</td> +</tr> +</tbody> +</table></div> +</div> +</div> +</div> +<div class="footer"> +<hr> + Generated by GTK-Doc V1.17</div> +</body> +</html>
\ No newline at end of file diff --git a/docs/libnm-util/html/NMSetting.html b/docs/libnm-util/html/NMSetting.html index c77c59854..b9c258d27 100644 --- a/docs/libnm-util/html/NMSetting.html +++ b/docs/libnm-util/html/NMSetting.html @@ -6,7 +6,7 @@ <meta name="generator" content="DocBook XSL Stylesheets V1.76.1"> <link rel="home" href="index.html" title="libnm-util Reference Manual"> <link rel="up" href="ch01.html" title="libnm-util API Reference"> -<link rel="prev" href="ch01.html" title="libnm-util API Reference"> +<link rel="prev" href="NMConnection.html" title="NMConnection"> <link rel="next" href="NMSettingConnection.html" title="NMSettingConnection"> <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> @@ -14,7 +14,7 @@ <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"> <tr valign="middle"> -<td><a accesskey="p" href="ch01.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> +<td><a accesskey="p" href="NMConnection.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td> <td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">libnm-util Reference Manual</th> @@ -140,7 +140,7 @@ enum <a class="link" href="NMSetting.html#NMSettingDiffResult" ti Each <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> contains properties that describe configuration that applies to a specific network layer (like IPv4 or IPv6 configuration) or device type (like Ethernet, or WiFi). A collection of individual settings together -make up an <span class="type">NMConnection</span>. Each property is strongly typed and usually has +make up an <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a>. Each property is strongly typed and usually has a number of allowed values. See each <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> subclass for a description of properties and allowed values. </p> @@ -420,7 +420,7 @@ when calling <a class="link" href="NMSetting.html#nm-setting-to-hash" title="nm_ <p> Converts the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> into a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> mapping each setting property name to a GValue describing that property, suitable for marshalling over -D-Bus or serializing. The mapping is string:GValue. +D-Bus or serializing. The mapping is string to GValue. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> @@ -437,7 +437,8 @@ D-Bus or serializing. The mapping is string:GValue. </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> -<td>a new <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> describing the setting's properties. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GObject.Value]</span> +<td>a new <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> +describing the setting's properties. <span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GObject.Value]</span> </td> </tr> </tbody> @@ -465,8 +466,9 @@ property names and value types. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>hash</code></em> :</span></p></td> -<td>the <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> containing a string:GValue mapping of properties -that apply to the setting</td> +<td>the <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> containing a +string to GValue mapping of properties that apply to the setting. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GObject.Value]</span> +</td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> @@ -709,10 +711,11 @@ be set to <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Ma </tr> <tr> <td><p><span class="term"><em class="parameter"><code>results</code></em> :</span></p></td> -<td>if the settings differ, on return a -hash table mapping the differing keys to one or more <a class="link" href="NMSetting.html#NMSettingDiffResult" title="enum NMSettingDiffResult"><span class="type">NMSettingDiffResult</span></a> -values OR-ed together. If the settings do not differ, any hash table passed -in is unmodified. If no hash table is passed in, a new one is created. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 guint32]</span> +<td>if the +settings differ, on return a hash table mapping the differing keys to one or +more <a class="link" href="NMSetting.html#NMSettingDiffResult" title="enum NMSettingDiffResult"><code class="literal">NMSettingDiffResult</code></a> values OR-ed together. If the settings do not +differ, any hash table passed in is unmodified. If no hash table is passed +in and the settings differ, a new one is created and returned. <span class="annotation">[<acronym title="Parameter for input and for returning results. Default is transfer full."><span class="acronym">inout</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 guint32]</span> </td> </tr> <tr> @@ -847,8 +850,9 @@ setting (deserialized from D-Bus for example). </tr> <tr> <td><p><span class="term"><em class="parameter"><code>secrets</code></em> :</span></p></td> -<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> mapping string:<a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of setting property names and -secrets</td> +<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a> mapping +string to <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of setting property names and secrets. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> utf8 GObject.Value]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> diff --git a/docs/libnm-util/html/NMSetting8021x.html b/docs/libnm-util/html/NMSetting8021x.html index 8ef172c14..c9e533b58 100644 --- a/docs/libnm-util/html/NMSetting8021x.html +++ b/docs/libnm-util/html/NMSetting8021x.html @@ -104,7 +104,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.htm const <span class="returnvalue">char</span> * <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-get-ca-cert-path" title="nm_setting_802_1x_get_ca_cert_path ()">nm_setting_802_1x_get_ca_cert_path</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-ca-cert" title="nm_setting_802_1x_set_ca_cert ()">nm_setting_802_1x_set_ca_cert</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); @@ -115,7 +115,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.htm const <span class="returnvalue">char</span> * <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-get-client-cert-path" title="nm_setting_802_1x_get_client_cert_path ()">nm_setting_802_1x_get_client_cert_path</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-client-cert" title="nm_setting_802_1x_set_client_cert ()">nm_setting_802_1x_set_client_cert</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); @@ -136,7 +136,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="N (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-phase2-ca-cert" title="nm_setting_802_1x_set_phase2_ca_cert ()">nm_setting_802_1x_set_phase2_ca_cert</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); @@ -148,7 +148,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="N (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-phase2-client-cert" title="nm_setting_802_1x_set_phase2_client_cert ()">nm_setting_802_1x_set_phase2_client_cert</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>); @@ -164,7 +164,7 @@ const <a href="http://library.gnome.org/devel/glib/unstable/glib-Byte-Arrays.htm const <span class="returnvalue">char</span> * <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-get-private-key-path" title="nm_setting_802_1x_get_private_key_path ()">nm_setting_802_1x_get_private_key_path</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-private-key" title="nm_setting_802_1x_set_private_key ()">nm_setting_802_1x_set_private_key</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *key_path</code></em>, <em class="parameter"><code>const <span class="type">char</span> *password</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, @@ -183,7 +183,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="N (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>); <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> <a class="link" href="NMSetting8021x.html#nm-setting-802-1x-set-phase2-private-key" title="nm_setting_802_1x_set_phase2_private_key ()">nm_setting_802_1x_set_phase2_private_key</a> (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *key_path</code></em>, <em class="parameter"><code>const <span class="type">char</span> *password</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, @@ -984,7 +984,7 @@ of the network cannot be confirmed by the client. <div class="refsect2"> <a name="nm-setting-802-1x-set-ca-cert"></a><h3>nm_setting_802_1x_set_ca_cert ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_ca_cert (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> @@ -1003,10 +1003,10 @@ scheme, or with the path to the certificate file if using the </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> -<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or -<a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the CA certificate file -(PEM or DER format). The path must be UTF-8 encoded; use +<td><p><span class="term"><em class="parameter"><code>cert_path</code></em> :</span></p></td> +<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> +or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the CA certificate +file (PEM or DER format). The path must be UTF-8 encoded; use <a href="http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html#g-filename-to-utf8"><code class="function">g_filename_to_utf8()</code></a> to convert if needed. Passing NULL with any <em class="parameter"><code>scheme</code></em> clears the CA certificate.</td> </tr> @@ -1108,7 +1108,7 @@ authentication method. <div class="refsect2"> <a name="nm-setting-802-1x-set-client-cert"></a><h3>nm_setting_802_1x_set_client_cert ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_client_cert (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> @@ -1132,12 +1132,12 @@ authentication method. </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> -<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or -<a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the client certificate -file (PEM, DER, or PKCS<span class="type">12</span> format). The path must be UTF-8 encoded; use -<a href="http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html#g-filename-to-utf8"><code class="function">g_filename_to_utf8()</code></a> to convert if needed. Passing NULL with any <em class="parameter"><code>scheme</code></em> -clears the client certificate.</td> +<td><p><span class="term"><em class="parameter"><code>cert_path</code></em> :</span></p></td> +<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> +or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the client +certificate file (PEM, DER, or PKCS<span class="type">12</span> format). The path must be UTF-8 +encoded; use <a href="http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html#g-filename-to-utf8"><code class="function">g_filename_to_utf8()</code></a> to convert if needed. Passing NULL with +any <em class="parameter"><code>scheme</code></em> clears the client certificate.</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>scheme</code></em> :</span></p></td> @@ -1354,7 +1354,7 @@ of the network cannot be confirmed by the client. <a name="nm-setting-802-1x-set-phase2-ca-cert"></a><h3>nm_setting_802_1x_set_phase2_ca_cert ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_phase2_ca_cert (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> @@ -1373,9 +1373,9 @@ file if using the <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> -<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or -<a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the "phase2" CA +<td><p><span class="term"><em class="parameter"><code>cert_path</code></em> :</span></p></td> +<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> +or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the "phase2" CA certificate file (PEM or DER format). The path must be UTF-8 encoded; use <a href="http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html#g-filename-to-utf8"><code class="function">g_filename_to_utf8()</code></a> to convert if needed. Passing NULL with any <em class="parameter"><code>scheme</code></em> clears the "phase2" CA certificate.</td> @@ -1481,7 +1481,7 @@ authentication method. <a name="nm-setting-802-1x-set-phase2-client-cert"></a><h3>nm_setting_802_1x_set_phase2_client_cert ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_phase2_client_cert (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *cert_path</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre> @@ -1505,9 +1505,9 @@ authentication method. </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> -<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or -<a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the "phase2" client +<td><p><span class="term"><em class="parameter"><code>cert_path</code></em> :</span></p></td> +<td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> +or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the "phase2" client certificate file (PEM, DER, or PKCS<span class="type">12</span> format). The path must be UTF-8 encoded; use <a href="http://library.gnome.org/devel/glib/unstable/glib-Character-Set-Conversion.html#g-filename-to-utf8"><code class="function">g_filename_to_utf8()</code></a> to convert if needed. Passing NULL with any <em class="parameter"><code>scheme</code></em> clears the "phase2" client certificate.</td> @@ -1699,7 +1699,7 @@ authentication method. <div class="refsect2"> <a name="nm-setting-802-1x-set-private-key"></a><h3>nm_setting_802_1x_set_private_key ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_private_key (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *key_path</code></em>, <em class="parameter"><code>const <span class="type">char</span> *password</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, @@ -1739,7 +1739,7 @@ key password to prevent unauthorized access to unencrypted private key data. </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> +<td><p><span class="term"><em class="parameter"><code>key_path</code></em> :</span></p></td> <td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the private key file (PEM, DER, or PKCS<span class="type">12</span> format). The path must be UTF-8 encoded; use @@ -1924,7 +1924,7 @@ authentication method. <a name="nm-setting-802-1x-set-phase2-private-key"></a><h3>nm_setting_802_1x_set_phase2_private_key ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> nm_setting_802_1x_set_phase2_private_key (<em class="parameter"><code><a class="link" href="NMSetting8021x.html" title="NMSetting8021x"><span class="type">NMSetting8021x</span></a> *setting</code></em>, - <em class="parameter"><code>const <span class="type">char</span> *value</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *key_path</code></em>, <em class="parameter"><code>const <span class="type">char</span> *password</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKScheme" title="enum NMSetting8021xCKScheme"><span class="type">NMSetting8021xCKScheme</span></a> scheme</code></em>, <em class="parameter"><code><a class="link" href="NMSetting8021x.html#NMSetting8021xCKFormat" title="enum NMSetting8021xCKFormat"><span class="type">NMSetting8021xCKFormat</span></a> *out_format</code></em>, @@ -1964,7 +1964,7 @@ key password to prevent unauthorized access to unencrypted private key data. </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> +<td><p><span class="term"><em class="parameter"><code>key_path</code></em> :</span></p></td> <td>when <em class="parameter"><code>scheme</code></em> is set to either <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-PATH:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_PATH</code></a> or <a class="link" href="NMSetting8021x.html#NM-SETTING-802-1X-CK-SCHEME-BLOB:CAPS"><code class="literal">NM_SETTING_802_1X_CK_SCHEME_BLOB</code></a>, pass the path of the "phase2" private key file (PEM, DER, or PKCS<span class="type">12</span> format). The path must be UTF-8 encoded; diff --git a/docs/libnm-util/html/NMSettingConnection.html b/docs/libnm-util/html/NMSettingConnection.html index 27c30ebde..2b113d2dc 100644 --- a/docs/libnm-util/html/NMSettingConnection.html +++ b/docs/libnm-util/html/NMSettingConnection.html @@ -117,8 +117,8 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMSet <a name="NMSettingConnection.description"></a><h2>Description</h2> <p> The <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a> object is a <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> subclass that describes -properties that apply to all <span class="type">NMConnection</span> objects, regardless of what type -of network connection they describe. Each <span class="type">NMConnection</span> object must contain +properties that apply to all <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> objects, regardless of what type +of network connection they describe. Each <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> object must contain a <a class="link" href="NMSettingConnection.html" title="NMSettingConnection"><span class="type">NMSettingConnection</span></a> setting. </p> </div> @@ -170,7 +170,7 @@ Describes errors that may result from operations involving a <td><p><a name="NM-SETTING-CONNECTION-ERROR-TYPE-SETTING-NOT-FOUND:CAPS"></a><span class="term"><code class="literal">NM_SETTING_CONNECTION_ERROR_TYPE_SETTING_NOT_FOUND</code></span></p></td> <td>the <a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> object referenced by the setting name contained in the - <a class="link" href="NMSettingConnection.html#NMSettingConnection--type" title='The "type" property'><span class="type">"type"</span></a> property was not present in the <span class="type">NMConnection</span> + <a class="link" href="NMSettingConnection.html#NMSettingConnection--type" title='The "type" property'><span class="type">"type"</span></a> property was not present in the <a class="link" href="NMConnection.html" title="NMConnection"><span class="type">NMConnection</span></a> </td> </tr> </tbody> diff --git a/docs/libnm-util/html/NMSettingVPN.html b/docs/libnm-util/html/NMSettingVPN.html index e8cd2fb96..c2e4ce52f 100644 --- a/docs/libnm-util/html/NMSettingVPN.html +++ b/docs/libnm-util/html/NMSettingVPN.html @@ -276,7 +276,9 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMSet <em class="parameter"><code><a class="link" href="NMSettingVPN.html#NMVPNIterFunc" title="NMVPNIterFunc ()"><span class="type">NMVPNIterFunc</span></a> func</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> <p> -Iterates all data items stored in this setting +Iterates all data items stored in this setting. It is safe to add, remove, +and modify data items inside <em class="parameter"><code>func</code></em>, though any additions or removals made +during iteration will not be part of the iteration. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> @@ -331,7 +333,9 @@ Iterates all data items stored in this setting <em class="parameter"><code><a class="link" href="NMSettingVPN.html#NMVPNIterFunc" title="NMVPNIterFunc ()"><span class="type">NMVPNIterFunc</span></a> func</code></em>, <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre> <p> -Iterates all secrets stored in this setting. +Iterates all secrets stored in this setting. It is safe to add, remove, +and modify secrets inside <em class="parameter"><code>func</code></em>, though any additions or removals made during +iteration will not be part of the iteration. </p> <div class="variablelist"><table border="0"> <col align="left" valign="top"> diff --git a/docs/libnm-util/html/annotation-glossary.html b/docs/libnm-util/html/annotation-glossary.html index e0a1c8696..5c359816a 100644 --- a/docs/libnm-util/html/annotation-glossary.html +++ b/docs/libnm-util/html/annotation-glossary.html @@ -24,6 +24,8 @@ | <a class="shortcut" href="#glsA">A</a> | + <a class="shortcut" href="#glsI">I</a> + | <a class="shortcut" href="#glsE">E</a> | <a class="shortcut" href="#glsT">T</a> @@ -44,6 +46,10 @@ <dt> <a name="annotation-glossterm-allow-none"></a>allow-none</dt> <dd><p>NULL is ok, both for passing and for returning.</p></dd> +<a name="glsI"></a><h3 class="title">I</h3> +<dt> +<a name="annotation-glossterm-inout"></a>inout</dt> +<dd><p>Parameter for input and for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd> <a name="glsE"></a><h3 class="title">E</h3> <dt> <a name="annotation-glossterm-element-type"></a>element-type</dt> diff --git a/docs/libnm-util/html/api-index-full.html b/docs/libnm-util/html/api-index-full.html index b6776b7dc..0ea92385a 100644 --- a/docs/libnm-util/html/api-index-full.html +++ b/docs/libnm-util/html/api-index-full.html @@ -41,195 +41,195 @@ <a name="api-index-full"></a>API Index</h2></div></div></div> <a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3> <dt> -NMConnection, struct in NMConnection +<a class="link" href="NMConnection.html#NMConnection-struct" title="NMConnection">NMConnection</a>, struct in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NMConnection::secrets-updated, object signal in NMConnection +<a class="link" href="NMConnection.html#NMConnection-secrets-updated" title='The "secrets-updated" signal'>NMConnection::secrets-updated</a>, object signal in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NMConnection:path, object property in NMConnection +<a class="link" href="NMConnection.html#NMConnection--path" title='The "path" property'>NMConnection:path</a>, object property in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NMConnectionClass, struct in NMConnection +<a class="link" href="NMConnection.html#NMConnectionClass" title="NMConnectionClass">NMConnectionClass</a>, struct in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NMConnectionError, enum in NMConnection +<a class="link" href="NMConnection.html#NMConnectionError">NMConnectionError</a>, enum in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_add_setting, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-add-setting" title="nm_connection_add_setting ()">nm_connection_add_setting</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_clear_secrets, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-clear-secrets" title="nm_connection_clear_secrets ()">nm_connection_clear_secrets</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_compare, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-compare" title="nm_connection_compare ()">nm_connection_compare</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_create_setting, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-create-setting" title="nm_connection_create_setting ()">nm_connection_create_setting</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_diff, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-diff" title="nm_connection_diff ()">nm_connection_diff</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_dump, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-dump" title="nm_connection_dump ()">nm_connection_dump</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_duplicate, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-duplicate" title="nm_connection_duplicate ()">nm_connection_duplicate</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NM_CONNECTION_ERROR, macro in NMConnection +<a class="link" href="NMConnection.html#NM-CONNECTION-ERROR:CAPS" title="NM_CONNECTION_ERROR">NM_CONNECTION_ERROR</a>, macro in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_error_quark, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-error-quark" title="nm_connection_error_quark ()">nm_connection_error_quark</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_for_each_setting_value, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-for-each-setting-value" title="nm_connection_for_each_setting_value ()">nm_connection_for_each_setting_value</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_id, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-id" title="nm_connection_get_id ()">nm_connection_get_id</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_path, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-path" title="nm_connection_get_path ()">nm_connection_get_path</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting" title="nm_connection_get_setting ()">nm_connection_get_setting</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_802_1x, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-802-1x" title="nm_connection_get_setting_802_1x ()">nm_connection_get_setting_802_1x</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_bluetooth, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-bluetooth" title="nm_connection_get_setting_bluetooth ()">nm_connection_get_setting_bluetooth</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_by_name, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-by-name" title="nm_connection_get_setting_by_name ()">nm_connection_get_setting_by_name</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_cdma, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-cdma" title="nm_connection_get_setting_cdma ()">nm_connection_get_setting_cdma</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_connection, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-connection" title="nm_connection_get_setting_connection ()">nm_connection_get_setting_connection</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_gsm, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-gsm" title="nm_connection_get_setting_gsm ()">nm_connection_get_setting_gsm</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_ip4_config, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-ip4-config" title="nm_connection_get_setting_ip4_config ()">nm_connection_get_setting_ip4_config</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_ip6_config, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-ip6-config" title="nm_connection_get_setting_ip6_config ()">nm_connection_get_setting_ip6_config</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_olpc_mesh, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-olpc-mesh" title="nm_connection_get_setting_olpc_mesh ()">nm_connection_get_setting_olpc_mesh</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_ppp, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-ppp" title="nm_connection_get_setting_ppp ()">nm_connection_get_setting_ppp</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_pppoe, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-pppoe" title="nm_connection_get_setting_pppoe ()">nm_connection_get_setting_pppoe</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_vpn, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-vpn" title="nm_connection_get_setting_vpn ()">nm_connection_get_setting_vpn</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_wimax, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-wimax" title="nm_connection_get_setting_wimax ()">nm_connection_get_setting_wimax</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_wired, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-wired" title="nm_connection_get_setting_wired ()">nm_connection_get_setting_wired</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_wireless, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-wireless" title="nm_connection_get_setting_wireless ()">nm_connection_get_setting_wireless</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_setting_wireless_security, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-setting-wireless-security" title="nm_connection_get_setting_wireless_security ()">nm_connection_get_setting_wireless_security</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_type, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-type" title="nm_connection_get_type ()">nm_connection_get_type</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_get_uuid, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-get-uuid" title="nm_connection_get_uuid ()">nm_connection_get_uuid</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_lookup_setting_type, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-lookup-setting-type" title="nm_connection_lookup_setting_type ()">nm_connection_lookup_setting_type</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_lookup_setting_type_by_quark, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-lookup-setting-type-by-quark" title="nm_connection_lookup_setting_type_by_quark ()">nm_connection_lookup_setting_type_by_quark</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_need_secrets, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-need-secrets" title="nm_connection_need_secrets ()">nm_connection_need_secrets</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_new, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-new" title="nm_connection_new ()">nm_connection_new</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_new_from_hash, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-new-from-hash" title="nm_connection_new_from_hash ()">nm_connection_new_from_hash</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -NM_CONNECTION_PATH, macro in NMConnection +<a class="link" href="NMConnection.html#NM-CONNECTION-PATH:CAPS" title="NM_CONNECTION_PATH">NM_CONNECTION_PATH</a>, macro in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_remove_setting, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-remove-setting" title="nm_connection_remove_setting ()">nm_connection_remove_setting</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_replace_settings, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-replace-settings" title="nm_connection_replace_settings ()">nm_connection_replace_settings</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_set_path, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-set-path" title="nm_connection_set_path ()">nm_connection_set_path</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_to_hash, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-to-hash" title="nm_connection_to_hash ()">nm_connection_to_hash</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_update_secrets, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-update-secrets" title="nm_connection_update_secrets ()">nm_connection_update_secrets</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> -nm_connection_verify, function in NMConnection +<a class="link" href="NMConnection.html#nm-connection-verify" title="nm_connection_verify ()">nm_connection_verify</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <a name="idxI"></a><h3 class="title">I</h3> @@ -3240,7 +3240,7 @@ NM_SETTING_WIMAX_SETTING_NAME, macro in NMSettingWimax <dd></dd> <a name="idxT"></a><h3 class="title">T</h3> <dt> -NM_TYPE_CONNECTION_ERROR, macro in NMConnection +<a class="link" href="NMConnection.html#NM-TYPE-CONNECTION-ERROR:CAPS" title="NM_TYPE_CONNECTION_ERROR">NM_TYPE_CONNECTION_ERROR</a>, macro in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> diff --git a/docs/libnm-util/html/ch01.html b/docs/libnm-util/html/ch01.html index 2800abf20..52f73af96 100644 --- a/docs/libnm-util/html/ch01.html +++ b/docs/libnm-util/html/ch01.html @@ -7,7 +7,7 @@ <link rel="home" href="index.html" title="libnm-util Reference Manual"> <link rel="up" href="index.html" title="libnm-util Reference Manual"> <link rel="prev" href="index.html" title="libnm-util Reference Manual"> -<link rel="next" href="NMSetting.html" title="NMSetting"> +<link rel="next" href="NMConnection.html" title="NMConnection"> <meta name="generator" content="GTK-Doc V1.17 (XML mode)"> <link rel="stylesheet" href="style.css" type="text/css"> </head> @@ -17,13 +17,16 @@ <td> </td> <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td> <th width="100%" align="center">libnm-util Reference Manual</th> -<td><a accesskey="n" href="NMSetting.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> +<td><a accesskey="n" href="NMConnection.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr></table> <div class="chapter"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id396708"></a>libnm-util API Reference</h2></div></div></div> +<a name="id501566"></a>libnm-util API Reference</h2></div></div></div> <div class="toc"><dl> <dt> +<span class="refentrytitle"><a href="NMConnection.html">NMConnection</a></span><span class="refpurpose"> — Describes a connection to specific network or provider</span> +</dt> +<dt> <span class="refentrytitle"><a href="NMSetting.html">NMSetting</a></span><span class="refpurpose"> — Describes related configuration information</span> </dt> <dt> @@ -75,7 +78,6 @@ <span class="refentrytitle"><a href="libnm-util-nm-utils.html">nm-utils</a></span><span class="refpurpose"> — Utility functions</span> </dt> </dl></div> -<span style="color: red"><xi:include></xi:include></span> </div> <div class="footer"> <hr> diff --git a/docs/libnm-util/html/index.html b/docs/libnm-util/html/index.html index 90ada1bff..feb9a71be 100644 --- a/docs/libnm-util/html/index.html +++ b/docs/libnm-util/html/index.html @@ -26,6 +26,9 @@ <dt><span class="chapter"><a href="ch01.html">libnm-util API Reference</a></span></dt> <dd><dl> <dt> +<span class="refentrytitle"><a href="NMConnection.html">NMConnection</a></span><span class="refpurpose"> — Describes a connection to specific network or provider</span> +</dt> +<dt> <span class="refentrytitle"><a href="NMSetting.html">NMSetting</a></span><span class="refpurpose"> — Describes related configuration information</span> </dt> <dt> diff --git a/docs/libnm-util/html/index.sgml b/docs/libnm-util/html/index.sgml index d9981473f..4140e8969 100644 --- a/docs/libnm-util/html/index.sgml +++ b/docs/libnm-util/html/index.sgml @@ -1,4 +1,66 @@ <ONLINE href="http://projects.gnome.org/NetworkManager/developers/libnm-util/09/"> +<ANCHOR id="NMConnection" href="libnm-util/NMConnection.html"> +<ANCHOR id="NMConnection.synopsis" href="libnm-util/NMConnection.html#NMConnection.synopsis"> +<ANCHOR id="NMConnectionError" href="libnm-util/NMConnection.html#NMConnectionError"> +<ANCHOR id="NMConnection.object-hierarchy" href="libnm-util/NMConnection.html#NMConnection.object-hierarchy"> +<ANCHOR id="NMConnection.properties" href="libnm-util/NMConnection.html#NMConnection.properties"> +<ANCHOR id="NMConnection.signals" href="libnm-util/NMConnection.html#NMConnection.signals"> +<ANCHOR id="NMConnection.description" href="libnm-util/NMConnection.html#NMConnection.description"> +<ANCHOR id="NMConnection.details" href="libnm-util/NMConnection.html#NMConnection.details"> +<ANCHOR id="NMConnectionError" href="libnm-util/NMConnection.html#NMConnectionError"> +<ANCHOR id="NM-CONNECTION-ERROR-UNKNOWN:CAPS" href="libnm-util/NMConnection.html#NM-CONNECTION-ERROR-UNKNOWN:CAPS"> +<ANCHOR id="NM-CONNECTION-ERROR-CONNECTION-SETTING-NOT-FOUND:CAPS" href="libnm-util/NMConnection.html#NM-CONNECTION-ERROR-CONNECTION-SETTING-NOT-FOUND:CAPS"> +<ANCHOR id="NM-CONNECTION-ERROR-CONNECTION-TYPE-INVALID:CAPS" href="libnm-util/NMConnection.html#NM-CONNECTION-ERROR-CONNECTION-TYPE-INVALID:CAPS"> +<ANCHOR id="NM-TYPE-CONNECTION-ERROR:CAPS" href="libnm-util/NMConnection.html#NM-TYPE-CONNECTION-ERROR:CAPS"> +<ANCHOR id="NM-CONNECTION-ERROR:CAPS" href="libnm-util/NMConnection.html#NM-CONNECTION-ERROR:CAPS"> +<ANCHOR id="nm-connection-error-quark" href="libnm-util/NMConnection.html#nm-connection-error-quark"> +<ANCHOR id="NM-CONNECTION-PATH:CAPS" href="libnm-util/NMConnection.html#NM-CONNECTION-PATH:CAPS"> +<ANCHOR id="NMConnection-struct" href="libnm-util/NMConnection.html#NMConnection-struct"> +<ANCHOR id="NMConnectionClass" href="libnm-util/NMConnection.html#NMConnectionClass"> +<ANCHOR id="nm-connection-get-type" href="libnm-util/NMConnection.html#nm-connection-get-type"> +<ANCHOR id="nm-connection-new" href="libnm-util/NMConnection.html#nm-connection-new"> +<ANCHOR id="nm-connection-new-from-hash" href="libnm-util/NMConnection.html#nm-connection-new-from-hash"> +<ANCHOR id="nm-connection-duplicate" href="libnm-util/NMConnection.html#nm-connection-duplicate"> +<ANCHOR id="nm-connection-create-setting" href="libnm-util/NMConnection.html#nm-connection-create-setting"> +<ANCHOR id="nm-connection-add-setting" href="libnm-util/NMConnection.html#nm-connection-add-setting"> +<ANCHOR id="nm-connection-remove-setting" href="libnm-util/NMConnection.html#nm-connection-remove-setting"> +<ANCHOR id="nm-connection-get-setting" href="libnm-util/NMConnection.html#nm-connection-get-setting"> +<ANCHOR id="nm-connection-get-setting-by-name" href="libnm-util/NMConnection.html#nm-connection-get-setting-by-name"> +<ANCHOR id="nm-connection-replace-settings" href="libnm-util/NMConnection.html#nm-connection-replace-settings"> +<ANCHOR id="nm-connection-compare" href="libnm-util/NMConnection.html#nm-connection-compare"> +<ANCHOR id="nm-connection-diff" href="libnm-util/NMConnection.html#nm-connection-diff"> +<ANCHOR id="nm-connection-verify" href="libnm-util/NMConnection.html#nm-connection-verify"> +<ANCHOR id="nm-connection-need-secrets" href="libnm-util/NMConnection.html#nm-connection-need-secrets"> +<ANCHOR id="nm-connection-clear-secrets" href="libnm-util/NMConnection.html#nm-connection-clear-secrets"> +<ANCHOR id="nm-connection-update-secrets" href="libnm-util/NMConnection.html#nm-connection-update-secrets"> +<ANCHOR id="nm-connection-set-path" href="libnm-util/NMConnection.html#nm-connection-set-path"> +<ANCHOR id="nm-connection-get-path" href="libnm-util/NMConnection.html#nm-connection-get-path"> +<ANCHOR id="nm-connection-for-each-setting-value" href="libnm-util/NMConnection.html#nm-connection-for-each-setting-value"> +<ANCHOR id="nm-connection-to-hash" href="libnm-util/NMConnection.html#nm-connection-to-hash"> +<ANCHOR id="nm-connection-dump" href="libnm-util/NMConnection.html#nm-connection-dump"> +<ANCHOR id="nm-connection-lookup-setting-type" href="libnm-util/NMConnection.html#nm-connection-lookup-setting-type"> +<ANCHOR id="nm-connection-lookup-setting-type-by-quark" href="libnm-util/NMConnection.html#nm-connection-lookup-setting-type-by-quark"> +<ANCHOR id="nm-connection-get-uuid" href="libnm-util/NMConnection.html#nm-connection-get-uuid"> +<ANCHOR id="nm-connection-get-id" href="libnm-util/NMConnection.html#nm-connection-get-id"> +<ANCHOR id="nm-connection-get-setting-802-1x" href="libnm-util/NMConnection.html#nm-connection-get-setting-802-1x"> +<ANCHOR id="nm-connection-get-setting-bluetooth" href="libnm-util/NMConnection.html#nm-connection-get-setting-bluetooth"> +<ANCHOR id="nm-connection-get-setting-cdma" href="libnm-util/NMConnection.html#nm-connection-get-setting-cdma"> +<ANCHOR id="nm-connection-get-setting-connection" href="libnm-util/NMConnection.html#nm-connection-get-setting-connection"> +<ANCHOR id="nm-connection-get-setting-gsm" href="libnm-util/NMConnection.html#nm-connection-get-setting-gsm"> +<ANCHOR id="nm-connection-get-setting-ip4-config" href="libnm-util/NMConnection.html#nm-connection-get-setting-ip4-config"> +<ANCHOR id="nm-connection-get-setting-ip6-config" href="libnm-util/NMConnection.html#nm-connection-get-setting-ip6-config"> +<ANCHOR id="nm-connection-get-setting-olpc-mesh" href="libnm-util/NMConnection.html#nm-connection-get-setting-olpc-mesh"> +<ANCHOR id="nm-connection-get-setting-ppp" href="libnm-util/NMConnection.html#nm-connection-get-setting-ppp"> +<ANCHOR id="nm-connection-get-setting-pppoe" href="libnm-util/NMConnection.html#nm-connection-get-setting-pppoe"> +<ANCHOR id="nm-connection-get-setting-vpn" href="libnm-util/NMConnection.html#nm-connection-get-setting-vpn"> +<ANCHOR id="nm-connection-get-setting-wimax" href="libnm-util/NMConnection.html#nm-connection-get-setting-wimax"> +<ANCHOR id="nm-connection-get-setting-wired" href="libnm-util/NMConnection.html#nm-connection-get-setting-wired"> +<ANCHOR id="nm-connection-get-setting-wireless" href="libnm-util/NMConnection.html#nm-connection-get-setting-wireless"> +<ANCHOR id="nm-connection-get-setting-wireless-security" href="libnm-util/NMConnection.html#nm-connection-get-setting-wireless-security"> +<ANCHOR id="NMConnection.property-details" href="libnm-util/NMConnection.html#NMConnection.property-details"> +<ANCHOR id="NMConnection--path" href="libnm-util/NMConnection.html#NMConnection--path"> +<ANCHOR id="NMConnection.signal-details" href="libnm-util/NMConnection.html#NMConnection.signal-details"> +<ANCHOR id="NMConnection-secrets-updated" href="libnm-util/NMConnection.html#NMConnection-secrets-updated"> <ANCHOR id="NMSetting" href="libnm-util/NMSetting.html"> <ANCHOR id="NMSetting.synopsis" href="libnm-util/NMSetting.html#NMSetting.synopsis"> <ANCHOR id="NMSettingError" href="libnm-util/NMSetting.html#NMSettingError"> @@ -950,6 +1012,7 @@ <ANCHOR id="nm-utils-wifi-is-channel-valid" href="libnm-util/libnm-util-nm-utils.html#nm-utils-wifi-is-channel-valid"> <ANCHOR id="annotation-glossterm-out" href="libnm-util/annotation-glossary.html#annotation-glossterm-out"> <ANCHOR id="annotation-glossterm-allow-none" href="libnm-util/annotation-glossary.html#annotation-glossterm-allow-none"> +<ANCHOR id="annotation-glossterm-inout" href="libnm-util/annotation-glossary.html#annotation-glossterm-inout"> <ANCHOR id="annotation-glossterm-element-type" href="libnm-util/annotation-glossary.html#annotation-glossterm-element-type"> <ANCHOR id="annotation-glossterm-transfer container" href="libnm-util/annotation-glossary.html#annotation-glossterm-transfer container"> <ANCHOR id="annotation-glossterm-scope call" href="libnm-util/annotation-glossary.html#annotation-glossterm-scope call"> diff --git a/docs/libnm-util/html/libnm-util.devhelp b/docs/libnm-util/html/libnm-util.devhelp index 3fa339f1d..b8b98e40f 100644 --- a/docs/libnm-util/html/libnm-util.devhelp +++ b/docs/libnm-util/html/libnm-util.devhelp @@ -3,6 +3,7 @@ <book xmlns="http://www.devhelp.net/book" title="libnm-util Reference Manual" link="index.html" author="" name="libnm-util"> <chapters> <sub name="libnm-util API Reference" link="ch01.html"> + <sub name="NMConnection" link="NMConnection.html"/> <sub name="NMSetting" link="NMSetting.html"/> <sub name="NMSettingConnection" link="NMSettingConnection.html"/> <sub name="NMSettingWired" link="NMSettingWired.html"/> @@ -26,6 +27,55 @@ <sub name="Annotation Glossary" link="annotation-glossary.html"/> </chapters> <functions> + <function name="enum NMConnectionError" link="NMConnection.html#NMConnectionError"/> + <function name="NM_TYPE_CONNECTION_ERROR" link="NMConnection.html#NM-TYPE-CONNECTION-ERROR:CAPS"/> + <function name="NM_CONNECTION_ERROR" link="NMConnection.html#NM-CONNECTION-ERROR:CAPS"/> + <function name="nm_connection_error_quark ()" link="NMConnection.html#nm-connection-error-quark"/> + <function name="NM_CONNECTION_PATH" link="NMConnection.html#NM-CONNECTION-PATH:CAPS"/> + <function name="NMConnection" link="NMConnection.html#NMConnection-struct"/> + <function name="NMConnectionClass" link="NMConnection.html#NMConnectionClass"/> + <function name="nm_connection_get_type ()" link="NMConnection.html#nm-connection-get-type"/> + <function name="nm_connection_new ()" link="NMConnection.html#nm-connection-new"/> + <function name="nm_connection_new_from_hash ()" link="NMConnection.html#nm-connection-new-from-hash"/> + <function name="nm_connection_duplicate ()" link="NMConnection.html#nm-connection-duplicate"/> + <function name="nm_connection_create_setting ()" link="NMConnection.html#nm-connection-create-setting"/> + <function name="nm_connection_add_setting ()" link="NMConnection.html#nm-connection-add-setting"/> + <function name="nm_connection_remove_setting ()" link="NMConnection.html#nm-connection-remove-setting"/> + <function name="nm_connection_get_setting ()" link="NMConnection.html#nm-connection-get-setting"/> + <function name="nm_connection_get_setting_by_name ()" link="NMConnection.html#nm-connection-get-setting-by-name"/> + <function name="nm_connection_replace_settings ()" link="NMConnection.html#nm-connection-replace-settings"/> + <function name="nm_connection_compare ()" link="NMConnection.html#nm-connection-compare"/> + <function name="nm_connection_diff ()" link="NMConnection.html#nm-connection-diff"/> + <function name="nm_connection_verify ()" link="NMConnection.html#nm-connection-verify"/> + <function name="nm_connection_need_secrets ()" link="NMConnection.html#nm-connection-need-secrets"/> + <function name="nm_connection_clear_secrets ()" link="NMConnection.html#nm-connection-clear-secrets"/> + <function name="nm_connection_update_secrets ()" link="NMConnection.html#nm-connection-update-secrets"/> + <function name="nm_connection_set_path ()" link="NMConnection.html#nm-connection-set-path"/> + <function name="nm_connection_get_path ()" link="NMConnection.html#nm-connection-get-path"/> + <function name="nm_connection_for_each_setting_value ()" link="NMConnection.html#nm-connection-for-each-setting-value"/> + <function name="nm_connection_to_hash ()" link="NMConnection.html#nm-connection-to-hash"/> + <function name="nm_connection_dump ()" link="NMConnection.html#nm-connection-dump"/> + <function name="nm_connection_lookup_setting_type ()" link="NMConnection.html#nm-connection-lookup-setting-type"/> + <function name="nm_connection_lookup_setting_type_by_quark ()" link="NMConnection.html#nm-connection-lookup-setting-type-by-quark"/> + <function name="nm_connection_get_uuid ()" link="NMConnection.html#nm-connection-get-uuid"/> + <function name="nm_connection_get_id ()" link="NMConnection.html#nm-connection-get-id"/> + <function name="nm_connection_get_setting_802_1x ()" link="NMConnection.html#nm-connection-get-setting-802-1x"/> + <function name="nm_connection_get_setting_bluetooth ()" link="NMConnection.html#nm-connection-get-setting-bluetooth"/> + <function name="nm_connection_get_setting_cdma ()" link="NMConnection.html#nm-connection-get-setting-cdma"/> + <function name="nm_connection_get_setting_connection ()" link="NMConnection.html#nm-connection-get-setting-connection"/> + <function name="nm_connection_get_setting_gsm ()" link="NMConnection.html#nm-connection-get-setting-gsm"/> + <function name="nm_connection_get_setting_ip4_config ()" link="NMConnection.html#nm-connection-get-setting-ip4-config"/> + <function name="nm_connection_get_setting_ip6_config ()" link="NMConnection.html#nm-connection-get-setting-ip6-config"/> + <function name="nm_connection_get_setting_olpc_mesh ()" link="NMConnection.html#nm-connection-get-setting-olpc-mesh"/> + <function name="nm_connection_get_setting_ppp ()" link="NMConnection.html#nm-connection-get-setting-ppp"/> + <function name="nm_connection_get_setting_pppoe ()" link="NMConnection.html#nm-connection-get-setting-pppoe"/> + <function name="nm_connection_get_setting_vpn ()" link="NMConnection.html#nm-connection-get-setting-vpn"/> + <function name="nm_connection_get_setting_wimax ()" link="NMConnection.html#nm-connection-get-setting-wimax"/> + <function name="nm_connection_get_setting_wired ()" link="NMConnection.html#nm-connection-get-setting-wired"/> + <function name="nm_connection_get_setting_wireless ()" link="NMConnection.html#nm-connection-get-setting-wireless"/> + <function name="nm_connection_get_setting_wireless_security ()" link="NMConnection.html#nm-connection-get-setting-wireless-security"/> + <function name="The "path" property" link="NMConnection.html#NMConnection--path"/> + <function name="The "secrets-updated" signal" link="NMConnection.html#NMConnection-secrets-updated"/> <function name="enum NMSettingError" link="NMSetting.html#NMSettingError"/> <function name="NM_TYPE_SETTING_ERROR" link="NMSetting.html#NM-TYPE-SETTING-ERROR:CAPS"/> <function name="NM_SETTING_ERROR" link="NMSetting.html#NM-SETTING-ERROR:CAPS"/> diff --git a/docs/libnm-util/html/libnm-util.devhelp2 b/docs/libnm-util/html/libnm-util.devhelp2 index 9cb466dd2..0104b4d08 100644 --- a/docs/libnm-util/html/libnm-util.devhelp2 +++ b/docs/libnm-util/html/libnm-util.devhelp2 @@ -3,6 +3,7 @@ <book xmlns="http://www.devhelp.net/book" title="libnm-util Reference Manual" link="index.html" author="" name="libnm-util" version="2" language="c"> <chapters> <sub name="libnm-util API Reference" link="ch01.html"> + <sub name="NMConnection" link="NMConnection.html"/> <sub name="NMSetting" link="NMSetting.html"/> <sub name="NMSettingConnection" link="NMSettingConnection.html"/> <sub name="NMSettingWired" link="NMSettingWired.html"/> @@ -26,6 +27,55 @@ <sub name="Annotation Glossary" link="annotation-glossary.html"/> </chapters> <functions> + <keyword type="enum" name="enum NMConnectionError" link="NMConnection.html#NMConnectionError"/> + <keyword type="macro" name="NM_TYPE_CONNECTION_ERROR" link="NMConnection.html#NM-TYPE-CONNECTION-ERROR:CAPS"/> + <keyword type="macro" name="NM_CONNECTION_ERROR" link="NMConnection.html#NM-CONNECTION-ERROR:CAPS"/> + <keyword type="function" name="nm_connection_error_quark ()" link="NMConnection.html#nm-connection-error-quark"/> + <keyword type="macro" name="NM_CONNECTION_PATH" link="NMConnection.html#NM-CONNECTION-PATH:CAPS"/> + <keyword type="struct" name="NMConnection" link="NMConnection.html#NMConnection-struct"/> + <keyword type="struct" name="NMConnectionClass" link="NMConnection.html#NMConnectionClass"/> + <keyword type="function" name="nm_connection_get_type ()" link="NMConnection.html#nm-connection-get-type"/> + <keyword type="function" name="nm_connection_new ()" link="NMConnection.html#nm-connection-new"/> + <keyword type="function" name="nm_connection_new_from_hash ()" link="NMConnection.html#nm-connection-new-from-hash"/> + <keyword type="function" name="nm_connection_duplicate ()" link="NMConnection.html#nm-connection-duplicate"/> + <keyword type="function" name="nm_connection_create_setting ()" link="NMConnection.html#nm-connection-create-setting"/> + <keyword type="function" name="nm_connection_add_setting ()" link="NMConnection.html#nm-connection-add-setting"/> + <keyword type="function" name="nm_connection_remove_setting ()" link="NMConnection.html#nm-connection-remove-setting"/> + <keyword type="function" name="nm_connection_get_setting ()" link="NMConnection.html#nm-connection-get-setting"/> + <keyword type="function" name="nm_connection_get_setting_by_name ()" link="NMConnection.html#nm-connection-get-setting-by-name"/> + <keyword type="function" name="nm_connection_replace_settings ()" link="NMConnection.html#nm-connection-replace-settings"/> + <keyword type="function" name="nm_connection_compare ()" link="NMConnection.html#nm-connection-compare"/> + <keyword type="function" name="nm_connection_diff ()" link="NMConnection.html#nm-connection-diff"/> + <keyword type="function" name="nm_connection_verify ()" link="NMConnection.html#nm-connection-verify"/> + <keyword type="function" name="nm_connection_need_secrets ()" link="NMConnection.html#nm-connection-need-secrets"/> + <keyword type="function" name="nm_connection_clear_secrets ()" link="NMConnection.html#nm-connection-clear-secrets"/> + <keyword type="function" name="nm_connection_update_secrets ()" link="NMConnection.html#nm-connection-update-secrets"/> + <keyword type="function" name="nm_connection_set_path ()" link="NMConnection.html#nm-connection-set-path"/> + <keyword type="function" name="nm_connection_get_path ()" link="NMConnection.html#nm-connection-get-path"/> + <keyword type="function" name="nm_connection_for_each_setting_value ()" link="NMConnection.html#nm-connection-for-each-setting-value"/> + <keyword type="function" name="nm_connection_to_hash ()" link="NMConnection.html#nm-connection-to-hash"/> + <keyword type="function" name="nm_connection_dump ()" link="NMConnection.html#nm-connection-dump"/> + <keyword type="function" name="nm_connection_lookup_setting_type ()" link="NMConnection.html#nm-connection-lookup-setting-type"/> + <keyword type="function" name="nm_connection_lookup_setting_type_by_quark ()" link="NMConnection.html#nm-connection-lookup-setting-type-by-quark"/> + <keyword type="function" name="nm_connection_get_uuid ()" link="NMConnection.html#nm-connection-get-uuid"/> + <keyword type="function" name="nm_connection_get_id ()" link="NMConnection.html#nm-connection-get-id"/> + <keyword type="function" name="nm_connection_get_setting_802_1x ()" link="NMConnection.html#nm-connection-get-setting-802-1x"/> + <keyword type="function" name="nm_connection_get_setting_bluetooth ()" link="NMConnection.html#nm-connection-get-setting-bluetooth"/> + <keyword type="function" name="nm_connection_get_setting_cdma ()" link="NMConnection.html#nm-connection-get-setting-cdma"/> + <keyword type="function" name="nm_connection_get_setting_connection ()" link="NMConnection.html#nm-connection-get-setting-connection"/> + <keyword type="function" name="nm_connection_get_setting_gsm ()" link="NMConnection.html#nm-connection-get-setting-gsm"/> + <keyword type="function" name="nm_connection_get_setting_ip4_config ()" link="NMConnection.html#nm-connection-get-setting-ip4-config"/> + <keyword type="function" name="nm_connection_get_setting_ip6_config ()" link="NMConnection.html#nm-connection-get-setting-ip6-config"/> + <keyword type="function" name="nm_connection_get_setting_olpc_mesh ()" link="NMConnection.html#nm-connection-get-setting-olpc-mesh"/> + <keyword type="function" name="nm_connection_get_setting_ppp ()" link="NMConnection.html#nm-connection-get-setting-ppp"/> + <keyword type="function" name="nm_connection_get_setting_pppoe ()" link="NMConnection.html#nm-connection-get-setting-pppoe"/> + <keyword type="function" name="nm_connection_get_setting_vpn ()" link="NMConnection.html#nm-connection-get-setting-vpn"/> + <keyword type="function" name="nm_connection_get_setting_wimax ()" link="NMConnection.html#nm-connection-get-setting-wimax"/> + <keyword type="function" name="nm_connection_get_setting_wired ()" link="NMConnection.html#nm-connection-get-setting-wired"/> + <keyword type="function" name="nm_connection_get_setting_wireless ()" link="NMConnection.html#nm-connection-get-setting-wireless"/> + <keyword type="function" name="nm_connection_get_setting_wireless_security ()" link="NMConnection.html#nm-connection-get-setting-wireless-security"/> + <keyword type="property" name="The "path" property" link="NMConnection.html#NMConnection--path"/> + <keyword type="signal" name="The "secrets-updated" signal" link="NMConnection.html#NMConnection-secrets-updated"/> <keyword type="enum" name="enum NMSettingError" link="NMSetting.html#NMSettingError"/> <keyword type="macro" name="NM_TYPE_SETTING_ERROR" link="NMSetting.html#NM-TYPE-SETTING-ERROR:CAPS"/> <keyword type="macro" name="NM_SETTING_ERROR" link="NMSetting.html#NM-SETTING-ERROR:CAPS"/> @@ -810,6 +860,9 @@ <keyword type="function" name="nm_utils_wifi_channel_to_freq ()" link="libnm-util-nm-utils.html#nm-utils-wifi-channel-to-freq"/> <keyword type="function" name="nm_utils_wifi_find_next_channel ()" link="libnm-util-nm-utils.html#nm-utils-wifi-find-next-channel"/> <keyword type="function" name="nm_utils_wifi_is_channel_valid ()" link="libnm-util-nm-utils.html#nm-utils-wifi-is-channel-valid"/> + <keyword type="constant" name="NM_CONNECTION_ERROR_UNKNOWN" link="NMConnection.html#NM-CONNECTION-ERROR-UNKNOWN:CAPS"/> + <keyword type="constant" name="NM_CONNECTION_ERROR_CONNECTION_SETTING_NOT_FOUND" link="NMConnection.html#NM-CONNECTION-ERROR-CONNECTION-SETTING-NOT-FOUND:CAPS"/> + <keyword type="constant" name="NM_CONNECTION_ERROR_CONNECTION_TYPE_INVALID" link="NMConnection.html#NM-CONNECTION-ERROR-CONNECTION-TYPE-INVALID:CAPS"/> <keyword type="constant" name="NM_SETTING_ERROR_UNKNOWN" link="NMSetting.html#NM-SETTING-ERROR-UNKNOWN:CAPS"/> <keyword type="constant" name="NM_SETTING_ERROR_PROPERTY_NOT_FOUND" link="NMSetting.html#NM-SETTING-ERROR-PROPERTY-NOT-FOUND:CAPS"/> <keyword type="constant" name="NM_SETTING_ERROR_PROPERTY_NOT_SECRET" link="NMSetting.html#NM-SETTING-ERROR-PROPERTY-NOT-SECRET:CAPS"/> diff --git a/docs/libnm-util/html/object-tree.html b/docs/libnm-util/html/object-tree.html index bbe2a6d2c..a69c8dbb3 100644 --- a/docs/libnm-util/html/object-tree.html +++ b/docs/libnm-util/html/object-tree.html @@ -24,7 +24,7 @@ <a name="object-tree"></a>Object Hierarchy</h2></div></div></div> <pre class="screen"> <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject">GObject</a> - NMConnection + <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> <a class="link" href="NMSetting8021x.html" title="NMSetting8021x">NMSetting8021x</a> <a class="link" href="NMSettingBluetooth.html" title="NMSettingBluetooth">NMSettingBluetooth</a> @@ -43,7 +43,7 @@ <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a> <a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity">NMSettingWirelessSecurity</a> GEnum - NMConnectionError + <a class="link" href="NMConnection.html#NMConnectionError">NMConnectionError</a> <a class="link" href="NMSetting8021x.html#NMSetting8021xError">NMSetting8021xError</a> <a class="link" href="NMSettingBluetooth.html#NMSettingBluetoothError">NMSettingBluetoothError</a> <a class="link" href="NMSettingCdma.html#NMSettingCdmaError">NMSettingCdmaError</a> diff --git a/include/nm-version.h b/include/nm-version.h index b404108f7..972aee275 100644 --- a/include/nm-version.h +++ b/include/nm-version.h @@ -43,7 +43,7 @@ * Evaluates to the micro version number of NetworkManager which this source * compiled against. */ -#define NM_MICRO_VERSION (999) +#define NM_MICRO_VERSION (9997) /** * NM_CHECK_VERSION: diff --git a/introspection/nm-active-connection.xml b/introspection/nm-active-connection.xml index 1594764ee..a150b2c82 100644 --- a/introspection/nm-active-connection.xml +++ b/introspection/nm-active-connection.xml @@ -2,6 +2,14 @@ <node name="/" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0"> <interface name="org.freedesktop.NetworkManager.Connection.Active"> + <tp:docstring> + Objects that implement the Connection.Active interface represent an attempt + to connect to a network using the details provided by a Connection object. + The Connection.Active object tracks the life-cycle of the connection + attempt and if successful indicates whether the connected network is the + "default" or preferred network for access. + </tp:docstring> + <property name="Connection" type="o" access="read"> <tp:docstring>The path of the connection.</tp:docstring> </property> diff --git a/introspection/nm-device.xml b/introspection/nm-device.xml index 13c542a6d..5fdda96d3 100644 --- a/introspection/nm-device.xml +++ b/introspection/nm-device.xml @@ -51,6 +51,14 @@ The current state of the device. </tp:docstring> </property> + <property name="ActiveConnection" type="o" access="read"> + <tp:docstring> + Object path of an ActiveConnection object that "owns" this device during + activation. The ActiveConnection object tracks the life-cycle of a + connection to a specific network and implements the + org.freedesktop.NetworkManager.Connection.Active D-Bus interface. + </tp:docstring> + </property> <property name="Ip4Config" type="o" access="read"> <tp:docstring> Object path of the Ip4Config object describing the configuration of the device. Only valid when the device is in the NM_DEVICE_STATE_ACTIVATED state. diff --git a/introspection/nm-manager.xml b/introspection/nm-manager.xml index ee84a47b0..1bb76d09f 100644 --- a/introspection/nm-manager.xml +++ b/introspection/nm-manager.xml @@ -226,7 +226,8 @@ related to that domain. Available domains are: [NONE, HW, RFKILL, ETHER, WIFI, BT, MB, DHCP4, DHCP6, PPP, WIFI_SCAN, IP4, IP6, AUTOIP4, DNS, VPN, SHARING, SUPPLICANT, USER_SET, SYS_SET, SUSPEND, CORE, - DEVICE, OLPC] + DEVICE, OLPC]. If an empty string is given, the log level is changed + but the current set of log domains remains unchanged. </tp:docstring> </arg> </method> diff --git a/libnm-glib/libnm-glib.ver b/libnm-glib/libnm-glib.ver index 64ff70ada..f42368b87 100644 --- a/libnm-glib/libnm-glib.ver +++ b/libnm-glib/libnm-glib.ver @@ -66,6 +66,7 @@ global: nm_device_ethernet_get_type; nm_device_ethernet_new; nm_device_filter_connections; + nm_device_get_active_connection; nm_device_get_capabilities; nm_device_get_device_type; nm_device_get_dhcp4_config; @@ -75,6 +76,7 @@ global: nm_device_get_iface; nm_device_get_ip4_config; nm_device_get_ip6_config; + nm_device_get_ip_iface; nm_device_get_managed; nm_device_get_product; nm_device_get_state; diff --git a/libnm-glib/libnm_glib.c b/libnm-glib/libnm_glib.c index 911d0cec4..1d7557861 100644 --- a/libnm-glib/libnm_glib.c +++ b/libnm-glib/libnm_glib.c @@ -64,14 +64,13 @@ typedef struct libnm_glib_callback } libnm_glib_callback; -static void libnm_glib_schedule_dbus_watcher (libnm_glib_ctx *ctx); -static DBusConnection * libnm_glib_dbus_init (gpointer *user_data, GMainContext *context); -static void libnm_glib_update_state (libnm_glib_ctx *ctx, NMState state); +static void _libnm_glib_schedule_dbus_watcher (libnm_glib_ctx *ctx); +static DBusConnection * _libnm_glib_dbus_init (gpointer *user_data, GMainContext *context); +static void _libnm_glib_update_state (libnm_glib_ctx *ctx, NMState state); static void -libnm_glib_nm_state_cb (DBusPendingCall *pcall, - void *user_data) +_libnm_glib_nm_state_cb (DBusPendingCall *pcall, void *user_data) { DBusMessage * reply; libnm_glib_ctx * ctx = (libnm_glib_ctx *) user_data; @@ -96,7 +95,7 @@ libnm_glib_nm_state_cb (DBusPendingCall *pcall, } if (dbus_message_get_args (reply, NULL, DBUS_TYPE_UINT32, &nm_state, DBUS_TYPE_INVALID)) - libnm_glib_update_state (ctx, nm_state); + _libnm_glib_update_state (ctx, nm_state); dbus_message_unref (reply); @@ -105,7 +104,7 @@ out: } static void -libnm_glib_get_nm_state (libnm_glib_ctx *ctx) +_libnm_glib_get_nm_state (libnm_glib_ctx *ctx) { DBusMessage * message; DBusPendingCall * pcall = NULL; @@ -116,13 +115,13 @@ libnm_glib_get_nm_state (libnm_glib_ctx *ctx) { dbus_connection_send_with_reply (ctx->dbus_con, message, &pcall, -1); if (pcall) - dbus_pending_call_set_notify (pcall, libnm_glib_nm_state_cb, ctx, NULL); + dbus_pending_call_set_notify (pcall, _libnm_glib_nm_state_cb, ctx, NULL); dbus_message_unref (message); } } static gboolean -libnm_glib_callback_helper (gpointer user_data) +_libnm_glib_callback_helper (gpointer user_data) { libnm_glib_callback *cb_data = (libnm_glib_callback *)user_data; @@ -136,8 +135,8 @@ libnm_glib_callback_helper (gpointer user_data) } static void -libnm_glib_schedule_single_callback (libnm_glib_ctx *ctx, - libnm_glib_callback *callback) +_libnm_glib_schedule_single_callback (libnm_glib_ctx *ctx, + libnm_glib_callback *callback) { GSource *source; @@ -147,14 +146,14 @@ libnm_glib_schedule_single_callback (libnm_glib_ctx *ctx, callback->libnm_glib_ctx = ctx; source = g_idle_source_new (); - g_source_set_callback (source, libnm_glib_callback_helper, callback, NULL); + g_source_set_callback (source, _libnm_glib_callback_helper, callback, NULL); g_source_attach (source, callback->gmain_ctx); g_source_unref (source); } static void -libnm_glib_unschedule_single_callback (libnm_glib_ctx *ctx, - libnm_glib_callback *callback) +_libnm_glib_unschedule_single_callback (libnm_glib_ctx *ctx, + libnm_glib_callback *callback) { GSource *source; @@ -167,7 +166,7 @@ libnm_glib_unschedule_single_callback (libnm_glib_ctx *ctx, } static void -libnm_glib_call_callbacks (libnm_glib_ctx *ctx) +_libnm_glib_call_callbacks (libnm_glib_ctx *ctx) { GSList *elem; @@ -178,15 +177,14 @@ libnm_glib_call_callbacks (libnm_glib_ctx *ctx) { libnm_glib_callback *callback = (libnm_glib_callback *)(elem->data); if (callback) - libnm_glib_schedule_single_callback (ctx, callback); + _libnm_glib_schedule_single_callback (ctx, callback); } g_mutex_unlock (ctx->callbacks_lock); } static void -libnm_glib_update_state (libnm_glib_ctx *ctx, - NMState state) +_libnm_glib_update_state (libnm_glib_ctx *ctx, NMState state) { libnm_glib_state old_state; @@ -212,14 +210,14 @@ libnm_glib_update_state (libnm_glib_ctx *ctx, } if (old_state != ctx->nm_state) - libnm_glib_call_callbacks (ctx); + _libnm_glib_call_callbacks (ctx); } static DBusHandlerResult -libnm_glib_dbus_filter (DBusConnection *connection, - DBusMessage *message, - void *user_data) +_libnm_glib_dbus_filter (DBusConnection *connection, + DBusMessage *message, + void *user_data) { libnm_glib_ctx *ctx = (libnm_glib_ctx *)user_data; gboolean handled = TRUE; @@ -237,7 +235,7 @@ libnm_glib_dbus_filter (DBusConnection *connection, dbus_connection_close (ctx->dbus_con); dbus_connection_unref (ctx->dbus_con); ctx->dbus_con = NULL; - libnm_glib_schedule_dbus_watcher (ctx); + _libnm_glib_schedule_dbus_watcher (ctx); } else if (dbus_message_is_signal (message, DBUS_INTERFACE_DBUS, "NameOwnerChanged")) { @@ -258,7 +256,7 @@ libnm_glib_dbus_filter (DBusConnection *connection, gboolean new_owner_good = (new_owner && (strlen (new_owner) > 0)); if (!old_owner_good && new_owner_good) /* Equivalent to old ServiceCreated signal */ - libnm_glib_get_nm_state (ctx); + _libnm_glib_get_nm_state (ctx); else if (old_owner_good && !new_owner_good) /* Equivalent to old ServiceDeleted signal */ ctx->nm_state = LIBNM_NO_NETWORKMANAGER; } @@ -269,14 +267,14 @@ libnm_glib_dbus_filter (DBusConnection *connection, || dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceActivating") || dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DevicesChanged")) { - libnm_glib_get_nm_state (ctx); + _libnm_glib_get_nm_state (ctx); } else if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "StateChanged")) { NMState state = NM_STATE_UNKNOWN; dbus_message_get_args (message, &error, DBUS_TYPE_UINT32, &state, DBUS_TYPE_INVALID); - libnm_glib_update_state (ctx, state); + _libnm_glib_update_state (ctx, state); } else handled = FALSE; @@ -295,8 +293,7 @@ libnm_glib_dbus_filter (DBusConnection *connection, * */ static DBusConnection * -libnm_glib_dbus_init (gpointer *user_data, - GMainContext *context) +_libnm_glib_dbus_init (gpointer *user_data, GMainContext *context) { DBusConnection *connection = NULL; DBusError error; @@ -312,7 +309,7 @@ libnm_glib_dbus_init (gpointer *user_data, if (!connection) return NULL; - if (!dbus_connection_add_filter (connection, libnm_glib_dbus_filter, user_data, NULL)) + if (!dbus_connection_add_filter (connection, _libnm_glib_dbus_filter, user_data, NULL)) return (NULL); dbus_connection_set_exit_on_disconnect (connection, FALSE); @@ -348,7 +345,7 @@ libnm_glib_dbus_init (gpointer *user_data, * */ static gboolean -libnm_glib_dbus_watcher (gpointer user_data) +_libnm_glib_dbus_watcher (gpointer user_data) { libnm_glib_ctx *ctx = (libnm_glib_ctx *)user_data; @@ -357,12 +354,12 @@ libnm_glib_dbus_watcher (gpointer user_data) ctx->dbus_watcher = 0; if (!ctx->dbus_con) - ctx->dbus_con = libnm_glib_dbus_init ((gpointer)ctx, ctx->g_main_ctx); + ctx->dbus_con = _libnm_glib_dbus_init ((gpointer)ctx, ctx->g_main_ctx); if (ctx->dbus_con) { /* Get NM's state right away after we reconnect */ - libnm_glib_get_nm_state (ctx); + _libnm_glib_get_nm_state (ctx); ctx->dbus_watch_interval = 1000; } else @@ -373,7 +370,7 @@ libnm_glib_dbus_watcher (gpointer user_data) ctx->dbus_watch_interval = MIN(ctx->dbus_watch_interval + 3000, 60000); /* Reschule ourselves if we _still_ don't have a connection to dbus */ - libnm_glib_schedule_dbus_watcher (ctx); + _libnm_glib_schedule_dbus_watcher (ctx); } return FALSE; @@ -388,14 +385,14 @@ libnm_glib_dbus_watcher (gpointer user_data) * */ static void -libnm_glib_schedule_dbus_watcher (libnm_glib_ctx *ctx) +_libnm_glib_schedule_dbus_watcher (libnm_glib_ctx *ctx) { g_return_if_fail (ctx != NULL); if (ctx->dbus_watcher == 0) { GSource * source = g_timeout_source_new (ctx->dbus_watch_interval); - g_source_set_callback (source, libnm_glib_dbus_watcher, (gpointer) ctx, NULL); + g_source_set_callback (source, _libnm_glib_dbus_watcher, (gpointer) ctx, NULL); ctx->dbus_watcher = g_source_attach (source, ctx->g_main_ctx); g_source_unref (source); } @@ -409,7 +406,7 @@ libnm_glib_schedule_dbus_watcher (libnm_glib_ctx *ctx) * */ static gpointer -libnm_glib_dbus_worker (gpointer user_data) +_libnm_glib_dbus_worker (gpointer user_data) { libnm_glib_ctx *ctx = (libnm_glib_ctx *)user_data; @@ -420,10 +417,10 @@ libnm_glib_dbus_worker (gpointer user_data) * down. Should probably be done by a timeout polling dbus_connection_is_connected() * or by getting connection status out of libdbus or something. */ - if (!(ctx->dbus_con = libnm_glib_dbus_init ((gpointer) ctx, ctx->g_main_ctx))) - libnm_glib_schedule_dbus_watcher (ctx); + if (!(ctx->dbus_con = _libnm_glib_dbus_init ((gpointer) ctx, ctx->g_main_ctx))) + _libnm_glib_schedule_dbus_watcher (ctx); else - libnm_glib_get_nm_state (ctx); + _libnm_glib_get_nm_state (ctx); ctx->thread_inited = TRUE; g_main_loop_run (ctx->g_main_loop); @@ -434,7 +431,7 @@ libnm_glib_dbus_worker (gpointer user_data) static void -libnm_glib_ctx_free (libnm_glib_ctx *ctx) +_libnm_glib_ctx_free (libnm_glib_ctx *ctx) { g_return_if_fail (ctx != NULL); @@ -472,7 +469,7 @@ libnm_glib_ctx_free (libnm_glib_ctx *ctx) static libnm_glib_ctx * -libnm_glib_ctx_new (void) +_libnm_glib_ctx_new (void) { libnm_glib_ctx *ctx = g_malloc0 (sizeof (libnm_glib_ctx)); @@ -487,7 +484,7 @@ libnm_glib_ctx_new (void) return ctx; error: - libnm_glib_ctx_free (ctx); + _libnm_glib_ctx_free (ctx); return NULL; } @@ -502,10 +499,10 @@ libnm_glib_init (void) g_thread_init (NULL); dbus_g_thread_init (); - if (!(ctx = libnm_glib_ctx_new ())) + if (!(ctx = _libnm_glib_ctx_new ())) return NULL; - ctx->thread = g_thread_create (libnm_glib_dbus_worker, ctx, TRUE, NULL); + ctx->thread = g_thread_create (_libnm_glib_dbus_worker, ctx, TRUE, NULL); if (!ctx->thread) goto error; @@ -516,7 +513,7 @@ libnm_glib_init (void) return ctx; error: - libnm_glib_ctx_free (ctx); + _libnm_glib_ctx_free (ctx); return NULL; } @@ -530,7 +527,7 @@ libnm_glib_shutdown (libnm_glib_ctx *ctx) while (!ctx->thread_done) g_usleep (G_USEC_PER_SEC / 20); - libnm_glib_ctx_free (ctx); + _libnm_glib_ctx_free (ctx); } @@ -565,7 +562,7 @@ libnm_glib_register_callback (libnm_glib_ctx *ctx, g_mutex_lock (ctx->callbacks_lock); ctx->callbacks = g_slist_append (ctx->callbacks, callback); - libnm_glib_schedule_single_callback (ctx, callback); + _libnm_glib_schedule_single_callback (ctx, callback); g_mutex_unlock (ctx->callbacks_lock); return (callback->id); @@ -588,7 +585,7 @@ libnm_glib_unregister_callback (libnm_glib_ctx *ctx, libnm_glib_callback *callback = (libnm_glib_callback *)(elem->data); if (callback && (callback->id == id)) { - libnm_glib_unschedule_single_callback (ctx, callback); + _libnm_glib_unschedule_single_callback (ctx, callback); ctx->callbacks = g_slist_remove_link (ctx->callbacks, elem); break; } diff --git a/libnm-glib/nm-device-wifi.c b/libnm-glib/nm-device-wifi.c index d1d9e0b73..9877f94ff 100644 --- a/libnm-glib/nm-device-wifi.c +++ b/libnm-glib/nm-device-wifi.c @@ -55,7 +55,7 @@ typedef struct { NM80211Mode mode; guint32 rate; NMAccessPoint *active_ap; - gboolean null_active_ap; + gboolean got_active_ap; NMDeviceWifiCapabilities wireless_caps; GPtrArray *aps; @@ -271,6 +271,7 @@ nm_device_wifi_get_active_access_point (NMDeviceWifi *device) NMDeviceState state; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE_WIFI (device), NULL); @@ -291,21 +292,20 @@ nm_device_wifi_get_active_access_point (NMDeviceWifi *device) } priv = NM_DEVICE_WIFI_GET_PRIVATE (device); - if (priv->active_ap) + if (priv->got_active_ap == TRUE) return priv->active_ap; - if (priv->null_active_ap) - return NULL; path = _nm_object_get_object_path_property (NM_OBJECT (device), - NM_DBUS_INTERFACE_DEVICE_WIRELESS, - DBUS_PROP_ACTIVE_ACCESS_POINT, - NULL); - if (path) { + NM_DBUS_INTERFACE_DEVICE_WIRELESS, + DBUS_PROP_ACTIVE_ACCESS_POINT, + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_active_ap (NM_OBJECT (device), NULL, &value, &priv->active_ap); g_value_unset (&value); } + g_clear_error (&error); return priv->active_ap; } @@ -427,9 +427,8 @@ access_point_removed_proxy (DBusGProxy *proxy, char *path, gpointer user_data) if (ap == priv->active_ap) { g_object_unref (priv->active_ap); priv->active_ap = NULL; - priv->null_active_ap = FALSE; - _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); + priv->rate = 0; _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIFI_BITRATE); } @@ -620,7 +619,6 @@ state_changed_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data) if (priv->active_ap) { g_object_unref (priv->active_ap); priv->active_ap = NULL; - priv->null_active_ap = FALSE; } _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIFI_ACTIVE_ACCESS_POINT); priv->rate = 0; @@ -642,13 +640,11 @@ demarshal_active_ap (NMObject *object, GParamSpec *pspec, GValue *value, gpointe if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_active_ap = FALSE; + priv->got_active_ap = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_active_ap = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { ap = NM_ACCESS_POINT (_nm_object_cache_get (path)); if (!ap) { connection = nm_object_get_connection (object); diff --git a/libnm-glib/nm-device-wimax.c b/libnm-glib/nm-device-wimax.c index 194a36d12..a889583db 100644 --- a/libnm-glib/nm-device-wimax.c +++ b/libnm-glib/nm-device-wimax.c @@ -50,7 +50,7 @@ typedef struct { char *hw_address; NMWimaxNsp *active_nsp; - gboolean null_active_nsp; + gboolean got_active_nsp; GPtrArray *nsps; guint center_freq; @@ -153,6 +153,7 @@ nm_device_wimax_get_active_nsp (NMDeviceWimax *wimax) NMDeviceState state; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE_WIMAX (wimax), NULL); @@ -173,21 +174,20 @@ nm_device_wimax_get_active_nsp (NMDeviceWimax *wimax) } priv = NM_DEVICE_WIMAX_GET_PRIVATE (wimax); - if (priv->active_nsp) + if (priv->got_active_nsp == TRUE) return priv->active_nsp; - if (priv->null_active_nsp) - return NULL; path = _nm_object_get_object_path_property (NM_OBJECT (wimax), NM_DBUS_INTERFACE_DEVICE_WIMAX, DBUS_PROP_ACTIVE_NSP, - NULL); - if (path) { + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_active_nsp (NM_OBJECT (wimax), NULL, &value, &priv->active_nsp); g_value_unset (&value); } + g_clear_error (&error); return priv->active_nsp; } @@ -309,8 +309,6 @@ nsp_removed_proxy (DBusGProxy *proxy, char *path, gpointer user_data) if (nsp == priv->active_nsp) { g_object_unref (priv->active_nsp); priv->active_nsp = NULL; - priv->null_active_nsp = FALSE; - _nm_object_queue_notify (NM_OBJECT (self), NM_DEVICE_WIMAX_ACTIVE_NSP); } @@ -607,7 +605,6 @@ state_changed_cb (NMDevice *device, GParamSpec *pspec, gpointer user_data) if (priv->active_nsp) { g_object_unref (priv->active_nsp); priv->active_nsp = NULL; - priv->null_active_nsp = FALSE; } _nm_object_queue_notify (NM_OBJECT (device), NM_DEVICE_WIMAX_ACTIVE_NSP); clear_link_status (self); @@ -634,13 +631,11 @@ demarshal_active_nsp (NMObject *object, GParamSpec *pspec, GValue *value, gpoint if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_active_nsp = FALSE; + priv->got_active_nsp = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_active_nsp = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { nsp = NM_WIMAX_NSP (_nm_object_cache_get (path)); if (!nsp) { connection = nm_object_get_connection (object); diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c index 4167c9a7e..3b39c9ece 100644 --- a/libnm-glib/nm-device.c +++ b/libnm-glib/nm-device.c @@ -56,15 +56,18 @@ typedef struct { gboolean managed; gboolean firmware_missing; NMIP4Config *ip4_config; - gboolean null_ip4_config; + gboolean got_ip4_config; NMDHCP4Config *dhcp4_config; - gboolean null_dhcp4_config; + gboolean got_dhcp4_config; NMIP6Config *ip6_config; - gboolean null_ip6_config; + gboolean got_ip6_config; NMDHCP6Config *dhcp6_config; - gboolean null_dhcp6_config; + gboolean got_dhcp6_config; NMDeviceState state; + NMActiveConnection *active_connection; + gboolean got_active_connection; + GUdevClient *client; char *product; char *vendor; @@ -87,6 +90,7 @@ enum { PROP_DHCP6_CONFIG, PROP_IP_INTERFACE, PROP_DEVICE_TYPE, + PROP_ACTIVE_CONNECTION, LAST_PROP }; @@ -119,13 +123,11 @@ demarshal_ip4_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoint if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_ip4_config = FALSE; + priv->got_ip4_config = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_ip4_config = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { config = NM_IP4_CONFIG (_nm_object_cache_get (path)); if (!config) { connection = nm_object_get_connection (object); @@ -157,13 +159,11 @@ demarshal_dhcp4_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoi if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_dhcp4_config = FALSE; + priv->got_dhcp4_config = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_dhcp4_config = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { config = NM_DHCP4_CONFIG (_nm_object_cache_get (path)); if (!config) { connection = nm_object_get_connection (object); @@ -195,13 +195,11 @@ demarshal_ip6_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoint if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_ip6_config = FALSE; + priv->got_ip6_config = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_ip6_config = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { config = NM_IP6_CONFIG (_nm_object_cache_get (path)); if (!config) { connection = nm_object_get_connection (object); @@ -233,13 +231,11 @@ demarshal_dhcp6_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoi if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) return FALSE; - priv->null_dhcp6_config = FALSE; + priv->got_dhcp6_config = TRUE; - path = g_value_get_boxed (value); - if (path) { - if (!strcmp (path, "/")) - priv->null_dhcp6_config = TRUE; - else { + if (value) { + path = g_value_get_boxed (value); + if (path) { config = NM_DHCP6_CONFIG (_nm_object_cache_get (path)); if (!config) { connection = nm_object_get_connection (object); @@ -260,6 +256,42 @@ demarshal_dhcp6_config (NMObject *object, GParamSpec *pspec, GValue *value, gpoi return TRUE; } +static gboolean +demarshal_active_connection (NMObject *object, GParamSpec *pspec, GValue *value, gpointer field) +{ + NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (object); + const char *path; + NMActiveConnection *active = NULL; + DBusGConnection *connection; + + if (!G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) + return FALSE; + + priv->got_active_connection = TRUE; + + if (value) { + path = g_value_get_boxed (value); + if (path) { + active = NM_ACTIVE_CONNECTION (_nm_object_cache_get (path)); + if (!active) { + connection = nm_object_get_connection (object); + active = NM_ACTIVE_CONNECTION (nm_active_connection_new (connection, path)); + } + } + } + + if (priv->active_connection) { + g_object_unref (priv->active_connection); + priv->active_connection = NULL; + } + + if (active) + priv->active_connection = active; + + _nm_object_queue_notify (object, NM_DEVICE_ACTIVE_CONNECTION); + return TRUE; +} + static void register_for_property_changed (NMDevice *device) { @@ -276,6 +308,7 @@ register_for_property_changed (NMDevice *device) { NM_DEVICE_DHCP4_CONFIG, demarshal_dhcp4_config, &priv->dhcp4_config }, { NM_DEVICE_IP6_CONFIG, demarshal_ip6_config, &priv->ip6_config }, { NM_DEVICE_DHCP6_CONFIG, demarshal_dhcp6_config, &priv->dhcp6_config }, + { NM_DEVICE_ACTIVE_CONNECTION,demarshal_active_connection, &priv->active_connection }, { NULL }, }; @@ -365,6 +398,8 @@ dispose (GObject *object) g_object_unref (priv->dhcp6_config); if (priv->client) g_object_unref (priv->client); + if (priv->active_connection) + g_object_unref (priv->active_connection); G_OBJECT_CLASS (nm_device_parent_class)->dispose (object); } @@ -432,6 +467,9 @@ get_property (GObject *object, case PROP_STATE: g_value_set_uint (value, nm_device_get_state (device)); break; + case PROP_ACTIVE_CONNECTION: + g_value_set_object (value, nm_device_get_active_connection (device)); + break; case PROP_PRODUCT: g_value_set_string (value, nm_device_get_product (device)); break; @@ -656,6 +694,19 @@ nm_device_class_init (NMDeviceClass *device_class) G_PARAM_READABLE)); /** + * NMDevice:active-connection: + * + * The #NMActiveConnection object that "owns" this device during activation. + **/ + g_object_class_install_property + (object_class, PROP_ACTIVE_CONNECTION, + g_param_spec_object (NM_DEVICE_ACTIVE_CONNECTION, + "ActiveConnection", + "Active Connection", + NM_TYPE_ACTIVE_CONNECTION, + G_PARAM_READABLE)); + + /** * NMDevice:vendor: * * The vendor string of the device. @@ -998,22 +1049,25 @@ nm_device_get_ip4_config (NMDevice *device) NMDevicePrivate *priv; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE (device), NULL); priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->ip4_config) + if (priv->got_ip4_config == TRUE) return priv->ip4_config; - if (priv->null_ip4_config) - return NULL; - path = _nm_object_get_object_path_property (NM_OBJECT (device), NM_DBUS_INTERFACE_DEVICE, "Ip4Config", NULL); - if (path) { + path = _nm_object_get_object_path_property (NM_OBJECT (device), + NM_DBUS_INTERFACE_DEVICE, + "Ip4Config", + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_ip4_config (NM_OBJECT (device), NULL, &value, &priv->ip4_config); g_value_unset (&value); } + g_clear_error (&error); return priv->ip4_config; } @@ -1033,22 +1087,25 @@ nm_device_get_dhcp4_config (NMDevice *device) NMDevicePrivate *priv; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE (device), NULL); priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->dhcp4_config) + if (priv->got_dhcp4_config == TRUE) return priv->dhcp4_config; - if (priv->null_dhcp4_config) - return NULL; - path = _nm_object_get_object_path_property (NM_OBJECT (device), NM_DBUS_INTERFACE_DEVICE, "Dhcp4Config", NULL); - if (path) { + path = _nm_object_get_object_path_property (NM_OBJECT (device), + NM_DBUS_INTERFACE_DEVICE, + "Dhcp4Config", + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_dhcp4_config (NM_OBJECT (device), NULL, &value, &priv->dhcp4_config); g_value_unset (&value); } + g_clear_error (&error); return priv->dhcp4_config; } @@ -1067,22 +1124,25 @@ nm_device_get_ip6_config (NMDevice *device) NMDevicePrivate *priv; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE (device), NULL); priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->ip6_config) + if (priv->got_ip6_config == TRUE) return priv->ip6_config; - if (priv->null_ip6_config) - return NULL; - path = _nm_object_get_object_path_property (NM_OBJECT (device), NM_DBUS_INTERFACE_DEVICE, "Ip6Config", NULL); - if (path) { + path = _nm_object_get_object_path_property (NM_OBJECT (device), + NM_DBUS_INTERFACE_DEVICE, + "Ip6Config", + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_ip6_config (NM_OBJECT (device), NULL, &value, &priv->ip6_config); g_value_unset (&value); } + g_clear_error (&error); return priv->ip6_config; } @@ -1102,22 +1162,25 @@ nm_device_get_dhcp6_config (NMDevice *device) NMDevicePrivate *priv; char *path; GValue value = { 0, }; + GError *error = NULL; g_return_val_if_fail (NM_IS_DEVICE (device), NULL); priv = NM_DEVICE_GET_PRIVATE (device); - if (priv->dhcp6_config) + if (priv->got_dhcp6_config == TRUE) return priv->dhcp6_config; - if (priv->null_dhcp6_config) - return NULL; - path = _nm_object_get_object_path_property (NM_OBJECT (device), NM_DBUS_INTERFACE_DEVICE, "Dhcp6Config", NULL); - if (path) { + path = _nm_object_get_object_path_property (NM_OBJECT (device), + NM_DBUS_INTERFACE_DEVICE, + "Dhcp6Config", + &error); + if (error == NULL) { g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); g_value_take_boxed (&value, path); demarshal_dhcp6_config (NM_OBJECT (device), NULL, &value, &priv->dhcp6_config); g_value_unset (&value); } + g_clear_error (&error); return priv->dhcp6_config; } @@ -1148,6 +1211,43 @@ nm_device_get_state (NMDevice *device) return priv->state; } +/** + * nm_device_get_active_connection: + * @device: a #NMDevice + * + * Gets the #NMActiveConnection object which owns this device during activation. + * + * Returns: the #NMActiveConnection + **/ +NMActiveConnection * +nm_device_get_active_connection (NMDevice *device) +{ + NMDevicePrivate *priv; + char *path; + GValue value = { 0, }; + GError *error = NULL; + + g_return_val_if_fail (NM_IS_DEVICE (device), NULL); + + priv = NM_DEVICE_GET_PRIVATE (device); + if (priv->got_active_connection == TRUE) + return priv->active_connection; + + path = _nm_object_get_object_path_property (NM_OBJECT (device), + NM_DBUS_INTERFACE_DEVICE, + "ActiveConnection", + &error); + if (error == NULL) { + g_value_init (&value, DBUS_TYPE_G_OBJECT_PATH); + g_value_take_boxed (&value, path); + demarshal_active_connection (NM_OBJECT (device), NULL, &value, &priv->active_connection); + g_value_unset (&value); + } + g_clear_error (&error); + + return priv->active_connection; +} + /* From hostap, Copyright (c) 2002-2005, Jouni Malinen <jkmaline@cc.hut.fi> */ static int hex2num (char c) @@ -1203,7 +1303,7 @@ get_decoded_property (GUdevDevice *device, const char *property) } static void -nm_device_update_description (NMDevice *device) +_device_update_description (NMDevice *device) { NMDevicePrivate *priv; const char *subsys[3] = { "net", "tty", NULL }; @@ -1318,7 +1418,7 @@ nm_device_get_product (NMDevice *device) priv = NM_DEVICE_GET_PRIVATE (device); if (!priv->product) - nm_device_update_description (device); + _device_update_description (device); return priv->product; } @@ -1340,7 +1440,7 @@ nm_device_get_vendor (NMDevice *device) priv = NM_DEVICE_GET_PRIVATE (device); if (!priv->vendor) - nm_device_update_description (device); + _device_update_description (device); return priv->vendor; } diff --git a/libnm-glib/nm-device.h b/libnm-glib/nm-device.h index 9d1c6bdb9..e21e71b12 100644 --- a/libnm-glib/nm-device.h +++ b/libnm-glib/nm-device.h @@ -34,6 +34,7 @@ #include "nm-ip6-config.h" #include "nm-dhcp6-config.h" #include "nm-connection.h" +#include "nm-active-connection.h" G_BEGIN_DECLS @@ -57,6 +58,7 @@ G_BEGIN_DECLS #define NM_DEVICE_IP6_CONFIG "ip6-config" #define NM_DEVICE_DHCP6_CONFIG "dhcp6-config" #define NM_DEVICE_STATE "state" +#define NM_DEVICE_ACTIVE_CONNECTION "active-connection" #define NM_DEVICE_VENDOR "vendor" #define NM_DEVICE_PRODUCT "product" @@ -102,6 +104,7 @@ NMDHCP4Config * nm_device_get_dhcp4_config (NMDevice *device); NMIP6Config * nm_device_get_ip6_config (NMDevice *device); NMDHCP6Config * nm_device_get_dhcp6_config (NMDevice *device); NMDeviceState nm_device_get_state (NMDevice *device); +NMActiveConnection * nm_device_get_active_connection(NMDevice *device); const char * nm_device_get_product (NMDevice *device); const char * nm_device_get_vendor (NMDevice *device); diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c index 0b88be2cc..614f6afcc 100644 --- a/libnm-glib/nm-object.c +++ b/libnm-glib/nm-object.c @@ -333,6 +333,7 @@ handle_property_changed (gpointer key, gpointer data, gpointer user_data) GParamSpec *pspec; gboolean success = FALSE, found = FALSE; GSList *iter; + GValue *value = data; prop_name = wincaps_to_dash ((char *) key); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (G_OBJECT (self)), prop_name); @@ -344,12 +345,19 @@ handle_property_changed (gpointer key, gpointer data, gpointer user_data) goto out; } - /* Iterate through the object and it's parents to find the property */ + /* Iterate through the object and its parents to find the property */ for (iter = priv->pcs; iter; iter = g_slist_next (iter)) { pci = g_hash_table_lookup ((GHashTable *) iter->data, prop_name); if (pci) { found = TRUE; - success = (*(pci->func)) (self, pspec, (GValue *) data, pci->field); + + /* Handle NULL object paths */ + if (G_VALUE_HOLDS (value, DBUS_TYPE_G_OBJECT_PATH)) { + if (g_strcmp0 (g_value_get_boxed (value), "/") == 0) + value = NULL; + } + + success = (*(pci->func)) (self, pspec, value, pci->field); if (success) break; } @@ -453,6 +461,11 @@ _nm_object_demarshal_generic (NMObject *object, char **param = (char **) field; g_free (*param); *param = g_strdup (g_value_get_boxed (value)); + /* Handle "NULL" object paths */ + if (g_strcmp0 (*param, "/") == 0) { + g_free (*param); + *param = NULL; + } } else { success = FALSE; goto done; @@ -558,13 +571,18 @@ _nm_object_get_string_property (NMObject *object, GError **error) { char *str = NULL; + const char *tmp; GValue value = {0,}; if (_nm_object_get_property (object, interface, prop_name, &value, error)) { if (G_VALUE_HOLDS_STRING (&value)) str = g_strdup (g_value_get_string (&value)); - else if (G_VALUE_HOLDS (&value, DBUS_TYPE_G_OBJECT_PATH)) - str = g_strdup (g_value_get_boxed (&value)); + else if (G_VALUE_HOLDS (&value, DBUS_TYPE_G_OBJECT_PATH)) { + tmp = g_value_get_boxed (&value); + /* Handle "NULL" object paths */ + if (g_strcmp0 (tmp, "/") != 0) + str = g_strdup (tmp); + } g_value_unset (&value); } @@ -578,10 +596,13 @@ _nm_object_get_object_path_property (NMObject *object, GError **error) { char *path = NULL; + const char *tmp; GValue value = {0,}; if (_nm_object_get_property (object, interface, prop_name, &value, error)) { - path = g_strdup (g_value_get_boxed (&value)); + tmp = g_value_get_boxed (&value); + if (g_strcmp0 (tmp, "/") != 0) + path = g_strdup (tmp); g_value_unset (&value); } diff --git a/libnm-glib/nm-types.c b/libnm-glib/nm-types.c index a2d6d2b4f..6d76787d0 100644 --- a/libnm-glib/nm-types.c +++ b/libnm-glib/nm-types.c @@ -31,7 +31,7 @@ #include "nm-setting-ip6-config.h" static gpointer -nm_ssid_copy (GByteArray *src) +_nm_ssid_copy (GByteArray *src) { GByteArray *dest; @@ -41,7 +41,7 @@ nm_ssid_copy (GByteArray *src) } static void -nm_ssid_free (GByteArray *ssid) +_nm_ssid_free (GByteArray *ssid) { g_byte_array_free (ssid, TRUE); } @@ -53,8 +53,8 @@ nm_ssid_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMSsid"), - (GBoxedCopyFunc) nm_ssid_copy, - (GBoxedFreeFunc) nm_ssid_free); + (GBoxedCopyFunc) _nm_ssid_copy, + (GBoxedFreeFunc) _nm_ssid_free); return our_type; } @@ -84,7 +84,7 @@ _nm_ssid_demarshal (GValue *value, GByteArray **dest) /*****************************/ static gpointer -nm_uint_array_copy (GArray *src) +_nm_uint_array_copy (GArray *src) { GArray *dest; @@ -94,7 +94,7 @@ nm_uint_array_copy (GArray *src) } static void -nm_uint_array_free (GArray *array) +_nm_uint_array_free (GArray *array) { g_array_free (array, TRUE); } @@ -106,8 +106,8 @@ nm_uint_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMUintArray"), - (GBoxedCopyFunc) nm_uint_array_copy, - (GBoxedFreeFunc) nm_uint_array_free); + (GBoxedCopyFunc) _nm_uint_array_copy, + (GBoxedFreeFunc) _nm_uint_array_free); return our_type; } @@ -136,7 +136,7 @@ _nm_uint_array_demarshal (GValue *value, GArray **dest) /*****************************/ static gpointer -nm_string_array_copy (GPtrArray *src) +_nm_string_array_copy (GPtrArray *src) { GPtrArray *dest; int i; @@ -148,7 +148,7 @@ nm_string_array_copy (GPtrArray *src) } static void -nm_string_array_free (GPtrArray *array) +_nm_string_array_free (GPtrArray *array) { int i; @@ -164,8 +164,8 @@ nm_string_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMStringArray"), - (GBoxedCopyFunc) nm_string_array_copy, - (GBoxedFreeFunc) nm_string_array_free); + (GBoxedCopyFunc) _nm_string_array_copy, + (GBoxedFreeFunc) _nm_string_array_free); return our_type; } @@ -197,7 +197,7 @@ _nm_string_array_demarshal (GValue *value, GPtrArray **dest) /*****************************/ static gpointer -nm_object_array_copy (GPtrArray *src) +_nm_object_array_copy (GPtrArray *src) { GPtrArray *dest; int i; @@ -209,7 +209,7 @@ nm_object_array_copy (GPtrArray *src) } static void -nm_object_array_free (GPtrArray *array) +_nm_object_array_free (GPtrArray *array) { int i; @@ -225,8 +225,8 @@ nm_object_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMObjectArray"), - (GBoxedCopyFunc) nm_object_array_copy, - (GBoxedFreeFunc) nm_object_array_free); + (GBoxedCopyFunc) _nm_object_array_copy, + (GBoxedFreeFunc) _nm_object_array_free); return our_type; } @@ -279,7 +279,7 @@ _nm_object_array_demarshal (GValue *value, /*****************************/ static gpointer -nm_ip6_address_object_array_copy (GPtrArray *src) +_nm_ip6_address_object_array_copy (GPtrArray *src) { GPtrArray *dest; int i; @@ -291,7 +291,7 @@ nm_ip6_address_object_array_copy (GPtrArray *src) } static void -nm_ip6_address_object_array_free (GPtrArray *array) +_nm_ip6_address_object_array_free (GPtrArray *array) { int i; @@ -307,15 +307,15 @@ nm_ip6_address_object_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMIP6AddressObjectArray"), - (GBoxedCopyFunc) nm_ip6_address_object_array_copy, - (GBoxedFreeFunc) nm_ip6_address_object_array_free); + (GBoxedCopyFunc) _nm_ip6_address_object_array_copy, + (GBoxedFreeFunc) _nm_ip6_address_object_array_free); return our_type; } /*****************************/ static gpointer -nm_ip6_address_array_copy (GPtrArray *src) +_nm_ip6_address_array_copy (GPtrArray *src) { GPtrArray *dest; int i; @@ -333,7 +333,7 @@ nm_ip6_address_array_copy (GPtrArray *src) } static void -nm_ip6_address_array_free (GPtrArray *array) +_nm_ip6_address_array_free (GPtrArray *array) { int i; @@ -349,8 +349,8 @@ nm_ip6_address_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMIP6AddressArray"), - (GBoxedCopyFunc) nm_ip6_address_array_copy, - (GBoxedFreeFunc) nm_ip6_address_array_free); + (GBoxedCopyFunc) _nm_ip6_address_array_copy, + (GBoxedFreeFunc) _nm_ip6_address_array_free); return our_type; } @@ -388,7 +388,7 @@ _nm_ip6_address_array_demarshal (GValue *value, GSList **dest) /*****************************/ static gpointer -nm_ip6_route_object_array_copy (GPtrArray *src) +_nm_ip6_route_object_array_copy (GPtrArray *src) { GPtrArray *dest; int i; @@ -400,7 +400,7 @@ nm_ip6_route_object_array_copy (GPtrArray *src) } static void -nm_ip6_route_object_array_free (GPtrArray *array) +_nm_ip6_route_object_array_free (GPtrArray *array) { int i; @@ -416,8 +416,8 @@ nm_ip6_route_object_array_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("NMIP6RouteObjectArray"), - (GBoxedCopyFunc) nm_ip6_route_object_array_copy, - (GBoxedFreeFunc) nm_ip6_route_object_array_free); + (GBoxedCopyFunc) _nm_ip6_route_object_array_copy, + (GBoxedFreeFunc) _nm_ip6_route_object_array_free); return our_type; } diff --git a/libnm-util/crypto.c b/libnm-util/crypto.c index 991b3c3e4..949ee8129 100644 --- a/libnm-util/crypto.c +++ b/libnm-util/crypto.c @@ -52,6 +52,12 @@ _nm_crypto_error_quark (void) #define PEM_CERT_BEGIN "-----BEGIN CERTIFICATE-----" #define PEM_CERT_END "-----END CERTIFICATE-----" +#define PEM_PKCS8_ENC_KEY_BEGIN "-----BEGIN ENCRYPTED PRIVATE KEY-----" +#define PEM_PKCS8_ENC_KEY_END "-----END ENCRYPTED PRIVATE KEY-----" + +#define PEM_PKCS8_DEC_KEY_BEGIN "-----BEGIN PRIVATE KEY-----" +#define PEM_PKCS8_DEC_KEY_END "-----END PRIVATE KEY-----" + static gboolean find_tag (const char *tag, const GByteArray *array, @@ -251,6 +257,71 @@ parse_error: } static GByteArray * +parse_pkcs8_key_file (const GByteArray *contents, + gboolean *out_encrypted, + GError **error) +{ + GByteArray *key = NULL; + gsize start = 0, end = 0; + unsigned char *der = NULL; + guint8 save_end; + gsize length = 0; + const char *start_tag = NULL, *end_tag = NULL; + gboolean encrypted = FALSE; + + /* Try encrypted first, decrypted next */ + if (find_tag (PEM_PKCS8_ENC_KEY_BEGIN, contents, 0, &start)) { + start_tag = PEM_PKCS8_ENC_KEY_BEGIN; + end_tag = PEM_PKCS8_ENC_KEY_END; + encrypted = TRUE; + } else if (find_tag (PEM_PKCS8_DEC_KEY_BEGIN, contents, 0, &start)) { + start_tag = PEM_PKCS8_DEC_KEY_BEGIN; + end_tag = PEM_PKCS8_DEC_KEY_END; + encrypted = FALSE; + } else { + g_set_error_literal (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_FILE_FORMAT_INVALID, + _("Failed to find expected PKCS#8 start tag.")); + return NULL; + } + + start += strlen (start_tag); + if (!find_tag (end_tag, contents, start, &end)) { + g_set_error (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_FILE_FORMAT_INVALID, + _("Failed to find expected PKCS#8 end tag '%s'."), + end_tag); + return NULL; + } + + /* g_base64_decode() wants a NULL-terminated string */ + save_end = contents->data[end]; + contents->data[end] = '\0'; + der = g_base64_decode ((const char *) (contents->data + start), &length); + contents->data[end] = save_end; + + if (der && length) { + key = g_byte_array_sized_new (length); + if (key) { + g_byte_array_append (key, der, length); + g_assert (key->len == length); + *out_encrypted = encrypted; + } else { + g_set_error_literal (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_OUT_OF_MEMORY, + _("Not enough memory to store private key data.")); + } + } else { + g_set_error_literal (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_DECODE_FAILED, + _("Failed to decode PKCS#8 private key.")); + } + + g_free (der); + return key; +} + +static GByteArray * file_to_g_byte_array (const char *filename, GError **error) { char *contents; @@ -654,6 +725,7 @@ crypto_verify_private_key_data (const GByteArray *contents, GByteArray *tmp; NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; NMCryptoKeyType ktype = NM_CRYPTO_KEY_TYPE_UNKNOWN; + gboolean is_encrypted = FALSE; g_return_val_if_fail (contents != NULL, FALSE); @@ -662,15 +734,29 @@ crypto_verify_private_key_data (const GByteArray *contents, if (!password || crypto_verify_pkcs12 (contents, password, error)) format = NM_CRYPTO_FILE_FORMAT_PKCS12; } else { - tmp = crypto_decrypt_private_key_data (contents, password, &ktype, error); + /* Maybe it's PKCS#8 */ + tmp = parse_pkcs8_key_file (contents, &is_encrypted, error); + if (tmp) { + if (crypto_verify_pkcs8 (tmp, is_encrypted, password, error)) + format = NM_CRYPTO_FILE_FORMAT_RAW_KEY; + } else { + g_clear_error (error); + + /* Or it's old-style OpenSSL */ + tmp = crypto_decrypt_private_key_data (contents, password, &ktype, error); + if (tmp) + format = NM_CRYPTO_FILE_FORMAT_RAW_KEY; + else if (!password && (ktype != NM_CRYPTO_KEY_TYPE_UNKNOWN)) + format = NM_CRYPTO_FILE_FORMAT_RAW_KEY; + } + if (tmp) { /* Don't leave decrypted key data around */ memset (tmp->data, 0, tmp->len); g_byte_array_free (tmp, TRUE); - format = NM_CRYPTO_FILE_FORMAT_RAW_KEY; - } else if (!password && (ktype != NM_CRYPTO_KEY_TYPE_UNKNOWN)) - format = NM_CRYPTO_FILE_FORMAT_RAW_KEY; + } } + return format; } diff --git a/libnm-util/crypto.h b/libnm-util/crypto.h index cdf053e72..482ed0876 100644 --- a/libnm-util/crypto.h +++ b/libnm-util/crypto.h @@ -136,4 +136,9 @@ gboolean crypto_verify_pkcs12 (const GByteArray *data, const char *password, GError **error); +gboolean crypto_verify_pkcs8 (const GByteArray *data, + gboolean is_encrypted, + const char *password, + GError **error); + #endif /* __CRYPTO_H__ */ diff --git a/libnm-util/crypto_gnutls.c b/libnm-util/crypto_gnutls.c index 583eb8be1..d82230b08 100644 --- a/libnm-util/crypto_gnutls.c +++ b/libnm-util/crypto_gnutls.c @@ -439,6 +439,57 @@ out: } gboolean +crypto_verify_pkcs8 (const GByteArray *data, + gboolean is_encrypted, + const char *password, + GError **error) +{ + gnutls_x509_privkey_t p8; + gnutls_datum dt; + int err; + + g_return_val_if_fail (data != NULL, FALSE); + + dt.data = (unsigned char *) data->data; + dt.size = data->len; + + err = gnutls_x509_privkey_init (&p8); + if (err < 0) { + g_set_error (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_DECODE_FAILED, + _("Couldn't initialize PKCS#8 decoder: %s"), + gnutls_strerror (err)); + return FALSE; + } + + err = gnutls_x509_privkey_import_pkcs8 (p8, + &dt, + GNUTLS_X509_FMT_DER, + is_encrypted ? password : NULL, + is_encrypted ? 0 : GNUTLS_PKCS_PLAIN); + gnutls_x509_privkey_deinit (p8); + + if (err < 0) { + if (err == GNUTLS_E_UNKNOWN_CIPHER_TYPE) { + /* HACK: gnutls doesn't support all the cipher types that openssl + * can use with PKCS#8, so if we encounter one, we have to assume + * the given password works. gnutls needs to unsuckify, apparently. + * Specifically, by default openssl uses pbeWithMD5AndDES-CBC + * which gnutls does not support. + */ + } else { + g_set_error (error, NM_CRYPTO_ERROR, + NM_CRYPTO_ERR_FILE_FORMAT_INVALID, + _("Couldn't decode PKCS#8 file: %s"), + gnutls_strerror (err)); + return FALSE; + } + } + + return TRUE; +} + +gboolean crypto_randomize (void *buffer, gsize buffer_len, GError **error) { gcry_randomize (buffer, buffer_len, GCRY_STRONG_RANDOM); diff --git a/libnm-util/crypto_nss.c b/libnm-util/crypto_nss.c index ff12f9c50..5a7aa30ba 100644 --- a/libnm-util/crypto_nss.c +++ b/libnm-util/crypto_nss.c @@ -542,6 +542,21 @@ error: } gboolean +crypto_verify_pkcs8 (const GByteArray *data, + gboolean is_encrypted, + const char *password, + GError **error) +{ + g_return_val_if_fail (data != NULL, FALSE); + + /* NSS apparently doesn't do PKCS#8 natively, but you have to put the + * PKCS#8 key into a PKCS#12 file and import that?? So until we figure + * all that out, we can only assume the password is valid. + */ + return TRUE; +} + +gboolean crypto_randomize (void *buffer, gsize buffer_len, GError **error) { SECStatus s; diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver index bb988bc46..4ff0838e3 100644 --- a/libnm-util/libnm-util.ver +++ b/libnm-util/libnm-util.ver @@ -130,6 +130,7 @@ global: nm_setting_802_1x_get_phase2_private_key_path; nm_setting_802_1x_get_phase2_private_key_scheme; nm_setting_802_1x_get_pin; + nm_setting_802_1x_get_pin_flags; nm_setting_802_1x_get_private_key_blob; nm_setting_802_1x_get_private_key_format; nm_setting_802_1x_get_private_key_password; diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index cd9d53ff4..6e9f92b59 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -512,7 +512,7 @@ validate_permissions_type (GHashTable *hash, GError **error) /** * nm_connection_replace_settings: * @connection: a #NMConnection - * @new_settings: (element-type utf8 GHashTable<utf8,GValue>): a #GHashTable of settings + * @new_settings: (element-type utf8 GLib.HashTable): a #GHashTable of settings * @error: location to store error, or %NULL * * Returns: %TRUE if the settings were valid and added to the connection, %FALSE @@ -640,9 +640,10 @@ diff_one_connection (NMConnection *a, * @a: a #NMConnection * @b: a second #NMConnection to compare with the first * @flags: compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT - * @out_settings: (element-type utf8 GHashTable<utf8,guint32>): if the + * @out_settings: (element-type utf8 GLib.HashTable): if the * connections differ, on return a hash table mapping setting names to - * second-level GHashTable, which contains key names that differ + * second-level GHashTable (utf8 to guint32), which contains the key names that + * differ mapped to one or more of %NMSettingDiffResult as a bitfield * * Compares two #NMConnection objects for similarity, with comparison behavior * modified by a set of flags. See nm_setting_compare() for a description of @@ -968,7 +969,7 @@ nm_connection_clear_secrets (NMConnection *connection) * are #GHashTables mapping string:GValue, each of which represents the * properties of the #NMSetting object. * - * Returns: (transfer full) (element-type utf8 GHashTable<utf8,GValue>): a new + * Returns: (transfer full) (element-type utf8 GLib.HashTable): a new * #GHashTable describing the connection, its settings, and each setting's * properties. The caller owns the hash table and must unref the hash table * with g_hash_table_unref() when it is no longer needed. diff --git a/libnm-util/nm-param-spec-specialized.c b/libnm-util/nm-param-spec-specialized.c index f5a362ce4..93623a118 100644 --- a/libnm-util/nm-param-spec-specialized.c +++ b/libnm-util/nm-param-spec-specialized.c @@ -37,9 +37,9 @@ struct _NMParamSpecSpecialized { #include "nm-dbus-glib-types.h" /***********************************************************/ -/* nm_gvalues_compare */ +/* _gvalues_compare */ -static gint nm_gvalues_compare (const GValue *value1, const GValue *value2); +static gint _gvalues_compare (const GValue *value1, const GValue *value2); static gboolean type_is_fixed_size (GType type, gsize *tsize) @@ -86,7 +86,7 @@ type_is_fixed_size (GType type, gsize *tsize) #define FLOAT_FACTOR 0.00000001 static gint -nm_gvalues_compare_fixed (const GValue *value1, const GValue *value2) +_gvalues_compare_fixed (const GValue *value1, const GValue *value2) { int ret = 0; @@ -177,7 +177,7 @@ nm_gvalues_compare_fixed (const GValue *value1, const GValue *value2) } static gint -nm_gvalues_compare_string (const GValue *value1, const GValue *value2) +_gvalues_compare_string (const GValue *value1, const GValue *value2) { const char *str1 = g_value_get_string (value1); const char *str2 = g_value_get_string (value2); @@ -194,7 +194,7 @@ nm_gvalues_compare_string (const GValue *value1, const GValue *value2) } static gint -nm_gvalues_compare_strv (const GValue *value1, const GValue *value2) +_gvalues_compare_strv (const GValue *value1, const GValue *value2) { char **strv1; char **strv2; @@ -221,7 +221,7 @@ nm_gvalues_compare_strv (const GValue *value1, const GValue *value2) } static void -nm_gvalue_destroy (gpointer data) +_gvalue_destroy (gpointer data) { GValue *value = (GValue *) data; @@ -250,7 +250,7 @@ iterate_collection (const GValue *value, gpointer user_data) } static gint -nm_gvalues_compare_collection (const GValue *value1, const GValue *value2) +_gvalues_compare_collection (const GValue *value1, const GValue *value2) { gint ret; guint len1; @@ -287,12 +287,12 @@ nm_gvalues_compare_collection (const GValue *value1, const GValue *value2) for (iter1 = list1, iter2 = list2, ret = 0; ret == 0 && iter1 && iter2; iter1 = iter1->next, iter2 = iter2->next) - ret = nm_gvalues_compare ((GValue *) iter1->data, (GValue *) iter2->data); + ret = _gvalues_compare ((GValue *) iter1->data, (GValue *) iter2->data); } - g_slist_foreach (list1, (GFunc) nm_gvalue_destroy, NULL); + g_slist_foreach (list1, (GFunc) _gvalue_destroy, NULL); g_slist_free (list1); - g_slist_foreach (list2, (GFunc) nm_gvalue_destroy, NULL); + g_slist_foreach (list2, (GFunc) _gvalue_destroy, NULL); g_slist_free (list2); } @@ -325,13 +325,13 @@ compare_one_map_item (gpointer key, gpointer val, gpointer user_data) value2 = (GValue *) g_hash_table_lookup (info->hash2, key); if (value2) - info->ret = nm_gvalues_compare ((GValue *) val, value2); + info->ret = _gvalues_compare ((GValue *) val, value2); else info->ret = 1; } static gint -nm_gvalues_compare_map (const GValue *value1, const GValue *value2) +_gvalues_compare_map (const GValue *value1, const GValue *value2) { GHashTable *hash1 = NULL; GHashTable *hash2 = NULL; @@ -345,11 +345,11 @@ nm_gvalues_compare_map (const GValue *value1, const GValue *value2) return 0; } - hash1 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy); + hash1 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, _gvalue_destroy); dbus_g_type_map_value_iterate (value1, iterate_map, &hash1); len1 = g_hash_table_size (hash1); - hash2 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, nm_gvalue_destroy); + hash2 = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, _gvalue_destroy); dbus_g_type_map_value_iterate (value2, iterate_map, &hash2); len2 = g_hash_table_size (hash2); @@ -491,10 +491,10 @@ nm_gvalue_ip6_route_compare (const GValue *value1, const GValue *value2) } static gint -nm_gvalues_compare_struct (const GValue *value1, const GValue *value2) +_gvalues_compare_struct (const GValue *value1, const GValue *value2) { /* value1 and value2 must contain the same type since - * nm_gvalues_compare() enforced that already. + * _gvalues_compare() enforced that already. */ if (G_VALUE_HOLDS (value1, DBUS_TYPE_G_IP6_ADDRESS)) { @@ -508,7 +508,7 @@ nm_gvalues_compare_struct (const GValue *value1, const GValue *value2) } gint -nm_gvalues_compare (const GValue *value1, const GValue *value2) +_gvalues_compare (const GValue *value1, const GValue *value2) { GType type1; GType type2; @@ -528,9 +528,9 @@ nm_gvalues_compare (const GValue *value1, const GValue *value2) return type1 < type2 ? -1 : type1 > type2; if (type_is_fixed_size (type1, NULL)) - ret = nm_gvalues_compare_fixed (value1, value2); + ret = _gvalues_compare_fixed (value1, value2); else if (type1 == G_TYPE_STRING) - ret = nm_gvalues_compare_string (value1, value2); + ret = _gvalues_compare_string (value1, value2); else if (G_VALUE_HOLDS_BOXED (value1)) { gpointer p1 = g_value_get_boxed (value1); gpointer p2 = g_value_get_boxed (value2); @@ -542,15 +542,15 @@ nm_gvalues_compare (const GValue *value1, const GValue *value2) else if (!p2) ret = -1; /* The comparision functions below don't handle NULLs */ else if (type1 == G_TYPE_STRV) - ret = nm_gvalues_compare_strv (value1, value2); + ret = _gvalues_compare_strv (value1, value2); else if (dbus_g_type_is_collection (type1)) - ret = nm_gvalues_compare_collection (value1, value2); + ret = _gvalues_compare_collection (value1, value2); else if (dbus_g_type_is_map (type1)) - ret = nm_gvalues_compare_map (value1, value2); + ret = _gvalues_compare_map (value1, value2); else if (dbus_g_type_is_struct (type1)) - ret = nm_gvalues_compare_struct (value1, value2); + ret = _gvalues_compare_struct (value1, value2); else if (type1 == G_TYPE_VALUE) - ret = nm_gvalues_compare ((GValue *) g_value_get_boxed (value1), (GValue *) g_value_get_boxed (value2)); + ret = _gvalues_compare ((GValue *) g_value_get_boxed (value1), (GValue *) g_value_get_boxed (value2)); else { g_warning ("Don't know how to compare boxed types '%s'", g_type_name (type1)); ret = value1 == value2; @@ -596,7 +596,7 @@ param_specialized_values_cmp (GParamSpec *pspec, const GValue *value1, const GValue *value2) { - return nm_gvalues_compare (value1, value2); + return _gvalues_compare (value1, value2); } GType @@ -656,13 +656,13 @@ compare_ints (void) g_value_set_int (&value1, 5); g_value_set_int (&value2, 5); - g_print ("Comparing ints 5 and 5: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing ints 5 and 5: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_int (&value2, 10); - g_print ("Comparing ints 5 and 10: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing ints 5 and 10: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_int (&value2, 1); - g_print ("Comparing ints 5 and 1: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing ints 5 and 1: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -678,10 +678,10 @@ compare_strings (void) g_value_set_string (&value1, str1); g_value_set_string (&value2, str1); - g_print ("Comparing identical strings: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical strings: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_string (&value2, str2); - g_print ("Comparing different strings: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different strings: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -699,16 +699,16 @@ compare_strv (void) g_value_set_boxed (&value1, strv1); g_value_set_boxed (&value2, strv1); - g_print ("Comparing identical strv's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical strv's: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_boxed (&value2, strv2); - g_print ("Comparing different strv's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different strv's: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_boxed (&value2, strv3); - g_print ("Comparing different len (smaller) strv's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different len (smaller) strv's: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_boxed (&value2, strv4); - g_print ("Comparing different len (longer) strv's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different len (longer) strv's: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -734,16 +734,16 @@ compare_garrays (void) g_value_set_boxed (&value1, array1); g_value_set_boxed (&value2, array2); - g_print ("Comparing identical arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical arrays's: %d\n", _gvalues_compare (&value1, &value2)); g_array_remove_index (array2, 0); g_value_set_boxed (&value2, array2); - g_print ("Comparing different length arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different length arrays's: %d\n", _gvalues_compare (&value1, &value2)); i = 7; g_array_prepend_val (array2, i); g_value_set_boxed (&value2, array2); - g_print ("Comparing different arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different arrays's: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -768,15 +768,15 @@ compare_ptrarrays (void) g_ptr_array_add (array2, "world"); g_value_set_boxed (&value2, array2); - g_print ("Comparing identical ptr arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical ptr arrays's: %d\n", _gvalues_compare (&value1, &value2)); g_ptr_array_add (array2, "boo"); g_value_set_boxed (&value2, array2); - g_print ("Comparing different len ptr arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different len ptr arrays's: %d\n", _gvalues_compare (&value1, &value2)); g_ptr_array_add (array1, "booz"); g_value_set_boxed (&value1, array1); - g_print ("Comparing different ptr arrays's: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different ptr arrays's: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -801,15 +801,15 @@ compare_str_hash (void) g_value_set_boxed (&value1, hash1); g_value_set_boxed (&value2, hash2); - g_print ("Comparing identical str hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical str hashes: %d\n", _gvalues_compare (&value1, &value2)); g_hash_table_remove (hash2, "key2"); g_value_set_boxed (&value2, hash2); - g_print ("Comparing different length str hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different length str hashes: %d\n", _gvalues_compare (&value1, &value2)); g_hash_table_insert (hash2, "key2", "moon"); g_value_set_boxed (&value2, hash2); - g_print ("Comparing different str hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different str hashes: %d\n", _gvalues_compare (&value1, &value2)); } static GValue * @@ -858,15 +858,15 @@ compare_gvalue_hash (void) g_value_set_boxed (&value1, hash1); g_value_set_boxed (&value2, hash2); - g_print ("Comparing identical gvalue hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical gvalue hashes: %d\n", _gvalues_compare (&value1, &value2)); g_hash_table_remove (hash2, "key2"); g_value_set_boxed (&value2, hash2); - g_print ("Comparing different length str hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different length str hashes: %d\n", _gvalues_compare (&value1, &value2)); g_hash_table_insert (hash2, "key2", str_to_gvalue ("moon")); g_value_set_boxed (&value2, hash2); - g_print ("Comparing different str hashes: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different str hashes: %d\n", _gvalues_compare (&value1, &value2)); } static void @@ -939,15 +939,15 @@ compare_ip6_addresses (void) g_value_set_boxed (&value1, array1); g_value_set_boxed (&value2, array1); - g_print ("Comparing identical IPv6 address structures: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing identical IPv6 address structures: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_boxed (&value1, array1); g_value_set_boxed (&value2, array2); - g_print ("Comparing different IPv6 address structures: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different IPv6 address structures: %d\n", _gvalues_compare (&value1, &value2)); g_value_set_boxed (&value1, array1); g_value_set_boxed (&value2, array3); - g_print ("Comparing different IPv6 address structures: %d\n", nm_gvalues_compare (&value1, &value2)); + g_print ("Comparing different IPv6 address structures: %d\n", _gvalues_compare (&value1, &value2)); } int diff --git a/libnm-util/nm-setting-8021x.c b/libnm-util/nm-setting-8021x.c index 4cd22016d..247504226 100644 --- a/libnm-util/nm-setting-8021x.c +++ b/libnm-util/nm-setting-8021x.c @@ -475,9 +475,9 @@ path_to_scheme_value (const char *path) /** * nm_setting_802_1x_set_ca_cert: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or - * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the CA certificate file - * (PEM or DER format). The path must be UTF-8 encoded; use + * @cert_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH + * or %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the CA certificate + * file (PEM or DER format). The path must be UTF-8 encoded; use * g_filename_to_utf8() to convert if needed. Passing NULL with any @scheme * clears the CA certificate. * @scheme: desired storage scheme for the certificate @@ -493,7 +493,7 @@ path_to_scheme_value (const char *path) **/ gboolean nm_setting_802_1x_set_ca_cert (NMSetting8021x *self, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error) @@ -504,8 +504,8 @@ nm_setting_802_1x_set_ca_cert (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (cert_path) { + g_return_val_if_fail (g_utf8_validate (cert_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -522,10 +522,10 @@ nm_setting_802_1x_set_ca_cert (NMSetting8021x *self, priv->ca_cert = NULL; } - if (!value) + if (!cert_path) return TRUE; - data = crypto_load_and_verify_certificate (value, &format, error); + data = crypto_load_and_verify_certificate (cert_path, &format, error); if (data) { /* wpa_supplicant can only use raw x509 CA certs */ switch (format) { @@ -547,7 +547,7 @@ nm_setting_802_1x_set_ca_cert (NMSetting8021x *self, if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) priv->ca_cert = data; else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->ca_cert = path_to_scheme_value (value); + priv->ca_cert = path_to_scheme_value (cert_path); else g_assert_not_reached (); } @@ -623,11 +623,11 @@ nm_setting_802_1x_get_client_cert_path (NMSetting8021x *setting) /** * nm_setting_802_1x_set_client_cert: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or - * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the client certificate - * file (PEM, DER, or PKCS#12 format). The path must be UTF-8 encoded; use - * g_filename_to_utf8() to convert if needed. Passing NULL with any @scheme - * clears the client certificate. + * @cert_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH + * or %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the client + * certificate file (PEM, DER, or PKCS#12 format). The path must be UTF-8 + * encoded; use g_filename_to_utf8() to convert if needed. Passing NULL with + * any @scheme clears the client certificate. * @scheme: desired storage scheme for the certificate * @out_format: on successful return, the type of the certificate added * @error: on unsuccessful return, an error @@ -645,7 +645,7 @@ nm_setting_802_1x_get_client_cert_path (NMSetting8021x *setting) **/ gboolean nm_setting_802_1x_set_client_cert (NMSetting8021x *self, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error) @@ -656,8 +656,8 @@ nm_setting_802_1x_set_client_cert (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (cert_path) { + g_return_val_if_fail (g_utf8_validate (cert_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -674,10 +674,10 @@ nm_setting_802_1x_set_client_cert (NMSetting8021x *self, priv->client_cert = NULL; } - if (!value) + if (!cert_path) return TRUE; - data = crypto_load_and_verify_certificate (value, &format, error); + data = crypto_load_and_verify_certificate (cert_path, &format, error); if (data) { /* wpa_supplicant can only use raw x509 CA certs */ switch (format) { @@ -703,7 +703,7 @@ nm_setting_802_1x_set_client_cert (NMSetting8021x *self, if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) priv->client_cert = data; else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->client_cert = path_to_scheme_value (value); + priv->client_cert = path_to_scheme_value (cert_path); else g_assert_not_reached (); } @@ -886,8 +886,8 @@ nm_setting_802_1x_get_phase2_ca_cert_path (NMSetting8021x *setting) /** * nm_setting_802_1x_set_phase2_ca_cert: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or - * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the "phase2" CA + * @cert_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH + * or %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the "phase2" CA * certificate file (PEM or DER format). The path must be UTF-8 encoded; use * g_filename_to_utf8() to convert if needed. Passing NULL with any @scheme * clears the "phase2" CA certificate. @@ -904,7 +904,7 @@ nm_setting_802_1x_get_phase2_ca_cert_path (NMSetting8021x *setting) **/ gboolean nm_setting_802_1x_set_phase2_ca_cert (NMSetting8021x *self, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error) @@ -915,8 +915,8 @@ nm_setting_802_1x_set_phase2_ca_cert (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (cert_path) { + g_return_val_if_fail (g_utf8_validate (cert_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -933,10 +933,10 @@ nm_setting_802_1x_set_phase2_ca_cert (NMSetting8021x *self, priv->phase2_ca_cert = NULL; } - if (!value) + if (!cert_path) return TRUE; - data = crypto_load_and_verify_certificate (value, &format, error); + data = crypto_load_and_verify_certificate (cert_path, &format, error); if (data) { /* wpa_supplicant can only use raw x509 CA certs */ switch (format) { @@ -958,7 +958,7 @@ nm_setting_802_1x_set_phase2_ca_cert (NMSetting8021x *self, if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) priv->phase2_ca_cert = data; else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->phase2_ca_cert = path_to_scheme_value (value); + priv->phase2_ca_cert = path_to_scheme_value (cert_path); else g_assert_not_reached (); } @@ -1036,8 +1036,8 @@ nm_setting_802_1x_get_phase2_client_cert_path (NMSetting8021x *setting) /** * nm_setting_802_1x_set_phase2_client_cert: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or - * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the "phase2" client + * @cert_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH + * or %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the "phase2" client * certificate file (PEM, DER, or PKCS#12 format). The path must be UTF-8 * encoded; use g_filename_to_utf8() to convert if needed. Passing NULL with * any @scheme clears the "phase2" client certificate. @@ -1058,7 +1058,7 @@ nm_setting_802_1x_get_phase2_client_cert_path (NMSetting8021x *setting) **/ gboolean nm_setting_802_1x_set_phase2_client_cert (NMSetting8021x *self, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error) @@ -1069,8 +1069,8 @@ nm_setting_802_1x_set_phase2_client_cert (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (cert_path) { + g_return_val_if_fail (g_utf8_validate (cert_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -1087,10 +1087,10 @@ nm_setting_802_1x_set_phase2_client_cert (NMSetting8021x *self, priv->phase2_client_cert = NULL; } - if (!value) + if (!cert_path) return TRUE; - data = crypto_load_and_verify_certificate (value, &format, error); + data = crypto_load_and_verify_certificate (cert_path, &format, error); if (data) { /* wpa_supplicant can only use raw x509 CA certs */ switch (format) { @@ -1116,7 +1116,7 @@ nm_setting_802_1x_set_phase2_client_cert (NMSetting8021x *self, if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) priv->phase2_client_cert = data; else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->phase2_client_cert = path_to_scheme_value (value); + priv->phase2_client_cert = path_to_scheme_value (cert_path); else g_assert_not_reached (); } @@ -1275,7 +1275,7 @@ file_to_byte_array (const char *filename) /** * nm_setting_802_1x_set_private_key: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or + * @key_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the private key file * (PEM, DER, or PKCS#12 format). The path must be UTF-8 encoded; use * g_filename_to_utf8() to convert if needed. Passing NULL with any @scheme @@ -1313,7 +1313,7 @@ file_to_byte_array (const char *filename) **/ gboolean nm_setting_802_1x_set_private_key (NMSetting8021x *self, - const char *value, + const char *key_path, const char *password, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, @@ -1324,8 +1324,8 @@ nm_setting_802_1x_set_private_key (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (key_path) { + g_return_val_if_fail (g_utf8_validate (key_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -1337,8 +1337,8 @@ nm_setting_802_1x_set_private_key (NMSetting8021x *self, /* Ensure the private key is a recognized format and if the password was * given, that it decrypts the private key. */ - if (value) { - format = crypto_verify_private_key (value, password, NULL); + if (key_path) { + format = crypto_verify_private_key (key_path, password, NULL); if (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN) { g_set_error (error, NM_SETTING_802_1X_ERROR, @@ -1361,16 +1361,16 @@ nm_setting_802_1x_set_private_key (NMSetting8021x *self, g_free (priv->private_key_password); priv->private_key_password = NULL; - if (value == NULL) + if (key_path == NULL) return TRUE; priv->private_key_password = g_strdup (password); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) { /* Shouldn't fail this since we just verified the private key above */ - priv->private_key = file_to_byte_array (value); + priv->private_key = file_to_byte_array (key_path); g_assert (priv->private_key); } else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->private_key = path_to_scheme_value (value); + priv->private_key = path_to_scheme_value (key_path); else g_assert_not_reached (); @@ -1570,7 +1570,7 @@ nm_setting_802_1x_get_phase2_private_key_path (NMSetting8021x *setting) /** * nm_setting_802_1x_set_phase2_private_key: * @setting: the #NMSetting8021x - * @value: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or + * @key_path: when @scheme is set to either %NM_SETTING_802_1X_CK_SCHEME_PATH or * %NM_SETTING_802_1X_CK_SCHEME_BLOB, pass the path of the "phase2" private * key file (PEM, DER, or PKCS#12 format). The path must be UTF-8 encoded; * use g_filename_to_utf8() to convert if needed. Passing NULL with any @@ -1608,7 +1608,7 @@ nm_setting_802_1x_get_phase2_private_key_path (NMSetting8021x *setting) **/ gboolean nm_setting_802_1x_set_phase2_private_key (NMSetting8021x *self, - const char *value, + const char *key_path, const char *password, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, @@ -1619,8 +1619,8 @@ nm_setting_802_1x_set_phase2_private_key (NMSetting8021x *self, g_return_val_if_fail (NM_IS_SETTING_802_1X (self), FALSE); - if (value) { - g_return_val_if_fail (g_utf8_validate (value, -1, NULL), FALSE); + if (key_path) { + g_return_val_if_fail (g_utf8_validate (key_path, -1, NULL), FALSE); g_return_val_if_fail ( scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB || scheme == NM_SETTING_802_1X_CK_SCHEME_PATH, FALSE); @@ -1632,8 +1632,8 @@ nm_setting_802_1x_set_phase2_private_key (NMSetting8021x *self, /* Ensure the private key is a recognized format and if the password was * given, that it decrypts the private key. */ - if (value) { - format = crypto_verify_private_key (value, password, NULL); + if (key_path) { + format = crypto_verify_private_key (key_path, password, NULL); if (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN) { g_set_error (error, NM_SETTING_802_1X_ERROR, @@ -1656,16 +1656,16 @@ nm_setting_802_1x_set_phase2_private_key (NMSetting8021x *self, g_free (priv->phase2_private_key_password); priv->phase2_private_key_password = NULL; - if (value == NULL) + if (key_path == NULL) return TRUE; priv->phase2_private_key_password = g_strdup (password); if (scheme == NM_SETTING_802_1X_CK_SCHEME_BLOB) { /* Shouldn't fail this since we just verified the private key above */ - priv->phase2_private_key = file_to_byte_array (value); + priv->phase2_private_key = file_to_byte_array (key_path); g_assert (priv->phase2_private_key); } else if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) - priv->phase2_private_key = path_to_scheme_value (value); + priv->phase2_private_key = path_to_scheme_value (key_path); else g_assert_not_reached (); diff --git a/libnm-util/nm-setting-8021x.h b/libnm-util/nm-setting-8021x.h index bf587a904..f3e61e55e 100644 --- a/libnm-util/nm-setting-8021x.h +++ b/libnm-util/nm-setting-8021x.h @@ -174,7 +174,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_ca_cert_scheme (NMSetting8 const GByteArray * nm_setting_802_1x_get_ca_cert_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_ca_cert_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_ca_cert (NMSetting8021x *setting, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error); @@ -183,7 +183,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_client_cert_scheme (NMSetting8 const GByteArray * nm_setting_802_1x_get_client_cert_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_client_cert_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_client_cert (NMSetting8021x *setting, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error); @@ -202,7 +202,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_phase2_ca_cert_scheme (NMSetting8 const GByteArray * nm_setting_802_1x_get_phase2_ca_cert_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_phase2_ca_cert_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_phase2_ca_cert (NMSetting8021x *setting, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error); @@ -211,7 +211,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_phase2_client_cert_scheme (NMSett const GByteArray * nm_setting_802_1x_get_phase2_client_cert_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_phase2_client_cert_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_phase2_client_cert (NMSetting8021x *setting, - const char *value, + const char *cert_path, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, GError **error); @@ -226,7 +226,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_private_key_scheme (NMSett const GByteArray * nm_setting_802_1x_get_private_key_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_private_key_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_private_key (NMSetting8021x *setting, - const char *value, + const char *key_path, const char *password, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, @@ -240,7 +240,7 @@ NMSetting8021xCKScheme nm_setting_802_1x_get_phase2_private_key_scheme (NMSett const GByteArray * nm_setting_802_1x_get_phase2_private_key_blob (NMSetting8021x *setting); const char * nm_setting_802_1x_get_phase2_private_key_path (NMSetting8021x *setting); gboolean nm_setting_802_1x_set_phase2_private_key (NMSetting8021x *setting, - const char *value, + const char *key_path, const char *password, NMSetting8021xCKScheme scheme, NMSetting8021xCKFormat *out_format, diff --git a/libnm-util/nm-setting-gsm.c b/libnm-util/nm-setting-gsm.c index a1b7a6d3e..0ece448b9 100644 --- a/libnm-util/nm-setting-gsm.c +++ b/libnm-util/nm-setting-gsm.c @@ -241,10 +241,28 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) } /* APNs roughly follow the same rules as DNS domain names. Allowed - * characters are a-z, 0-9, . and -. GSM 03.60 Section 14.9. + * characters are a-z, 0-9, . and -. GSM 03.03 Section 9.1 states: + * + * The syntax of the APN shall follow the Name Syntax defined in + * RFC 2181 [14] and RFC 1035 [15]. The APN consists of one or + * more labels. Each label is coded as one octet length field + * followed by that number of octets coded as 8 bit ASCII characters. + * Following RFC 1035 [15] the labels should consist only of the + * alphabetic characters (A-Z and a-z), digits (0-9) and the + * dash (-). The case of alphabetic characters is not significant. + * + * A dot (.) is commonly used to separate parts of the APN, and + * apparently the underscore (_) is used as well. RFC 2181 indicates + * that no restrictions of any kind are placed on DNS labels, and thus + * it would appear that none are placed on APNs either, but many modems + * and networks will fail to accept APNs that include odd characters + * like space ( ) and such. */ for (i = 0; i < apn_len; i++) { - if (!isalnum (priv->apn[i]) && (priv->apn[i] != '.') && (priv->apn[i] != '-')) { + if ( !isalnum (priv->apn[i]) + && (priv->apn[i] != '.') + && (priv->apn[i] != '_') + && (priv->apn[i] != '-')) { g_set_error (error, NM_SETTING_GSM_ERROR, NM_SETTING_GSM_ERROR_INVALID_PROPERTY, diff --git a/libnm-util/nm-setting-vpn.c b/libnm-util/nm-setting-vpn.c index d3aac0304..23f073831 100644 --- a/libnm-util/nm-setting-vpn.c +++ b/libnm-util/nm-setting-vpn.c @@ -161,23 +161,55 @@ nm_setting_vpn_remove_data_item (NMSettingVPN *setting, const char *key) g_hash_table_remove (NM_SETTING_VPN_GET_PRIVATE (setting)->data, key); } +static void +foreach_item_helper (GHashTable *hash, + NMVPNIterFunc func, + gpointer user_data) +{ + GList *keys, *liter; + GSList *copied = NULL, *siter; + + g_return_if_fail (hash != NULL); + + /* Grab keys and copy them so that the callback func can modify + * the hash table items if it wants to. + */ + keys = g_hash_table_get_keys (hash); + for (liter = keys; liter; liter = g_list_next (liter)) + copied = g_slist_prepend (copied, g_strdup (liter->data)); + copied = g_slist_reverse (copied); + g_list_free (keys); + + for (siter = copied; siter; siter = g_slist_next (siter)) { + gpointer value; + + value = g_hash_table_lookup (hash, siter->data); + func (siter->data, value, user_data); + } + + g_slist_foreach (copied, (GFunc) g_free, NULL); + g_slist_free (copied); +} + /** * nm_setting_vpn_foreach_data_item: * @setting: a #NMSettingVPN * @func: (scope call): an user provided function * @user_data: data to be passed to @func * - * Iterates all data items stored in this setting + * Iterates all data items stored in this setting. It is safe to add, remove, + * and modify data items inside @func, though any additions or removals made + * during iteration will not be part of the iteration. */ void nm_setting_vpn_foreach_data_item (NMSettingVPN *setting, NMVPNIterFunc func, gpointer user_data) { + g_return_if_fail (setting != NULL); g_return_if_fail (NM_IS_SETTING_VPN (setting)); - g_hash_table_foreach (NM_SETTING_VPN_GET_PRIVATE (setting)->data, - (GHFunc) func, user_data); + foreach_item_helper (NM_SETTING_VPN_GET_PRIVATE (setting)->data, func, user_data); } void @@ -217,17 +249,19 @@ nm_setting_vpn_remove_secret (NMSettingVPN *setting, const char *key) * @func: (scope call): an user provided function * @user_data: data to be passed to @func * - * Iterates all secrets stored in this setting. + * Iterates all secrets stored in this setting. It is safe to add, remove, + * and modify secrets inside @func, though any additions or removals made during + * iteration will not be part of the iteration. */ void nm_setting_vpn_foreach_secret (NMSettingVPN *setting, NMVPNIterFunc func, gpointer user_data) { + g_return_if_fail (setting != NULL); g_return_if_fail (NM_IS_SETTING_VPN (setting)); - g_hash_table_foreach (NM_SETTING_VPN_GET_PRIVATE (setting)->secrets, - (GHFunc) func, user_data); + foreach_item_helper (NM_SETTING_VPN_GET_PRIVATE (setting)->secrets, func, user_data); } static gboolean @@ -377,7 +411,8 @@ get_secret_flags (NMSetting *setting, errno = 0; tmp = strtoul ((const char *) val, NULL, 10); if ((errno == 0) && (tmp <= NM_SETTING_SECRET_FLAGS_ALL)) { - *out_flags = (guint32) tmp; + if (out_flags) + *out_flags = (guint32) tmp; success = TRUE; } else { g_set_error (error, diff --git a/libnm-util/nm-setting.c b/libnm-util/nm-setting.c index 0f8b7d4f2..3fe90db29 100644 --- a/libnm-util/nm-setting.c +++ b/libnm-util/nm-setting.c @@ -112,9 +112,10 @@ destroy_gvalue (gpointer data) * * Converts the #NMSetting into a #GHashTable mapping each setting property * name to a GValue describing that property, suitable for marshalling over - * D-Bus or serializing. The mapping is string:GValue. + * D-Bus or serializing. The mapping is string to GValue. * - * Returns: (transfer full) (element-type utf8 GObject.Value): a new #GHashTable describing the setting's properties + * Returns: (transfer full) (element-type utf8 GObject.Value): a new #GHashTable + * describing the setting's properties **/ GHashTable * nm_setting_to_hash (NMSetting *setting, NMSettingHashFlags flags) @@ -209,8 +210,8 @@ one_property_cb (gpointer key, gpointer val, gpointer user_data) /** * nm_setting_new_from_hash: * @setting_type: the #NMSetting type which the hash contains properties for - * @hash: the #GHashTable containing a string:GValue mapping of properties - * that apply to the setting + * @hash: (element-type utf8 GObject.Value): the #GHashTable containing a + * string to GValue mapping of properties that apply to the setting * * Creates a new #NMSetting object and populates that object with the properties * contained in the hash table, using each hash key as the property to set, @@ -223,8 +224,7 @@ one_property_cb (gpointer key, gpointer val, gpointer user_data) * hash table, or NULL on failure **/ NMSetting * -nm_setting_new_from_hash (GType setting_type, - GHashTable *hash) +nm_setting_new_from_hash (GType setting_type, GHashTable *hash) { NMSetting *setting; NMSettingFromHashInfo info; @@ -421,10 +421,11 @@ nm_setting_compare (NMSetting *a, * @flags: compare flags, e.g. %NM_SETTING_COMPARE_FLAG_EXACT * @invert_results: this parameter is used internally by libnm-util and should * be set to %FALSE. If %TRUE inverts the meaning of the #NMSettingDiffResult. - * @results: (element-type utf8 guint32): if the settings differ, on return a - * hash table mapping the differing keys to one or more #NMSettingDiffResult - * values OR-ed together. If the settings do not differ, any hash table passed - * in is unmodified. If no hash table is passed in, a new one is created. + * @results: (inout) (transfer full) (element-type utf8 guint32): if the + * settings differ, on return a hash table mapping the differing keys to one or + * more %NMSettingDiffResult values OR-ed together. If the settings do not + * differ, any hash table passed in is unmodified. If no hash table is passed + * in and the settings differ, a new one is created and returned. * * Compares two #NMSetting objects for similarity, with comparison behavior * modified by a set of flags. See the documentation for #NMSettingCompareFlags @@ -661,8 +662,8 @@ update_one_secret (NMSetting *setting, const char *key, GValue *value, GError ** /** * nm_setting_update_secrets: * @setting: the #NMSetting - * @secrets: a #GHashTable mapping string:#GValue of setting property names and - * secrets + * @secrets: (element-type utf8 GObject.Value): a #GHashTable mapping + * string to #GValue of setting property names and secrets * @error: location to store error, or %NULL * * Update the setting's secrets, given a hash table of secrets intended for that diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c index bac7fda39..449deb1cc 100644 --- a/libnm-util/nm-utils.c +++ b/libnm-util/nm-utils.c @@ -534,7 +534,7 @@ _nm_utils_string_slist_validate (GSList *list, const char **valid_values) } static void -nm_utils_convert_strv_to_slist (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_strv_to_slist (const GValue *src_value, GValue *dest_value) { char **str; GSList *list = NULL; @@ -551,7 +551,7 @@ nm_utils_convert_strv_to_slist (const GValue *src_value, GValue *dest_value) } static void -nm_utils_convert_strv_to_ptrarray (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_strv_to_ptrarray (const GValue *src_value, GValue *dest_value) { char **str; GPtrArray *array = NULL; @@ -569,7 +569,7 @@ nm_utils_convert_strv_to_ptrarray (const GValue *src_value, GValue *dest_value) } static void -nm_utils_convert_strv_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_strv_to_string (const GValue *src_value, GValue *dest_value) { GSList *strings; GString *printable; @@ -595,7 +595,7 @@ nm_utils_convert_strv_to_string (const GValue *src_value, GValue *dest_value) } static void -nm_utils_convert_string_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_string_array_to_string (const GValue *src_value, GValue *dest_value) { GPtrArray *strings; GString *printable; @@ -621,7 +621,7 @@ nm_utils_convert_string_array_to_string (const GValue *src_value, GValue *dest_v } static void -nm_utils_convert_uint_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_uint_array_to_string (const GValue *src_value, GValue *dest_value) { GArray *array; GString *printable; @@ -653,7 +653,7 @@ nm_utils_convert_uint_array_to_string (const GValue *src_value, GValue *dest_val } static void -nm_utils_convert_ip4_addr_route_struct_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_ip4_addr_route_struct_array_to_string (const GValue *src_value, GValue *dest_value) { GPtrArray *ptr_array; GString *printable; @@ -738,7 +738,7 @@ convert_one_gvalue_hash_entry (gpointer key, gpointer value, gpointer user_data) } static void -nm_utils_convert_gvalue_hash_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_gvalue_hash_to_string (const GValue *src_value, GValue *dest_value) { GHashTable *hash; GString *printable; @@ -764,7 +764,7 @@ convert_one_string_hash_entry (gpointer key, gpointer value, gpointer user_data) } static void -nm_utils_convert_string_hash_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_string_hash_to_string (const GValue *src_value, GValue *dest_value) { GHashTable *hash; GString *printable; @@ -783,7 +783,7 @@ nm_utils_convert_string_hash_to_string (const GValue *src_value, GValue *dest_va } static void -nm_utils_convert_byte_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_byte_array_to_string (const GValue *src_value, GValue *dest_value) { GArray *array; GString *printable; @@ -811,7 +811,7 @@ nm_utils_convert_byte_array_to_string (const GValue *src_value, GValue *dest_val } static gboolean -nm_utils_inet6_ntop (struct in6_addr *addr, char *buf) +_nm_utils_inet6_ntop (struct in6_addr *addr, char *buf) { if (!inet_ntop (AF_INET6, addr, buf, INET6_ADDRSTRLEN)) { int i; @@ -828,7 +828,7 @@ nm_utils_inet6_ntop (struct in6_addr *addr, char *buf) } static void -nm_utils_convert_ip6_dns_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_ip6_dns_array_to_string (const GValue *src_value, GValue *dest_value) { GPtrArray *ptr_array; GString *printable; @@ -854,7 +854,7 @@ nm_utils_convert_ip6_dns_array_to_string (const GValue *src_value, GValue *dest_ } addr = (struct in6_addr *) bytearray->data; memset (buf, 0, sizeof (buf)); - nm_utils_inet6_ntop (addr, buf); + _nm_utils_inet6_ntop (addr, buf); g_string_append_printf (printable, "%s", buf); } g_string_append_c (printable, ']'); @@ -864,7 +864,7 @@ nm_utils_convert_ip6_dns_array_to_string (const GValue *src_value, GValue *dest_ } static void -nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValue *dest_value) { GPtrArray *ptr_array; GString *printable; @@ -905,7 +905,7 @@ nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValu } addr = (struct in6_addr *) ba_addr->data; memset (buf, 0, sizeof (buf)); - nm_utils_inet6_ntop (addr, buf); + _nm_utils_inet6_ntop (addr, buf); g_string_append_printf (printable, "ip = %s", buf); g_string_append (printable, ", "); @@ -928,7 +928,7 @@ nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValu } addr = (struct in6_addr *) ba_addr->data; memset (buf, 0, sizeof (buf)); - nm_utils_inet6_ntop (addr, buf); + _nm_utils_inet6_ntop (addr, buf); g_string_append_printf (printable, "gw = %s", buf); g_string_append (printable, " }"); } @@ -939,7 +939,7 @@ nm_utils_convert_ip6_addr_struct_array_to_string (const GValue *src_value, GValu } static void -nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GValue *dest_value) +_nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GValue *dest_value) { GPtrArray *ptr_array; GString *printable; @@ -981,7 +981,7 @@ nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GVal } addr = (struct in6_addr *) ba_addr->data; memset (buf, 0, sizeof (buf)); - nm_utils_inet6_ntop (addr, buf); + _nm_utils_inet6_ntop (addr, buf); g_string_append_printf (printable, "dst = %s", buf); g_string_append (printable, ", "); @@ -1004,7 +1004,7 @@ nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GVal } addr = (struct in6_addr *) ba_addr->data; memset (buf, 0, sizeof (buf)); - nm_utils_inet6_ntop (addr, buf); + _nm_utils_inet6_ntop (addr, buf); g_string_append_printf (printable, "nh = %s", buf); g_string_append (printable, ", "); @@ -1025,7 +1025,7 @@ nm_utils_convert_ip6_route_struct_array_to_string (const GValue *src_value, GVal #define OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS (dbus_g_type_get_collection ("GPtrArray", OLD_DBUS_TYPE_G_IP6_ADDRESS)) static void -nm_utils_convert_old_ip6_addr_array (const GValue *src_value, GValue *dst_value) +_nm_utils_convert_old_ip6_addr_array (const GValue *src_value, GValue *dst_value) { GPtrArray *src_outer_array; GPtrArray *dst_outer_array; @@ -1081,43 +1081,43 @@ _nm_utils_register_value_transformations (void) if (G_UNLIKELY (!registered)) { g_value_register_transform_func (G_TYPE_STRV, DBUS_TYPE_G_LIST_OF_STRING, - nm_utils_convert_strv_to_slist); + _nm_utils_convert_strv_to_slist); g_value_register_transform_func (G_TYPE_STRV, DBUS_TYPE_G_ARRAY_OF_STRING, - nm_utils_convert_strv_to_ptrarray); + _nm_utils_convert_strv_to_ptrarray); g_value_register_transform_func (DBUS_TYPE_G_LIST_OF_STRING, G_TYPE_STRING, - nm_utils_convert_strv_to_string); + _nm_utils_convert_strv_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_STRING, G_TYPE_STRING, - nm_utils_convert_string_array_to_string); + _nm_utils_convert_string_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_UINT_ARRAY, G_TYPE_STRING, - nm_utils_convert_uint_array_to_string); + _nm_utils_convert_uint_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UINT, G_TYPE_STRING, - nm_utils_convert_ip4_addr_route_struct_array_to_string); + _nm_utils_convert_ip4_addr_route_struct_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_MAP_OF_VARIANT, G_TYPE_STRING, - nm_utils_convert_gvalue_hash_to_string); + _nm_utils_convert_gvalue_hash_to_string); g_value_register_transform_func (DBUS_TYPE_G_MAP_OF_STRING, G_TYPE_STRING, - nm_utils_convert_string_hash_to_string); + _nm_utils_convert_string_hash_to_string); g_value_register_transform_func (DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_STRING, - nm_utils_convert_byte_array_to_string); + _nm_utils_convert_byte_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UCHAR, G_TYPE_STRING, - nm_utils_convert_ip6_dns_array_to_string); + _nm_utils_convert_ip6_dns_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS, G_TYPE_STRING, - nm_utils_convert_ip6_addr_struct_array_to_string); + _nm_utils_convert_ip6_addr_struct_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_IP6_ROUTE, G_TYPE_STRING, - nm_utils_convert_ip6_route_struct_array_to_string); + _nm_utils_convert_ip6_route_struct_array_to_string); g_value_register_transform_func (OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS, DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS, - nm_utils_convert_old_ip6_addr_array); + _nm_utils_convert_old_ip6_addr_array); registered = TRUE; } } diff --git a/libnm-util/nm-utils.h b/libnm-util/nm-utils.h index c3eb29bc7..e4714a96f 100644 --- a/libnm-util/nm-utils.h +++ b/libnm-util/nm-utils.h @@ -27,7 +27,6 @@ #define NM_UTILS_H #include <glib.h> -#include <execinfo.h> #include "nm-connection.h" diff --git a/libnm-util/tests/Makefile.am b/libnm-util/tests/Makefile.am index daf4d688e..1d737d1aa 100644 --- a/libnm-util/tests/Makefile.am +++ b/libnm-util/tests/Makefile.am @@ -84,6 +84,9 @@ check-local: test-settings-defaults test-crypto test-secrets # Private key by itself (PEM) $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" +# PKCS#8 private key by itself (PEM) + $(abs_builddir)/test-setting-8021x $(srcdir)/certs/pkcs8-enc-key.pem "1234567890" + # Private key and CA certificate in the same file (pkcs12) $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" @@ -126,5 +129,10 @@ check-local: test-settings-defaults test-crypto test-secrets # Another PKCS#12 file $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" +# PKCS#8 encrypted private key + $(abs_builddir)/test-crypto --pkcs8 \ + $(srcdir)/certs/pkcs8-enc-key.pem \ + "1234567890" + endif diff --git a/libnm-util/tests/Makefile.in b/libnm-util/tests/Makefile.in index 9e65094cc..c4919ffc9 100644 --- a/libnm-util/tests/Makefile.in +++ b/libnm-util/tests/Makefile.in @@ -941,6 +941,9 @@ uninstall-am: # Private key by itself (PEM) @WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-key-only.pem "test" +# PKCS#8 private key by itself (PEM) +@WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/pkcs8-enc-key.pem "1234567890" + # Private key and CA certificate in the same file (pkcs12) @WITH_TESTS_TRUE@ $(abs_builddir)/test-setting-8021x $(srcdir)/certs/test-cert.p12 "test" @@ -983,6 +986,11 @@ uninstall-am: # Another PKCS#12 file @WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --p12 $(srcdir)/certs/test2-cert.p12 "12345testing" +# PKCS#8 encrypted private key +@WITH_TESTS_TRUE@ $(abs_builddir)/test-crypto --pkcs8 \ +@WITH_TESTS_TRUE@ $(srcdir)/certs/pkcs8-enc-key.pem \ +@WITH_TESTS_TRUE@ "1234567890" + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/libnm-util/tests/certs/Makefile.am b/libnm-util/tests/certs/Makefile.am index 02d5a5f52..e0f00a479 100644 --- a/libnm-util/tests/certs/Makefile.am +++ b/libnm-util/tests/certs/Makefile.am @@ -17,5 +17,8 @@ EXTRA_DIST = \ test2-cert.p12 \ ca-no-ending-newline.pem \ test-key-only.pem \ - test-key-only-decrypted.der + test-key-only-decrypted.der \ + pkcs8-enc-key.pem \ + pkcs8-noenc-key.pem \ + pkcs8-decrypted.der diff --git a/libnm-util/tests/certs/Makefile.in b/libnm-util/tests/certs/Makefile.in index 873218e84..5149078b9 100644 --- a/libnm-util/tests/certs/Makefile.in +++ b/libnm-util/tests/certs/Makefile.in @@ -287,7 +287,10 @@ EXTRA_DIST = \ test2-cert.p12 \ ca-no-ending-newline.pem \ test-key-only.pem \ - test-key-only-decrypted.der + test-key-only-decrypted.der \ + pkcs8-enc-key.pem \ + pkcs8-noenc-key.pem \ + pkcs8-decrypted.der all: all-am diff --git a/libnm-util/tests/certs/pkcs8-decrypted.der b/libnm-util/tests/certs/pkcs8-decrypted.der Binary files differnew file mode 100644 index 000000000..2cbdeb5e3 --- /dev/null +++ b/libnm-util/tests/certs/pkcs8-decrypted.der diff --git a/libnm-util/tests/certs/pkcs8-enc-key.pem b/libnm-util/tests/certs/pkcs8-enc-key.pem new file mode 100644 index 000000000..0d08f2d29 --- /dev/null +++ b/libnm-util/tests/certs/pkcs8-enc-key.pem @@ -0,0 +1,29 @@ +-----BEGIN ENCRYPTED PRIVATE KEY----- +MIIE6TAbBgkqhkiG9w0BBQMwDgQIwiGFT4Jz6RsCAggABIIEyJNMddDYofbhydUp +J3VyrYIjv3LziJ7dkTXE3+mEYRCQrGLgljWBbib2JOLVCFt8melL6Yv1RcoVR7X7 +vrRqyycu0DumI4f5+Bf4wc234JNVhSaLYsw244fFtcnK2Gyn4IaVmWmrNvrwfX/w +SKcVmO30D5C5PCKzv2bou5FmnJLKdDQV1t816cr9T8pTx7MHvBzSZXbh86334BhF +T3zNwo8j2/+Gq2NBWUn+2GTTV8/r26aIwPcFi4QH6I2ghBwFmFHqU3/PoRm6nkmg +CqJj2Dggy+8zE5qg0iId7lrio0OjCH+Qed6NGwIa2lgv/bhuJVP3FOk4gqamJWHi +WMaq9McmS+03q2iokYeSQGbx85x+I90RTFZKhFx4dkerf6oTC/YoL4F++ff0e91v +sOrQsBkgRhrRtFwa9OFCzbsknlixONdd+ITkyX490xz1wcZTDkKtMDRLIPWa2O0b +MEq75jPYThZ5pF1vc5r+rqPafN7SfI+DDmhzJYEQNRoCWA4pH9Gwv0ayKnOgoj4K +TuFhXvcyWzTnVXmcqEFyf3CRrB0Ti+Z61enupC+FCuYV5lGsx9kJaTumTk2UPD02 +9Ap3asDLozdEPSXBG3+oCM2s01/IJlxtR84C97r9rpmWTc9K6DCBScETe9KnIghW +PU7XFogueG5Gwpe+x+IlTDq+qiyUNVX1uMGDcIaCC3VsoWqZrpnGGBhsovwBaXKt +T9fT2nE27Fd6DRWso4fgos6PPx7RVveu17BTMVQeUq9L8GrV4JNrE3a9aoXdbUhc +6gMiyAqxh/HEyciYoXsR9oVNi+VM0y8q3hL5nIcgDrCZr/c9aQ8+fuQBDXRrmrQd +bR2iwNLCBnbmQmM/vM333VhJ4MSOKd3SGw/j41K+Nr3uP5KRZUwV+5yy3ef/hGxU +i9JjCmSUt2bfWRUFlNaf1hCTYaKD0xnVr1SLFU4snIgh2qKawyqVc9EE2f+FcOM5 +0RtwQ3ku6FOk3cy6/xeKpResCHbWDS6nQaIKYyLukV+gm5MJIhOMkj2z4T1eXGUr +Nu/L7Gz+ps7ct0lM8W82n5lzSEa5/l1eNGM0wtQoAwutFEZp7Nx/IBKK87jVttr6 +82UVJeRk7rO2Mpobfw2LbKwga4rsuLrx3UwVDBWdLx7dNIc1rGoAxhsc72+skFgF +Uztwy4Yv1Uiji4T6v+mObPZD/HiIDL0vF02Pz08rNlgB0DgaTKrpql2FutIuQAdf +AciffQIoh9VGERlJoWuunG/UTxg2XRl2m1vCDrgBMInax+PXCv7/5Vh21AQc3fWP +uf4k6JSy46hYni7VTVKn6C/Di9z7oIrGl/jDkDsaenAbToyX9VWr3s7EBwnhTQ/I +OQ9bkWCagHIQlwJbu4M4/VAbiR26NrcR0C3JXBlPlT0qvFFB8gKbJAQEXtwIFS2h +m2fe0k6mQASMwdbJYXZ/wfsg5PPAWsKtny1aMvi0mTPSD5uRhIfEGEuR+AT4UbEW +BkEIE0lgGly4P1SpunKDQQE6m/e7h8Nl4pi8SMSme3YoX5MJwCP/CNkLBDVenAZI +oBrdoVox86SjwnUozVG192lcEAULlk+3ZGt6T9JXLBQl9hpNtyTC6SFh84R+5RoN +AevNl1bDfO+Vci0uJw== +-----END ENCRYPTED PRIVATE KEY----- diff --git a/libnm-util/tests/certs/pkcs8-noenc-key.pem b/libnm-util/tests/certs/pkcs8-noenc-key.pem new file mode 100644 index 000000000..f73fb55ab --- /dev/null +++ b/libnm-util/tests/certs/pkcs8-noenc-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQC80HGgFdlFIL2F +W5rHQ99xOkMrWcZ7an9YurDebAE3M0UwqxM24+5mWbxc8FJ8yYugdMzuI5Nq77IA +DwJpv9ZjMfnKC1VDMj3bmmMdPurfx8pLdLw/jhk3wBaYk6vMvh4z66Yvmb7valGq +Pxh6CRTnekNGI9XA7me4JNBlisl0Qasn9g4pl9PiGJAruEamS4Pk6dSWbfw58bs7 +/Yo5ejyt/Mn1n0Q/r3Gv/lAS0qRvmrW6GE1rMtANMfuGRNlAln21TzNcJzykm+sp +RWptxXEI0NY7u9+RP4M3C1mJxWir7AZDbtinpOZH6vF+92yMzgEYOLK/WZVdSPdW +tROv9xtPAgMBAAECggEBAJAfp+vjYZJjuGaYEuAxjdhW+biYcWn5U7V9484TsSXa +i+DnZOZMO8iCjMaAZuZ7zYmwPlE0dK12w29KBbSEy3eySRIRboa5TgBXq3pCcXRZ +g6/vLlZw+AzXIiha6BODt3g4UwUYnWcQx79lJCDa18sNR1a9ucbn8+Har/wiYT3M +JjTbUT6wR6rKEXchB58ZugYGhOTfugSDQg4U/dwEHPIaJ/wme++JUV5B/tjeGCG3 +F43o2Oos5vjfrDSpUKIYZn+2BdhP434jkwj22wQ2sy0ruU/kQx8nogMTRfP1v4GU +9QmNXj/DB24K388ZxcDmcxBJxrGAJ0MohYFo28DqRBECgYEA6hyKEqe2UbJx/+B6 +8mYgHb+pS2j0M4jPl11q9MMLVxLnDY9xZ85IEyWHQEC0GavPSAois0oiDeGAm32c +j6TFyV3/oPTmZSyV93/agWgnH9Xtc481pbNAb0GMfyotvRRE/+6ti9+Cl7oH9Qmm +ldMk7Hn6sK9t2mUOW8idPjKqlqcCgYEAzne25BryLJoIinbRMZg9KTfxfgUE6EKc +Tk5+9CFQn0/AItQJuKbIUyggYH4psWW5hWq6hFlmMYMR48FKv9ry7pZTB0djaoYD +lN+wSuhzUYWXedkAjvPmekITmf6rbnPfwOZvsr8CGMEUekqJPnPLzsQy+Ea2y/fb +QY4SHe7gExkCgYEAr+1scOJpZvFjK7ckjT3jipd6ADpJsORxo7zG4FImFnQU/6K4 +xRpGHWVJQyaccOIkrW04cGUYPDgmrjJx0ZwwKceijvEaphMgS1JgAHklVY4sl3ea +CAAxPqoSi4lFv94Yj/9rmT4IZD6fNivfbJ20FKUBl37tXX4tkRmr2I64lOcCgYEA +x3eqzrclrmdlxvfBZOuScwbkHP6WXhk0TwbQ6eRhsnfmxP8bITSoJoaGuRJKD2Oa +l0WkSobgDwd0uhecsrvBpTS/pDGY32n3fdWZyNTHzEOHMyWtv23tBcJek5ERaBU0 +X3WBBiw4x1eKBBeMfjR6+xhbsbcHlQiw36V05UxJWMkCgYEAhtcYvrfU4K48IJTU +qp03nvd+dMY3IUTdZNOCh8bswLKyn3aq3MfWF9Vp7kDAI3cfyMpSrAQnmg4nVcn6 +Gf3wakG8bpiSRbJnGN+iLm8JsD+3Vw9KzvKOOQVmpT7xt5Kupx1hWvLHQWvfYgOG +qEtTM8/+LD7W3I7midJNt50CD8A= +-----END PRIVATE KEY----- diff --git a/libnm-util/tests/test-crypto.c b/libnm-util/tests/test-crypto.c index 6cfb6ac27..57e39fcaa 100644 --- a/libnm-util/tests/test-crypto.c +++ b/libnm-util/tests/test-crypto.c @@ -239,6 +239,29 @@ test_is_pkcs12 (const char *path, gboolean expect_fail, const char *desc) } static void +test_load_pkcs8 (const char *path, + const char *password, + gboolean expect_fail, + const char *desc) +{ + NMCryptoFileFormat format = NM_CRYPTO_FILE_FORMAT_UNKNOWN; + GError *error = NULL; + + format = crypto_verify_private_key (path, password, &error); + if (expect_fail) { + ASSERT (format == NM_CRYPTO_FILE_FORMAT_UNKNOWN, desc, + "unexpected success reading PKCS#8 private key file " + "'%s' with invalid password", + path); + } else { + ASSERT (format == NM_CRYPTO_FILE_FORMAT_RAW_KEY, desc, + "%s: unexpected PKCS#8 private key file format (expected %d, got " + "%d): %d %s", + path, NM_CRYPTO_FILE_FORMAT_RAW_KEY, format, error->code, error->message); + } +} + +static void test_encrypt_private_key (const char *path, const char *password, const char *desc) @@ -316,6 +339,17 @@ int main (int argc, char **argv) test_load_pkcs12 (argv[2], argv[3], FALSE, "pkcs12-private-key"); test_load_pkcs12 (argv[2], "blahblahblah", TRUE, "pkcs12-private-key-bad-password"); test_load_pkcs12_no_password (argv[2], "pkcs12-private-key-no-password"); + } else if (!strcmp (argv[1], "--pkcs8")) { + ASSERT (argc == 4, "test-crypto", + "wrong number of arguments (--pkcs8 <key file> <password>)"); + + test_is_pkcs12 (argv[2], TRUE, "not-pkcs12"); + test_load_pkcs8 (argv[2], argv[3], FALSE, "pkcs8-private-key"); + /* Until gnutls and NSS grow support for all the ciphers that openssl + * can use with PKCS#8, we can't actually verify the password. So we + * expect a bad password to work for the time being. + */ + test_load_pkcs8 (argv[2], "blahblahblah", FALSE, "pkcs8-private-key-bad-password"); } else { ASSERT (argc > 2, "test-crypto", "unknown test type (not --cert, --key, or --p12)"); } diff --git a/libnm-util/tests/test-general.c b/libnm-util/tests/test-general.c index 1ce80622a..87a50d670 100644 --- a/libnm-util/tests/test-general.c +++ b/libnm-util/tests/test-general.c @@ -195,6 +195,75 @@ test_setting_vpn_update_secrets (void) g_object_unref (connection); } +#define TO_DEL_NUM 50 +typedef struct { + NMSettingVPN *s_vpn; + char *to_del[TO_DEL_NUM]; + guint called; +} IterInfo; + +static void +del_iter_func (const char *key, const char *value, gpointer user_data) +{ + IterInfo *info = user_data; + int i; + + /* Record how many times this function gets called; it should get called + * exactly as many times as there are keys in the hash table, regardless + * of what keys we delete from the table. + */ + info->called++; + + /* During the iteration, remove a bunch of stuff from the table */ + if (info->called == 1) { + for (i = 0; i < TO_DEL_NUM; i++) + nm_setting_vpn_remove_data_item (info->s_vpn, info->to_del[i]); + } +} + +static void +test_setting_vpn_modify_during_foreach (void) +{ + NMSettingVPN *s_vpn; + IterInfo info; + char *key, *val; + int i, u = 0; + + s_vpn = (NMSettingVPN *) nm_setting_vpn_new (); + g_assert (s_vpn); + + for (i = 0; i < TO_DEL_NUM * 2; i++) { + key = g_strdup_printf ("adsfasdfadf%d", i); + val = g_strdup_printf ("42263236236awt%d", i); + nm_setting_vpn_add_data_item (s_vpn, key, val); + + /* Cache some keys to delete */ + if (i % 2) + info.to_del[u++] = g_strdup (key); + + g_free (key); + g_free (val); + } + + /* Iterate over current table keys */ + info.s_vpn = s_vpn; + info.called = 0; + nm_setting_vpn_foreach_data_item (s_vpn, del_iter_func, &info); + + /* Make sure all the things we removed during iteration are really gone */ + for (i = 0; i < TO_DEL_NUM; i++) { + g_assert_cmpstr (nm_setting_vpn_get_data_item (s_vpn, info.to_del[i]), ==, NULL); + g_free (info.to_del[i]); + } + + /* And make sure the foreach callback was called the same number of times + * as there were keys in the table at the beginning of the foreach. + */ + g_assert_cmpint (info.called, ==, TO_DEL_NUM * 2); + + g_object_unref (s_vpn); +} + #define OLD_DBUS_TYPE_G_IP6_ADDRESS (dbus_g_type_get_struct ("GValueArray", DBUS_TYPE_G_UCHAR_ARRAY, G_TYPE_UINT, G_TYPE_INVALID)) #define OLD_DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS (dbus_g_type_get_collection ("GPtrArray", OLD_DBUS_TYPE_G_IP6_ADDRESS)) @@ -354,6 +423,25 @@ test_setting_gsm_apn_bad_chars (void) "gsm-apn-bad-chars", "unexpectedly valid GSM setting"); } +static void +test_setting_gsm_apn_underscore (void) +{ + NMSettingGsm *s_gsm; + GError *error = NULL; + gboolean success; + + s_gsm = (NMSettingGsm *) nm_setting_gsm_new (); + g_assert (s_gsm); + + g_object_set (s_gsm, NM_SETTING_GSM_NUMBER, "*99#", NULL); + + /* 65-character long */ + g_object_set (s_gsm, NM_SETTING_GSM_APN, "foobar_baz", NULL); + success = nm_setting_verify (NM_SETTING (s_gsm), NULL, &error); + g_assert_no_error (error); + g_assert (success == TRUE); +} + static NMSettingWirelessSecurity * make_test_wsec_setting (const char *detail) { @@ -1132,9 +1220,11 @@ int main (int argc, char **argv) /* The tests */ test_setting_vpn_items (); test_setting_vpn_update_secrets (); + test_setting_vpn_modify_during_foreach (); test_setting_ip6_config_old_address_array (); test_setting_gsm_apn_spaces (); test_setting_gsm_apn_bad_chars (); + test_setting_gsm_apn_underscore (); test_setting_to_hash_all (); test_setting_to_hash_no_secrets (); test_setting_to_hash_only_secrets (); @@ -6,109 +6,108 @@ # Aisano < >, 2010. # Kim RIBEIRO < >, 2010. # Serge LEBLANC < >, 2010. -# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2010. +# Michel MORONI < >, 2011. +# Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: network-manager\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=NetworkManager&component=general\n" -"POT-Creation-Date: 2010-12-10 15:25+0000\n" -"PO-Revision-Date: 2010-12-11 10:32+0100\n" +"product=NetworkManager&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-05-06 03:25+0000\n" +"PO-Revision-Date: 2011-05-06 17:17+0200\n" "Last-Translator: Kristjan SCHMIDT <kristjan.schmidt@googlemail.com>\n" "Language-Team: Esperanto <ubuntu-l10n-eo@lists.launchpad.net>\n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2011-05-06 14:56+0000\n" +"X-Generator: Launchpad (build 12981)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"X-Launchpad-Export-Date: 2010-12-10 16:56+0000\n" -"X-Generator: Launchpad (build Unknown)\n" -#: ../cli/src/connections.c:60 ../cli/src/connections.c:76 -#: ../cli/src/devices.c:89 ../cli/src/devices.c:102 ../cli/src/devices.c:112 -#: ../cli/src/devices.c:122 ../cli/src/devices.c:135 ../cli/src/devices.c:146 -#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 ../cli/src/devices.c:175 +#: ../cli/src/connections.c:64 ../cli/src/connections.c:78 +#: ../cli/src/devices.c:101 ../cli/src/devices.c:114 ../cli/src/devices.c:124 +#: ../cli/src/devices.c:134 ../cli/src/devices.c:148 ../cli/src/devices.c:162 +#: ../cli/src/devices.c:173 ../cli/src/devices.c:184 ../cli/src/devices.c:193 +#: ../cli/src/devices.c:202 ../cli/src/devices.c:224 msgid "NAME" msgstr "NOMO" #. 0 -#: ../cli/src/connections.c:61 ../cli/src/connections.c:77 +#: ../cli/src/connections.c:65 ../cli/src/connections.c:79 msgid "UUID" msgstr "UUID" #. 1 -#: ../cli/src/connections.c:62 +#: ../cli/src/connections.c:66 msgid "DEVICES" msgstr "APARATOJ" #. 2 -#: ../cli/src/connections.c:63 ../cli/src/connections.c:79 -msgid "SCOPE" -msgstr "AMPLEKSO" - -#. 3 -#: ../cli/src/connections.c:64 +#: ../cli/src/connections.c:67 msgid "DEFAULT" msgstr "DEFAŬLTA" -#. 4 -#: ../cli/src/connections.c:65 -msgid "DBUS-SERVICE" -msgstr "DBUS-SERVO" - -#. 5 -#: ../cli/src/connections.c:66 +#. 3 +#: ../cli/src/connections.c:68 msgid "SPEC-OBJECT" msgstr "SPEC-OBJEKTO" -#. 6 -#: ../cli/src/connections.c:67 +#. 4 +#: ../cli/src/connections.c:69 msgid "VPN" msgstr "VPN" -#. 7 +#. 5 +#. 6 #. 2 -#: ../cli/src/connections.c:68 ../cli/src/connections.c:84 -#: ../cli/src/devices.c:64 +#. 11 +#. 5 +#: ../cli/src/connections.c:70 ../cli/src/connections.c:85 +#: ../cli/src/devices.c:69 ../cli/src/devices.c:214 ../cli/src/devices.c:230 msgid "DBUS-PATH" msgstr "DBUS-VOJO" #. 1 #. 0 #. 1 -#: ../cli/src/connections.c:78 ../cli/src/devices.c:62 ../cli/src/devices.c:91 +#. 2 +#: ../cli/src/connections.c:80 ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 ../cli/src/devices.c:227 msgid "TYPE" -msgstr "SPECO" +msgstr "TIPO" -#. 3 -#: ../cli/src/connections.c:80 +#. 2 +#: ../cli/src/connections.c:81 msgid "TIMESTAMP" msgstr "TEMPINDIKO" -#. 4 -#: ../cli/src/connections.c:81 +#. 3 +#: ../cli/src/connections.c:82 msgid "TIMESTAMP-REAL" msgstr "REALA-TEMPINDIKO" -#. 5 -#: ../cli/src/connections.c:82 +#. 4 +#: ../cli/src/connections.c:83 msgid "AUTOCONNECT" msgstr "AŬTOMATA-KONEKTO" -#. 6 -#: ../cli/src/connections.c:83 +#. 5 +#: ../cli/src/connections.c:84 msgid "READONLY" msgstr "NUR-LEGI" -#: ../cli/src/connections.c:160 +#: ../cli/src/connections.c:167 #, c-format msgid "" "Usage: nmcli con { COMMAND | help }\n" " COMMAND := { list | status | up | down }\n" "\n" -" list [id <id> | uuid <id> | system | user]\n" +" list [id <id> | uuid <id>]\n" " status\n" +" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--" +"nowait] [--timeout <timeout>]\n" " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout " "<timeout>]\n" " down id <id> | uuid <id>\n" @@ -116,543 +115,595 @@ msgstr "" "Uzo: nmcli con { KOMANDO | help }\n" " KOMANDO := { list | status | up | down }\n" "\n" -" list [id <id> | uuid <id> | system | user]\n" +" list [id <id> | uuid <id>]\n" " status\n" +" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--" +"nowait] [--timeout <timeout>]\n" " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout " "<timeout>]\n" " down id <id> | uuid <id>\n" -#: ../cli/src/connections.c:200 ../cli/src/connections.c:541 +#: ../cli/src/connections.c:220 ../cli/src/connections.c:542 #, c-format msgid "Error: 'con list': %s" msgstr "Eraro: 'con list': %s" -#: ../cli/src/connections.c:202 ../cli/src/connections.c:543 +#: ../cli/src/connections.c:222 ../cli/src/connections.c:544 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Eraro: 'con list': %s; permesataj kampoj: %s" -#: ../cli/src/connections.c:210 +#: ../cli/src/connections.c:230 msgid "Connection details" msgstr "Konektodetaloj" -#: ../cli/src/connections.c:385 ../cli/src/connections.c:606 -msgid "system" -msgstr "sistemo" - -#: ../cli/src/connections.c:385 ../cli/src/connections.c:606 -msgid "user" -msgstr "uzanto" - -#: ../cli/src/connections.c:387 +#: ../cli/src/connections.c:417 msgid "never" msgstr "neniam" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../cli/src/connections.c:388 ../cli/src/connections.c:389 -#: ../cli/src/connections.c:607 ../cli/src/connections.c:610 -#: ../cli/src/devices.c:433 ../cli/src/devices.c:558 ../cli/src/devices.c:584 -#: ../cli/src/devices.c:585 ../cli/src/devices.c:586 ../cli/src/devices.c:587 -#: ../cli/src/devices.c:588 ../cli/src/settings.c:508 -#: ../cli/src/settings.c:551 ../cli/src/settings.c:652 -#: ../cli/src/settings.c:926 ../cli/src/settings.c:927 -#: ../cli/src/settings.c:929 ../cli/src/settings.c:931 -#: ../cli/src/settings.c:1056 ../cli/src/settings.c:1057 -#: ../cli/src/settings.c:1058 ../cli/src/settings.c:1137 -#: ../cli/src/settings.c:1138 ../cli/src/settings.c:1139 -#: ../cli/src/settings.c:1140 ../cli/src/settings.c:1141 -#: ../cli/src/settings.c:1142 ../cli/src/settings.c:1143 -#: ../cli/src/settings.c:1144 ../cli/src/settings.c:1145 -#: ../cli/src/settings.c:1146 ../cli/src/settings.c:1147 -#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149 -#: ../cli/src/settings.c:1224 +#: ../cli/src/connections.c:418 ../cli/src/connections.c:419 +#: ../cli/src/connections.c:597 ../cli/src/connections.c:599 +#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687 +#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715 +#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520 +#: ../cli/src/settings.c:563 ../cli/src/settings.c:663 +#: ../cli/src/settings.c:937 ../cli/src/settings.c:938 +#: ../cli/src/settings.c:940 ../cli/src/settings.c:942 +#: ../cli/src/settings.c:1067 ../cli/src/settings.c:1068 +#: ../cli/src/settings.c:1069 ../cli/src/settings.c:1148 +#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1150 +#: ../cli/src/settings.c:1151 ../cli/src/settings.c:1152 +#: ../cli/src/settings.c:1153 ../cli/src/settings.c:1154 +#: ../cli/src/settings.c:1155 ../cli/src/settings.c:1156 +#: ../cli/src/settings.c:1157 ../cli/src/settings.c:1158 +#: ../cli/src/settings.c:1159 ../cli/src/settings.c:1160 +#: ../cli/src/settings.c:1235 msgid "yes" msgstr "jes" -#: ../cli/src/connections.c:388 ../cli/src/connections.c:389 -#: ../cli/src/connections.c:607 ../cli/src/connections.c:610 -#: ../cli/src/devices.c:433 ../cli/src/devices.c:558 ../cli/src/devices.c:584 -#: ../cli/src/devices.c:585 ../cli/src/devices.c:586 ../cli/src/devices.c:587 -#: ../cli/src/devices.c:588 ../cli/src/settings.c:508 -#: ../cli/src/settings.c:510 ../cli/src/settings.c:551 -#: ../cli/src/settings.c:652 ../cli/src/settings.c:926 -#: ../cli/src/settings.c:927 ../cli/src/settings.c:929 -#: ../cli/src/settings.c:931 ../cli/src/settings.c:1056 -#: ../cli/src/settings.c:1057 ../cli/src/settings.c:1058 -#: ../cli/src/settings.c:1137 ../cli/src/settings.c:1138 -#: ../cli/src/settings.c:1139 ../cli/src/settings.c:1140 -#: ../cli/src/settings.c:1141 ../cli/src/settings.c:1142 -#: ../cli/src/settings.c:1143 ../cli/src/settings.c:1144 -#: ../cli/src/settings.c:1145 ../cli/src/settings.c:1146 -#: ../cli/src/settings.c:1147 ../cli/src/settings.c:1148 -#: ../cli/src/settings.c:1149 ../cli/src/settings.c:1224 +#: ../cli/src/connections.c:418 ../cli/src/connections.c:419 +#: ../cli/src/connections.c:597 ../cli/src/connections.c:599 +#: ../cli/src/devices.c:509 ../cli/src/devices.c:562 ../cli/src/devices.c:687 +#: ../cli/src/devices.c:713 ../cli/src/devices.c:714 ../cli/src/devices.c:715 +#: ../cli/src/devices.c:716 ../cli/src/devices.c:717 ../cli/src/settings.c:520 +#: ../cli/src/settings.c:522 ../cli/src/settings.c:563 +#: ../cli/src/settings.c:663 ../cli/src/settings.c:937 +#: ../cli/src/settings.c:938 ../cli/src/settings.c:940 +#: ../cli/src/settings.c:942 ../cli/src/settings.c:1067 +#: ../cli/src/settings.c:1068 ../cli/src/settings.c:1069 +#: ../cli/src/settings.c:1148 ../cli/src/settings.c:1149 +#: ../cli/src/settings.c:1150 ../cli/src/settings.c:1151 +#: ../cli/src/settings.c:1152 ../cli/src/settings.c:1153 +#: ../cli/src/settings.c:1154 ../cli/src/settings.c:1155 +#: ../cli/src/settings.c:1156 ../cli/src/settings.c:1157 +#: ../cli/src/settings.c:1158 ../cli/src/settings.c:1159 +#: ../cli/src/settings.c:1160 ../cli/src/settings.c:1235 msgid "no" msgstr "ne" -#: ../cli/src/connections.c:462 ../cli/src/connections.c:505 -msgid "System connections" -msgstr "Sistemkonektoj" - -#: ../cli/src/connections.c:467 ../cli/src/connections.c:518 -msgid "User connections" -msgstr "Uzanto-konektoj" +#: ../cli/src/connections.c:493 +msgid "Connection list" +msgstr "Konektolisto" -#: ../cli/src/connections.c:479 ../cli/src/connections.c:1342 -#: ../cli/src/connections.c:1358 ../cli/src/connections.c:1367 -#: ../cli/src/connections.c:1378 ../cli/src/connections.c:1463 -#: ../cli/src/devices.c:964 ../cli/src/devices.c:974 ../cli/src/devices.c:1076 -#: ../cli/src/devices.c:1083 +#: ../cli/src/connections.c:506 ../cli/src/connections.c:1378 +#: ../cli/src/connections.c:1393 ../cli/src/connections.c:1402 +#: ../cli/src/connections.c:1412 ../cli/src/connections.c:1424 +#: ../cli/src/connections.c:1519 ../cli/src/devices.c:1190 +#: ../cli/src/devices.c:1200 ../cli/src/devices.c:1314 +#: ../cli/src/devices.c:1321 ../cli/src/devices.c:1534 +#: ../cli/src/devices.c:1541 #, c-format msgid "Error: %s argument is missing." msgstr "Eraro: argumento %s mankas." -#: ../cli/src/connections.c:492 +#: ../cli/src/connections.c:519 #, c-format msgid "Error: %s - no such connection." -msgstr "Eraro: %s - neniu tia konekto" +msgstr "Eraro: %s - neniu tia konekto." -#: ../cli/src/connections.c:524 ../cli/src/connections.c:1391 -#: ../cli/src/connections.c:1481 ../cli/src/devices.c:787 -#: ../cli/src/devices.c:854 ../cli/src/devices.c:988 ../cli/src/devices.c:1089 +#: ../cli/src/connections.c:525 ../cli/src/connections.c:1437 +#: ../cli/src/connections.c:1536 ../cli/src/devices.c:987 +#: ../cli/src/devices.c:1067 ../cli/src/devices.c:1214 +#: ../cli/src/devices.c:1327 ../cli/src/devices.c:1547 #, c-format msgid "Unknown parameter: %s\n" msgstr "Nekonata parametro: %s\n" -#: ../cli/src/connections.c:533 +#: ../cli/src/connections.c:534 #, c-format msgid "Error: no valid parameter specified." msgstr "Eraro: neniu valida parametro difinita." -#: ../cli/src/connections.c:548 ../cli/src/connections.c:1584 -#: ../cli/src/devices.c:1295 ../cli/src/network-manager.c:359 +#: ../cli/src/connections.c:549 ../cli/src/connections.c:1627 +#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463 #, c-format msgid "Error: %s." msgstr "Eraro: %s." -#: ../cli/src/connections.c:655 +#: ../cli/src/connections.c:637 #, c-format msgid "Error: 'con status': %s" msgstr "Eraro: 'con status': %s" -#: ../cli/src/connections.c:657 +#: ../cli/src/connections.c:639 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Eraro: 'con status': %s; permesataj kampoj: %s" -#: ../cli/src/connections.c:664 +#: ../cli/src/connections.c:647 ../cli/src/connections.c:1452 +#: ../cli/src/connections.c:1551 ../cli/src/devices.c:1014 +#: ../cli/src/devices.c:1076 ../cli/src/devices.c:1229 +#: ../cli/src/devices.c:1357 ../cli/src/devices.c:1576 +#, c-format +msgid "Error: Can't find out if NetworkManager is running: %s." +msgstr "Eraro: Ne povas scii ĉu NetworkManager rulas: %s." + +#: ../cli/src/connections.c:651 ../cli/src/connections.c:1456 +#: ../cli/src/connections.c:1555 ../cli/src/devices.c:1018 +#: ../cli/src/devices.c:1080 ../cli/src/devices.c:1233 +#: ../cli/src/devices.c:1361 ../cli/src/devices.c:1580 +#, c-format +msgid "Error: NetworkManager is not running." +msgstr "Eraro: NetworkManager ne rulas." + +#: ../cli/src/connections.c:659 msgid "Active connections" msgstr "Aktivaj konektoj" -#: ../cli/src/connections.c:1034 +#: ../cli/src/connections.c:1095 #, c-format msgid "no active connection on device '%s'" msgstr "neniu aktiva konekto sur aparato '%s'" -#: ../cli/src/connections.c:1042 +#: ../cli/src/connections.c:1103 #, c-format msgid "no active connection or device" msgstr "neniu aktiva konekto aŭ aparato" -#: ../cli/src/connections.c:1092 +#: ../cli/src/connections.c:1174 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "aparato '%s' ne kongruas kun konekto '%s'" -#: ../cli/src/connections.c:1094 +#: ../cli/src/connections.c:1176 #, c-format msgid "no device found for connection '%s'" msgstr "neniu aparato trovita por konekto '%s'" -#: ../cli/src/connections.c:1105 +#: ../cli/src/connections.c:1187 msgid "activating" msgstr "enŝaltas" -#: ../cli/src/connections.c:1107 +#: ../cli/src/connections.c:1189 msgid "activated" msgstr "enŝaltite" -#: ../cli/src/connections.c:1110 ../cli/src/connections.c:1133 -#: ../cli/src/connections.c:1166 ../cli/src/devices.c:247 -#: ../cli/src/devices.c:559 ../cli/src/network-manager.c:94 -#: ../cli/src/network-manager.c:149 ../cli/src/settings.c:473 +#: ../cli/src/connections.c:1191 ../cli/src/devices.c:304 +msgid "deactivating" +msgstr "malaktivigante" + +#: ../cli/src/connections.c:1194 ../cli/src/connections.c:1217 +#: ../cli/src/connections.c:1250 ../cli/src/devices.c:308 +#: ../cli/src/devices.c:688 ../cli/src/network-manager.c:118 +#: ../cli/src/network-manager.c:180 ../cli/src/network-manager.c:183 +#: ../cli/src/network-manager.c:192 ../cli/src/network-manager.c:298 +#: ../cli/src/network-manager.c:353 ../cli/src/network-manager.c:391 +#: ../cli/src/network-manager.c:430 ../cli/src/settings.c:485 +#: ../cli/src/utils.c:396 msgid "unknown" msgstr "nekonate" -#: ../cli/src/connections.c:1119 +#: ../cli/src/connections.c:1203 msgid "VPN connecting (prepare)" msgstr "VPN konektas (preparo)" -#: ../cli/src/connections.c:1121 +#: ../cli/src/connections.c:1205 msgid "VPN connecting (need authentication)" msgstr "VPN konektas (bezonas aŭtentigon)" -#: ../cli/src/connections.c:1123 +#: ../cli/src/connections.c:1207 msgid "VPN connecting" msgstr "VPN konektas" -#: ../cli/src/connections.c:1125 +#: ../cli/src/connections.c:1209 msgid "VPN connecting (getting IP configuration)" msgstr "VPN konektas (akiras IP-agordaron)" -#: ../cli/src/connections.c:1127 +#: ../cli/src/connections.c:1211 msgid "VPN connected" msgstr "VPN konektita" -#: ../cli/src/connections.c:1129 +#: ../cli/src/connections.c:1213 msgid "VPN connection failed" msgstr "VPN-konekto fiaskis" -#: ../cli/src/connections.c:1131 +#: ../cli/src/connections.c:1215 msgid "VPN disconnected" msgstr "VPN malkonektis" -#: ../cli/src/connections.c:1142 +#: ../cli/src/connections.c:1226 msgid "unknown reason" msgstr "nekonata kialo" -#: ../cli/src/connections.c:1144 +#: ../cli/src/connections.c:1228 msgid "none" -msgstr "nenio" +msgstr "neniu" -#: ../cli/src/connections.c:1146 +#: ../cli/src/connections.c:1230 msgid "the user was disconnected" -msgstr "la uzanto estis malkonektita" +msgstr "la uzanto estis malkonektite" -#: ../cli/src/connections.c:1148 +#: ../cli/src/connections.c:1232 msgid "the base network connection was interrupted" -msgstr "la baza retkonekto estis interrompita" +msgstr "la baza retkonekto estis interrompite" -#: ../cli/src/connections.c:1150 +#: ../cli/src/connections.c:1234 msgid "the VPN service stopped unexpectedly" msgstr "la VPN-servo neatendite ĉesis" -#: ../cli/src/connections.c:1152 +#: ../cli/src/connections.c:1236 msgid "the VPN service returned invalid configuration" msgstr "la VPN-servo revenigis nevalidan agordaron" -#: ../cli/src/connections.c:1154 +#: ../cli/src/connections.c:1238 msgid "the connection attempt timed out" msgstr "la konektoprovo eltempiĝis" -#: ../cli/src/connections.c:1156 +#: ../cli/src/connections.c:1240 msgid "the VPN service did not start in time" msgstr "la VPN-servo ne startis ĝustatempe" -#: ../cli/src/connections.c:1158 +#: ../cli/src/connections.c:1242 msgid "the VPN service failed to start" msgstr "la VPN-servo fiaskis starti" -#: ../cli/src/connections.c:1160 +#: ../cli/src/connections.c:1244 msgid "no valid VPN secrets" -msgstr "neniu valida VPN-sekreto" +msgstr "neniu valida VPN-sekretoj" -#: ../cli/src/connections.c:1162 +#: ../cli/src/connections.c:1246 msgid "invalid VPN secrets" msgstr "nevalidaj VPN-sekretoj" -#: ../cli/src/connections.c:1164 +#: ../cli/src/connections.c:1248 msgid "the connection was removed" msgstr "la konekto estis forigita" -#: ../cli/src/connections.c:1178 +#: ../cli/src/connections.c:1262 #, c-format msgid "state: %s\n" msgstr "stato: %s\n" -#: ../cli/src/connections.c:1181 ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1265 ../cli/src/connections.c:1291 #, c-format msgid "Connection activated\n" msgstr "Konekto enŝaltita\n" -#: ../cli/src/connections.c:1184 +#: ../cli/src/connections.c:1268 #, c-format msgid "Error: Connection activation failed." msgstr "Eraro: Enŝalto de konekto fiaskis." -#: ../cli/src/connections.c:1203 +#: ../cli/src/connections.c:1287 #, c-format msgid "state: %s (%d)\n" msgstr "stato: %s (%d)\n" -#: ../cli/src/connections.c:1213 +#: ../cli/src/connections.c:1297 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Eraro: Enŝalto de konekto fiaskis: %s." -#: ../cli/src/connections.c:1230 ../cli/src/devices.c:911 +#: ../cli/src/connections.c:1314 ../cli/src/devices.c:1136 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Eraro: Eltempiĝo finiĝis %d sek." -#: ../cli/src/connections.c:1273 +#: ../cli/src/connections.c:1327 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Eraro: Enŝalto de konekto fiaskis: %s" -#: ../cli/src/connections.c:1287 -#, c-format -msgid "Error: Obtaining active connection for '%s' failed." -msgstr "Eraro: Akiro de aktiva konekto por '%s' fiaskis." - -#: ../cli/src/connections.c:1296 +#: ../cli/src/connections.c:1333 #, c-format msgid "Active connection state: %s\n" msgstr "Stato de aktiva konekto: %s\n" -#: ../cli/src/connections.c:1297 +#: ../cli/src/connections.c:1334 #, c-format msgid "Active connection path: %s\n" msgstr "Vojo de aktiva konekto: %s\n" -#: ../cli/src/connections.c:1351 ../cli/src/connections.c:1472 +#: ../cli/src/connections.c:1386 ../cli/src/connections.c:1527 #, c-format msgid "Error: Unknown connection: %s." msgstr "Eraro: Nekonata konekto: %s." -#: ../cli/src/connections.c:1386 ../cli/src/devices.c:982 +#: ../cli/src/connections.c:1432 ../cli/src/devices.c:1208 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Eraro: eltempiĝa valoro '%s' ne validas." -#: ../cli/src/connections.c:1399 ../cli/src/connections.c:1489 +#: ../cli/src/connections.c:1445 ../cli/src/connections.c:1544 #, c-format msgid "Error: id or uuid has to be specified." -msgstr "Eraro: id aŭ uuid devas esti specifata." +msgstr "Eraro: 'id' aŭ 'uuid' devas esti specifata." -#: ../cli/src/connections.c:1419 +#: ../cli/src/connections.c:1473 #, c-format msgid "Error: No suitable device found: %s." msgstr "Eraro: Trovis neniun taŭgan aparaton: %s." -#: ../cli/src/connections.c:1421 +#: ../cli/src/connections.c:1475 #, c-format msgid "Error: No suitable device found." msgstr "Eraro: Trovis neniun taŭgan aparaton." -#: ../cli/src/connections.c:1516 +#: ../cli/src/connections.c:1580 #, c-format msgid "Warning: Connection not active\n" msgstr "Atenton: Konekto ne aktivas\n" -#: ../cli/src/connections.c:1573 +#: ../cli/src/connections.c:1618 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Eraro: 'con'-komando '%s' ne validas." -#: ../cli/src/connections.c:1609 +#: ../cli/src/connections.c:1683 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Eraro: ne povis konekti al D-Bus." -#: ../cli/src/connections.c:1616 +#: ../cli/src/connections.c:1690 #, c-format msgid "Error: Could not get system settings." msgstr "Eraro: Ne povis akiri sistemajn agordojn." -#: ../cli/src/connections.c:1624 -#, c-format -msgid "Error: Could not get user settings." -msgstr "Eraro: Ne povis akiri uzanto-agordojn." - -#: ../cli/src/connections.c:1634 +#: ../cli/src/connections.c:1700 #, c-format -msgid "Error: Can't obtain connections: settings services are not running." -msgstr "Eraro: Ne povas obteni konektojn: agordo-servoj ne aktivas." +msgid "Error: Can't obtain connections: settings service is not running." +msgstr "Eraro: Ne povas obteni konektojn: agordo-servo ne aktivas." #. 0 #. 9 -#: ../cli/src/devices.c:61 ../cli/src/devices.c:90 ../cli/src/devices.c:185 +#. 3 +#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 msgid "DEVICE" msgstr "APARATO" #. 1 #. 4 -#. 0 -#: ../cli/src/devices.c:63 ../cli/src/devices.c:94 -#: ../cli/src/network-manager.c:36 +#. 1 +#: ../cli/src/devices.c:68 ../cli/src/devices.c:106 +#: ../cli/src/network-manager.c:39 msgid "STATE" msgstr "STATO" -#: ../cli/src/devices.c:73 +#: ../cli/src/devices.c:78 msgid "GENERAL" -msgstr "ĜENERALA" +msgstr "ĜENERALE" #. 0 -#: ../cli/src/devices.c:74 +#: ../cli/src/devices.c:79 msgid "CAPABILITIES" msgstr "KAPABLOJ" #. 1 -#: ../cli/src/devices.c:75 +#: ../cli/src/devices.c:80 msgid "WIFI-PROPERTIES" msgstr "WIFI-ECOJ" #. 2 -#: ../cli/src/devices.c:76 +#: ../cli/src/devices.c:81 msgid "AP" msgstr "AP" #. 3 -#: ../cli/src/devices.c:77 +#: ../cli/src/devices.c:82 msgid "WIRED-PROPERTIES" msgstr "DRATA-ECOJ" #. 4 -#: ../cli/src/devices.c:78 +#: ../cli/src/devices.c:83 +msgid "WIMAX-PROPERTIES" +msgstr "WIMAX-ECOJ" + +#. 5 +#. 0 +#: ../cli/src/devices.c:84 ../cli/src/devices.c:225 +msgid "NSP" +msgstr "" + +#. 6 +#: ../cli/src/devices.c:85 msgid "IP4-SETTINGS" msgstr "IP4-AGORDOJ" -#. 5 -#: ../cli/src/devices.c:79 +#. 7 +#: ../cli/src/devices.c:86 msgid "IP4-DNS" msgstr "IP4-DNS" -#. 6 -#: ../cli/src/devices.c:80 +#. 8 +#: ../cli/src/devices.c:87 msgid "IP6-SETTINGS" msgstr "IP6-AGORDOJ" -#. 7 -#: ../cli/src/devices.c:81 +#. 9 +#: ../cli/src/devices.c:88 msgid "IP6-DNS" msgstr "IP6-DNS" #. 2 -#: ../cli/src/devices.c:92 +#: ../cli/src/devices.c:104 msgid "DRIVER" msgstr "PELILO" #. 3 -#: ../cli/src/devices.c:93 +#: ../cli/src/devices.c:105 msgid "HWADDR" msgstr "APARATADRESO" #. 0 -#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:115 msgid "CARRIER-DETECT" msgstr "PORTANTO-REKONO" #. 1 -#: ../cli/src/devices.c:104 +#: ../cli/src/devices.c:116 msgid "SPEED" msgstr "RAPIDO" #. 0 -#: ../cli/src/devices.c:113 +#: ../cli/src/devices.c:125 msgid "CARRIER" msgstr "PORTANTO" #. 0 -#: ../cli/src/devices.c:123 +#: ../cli/src/devices.c:135 msgid "WEP" msgstr "WEP" #. 1 -#: ../cli/src/devices.c:124 +#: ../cli/src/devices.c:136 msgid "WPA" msgstr "WPA" #. 2 -#: ../cli/src/devices.c:125 +#: ../cli/src/devices.c:137 msgid "WPA2" msgstr "WPA2" #. 3 -#: ../cli/src/devices.c:126 +#: ../cli/src/devices.c:138 msgid "TKIP" msgstr "TKIP" #. 4 -#: ../cli/src/devices.c:127 +#: ../cli/src/devices.c:139 msgid "CCMP" msgstr "CCMP" #. 0 -#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +#: ../cli/src/devices.c:149 +msgid "CTR-FREQ" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:150 +msgid "RSSI" +msgstr "RSSI" + +#. 2 +#: ../cli/src/devices.c:151 +msgid "CINR" +msgstr "CINR" + +#. 3 +#: ../cli/src/devices.c:152 +msgid "TX-POW" +msgstr "" + +#. 4 +#: ../cli/src/devices.c:153 +msgid "BSID" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:163 ../cli/src/devices.c:174 msgid "ADDRESS" msgstr "ADRESO" #. 1 -#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +#: ../cli/src/devices.c:164 ../cli/src/devices.c:175 msgid "PREFIX" msgstr "PREFIKSO" #. 2 -#: ../cli/src/devices.c:138 ../cli/src/devices.c:149 +#: ../cli/src/devices.c:165 ../cli/src/devices.c:176 msgid "GATEWAY" msgstr "KLUZO" #. 0 -#: ../cli/src/devices.c:158 ../cli/src/devices.c:167 +#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 msgid "DNS" msgstr "DNS" #. 0 -#: ../cli/src/devices.c:176 +#: ../cli/src/devices.c:203 msgid "SSID" msgstr "SSID" #. 1 -#: ../cli/src/devices.c:177 +#: ../cli/src/devices.c:204 msgid "BSSID" msgstr "BSSID" #. 2 -#: ../cli/src/devices.c:178 +#: ../cli/src/devices.c:205 msgid "MODE" msgstr "REĜIMO" #. 3 -#: ../cli/src/devices.c:179 +#: ../cli/src/devices.c:206 msgid "FREQ" msgstr "FREKV" #. 4 -#: ../cli/src/devices.c:180 +#: ../cli/src/devices.c:207 msgid "RATE" msgstr "TRANSMETRAPIDO" #. 5 -#: ../cli/src/devices.c:181 +#. 1 +#: ../cli/src/devices.c:208 ../cli/src/devices.c:226 msgid "SIGNAL" msgstr "SIGNALO" #. 6 -#: ../cli/src/devices.c:182 +#: ../cli/src/devices.c:209 msgid "SECURITY" msgstr "SEKURECO" #. 7 -#: ../cli/src/devices.c:183 +#: ../cli/src/devices.c:210 msgid "WPA-FLAGS" msgstr "WPA-FLAGOJ" #. 8 -#: ../cli/src/devices.c:184 +#: ../cli/src/devices.c:211 msgid "RSN-FLAGS" msgstr "RSN-FLAGOJ" #. 10 -#: ../cli/src/devices.c:186 +#. 4 +#: ../cli/src/devices.c:213 ../cli/src/devices.c:229 msgid "ACTIVE" -msgstr "AKTIVA" +msgstr "AKTIVE" -#: ../cli/src/devices.c:209 +#: ../cli/src/devices.c:256 #, c-format msgid "" "Usage: nmcli dev { COMMAND | help }\n" "\n" +" COMMAND := { status | list | disconnect | wifi | wimax }\n" +"\n" " COMMAND := { status | list | disconnect | wifi }\n" "\n" " status\n" " list [iface <iface>]\n" " disconnect iface <iface> [--nowait] [--timeout <timeout>]\n" " wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n" +" wimax [list [iface <iface>] [nsp <name>]]\n" "\n" msgstr "" -"Usage: nmcli dev { KOMANDO | help }\n" +"Uzo: nmcli dev { KOMANDO | help }\n" +"\n" +" KOMANDO := { status | list | disconnect | wifi | wimax }\n" "\n" " KOMANDO := { status | list | disconnect | wifi }\n" "\n" @@ -660,245 +711,314 @@ msgstr "" " list [iface <iface>]\n" " disconnect iface <iface> [--nowait] [--timeout <timeout>]\n" " wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n" +" wimax [list [iface <iface>] [nsp <name>]]\n" "\n" -#: ../cli/src/devices.c:229 +#: ../cli/src/devices.c:284 msgid "unmanaged" -msgstr "nemastrumata" +msgstr "nemastrumate" -#: ../cli/src/devices.c:231 +#: ../cli/src/devices.c:286 msgid "unavailable" -msgstr "neatingebla" +msgstr "neatingeble" -#: ../cli/src/devices.c:233 ../cli/src/network-manager.c:91 +#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115 msgid "disconnected" msgstr "nekonektite" -#: ../cli/src/devices.c:235 +#: ../cli/src/devices.c:290 msgid "connecting (prepare)" msgstr "konektas (preparo)" -#: ../cli/src/devices.c:237 +#: ../cli/src/devices.c:292 msgid "connecting (configuring)" msgstr "konektas (agordado)" -#: ../cli/src/devices.c:239 +#: ../cli/src/devices.c:294 msgid "connecting (need authentication)" msgstr "konektas (bezonas aŭtentigon)" -#: ../cli/src/devices.c:241 +#: ../cli/src/devices.c:296 msgid "connecting (getting IP configuration)" msgstr "konektas (akiras IP-agordaron)" -#: ../cli/src/devices.c:243 ../cli/src/network-manager.c:89 +#: ../cli/src/devices.c:298 +msgid "connecting (checking IP connectivity)" +msgstr "" + +#: ../cli/src/devices.c:300 +msgid "connecting (starting secondary connections)" +msgstr "" + +#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111 msgid "connected" -msgstr "konektita" +msgstr "konektite" -#: ../cli/src/devices.c:245 +#: ../cli/src/devices.c:306 msgid "connection failed" msgstr "konekto fiaskis" -#: ../cli/src/devices.c:268 ../cli/src/devices.c:425 +#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501 +#: ../cli/src/devices.c:545 msgid "Unknown" -msgstr "Nekonata" +msgstr "Nekonate" -#: ../cli/src/devices.c:300 +#: ../cli/src/devices.c:374 msgid "(none)" -msgstr "(nenio)" +msgstr "(neniu)" -#: ../cli/src/devices.c:325 +#: ../cli/src/devices.c:399 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: eraro dum konverto de IP4-adreso 0x%X" -#: ../cli/src/devices.c:394 +#: ../cli/src/devices.c:470 #, c-format msgid "%u MHz" msgstr "%u MHz" -#: ../cli/src/devices.c:395 +#: ../cli/src/devices.c:471 #, c-format msgid "%u MB/s" msgstr "%u MB/s" -#: ../cli/src/devices.c:404 +#: ../cli/src/devices.c:480 msgid "Encrypted: " -msgstr "Ĉifrita: " +msgstr "Ĉifrite: " -#: ../cli/src/devices.c:409 +#: ../cli/src/devices.c:485 msgid "WEP " msgstr "WEP " -#: ../cli/src/devices.c:411 +#: ../cli/src/devices.c:487 msgid "WPA " msgstr "WPA " -#: ../cli/src/devices.c:413 +#: ../cli/src/devices.c:489 msgid "WPA2 " msgstr "WPA2 " -#: ../cli/src/devices.c:416 +#: ../cli/src/devices.c:492 msgid "Enterprise " msgstr "Entrepreno " -#: ../cli/src/devices.c:425 +#: ../cli/src/devices.c:501 msgid "Ad-Hoc" msgstr "Laŭcela" -#: ../cli/src/devices.c:425 +#: ../cli/src/devices.c:501 msgid "Infrastructure" msgstr "Infrastrukturo" -#: ../cli/src/devices.c:487 +#: ../cli/src/devices.c:536 +msgid "Home" +msgstr "Hejmo" + +#: ../cli/src/devices.c:539 +msgid "Partner" +msgstr "Partnero" + +#: ../cli/src/devices.c:542 +msgid "Roaming" +msgstr "" + +#: ../cli/src/devices.c:612 #, c-format msgid "Error: 'dev list': %s" msgstr "Eraro: 'dev list': %s" -#: ../cli/src/devices.c:489 +#: ../cli/src/devices.c:614 #, c-format msgid "Error: 'dev list': %s; allowed fields: %s" msgstr "Eraro: 'dev list': %s; permesataj kampoj: %s" -#: ../cli/src/devices.c:498 +#: ../cli/src/devices.c:623 msgid "Device details" msgstr "Detaloj de aparato" -#: ../cli/src/devices.c:528 ../cli/src/devices.c:927 +#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342 msgid "(unknown)" -msgstr "(nekonata)" +msgstr "(nekonate)" -#: ../cli/src/devices.c:529 +#: ../cli/src/devices.c:658 msgid "unknown)" -msgstr "nekonata)" +msgstr "nekonate)" -#: ../cli/src/devices.c:555 +#: ../cli/src/devices.c:684 #, c-format msgid "%u Mb/s" msgstr "%u Mb/s" #. Print header #. "WIRED-PROPERTIES" -#: ../cli/src/devices.c:628 +#: ../cli/src/devices.c:757 msgid "on" msgstr "enŝaltite" -#: ../cli/src/devices.c:628 +#: ../cli/src/devices.c:757 msgid "off" msgstr "elŝaltite" -#: ../cli/src/devices.c:810 +#: ../cli/src/devices.c:1004 #, c-format msgid "Error: 'dev status': %s" msgstr "Eraro: 'dev status': %s" -#: ../cli/src/devices.c:812 +#: ../cli/src/devices.c:1006 #, c-format msgid "Error: 'dev status': %s; allowed fields: %s" msgstr "Eraro: 'dev status': %s; permesataj kampoj: %s" -#: ../cli/src/devices.c:819 +#: ../cli/src/devices.c:1029 msgid "Status of devices" msgstr "Stato de aparatoj" -#: ../cli/src/devices.c:847 +#: ../cli/src/devices.c:1060 #, c-format msgid "Error: '%s' argument is missing." msgstr "Eraro: argumento '%s' mankas." -#: ../cli/src/devices.c:876 ../cli/src/devices.c:1015 -#: ../cli/src/devices.c:1138 +#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253 +#: ../cli/src/devices.c:1389 ../cli/src/devices.c:1608 #, c-format msgid "Error: Device '%s' not found." msgstr "Eraro: Aparato '%s' ne trovita." -#: ../cli/src/devices.c:899 +#: ../cli/src/devices.c:1124 #, c-format msgid "Success: Device '%s' successfully disconnected." msgstr "Sukceso: Aparato '%s' sukcese malkonektiĝis." -#: ../cli/src/devices.c:924 +#: ../cli/src/devices.c:1149 #, c-format msgid "Error: Device '%s' (%s) disconnecting failed: %s" msgstr "Eraro: Aparato '%s' (%s) eraro dum malkonektiĝo: %s" -#: ../cli/src/devices.c:932 +#: ../cli/src/devices.c:1157 #, c-format msgid "Device state: %d (%s)\n" msgstr "Stato de aparato: %d (%s)\n" -#: ../cli/src/devices.c:996 +#: ../cli/src/devices.c:1222 #, c-format msgid "Error: iface has to be specified." msgstr "Eraro: 'iface' devas esti specifata." -#: ../cli/src/devices.c:1114 +#: ../cli/src/devices.c:1347 #, c-format msgid "Error: 'dev wifi': %s" msgstr "Eraro: 'dev wifi': %s" -#: ../cli/src/devices.c:1116 +#: ../cli/src/devices.c:1349 #, c-format msgid "Error: 'dev wifi': %s; allowed fields: %s" msgstr "Eraro: 'dev wifi': %s; permesataj kampoj: %s" -#: ../cli/src/devices.c:1123 +#: ../cli/src/devices.c:1372 msgid "WiFi scan list" msgstr "WiFi-skanlisto" -#: ../cli/src/devices.c:1158 ../cli/src/devices.c:1212 +#: ../cli/src/devices.c:1409 ../cli/src/devices.c:1463 +#: ../cli/src/devices.c:1670 #, c-format msgid "Error: Access point with hwaddr '%s' not found." msgstr "Eraro: Retkaptejo kun 'hwaddr' '%s' ne trovita" -#: ../cli/src/devices.c:1175 +#: ../cli/src/devices.c:1426 #, c-format msgid "Error: Device '%s' is not a WiFi device." msgstr "Eraro: Aparato '%s' ne estas WiFi-aparato." -#: ../cli/src/devices.c:1239 +#: ../cli/src/devices.c:1490 #, c-format msgid "Error: 'dev wifi' command '%s' is not valid." msgstr "Eraro: 'dev wifi'-komando '%s' ne validas." -#: ../cli/src/devices.c:1286 +#: ../cli/src/devices.c:1566 +#, c-format +msgid "Error: 'dev wimax': %s" +msgstr "Eraro: 'dev wimax': %s" + +#: ../cli/src/devices.c:1568 +#, c-format +msgid "Error: 'dev wimax': %s; allowed fields: %s" +msgstr "Eraro: 'dev wimax': %s; permesataj kampoj: %s" + +#: ../cli/src/devices.c:1591 +msgid "WiMAX NSP list" +msgstr "" + +#: ../cli/src/devices.c:1628 +#, c-format +msgid "Error: NSP with name '%s' not found." +msgstr "" + +#: ../cli/src/devices.c:1639 +#, c-format +msgid "Error: Device '%s' is not a WiMAX device." +msgstr "Eraro: Aparato '%s' ne estas WiMAX-aparato." + +#: ../cli/src/devices.c:1697 +#, c-format +msgid "Error: 'dev wimax' command '%s' is not valid." +msgstr "Eraro: 'dev wimax'-komando '%s' ne validas." + +#: ../cli/src/devices.c:1747 #, c-format msgid "Error: 'dev' command '%s' is not valid." msgstr "Eraro: 'dev'-komando '%s' ne validas." -#: ../cli/src/network-manager.c:35 +#: ../cli/src/network-manager.c:37 msgid "RUNNING" -msgstr "AKTIVA" +msgstr "AKTIVE" -#. 1 -#: ../cli/src/network-manager.c:37 +#. 0 +#: ../cli/src/network-manager.c:38 +msgid "VERSION" +msgstr "VERSIO" + +#. 2 +#: ../cli/src/network-manager.c:40 msgid "NET-ENABLED" msgstr "RET-ENŜALTITE" -#. 2 -#: ../cli/src/network-manager.c:38 +#. 3 +#: ../cli/src/network-manager.c:41 msgid "WIFI-HARDWARE" msgstr "WIFI-APARATARO" -#. 3 -#: ../cli/src/network-manager.c:39 +#. 4 +#: ../cli/src/network-manager.c:42 msgid "WIFI" msgstr "WIFI" -#. 4 -#: ../cli/src/network-manager.c:40 +#. 5 +#: ../cli/src/network-manager.c:43 msgid "WWAN-HARDWARE" msgstr "WWAN-APARATARO" -#. 5 -#: ../cli/src/network-manager.c:41 +#. 6 +#: ../cli/src/network-manager.c:44 msgid "WWAN" msgstr "WWAN" -#: ../cli/src/network-manager.c:64 +#. 7 +#: ../cli/src/network-manager.c:45 +msgid "WIMAX-HARDWARE" +msgstr "WIMAX-APARATARO" + +#. 8 +#: ../cli/src/network-manager.c:46 +msgid "WIMAX" +msgstr "WIMAX" + +#: ../cli/src/network-manager.c:74 #, c-format msgid "" "Usage: nmcli nm { COMMAND | help }\n" "\n" +" COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n" +"\n" " COMMAND := { status | enable | sleep | wifi | wwan }\n" "\n" " status\n" @@ -906,10 +1026,13 @@ msgid "" " sleep [true|false]\n" " wifi [on|off]\n" " wwan [on|off]\n" +" wimax [on|off]\n" "\n" msgstr "" "Uzo: nmcli nm { KOMANDO | help }\n" "\n" +" KOMANDO := { status | enable | sleep | wifi | wwan | wimax }\n" +"\n" " KOMANDO := { status | enable | sleep | wifi | wwan }\n" "\n" " status\n" @@ -917,118 +1040,145 @@ msgstr "" " sleep [true|false]\n" " wifi [on|off]\n" " wwan [on|off]\n" +" wimax [on|off]\n" "\n" -#: ../cli/src/network-manager.c:85 +#: ../cli/src/network-manager.c:103 msgid "asleep" msgstr "dormas" -#: ../cli/src/network-manager.c:87 +#: ../cli/src/network-manager.c:105 msgid "connecting" msgstr "konektas" -#: ../cli/src/network-manager.c:128 +#: ../cli/src/network-manager.c:107 +msgid "connected (local only)" +msgstr "" + +#: ../cli/src/network-manager.c:109 +msgid "connected (site only)" +msgstr "" + +#: ../cli/src/network-manager.c:113 +msgid "disconnecting" +msgstr "malkonektante" + +#: ../cli/src/network-manager.c:153 #, c-format msgid "Error: 'nm status': %s" msgstr "Eraro: 'nm status': %s" -#: ../cli/src/network-manager.c:130 +#: ../cli/src/network-manager.c:155 #, c-format msgid "Error: 'nm status': %s; allowed fields: %s" msgstr "Eraro: 'nm status': %s; permesataj kampoj: %s" -#: ../cli/src/network-manager.c:137 -msgid "NetworkManager status" -msgstr "Stato de NetworkManager" - -#. Print header -#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 -#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 -#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 -#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +#. create NMClient +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169 +#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171 +#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174 +#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296 +#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389 +#: ../cli/src/network-manager.c:428 msgid "enabled" -msgstr "enŝaltita" +msgstr "enŝaltite" -#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 -#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 -#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 -#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169 +#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:171 +#: ../cli/src/network-manager.c:172 ../cli/src/network-manager.c:174 +#: ../cli/src/network-manager.c:175 ../cli/src/network-manager.c:296 +#: ../cli/src/network-manager.c:351 ../cli/src/network-manager.c:389 +#: ../cli/src/network-manager.c:428 msgid "disabled" msgstr "elŝaltite" -#: ../cli/src/network-manager.c:152 +#: ../cli/src/network-manager.c:188 +msgid "NetworkManager status" +msgstr "Stato de NetworkManager" + +#. Print header +#: ../cli/src/network-manager.c:191 msgid "running" -msgstr "aktiva" +msgstr "aktive" -#: ../cli/src/network-manager.c:152 +#: ../cli/src/network-manager.c:191 msgid "not running" -msgstr "neaktiva" +msgstr "neaktive" -#: ../cli/src/network-manager.c:175 +#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322 #, c-format msgid "Error: Couldn't connect to system bus: %s" msgstr "Eraro: Ne povis konekti al sistem-buso: %s." -#: ../cli/src/network-manager.c:186 +#: ../cli/src/network-manager.c:233 #, c-format msgid "Error: Couldn't create D-Bus object proxy." msgstr "Eraro: Ne povis krei D-busan objekt-prokurservilon." -#: ../cli/src/network-manager.c:192 +#: ../cli/src/network-manager.c:239 #, c-format msgid "Error in sleep: %s" msgstr "Eraro dum dormo: %s" -#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286 -#: ../cli/src/network-manager.c:318 +#: ../cli/src/network-manager.c:283 ../cli/src/network-manager.c:338 +#: ../cli/src/network-manager.c:376 ../cli/src/network-manager.c:415 #, c-format msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" msgstr "Eraro: valoro '--fields' '%s' ne validas tie ĉi; permesataj kampoj: %s" -#: ../cli/src/network-manager.c:245 +#: ../cli/src/network-manager.c:291 msgid "Networking enabled" msgstr "Retkonektado enŝaltita" -#: ../cli/src/network-manager.c:256 +#: ../cli/src/network-manager.c:307 #, c-format msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." msgstr "Eraro: nevalida 'enŝalt'-parametro: '%s'; uzu 'true' aŭ 'false'." -#: ../cli/src/network-manager.c:265 +#: ../cli/src/network-manager.c:317 #, c-format msgid "Error: Sleeping status is not exported by NetworkManager." msgstr "Eraro: Dorm-stato ne estas elportite de NetworkManager." -#: ../cli/src/network-manager.c:273 +#: ../cli/src/network-manager.c:325 #, c-format msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." msgstr "Eraro: nevalida 'dorm'-parametro: '%s'; uzu 'true' aŭ 'false'." -#: ../cli/src/network-manager.c:294 +#: ../cli/src/network-manager.c:346 msgid "WiFi enabled" msgstr "WiFi enŝaltita" -#: ../cli/src/network-manager.c:305 +#: ../cli/src/network-manager.c:362 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Eraro: nevalida 'wifi'-parametro: '%s'." -#: ../cli/src/network-manager.c:326 +#: ../cli/src/network-manager.c:384 msgid "WWAN enabled" msgstr "WWAN enŝaltita" -#: ../cli/src/network-manager.c:337 +#: ../cli/src/network-manager.c:400 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Eraro: nevalida 'wwan'-parametro: '%s'." -#: ../cli/src/network-manager.c:348 +#: ../cli/src/network-manager.c:423 +msgid "WiMAX enabled" +msgstr "WiMAX enŝaltita" + +#: ../cli/src/network-manager.c:439 +#, c-format +msgid "Error: invalid 'wimax' parameter: '%s'." +msgstr "Eraro: nevalida 'wimax'-parametro: '%s'." + +#: ../cli/src/network-manager.c:452 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Eraro: 'nm'-komando '%s' ne validas." -#: ../cli/src/nmcli.c:69 -#, c-format +#: ../cli/src/nmcli.c:64 +#, fuzzy, c-format msgid "" "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" "\n" @@ -1039,6 +1189,8 @@ msgid "" " -f[ields] <field1,field2,...>|all|common specify fields to output\n" " -e[scape] yes|no escape columns separators in " "values\n" +" -n[ocheck] don't check nmcli and " +"NetworkManager versions\n" " -v[ersion] show program version\n" " -h[elp] print this help\n" "\n" @@ -1053,12 +1205,12 @@ msgstr "" "OPCIOJ\n" " -t[erse] konciza eligo\n" " -p[retty] bela eligo\n" -" -m[ode] tabular|multiline eliga reĝimo\n" +"|multiline eliga reĝimo\n" " -f[ields] <field1,field2,...>|all|common specifigi eligo-kampojn\n" " -e[scape] yes|no eskapaj kolumno-separoj en " "valoroj\n" " -v[ersion] montri programversion\n" -" -h[elp] printi tiun ĉi help-paĝon\n" +" -h[elp] montri tiun ĉi help-paĝon\n" "\n" "OBJEKTO\n" " nm stato de NetworkManager\n" @@ -1066,371 +1218,394 @@ msgstr "" " dev aparatoj mastrumataj de NetworkManager\n" "\n" -#: ../cli/src/nmcli.c:113 +#: ../cli/src/nmcli.c:109 #, c-format msgid "Error: Object '%s' is unknown, try 'nmcli help'." msgstr "Eraro: Objekto '%s' estas nekonata, provu: 'nmcli help'." -#: ../cli/src/nmcli.c:143 +#: ../cli/src/nmcli.c:139 #, c-format msgid "Error: Option '--terse' is specified the second time." msgstr "Eraro: Opcio '--terse' specifiĝis duan fojon." -#: ../cli/src/nmcli.c:148 +#: ../cli/src/nmcli.c:144 #, c-format msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." msgstr "Eraro: Opcioj '--terse' kaj '--pretty' ekskludas unu la alian." -#: ../cli/src/nmcli.c:156 +#: ../cli/src/nmcli.c:152 #, c-format msgid "Error: Option '--pretty' is specified the second time." msgstr "Eraro: Opcio '--pretty' specifiĝis duan fojon." -#: ../cli/src/nmcli.c:161 +#: ../cli/src/nmcli.c:157 #, c-format msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." msgstr "Eraro: Opcioj '--pretty' kaj '--terse' ekskludas unu la alian." -#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187 +#: ../cli/src/nmcli.c:167 ../cli/src/nmcli.c:183 #, c-format msgid "Error: missing argument for '%s' option." -msgstr "Eraro: mankas argumento por elektindaĵo '%s'." +msgstr "Eraro: mankas argumento por la opcio '%s'." -#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196 +#: ../cli/src/nmcli.c:176 ../cli/src/nmcli.c:192 #, c-format msgid "Error: '%s' is not valid argument for '%s' option." -msgstr "Eraro: '%s' ne estas valida argumento por elektindaĵo '%s'." +msgstr "Eraro: '%s' ne estas valida argumento por la opcio '%s'." -#: ../cli/src/nmcli.c:203 +#: ../cli/src/nmcli.c:199 #, c-format msgid "Error: fields for '%s' options are missing." -msgstr "Eraro: kampoj por elektindaĵoj '%s' mankas." +msgstr "Eraro: kampoj por la opcio '%s' mankas." -#: ../cli/src/nmcli.c:209 +#: ../cli/src/nmcli.c:207 #, c-format msgid "nmcli tool, version %s\n" msgstr "ilo 'nmcli', versio %s\n" -#: ../cli/src/nmcli.c:215 +#: ../cli/src/nmcli.c:213 #, c-format msgid "Error: Option '%s' is unknown, try 'nmcli -help'." msgstr "Eraro: Opcio '%s' estas nekonata, provu: 'nmcli -help'." -#: ../cli/src/nmcli.c:234 +#: ../cli/src/nmcli.c:232 #, c-format msgid "Caught signal %d, shutting down..." msgstr "Ricevis signalon '%d', elŝaltas..." -#: ../cli/src/nmcli.c:259 -#, c-format -msgid "Error: Could not connect to NetworkManager." -msgstr "Eraro: Ne eblis konekti al NetworkManager" +#: ../cli/src/nmcli.c:257 +msgid "Error: Could not create NMClient object." +msgstr "Eraro: Ne povas krei NMClient-objekton." -#: ../cli/src/nmcli.c:275 +#: ../cli/src/nmcli.c:273 msgid "Success" msgstr "Sukceso" -#: ../cli/src/settings.c:411 +#: ../cli/src/settings.c:423 #, c-format msgid "%d (hex-ascii-key)" msgstr "%d (heks-ascii-ŝlosilo)" -#: ../cli/src/settings.c:413 +#: ../cli/src/settings.c:425 #, c-format msgid "%d (104/128-bit passphrase)" -msgstr "%d (104/128-bita pasvorto)" +msgstr "%d (104/128-bita pasfrazo)" -#: ../cli/src/settings.c:416 +#: ../cli/src/settings.c:428 #, c-format msgid "%d (unknown)" -msgstr "%d (nekonata)" +msgstr "%d (nekonate)" -#: ../cli/src/settings.c:442 +#: ../cli/src/settings.c:454 msgid "0 (unknown)" -msgstr "0 (nekonata)" +msgstr "0 (nekonate)" -#: ../cli/src/settings.c:448 +#: ../cli/src/settings.c:460 msgid "any, " msgstr "ajna, " -#: ../cli/src/settings.c:450 +#: ../cli/src/settings.c:462 msgid "900 MHz, " msgstr "900 MHz, " -#: ../cli/src/settings.c:452 +#: ../cli/src/settings.c:464 msgid "1800 MHz, " msgstr "1800 MHz, " -#: ../cli/src/settings.c:454 +#: ../cli/src/settings.c:466 msgid "1900 MHz, " msgstr "1900 MHz, " -#: ../cli/src/settings.c:456 +#: ../cli/src/settings.c:468 msgid "850 MHz, " msgstr "850 MHz, " -#: ../cli/src/settings.c:458 +#: ../cli/src/settings.c:470 msgid "WCDMA 3GPP UMTS 2100 MHz, " msgstr "WCDMA 3GPP UMTS 2100 MHz, " -#: ../cli/src/settings.c:460 +#: ../cli/src/settings.c:472 msgid "WCDMA 3GPP UMTS 1800 MHz, " msgstr "WCDMA 3GPP UMTS 1800 MHz, " -#: ../cli/src/settings.c:462 +#: ../cli/src/settings.c:474 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " -#: ../cli/src/settings.c:464 +#: ../cli/src/settings.c:476 msgid "WCDMA 3GPP UMTS 800 MHz, " msgstr "WCDMA 3GPP UMTS 800 MHz, " -#: ../cli/src/settings.c:466 +#: ../cli/src/settings.c:478 msgid "WCDMA 3GPP UMTS 850 MHz, " msgstr "WCDMA 3GPP UMTS 850 MHz, " -#: ../cli/src/settings.c:468 +#: ../cli/src/settings.c:480 msgid "WCDMA 3GPP UMTS 900 MHz, " msgstr "WCDMA 3GPP UMTS 900 MHz, " -#: ../cli/src/settings.c:470 +#: ../cli/src/settings.c:482 msgid "WCDMA 3GPP UMTS 1700 MHz, " msgstr "WCDMA 3GPP UMTS 1700 MHz, " -#: ../cli/src/settings.c:554 ../cli/src/settings.c:721 +#: ../cli/src/settings.c:566 ../cli/src/settings.c:732 msgid "auto" msgstr "aŭto" -#: ../cli/src/settings.c:716 ../cli/src/settings.c:719 -#: ../cli/src/settings.c:720 ../cli/src/utils.c:172 +#: ../cli/src/settings.c:727 ../cli/src/settings.c:730 +#: ../cli/src/settings.c:731 ../cli/src/utils.c:176 msgid "not set" -msgstr "neagordita" +msgstr "neagordite" -#: ../cli/src/utils.c:124 +#: ../cli/src/utils.c:128 #, c-format msgid "field '%s' has to be alone" msgstr "kampo '%s' devas esti sola" -#: ../cli/src/utils.c:127 +#: ../cli/src/utils.c:131 #, c-format msgid "invalid field '%s'" msgstr "nevalida kampo '%s'" -#: ../cli/src/utils.c:146 +#: ../cli/src/utils.c:150 #, c-format msgid "Option '--terse' requires specifying '--fields'" -msgstr "Elektindaĵo '--terse' postulas specifigon de '--fields'" +msgstr "Opcio '--terse' postulas specifigon de '--fields'" -#: ../cli/src/utils.c:150 +#: ../cli/src/utils.c:154 #, c-format msgid "Option '--terse' requires specific '--fields' option values , not '%s'" msgstr "" -"Elektindaĵo '--terse' postulas specifajn elektindajn valorojn de '--fields', " -"ne '%s'" +"Opcio '--terse' postulas specifajn elektindajn valorojn de '--fields', ne " +"'%s'" + +#: ../cli/src/utils.c:333 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" +msgstr "Eraro: Ne povas krei D-Bus-prokurilobjekto por org.freedesktop.DBus" + +#: ../cli/src/utils.c:341 +#, c-format +msgid "Error: NameHasOwner request failed: %s" +msgstr "Eraro: NameHasOwner-peto fiaskis: %s" + +#: ../cli/src/utils.c:386 +#, c-format +msgid "" +"Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --" +"nocheck to suppress the warning.\n" +msgstr "" + +#: ../cli/src/utils.c:395 +#, c-format +msgid "" +"Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force " +"execution using --nocheck, but the results are unpredictable." +msgstr "" -#: ../libnm-util/crypto.c:121 +#: ../libnm-util/crypto.c:127 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "PEM-ŝlosil-dosiero ne havis finan etikedon '%s'." -#: ../libnm-util/crypto.c:131 +#: ../libnm-util/crypto.c:140 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Tio ĉi ne aspektas kiel privat-ŝlosila PEM-dosiero." -#: ../libnm-util/crypto.c:139 +#: ../libnm-util/crypto.c:148 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Malsufiĉas memoro por stori datenojn de PEM-dosiero." -#: ../libnm-util/crypto.c:155 +#: ../libnm-util/crypto.c:164 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Misforma PEM-dosiero: 'Proc-Type' ne estas la unua etikedo." -#: ../libnm-util/crypto.c:163 +#: ../libnm-util/crypto.c:172 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Misforma PEM-dosiero: nekonata Proc-Type-etikedo \"%s\"." -#: ../libnm-util/crypto.c:173 +#: ../libnm-util/crypto.c:182 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Misforma PEM-dosiero: 'DEK-Info' ne estas la dua etikedo." -#: ../libnm-util/crypto.c:184 +#: ../libnm-util/crypto.c:193 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "Misforma PEM-dosiero: mi ne trovis IV en la etikedo \"DEK-Info\"." -#: ../libnm-util/crypto.c:191 +#: ../libnm-util/crypto.c:200 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "" "Misforma PEM-dosiero: nevalida struktturo de IV en la etikedo \"DEK-Info\"." -#: ../libnm-util/crypto.c:204 +#: ../libnm-util/crypto.c:213 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Misforma PEM-dosiero: nekonata privat-ŝlosila ĉifro \"%s\"." -#: ../libnm-util/crypto.c:223 +#: ../libnm-util/crypto.c:232 #, c-format msgid "Could not decode private key." msgstr "Ne eblis malĉifri la privatan ŝlosilon." -#: ../libnm-util/crypto.c:268 -#, c-format -msgid "PEM certificate '%s' had no end tag '%s'." -msgstr "La PEM-certigilo \"%s\" ne havas finan etikedon \"%s\"." - -#: ../libnm-util/crypto.c:278 -#, c-format -msgid "Failed to decode certificate." -msgstr "Malsuksesis malĉifri la certigilon." - -#: ../libnm-util/crypto.c:287 +#: ../libnm-util/crypto.c:268 ../libnm-util/crypto.c:554 #, c-format msgid "Not enough memory to store certificate data." msgstr "Malsufiĉas memoro por stori la datenojn de la certigilo." -#: ../libnm-util/crypto.c:295 -#, c-format -msgid "Not enough memory to store file data." -msgstr "Malsufiĉas memoro por stori la datenojn de la dosiero." - -#: ../libnm-util/crypto.c:325 +#: ../libnm-util/crypto.c:294 #, c-format msgid "IV must be an even number of bytes in length." msgstr "IV nepre amkplesu paran nombron da bajtoj." -#: ../libnm-util/crypto.c:334 +#: ../libnm-util/crypto.c:303 #, c-format msgid "Not enough memory to store the IV." msgstr "Malsufiĉas memoro por stori la IV-on." -#: ../libnm-util/crypto.c:345 +#: ../libnm-util/crypto.c:314 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV enhavas nedeksesumajn ciferojn" -#: ../libnm-util/crypto.c:383 ../libnm-util/crypto_gnutls.c:148 -#: ../libnm-util/crypto_gnutls.c:266 ../libnm-util/crypto_nss.c:171 -#: ../libnm-util/crypto_nss.c:336 +#: ../libnm-util/crypto.c:352 ../libnm-util/crypto_gnutls.c:147 +#: ../libnm-util/crypto_gnutls.c:265 ../libnm-util/crypto_nss.c:167 +#: ../libnm-util/crypto_nss.c:332 #, c-format msgid "Private key cipher '%s' was unknown." msgstr "Privata Cipher-ŝlosilo '%s' estas nekonata." -#: ../libnm-util/crypto.c:392 +#: ../libnm-util/crypto.c:361 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Nesufiĉa memoro por malĉifri privatan ŝlosilon." -#: ../libnm-util/crypto.c:512 +#: ../libnm-util/crypto.c:426 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Nesufiĉa memoro por gardi privatan ŝlosilon malĉifritan." + +#: ../libnm-util/crypto.c:471 #, c-format msgid "Unable to determine private key type." msgstr "Ne eblas determini la tipon de la privata ŝlosilo." -#: ../libnm-util/crypto.c:531 +#: ../libnm-util/crypto.c:526 #, c-format -msgid "Not enough memory to store decrypted private key." -msgstr "Nesufiĉa memoro por gardi privatan ŝlosilon malĉifritan." +msgid "PEM certificate had no start tag '%s'." +msgstr "La PEM-certigilo ne havas start-etikedon \"%s\"." + +#: ../libnm-util/crypto.c:535 +#, c-format +msgid "PEM certificate had no end tag '%s'." +msgstr "La PEM-certigilo ne havas finan etikedon \"%s\"." + +#: ../libnm-util/crypto.c:559 +#, c-format +msgid "Failed to decode certificate." +msgstr "Malsuksesis malĉifri la certigilon." -#: ../libnm-util/crypto_gnutls.c:49 +#: ../libnm-util/crypto_gnutls.c:50 msgid "Failed to initialize the crypto engine." msgstr "Pretigo de la kriptografia maŝino fiaskis." -#: ../libnm-util/crypto_gnutls.c:93 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." msgstr "Pretigo de la MD5-maŝino fiaskis: %s / %s." -#: ../libnm-util/crypto_gnutls.c:156 +#: ../libnm-util/crypto_gnutls.c:155 #, c-format msgid "Invalid IV length (must be at least %zd)." msgstr "Nevalida amplekso por IV (devas esti almenaŭ %zd)." -#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188 +#: ../libnm-util/crypto_gnutls.c:164 ../libnm-util/crypto_nss.c:184 #, c-format msgid "Not enough memory for decrypted key buffer." msgstr "Nesufiĉa memoro por bufro de la malĉifrita ŝlosilo." -#: ../libnm-util/crypto_gnutls.c:173 +#: ../libnm-util/crypto_gnutls.c:172 #, c-format msgid "Failed to initialize the decryption cipher context: %s / %s." msgstr "Fiaskis pravalorizi la malĉifran Cipher-kuntekston: %s / %s." -#: ../libnm-util/crypto_gnutls.c:182 +#: ../libnm-util/crypto_gnutls.c:181 #, c-format msgid "Failed to set symmetric key for decryption: %s / %s." msgstr "Fiaskis agordi simetrian ŝlosilon por malĉifro: %s / %s." -#: ../libnm-util/crypto_gnutls.c:191 +#: ../libnm-util/crypto_gnutls.c:190 #, c-format msgid "Failed to set IV for decryption: %s / %s." msgstr "Fiaskis agordi IV por malĉifro: %s / %s." -#: ../libnm-util/crypto_gnutls.c:200 +#: ../libnm-util/crypto_gnutls.c:199 #, c-format msgid "Failed to decrypt the private key: %s / %s." msgstr "Fiaskis malĉifri la privatan ŝlosilon: %s / %s." -#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:267 +#: ../libnm-util/crypto_gnutls.c:209 ../libnm-util/crypto_nss.c:263 #, c-format msgid "Failed to decrypt the private key: unexpected padding length." msgstr "Fiaskis malĉifri la privatan ŝlosilon: neatendita ŝtopada longo." -#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:278 +#: ../libnm-util/crypto_gnutls.c:220 ../libnm-util/crypto_nss.c:274 #, c-format msgid "Failed to decrypt the private key." msgstr "Fiaskis malĉifri la privatan ŝlosilon." -#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:356 +#: ../libnm-util/crypto_gnutls.c:285 ../libnm-util/crypto_nss.c:352 #, c-format msgid "Could not allocate memory for encrypting." msgstr "Ne eblis rezervi memoron por ĉifrado." -#: ../libnm-util/crypto_gnutls.c:294 +#: ../libnm-util/crypto_gnutls.c:293 #, c-format msgid "Failed to initialize the encryption cipher context: %s / %s." msgstr "Fiaskis valorizi la ĉifradan kuntekston: %s / %s." -#: ../libnm-util/crypto_gnutls.c:303 +#: ../libnm-util/crypto_gnutls.c:302 #, c-format msgid "Failed to set symmetric key for encryption: %s / %s." msgstr "Fiaskis agordi simetrian ŝlosilon por ĉifrado: %s / %s." -#: ../libnm-util/crypto_gnutls.c:313 +#: ../libnm-util/crypto_gnutls.c:312 #, c-format msgid "Failed to set IV for encryption: %s / %s." msgstr "Fiaskis agordi IV por ĉifrado: %s / %s." -#: ../libnm-util/crypto_gnutls.c:322 +#: ../libnm-util/crypto_gnutls.c:321 #, c-format msgid "Failed to encrypt the data: %s / %s." msgstr "Ĉifrado de datumoj malsukcesis: %s / %s." -#: ../libnm-util/crypto_gnutls.c:362 +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Eraro dum pravalorizo de atestilaj datumoj: %s" -#: ../libnm-util/crypto_gnutls.c:384 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Ne povis malkodi certigilon: %s" -#: ../libnm-util/crypto_gnutls.c:408 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "Ne povis pravalorizi PKCS#12-malkodilon: %s" -#: ../libnm-util/crypto_gnutls.c:421 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "Ne eblis dekodi PKCS#12-dosieron: %s" -#: ../libnm-util/crypto_gnutls.c:433 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "No povis kontroli PKCS#12-dosieron: %s" @@ -1440,278 +1615,248 @@ msgstr "No povis kontroli PKCS#12-dosieron: %s" msgid "Failed to initialize the crypto engine: %d." msgstr "Pravalorigo de la kriptografia maŝino fiaskis: %d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "Fiaskis pravalorizi la MD5-kuntekston: %d." -#: ../libnm-util/crypto_nss.c:179 +#: ../libnm-util/crypto_nss.c:175 #, c-format msgid "Invalid IV length (must be at least %d)." msgstr "Nevalida IV-longo (devas esti almenaŭ %d)." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Fiaskis pravalorizi la malĉifran Cipher-foldon." -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." msgstr "Fiaskis agordi simetrian ŝlosilon por malĉifrado." -#: ../libnm-util/crypto_nss.c:216 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Fiaskis agordi IV por malĉifrado." -#: ../libnm-util/crypto_nss.c:224 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Fiaskis pravalorizi la malĉifran kuntekston." -#: ../libnm-util/crypto_nss.c:237 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." msgstr "Fiaskis malĉifri la privatan ŝlosilon: %d." -#: ../libnm-util/crypto_nss.c:245 +#: ../libnm-util/crypto_nss.c:241 #, c-format msgid "Failed to decrypt the private key: decrypted data too large." msgstr "Fiaskis malĉifri la privatan ŝlosilon: malĉifritaj datumoj tro longas." -#: ../libnm-util/crypto_nss.c:256 +#: ../libnm-util/crypto_nss.c:252 #, c-format msgid "Failed to finalize decryption of the private key: %d." msgstr "Fiaskis fini malĉifradon de la privata ŝlosilo: %d." -#: ../libnm-util/crypto_nss.c:364 +#: ../libnm-util/crypto_nss.c:360 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Fiaskis pravalorizi la ĉifran Cipher-foldon." -#: ../libnm-util/crypto_nss.c:372 +#: ../libnm-util/crypto_nss.c:368 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "Fiaskis agordi simetrian ŝlosilon por ĉifrado." -#: ../libnm-util/crypto_nss.c:380 +#: ../libnm-util/crypto_nss.c:376 #, c-format msgid "Failed to set IV for encryption." msgstr "Fiaskis agordi IV por ĉifrado." -#: ../libnm-util/crypto_nss.c:388 +#: ../libnm-util/crypto_nss.c:384 #, c-format msgid "Failed to initialize the encryption context." msgstr "Fiaskis pravalorizi la ĉifradan kuntekston." -#: ../libnm-util/crypto_nss.c:396 +#: ../libnm-util/crypto_nss.c:392 #, c-format msgid "Failed to encrypt: %d." msgstr "Fiaskis ĉifri: %d." -#: ../libnm-util/crypto_nss.c:404 +#: ../libnm-util/crypto_nss.c:400 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Neatendita nombro da datumoj post ĉifrado." -#: ../libnm-util/crypto_nss.c:447 +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Ne povis malkodigi atestilon: %d" -#: ../libnm-util/crypto_nss.c:482 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Ne povis konverti pasvorton al UCS2: %d" -#: ../libnm-util/crypto_nss.c:510 +#: ../libnm-util/crypto_nss.c:506 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %d" msgstr "Ne povis pravalorizi PKCS#12-malkodilon: %d" -#: ../libnm-util/crypto_nss.c:519 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "Ne povis malkodigi PKCS#12-dosieron: %d" -#: ../libnm-util/crypto_nss.c:528 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "Ne povis kontroli PKCS#12-dosieron: %d" -#: ../libnm-util/crypto_nss.c:557 +#: ../libnm-util/crypto_nss.c:553 msgid "Could not generate random data." msgstr "Ne povis generi hazardajn datumojn." -#: ../libnm-util/nm-utils.c:1975 +#: ../libnm-util/nm-utils.c:2000 #, c-format msgid "Not enough memory to make encryption key." msgstr "Nesufiĉa memoro por fari ĉifran ŝlosilon." -#: ../libnm-util/nm-utils.c:2085 +#: ../libnm-util/nm-utils.c:2110 msgid "Could not allocate memory for PEM file creation." msgstr "Ne povis atribui memoron por kreo de PEM-dosiero." -#: ../libnm-util/nm-utils.c:2097 +#: ../libnm-util/nm-utils.c:2122 #, c-format msgid "Could not allocate memory for writing IV to PEM file." msgstr "Ne povis atribui memoron por konservi IV en PEM-dosieron." -#: ../libnm-util/nm-utils.c:2109 +#: ../libnm-util/nm-utils.c:2134 #, c-format msgid "Could not allocate memory for writing encrypted key to PEM file." msgstr "" "Ne povis atribui memoron por konservi ĉifritan ŝlosilon en PEM-dosieron." -#: ../libnm-util/nm-utils.c:2128 +#: ../libnm-util/nm-utils.c:2153 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Ne povis atribui memoron por datumoj de PEM-dosiero." -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 -msgid "Connection sharing via a protected WiFi network" -msgstr "Kundivido de konektoj per protektita WiFi-reto" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2 -msgid "Connection sharing via an open WiFi network" -msgstr "Kundivido de konektoj per malferma WiFi-reto" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3 -msgid "Modify persistent system hostname" -msgstr "Modifi permanentan sisteman gastigan nomon" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4 -msgid "Modify system connections" -msgstr "Modifi sistemajn konektojn" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5 -msgid "System policy prevents modification of system settings" -msgstr "Sistempolico preventas modifadon de sistemagordoj" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 -msgid "System policy prevents modification of the persistent system hostname" -msgstr "Sistempolico preventas modifadon de la konstanta sistem-gastnomo" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 -msgid "System policy prevents sharing connections via a protected WiFi network" -msgstr "Sistempolico preventas kundividon de konektoj per protektita WiFi-reto" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 -msgid "System policy prevents sharing connections via an open WiFi network" -msgstr "Sistempolitiko preventas kundividon de konektoj per malferma WiFi-reto" - #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 msgid "Allow control of network connections" msgstr "Permesi kontrolon de retkonektoj" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 -msgid "Allow use of user-specific connections" -msgstr "Permesi uzon de specifaj konektoj por uzantoj" +msgid "Connection sharing via a protected WiFi network" +msgstr "Kundivido de konektoj per protektita WiFi-reto" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Connection sharing via an open WiFi network" +msgstr "Kundivido de konektoj per malferma WiFi-reto" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 msgid "Enable or disable WiFi devices" msgstr "Enŝalti aŭ elŝalti WiFi-aparatojn" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable WiMAX mobile broadband devices" +msgstr "Enŝalti aŭ elŝalti WiMAX-larĝkapacitajn aparatojn" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 msgid "Enable or disable mobile broadband devices" msgstr "Enŝalti aŭ elŝalti poŝtelefonajn larĝkapacitajn aparatojn" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 msgid "Enable or disable system networking" msgstr "Enŝalti aŭ elŝalti sistemretkonektadon" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "Modify network connections for all users" +msgstr "Modifi retkonektojn por ĉiuj uzantoj" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "Modify persistent system hostname" +msgstr "Modifi permanentan sisteman gastigan nomon" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "Modify personal network connections" +msgstr "Modifi proprajn retkonektojn" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 msgid "" "Put NetworkManager to sleep or wake it up (should only be used by system " "power management)" msgstr "" "Dormigi aŭ veki NetworkManager (estu uzata nur de sistema energimastumado)" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 msgid "System policy prevents control of network connections" msgstr "Sistempolitiko preventas kontrolon de retkonektoj" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:13 msgid "System policy prevents enabling or disabling WiFi devices" -msgstr "Sistempolitiko preventas enŝalton aŭ malŝalton de WiFi-aparatoj" +msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de WiFi-aparatoj" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14 +msgid "" +"System policy prevents enabling or disabling WiMAX mobile broadband devices" +msgstr "" +"Sistempolitiko preventas enŝalton aŭ elŝalton de larĝkapacitaj WiMAX-" +"aparatoj" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15 msgid "System policy prevents enabling or disabling mobile broadband devices" msgstr "" -"Sistempolitiko preventas enŝalton aŭ malŝalton de poŝtelefonaj larĝkapacitaj " +"Sistempolitiko preventas enŝalton aŭ elŝalton de poŝtelefonaj larĝkapacitaj " "aparatoj" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:16 msgid "System policy prevents enabling or disabling system networking" -msgstr "Sistempolitiko preventas enŝalton aŭ malŝalton de sistema retkonektado" - -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 -msgid "System policy prevents putting NetworkManager to sleep or waking it up" -msgstr "Sistempolitiko preventas dormigi aŭ veki NetworkManager" - -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 -msgid "System policy prevents use of user-specific connections" -msgstr "Sistempolitiko preventas uzon de uzant-specifaj konektoj" +msgstr "Sistempolitiko preventas enŝalton aŭ elŝalton de sistema retkonektado" -#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231 -#: ../src/nm-netlink-monitor.c:653 -#, c-format -msgid "error processing netlink message: %s" -msgstr "eraro dum traktado de netlink-mesaĝo: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17 +msgid "System policy prevents modification of network settings for all users" +msgstr "Sistempolitiko preventas modifadon de retagordoj por ĉiuj uzantoj" -#: ../src/nm-netlink-monitor.c:214 -msgid "error occurred while waiting for data on socket" -msgstr "okazis eraro dum atendado je datumoj sur kontaktoskatolo" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18 +msgid "System policy prevents modification of personal network settings" +msgstr "Sistempolitiko preventas modifadon de propraj retagordoj" -#: ../src/nm-netlink-monitor.c:254 -#, c-format -msgid "unable to connect to netlink for monitoring link status: %s" -msgstr "ne eblas konekti al netlink por kontroli ligilan staton: %s" - -#: ../src/nm-netlink-monitor.c:265 -#, c-format -msgid "unable to enable netlink handle credential passing: %s" -msgstr "ne povis aktivigi la netlink-tenilan legitimaĵo-pasadon: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "Sistempolitiko preventas modifadon de la konstanta sistem-gastnomo" -#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 -#, c-format -msgid "unable to allocate netlink handle for monitoring link status: %s" -msgstr "ne povis atribui retligiltenilon por kontroli ligilstaton: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "Sistempolitiko preventas dormigi aŭ veki NetworkManager" -#: ../src/nm-netlink-monitor.c:376 -#, c-format -msgid "unable to allocate netlink link cache for monitoring link status: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21 +msgid "System policy prevents sharing connections via a protected WiFi network" msgstr "" -"ne povis atribui ligilan kaŝmemoron de netlink por kontroli ligilstaton: %s" - -#: ../src/nm-netlink-monitor.c:502 -#, c-format -msgid "unable to join netlink group: %s" -msgstr "ne eblas membriĝi al retligila grupo: %s" +"Sistempolitiko preventas kundividon de konektoj per protektita WiFi-reto" -#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 -#, c-format -msgid "error updating link cache: %s" -msgstr "eraro dum ĝisdatigo de ligila kaŝmemoro: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22 +msgid "System policy prevents sharing connections via an open WiFi network" +msgstr "Sistempolitiko preventas kundividon de konektoj per malferma WiFi-reto" -#: ../src/main.c:502 +#: ../src/main.c:530 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "" -"Nevalida elektindaĵo. Bonvolu uzi --help por vidi liston da validaj " -"elektindaĵoj.\n" +"Nevalida opcio. Bonvolu uzi --help por vidi liston da validaj opcioj.\n" -#: ../src/main.c:573 +#: ../src/main.c:611 #, c-format msgid "%s. Please use --help to see a list of valid options.\n" -msgstr "%s. Bovolu uzi --help por vidi liston da validaj elektindaĵoj.\n" +msgstr "%s. Bovolu uzi --help por vidi liston da validaj opcioj.\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62 msgid "# Created by NetworkManager\n" msgstr "# Kreita de NetworkManager\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69 #, c-format msgid "" "# Merged from %s\n" @@ -1722,7 +1867,7 @@ msgstr "" #: ../src/dhcp-manager/nm-dhcp-manager.c:284 msgid "no usable DHCP client could be found." -msgstr "neniu uzebla DHCP-kliento estis trovebla" +msgstr "neniu uzebla DHCP-kliento estis trovebla." #: ../src/dhcp-manager/nm-dhcp-manager.c:293 msgid "'dhclient' could be found." @@ -1737,30 +1882,168 @@ msgstr "'dhcpcd' povis esti trovita." msgid "unsupported DHCP client '%s'" msgstr "nesubtenata DHCP-kliento '%s'" -#: ../src/logging/nm-logging.c:146 +#: ../src/dns-manager/nm-dns-manager.c:369 +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "NOTO: la libc-solvilo eble ne povus subteni pli ol 3 nomservilojn." + +#: ../src/dns-manager/nm-dns-manager.c:371 +msgid "The nameservers listed below may not be recognized." +msgstr "La sube ligstigitaj nomserviloj eble ne estos rekonataj." + +#: ../src/logging/nm-logging.c:149 #, c-format msgid "Unknown log level '%s'" msgstr "Nekonata protokolnivelo '%s'" -#: ../src/logging/nm-logging.c:171 +#: ../src/logging/nm-logging.c:174 #, c-format msgid "Unknown log domain '%s'" msgstr "Nekonata protokola regiono '%s'" -#: ../src/dns-manager/nm-dns-manager.c:367 -msgid "NOTE: the libc resolver may not support more than 3 nameservers." -msgstr "NOTO: la libc-solvilo eble ne povus subteni pli ol 3 nomservilojn." +#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355 +#, c-format +msgid "CDMA connection %d" +msgstr "CDMA-konekto %d" -#: ../src/dns-manager/nm-dns-manager.c:369 -msgid "The nameservers listed below may not be recognized." -msgstr "La sube ligstigitaj nomserviloj eble ne estos rekonataj." +#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351 +#, c-format +msgid "GSM connection %d" +msgstr "GSM-konekto %d" + +#: ../src/nm-device-bt.c:326 +#, c-format +msgid "PAN connection %d" +msgstr "PAN-konekto %d" + +#: ../src/nm-device-bt.c:359 +#, c-format +msgid "DUN connection %d" +msgstr "DUN-konekto %d" + +#: ../src/nm-device-ethernet.c:1681 +#, c-format +msgid "PPPoE connection %d" +msgstr "PPPoE-konekto %d" -#: ../src/system-settings/nm-default-wired-connection.c:157 +#: ../src/nm-device-ethernet.c:1681 ../src/settings/nm-settings-utils.c:50 #, c-format -msgid "Auto %s" -msgstr "Aŭto %s" +msgid "Wired connection %d" +msgstr "Drata konekto %d" -#: ../system-settings/plugins/ifcfg-rh/reader.c:3408 -#: ../system-settings/plugins/ifnet/connection_parser.c:49 +#: ../src/nm-device-olpc-mesh.c:423 +#, c-format +msgid "Mesh %d" +msgstr "" + +#: ../src/nm-manager.c:673 +#, c-format +msgid "VPN connection %d" +msgstr "VPN-konekto %d" + +#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231 +#: ../src/nm-netlink-monitor.c:653 +#, c-format +msgid "error processing netlink message: %s" +msgstr "eraro dum traktado de netlink-mesaĝo: %s" + +#: ../src/nm-netlink-monitor.c:214 +msgid "error occurred while waiting for data on socket" +msgstr "okazis eraro dum atendado je datumoj sur kontaktoskatolo" + +#: ../src/nm-netlink-monitor.c:254 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "ne eblas konekti al netlink por kontroli ligilan staton: %s" + +#: ../src/nm-netlink-monitor.c:265 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "ne povis aktivigi la netlink-tenilan legitimaĵo-pasadon: %s" + +#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "ne povis atribui retligiltenilon por kontroli ligilstaton: %s" + +#: ../src/nm-netlink-monitor.c:376 +#, c-format +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" +"ne povis atribui ligilan kaŝmemoron de netlink por kontroli ligilstaton: %s" + +#: ../src/nm-netlink-monitor.c:502 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "ne eblas membriĝi al retligila grupo: %s" + +#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#, c-format +msgid "error updating link cache: %s" +msgstr "eraro dum ĝisdatigo de ligila kaŝmemoro: %s" + +#: ../src/settings/plugins/ifcfg-rh/reader.c:3512 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 msgid "System" msgstr "Sistemo" + +#~ msgid "SCOPE" +#~ msgstr "AMPLEKSO" + +#~ msgid "DBUS-SERVICE" +#~ msgstr "DBUS-SERVO" + +#~ msgid "system" +#~ msgstr "sistemo" + +#~ msgid "user" +#~ msgstr "uzanto" + +#~ msgid "System connections" +#~ msgstr "Sistemkonektoj" + +#~ msgid "User connections" +#~ msgstr "Uzanto-konektoj" + +#~ msgid "Error: Obtaining active connection for '%s' failed." +#~ msgstr "Eraro: Akiro de aktiva konekto por '%s' fiaskis." + +#~ msgid "Error: Could not get user settings." +#~ msgstr "Eraro: Ne povis akiri uzanto-agordojn." + +#~ msgid "Not enough memory to store file data." +#~ msgstr "Malsufiĉas memoro por stori la datenojn de la dosiero." + +#~ msgid "Allow use of user-specific connections" +#~ msgstr "Permesi uzon de specifaj konektoj por uzantoj" + +#~ msgid "System policy prevents use of user-specific connections" +#~ msgstr "Sistempolitiko preventas uzon de uzant-specifaj konektoj" + +#~ msgid "Auto %s" +#~ msgstr "Aŭto %s" + +#~ msgid "" +#~ "Usage: nmcli nm { COMMAND | help }\n" +#~ "\n" +#~ " COMMAND := { status | sleep | wakeup | wifi | wwan }\n" +#~ "\n" +#~ " status\n" +#~ " sleep\n" +#~ " wakeup\n" +#~ " wifi [on|off]\n" +#~ " wwan [on|off]\n" +#~ "\n" +#~ msgstr "" +#~ "Uzo: nmcli nm { KOMANDO | help }\n" +#~ "\n" +#~ " KOMANDO := { status | sleep | wakeup | wifi | wwan }\n" +#~ "\n" +#~ " status\n" +#~ " sleep\n" +#~ " wakeup\n" +#~ " wifi [on|off]\n" +#~ " wwan [on|off]\n" +#~ "\n" + +#~ msgid "Error: Could not connect to NetworkManager." +#~ msgstr "Eraro: Ne eblis konekti al NetworkManager" diff --git a/policy/org.freedesktop.NetworkManager.policy b/policy/org.freedesktop.NetworkManager.policy index 26412ad90..3aea453ad 100644 --- a/policy/org.freedesktop.NetworkManager.policy +++ b/policy/org.freedesktop.NetworkManager.policy @@ -42,7 +42,7 @@ <message xml:lang="da">Systempolitik forhindrer aktivering eller deaktivering af systemnetværk</message> <message xml:lang="de">Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von System-Netzwerken</message> <message xml:lang="el">Η πολιτική συστήματος δεν επιτρέπει ενεργοποίηση ή απενεργοποίηση της δικτύωσης του συστήματος</message> - <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ malŝalton de sistema retkonektado</message> + <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ elŝalton de sistema retkonektado</message> <message xml:lang="es">La política del sistema evita activar o desactivar la red del sistema</message> <message xml:lang="gl">A normativa do sistema evita a activación ou desactivación da rede do sistema</message> <message xml:lang="hi">तंत्र संजालन के युक्ति के सक्रियण या निष्क्रियण को तंत्र नीति रोकता है</message> @@ -160,7 +160,7 @@ <message xml:lang="da">Systempolitik forhindrer aktivering eller deaktivering af WiFi-enheder</message> <message xml:lang="de">Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung von WLAN-Geräten</message> <message xml:lang="el">Η πολιτική συστήματος δεν επιτρέπει ενεργοποίηση ή απενεργοποίηση συσκευών ανοιχτού ασύρματου δικτύου (WiFi)</message> - <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ malŝalton de WiFi-aparatoj</message> + <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ elŝalton de WiFi-aparatoj</message> <message xml:lang="es">La política de sistema evita activar o desactivar los dispositivos inalámbricos</message> <message xml:lang="gl">A normativa do sistema evita a activación e desactivación dos dispositivos WiFi</message> <message xml:lang="hi">WiFi युक्ति के सक्रियण या निष्क्रियण को तंत्र नीति रोकता है</message> @@ -219,7 +219,7 @@ <message xml:lang="da">Systempolitik forhindrer aktivering eller deaktivering af mobile bredbåndsenheder</message> <message xml:lang="de">Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler Breitbandgeräte</message> <message xml:lang="el">Η πολιτική του συστήματος δεν επιτρέπει την ενεργοποίηση ή απενεργοποίηση συσκευών ευρυζωνικότητας κινητής τηλεφωνίας</message> - <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ malŝalton de poŝtelefonaj larĝkapacitaj aparatoj</message> + <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ elŝalton de poŝtelefonaj larĝkapacitaj aparatoj</message> <message xml:lang="es">La política del sistema evita activar o desactivar los dispositivos de banda ancha móvil</message> <message xml:lang="gl">A normativa do sistema evita a activación ou desactivación dos dispositivos de banda ancha.</message> <message xml:lang="hi">मोबाइल ब्रॉडबैंड युक्ति के सक्रियण या निष्क्रियण को तंत्र नीति रोकता है</message> @@ -249,6 +249,7 @@ <description xml:lang="bg">Включване и изключване на устройства за достъп до мобилни мрежи по WiMAX</description> <description xml:lang="ca">Habilita o inhabilita els dispositius de banda ampla mòbil WiMAX</description> <description xml:lang="de">Mobile WiMAX-Breitbandgeräte aktivieren oder deaktivieren</description> + <description xml:lang="eo">Enŝalti aŭ elŝalti WiMAX-larĝkapacitajn aparatojn</description> <description xml:lang="es">Activar o desactivar los dispositivos de banda ancha móvil WiMAX</description> <description xml:lang="hu">WiMAX mobil széles sávú eszközök be- és kikapcsolása</description> <description xml:lang="ko">와이맥스 모바일 광대역 장치 사용 여부</description> @@ -258,6 +259,7 @@ <message xml:lang="bg">Политиката на системата не позволява включване и изключване на устройства за мобилни мрежи по WiMAX</message> <message xml:lang="ca">La política del sistema impedeix habilitar o inhabilitar els dispositius de banda ampla mòbil WiMAX</message> <message xml:lang="de">Die Systemrichtlinien verhindern die Aktivierung oder Deaktivierung mobiler WiMAX-Breitbandgeräte</message> + <message xml:lang="eo">Sistempolitiko preventas enŝalton aŭ elŝalton de larĝkapacitaj WiMAX-aparatoj</message> <message xml:lang="es">La política del sistema evita activar o desactivar los dispositivos de banda ancha móvil WiMAX</message> <message xml:lang="hu">A rendszer házirendje megakadályozza a WiMAX mobil széles sávú eszközök be- vagy kikapcsolását</message> <message xml:lang="ko">시스템 정책이 와이맥스 모바일 광대역 장치의 사용 여부 설정을 금지합니다</message> @@ -378,7 +380,7 @@ <message xml:lang="de">Die Systemrichtlinien verhindern Verbindungsfreigaben über ein geschütztes WLAN-Netzwerk</message> <message xml:lang="el">Η πολιτική συστήματος δεν επιτρέπει κοινή χρήση συνδέσεων μέσω προστατευμένου ασύρματου δικτύου</message> <message xml:lang="en_GB">System policy prevents sharing connections via a protected Wi-Fi network</message> - <message xml:lang="eo">Sistempolico preventas kundividon de konektoj per protektita WiFi-reto</message> + <message xml:lang="eo">Sistempolitiko preventas kundividon de konektoj per protektita WiFi-reto</message> <message xml:lang="es">La política del sistema evita compartir conexiones a través de una red WiFi protegida</message> <message xml:lang="eu">Sistemako arauek babestutako haririk gabeko sareen bidez konexioak partekatzea saihesten dute</message> <message xml:lang="fr">La stratégie du système empêche tout partage des connexions via un réseau WiFi protégé</message> @@ -501,6 +503,7 @@ <action id="org.freedesktop.NetworkManager.settings.modify.own"> <description>Modify personal network connections</description> <description xml:lang="de">Eigene Netzwerkverbindungen bearbeiten</description> + <description xml:lang="eo">Modifi proprajn retkonektojn</description> <description xml:lang="es">Modificar las conexiones de red personales</description> <description xml:lang="hu">Személyes hálózati kapcsolatok módosítása</description> <description xml:lang="ko">개인 네트워크 연결을 수정합니다</description> @@ -508,6 +511,7 @@ <description xml:lang="pl">Modyfikacja osobistych połączeń sieciowych</description> <message>System policy prevents modification of personal network settings</message> <message xml:lang="de">Die Systemrichtlinien verhindern das Bearbeiten von eigenen Netzwerkeinstellungen</message> + <message xml:lang="eo">Sistempolitiko preventas modifadon de propraj retagordoj</message> <message xml:lang="es">La política del sistema evita la modificación de la configuración personal de la red</message> <message xml:lang="hu">A rendszer házirendje megakadályozza a személyes hálózati beállítások módosítását</message> <message xml:lang="ko">시스템 정책이 개인 네트워크 설정의 수정을 금지합니다</message> @@ -522,6 +526,7 @@ <action id="org.freedesktop.NetworkManager.settings.modify.system"> <description>Modify network connections for all users</description> <description xml:lang="de">Netzwerkverbindungen für alle Benutzer bearbeiten</description> + <description xml:lang="eo">Modifi retkonektojn por ĉiuj uzantoj</description> <description xml:lang="es">Modificar las conexiones de red para todos los usuarios</description> <description xml:lang="hu">Hálózati kapcsolatok módosítása minden felhasználó számára</description> <description xml:lang="ko">모든 사용자의 네트워크 연결을 수정합니다</description> @@ -529,6 +534,7 @@ <description xml:lang="pl">Modyfikacja połączeń sieciowych dla wszystkich użytkowników</description> <message>System policy prevents modification of network settings for all users</message> <message xml:lang="de">Die Systemrichtlinien verhindern das Bearbeiten von Netzwerkeinstellungen für alle Benutzer</message> + <message xml:lang="eo">Sistempolitiko preventas modifadon de retagordoj por ĉiuj uzantoj</message> <message xml:lang="es">La política del sistema evita la modificación de la configuración de la red para todos los usuarios</message> <message xml:lang="hu">A rendszer házirendje megakadályozza a hálózati beállítások módosítását minden felhasználó számára</message> <message xml:lang="ko">시스템 정책이 모든 사용자의 네트워크 설정의 수정을 금지합니다</message> @@ -590,7 +596,7 @@ <message xml:lang="de">Die Systemrichtlinien verhindern das Bearbeiten des ständigen Rechnernamens des Systems</message> <message xml:lang="el">Η πολιτική συστήματος δεν επιτρέπει τροποποίηση του πάγιου ονόματος συστήματος</message> <message xml:lang="en_GB">System policy prevents modification of the persistent system hostname</message> - <message xml:lang="eo">Sistempolico preventas modifadon de la konstanta sistem-gastnomo</message> + <message xml:lang="eo">Sistempolitiko preventas modifadon de la konstanta sistem-gastnomo</message> <message xml:lang="es">La política del sistema evita la modificación del nombre persistente del sistema</message> <message xml:lang="eu">Sistemako arauek sistemako ostalari-izen iraunkorra aldatzea saihesten dute</message> <message xml:lang="fr">La stratégie du système empêche toute modification du nom d'hôte du système persistant</message> diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index d069eca75..5a6a61b64 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -391,6 +391,38 @@ dump_object_to_props (GObject *object, GHashTable *hash) } static void +dump_dhcp4_to_props (NMDHCP4Config *config, GHashTable *hash) +{ + GSList *options, *iter; + + options = nm_dhcp4_config_list_options (config); + for (iter = options; iter; iter = g_slist_next (iter)) { + const char *option = (const char *) iter->data; + const char *val; + + val = nm_dhcp4_config_get_option (config, option); + value_hash_add_str (hash, option, val); + } + g_slist_free (options); +} + +static void +dump_dhcp6_to_props (NMDHCP6Config *config, GHashTable *hash) +{ + GSList *options, *iter; + + options = nm_dhcp6_config_list_options (config); + for (iter = options; iter; iter = g_slist_next (iter)) { + const char *option = (const char *) iter->data; + const char *val; + + val = nm_dhcp6_config_get_option (config, option); + value_hash_add_str (hash, option, val); + } + g_slist_free (options); +} + +static void fill_device_props (NMDevice *device, GHashTable *dev_hash, GHashTable *ip4_hash, @@ -420,11 +452,11 @@ fill_device_props (NMDevice *device, dhcp4_config = nm_device_get_dhcp4_config (device); if (dhcp4_config) - dump_object_to_props (G_OBJECT (dhcp4_config), dhcp4_hash); + dump_dhcp4_to_props (dhcp4_config, dhcp4_hash); dhcp6_config = nm_device_get_dhcp6_config (device); if (dhcp6_config) - dump_object_to_props (G_OBJECT (dhcp6_config), dhcp6_hash); + dump_dhcp6_to_props (dhcp6_config, dhcp6_hash); } static void diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am index fbec9aaf8..c0780d0b5 100644 --- a/src/backends/Makefile.am +++ b/src/backends/Makefile.am @@ -63,10 +63,12 @@ endif libnmbackend_la_LIBADD += \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) libnmbackend_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED \ diff --git a/src/backends/Makefile.in b/src/backends/Makefile.in index a9ea3e807..2f489e750 100644 --- a/src/backends/Makefile.in +++ b/src/backends/Makefile.in @@ -71,7 +71,8 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = libnmbackend_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \ $(top_builddir)/src/logging/libnm-logging.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am__libnmbackend_la_SOURCES_DIST = NetworkManagerGeneric.c \ NetworkManagerGeneric.h NetworkManagerRedHat.c \ NetworkManagerSuSE.c NetworkManagerGentoo.c \ @@ -362,9 +363,10 @@ libnmbackend_la_SOURCES = NetworkManagerGeneric.c \ $(am__append_10) $(am__append_11) $(am__append_12) \ $(am__append_13) libnmbackend_la_LIBADD = $(am__append_9) \ - $(top_builddir)/src/logging/libnm-logging.la $(DBUS_LIBS) \ - $(GLIB_LIBS) + $(top_builddir)/src/logging/libnm-logging.la $(LIBNL_LIBS) \ + $(DBUS_LIBS) $(GLIB_LIBS) libnmbackend_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED \ diff --git a/src/dhcp-manager/nm-dhcp-dhclient-utils.c b/src/dhcp-manager/nm-dhcp-dhclient-utils.c index cc5255ab5..caf90f116 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient-utils.c +++ b/src/dhcp-manager/nm-dhcp-dhclient-utils.c @@ -14,7 +14,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2010 Red Hat, Inc. + * Copyright (C) 2011 Red Hat, Inc. */ #include <config.h> @@ -166,8 +166,19 @@ nm_dhcp_dhclient_create_config (const char *interface, } if (hostname) { - g_string_append_printf (new_contents, HOSTNAME_FORMAT "\n", hostname); + char *plain_hostname, *dot; + + plain_hostname = g_strdup (hostname); + dot = strchr (plain_hostname, '.'); + + /* get rid of the domain */ + if (dot) + *dot = '\0'; + + g_string_append_printf (new_contents, HOSTNAME_FORMAT "\n", plain_hostname); added = TRUE; + + g_free (plain_hostname); } if (added) diff --git a/src/dns-manager/Makefile.am b/src/dns-manager/Makefile.am index 7b5fc4f84..b51f667bd 100644 --- a/src/dns-manager/Makefile.am +++ b/src/dns-manager/Makefile.am @@ -19,12 +19,14 @@ libdns_manager_la_SOURCES = \ nm-dns-utils.c libdns_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DLOCALSTATEDIR=\"$(localstatedir)\" libdns_manager_la_LIBADD = \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/dns-manager/Makefile.in b/src/dns-manager/Makefile.in index 4937a6014..aad1c562d 100644 --- a/src/dns-manager/Makefile.in +++ b/src/dns-manager/Makefile.in @@ -58,7 +58,8 @@ LTLIBRARIES = $(noinst_LTLIBRARIES) am__DEPENDENCIES_1 = libdns_manager_la_DEPENDENCIES = \ $(top_builddir)/src/logging/libnm-logging.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am_libdns_manager_la_OBJECTS = libdns_manager_la-nm-dns-manager.lo \ libdns_manager_la-nm-dns-plugin.lo \ libdns_manager_la-nm-dns-dnsmasq.lo \ @@ -325,12 +326,14 @@ libdns_manager_la_SOURCES = \ nm-dns-utils.c libdns_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DLOCALSTATEDIR=\"$(localstatedir)\" libdns_manager_la_LIBADD = \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/ip6-manager/Makefile.am b/src/ip6-manager/Makefile.am index b56b197e7..b98d6def7 100644 --- a/src/ip6-manager/Makefile.am +++ b/src/ip6-manager/Makefile.am @@ -13,6 +13,7 @@ libip6_manager_la_SOURCES = \ nm-ip6-manager.h libip6_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED @@ -20,6 +21,7 @@ libip6_manager_la_CPPFLAGS = \ libip6_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/ip6-manager/Makefile.in b/src/ip6-manager/Makefile.in index 344ca0ea6..33539f51b 100644 --- a/src/ip6-manager/Makefile.in +++ b/src/ip6-manager/Makefile.in @@ -59,7 +59,8 @@ am__DEPENDENCIES_1 = libip6_manager_la_DEPENDENCIES = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) am_libip6_manager_la_OBJECTS = libip6_manager_la-nm-ip6-manager.lo libip6_manager_la_OBJECTS = $(am_libip6_manager_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) @@ -316,6 +317,7 @@ libip6_manager_la_SOURCES = \ nm-ip6-manager.h libip6_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED @@ -323,6 +325,7 @@ libip6_manager_la_CPPFLAGS = \ libip6_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c index 1e289d371..d8353f271 100644 --- a/src/logging/nm-logging.c +++ b/src/logging/nm-logging.c @@ -218,6 +218,12 @@ nm_logging_level_enabled (guint32 level) return !!(log_level & level); } +gboolean +nm_logging_domain_enabled (guint32 domain) +{ + return !!(log_domains & domain); +} + void _nm_log (const char *loc, const char *func, diff --git a/src/logging/nm-logging.h b/src/logging/nm-logging.h index 44e49a712..e3e05f59b 100644 --- a/src/logging/nm-logging.h +++ b/src/logging/nm-logging.h @@ -95,6 +95,7 @@ void _nm_log (const char *loc, const char *nm_logging_level_to_string (void); char *nm_logging_domains_to_string (void); gboolean nm_logging_level_enabled (guint32 level); +gboolean nm_logging_domain_enabled (guint32 domain); /* Undefine the nm-utils.h logging stuff to ensure errors */ #undef nm_print_backtrace diff --git a/src/modem-manager/Makefile.am b/src/modem-manager/Makefile.am index db680aeae..3c3af16c5 100644 --- a/src/modem-manager/Makefile.am +++ b/src/modem-manager/Makefile.am @@ -19,10 +19,12 @@ libmodem_manager_la_SOURCES = \ nm-modem-types.h libmodem_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) libmodem_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in index 66f7c1bc1..2a054f707 100644 --- a/src/modem-manager/Makefile.in +++ b/src/modem-manager/Makefile.in @@ -59,7 +59,7 @@ am__DEPENDENCIES_1 = libmodem_manager_la_DEPENDENCIES = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libmodem_manager_la_OBJECTS = libmodem_manager_la-nm-modem.lo \ libmodem_manager_la-nm-modem-cdma.lo \ libmodem_manager_la-nm-modem-gsm.lo \ @@ -325,11 +325,13 @@ libmodem_manager_la_SOURCES = \ nm-modem-types.h libmodem_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) libmodem_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) all: all-am diff --git a/src/nm-device-interface.c b/src/nm-device-interface.c index 6d2b8762f..fb471f577 100644 --- a/src/nm-device-interface.c +++ b/src/nm-device-interface.c @@ -166,6 +166,14 @@ nm_device_interface_init (gpointer g_iface) g_object_interface_install_property (g_iface, + g_param_spec_boxed (NM_DEVICE_INTERFACE_ACTIVE_CONNECTION, + "ActiveConnection", + "ActiveConnection", + DBUS_TYPE_G_OBJECT_PATH, + G_PARAM_READABLE)); + + g_object_interface_install_property + (g_iface, g_param_spec_uint (NM_DEVICE_INTERFACE_DEVICE_TYPE, "DeviceType", "DeviceType", diff --git a/src/nm-device-interface.h b/src/nm-device-interface.h index f39e8459d..560cdfe51 100644 --- a/src/nm-device-interface.h +++ b/src/nm-device-interface.h @@ -58,6 +58,7 @@ typedef enum #define NM_DEVICE_INTERFACE_IP6_CONFIG "ip6-config" #define NM_DEVICE_INTERFACE_DHCP6_CONFIG "dhcp6-config" #define NM_DEVICE_INTERFACE_STATE "state" +#define NM_DEVICE_INTERFACE_ACTIVE_CONNECTION "active-connection" #define NM_DEVICE_INTERFACE_DEVICE_TYPE "device-type" /* ugh */ #define NM_DEVICE_INTERFACE_MANAGED "managed" #define NM_DEVICE_INTERFACE_FIRMWARE_MISSING "firmware-missing" @@ -79,6 +80,7 @@ typedef enum { NM_DEVICE_INTERFACE_PROP_IP6_CONFIG, NM_DEVICE_INTERFACE_PROP_DHCP6_CONFIG, NM_DEVICE_INTERFACE_PROP_STATE, + NM_DEVICE_INTERFACE_PROP_ACTIVE_CONNECTION, NM_DEVICE_INTERFACE_PROP_DEVICE_TYPE, NM_DEVICE_INTERFACE_PROP_MANAGED, NM_DEVICE_INTERFACE_PROP_FIRMWARE_MISSING, diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c index 9258f77c2..7a6e7528b 100644 --- a/src/nm-device-wifi.c +++ b/src/nm-device-wifi.c @@ -1460,6 +1460,26 @@ real_complete_connection (NMDevice *device, if (ap) { ssid = nm_ap_get_ssid (ap); + if (ssid == NULL) { + /* The AP must be hidden. Connecting to a WiFi AP requires the SSID + * as part of the initial handshake, so check the connection details + * for the SSID. The AP object will still be used for encryption + * settings and such. + */ + ssid = nm_setting_wireless_get_ssid (s_wifi); + } + + if (ssid == NULL) { + /* If there's no SSID on the AP itself, and no SSID in the + * connection data, then we cannot connect at all. Return an error. + */ + g_set_error_literal (error, + NM_WIFI_ERROR, + NM_WIFI_ERROR_CONNECTION_INVALID, + "A 'wireless' setting with a valid SSID is required for hidden access points."); + return FALSE; + } + /* If the SSID is a well-known SSID, lock the connection to the AP's * specific BSSID so NM doesn't autoconnect to some random wifi net. */ @@ -2851,7 +2871,7 @@ remove_supplicant_timeouts (NMDeviceWifi *self) } static guint32 -find_supported_frequency (NMDeviceWifi *self, guint32 *freqs) +find_supported_frequency (NMDeviceWifi *self, const guint32 *freqs) { NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); int i; @@ -2887,25 +2907,25 @@ build_supplicant_config (NMDeviceWifi *self, if (!config) return NULL; - /* Figure out the Ad-Hoc frequency to use if creating an adhoc network; if - * nothing was specified then pick something usable. + /* Supplicant requires an initial frequency for Ad-Hoc networks; if the user + * didn't specify one and we didn't find an AP that matched the connection, + * just pick a frequency the device supports. */ - if ((nm_ap_get_mode (ap) == NM_802_11_MODE_ADHOC) && nm_ap_get_user_created (ap)) { + if (nm_ap_get_mode (ap) == NM_802_11_MODE_ADHOC) { const char *band = nm_setting_wireless_get_band (s_wireless); + const guint32 a_freqs[] = { 5180, 5200, 5220, 5745, 5765, 5785, 5805, 0 }; + const guint32 bg_freqs[] = { 2412, 2437, 2462, 2472, 0 }; adhoc_freq = nm_ap_get_freq (ap); if (!adhoc_freq) { - if (band && !strcmp (band, "a")) { - guint32 a_freqs[] = {5180, 5200, 5220, 5745, 5765, 5785, 5805, 0}; + if (g_strcmp0 (band, "a") == 0) adhoc_freq = find_supported_frequency (self, a_freqs); - } else { - guint32 bg_freqs[] = {2412, 2437, 2462, 2472, 0}; + else adhoc_freq = find_supported_frequency (self, bg_freqs); - } } if (!adhoc_freq) { - if (band && !strcmp (band, "a")) + if (g_strcmp0 (band, "a") == 0) adhoc_freq = 5180; else adhoc_freq = 2462; @@ -3098,15 +3118,8 @@ real_act_stage1_prepare (NMDevice *dev, NMDeviceStateReason *reason) ap = nm_ap_new_fake_from_connection (connection); g_return_val_if_fail (ap != NULL, NM_ACT_STAGE_RETURN_FAILURE); - switch (nm_ap_get_mode (ap)) { - case NM_802_11_MODE_ADHOC: - nm_ap_set_user_created (ap, TRUE); - break; - case NM_802_11_MODE_INFRA: - default: - nm_ap_set_broadcast (ap, FALSE); - break; - } + if (nm_ap_get_mode (ap) == NM_802_11_MODE_INFRA) + nm_ap_set_broadcast (ap, FALSE); priv->ap_list = g_slist_prepend (priv->ap_list, ap); nm_ap_export_to_dbus (ap); @@ -3399,7 +3412,7 @@ activation_success_handler (NMDevice *dev) nm_ap_set_address (ap, &bssid); if (!nm_ap_get_freq (ap)) nm_ap_set_freq (ap, nm_device_wifi_get_frequency (self)); - if (!nm_ap_get_max_bitrate (ap) && nm_ap_get_user_created (ap)) + if (!nm_ap_get_max_bitrate (ap)) nm_ap_set_max_bitrate (ap, nm_device_wifi_get_bitrate (self)); tmp_ap = get_active_ap (self, ap, TRUE); diff --git a/src/nm-device.c b/src/nm-device.c index ebd8cdb9d..4b7ec5dfb 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -3463,6 +3463,7 @@ get_property (GObject *object, guint prop_id, NMDevice *self = NM_DEVICE (object); NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); NMDeviceState state; + const char *ac_path = NULL; state = nm_device_get_state (self); @@ -3518,6 +3519,11 @@ get_property (GObject *object, guint prop_id, case NM_DEVICE_INTERFACE_PROP_STATE: g_value_set_uint (value, priv->state); break; + case NM_DEVICE_INTERFACE_PROP_ACTIVE_CONNECTION: + if (priv->act_request) + ac_path = nm_act_request_get_active_connection_path (priv->act_request); + g_value_set_boxed (value, ac_path ? ac_path : "/"); + break; case NM_DEVICE_INTERFACE_PROP_DEVICE_TYPE: g_value_set_uint (value, priv->type); break; @@ -3616,6 +3622,10 @@ nm_device_class_init (NMDeviceClass *klass) NM_DEVICE_INTERFACE_STATE); g_object_class_override_property (object_class, + NM_DEVICE_INTERFACE_PROP_ACTIVE_CONNECTION, + NM_DEVICE_INTERFACE_ACTIVE_CONNECTION); + + g_object_class_override_property (object_class, NM_DEVICE_INTERFACE_PROP_DEVICE_TYPE, NM_DEVICE_INTERFACE_DEVICE_TYPE); @@ -3809,7 +3819,7 @@ reason_to_string (NMDeviceStateReason reason) case NM_DEVICE_STATE_REASON_USER_REQUESTED: return "user-requested"; case NM_DEVICE_STATE_REASON_CARRIER: - return "carrier-chagned"; + return "carrier-changed"; case NM_DEVICE_STATE_REASON_CONNECTION_ASSUMED: return "connection-assumed"; case NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE: diff --git a/src/nm-dhcp4-config.c b/src/nm-dhcp4-config.c index 5acf053f6..567ba6875 100644 --- a/src/nm-dhcp4-config.c +++ b/src/nm-dhcp4-config.c @@ -101,6 +101,23 @@ nm_dhcp4_config_get_option (NMDHCP4Config *self, const char *key) return value ? g_value_get_string (value) : NULL; } +/* Caller owns the list, but not the values in the list */ +GSList * +nm_dhcp4_config_list_options (NMDHCP4Config *self) +{ + GHashTableIter iter; + const char *option = NULL; + GSList *list = NULL; + + g_return_val_if_fail (NM_IS_DHCP4_CONFIG (self), NULL); + + g_hash_table_iter_init (&iter, NM_DHCP4_CONFIG_GET_PRIVATE (self)->options); + while (g_hash_table_iter_next (&iter, (gpointer) &option, NULL)) + list = g_slist_prepend (list, (gpointer) option); + + return list; +} + const char * nm_dhcp4_config_get_dbus_path (NMDHCP4Config *self) { diff --git a/src/nm-dhcp4-config.h b/src/nm-dhcp4-config.h index ffaa84304..4729da4c1 100644 --- a/src/nm-dhcp4-config.h +++ b/src/nm-dhcp4-config.h @@ -58,4 +58,6 @@ void nm_dhcp4_config_reset (NMDHCP4Config *config); const char *nm_dhcp4_config_get_option (NMDHCP4Config *config, const char *option); +GSList *nm_dhcp4_config_list_options (NMDHCP4Config *config); + #endif /* NM_DHCP4_CONFIG_H */ diff --git a/src/nm-dhcp6-config.c b/src/nm-dhcp6-config.c index fb6ccce50..885e5f840 100644 --- a/src/nm-dhcp6-config.c +++ b/src/nm-dhcp6-config.c @@ -101,6 +101,23 @@ nm_dhcp6_config_get_option (NMDHCP6Config *self, const char *key) return value ? g_value_get_string (value) : NULL; } +/* Caller owns the list, but not the values in the list */ +GSList * +nm_dhcp6_config_list_options (NMDHCP6Config *self) +{ + GHashTableIter iter; + const char *option = NULL; + GSList *list = NULL; + + g_return_val_if_fail (NM_IS_DHCP6_CONFIG (self), NULL); + + g_hash_table_iter_init (&iter, NM_DHCP6_CONFIG_GET_PRIVATE (self)->options); + while (g_hash_table_iter_next (&iter, (gpointer) &option, NULL)) + list = g_slist_prepend (list, (gpointer) option); + + return list; +} + const char * nm_dhcp6_config_get_dbus_path (NMDHCP6Config *self) { diff --git a/src/nm-dhcp6-config.h b/src/nm-dhcp6-config.h index 90eb10ffb..5e83b904f 100644 --- a/src/nm-dhcp6-config.h +++ b/src/nm-dhcp6-config.h @@ -58,4 +58,6 @@ void nm_dhcp6_config_reset (NMDHCP6Config *config); const char *nm_dhcp6_config_get_option (NMDHCP6Config *config, const char *option); +GSList *nm_dhcp6_config_list_options (NMDHCP6Config *self); + #endif /* NM_DHCP6_CONFIG_H */ diff --git a/src/nm-manager-auth.c b/src/nm-manager-auth.c index 8515959eb..9171663b1 100644 --- a/src/nm-manager-auth.c +++ b/src/nm-manager-auth.c @@ -18,17 +18,25 @@ * Copyright (C) 2010 Red Hat, Inc. */ +#include <config.h> #include <string.h> #include <dbus/dbus-glib-lowlevel.h> +#include <gio/gio.h> -#include <nm-setting-connection.h> +#if WITH_POLKIT +#include <polkit/polkit.h> +#endif + +#include "nm-setting-connection.h" #include "nm-manager-auth.h" #include "nm-logging.h" #include "nm-dbus-manager.h" struct NMAuthChain { guint32 refcount; +#if WITH_POLKIT PolkitAuthority *authority; +#endif GSList *calls; GHashTable *data; @@ -37,7 +45,6 @@ struct NMAuthChain { GError *error; NMAuthChainResultFunc done_func; - NMAuthChainCallFunc call_func; gpointer user_data; }; @@ -45,8 +52,9 @@ typedef struct { NMAuthChain *chain; GCancellable *cancellable; char *permission; + guint idle_id; gboolean disposed; -} PolkitCall; +} AuthCall; typedef struct { gpointer data; @@ -64,20 +72,31 @@ free_data (gpointer data) g_free (tmp); } -static void -default_call_func (NMAuthChain *chain, - const char *permission, - GError *error, - NMAuthCallResult result, - gpointer user_data) +#if WITH_POLKIT +static PolkitAuthority * +pk_authority_get (void) { - if (!error) - nm_auth_chain_set_data (chain, permission, GUINT_TO_POINTER (result), NULL); + static PolkitAuthority *authority = NULL; + GError *error = NULL; + + if (authority == NULL) { + authority = polkit_authority_get_sync (NULL, &error); + if (authority == NULL) { + nm_log_err (LOGD_CORE, "Failed to initialize PolicyKit: (%d) %s", + error ? error->code : -1, + (error && error->message) ? error->message : "(unknown)"); + g_clear_error (&error); + return NULL; + } + } + + /* Yes, ref every time; we want to keep the object alive */ + return g_object_ref (authority); } +#endif static NMAuthChain * -_auth_chain_new (PolkitAuthority *authority, - DBusGMethodInvocation *context, +_auth_chain_new (DBusGMethodInvocation *context, DBusGProxy *proxy, DBusMessage *message, const char *dbus_sender, @@ -90,10 +109,11 @@ _auth_chain_new (PolkitAuthority *authority, self = g_malloc0 (sizeof (NMAuthChain)); self->refcount = 1; - self->authority = g_object_ref (authority); +#if WITH_POLKIT + self->authority = pk_authority_get (); +#endif self->data = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_data); self->done_func = done_func; - self->call_func = /* call_func ? call_func : */ default_call_func; self->user_data = user_data; self->context = context; @@ -117,31 +137,28 @@ _auth_chain_new (PolkitAuthority *authority, } NMAuthChain * -nm_auth_chain_new (PolkitAuthority *authority, - DBusGMethodInvocation *context, +nm_auth_chain_new (DBusGMethodInvocation *context, DBusGProxy *proxy, NMAuthChainResultFunc done_func, gpointer user_data) { - return _auth_chain_new (authority, context, proxy, NULL, NULL, done_func, user_data); + return _auth_chain_new (context, proxy, NULL, NULL, done_func, user_data); } NMAuthChain * -nm_auth_chain_new_raw_message (PolkitAuthority *authority, - DBusMessage *message, +nm_auth_chain_new_raw_message (DBusMessage *message, NMAuthChainResultFunc done_func, gpointer user_data) { - return _auth_chain_new (authority, NULL, NULL, message, NULL, done_func, user_data); + return _auth_chain_new (NULL, NULL, message, NULL, done_func, user_data); } NMAuthChain * -nm_auth_chain_new_dbus_sender (PolkitAuthority *authority, - const char *dbus_sender, +nm_auth_chain_new_dbus_sender (const char *dbus_sender, NMAuthChainResultFunc done_func, gpointer user_data) { - return _auth_chain_new (authority, NULL, NULL, NULL, dbus_sender, done_func, user_data); + return _auth_chain_new (NULL, NULL, NULL, dbus_sender, done_func, user_data); } gpointer @@ -229,14 +246,36 @@ nm_auth_chain_check_done (NMAuthChain *self) } static void -polkit_call_cancel (PolkitCall *call) +nm_auth_chain_remove_call (NMAuthChain *self, AuthCall *call) +{ + g_return_if_fail (self != NULL); + g_return_if_fail (call != NULL); + + self->calls = g_slist_remove (self->calls, call); +} + +static AuthCall * +auth_call_new (NMAuthChain *chain, const char *permission) +{ + AuthCall *call; + + call = g_malloc0 (sizeof (AuthCall)); + call->chain = chain; + call->permission = g_strdup (permission); + call->cancellable = g_cancellable_new (); + chain->calls = g_slist_append (chain->calls, call); + return call; +} + +static void +auth_call_cancel (AuthCall *call) { call->disposed = TRUE; g_cancellable_cancel (call->cancellable); } static void -polkit_call_free (PolkitCall *call) +auth_call_free (AuthCall *call) { g_return_if_fail (call != NULL); @@ -246,30 +285,49 @@ polkit_call_free (PolkitCall *call) call->chain = NULL; g_object_unref (call->cancellable); call->cancellable = NULL; + if (call->idle_id) + g_source_remove (call->idle_id); + memset (call, 0, sizeof (*call)); g_free (call); } +/* This can get used from scheduled idles, hence the boolean return */ +static gboolean +auth_call_complete (AuthCall *call) +{ + g_return_val_if_fail (call != NULL, FALSE); + + call->idle_id = 0; + nm_auth_chain_remove_call (call->chain, call); + nm_auth_chain_check_done (call->chain); + auth_call_free (call); + return FALSE; +} + +static void +auth_call_schedule_early_finish (AuthCall *call, GError *error) +{ + if (!call->chain->error) + call->chain->error = error; + call->idle_id = g_idle_add ((GSourceFunc) auth_call_complete, call); +} + +#if WITH_POLKIT static void pk_call_cb (GObject *object, GAsyncResult *result, gpointer user_data) { - PolkitCall *call = user_data; - NMAuthChain *chain; + AuthCall *call = user_data; + NMAuthChain *chain = call->chain; PolkitAuthorizationResult *pk_result; GError *error = NULL; - guint call_result = NM_AUTH_CALL_RESULT_UNKNOWN; /* If the call is already disposed do nothing */ if (call->disposed) { - polkit_call_free (call); + auth_call_free (call); return; } - chain = call->chain; - chain->calls = g_slist_remove (chain->calls, call); - - pk_result = polkit_authority_check_authorization_finish (chain->authority, - result, - &error); + pk_result = polkit_authority_check_authorization_finish (chain->authority, result, &error); if (error) { if (!chain->error) chain->error = g_error_copy (error); @@ -279,6 +337,8 @@ pk_call_cb (GObject *object, GAsyncResult *result, gpointer user_data) error ? error->code : -1, error && error->message ? error->message : "(unknown)"); } else { + guint call_result = NM_AUTH_CALL_RESULT_UNKNOWN; + if (polkit_authorization_result_get_is_authorized (pk_result)) { /* Caller has the permission */ call_result = NM_AUTH_CALL_RESULT_YES; @@ -287,23 +347,26 @@ pk_call_cb (GObject *object, GAsyncResult *result, gpointer user_data) call_result = NM_AUTH_CALL_RESULT_AUTH; } else call_result = NM_AUTH_CALL_RESULT_NO; - } - chain->call_func (chain, call->permission, error, call_result, chain->user_data); - nm_auth_chain_check_done (chain); + nm_auth_chain_set_data (chain, call->permission, GUINT_TO_POINTER (call_result), NULL); + } g_clear_error (&error); - polkit_call_free (call); if (pk_result) g_object_unref (pk_result); + + auth_call_complete (call); } +#endif gboolean nm_auth_chain_add_call (NMAuthChain *self, const char *permission, gboolean allow_interaction) { - PolkitCall *call; + AuthCall *call; + +#if WITH_POLKIT PolkitSubject *subject; PolkitCheckAuthorizationFlags flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE; @@ -315,12 +378,14 @@ nm_auth_chain_add_call (NMAuthChain *self, if (!subject) return FALSE; - call = g_malloc0 (sizeof (PolkitCall)); - call->chain = self; - call->permission = g_strdup (permission); - call->cancellable = g_cancellable_new (); + call = auth_call_new (self, permission); - self->calls = g_slist_append (self->calls, call); + if (self->authority == NULL) { + /* No polkit, no authorization */ + auth_call_schedule_early_finish (call, g_error_new_literal (0, 0, "PolicyKit unavailable")); + g_object_unref (subject); + return FALSE; + } if (allow_interaction) flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION; @@ -334,6 +399,17 @@ nm_auth_chain_add_call (NMAuthChain *self, pk_call_cb, call); g_object_unref (subject); +#else + /* -- NO POLKIT -- */ + + g_return_val_if_fail (self != NULL, FALSE); + + /* When PolicyKit is disabled, everything is authorized */ + call = auth_call_new (self, permission); + nm_auth_chain_set_data (self, permission, GUINT_TO_POINTER (NM_AUTH_CALL_RESULT_YES), NULL); + auth_call_schedule_early_finish (call, NULL); +#endif + return TRUE; } @@ -348,11 +424,14 @@ nm_auth_chain_unref (NMAuthChain *self) if (self->refcount > 0) return; - g_object_unref (self->authority); +#if WITH_POLKIT + if (self->authority) + g_object_unref (self->authority); +#endif g_free (self->owner); for (iter = self->calls; iter; iter = g_slist_next (iter)) - polkit_call_cancel ((PolkitCall *) iter->data); + auth_call_cancel ((AuthCall *) iter->data); g_slist_free (self->calls); g_clear_error (&self->error); @@ -460,3 +539,50 @@ nm_auth_uid_in_acl (NMConnection *connection, return TRUE; } +typedef struct { + GDestroyNotify changed_callback; + gpointer changed_data; +} PkChangedInfo; + +#if WITH_POLKIT +static void +pk_authority_changed_cb (GObject *object, PkChangedInfo *info) +{ + info->changed_callback (info->changed_data); +} +#endif + +void +nm_auth_set_changed_func (GDestroyNotify callback, gpointer callback_data) +{ +#if WITH_POLKIT + static PkChangedInfo info = { NULL, NULL }; + static guint32 changed_id = 0; + PolkitAuthority *authority; + + authority = pk_authority_get (); + if (!authority) + return; + + if (callback == NULL) { + /* Clearing the callback */ + info.changed_callback = NULL; + info.changed_data = NULL; + g_signal_handler_disconnect (authority, changed_id); + changed_id = 0; + } else { + info.changed_callback = callback; + info.changed_data= callback_data; + + if (changed_id == 0) { + changed_id = g_signal_connect (authority, + "changed", + G_CALLBACK (pk_authority_changed_cb), + &info); + } + } + + g_object_unref (authority); +#endif +} + diff --git a/src/nm-manager-auth.h b/src/nm-manager-auth.h index 7e7ff7a12..ad14d306c 100644 --- a/src/nm-manager-auth.h +++ b/src/nm-manager-auth.h @@ -21,7 +21,6 @@ #ifndef NM_MANAGER_AUTH_H #define NM_MANAGER_AUTH_H -#include <polkit/polkit.h> #include <glib.h> #include <dbus/dbus-glib.h> @@ -56,25 +55,16 @@ typedef void (*NMAuthChainResultFunc) (NMAuthChain *chain, DBusGMethodInvocation *context, gpointer user_data); -typedef void (*NMAuthChainCallFunc) (NMAuthChain *chain, - const char *permission, - GError *error, - NMAuthCallResult result, - gpointer user_data); - -NMAuthChain *nm_auth_chain_new (PolkitAuthority *authority, - DBusGMethodInvocation *context, +NMAuthChain *nm_auth_chain_new (DBusGMethodInvocation *context, DBusGProxy *proxy, NMAuthChainResultFunc done_func, gpointer user_data); -NMAuthChain *nm_auth_chain_new_raw_message (PolkitAuthority *authority, - DBusMessage *message, +NMAuthChain *nm_auth_chain_new_raw_message (DBusMessage *message, NMAuthChainResultFunc done_func, gpointer user_data); -NMAuthChain *nm_auth_chain_new_dbus_sender (PolkitAuthority *authority, - const char *dbus_sender, +NMAuthChain *nm_auth_chain_new_dbus_sender (const char *dbus_sender, NMAuthChainResultFunc done_func, gpointer user_data); @@ -112,5 +102,7 @@ gboolean nm_auth_uid_in_acl (NMConnection *connection, gulong uid, char **out_error_desc); +void nm_auth_set_changed_func (GDestroyNotify callback, gpointer callback_data); + #endif /* NM_MANAGER_AUTH_H */ diff --git a/src/nm-manager.c b/src/nm-manager.c index 568ff2ae2..961c9d8c6 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -28,6 +28,7 @@ #include <string.h> #include <dbus/dbus-glib-lowlevel.h> #include <dbus/dbus-glib.h> +#include <gio/gio.h> #include <glib/gi18n.h> #include "nm-glib-compat.h" @@ -158,22 +159,6 @@ static GSList * remove_one_device (NMManager *manager, NMDevice *device, gboolean quitting); -static NMDevice *nm_manager_get_device_by_udi (NMManager *manager, const char *udi); - -/* Fix for polkit 0.97 and later */ -#if !HAVE_POLKIT_AUTHORITY_GET_SYNC -static inline PolkitAuthority * -polkit_authority_get_sync (GCancellable *cancellable, GError **error) -{ - PolkitAuthority *authority; - - authority = polkit_authority_get (); - if (!authority) - g_set_error (error, 0, 0, "failed to get the PolicyKit authority"); - return authority; -} -#endif - #define SSD_POKE_INTERVAL 120 #define ORIGDEV_TAG "originating-device" @@ -185,7 +170,6 @@ struct PendingActivation { NMManager *manager; DBusGMethodInvocation *context; - PolkitAuthority *authority; PendingActivationFunc callback; NMAuthChain *chain; @@ -237,8 +221,6 @@ typedef struct { DBusGProxy *aipd_proxy; DBusGProxy *upower_proxy; - PolkitAuthority *authority; - guint auth_changed_id; GSList *auth_chains; /* Firmware dir monitor */ @@ -679,7 +661,6 @@ try_complete_vpn (NMConnection *connection, GSList *existing, GError **error) static PendingActivation * pending_activation_new (NMManager *manager, - PolkitAuthority *authority, DBusGMethodInvocation *context, const char *device_path, const char *connection_path, @@ -696,7 +677,6 @@ pending_activation_new (NMManager *manager, gboolean success; g_return_val_if_fail (manager != NULL, NULL); - g_return_val_if_fail (authority != NULL, NULL); g_return_val_if_fail (context != NULL, NULL); g_return_val_if_fail (device_path != NULL, NULL); @@ -744,7 +724,6 @@ pending_activation_new (NMManager *manager, pending = g_slice_new0 (PendingActivation); pending->manager = manager; - pending->authority = authority; pending->context = context; pending->callback = callback; @@ -767,31 +746,23 @@ pending_auth_net_done (NMAuthChain *chain, { PendingActivation *pending = user_data; NMAuthCallResult result; + GError *tmp_error = NULL; pending->chain = NULL; - if (error) { - pending->callback (pending, error); - goto out; - } - /* Caller has had a chance to obtain authorization, so we only need to * check for 'yes' here. */ result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL)); if (result != NM_AUTH_CALL_RESULT_YES) { - error = g_error_new_literal (NM_MANAGER_ERROR, - NM_MANAGER_ERROR_PERMISSION_DENIED, - "Not authorized to control networking."); - pending->callback (pending, error); - g_error_free (error); - goto out; + tmp_error = g_error_new_literal (NM_MANAGER_ERROR, + NM_MANAGER_ERROR_PERMISSION_DENIED, + "Not authorized to control networking."); } - pending->callback (pending, NULL); - -out: + pending->callback (pending, tmp_error); nm_auth_chain_unref (chain); + g_clear_error (&tmp_error); } static void @@ -827,8 +798,7 @@ pending_activation_check_authorized (PendingActivation *pending, /* First check if the user is allowed to use networking at all, giving * the user a chance to authenticate to gain the permission. */ - pending->chain = nm_auth_chain_new (pending->authority, - pending->context, + pending->chain = nm_auth_chain_new (pending->context, NULL, pending_auth_net_done, pending); @@ -1110,7 +1080,7 @@ manager_hidden_ap_found (NMDeviceInterface *device, struct ether_addr seen_addr; if (ether_aton_r (seen_bssid, &seen_addr)) { - if (memcmp (ap_addr, &seen_addr, sizeof (struct ether_addr))) { + if (memcmp (ap_addr, &seen_addr, sizeof (struct ether_addr)) == 0) { /* Copy the SSID from the connection to the AP */ nm_ap_set_ssid (ap, ssid); done = TRUE; @@ -1388,7 +1358,7 @@ manager_device_disconnect_request (NMDevice *device, NMAuthChain *chain; /* Otherwise validate the user request */ - chain = nm_auth_chain_new (priv->authority, context, NULL, disconnect_net_auth_done_cb, self); + chain = nm_auth_chain_new (context, NULL, disconnect_net_auth_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); @@ -2103,7 +2073,6 @@ impl_manager_activate_connection (NMManager *self, * activate the connection. */ pending = pending_activation_new (self, - priv->authority, context, device_path, connection_path, @@ -2172,7 +2141,6 @@ impl_manager_add_and_activate_connection (NMManager *self, * activate the connection. */ pending = pending_activation_new (self, - priv->authority, context, device_path, NULL, @@ -2236,37 +2204,35 @@ done: static void deactivate_net_auth_done_cb (NMAuthChain *chain, - GError *error, + GError *auth_error, DBusGMethodInvocation *context, gpointer user_data) { NMManager *self = NM_MANAGER (user_data); NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); - GError *ret_error = NULL; + GError *error = NULL; NMAuthCallResult result; const char *active_path; priv->auth_chains = g_slist_remove (priv->auth_chains, chain); result = GPOINTER_TO_UINT (nm_auth_chain_get_data (chain, NM_AUTH_PERMISSION_NETWORK_CONTROL)); - ret_error = deactivate_disconnect_check_error (error, result, "Deactivate"); - if (ret_error) { - dbus_g_method_return_error (context, ret_error); - g_error_free (ret_error); - goto done; + error = deactivate_disconnect_check_error (auth_error, result, "Deactivate"); + if (!error) { + active_path = nm_auth_chain_get_data (chain, "path"); + if (!nm_manager_deactivate_connection (self, + active_path, + NM_DEVICE_STATE_REASON_USER_REQUESTED, + &error)) + g_assert (error); } - active_path = nm_auth_chain_get_data (chain, "path"); - if (!nm_manager_deactivate_connection (self, - active_path, - NM_DEVICE_STATE_REASON_USER_REQUESTED, - &ret_error)) { - dbus_g_method_return_error (context, ret_error); - g_clear_error (&ret_error); - } else + if (error) + dbus_g_method_return_error (context, error); + else dbus_g_method_return (context); -done: + g_clear_error (&error); nm_auth_chain_unref (chain); } @@ -2342,7 +2308,7 @@ impl_manager_deactivate_connection (NMManager *self, } /* Otherwise validate the user request */ - chain = nm_auth_chain_new (priv->authority, context, NULL, deactivate_net_auth_done_cb, self); + chain = nm_auth_chain_new (context, NULL, deactivate_net_auth_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); @@ -2415,25 +2381,6 @@ do_sleep_wake (NMManager *self) nm_manager_update_state (self); } -static gboolean -return_no_pk_error (PolkitAuthority *authority, - const char *detail, - DBusGMethodInvocation *context) -{ - GError *error; - - if (!authority) { - error = g_error_new (NM_MANAGER_ERROR, - NM_MANAGER_ERROR_PERMISSION_DENIED, - "%s request failed: PolicyKit not initialized", - detail); - dbus_g_method_return_error (context, error); - g_error_free (error); - return FALSE; - } - return TRUE; -} - static void _internal_sleep (NMManager *self, gboolean do_sleep) { @@ -2550,10 +2497,7 @@ impl_manager_sleep (NMManager *self, return; } - if (!return_no_pk_error (priv->authority, "Sleep/wake", context)) - return; - - chain = nm_auth_chain_new (priv->authority, context, NULL, sleep_auth_done_cb, self); + chain = nm_auth_chain_new (context, NULL, sleep_auth_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); @@ -2688,10 +2632,7 @@ impl_manager_enable (NMManager *self, return; } - if (!return_no_pk_error (priv->authority, "Enable/disable", context)) - return; - - chain = nm_auth_chain_new (priv->authority, context, NULL, enable_net_done_cb, self); + chain = nm_auth_chain_new (context, NULL, enable_net_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); @@ -2702,13 +2643,6 @@ impl_manager_enable (NMManager *self, /* Permissions */ static void -pk_authority_changed_cb (GObject *object, gpointer user_data) -{ - /* Let clients know they should re-check their authorization */ - g_signal_emit (NM_MANAGER (user_data), signals[CHECK_PERMISSIONS], 0); -} - -static void get_perm_add_result (NMAuthChain *chain, GHashTable *results, const char *permission) { NMAuthCallResult result; @@ -2772,10 +2706,7 @@ impl_manager_get_permissions (NMManager *self, NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); NMAuthChain *chain; - if (!return_no_pk_error (priv->authority, "Permissions", context)) - return; - - chain = nm_auth_chain_new (priv->authority, context, NULL, get_permissions_done_cb, self); + chain = nm_auth_chain_new (context, NULL, get_permissions_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); @@ -3059,7 +2990,7 @@ prop_filter (DBusConnection *connection, if (uid > 0) { /* Otherwise validate the user request */ - chain = nm_auth_chain_new_raw_message (priv->authority, message, prop_set_auth_done_cb, self); + chain = nm_auth_chain_new_raw_message (message, prop_set_auth_done_cb, self); g_assert (chain); priv->auth_chains = g_slist_append (priv->auth_chains, chain); nm_auth_chain_set_data (chain, "prop", g_strdup (glib_propname), g_free); @@ -3189,7 +3120,8 @@ dispose (GObject *object) g_slist_foreach (priv->auth_chains, (GFunc) nm_auth_chain_unref, NULL); g_slist_free (priv->auth_chains); - g_object_unref (priv->authority); + + nm_auth_set_changed_func (NULL, NULL); while (g_slist_length (priv->devices)) { priv->devices = remove_one_device (manager, @@ -3466,13 +3398,19 @@ periodic_update_active_connection_timestamps (gpointer user_data) } static void +authority_changed_cb (gpointer user_data) +{ + /* Let clients know they should re-check their authorization */ + g_signal_emit (NM_MANAGER (user_data), signals[CHECK_PERMISSIONS], 0); +} + +static void nm_manager_init (NMManager *manager) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); DBusGConnection *g_connection; guint id, i; GFile *file; - GError *error = NULL; /* Initialize rfkill structures and states */ memset (priv->radio_states, 0, sizeof (priv->radio_states)); @@ -3563,18 +3501,8 @@ nm_manager_init (NMManager *manager) } else nm_log_warn (LOGD_SUSPEND, "could not initialize UPower D-Bus proxy"); - priv->authority = polkit_authority_get_sync (NULL, &error); - if (priv->authority) { - priv->auth_changed_id = g_signal_connect (priv->authority, - "changed", - G_CALLBACK (pk_authority_changed_cb), - manager); - } else { - nm_log_warn (LOGD_CORE, "failed to create PolicyKit authority: (%d) %s", - error ? error->code : -1, - error && error->message ? error->message : "(unknown)"); - g_clear_error (&error); - } + /* Listen for authorization changes */ + nm_auth_set_changed_func (authority_changed_cb, manager); /* Monitor the firmware directory */ if (strlen (KERNEL_FIRMWARE_DIR)) { diff --git a/src/nm-policy.c b/src/nm-policy.c index 5c30828b2..194d11116 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -15,7 +15,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2004 - 2010 Red Hat, Inc. + * Copyright (C) 2004 - 2011 Red Hat, Inc. * Copyright (C) 2007 - 2008 Novell, Inc. */ @@ -817,22 +817,28 @@ hostname_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) } static void +reset_retries_all (NMSettings *settings) +{ + GSList *connections, *iter; + + connections = nm_settings_get_connections (settings); + for (iter = connections; iter; iter = g_slist_next (iter)) + set_connection_auto_retries (NM_CONNECTION (iter->data), RETRIES_DEFAULT); + g_slist_free (connections); +} + +static void sleeping_changed (NMManager *manager, GParamSpec *pspec, gpointer user_data) { NMPolicy *policy = user_data; gboolean sleeping = FALSE, enabled = FALSE; - GSList *connections, *iter; g_object_get (G_OBJECT (manager), NM_MANAGER_SLEEPING, &sleeping, NULL); g_object_get (G_OBJECT (manager), NM_MANAGER_NETWORKING_ENABLED, &enabled, NULL); /* Reset retries on all connections so they'll checked on wakeup */ - if (sleeping || !enabled) { - connections = nm_settings_get_connections (policy->settings); - for (iter = connections; iter; iter = g_slist_next (iter)) - set_connection_auto_retries (NM_CONNECTION (iter->data), RETRIES_DEFAULT); - g_slist_free (connections); - } + if (sleeping || !enabled) + reset_retries_all (policy->settings); } static void @@ -1045,9 +1051,15 @@ connection_added (NMSettings *settings, } static void -connections_loaded (NMSettings *settings, - gpointer user_data) +connections_loaded (NMSettings *settings, gpointer user_data) { + // FIXME: "connections-loaded" signal is emmitted *before* we connect to it + // in nm_policy_new(). So this function is never called. Currently we work around + // that by calling reset_retries_all() in nm_policy_new() + + /* Initialize connections' auto-retries */ + reset_retries_all (settings); + schedule_activate_all ((NMPolicy *) user_data); } @@ -1175,6 +1187,9 @@ nm_policy_new (NMManager *manager, _connect_settings_signal (policy, NM_SETTINGS_SIGNAL_CONNECTION_VISIBILITY_CHANGED, connection_visibility_changed); + /* Initialize connections' auto-retries */ + reset_retries_all (policy->settings); + initialized = TRUE; return policy; } diff --git a/src/nm-session-monitor.c b/src/nm-session-monitor.c index c163ee6ad..7ee9013ac 100644 --- a/src/nm-session-monitor.c +++ b/src/nm-session-monitor.c @@ -74,6 +74,7 @@ typedef enum { NM_SESSION_MONITOR_ERROR_IO_ERROR = 0, NM_SESSION_MONITOR_ERROR_MALFORMED_DATABASE, NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, + NM_SESSION_MONITOR_ERROR_NO_DATABASE, } NMSessionMonitorError; GQuark @@ -101,6 +102,8 @@ nm_session_monitor_error_get_type (void) ENUM_ENTRY (NM_SESSION_MONITOR_ERROR_MALFORMED_DATABASE, "MalformedDatabase"), /* Username or UID could could not be found */ ENUM_ENTRY (NM_SESSION_MONITOR_ERROR_UNKNOWN_USER, "UnknownUser"), + /* No ConsoleKit database */ + ENUM_ENTRY (NM_SESSION_MONITOR_ERROR_NO_DATABASE, "NoDatabase"), { 0, 0, 0 } }; @@ -226,10 +229,11 @@ reload_database (NMSessionMonitor *self, GError **error) free_database (self); + errno = 0; if (stat (CKDB_PATH, &statbuf) != 0) { g_set_error (error, NM_SESSION_MONITOR_ERROR, - NM_SESSION_MONITOR_ERROR_IO_ERROR, + errno == ENOENT ? NM_SESSION_MONITOR_ERROR_NO_DATABASE : NM_SESSION_MONITOR_ERROR_IO_ERROR, "Error statting file " CKDB_PATH ": %s", strerror (errno)); goto error; @@ -292,10 +296,11 @@ ensure_database (NMSessionMonitor *self, GError **error) if (self->database != NULL) { struct stat statbuf; + errno = 0; if (stat (CKDB_PATH, &statbuf) != 0) { g_set_error (error, NM_SESSION_MONITOR_ERROR, - NM_SESSION_MONITOR_ERROR_IO_ERROR, + errno == ENOENT ? NM_SESSION_MONITOR_ERROR_NO_DATABASE : NM_SESSION_MONITOR_ERROR_IO_ERROR, "Error statting file " CKDB_PATH " to check timestamp: %s", strerror (errno)); goto out; @@ -346,7 +351,12 @@ nm_session_monitor_init (NMSessionMonitor *self) error = NULL; if (!ensure_database (self, &error)) { - nm_log_err (LOGD_CORE, "Error loading " CKDB_PATH ": %s", error->message); + /* Ignore the first error if the CK database isn't found yet */ + if (g_error_matches (error, + NM_SESSION_MONITOR_ERROR, + NM_SESSION_MONITOR_ERROR_NO_DATABASE) == FALSE) { + nm_log_err (LOGD_CORE, "Error loading " CKDB_PATH ": %s", error->message); + } g_error_free (error); } diff --git a/src/nm-udev-manager.c b/src/nm-udev-manager.c index 41a4e15b1..e0795e81f 100644 --- a/src/nm-udev-manager.c +++ b/src/nm-udev-manager.c @@ -439,9 +439,13 @@ device_creator (NMUdevManager *manager, if (parent) { driver = g_udev_device_get_driver (parent); if (!driver) { - /* try the grandparent only if it's an ibmebus device */ + /* try the grandparent if it's an ibmebus device or if the + * subsys is NULL which usually indicates some sort of + * platform device like a 'gadget' net interface. + */ subsys = g_udev_device_get_subsystem (parent); - if (subsys && !strcmp (subsys, "ibmebus")) { + if ( (g_strcmp0 (subsys, "ibmebus") == 0) + || (subsys == NULL)) { grandparent = g_udev_device_get_parent (parent); if (grandparent) driver = g_udev_device_get_driver (grandparent); diff --git a/src/nm-wifi-ap.c b/src/nm-wifi-ap.c index 6eab9581d..f9c664738 100644 --- a/src/nm-wifi-ap.c +++ b/src/nm-wifi-ap.c @@ -58,12 +58,6 @@ typedef struct /* Non-scanned attributes */ gboolean fake; /* Whether or not the AP is from a scan */ gboolean broadcast; /* Whether or not the AP is broadcasting (hidden) */ - gboolean user_created; /* Whether or not the AP was created - * by the user with "Create network..." - * A subset of Ad-Hoc mode. user_created - * implies Ad-Hoc, but not necessarily - * the other way around. - */ glong last_seen; /* Last time the AP was seen in a scan in seconds */ /* Things from user prefs/NetworkManagerInfo */ @@ -863,9 +857,14 @@ nm_ap_set_ssid (NMAccessPoint *ap, const GByteArray * ssid) } if (ssid) { - priv->ssid = g_byte_array_sized_new (ssid->len); - priv->ssid->len = ssid->len; - memcpy (priv->ssid->data, ssid->data, ssid->len); + /* Should never get zero-length SSIDs */ + g_warn_if_fail (ssid->len > 0); + + if (ssid->len) { + priv->ssid = g_byte_array_sized_new (ssid->len); + priv->ssid->len = ssid->len; + memcpy (priv->ssid->data, ssid->data, ssid->len); + } } g_object_notify (G_OBJECT (ap), NM_AP_SSID); @@ -1154,28 +1153,6 @@ void nm_ap_set_last_seen (NMAccessPoint *ap, const glong last_seen) /* - * Get/Set functions to indicate that an access point is - * user-created, ie whether or not its a network filled with - * information from the user and intended to create a new Ad-Hoc - * wireless network. - * - */ -gboolean nm_ap_get_user_created (const NMAccessPoint *ap) -{ - g_return_val_if_fail (NM_IS_AP (ap), FALSE); - - return NM_AP_GET_PRIVATE (ap)->user_created; -} - -void nm_ap_set_user_created (NMAccessPoint *ap, gboolean user_created) -{ - g_return_if_fail (NM_IS_AP (ap)); - - NM_AP_GET_PRIVATE (ap)->user_created = user_created; -} - - -/* * Get/Set functions for user address list * * The internal address list is always "owned" by the AP and diff --git a/src/nm-wifi-ap.h b/src/nm-wifi-ap.h index 4c98f248d..95514ba6c 100644 --- a/src/nm-wifi-ap.h +++ b/src/nm-wifi-ap.h @@ -104,9 +104,6 @@ void nm_ap_set_broadcast (NMAccessPoint *ap, gboolean broadcast); glong nm_ap_get_last_seen (const NMAccessPoint *ap); void nm_ap_set_last_seen (NMAccessPoint *ap, const glong last_seen); -gboolean nm_ap_get_user_created (const NMAccessPoint *ap); -void nm_ap_set_user_created (NMAccessPoint *ap, gboolean user_created); - GSList * nm_ap_get_user_addresses (const NMAccessPoint *ap); void nm_ap_set_user_addresses (NMAccessPoint *ap, GSList *list); diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index 767b9315d..e863aabac 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -798,7 +798,7 @@ create_pppd_cmd_line (NMPPPManager *self, NMPPPManagerPrivate *priv = NM_PPP_MANAGER_GET_PRIVATE (self); const char *ppp_binary; NMCmdLine *cmd; - const char *ppp_debug; + gboolean ppp_debug; g_return_val_if_fail (setting != NULL, NULL); @@ -819,7 +819,11 @@ create_pppd_cmd_line (NMPPPManager *self, /* NM handles setting the default route */ nm_cmd_line_add_string (cmd, "nodefaultroute"); - ppp_debug = getenv ("NM_PPP_DEBUG"); + ppp_debug = !!getenv ("NM_PPP_DEBUG"); + if ( nm_logging_level_enabled (LOGL_DEBUG) + && nm_logging_domain_enabled (LOGD_PPP)) + ppp_debug = TRUE; + if (ppp_debug) nm_cmd_line_add_string (cmd, "debug"); diff --git a/src/settings/Makefile.am b/src/settings/Makefile.am index 55b5b7ef0..21dc5bb0e 100644 --- a/src/settings/Makefile.am +++ b/src/settings/Makefile.am @@ -32,7 +32,6 @@ libsettings_la_SOURCES = \ nm-settings.h \ nm-inotify-helper.c \ nm-inotify-helper.h \ - nm-polkit-helpers.h \ nm-settings-error.c \ nm-settings-error.h \ nm-system-config-interface.c \ diff --git a/src/settings/Makefile.in b/src/settings/Makefile.in index 123132b74..980f35cb1 100644 --- a/src/settings/Makefile.in +++ b/src/settings/Makefile.in @@ -396,7 +396,6 @@ libsettings_la_SOURCES = \ nm-settings.h \ nm-inotify-helper.c \ nm-inotify-helper.h \ - nm-polkit-helpers.h \ nm-settings-error.c \ nm-settings-error.h \ nm-system-config-interface.c \ diff --git a/src/settings/nm-agent-manager.c b/src/settings/nm-agent-manager.c index dbc29cae4..8a5ea1068 100644 --- a/src/settings/nm-agent-manager.c +++ b/src/settings/nm-agent-manager.c @@ -33,7 +33,6 @@ #include "nm-secret-agent.h" #include "nm-manager-auth.h" #include "nm-dbus-glib-types.h" -#include "nm-polkit-helpers.h" #include "nm-manager-auth.h" #include "nm-setting-vpn.h" #include "nm-setting-connection.h" @@ -49,7 +48,6 @@ typedef struct { NMDBusManager *dbus_mgr; NMSessionMonitor *session_monitor; - PolkitAuthority *authority; /* Hashed by owner name, not identifier, since two agents in different * sessions can use the same identifier. @@ -338,7 +336,6 @@ typedef void (*RequestCancelFunc) (Request *req); struct _Request { guint32 reqid; - PolkitAuthority *authority; NMAuthChain *chain; NMConnection *connection; @@ -381,7 +378,6 @@ static guint32 next_req_id = 1; static Request * request_new_get (NMConnection *connection, - PolkitAuthority *authority, gboolean filter_by_uid, gulong uid_filter, GHashTable *existing_secrets, @@ -402,7 +398,6 @@ request_new_get (NMConnection *connection, req = g_malloc0 (sizeof (Request)); req->reqid = next_req_id++; req->connection = g_object_ref (connection); - req->authority = g_object_ref (authority); req->filter_by_uid = filter_by_uid; req->uid_filter = uid_filter; if (existing_secrets) @@ -462,8 +457,6 @@ request_free (Request *req) g_hash_table_unref (req->existing_secrets); if (req->chain) nm_auth_chain_unref (req->chain); - if (req->authority) - g_object_unref (req->authority); memset (req, 0, sizeof (Request)); g_free (req); } @@ -853,10 +846,10 @@ check_system_secrets_cb (NMSetting *setting, /* VPNs are special; need to handle each secret separately */ g_hash_table_iter_init (&iter, (GHashTable *) g_value_get_boxed (value)); while (g_hash_table_iter_next (&iter, (gpointer *) &secret_name, NULL)) { - if (nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL)) { - if (secret_flags == NM_SETTING_SECRET_FLAG_NONE) - *has_system = TRUE; - } + secret_flags = NM_SETTING_SECRET_FLAG_NONE; + nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); + if (secret_flags == NM_SETTING_SECRET_FLAG_NONE) + *has_system = TRUE; } } else { nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); @@ -896,8 +889,7 @@ get_next_cb (Request *req) nm_log_dbg (LOGD_AGENTS, "(%p/%s) request has system secrets; checking agent %s for MODIFY", req, req->setting_name, agent_dbus_owner); - req->chain = nm_auth_chain_new_dbus_sender (req->authority, - agent_dbus_owner, + req->chain = nm_auth_chain_new_dbus_sender (agent_dbus_owner, get_agent_modify_auth_cb, req); g_assert (req->chain); @@ -1050,7 +1042,6 @@ nm_agent_manager_get_secrets (NMAgentManager *self, */ req = request_new_get (connection, - priv->authority, filter_by_uid, uid_filter, existing_secrets, @@ -1335,15 +1326,6 @@ static void nm_agent_manager_init (NMAgentManager *self) { NMAgentManagerPrivate *priv = NM_AGENT_MANAGER_GET_PRIVATE (self); - GError *error = NULL; - - priv->authority = polkit_authority_get_sync (NULL, &error); - if (!priv->authority) { - nm_log_warn (LOGD_SETTINGS, "failed to create PolicyKit authority: (%d) %s", - error ? error->code : -1, - error && error->message ? error->message : "(unknown)"); - g_clear_error (&error); - } priv->agents = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); priv->requests = g_hash_table_new_full (g_direct_hash, @@ -1365,7 +1347,6 @@ dispose (GObject *object) g_object_unref (priv->session_monitor); g_object_unref (priv->dbus_mgr); - g_object_unref (priv->authority); } G_OBJECT_CLASS (nm_agent_manager_parent_class)->dispose (object); diff --git a/src/settings/nm-polkit-helpers.h b/src/settings/nm-polkit-helpers.h deleted file mode 100644 index d812e9445..000000000 --- a/src/settings/nm-polkit-helpers.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ -/* NetworkManager system settings service - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * (C) Copyright 2008 Novell, Inc. - * (C) Copyright 2008 - 2010 Red Hat, Inc. - */ - -#ifndef NM_POLKIT_HELPERS_H -#define NM_POLKIT_HELPERS_H - -#include <polkit/polkit.h> - -/* Fix for polkit 0.97 and later */ -#if !HAVE_POLKIT_AUTHORITY_GET_SYNC -static inline PolkitAuthority * -polkit_authority_get_sync (GCancellable *cancellable, GError **error) -{ - PolkitAuthority *authority; - - authority = polkit_authority_get (); - if (!authority) - g_set_error (error, 0, 0, "failed to get the PolicyKit authority"); - return authority; -} -#endif - -#endif /* NM_POLKIT_HELPERS_H */ diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 22aef7161..60de6b068 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -34,7 +34,6 @@ #include "nm-dbus-manager.h" #include "nm-settings-error.h" #include "nm-dbus-glib-types.h" -#include "nm-polkit-helpers.h" #include "nm-logging.h" #include "nm-manager-auth.h" #include "nm-marshal.h" @@ -83,7 +82,6 @@ typedef struct { NMDBusManager *dbus_mgr; NMAgentManager *agent_mgr; - PolkitAuthority *authority; GSList *pending_auths; /* List of pending authentication requests */ NMConnection *secrets; gboolean visible; /* Is this connection is visible by some session? */ @@ -98,6 +96,83 @@ typedef struct { /**************************************************************/ +/* Return TRUE to continue, FALSE to stop */ +typedef gboolean (*ForEachSecretFunc) (GHashTableIter *iter, + NMSettingSecretFlags flags, + gpointer user_data); + +static void +for_each_secret (NMConnection *connection, + GHashTable *secrets, + ForEachSecretFunc callback, + gpointer callback_data) +{ + GHashTableIter iter; + const char *setting_name; + GHashTable *setting_hash; + + /* This function, given a hash of hashes representing new secrets of + * an NMConnection, walks through each toplevel hash (which represents a + * NMSetting), and for each setting, walks through that setting hash's + * properties. For each property that's a secret, it will check that + * secret's flags in the backing NMConnection object, and call a supplied + * callback. + * + * The one complexity is that the VPN setting's 'secrets' property is + * *also* a hash table (since the key/value pairs are arbitrary and known + * only to the VPN plugin itself). That means we have three levels of + * GHashTables that we potentially have to traverse here. When we hit the + * VPN setting's 'secrets' property, we special-case that and iterate over + * each item in that 'secrets' hash table, calling the supplied callback + * each time. + */ + + /* Walk through the list of setting hashes */ + g_hash_table_iter_init (&iter, secrets); + while (g_hash_table_iter_next (&iter, (gpointer) &setting_name, (gpointer) &setting_hash)) { + NMSetting *setting; + GHashTableIter secret_iter; + const char *secret_name; + GValue *val; + + /* Get the actual NMSetting from the connection so we can get secret flags + * from the connection data, since flags aren't secrets. What we're + * iterating here is just the secrets, not a whole connection. + */ + setting = nm_connection_get_setting_by_name (connection, setting_name); + if (setting == NULL) + continue; + + /* Walk through the list of keys in each setting hash */ + g_hash_table_iter_init (&secret_iter, setting_hash); + while (g_hash_table_iter_next (&secret_iter, (gpointer) &secret_name, (gpointer) &val)) { + NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; + + /* VPN secrets need slightly different treatment here since the + * "secrets" property is actually a hash table of secrets. + */ + if (NM_IS_SETTING_VPN (setting) && (g_strcmp0 (secret_name, NM_SETTING_VPN_SECRETS) == 0)) { + GHashTableIter vpn_secrets_iter; + + /* Iterate through each secret from the VPN hash in the overall secrets hash */ + g_hash_table_iter_init (&vpn_secrets_iter, g_value_get_boxed (val)); + while (g_hash_table_iter_next (&vpn_secrets_iter, (gpointer) &secret_name, NULL)) { + secret_flags = NM_SETTING_SECRET_FLAG_NONE; + nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); + if (callback (&vpn_secrets_iter, secret_flags, callback_data) == FALSE) + return; + } + } else { + nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); + if (callback (&secret_iter, secret_flags, callback_data) == FALSE) + return; + } + } + } +} + +/**************************************************************/ + static void set_visible (NMSettingsConnection *self, gboolean new_visible) { @@ -112,7 +187,8 @@ set_visible (NMSettingsConnection *self, gboolean new_visible) gboolean nm_settings_connection_is_visible (NMSettingsConnection *self) { - g_return_val_if_fail (NM_SETTINGS_CONNECTION (self), FALSE); + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (NM_IS_SETTINGS_CONNECTION (self), FALSE); return NM_SETTINGS_CONNECTION_GET_PRIVATE (self)->visible; } @@ -124,7 +200,8 @@ nm_settings_connection_recheck_visibility (NMSettingsConnection *self) NMSettingConnection *s_con; guint32 num, i; - g_return_if_fail (NM_SETTINGS_CONNECTION (self)); + g_return_if_fail (self != NULL); + g_return_if_fail (NM_IS_SETTINGS_CONNECTION (self)); priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); @@ -178,10 +255,10 @@ only_system_secrets_cb (NMSetting *setting, g_hash_table_iter_init (&iter, (GHashTable *) g_value_get_boxed (value)); while (g_hash_table_iter_next (&iter, (gpointer *) &secret_name, NULL)) { - if (nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL)) { - if (secret_flags != NM_SETTING_SECRET_FLAG_NONE) - nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), secret_name); - } + secret_flags = NM_SETTING_SECRET_FLAG_NONE; + nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); + if (secret_flags != NM_SETTING_SECRET_FLAG_NONE) + nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), secret_name); } } else { nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); @@ -204,15 +281,26 @@ update_secrets_cache (NMSettingsConnection *self) nm_connection_for_each_setting_value (priv->secrets, only_system_secrets_cb, NULL); } +static gboolean +clear_system_secrets (GHashTableIter *iter, + NMSettingSecretFlags flags, + gpointer user_data) +{ + if (flags == NM_SETTING_SECRET_FLAG_NONE) + g_hash_table_iter_remove (iter); + return TRUE; +} + /* Update the settings of this connection to match that of 'new', taking care to - * make a private copy of secrets. */ + * make a private copy of secrets. + */ gboolean nm_settings_connection_replace_settings (NMSettingsConnection *self, NMConnection *new, GError **error) { NMSettingsConnectionPrivate *priv; - GHashTable *new_settings; + GHashTable *new_settings, *transient_secrets; gboolean success = FALSE; g_return_val_if_fail (self != NULL, FALSE); @@ -222,18 +310,48 @@ nm_settings_connection_replace_settings (NMSettingsConnection *self, priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + /* Replacing the settings might replace transient secrets, such as when + * a user agent returns secrets, which might trigger the connection to be + * written out, which triggers an inotify event to re-read and update the + * connection, which, if we're not careful, could wipe out the transient + * secrets the user agent just sent us. Basically, only + * nm_connection_clear_secrets() should wipe out transient secrets but + * re-reading a connection from on-disk and updating our in-memory copy + * should not. Thus we preserve non-system-owned secrets here. + */ + transient_secrets = nm_connection_to_hash (NM_CONNECTION (self), NM_SETTING_HASH_FLAG_ONLY_SECRETS); + if (transient_secrets) + for_each_secret (NM_CONNECTION (self), transient_secrets, clear_system_secrets, NULL); + new_settings = nm_connection_to_hash (new, NM_SETTING_HASH_FLAG_ALL); g_assert (new_settings); if (nm_connection_replace_settings (NM_CONNECTION (self), new_settings, error)) { + GHashTableIter iter; + NMSetting *setting; + const char *setting_name; + GHashTable *setting_hash; + /* Copy the connection to keep its secrets around even if NM * calls nm_connection_clear_secrets(). */ update_secrets_cache (self); + /* And add the transient secrets back */ + if (transient_secrets) { + g_hash_table_iter_init (&iter, transient_secrets); + while (g_hash_table_iter_next (&iter, (gpointer) &setting_name, (gpointer) &setting_hash)) { + setting = nm_connection_get_setting_by_name (NM_CONNECTION (self), setting_name); + if (setting) + nm_setting_update_secrets (setting, setting_hash, NULL); + } + } + nm_settings_connection_recheck_visibility (self); success = TRUE; } g_hash_table_destroy (new_settings); + if (transient_secrets) + g_hash_table_destroy (transient_secrets); return success; } @@ -398,11 +516,6 @@ supports_secrets (NMSettingsConnection *connection, const char *setting_name) return TRUE; } -/* Return TRUE to continue, FALSE to stop */ -typedef gboolean (*ForEachSecretFunc) (GHashTableIter *iter, - NMSettingSecretFlags flags, - gpointer user_data); - static gboolean clear_nonagent_secrets (GHashTableIter *iter, NMSettingSecretFlags flags, @@ -430,7 +543,7 @@ has_system_owned_secrets (GHashTableIter *iter, { gboolean *has_system_owned = user_data; - if (!(flags & NM_SETTING_SECRET_FLAG_AGENT_OWNED)) { + if (flags == NM_SETTING_SECRET_FLAG_NONE) { *has_system_owned = TRUE; return FALSE; } @@ -438,40 +551,6 @@ has_system_owned_secrets (GHashTableIter *iter, } static void -for_each_secret (NMConnection *connection, - GHashTable *secrets, - ForEachSecretFunc callback, - gpointer callback_data) -{ - GHashTableIter iter; - const char *setting_name; - GHashTable *setting_hash; - - /* Walk through the list of setting hashes */ - g_hash_table_iter_init (&iter, secrets); - while (g_hash_table_iter_next (&iter, - (gpointer *) &setting_name, - (gpointer *) &setting_hash)) { - GHashTableIter setting_iter; - const char *secret_name; - - /* Walk through the list of keys in each setting hash */ - g_hash_table_iter_init (&setting_iter, setting_hash); - while (g_hash_table_iter_next (&setting_iter, (gpointer *) &secret_name, NULL)) { - NMSetting *setting; - NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; - - /* Get the actual NMSetting from the connection so we can get secret flags */ - setting = nm_connection_get_setting_by_name (connection, setting_name); - if (setting && nm_setting_get_secret_flags (setting, secret_name, &flags, NULL)) { - if (callback (&setting_iter, flags, callback_data) == FALSE) - return; - } - } - } -} - -static void new_secrets_commit_cb (NMSettingsConnection *connection, GError *error, gpointer user_data) @@ -850,7 +929,7 @@ auth_start (NMSettingsConnection *self, } if (check_permission) { - chain = nm_auth_chain_new (priv->authority, context, NULL, pk_auth_cb, self); + chain = nm_auth_chain_new (context, NULL, pk_auth_cb, self); g_assert (chain); nm_auth_chain_set_data (chain, "perm", (gpointer) check_permission, NULL); nm_auth_chain_set_data (chain, "callback", callback, NULL); @@ -980,10 +1059,10 @@ only_agent_secrets_cb (NMSetting *setting, /* VPNs are special; need to handle each secret separately */ g_hash_table_iter_init (&iter, (GHashTable *) g_value_get_boxed (value)); while (g_hash_table_iter_next (&iter, (gpointer *) &secret_name, NULL)) { - if (nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL)) { - if (secret_flags != NM_SETTING_SECRET_FLAG_AGENT_OWNED) - nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), secret_name); - } + secret_flags = NM_SETTING_SECRET_FLAG_NONE; + nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); + if (secret_flags != NM_SETTING_SECRET_FLAG_AGENT_OWNED) + nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), secret_name); } } else { nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); @@ -1271,7 +1350,8 @@ nm_settings_connection_signal_remove (NMSettingsConnection *self) guint64 nm_settings_connection_get_timestamp (NMSettingsConnection *connection) { - g_return_val_if_fail (NM_SETTINGS_CONNECTION (connection), 0); + g_return_val_if_fail (connection != NULL, 0); + g_return_val_if_fail (NM_IS_SETTINGS_CONNECTION (connection), 0); return NM_SETTINGS_CONNECTION_GET_PRIVATE (connection)->timestamp; } @@ -1368,18 +1448,9 @@ nm_settings_connection_init (NMSettingsConnection *self) NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); static guint32 dbus_counter = 0; char *dbus_path; - GError *error = NULL; priv->dbus_mgr = nm_dbus_manager_get (); - priv->authority = polkit_authority_get_sync (NULL, &error); - if (!priv->authority) { - nm_log_warn (LOGD_SETTINGS, "failed to create PolicyKit authority: (%d) %s", - error ? error->code : -1, - error && error->message ? error->message : "(unknown)"); - g_clear_error (&error); - } - dbus_path = g_strdup_printf ("%s/%u", NM_DBUS_PATH_SETTINGS, dbus_counter++); nm_connection_set_path (NM_CONNECTION (self), dbus_path); g_free (dbus_path); @@ -1421,10 +1492,11 @@ dispose (GObject *object) set_visible (self, FALSE); + if (priv->session_changed_id) + g_signal_handler_disconnect (priv->session_monitor, priv->session_changed_id); g_object_unref (priv->session_monitor); g_object_unref (priv->agent_mgr); g_object_unref (priv->dbus_mgr); - g_object_unref (priv->authority); out: G_OBJECT_CLASS (nm_settings_connection_parent_class)->dispose (object); diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 87fa4b6c9..e23e8d133 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -56,7 +56,6 @@ #include "nm-dbus-glib-types.h" #include "nm-settings.h" #include "nm-settings-connection.h" -#include "nm-polkit-helpers.h" #include "nm-settings-error.h" #include "nm-default-wired-connection.h" #include "nm-logging.h" @@ -114,8 +113,6 @@ typedef struct { NMAgentManager *agent_mgr; - PolkitAuthority *authority; - guint auth_changed_id; char *config_file; NMSessionMonitor *session_monitor; @@ -702,6 +699,46 @@ connection_visibility_changed (NMSettingsConnection *connection, connection); } +#define NM_DBUS_SERVICE_OPENCONNECT "org.freedesktop.NetworkManager.openconnect" +#define NM_OPENCONNECT_KEY_GATEWAY "gateway" +#define NM_OPENCONNECT_KEY_COOKIE "cookie" +#define NM_OPENCONNECT_KEY_GWCERT "gwcert" +#define NM_OPENCONNECT_KEY_XMLCONFIG "xmlconfig" +#define NM_OPENCONNECT_KEY_LASTHOST "lasthost" +#define NM_OPENCONNECT_KEY_AUTOCONNECT "autoconnect" +#define NM_OPENCONNECT_KEY_CERTSIGS "certsigs" + +static void +openconnect_migrate_hack (NMConnection *connection) +{ + NMSettingVPN *s_vpn; + NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NOT_SAVED; + + /* Huge hack. There were some openconnect changes that needed to happen + * pretty late, too late to get into distros. Migration has already + * happened for many people, and their secret flags are wrong. But we + * don't want to requrie re-migration, so we have to fix it up here. Ugh. + */ + + s_vpn = nm_connection_get_setting_vpn (connection); + if (s_vpn == NULL) + return; + + if (g_strcmp0 (nm_setting_vpn_get_service_type (s_vpn), NM_DBUS_SERVICE_OPENCONNECT) == 0) { + /* These are different for every login session, and should not be stored */ + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_GATEWAY, flags, NULL); + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_COOKIE, flags, NULL); + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_GWCERT, flags, NULL); + + /* These are purely internal data for the auth-dialog, and should be stored */ + flags = 0; + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_XMLCONFIG, flags, NULL); + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_LASTHOST, flags, NULL); + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_AUTOCONNECT, flags, NULL); + nm_setting_set_secret_flags (NM_SETTING (s_vpn), NM_OPENCONNECT_KEY_CERTSIGS, flags, NULL); + } +} + static void claim_connection (NMSettings *self, NMSettingsConnection *connection, @@ -739,6 +776,9 @@ claim_connection (NMSettings *self, /* Ensure it's initial visibility is up-to-date */ nm_settings_connection_recheck_visibility (connection); + /* Evil openconnect migration hack */ + openconnect_migrate_hack (NM_CONNECTION (connection)); + id = g_signal_connect (connection, NM_SETTINGS_CONNECTION_REMOVED, G_CALLBACK (connection_removed), self); @@ -999,7 +1039,7 @@ nm_settings_add_connection (NMSettings *self, perm = NM_AUTH_PERMISSION_SETTINGS_MODIFY_SYSTEM; /* Otherwise validate the user request */ - chain = nm_auth_chain_new (priv->authority, context, NULL, pk_add_cb, self); + chain = nm_auth_chain_new (context, NULL, pk_add_cb, self); g_assert (chain); priv->auths = g_slist_append (priv->auths, chain); nm_auth_chain_add_call (chain, perm, TRUE); @@ -1111,7 +1151,7 @@ impl_settings_save_hostname (NMSettings *self, } /* Otherwise validate the user request */ - chain = nm_auth_chain_new (priv->authority, context, NULL, pk_hostname_cb, self); + chain = nm_auth_chain_new (context, NULL, pk_hostname_cb, self); g_assert (chain); priv->auths = g_slist_append (priv->auths, chain); nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_SETTINGS_MODIFY_HOSTNAME, TRUE); @@ -1476,18 +1516,9 @@ static void nm_settings_init (NMSettings *self) { NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); - GError *error = NULL; priv->connections = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, g_object_unref); - priv->authority = polkit_authority_get_sync (NULL, &error); - if (!priv->authority) { - nm_log_warn (LOGD_SETTINGS, "failed to create PolicyKit authority: (%d) %s", - error ? error->code : -1, - error && error->message ? error->message : "(unknown)"); - g_clear_error (&error); - } - priv->session_monitor = nm_session_monitor_get (); /* Hold a reference to the agent manager so it stays alive; the only @@ -1505,11 +1536,6 @@ dispose (GObject *object) NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (self); GSList *iter; - if (priv->auth_changed_id) { - g_signal_handler_disconnect (priv->authority, priv->auth_changed_id); - priv->auth_changed_id = 0; - } - for (iter = priv->auths; iter; iter = g_slist_next (iter)) nm_auth_chain_unref ((NMAuthChain *) iter->data); g_slist_free (priv->auths); diff --git a/src/settings/plugins/keyfile/writer.c b/src/settings/plugins/keyfile/writer.c index 5ecf5891c..eeb145560 100644 --- a/src/settings/plugins/keyfile/writer.c +++ b/src/settings/plugins/keyfile/writer.c @@ -453,17 +453,22 @@ write_hash_of_string (GKeyFile *file, g_hash_table_iter_init (&iter, (GHashTable *) g_value_get_boxed (value)); while (g_hash_table_iter_next (&iter, (gpointer *) &property, (gpointer *) &data)) { - NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; + gboolean write_item = TRUE; /* Handle VPN secrets specially; they are nested in the property's hash; - * we don't want to write them if the secret is not saved or not required. + * we don't want to write them if the secret is not saved, not required, + * or owned by a user's secret agent. */ - if (vpn_secrets && nm_setting_get_secret_flags (setting, property, &flags, NULL)) { - if (flags & (NM_SETTING_SECRET_FLAG_NOT_SAVED | NM_SETTING_SECRET_FLAG_NOT_REQUIRED)) - continue; + if (vpn_secrets) { + NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; + + nm_setting_get_secret_flags (setting, property, &secret_flags, NULL); + if (secret_flags != NM_SETTING_SECRET_FLAG_NONE) + write_item = FALSE; } - g_key_file_set_string (file, group_name, property, data); + if (write_item) + g_key_file_set_string (file, group_name, property, data); } } @@ -799,7 +804,6 @@ write_setting_value (NMSetting *setting, GType type = G_VALUE_TYPE (value); KeyWriter *writer = &key_writers[0]; GParamSpec *pspec; - NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; /* Setting name gets picked up from the keyfile's section name instead */ if (!strcmp (key, NM_SETTING_NAME)) @@ -822,12 +826,17 @@ write_setting_value (NMSetting *setting, } /* Don't write secrets that are owned by user secret agents or aren't - * supposed to be saved. + * supposed to be saved. VPN secrets are handled specially though since + * the secret flags there are in a third-level hash in the 'secrets' + * property. */ - if ( (pspec->flags & NM_SETTING_PARAM_SECRET) - && nm_setting_get_secret_flags (setting, key, &flags, NULL) - && (flags != NM_SETTING_SECRET_FLAG_NONE)) - return; + if (pspec->flags & NM_SETTING_PARAM_SECRET && !NM_IS_SETTING_VPN (setting)) { + NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; + + nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); + if (secret_flags != NM_SETTING_SECRET_FLAG_NONE) + return; + } /* Look through the list of handlers for non-standard format key values */ while (writer->setting_name) { diff --git a/src/vpn-manager/Makefile.am b/src/vpn-manager/Makefile.am index 3b206617f..ce99728ed 100644 --- a/src/vpn-manager/Makefile.am +++ b/src/vpn-manager/Makefile.am @@ -22,6 +22,7 @@ libvpn_manager_la_SOURCES = \ nm-vpn-connection.h libvpn_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED @@ -30,6 +31,7 @@ libvpn_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ $(top_builddir)/libnm-util/libnm-util.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/vpn-manager/Makefile.in b/src/vpn-manager/Makefile.in index a8fea32d6..3785667e9 100644 --- a/src/vpn-manager/Makefile.in +++ b/src/vpn-manager/Makefile.in @@ -60,7 +60,7 @@ libvpn_manager_la_DEPENDENCIES = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ $(top_builddir)/libnm-util/libnm-util.la $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) am_libvpn_manager_la_OBJECTS = libvpn_manager_la-nm-vpn-manager.lo \ libvpn_manager_la-nm-vpn-service.lo \ libvpn_manager_la-nm-vpn-connection-base.lo \ @@ -328,6 +328,7 @@ libvpn_manager_la_SOURCES = \ nm-vpn-connection.h libvpn_manager_la_CPPFLAGS = \ + $(LIBNL_CFLAGS) \ $(DBUS_CFLAGS) \ $(GLIB_CFLAGS) \ -DG_DISABLE_DEPRECATED @@ -336,6 +337,7 @@ libvpn_manager_la_LIBADD = \ $(top_builddir)/marshallers/libmarshallers.la \ $(top_builddir)/src/logging/libnm-logging.la \ $(top_builddir)/libnm-util/libnm-util.la \ + $(LIBNL_LIBS) \ $(DBUS_LIBS) \ $(GLIB_LIBS) diff --git a/src/wimax/nm-device-wimax.c b/src/wimax/nm-device-wimax.c index 12db7e272..9dff503d8 100644 --- a/src/wimax/nm-device-wimax.c +++ b/src/wimax/nm-device-wimax.c @@ -278,6 +278,8 @@ remove_all_nsps (NMDeviceWimax *self) { NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); + set_current_nsp (self, NULL); + while (g_slist_length (priv->nsp_list)) { NMWimaxNsp *nsp = NM_WIMAX_NSP (priv->nsp_list->data); @@ -717,29 +719,43 @@ real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) NMActRequest *req; GSList *iter; const char *path; + NMWimaxNsp *nsp = NULL; clear_link_timeout (NM_DEVICE_WIMAX (device)); + *reason = NM_DEVICE_STATE_REASON_NONE; + req = nm_device_get_act_request (device); if (!req) - goto err; + return NM_ACT_STAGE_RETURN_FAILURE; path = nm_act_request_get_specific_object (req); if (!path) - goto err; + return NM_ACT_STAGE_RETURN_FAILURE; + /* Find the NSP in the scan list */ for (iter = priv->nsp_list; iter; iter = iter->next) { - NMWimaxNsp *nsp = NM_WIMAX_NSP (iter->data); + NMWimaxNsp *candidate = NM_WIMAX_NSP (iter->data); - if (!strcmp (path, nm_wimax_nsp_get_dbus_path (nsp))) { - set_current_nsp (NM_DEVICE_WIMAX (device), nsp); - return NM_ACT_STAGE_RETURN_SUCCESS; + if (!strcmp (path, nm_wimax_nsp_get_dbus_path (candidate))) { + nsp = candidate; + break; } } - err: - *reason = NM_DEVICE_STATE_REASON_NONE; - return NM_ACT_STAGE_RETURN_FAILURE; + /* Couldn't find the NSP for some reason */ + if (nsp == NULL) + return NM_ACT_STAGE_RETURN_FAILURE; + + set_current_nsp (NM_DEVICE_WIMAX (device), nsp); + + /* If the device is scanning, it won't connect, so we have to wait until + * it's not scanning to proceed to stage 2. + */ + if (priv->status == WIMAX_API_DEVICE_STATUS_Scanning) + return NM_ACT_STAGE_RETURN_POSTPONE; + + return NM_ACT_STAGE_RETURN_SUCCESS; } static NMActStageReturn @@ -857,11 +873,11 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, if (priv->current_nsp) nsp_name = nm_wimax_nsp_get_name (priv->current_nsp); - nm_log_dbg (LOGD_WIMAX, "(%s): wimax state change %s -> %s (reason %d)", - iface, - iwmx_sdk_dev_status_to_str (old_status), - iwmx_sdk_dev_status_to_str (new_status), - reason); + nm_log_info (LOGD_WIMAX, "(%s): wimax state change %s -> %s (reason %d)", + iface, + iwmx_sdk_dev_status_to_str (old_status), + iwmx_sdk_dev_status_to_str (new_status), + reason); switch (new_status) { case WIMAX_API_DEVICE_STATUS_UnInitialized: @@ -915,6 +931,18 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, NM_DEVICE_STATE_REASON_CONFIG_FAILED); return; } + + /* If stage2 was postponed because the device was scanning or something, + * then check if we need to move to stage2 now that the device might be + * ready. + */ + if (state == NM_DEVICE_STATE_PREPARE) { + if ( new_status == WIMAX_API_DEVICE_STATUS_Ready + || new_status == WIMAX_API_DEVICE_STATUS_Connecting) { + nm_device_activate_schedule_stage2_device_config (NM_DEVICE (self)); + return; + } + } } /* Handle disconnection */ @@ -1252,15 +1280,17 @@ device_state_changed (NMDevice *device, if (new_state < NM_DEVICE_STATE_DISCONNECTED) remove_all_nsps (self); - /* Request initial NSP list */ + /* Request initial NSP list when device is first started */ if ( new_state == NM_DEVICE_STATE_DISCONNECTED && old_state < NM_DEVICE_STATE_DISCONNECTED) { if (priv->sdk) iwmx_sdk_get_networks (priv->sdk); } - if (new_state == NM_DEVICE_STATE_FAILED || new_state <= NM_DEVICE_STATE_DISCONNECTED) + if (new_state == NM_DEVICE_STATE_FAILED || new_state <= NM_DEVICE_STATE_DISCONNECTED) { + set_current_nsp (self, NULL); clear_activation_timeout (self); + } if (new_state == NM_DEVICE_STATE_ACTIVATED) { /* poll link quality and BSID */ diff --git a/test/nm-tool.c b/test/nm-tool.c index a4b80df09..ffe70af9f 100644 --- a/test/nm-tool.c +++ b/test/nm-tool.c @@ -323,50 +323,31 @@ get_connection_for_active (NMActiveConnection *active) return (NMConnection *) g_hash_table_lookup (connections, path); } -struct cb_info { - NMClient *client; - const GPtrArray *active; -}; - static void detail_device (gpointer data, gpointer user_data) { NMDevice *device = NM_DEVICE (data); - struct cb_info *info = user_data; char *tmp; NMDeviceState state; guint32 caps; guint32 speed; const GArray *array; - int j; gboolean is_default = FALSE; const char *id = NULL; + NMActiveConnection *active; - state = nm_device_get_state (device); - - for (j = 0; info->active && (j < info->active->len); j++) { - NMActiveConnection *candidate = g_ptr_array_index (info->active, j); - const GPtrArray *devices = nm_active_connection_get_devices (candidate); - NMDevice *candidate_dev; + active = nm_device_get_active_connection (device); + if (active) { NMConnection *connection; NMSettingConnection *s_con; - if (!devices || !devices->len) - continue; - candidate_dev = g_ptr_array_index (devices, 0); - - if (candidate_dev == device) { - if (nm_active_connection_get_default (candidate)) - is_default = TRUE; + is_default = nm_active_connection_get_default (active); - connection = get_connection_for_active (candidate); - if (!connection) - break; - - s_con = (NMSettingConnection *) nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION); + connection = get_connection_for_active (active); + if (connection) { + s_con = nm_connection_get_setting_connection (connection); if (s_con) id = nm_setting_connection_get_id (s_con); - break; } } @@ -396,6 +377,7 @@ detail_device (gpointer data, gpointer user_data) print_string ("Driver", nm_device_get_driver (device) ? nm_device_get_driver (device) : "(unknown)"); + state = nm_device_get_state (device); print_string ("State", get_dev_state_string (state)); if (is_default) @@ -787,7 +769,7 @@ main (int argc, char *argv[]) { NMClient *client; const GPtrArray *devices; - struct cb_info info; + const GPtrArray *active; g_type_init (); @@ -806,16 +788,13 @@ main (int argc, char *argv[]) if (!get_all_connections ()) exit (1); - info.client = client; - info.active = nm_client_get_active_connections (client); - - devices = nm_client_get_devices (client); if (devices) - g_ptr_array_foreach ((GPtrArray *) devices, detail_device, &info); + g_ptr_array_foreach ((GPtrArray *) devices, detail_device, NULL); - if (info.active) - g_ptr_array_foreach ((GPtrArray *) info.active, detail_vpn, &info); + active = nm_client_get_active_connections (client); + if (active) + g_ptr_array_foreach ((GPtrArray *) active, detail_vpn, NULL); g_object_unref (client); g_hash_table_unref (connections); diff --git a/tools/check-exports.sh b/tools/check-exports.sh index 1415e1448..3c75ef024 100755 --- a/tools/check-exports.sh +++ b/tools/check-exports.sh @@ -8,7 +8,7 @@ so=$1 def=$2 # Have to prefix with a tab and suffix with a ';' to match .ver file format -get_syms='( objdump -t "$so" | grep "^[^ ]* [^l.*]*[.]"; objdump -t "$so" | grep "[.]hidden.*"; ) | sed "s/.* //" | sed "s/^/\t/" | sed "s/$/;/"' +get_syms='( objdump -t "$so" | grep "^[^ ]* [^l.*]*[.]"; objdump -t "$so" | grep "^[^ ]* l[^.*]*\.text[^_]*nm_" | grep -v "_init"; ) | sed "s/.* //" | sed "s/^/\t/" | sed "s/$/;/"' echo $so: checking exported symbols against $def |