diff options
203 files changed, 12584 insertions, 4862 deletions
diff --git a/Makefile.in b/Makefile.in index da04d938..35557071 100644 --- a/Makefile.in +++ b/Makefile.in @@ -235,8 +235,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/NEWS b/NEWS index b27a9b2e..63f39e01 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,122 @@ ============================================== +NetworkManager-0.9.2 +Overview of changes since NetworkManager-0.9.0 +============================================== + +* Support for libnl2 and libnl3 and various memory leak fixes +* Bug fixes for the ifnet config plugin +* Ensure IPv6 link-local DNS servers work correctly in the dnsmasq DNS plugin +* Add ability for nmcli to delete connections +* Fix setup of connection sharing with newer iptables versions +* Ensure WiMAX activation emits correct signals (fixes initial signal strength) +* Fix an issue with duplicated keyfile connections +* Ensure the 'novj' options is passed through to pppd +* Store timestamps for VPN connections too +* Fix a crash when deleting default wired connections +* Fix a security issue in the ifcfg-rh plugin with newlines in file names +* Fix the "SpecificObject" property for active VPN connection objects +* Improve handling of rfkill on some platforms +* Spaces no longer used in ifcfg config file names +* IPv6 RAs are now accepted when forwarding is configured +* dnsmasq local caching nameserver plugin cache size bumped to 400 entries (from 150) +* Fix handling of SSIDs in the keyfile plugin +* Fix some GObject Introspection annotations in libnm-glib and libnm-util +* Fix setting hostnames from DHCP + + +============================================== +NetworkManager-0.9.0 +Overview of changes since NetworkManager-0.8.x +============================================== + +This is a new stable release of NetworkManager. Notable changes include: + +* All connections and configuration now managed by NetworkManager +* Secrets for any connection can now be stored in user session or by NetworkManager +* All secrets can now be requested each time +* Fast User Switching support +* Support for WiMAX mobile broadband +* Connections can now be restricted to one or more users +* Support for 802.1X certificate subject matching for greater security +* Requires wpa_supplicant 0.7 or later +* Better support for AP roaming using nl80211 and background scanning +* Simplified D-Bus API for easier client usage +* Support for GObject Introspection in libnm-glib and libnm-util + + +============================================== +NetworkManager-0.8.6 +Overview of changes since NetworkManager-0.8.4 +============================================== + +This is a new stable release of NetworkManager. Notable changes include: + +* Fix handling of WINS server address in libnm-glib +* Fix checks for s390 CTC device types +* Fix export of nm_device_get_ip_iface() in libnm-glib +* Fix export of IPv6 DNS GValue conversion functions in libnm-glib +* Recognize and manage platform 'gadget' devices +* Send only "short" hostname, not FQDN, to DHCP servers +* Allow "_" as a valid character for GSM APNs +* Handle shared connections in the ifnet plugin +* Fix Ad-Hoc frequency selection for user-created Ad-Hoc networks +* Allow failed connections to be retried when Ethernet carrier bounces +* Allow usage of paths for certificates and keys in the keyfile plugin +* Fix crash requesting system VPN secrets +* Add ability to blacklist certain MAC addresses for wired & wifi connections +* Ensure users are authorized to share wifi networks (CVE-2011-2176) + + +============================================== +NetworkManager-0.8.4 +Overview of changes since NetworkManager-0.8.2 +============================================== + +This is a new stable release of NetworkManager. Notable changes include: + +* Preliminary support for Exherbo Linux +* Logging fixes to suppress unnecessary messages +* Ensure removed devices are cleaned up +* Fix potential 64-bit crash updating timestamps +* IPv6 setup, routing, and compliance fixes +* Fix WWAN enable/disable handling +* Handle reverse DNS lookups with local caching nameserver configurations +* Ensure usable DNS configuration is written when NetworkManager quits +* No longer updates /etc/hosts when hostname changes +* Request WPAD option from DHCP servers +* Allow use of paths for certificates and keys in connection keyfiles +* Allow operation without any DHCP client installed +* Fix operation with newer versions of dnsmasq +* nmcli support for WWAN connections +* Persistent hostname sent to DHCP servers by default +* Allow disabing PPP support at build time +* Red Hat/Fedora ifcfg plugin fixes for handling S390 CTC device configuration +* Red Hat/Fedora ifcfg plugin fixes for handling IPADDR config items +* Shutdown crash fixes +* Memory leak fixes +* Documentation fixes and updates +* and much more... + +============================================== +NetworkManager-0.8.2 +Overview of changes since NetworkManager-0.8.1 +============================================== + +This is a new stable release of NetworkManager. Notable changes include: + +* Native local caching nameserver support using dnsmasq +* Automatically detect addition and removal of new VPN plugins +* Support for handling suspend/resume signals from UPower +* Ensure users are allowed to enable/disable WiFi and networking +* Ensure WiFi enable state is perserved across reboot and suspend +* Better handling of /etc/hosts and preservation of custom hostnames +* Support for the systemd session management service +* Better handling of 'keyfile' system connection errors +* Support for S390 network devices +* and much more... + + +============================================== NetworkManager-0.7.0 Overview of changes since NetworkManager-0.6.6 ============================================== diff --git a/TODO b/TODO index 369be1e5..3b8438ac 100644 --- a/TODO +++ b/TODO @@ -495,3 +495,123 @@ a bridge or bond and shouldn't be automatically started by NetworkManager or displayed as separate connections in the user interface. TO BE CONTINUED + + +* Better Tablet/Mobile Behavior + +There are a few components to this: + +1) kernel driver and hardware capabilities: most mobile devices use periodic +background scanning to quickly determine whether a known SSID is available and +notify the connection manager to connect to it. This typically requires special +capabilities and good powersave/sleep support from the WiFi kernel driver. +There is a background scanning API in nl80211, but we need to determine how many +SSIDs each driver allows for background scanning, and based on that number, give +the driver the most recent N SSIDs. We still need to periodically wake the +device up and do a full scan just in case the user is near a known SSID that was +not in the N top recently used networks. This is also beneficial to normal +desktop use-cases. + +wpa_supplicant doesn't currently provide an explicit interface for sending SSIDs +to the driver for background scanning, but could simply send a list using +configured networks. However, NM currently does not send *all* configured +connections' SSIDs to the supplicant, so that's something we should do first +to optimize connection times. To do this, NM would need to order all networks +using the NM timestamp and convert that into a supplicant priority number, which +would need to be adjusted periodically when the timestamp was updated. This +would involve tracking each network (exposed by the supplicant as a D-Bus +object) and making sure they were added, deleted, and updated when the backing +NMConnection objects changed. One complication is that the supplicant +requires secrets for various network types when the network is added via D-Bus, +and NetworkManager might not have those secrets yet. We may need to modify +the supplicant allow for *all* secrets (PSKs, WEP keys, etc) to be requested +on-demand, not just EAP secrets like 802.1x passwords. We then need to fix +up the supplicant's D-Bus interface to actually send requests for secrets out +over D-Bus (like wpa_supplicant_eap_param_needed() does for the socket-based +control interface) and to handle the resulting reply from a D-Bus client like +wpa_supplicant_ctrl_iface_ctrl_rsp() does. + +With the secrets request stuff and priority handling in place, wpa_supplicant +would control network selection and roaming (based on the priorities NM gave it +of course) instead of NetworkManager itself, and hopefully lead to a faster WiFi +connection process. + +2) single-device-at-a-time with overlapping connections: this is also probably +the best route to go for desktop use-cases as well. Instead of bringing all +available connections up, only bring up the "best" connection at any given +time based on the current priority list (which is rougly Ethernet > WiFi > +3G/Bluetooth/WiMAX). However, to ensure seamless connectivity, when one +connection begins to degrade, the next-best connection should be started before +the current one is terminated, such that there is a small amount of overlap. +Consequently the same behavior should be used when a better connection becomes +available. This behavior should be suspended when special connections like +Internet Connection Sharing ones are started, where clearly the priorities +are different (ie, for Mobile Hotspot 3G > WiFi). + + +* IP over Infiniband (IPoIB) + +These interfaces are similar to Ethernet interfaces with a few distinct +differences: + + 1) they have 64-bit MAC addresses (GUIDs in Infiniband parlance) + 2) DHCP clients need to be modified to handle IPoIB + 3) they have a different ARP type and different L2 options + +By default the interfaces do not have IP capability, but they gain that +capability when certain kernel modules (ib_ipoib.ko) are loaded, which causes +the IP-capable interface is created. The IP-capable interfaces apparently have +ARPHRD_INFINIBAND set, which is likely what NM should use to identify them. + +One outstanding question is whether NM should (a) detect all Infiniband +interfaces and load ib_ipoib.ko only when there is a defined NMConnection for +an Infiniband interface, or (b) whether NM should automatically load ib_ipoib.ko +for every Infiniband interface, or (c) whether NM should only manage Infiniband +interfaces that already have associated IP-capable interfaces (ie, something +else is responsible for loading ib_ipoib.ko). Depending on our implementation, +(a) might not be possible, because if IPoIB connections are treated similar to +plain Ethernet connections, we may not have any information about whether a +specific NMConnection is Infiniband other than the MAC address. + +It turns out that on some distros other components (like system services) may +load ib_ipoib.ko for us. For exmaple, the 'rdma' package on Fedora/RHEL systems +contains /etc/rc.d/init.d/rdma which uses values in /etc/rdma/rdma.conf to load +ib_ipoib.ko at system startup if the user has requested it via IPOIB_LOAD=yes. +For the time being, if the some other component of the system loads IP for us, +NetworkManager should probably still recognize the Infiniband interface, but +leave it in unmanaged mode if there is no available IPoIB interface associated +with the Infiniband one. i.e. for now, NM should not automatically load +ib_ipoib.ko. + +The second question is whether to fold IPoIB support into the NMDeviceEthernet +class as was done for s390 network interfaces, or whether to create a subclass +of NMDevice: + +1) extend NMDeviceEthernet: this would involve loosening the assumption that +hardware addresses (the 'hw-address'/'perm-hw-address' properties of +NMDeviceEthernet and the 'mac-address'/'cloned-mac-address' properties of +NMSettingWired) are 48 bits wide and instead can be either 48 or 64 bits wide. + +2) create a new NMDevice subclass for Infiniband devices tailored to Infiniband +specific behavior and attributes. This would be a lot more code since we'd have +to duplicate much of what NMDeviceEthernet already does, plus add the +Infiniband device class to libnm-glib. This also would be the least invasive +from an API standpoint since the existing API would be unchanged, except for +the addition of a new value in the NMDeviceType enum, which clients should +ignore if they don't understand it. (Need to coordinate additions to this enum +between 0.8.x and 0.9.x since 0.9.x has more device types, but we want to make +sure new device types get the same number for both branches). + +For Infiniband specific options we could either fold them into NMSettingEthernet +or create a new NMSettingInfiniband class. Current Infiniband specific options +are partitions/P_Keys, datagram vs. connected mode, and MTU. The default MTU +varies with the 'mode'; for datagram it is currently 2044, while for connected +mode it is currently 65520. Given that we only have 2 IB-specific options +we should probably just fold them into NMSettingEthernet similar to what was +done for s390-specific options. + +For some general (and also Red Hat/Fedora specific) information see: + +http://tools.ietf.org/html/rfc4392 +http://rhkernel.org/#RHEL6+2.6.32-71.18.2.el6/Documentation/infiniband/ipoib.txt + diff --git a/callouts/Makefile.in b/callouts/Makefile.in index 763d7fb2..a064732c 100644 --- a/callouts/Makefile.in +++ b/callouts/Makefile.in @@ -279,8 +279,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/callouts/tests/Makefile.in b/callouts/tests/Makefile.in index 4c8fa909..b4b7807e 100644 --- a/callouts/tests/Makefile.in +++ b/callouts/tests/Makefile.in @@ -188,8 +188,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/cli/Makefile.in b/cli/Makefile.in index bd3d8737..b3b3fc5a 100644 --- a/cli/Makefile.in +++ b/cli/Makefile.in @@ -192,8 +192,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/cli/src/Makefile.in b/cli/src/Makefile.in index 33aa3f2b..11c1d50c 100644 --- a/cli/src/Makefile.in +++ b/cli/src/Makefile.in @@ -189,8 +189,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/cli/src/connections.c b/cli/src/connections.c index 5febc58a..7d4fffc0 100644 --- a/cli/src/connections.c +++ b/cli/src/connections.c @@ -141,39 +141,26 @@ typedef struct { char **argv; } ArgsInfo; -extern GMainLoop *loop; /* glib main loop variable */ +/* glib main loop variable - defined in nmcli.c */ +extern GMainLoop *loop; static ArgsInfo args_info; -/* static function prototypes */ -static void usage (void); -static void quit (void); -static void show_connection (NMConnection *data, gpointer user_data); -static NMConnection *find_connection (GSList *list, const char *filter_type, const char *filter_val); -static gboolean find_device_for_connection (NmCli *nmc, NMConnection *connection, const char *iface, const char *ap, - const char *nsp, NMDevice **device, const char **spec_object, GError **error); -static const char *active_connection_state_to_string (NMActiveConnectionState state); -static void active_connection_state_cb (NMActiveConnection *active, GParamSpec *pspec, gpointer user_data); -static void get_connections_cb (NMRemoteSettings *settings, gpointer user_data); -static NMCResultCode do_connections_list (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_connections_status (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_connection_up (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_connection_down (NmCli *nmc, int argc, char **argv); - static void usage (void) { fprintf (stderr, _("Usage: nmcli con { COMMAND | help }\n" - " COMMAND := { list | status | up | down }\n\n" + " COMMAND := { list | status | up | down | delete }\n\n" " list [id <id> | uuid <id>]\n" " status\n" #if WITH_WIMAX - " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--nowait] [--timeout <timeout>]\n" + " up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--nowait] [--timeout <timeout>]\n" #else - " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout <timeout>]\n" + " up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout <timeout>]\n" #endif - " down id <id> | uuid <id>\n")); + " down id <id> | uuid <id>\n" + " delete id <id> | uuid <id>\n")); } /* The real commands that do something - i.e. not 'help', etc. */ @@ -182,6 +169,7 @@ static const char *real_con_commands[] = { "status", "up", "down", + "delete", NULL }; @@ -1073,7 +1061,7 @@ find_device_for_connection (NmCli *nmc, g_assert (s_con); con_type = nm_setting_connection_get_connection_type (s_con); - if (strcmp (con_type, "vpn") == 0) { + if (strcmp (con_type, NM_SETTING_VPN_SETTING_NAME) == 0) { /* VPN connections */ NMActiveConnection *active = NULL; if (iface) { @@ -1116,22 +1104,22 @@ find_device_for_connection (NmCli *nmc, } } - if (found_device && ap && !strcmp (con_type, "802-11-wireless") && NM_IS_DEVICE_WIFI (dev)) { - char *hwaddr_up = g_ascii_strup (ap, -1); + if (found_device && ap && !strcmp (con_type, NM_SETTING_WIRELESS_SETTING_NAME) && NM_IS_DEVICE_WIFI (dev)) { + char *bssid_up = g_ascii_strup (ap, -1); const GPtrArray *aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev)); found_device = NULL; /* Mark as not found; set to the device again later, only if AP matches */ for (j = 0; aps && (j < aps->len); j++) { NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j); - const char *candidate_hwaddr = nm_access_point_get_hw_address (candidate_ap); + const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap); - if (!strcmp (hwaddr_up, candidate_hwaddr)) { + if (!strcmp (bssid_up, candidate_bssid)) { found_device = dev; *spec_object = nm_object_get_path (NM_OBJECT (candidate_ap)); break; } } - g_free (hwaddr_up); + g_free (bssid_up); } #if WITH_WIMAX @@ -1576,6 +1564,66 @@ error: } static NMCResultCode +do_connection_delete (NmCli *nmc, int argc, char **argv) +{ + NMConnection *connection = NULL; + const char *selector = NULL; + const char *id = NULL; + GError *error = NULL; + + nmc->should_wait = FALSE; + + while (argc > 0) { + if (strcmp (*argv, "id") == 0 || strcmp (*argv, "uuid") == 0) { + selector = *argv; + if (next_arg (&argc, &argv) != 0) { + g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto error; + } + id = *argv; + } + else + fprintf (stderr, _("Unknown parameter: %s\n"), *argv); + + argc--; + argv++; + } + + if (!id) { + g_string_printf (nmc->return_text, _("Error: id or uuid has to be specified.")); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto error; + } + + if (!nmc_is_nm_running (nmc, &error)) { + if (error) { + g_string_printf (nmc->return_text, _("Error: Can't find out if NetworkManager is running: %s."), error->message); + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + g_error_free (error); + } else { + g_string_printf (nmc->return_text, _("Error: NetworkManager is not running.")); + nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING; + } + goto error; + } + + connection = find_connection (nmc->system_connections, selector, id); + + if (!connection) { + g_string_printf (nmc->return_text, _("Error: Unknown connection: %s."), id); + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + goto error; + } + + /* Delete the connection */ + nm_remote_connection_delete (NM_REMOTE_CONNECTION (connection), NULL, NULL); + +error: + return nmc->return_value; +} + +static NMCResultCode parse_cmd (NmCli *nmc, int argc, char **argv) { GError *error = NULL; @@ -1600,6 +1648,9 @@ parse_cmd (NmCli *nmc, int argc, char **argv) else if (matches(*argv, "down") == 0) { nmc->return_value = do_connection_down (nmc, argc-1, argv+1); } + else if (matches(*argv, "delete") == 0) { + nmc->return_value = do_connection_delete (nmc, argc-1, argv+1); + } else if (matches (*argv, "help") == 0) { usage (); nmc->should_wait = FALSE; @@ -1672,6 +1723,7 @@ do_connections (NmCli *nmc, int argc, char **argv) if (error || !bus) { g_string_printf (nmc->return_text, _("Error: could not connect to D-Bus.")); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + nmc->should_wait = FALSE; return nmc->return_value; } @@ -1679,8 +1731,8 @@ do_connections (NmCli *nmc, int argc, char **argv) if (!(nmc->system_settings = nm_remote_settings_new (bus))) { g_string_printf (nmc->return_text, _("Error: Could not get system settings.")); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + nmc->should_wait = FALSE; return nmc->return_value; - } /* find out whether settings service is running */ @@ -1689,6 +1741,7 @@ do_connections (NmCli *nmc, int argc, char **argv) if (!nmc->system_settings_running) { g_string_printf (nmc->return_text, _("Error: Can't obtain connections: settings service is not running.")); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + nmc->should_wait = FALSE; return nmc->return_value; } diff --git a/cli/src/devices.c b/cli/src/devices.c index c6228ba1..500d2341 100644 --- a/cli/src/devices.c +++ b/cli/src/devices.c @@ -236,18 +236,8 @@ static NmcOutputField nmc_fields_dev_wimax_list[] = { #endif -/* static function prototypes */ -static void usage (void); -static const char *device_state_to_string (NMDeviceState state); -static NMCResultCode do_devices_status (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_devices_list (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_device_disconnect (NmCli *nmc, int argc, char **argv); -static NMCResultCode do_device_wifi (NmCli *nmc, int argc, char **argv); -#if WITH_WIMAX -static NMCResultCode do_device_wimax (NmCli *nmc, int argc, char **argv); -#endif - -extern GMainLoop *loop; /* glib main loop variable */ +/* glib main loop variable - defined in nmcli.c */ +extern GMainLoop *loop; static void usage (void) @@ -262,7 +252,7 @@ usage (void) " status\n" " list [iface <iface>]\n" " disconnect iface <iface> [--nowait] [--timeout <timeout>]\n" - " wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n" + " wifi [list [iface <iface>] [bssid <BSSID>]]\n" #if WITH_WIMAX " wimax [list [iface <iface>] [nsp <name>]]\n\n" #endif @@ -441,15 +431,15 @@ detail_access_point (gpointer data, gpointer user_data) NM80211ApSecurityFlags wpa_flags, rsn_flags; guint32 freq, bitrate; guint8 strength; - const GByteArray *ssid; - const char *hwaddr; + const GByteArray *ssid; + const char *bssid; NM80211Mode mode; char *freq_str, *ssid_str, *bitrate_str, *strength_str, *wpa_flags_str, *rsn_flags_str; GString *security_str; char *ap_name; if (info->active_bssid) { - const char *current_bssid = nm_access_point_get_hw_address (ap); + const char *current_bssid = nm_access_point_get_bssid (ap); if (current_bssid && !strcmp (current_bssid, info->active_bssid)) active = TRUE; } @@ -459,7 +449,7 @@ detail_access_point (gpointer data, gpointer user_data) wpa_flags = nm_access_point_get_wpa_flags (ap); rsn_flags = nm_access_point_get_rsn_flags (ap); ssid = nm_access_point_get_ssid (ap); - hwaddr = nm_access_point_get_hw_address (ap); + bssid = nm_access_point_get_bssid (ap); freq = nm_access_point_get_frequency (ap); mode = nm_access_point_get_mode (ap); bitrate = nm_access_point_get_max_bitrate (ap); @@ -497,7 +487,7 @@ detail_access_point (gpointer data, gpointer user_data) ap_name = g_strdup_printf ("AP%d", info->index++); /* AP */ info->nmc->allowed_fields[0].value = ap_name; info->nmc->allowed_fields[1].value = ssid_str; - info->nmc->allowed_fields[2].value = hwaddr; + info->nmc->allowed_fields[2].value = bssid; info->nmc->allowed_fields[3].value = mode == NM_802_11_MODE_ADHOC ? _("Ad-Hoc") : mode == NM_802_11_MODE_INFRA ? _("Infrastructure") : _("Unknown"); info->nmc->allowed_fields[4].value = freq_str; info->nmc->allowed_fields[5].value = bitrate_str; @@ -725,7 +715,7 @@ show_device_info (gpointer data, gpointer user_data) if (!strcasecmp (nmc_fields_dev_list_sections[section_idx].name, nmc_fields_dev_list_sections[3].name)) { if (state == NM_DEVICE_STATE_ACTIVATED) { active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device)); - active_bssid = active_ap ? nm_access_point_get_hw_address (active_ap) : NULL; + active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL; } nmc->allowed_fields = nmc_fields_dev_wifi_list; @@ -1275,7 +1265,7 @@ show_acces_point_info (NMDevice *device, NmCli *nmc) if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) { active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device)); - active_bssid = active_ap ? nm_access_point_get_hw_address (active_ap) : NULL; + active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL; } info = g_malloc0 (sizeof (APInfo)); @@ -1296,7 +1286,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) NMDevice *device = NULL; NMAccessPoint *ap = NULL; const char *iface = NULL; - const char *hwaddr_user = NULL; + const char *bssid_user = NULL; const GPtrArray *devices; const GPtrArray *aps; APInfo *info; @@ -1316,13 +1306,14 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) goto error; } iface = *argv; - } else if (strcmp (*argv, "hwaddr") == 0) { + } else if (strcmp (*argv, "bssid") == 0 || strcmp (*argv, "hwaddr") == 0) { + /* hwaddr is deprecated and will be removed later */ if (next_arg (&argc, &argv) != 0) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *argv); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; goto error; } - hwaddr_user = *argv; + bssid_user = *argv; } else { fprintf (stderr, _("Unknown parameter: %s\n"), *argv); } @@ -1392,21 +1383,21 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) } if (NM_IS_DEVICE_WIFI (device)) { - if (hwaddr_user) { + if (bssid_user) { /* Specific AP requested - list only that */ aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device)); for (j = 0; aps && (j < aps->len); j++) { - char *hwaddr_up; + char *bssid_up; NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j); - const char *candidate_hwaddr = nm_access_point_get_hw_address (candidate_ap); + const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap); - hwaddr_up = g_ascii_strup (hwaddr_user, -1); - if (!strcmp (hwaddr_up, candidate_hwaddr)) + bssid_up = g_ascii_strup (bssid_user, -1); + if (!strcmp (bssid_up, candidate_bssid)) ap = candidate_ap; - g_free (hwaddr_up); + g_free (bssid_up); } if (!ap) { - g_string_printf (nmc->return_text, _("Error: Access point with hwaddr '%s' not found."), hwaddr_user); + g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } @@ -1430,7 +1421,7 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) } else { /* List APs for all devices */ print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - if (hwaddr_user) { + if (bssid_user) { /* Specific AP requested - list only that */ for (i = 0; devices && (i < devices->len); i++) { NMDevice *dev = g_ptr_array_index (devices, i); @@ -1440,12 +1431,12 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev)); for (j = 0; aps && (j < aps->len); j++) { - char *hwaddr_up; + char *bssid_up; NMAccessPoint *candidate_ap = g_ptr_array_index (aps, j); - const char *candidate_hwaddr = nm_access_point_get_hw_address (candidate_ap); + const char *candidate_bssid = nm_access_point_get_bssid (candidate_ap); - hwaddr_up = g_ascii_strup (hwaddr_user, -1); - if (!strcmp (hwaddr_up, candidate_hwaddr)) { + bssid_up = g_ascii_strup (bssid_user, -1); + if (!strcmp (bssid_up, candidate_bssid)) { ap = candidate_ap; info = g_malloc0 (sizeof (APInfo)); @@ -1456,11 +1447,11 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) detail_access_point (ap, info); g_free (info); } - g_free (hwaddr_up); + g_free (bssid_up); } } if (!ap) { - g_string_printf (nmc->return_text, _("Error: Access point with hwaddr '%s' not found."), hwaddr_user); + g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } @@ -1667,7 +1658,7 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) } } if (!nsp) { - g_string_printf (nmc->return_text, _("Error: Access point with hwaddr '%s' not found."), nsp_user); + g_string_printf (nmc->return_text, _("Error: Access point with nsp '%s' not found."), nsp_user); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } diff --git a/cli/src/network-manager.c b/cli/src/network-manager.c index ac9a3841..c23c9fae 100644 --- a/cli/src/network-manager.c +++ b/cli/src/network-manager.c @@ -57,16 +57,9 @@ static NmcOutputField nmc_fields_nm_status[] = { #define NMC_FIELDS_NM_WWAN "WWAN" #define NMC_FIELDS_NM_WIMAX "WIMAX" - +/* glib main loop variable - defined in nmcli.c */ extern GMainLoop *loop; -/* static function prototypes */ -static void usage (void); -static void quit (void); -static const char *nm_state_to_string (NMState state); -static NMCResultCode show_nm_status (NmCli *nmc); - - static void usage (void) { diff --git a/cli/src/settings.c b/cli/src/settings.c index c2385370..ccbe9589 100644 --- a/cli/src/settings.c +++ b/cli/src/settings.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. * - * (C) Copyright 2010 Red Hat, Inc. + * (C) Copyright 2010 - 2011 Red Hat, Inc. */ #include "config.h" @@ -39,6 +39,7 @@ static NmcOutputField nmc_fields_setting_connection[] = { SETTING_FIELD (NM_SETTING_CONNECTION_AUTOCONNECT, 13), /* 4 */ SETTING_FIELD (NM_SETTING_CONNECTION_TIMESTAMP, 10), /* 5 */ SETTING_FIELD (NM_SETTING_CONNECTION_READ_ONLY, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_CONNECTION_PERMISSIONS, 30), /* 7 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_CONNECTION_ALL "name"","\ @@ -47,19 +48,24 @@ static NmcOutputField nmc_fields_setting_connection[] = { NM_SETTING_CONNECTION_TYPE","\ NM_SETTING_CONNECTION_AUTOCONNECT","\ NM_SETTING_CONNECTION_TIMESTAMP","\ - NM_SETTING_CONNECTION_READ_ONLY + NM_SETTING_CONNECTION_READ_ONLY","\ + NM_SETTING_CONNECTION_PERMISSIONS #define NMC_FIELDS_SETTING_CONNECTION_COMMON NMC_FIELDS_SETTING_CONNECTION_ALL /* Available fields for NM_SETTING_WIRED_SETTING_NAME */ static NmcOutputField nmc_fields_setting_wired[] = { - SETTING_FIELD ("name", 17), /* 0 */ - SETTING_FIELD (NM_SETTING_WIRED_PORT, 8), /* 1 */ - SETTING_FIELD (NM_SETTING_WIRED_SPEED, 10), /* 2 */ - SETTING_FIELD (NM_SETTING_WIRED_DUPLEX, 10), /* 3 */ - SETTING_FIELD (NM_SETTING_WIRED_AUTO_NEGOTIATE, 15), /* 4 */ - SETTING_FIELD (NM_SETTING_WIRED_MAC_ADDRESS, 19), /* 5 */ - SETTING_FIELD (NM_SETTING_WIRED_CLONED_MAC_ADDRESS, 19), /* 6 */ - SETTING_FIELD (NM_SETTING_WIRED_MTU, 6), /* 7 */ + SETTING_FIELD ("name", 17), /* 0 */ + SETTING_FIELD (NM_SETTING_WIRED_PORT, 8), /* 1 */ + SETTING_FIELD (NM_SETTING_WIRED_SPEED, 10), /* 2 */ + SETTING_FIELD (NM_SETTING_WIRED_DUPLEX, 10), /* 3 */ + SETTING_FIELD (NM_SETTING_WIRED_AUTO_NEGOTIATE, 15), /* 4 */ + SETTING_FIELD (NM_SETTING_WIRED_MAC_ADDRESS, 19), /* 5 */ + SETTING_FIELD (NM_SETTING_WIRED_CLONED_MAC_ADDRESS, 19), /* 6 */ + SETTING_FIELD (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, 39), /* 7 */ + SETTING_FIELD (NM_SETTING_WIRED_MTU, 6), /* 8 */ + SETTING_FIELD (NM_SETTING_WIRED_S390_SUBCHANNELS, 20), /* 9 */ + SETTING_FIELD (NM_SETTING_WIRED_S390_NETTYPE, 15), /* 10 */ + SETTING_FIELD (NM_SETTING_WIRED_S390_OPTIONS, 20), /* 11 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_WIRED_ALL "name"","\ @@ -69,7 +75,11 @@ static NmcOutputField nmc_fields_setting_wired[] = { NM_SETTING_WIRED_AUTO_NEGOTIATE","\ NM_SETTING_WIRED_MAC_ADDRESS","\ NM_SETTING_WIRED_CLONED_MAC_ADDRESS","\ - NM_SETTING_WIRED_MTU + NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST","\ + NM_SETTING_WIRED_MTU","\ + NM_SETTING_WIRED_S390_SUBCHANNELS","\ + NM_SETTING_WIRED_S390_NETTYPE","\ + NM_SETTING_WIRED_S390_OPTIONS #define NMC_FIELDS_SETTING_WIRED_COMMON NMC_FIELDS_SETTING_WIRED_ALL /* Available fields for NM_SETTING_802_1X_SETTING_NAME */ @@ -80,22 +90,26 @@ static NmcOutputField nmc_fields_setting_8021X[] = { SETTING_FIELD (NM_SETTING_802_1X_ANONYMOUS_IDENTITY, 15), /* 3 */ SETTING_FIELD (NM_SETTING_802_1X_CA_CERT, 10), /* 4 */ SETTING_FIELD (NM_SETTING_802_1X_CA_PATH, 10), /* 5 */ - SETTING_FIELD (NM_SETTING_802_1X_CLIENT_CERT, 10), /* 6 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPVER, 10), /* 7 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPLABEL, 10), /* 8 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, 10), /* 9 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTH, 10), /* 10 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTHEAP, 10), /* 11 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_CERT, 20), /* 12 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_PATH, 20), /* 13 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, 20), /* 14 */ - SETTING_FIELD (NM_SETTING_802_1X_PASSWORD, 10), /* 15 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY, 15), /* 16 */ - SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, 20), /* 17 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, 20), /* 18 */ - SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, 20), /* 19 */ - SETTING_FIELD (NM_SETTING_802_1X_PIN, 8), /* 20 */ - SETTING_FIELD (NM_SETTING_802_1X_SYSTEM_CA_CERTS, 17), /* 21 */ + SETTING_FIELD (NM_SETTING_802_1X_SUBJECT_MATCH, 10), /* 6 */ + SETTING_FIELD (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, 10), /* 7 */ + SETTING_FIELD (NM_SETTING_802_1X_CLIENT_CERT, 10), /* 8 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPVER, 10), /* 9 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_PEAPLABEL, 10), /* 10 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE1_FAST_PROVISIONING, 10), /* 11 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTH, 10), /* 12 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_AUTHEAP, 10), /* 13 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_CERT, 20), /* 14 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CA_PATH, 20), /* 15 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH, 10), /* 16 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, 10), /* 17 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_CLIENT_CERT, 20), /* 18 */ + SETTING_FIELD (NM_SETTING_802_1X_PASSWORD, 10), /* 19 */ + SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY, 15), /* 20 */ + SETTING_FIELD (NM_SETTING_802_1X_PRIVATE_KEY_PASSWORD, 20), /* 21 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY, 20), /* 22 */ + SETTING_FIELD (NM_SETTING_802_1X_PHASE2_PRIVATE_KEY_PASSWORD, 20), /* 23 */ + SETTING_FIELD (NM_SETTING_802_1X_PIN, 8), /* 24 */ + SETTING_FIELD (NM_SETTING_802_1X_SYSTEM_CA_CERTS, 17), /* 25 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_802_1X_ALL "name"","\ @@ -104,6 +118,8 @@ static NmcOutputField nmc_fields_setting_8021X[] = { NM_SETTING_802_1X_ANONYMOUS_IDENTITY","\ NM_SETTING_802_1X_CA_CERT","\ NM_SETTING_802_1X_CA_PATH","\ + NM_SETTING_802_1X_SUBJECT_MATCH","\ + NM_SETTING_802_1X_ALTSUBJECT_MATCHES","\ NM_SETTING_802_1X_CLIENT_CERT","\ NM_SETTING_802_1X_PHASE1_PEAPVER","\ NM_SETTING_802_1X_PHASE1_PEAPLABEL","\ @@ -112,6 +128,8 @@ static NmcOutputField nmc_fields_setting_8021X[] = { NM_SETTING_802_1X_PHASE2_AUTHEAP","\ NM_SETTING_802_1X_PHASE2_CA_CERT","\ NM_SETTING_802_1X_PHASE2_CA_PATH","\ + NM_SETTING_802_1X_PHASE2_SUBJECT_MATCH","\ + NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES","\ NM_SETTING_802_1X_PHASE2_CLIENT_CERT","\ NM_SETTING_802_1X_PASSWORD","\ NM_SETTING_802_1X_PRIVATE_KEY","\ @@ -134,9 +152,10 @@ static NmcOutputField nmc_fields_setting_wireless[] = { SETTING_FIELD (NM_SETTING_WIRELESS_TX_POWER, 10), /* 7 */ SETTING_FIELD (NM_SETTING_WIRELESS_MAC_ADDRESS, 19), /* 8 */ SETTING_FIELD (NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS, 19), /* 9 */ - SETTING_FIELD (NM_SETTING_WIRELESS_MTU, 6), /* 10 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SEEN_BSSIDS, 35), /* 11 */ - SETTING_FIELD (NM_SETTING_WIRELESS_SEC, 10), /* 12 */ + SETTING_FIELD (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, 39), /* 10 */ + SETTING_FIELD (NM_SETTING_WIRELESS_MTU, 6), /* 11 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SEEN_BSSIDS, 35), /* 12 */ + SETTING_FIELD (NM_SETTING_WIRELESS_SEC, 10), /* 13 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_WIRELESS_ALL "name"","\ @@ -149,6 +168,7 @@ static NmcOutputField nmc_fields_setting_wireless[] = { NM_SETTING_WIRELESS_TX_POWER","\ NM_SETTING_WIRELESS_MAC_ADDRESS","\ NM_SETTING_WIRELESS_CLONED_MAC_ADDRESS","\ + NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST","\ NM_SETTING_WIRELESS_MTU","\ NM_SETTING_WIRELESS_SEEN_BSSIDS","\ NM_SETTING_WIRELESS_SEC @@ -204,6 +224,7 @@ static NmcOutputField nmc_fields_setting_ip4_config[] = { SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME, 19), /* 9 */ SETTING_FIELD (NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME, 14), /* 10 */ SETTING_FIELD (NM_SETTING_IP4_CONFIG_NEVER_DEFAULT, 15), /* 11 */ + SETTING_FIELD (NM_SETTING_IP4_CONFIG_MAY_FAIL, 12), /* 12 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_IP4_CONFIG_ALL "name"","\ @@ -217,7 +238,8 @@ static NmcOutputField nmc_fields_setting_ip4_config[] = { NM_SETTING_IP4_CONFIG_DHCP_CLIENT_ID","\ NM_SETTING_IP4_CONFIG_DHCP_SEND_HOSTNAME","\ NM_SETTING_IP4_CONFIG_DHCP_HOSTNAME","\ - NM_SETTING_IP4_CONFIG_NEVER_DEFAULT + NM_SETTING_IP4_CONFIG_NEVER_DEFAULT","\ + NM_SETTING_IP4_CONFIG_MAY_FAIL #define NMC_FIELDS_SETTING_IP4_CONFIG_COMMON NMC_FIELDS_SETTING_IP4_CONFIG_ALL /* Available fields for NM_SETTING_IP6_CONFIG_SETTING_NAME */ @@ -231,6 +253,7 @@ static NmcOutputField nmc_fields_setting_ip6_config[] = { SETTING_FIELD (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES, 19), /* 6 */ SETTING_FIELD (NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS, 16), /* 7 */ SETTING_FIELD (NM_SETTING_IP6_CONFIG_NEVER_DEFAULT, 15), /* 8 */ + SETTING_FIELD (NM_SETTING_IP6_CONFIG_MAY_FAIL, 12), /* 9 */ {NULL, NULL, 0, NULL, 0} }; #define NMC_FIELDS_SETTING_IP6_CONFIG_ALL "name"","\ @@ -241,7 +264,8 @@ static NmcOutputField nmc_fields_setting_ip6_config[] = { NM_SETTING_IP6_CONFIG_ROUTES","\ NM_SETTING_IP6_CONFIG_IGNORE_AUTO_ROUTES","\ NM_SETTING_IP6_CONFIG_IGNORE_AUTO_DNS","\ - NM_SETTING_IP6_CONFIG_NEVER_DEFAULT + NM_SETTING_IP6_CONFIG_NEVER_DEFAULT","\ + NM_SETTING_IP6_CONFIG_MAY_FAIL #define NMC_FIELDS_SETTING_IP6_CONFIG_COMMON NMC_FIELDS_SETTING_IP4_CONFIG_ALL /* Available fields for NM_SETTING_SERIAL_SETTING_NAME */ @@ -480,6 +504,10 @@ allowed_bands_to_string (guint32 bands) g_string_append (band_str, _("WCDMA 3GPP UMTS 900 MHz, ")); if (bands & NM_SETTING_GSM_BAND_U17IX) g_string_append (band_str, _("WCDMA 3GPP UMTS 1700 MHz, ")); + if (bands & NM_SETTING_GSM_BAND_U1900) + g_string_append (band_str, _("WCDMA 3GPP UMTS 1900 MHz, ")); + if (bands & NM_SETTING_GSM_BAND_U2600) + g_string_append (band_str, _("WCDMA 3GPP UMTS 2600 MHz, ")); if (band_str->str[band_str->len-1] == '(') g_string_assign (band_str, _("unknown")); @@ -491,13 +519,16 @@ allowed_bands_to_string (guint32 bands) return g_string_free (band_str, FALSE); } - gboolean setting_connection_details (NMSetting *setting, NmCli *nmc) { NMSettingConnection *s_con; guint64 timestamp; char *timestamp_str; + const char *perm_item; + const char *perm_type; + GString *perm = NULL; + int i; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -513,6 +544,15 @@ setting_connection_details (NMSetting *setting, NmCli *nmc) timestamp = nm_setting_connection_get_timestamp (s_con); timestamp_str = g_strdup_printf ("%" G_GUINT64_FORMAT, timestamp); + /* get permissions */ + perm = g_string_new (NULL); + for (i = 0; i < nm_setting_connection_get_num_permissions (s_con); i++) { + nm_setting_connection_get_permission (s_con, i, &perm_type, &perm_item, NULL); + g_string_append_printf (perm, "%s:%s,", perm_type, perm_item); + } + if (perm->len > 0) + g_string_truncate (perm, perm->len-1); /* remove trailing , */ + nmc->allowed_fields[0].value = NM_SETTING_CONNECTION_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_connection_get_id (s_con); nmc->allowed_fields[2].value = nm_setting_connection_get_uuid (s_con); @@ -520,11 +560,13 @@ setting_connection_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[4].value = nm_setting_connection_get_autoconnect (s_con) ? _("yes") : _("no"); nmc->allowed_fields[5].value = timestamp_str; nmc->allowed_fields[6].value = nm_setting_connection_get_read_only (s_con) ? ("yes") : _("no"); + nmc->allowed_fields[7].value = perm->str; nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ g_free (timestamp_str); + g_string_free (perm, TRUE); return TRUE; } @@ -534,7 +576,11 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) { NMSettingWired *s_wired; const GByteArray *mac; + const GSList *iter; + const GPtrArray *s390_channels; + int i; char *speed_str, *mtu_str, *device_mac_str = NULL, *cloned_mac_str = NULL; + GString *mac_blacklist_s, *s390_channels_s, *s390_options_s; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -556,6 +602,29 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) if (mac) cloned_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + mac_blacklist_s = g_string_new (NULL); + iter = nm_setting_wired_get_mac_address_blacklist (s_wired); + while (iter) { + g_string_append_printf (mac_blacklist_s, "%s,", (char *) iter->data); + iter = iter->next; + } + g_string_truncate (mac_blacklist_s, mac_blacklist_s->len-1); /* chop off trailing ',' */ + + s390_channels_s = g_string_new (NULL); + s390_channels = nm_setting_wired_get_s390_subchannels (s_wired); + for (i = 0; s390_channels && i < s390_channels->len; i++) + g_string_append_printf (s390_channels_s, "%s,", (char *) g_ptr_array_index (s390_channels, i)); + g_string_truncate (s390_channels_s, s390_channels_s->len-1); /* chop off trailing ',' */ + + s390_options_s = g_string_new (NULL); + for (i = 0; i < nm_setting_wired_get_num_s390_options (s_wired); i++) { + const char *key, *value; + + nm_setting_wired_get_s390_option (s_wired, i, &key, &value); + g_string_append_printf (s390_options_s, "%s=%s,", key, value); + } + g_string_truncate (s390_options_s, s390_options_s->len-1); /* chop off trailing ',' */ + nmc->allowed_fields[0].value = NM_SETTING_WIRED_SETTING_NAME; nmc->allowed_fields[1].value = nm_setting_wired_get_port (s_wired); nmc->allowed_fields[2].value = speed_str; @@ -563,7 +632,11 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[4].value = nm_setting_wired_get_auto_negotiate (s_wired) ? _("yes") : _("no"); nmc->allowed_fields[5].value = device_mac_str; nmc->allowed_fields[6].value = cloned_mac_str; - nmc->allowed_fields[7].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); + nmc->allowed_fields[7].value = mac_blacklist_s->str; + nmc->allowed_fields[8].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); + nmc->allowed_fields[9].value = s390_channels_s->str; + nmc->allowed_fields[10].value = nm_setting_wired_get_s390_nettype (s_wired); + nmc->allowed_fields[11].value = s390_options_s->str; nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -572,6 +645,9 @@ setting_wired_details (NMSetting *setting, NmCli *nmc) g_free (device_mac_str); g_free (cloned_mac_str); g_free (mtu_str); + g_string_free (mac_blacklist_s, TRUE); + g_string_free (s390_channels_s, TRUE); + g_string_free (s390_options_s, TRUE); return TRUE; } @@ -581,7 +657,7 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) { NMSetting8021x *s_8021X; NMSetting8021xCKScheme scheme; - GString *eap_str; + GString *eap_str, *alt_sub_match, *phase2_alt_sub_match; char *ca_cert_str = NULL, *client_cert_str = NULL, *phase2_ca_cert_str = NULL; char *phase2_client_cert_str = NULL, *private_key_str = NULL, *phase2_private_key_str = NULL; int i; @@ -639,28 +715,42 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) if (scheme == NM_SETTING_802_1X_CK_SCHEME_PATH) phase2_private_key_str = g_strdup (nm_setting_802_1x_get_phase2_private_key_path (s_8021X)); + alt_sub_match = g_string_new (NULL); + for (i = 0; i < nm_setting_802_1x_get_num_altsubject_matches (s_8021X); i++) + g_string_append_printf (alt_sub_match, "%s,", nm_setting_802_1x_get_altsubject_match (s_8021X, i)); + g_string_truncate (alt_sub_match, alt_sub_match->len-1); /* chop off trailing ',' */ + + phase2_alt_sub_match = g_string_new (NULL); + for (i = 0; i < nm_setting_802_1x_get_num_phase2_altsubject_matches (s_8021X); i++) + g_string_append_printf (phase2_alt_sub_match, "%s,", nm_setting_802_1x_get_phase2_altsubject_match (s_8021X, i)); + g_string_truncate (phase2_alt_sub_match, phase2_alt_sub_match->len-1); /* chop off trailing ',' */ + nmc->allowed_fields[0].value = NM_SETTING_802_1X_SETTING_NAME; nmc->allowed_fields[1].value = eap_str->str; nmc->allowed_fields[2].value = nm_setting_802_1x_get_identity (s_8021X); nmc->allowed_fields[3].value = nm_setting_802_1x_get_anonymous_identity (s_8021X); nmc->allowed_fields[4].value = ca_cert_str; nmc->allowed_fields[5].value = nm_setting_802_1x_get_ca_path (s_8021X); - nmc->allowed_fields[6].value = client_cert_str; - nmc->allowed_fields[7].value = nm_setting_802_1x_get_phase1_peapver (s_8021X); - nmc->allowed_fields[8].value = nm_setting_802_1x_get_phase1_peaplabel (s_8021X); - nmc->allowed_fields[9].value = nm_setting_802_1x_get_phase1_fast_provisioning (s_8021X); - nmc->allowed_fields[10].value = nm_setting_802_1x_get_phase2_auth (s_8021X); - nmc->allowed_fields[11].value = nm_setting_802_1x_get_phase2_autheap (s_8021X); - nmc->allowed_fields[12].value = phase2_ca_cert_str; - nmc->allowed_fields[13].value = nm_setting_802_1x_get_phase2_ca_path (s_8021X); - nmc->allowed_fields[14].value = phase2_client_cert_str; - nmc->allowed_fields[15].value = nm_setting_802_1x_get_password (s_8021X); - nmc->allowed_fields[16].value = private_key_str; - nmc->allowed_fields[17].value = nm_setting_802_1x_get_private_key_password (s_8021X); - nmc->allowed_fields[18].value = phase2_private_key_str; - nmc->allowed_fields[19].value = nm_setting_802_1x_get_phase2_private_key_password (s_8021X); - nmc->allowed_fields[20].value = nm_setting_802_1x_get_pin (s_8021X); - nmc->allowed_fields[21].value = nm_setting_802_1x_get_system_ca_certs (s_8021X) ? _("yes") : _("no"); + nmc->allowed_fields[6].value = nm_setting_802_1x_get_subject_match (s_8021X); + nmc->allowed_fields[7].value = alt_sub_match->str; + nmc->allowed_fields[8].value = client_cert_str; + nmc->allowed_fields[9].value = nm_setting_802_1x_get_phase1_peapver (s_8021X); + nmc->allowed_fields[10].value = nm_setting_802_1x_get_phase1_peaplabel (s_8021X); + nmc->allowed_fields[11].value = nm_setting_802_1x_get_phase1_fast_provisioning (s_8021X); + nmc->allowed_fields[12].value = nm_setting_802_1x_get_phase2_auth (s_8021X); + nmc->allowed_fields[13].value = nm_setting_802_1x_get_phase2_autheap (s_8021X); + nmc->allowed_fields[14].value = phase2_ca_cert_str; + nmc->allowed_fields[15].value = nm_setting_802_1x_get_phase2_ca_path (s_8021X); + nmc->allowed_fields[16].value = nm_setting_802_1x_get_phase2_subject_match (s_8021X); + nmc->allowed_fields[17].value = phase2_alt_sub_match->str; + nmc->allowed_fields[18].value = phase2_client_cert_str; + nmc->allowed_fields[19].value = nm_setting_802_1x_get_password (s_8021X); + nmc->allowed_fields[20].value = private_key_str; + nmc->allowed_fields[21].value = nm_setting_802_1x_get_private_key_password (s_8021X); + nmc->allowed_fields[22].value = phase2_private_key_str; + nmc->allowed_fields[23].value = nm_setting_802_1x_get_phase2_private_key_password (s_8021X); + nmc->allowed_fields[24].value = nm_setting_802_1x_get_pin (s_8021X); + nmc->allowed_fields[25].value = nm_setting_802_1x_get_system_ca_certs (s_8021X) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -672,6 +762,8 @@ setting_802_1X_details (NMSetting *setting, NmCli *nmc) g_free (private_key_str); g_free (phase2_private_key_str); g_string_free (eap_str, TRUE); + g_string_free (alt_sub_match, TRUE); + g_string_free (phase2_alt_sub_match, TRUE); return TRUE; } @@ -684,7 +776,8 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) const GByteArray *ssid, *bssid, *mac; char *ssid_str, *channel_str, *rate_str, *tx_power_str, *mtu_str; char *device_mac_str = NULL, *cloned_mac_str = NULL, *bssid_str = NULL; - GString *seen_bssids; + GString *mac_blacklist, *seen_bssids; + const GSList *iter; guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; @@ -712,6 +805,15 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) mac = nm_setting_wireless_get_cloned_mac_address (s_wireless); if (mac) cloned_mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->data[0], mac->data[1], mac->data[2], mac->data[3], mac->data[4], mac->data[5]); + + mac_blacklist = g_string_new (NULL); + iter = nm_setting_wireless_get_mac_address_blacklist (s_wireless); + while (iter) { + g_string_append_printf (mac_blacklist, "%s,", (char *) iter->data); + iter = iter->next; + } + g_string_truncate (mac_blacklist, mac_blacklist->len-1); /* chop off trailing ',' */ + seen_bssids = g_string_new (NULL); for (i = 0; i < nm_setting_wireless_get_num_seen_bssids (s_wireless); i++) { if (i > 0) @@ -729,9 +831,10 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[7].value = tx_power_str; nmc->allowed_fields[8].value = device_mac_str ? device_mac_str : _("not set"); nmc->allowed_fields[9].value = cloned_mac_str ? cloned_mac_str : _("not set"); - nmc->allowed_fields[10].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); - nmc->allowed_fields[11].value = seen_bssids->str; - nmc->allowed_fields[12].value = nm_setting_wireless_get_security (s_wireless); + nmc->allowed_fields[10].value = mac_blacklist->str; + nmc->allowed_fields[11].value = strcmp (mtu_str, "0") ? mtu_str : _("auto"); + nmc->allowed_fields[12].value = seen_bssids->str; + nmc->allowed_fields[13].value = nm_setting_wireless_get_security (s_wireless); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -745,6 +848,7 @@ setting_wireless_details (NMSetting *setting, NmCli *nmc) g_free (cloned_mac_str); g_free (mtu_str); g_string_free (seen_bssids, TRUE); + g_string_free (mac_blacklist, TRUE); return TRUE; } @@ -940,6 +1044,7 @@ setting_ip4_config_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[9].value = nm_setting_ip4_config_get_dhcp_send_hostname (s_ip4) ? _("yes") : _("no"); nmc->allowed_fields[10].value = nm_setting_ip4_config_get_dhcp_hostname (s_ip4); nmc->allowed_fields[11].value = nm_setting_ip4_config_get_never_default (s_ip4) ? _("yes") : _("no"); + nmc->allowed_fields[12].value = nm_setting_ip4_config_get_may_fail (s_ip4) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ @@ -1019,6 +1124,11 @@ setting_ip6_config_details (NMSetting *setting, NmCli *nmc) g_string_append (addr_str, tmp); g_free (tmp); + memset (buf, 0, sizeof (buf)); + ip = nm_ip6_address_get_gateway (addr); + inet_ntop (AF_INET6, (const void *) ip, buf, sizeof (buf)); + g_string_append_printf (addr_str, ", gw = %s", buf); + g_string_append (addr_str, " }"); } @@ -1067,6 +1177,7 @@ setting_ip6_config_details (NMSetting *setting, NmCli *nmc) nmc->allowed_fields[6].value = nm_setting_ip6_config_get_ignore_auto_routes (s_ip6) ? _("yes") : _("no"); nmc->allowed_fields[7].value = nm_setting_ip6_config_get_ignore_auto_dns (s_ip6) ? _("yes") : _("no"); nmc->allowed_fields[8].value = nm_setting_ip6_config_get_never_default (s_ip6) ? _("yes") : _("no"); + nmc->allowed_fields[9].value = nm_setting_ip6_config_get_may_fail (s_ip6) ? _("yes") : _("no"); nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ diff --git a/cli/src/utils.c b/cli/src/utils.c index 3c4e4f36..c5637e4f 100644 --- a/cli/src/utils.c +++ b/cli/src/utils.c @@ -194,6 +194,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[]) if (multiline) { /* --- Multiline mode --- */ enum { ML_HEADER_WIDTH = 79 }; + enum { ML_VALUE_INDENT = 40 }; if (main_header && pretty) { /* Print the main header */ int header_width = nmc_string_screen_width (fields.header_name, NULL) + 4; @@ -218,7 +219,7 @@ print_fields (const NmcPrintFields fields, const NmcOutputField field_values[]) tmp = g_strdup_printf ("%s%s%s:", section_prefix ? field_values[0].value : "", section_prefix ? "." : "", _(field_values[idx].name_l10n)); - printf ("%-*s%s\n", terse ? 0 : 32, tmp, field_values[idx].value ? field_values[idx].value : not_set_str); + printf ("%-*s%s\n", terse ? 0 : ML_VALUE_INDENT, tmp, field_values[idx].value ? field_values[idx].value : not_set_str); g_free (tmp); } if (pretty) { diff --git a/config.h.in b/config.h.in index bdbd783e..2a002e91 100644 --- a/config.h.in +++ b/config.h.in @@ -3,6 +3,9 @@ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD +/* Define if you have GNU backtrace extensions */ +#undef ENABLE_CRASHTRACE + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS @@ -44,6 +47,15 @@ /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H +/* Define if you require libnl-1 legacy support */ +#undef HAVE_LIBNL1 + +/* Define if you require specific libnl-2 support */ +#undef HAVE_LIBNL2 + +/* Define if you require specific libnl-3 support */ +#undef HAVE_LIBNL3 + /* Define to 1 if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H diff --git a/configure b/configure index 637c085b..c6a844fd 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for NetworkManager 0.9.0. +# Generated by GNU Autoconf 2.68 for NetworkManager 0.9.1.95. # # 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.9.0' -PACKAGE_STRING='NetworkManager 0.9.0' +PACKAGE_VERSION='0.9.1.95' +PACKAGE_STRING='NetworkManager 0.9.1.95' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager' PACKAGE_URL='' @@ -668,6 +668,14 @@ UUID_LIBS UUID_CFLAGS LIBNL_LIBS LIBNL_CFLAGS +LIBNL1_LIBS +LIBNL1_CFLAGS +LIBNL2_LIBS +LIBNL2_CFLAGS +LIBNL_ROUTE3_LIBS +LIBNL_ROUTE3_CFLAGS +LIBNL3_LIBS +LIBNL3_CFLAGS WITH_CONSOLEKIT_FALSE WITH_CONSOLEKIT_TRUE HAVE_SYSTEMD_FALSE @@ -934,6 +942,7 @@ with_resolvconf with_iptables with_system_ca_path with_kernel_firmware_dir +enable_crashtrace enable_more_warnings with_html_dir enable_gtk_doc @@ -969,8 +978,14 @@ GIO_CFLAGS GIO_LIBS QT_CFLAGS QT_LIBS -LIBNL_CFLAGS -LIBNL_LIBS +LIBNL3_CFLAGS +LIBNL3_LIBS +LIBNL_ROUTE3_CFLAGS +LIBNL_ROUTE3_LIBS +LIBNL2_CFLAGS +LIBNL2_LIBS +LIBNL1_CFLAGS +LIBNL1_LIBS UUID_CFLAGS UUID_LIBS IWMX_SDK_CFLAGS @@ -1523,7 +1538,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.9.0 to adapt to many kinds of systems. +\`configure' configures NetworkManager 0.9.1.95 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1593,7 +1608,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of NetworkManager 0.9.0:";; + short | recursive ) echo "Configuration of NetworkManager 0.9.1.95:";; esac cat <<\_ACEOF @@ -1620,6 +1635,7 @@ Optional Features: --enable-wimax enable WiMAX support --enable-polkit enable PolicyKit support --enable-ppp enable PPP/PPPoE support + --disable-crashtrace Disable GNU backtrace extensions --enable-more-warnings Maximum compiler warnings --enable-gtk-doc use gtk-doc to build documentation [[default=no]] --enable-gtk-doc-html build documentation in html format [[default=yes]] @@ -1703,9 +1719,19 @@ Some influential environment variables: GIO_LIBS linker flags for GIO, overriding pkg-config QT_CFLAGS C compiler flags for QT, overriding pkg-config QT_LIBS linker flags for QT, overriding pkg-config - LIBNL_CFLAGS - C compiler flags for LIBNL, overriding pkg-config - LIBNL_LIBS linker flags for LIBNL, overriding pkg-config + LIBNL3_CFLAGS + C compiler flags for LIBNL3, overriding pkg-config + LIBNL3_LIBS linker flags for LIBNL3, overriding pkg-config + LIBNL_ROUTE3_CFLAGS + C compiler flags for LIBNL_ROUTE3, overriding pkg-config + LIBNL_ROUTE3_LIBS + linker flags for LIBNL_ROUTE3, overriding pkg-config + LIBNL2_CFLAGS + C compiler flags for LIBNL2, overriding pkg-config + LIBNL2_LIBS linker flags for LIBNL2, overriding pkg-config + LIBNL1_CFLAGS + C compiler flags for LIBNL1, overriding pkg-config + LIBNL1_LIBS linker flags for LIBNL1, overriding pkg-config UUID_CFLAGS C compiler flags for UUID, overriding pkg-config UUID_LIBS linker flags for UUID, overriding pkg-config IWMX_SDK_CFLAGS @@ -1787,7 +1813,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -NetworkManager configure 0.9.0 +NetworkManager configure 0.9.1.95 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2331,7 +2357,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.9.0, which was +It was created by NetworkManager $as_me 0.9.1.95, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3152,7 +3178,7 @@ fi # Define the identity of the package. PACKAGE='NetworkManager' - VERSION='0.9.0' + VERSION='0.9.1.95' cat >>confdefs.h <<_ACEOF @@ -16279,8 +16305,8 @@ fi NM_MAJOR_VERSION=0 NM_MINOR_VERSION=9 -NM_MICRO_VERSION=0 -NM_VERSION=0.9.0 +NM_MICRO_VERSION=1 +NM_VERSION=0.9.1.95 @@ -20828,37 +20854,38 @@ cat >>confdefs.h <<_ACEOF _ACEOF +have_libnl="no" pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNL" >&5 -$as_echo_n "checking for LIBNL... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNL3" >&5 +$as_echo_n "checking for LIBNL3... " >&6; } -if test -n "$LIBNL_CFLAGS"; then - pkg_cv_LIBNL_CFLAGS="$LIBNL_CFLAGS" +if test -n "$LIBNL3_CFLAGS"; then + pkg_cv_LIBNL3_CFLAGS="$LIBNL3_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-1 >= 1.0-pre8\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libnl-1 >= 1.0-pre8") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBNL_CFLAGS=`$PKG_CONFIG --cflags "libnl-1 >= 1.0-pre8" 2>/dev/null` + pkg_cv_LIBNL3_CFLAGS=`$PKG_CONFIG --cflags "libnl-3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi -if test -n "$LIBNL_LIBS"; then - pkg_cv_LIBNL_LIBS="$LIBNL_LIBS" +if test -n "$LIBNL3_LIBS"; then + pkg_cv_LIBNL3_LIBS="$LIBNL3_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-1 >= 1.0-pre8\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libnl-1 >= 1.0-pre8") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_LIBNL_LIBS=`$PKG_CONFIG --libs "libnl-1 >= 1.0-pre8" 2>/dev/null` + pkg_cv_LIBNL3_LIBS=`$PKG_CONFIG --libs "libnl-3.0" 2>/dev/null` else pkg_failed=yes fi @@ -20878,49 +20905,269 @@ else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBNL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1 >= 1.0-pre8" 2>&1` + LIBNL3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-3.0" 2>&1` else - LIBNL_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1 >= 1.0-pre8" 2>&1` + LIBNL3_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$LIBNL_PKG_ERRORS" >&5 + echo "$LIBNL3_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (libnl-1 >= 1.0-pre8) were not met: + have_libnl3=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_libnl3=no +else + LIBNL3_CFLAGS=$pkg_cv_LIBNL3_CFLAGS + LIBNL3_LIBS=$pkg_cv_LIBNL3_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_libnl3=yes +fi -$LIBNL_PKG_ERRORS +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNL_ROUTE3" >&5 +$as_echo_n "checking for LIBNL_ROUTE3... " >&6; } -Consider adjusting the PKG_CONFIG_PATH environment variable if you -installed software in a non-standard prefix. +if test -n "$LIBNL_ROUTE3_CFLAGS"; then + pkg_cv_LIBNL_ROUTE3_CFLAGS="$LIBNL_ROUTE3_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-route-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-route-3.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL_ROUTE3_CFLAGS=`$PKG_CONFIG --cflags "libnl-route-3.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBNL_ROUTE3_LIBS"; then + pkg_cv_LIBNL_ROUTE3_LIBS="$LIBNL_ROUTE3_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-route-3.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-route-3.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL_ROUTE3_LIBS=`$PKG_CONFIG --libs "libnl-route-3.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi -Alternatively, you may set the environment variables LIBNL_CFLAGS -and LIBNL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details." "$LINENO" 5 + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBNL_ROUTE3_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-route-3.0" 2>&1` + else + LIBNL_ROUTE3_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-route-3.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBNL_ROUTE3_PKG_ERRORS" >&5 + + have_libnl_route3=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. + have_libnl_route3=no +else + LIBNL_ROUTE3_CFLAGS=$pkg_cv_LIBNL_ROUTE3_CFLAGS + LIBNL_ROUTE3_LIBS=$pkg_cv_LIBNL_ROUTE3_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_libnl_route3=yes +fi +if (test "${have_libnl3}" = "yes" -a "${have_libnl_route3}" = "yes"); then -Alternatively, you may set the environment variables LIBNL_CFLAGS -and LIBNL_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. +$as_echo "#define HAVE_LIBNL3 1" >>confdefs.h -To get pkg-config, see <http://pkg-config.freedesktop.org/>. -See \`config.log' for more details" "$LINENO" 5; } + LIBNL_CFLAGS="$LIBNL3_CFLAGS $LIBNL_ROUTE3_CFLAGS" + LIBNL_LIBS="$LIBNL3_LIBS $LIBNL_ROUTE3_LIBS" + libnl_version="3" + have_libnl="yes" +else + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNL2" >&5 +$as_echo_n "checking for LIBNL2... " >&6; } +if test -n "$LIBNL2_CFLAGS"; then + pkg_cv_LIBNL2_CFLAGS="$LIBNL2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL2_CFLAGS=`$PKG_CONFIG --cflags "libnl-2.0" 2>/dev/null` else - LIBNL_CFLAGS=$pkg_cv_LIBNL_CFLAGS - LIBNL_LIBS=$pkg_cv_LIBNL_LIBS + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBNL2_LIBS"; then + pkg_cv_LIBNL2_LIBS="$LIBNL2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL2_LIBS=`$PKG_CONFIG --libs "libnl-2.0" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBNL2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-2.0" 2>&1` + else + LIBNL2_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBNL2_PKG_ERRORS" >&5 + + have_libnl2=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_libnl2=no +else + LIBNL2_CFLAGS=$pkg_cv_LIBNL2_CFLAGS + LIBNL2_LIBS=$pkg_cv_LIBNL2_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } + have_libnl2=yes +fi + if (test "${have_libnl2}" = "yes"); then + +$as_echo "#define HAVE_LIBNL2 1" >>confdefs.h + + LIBNL_CFLAGS="$LIBNL2_CFLAGS" + LIBNL_LIBS="$LIBNL2_LIBS" + libnl_version="2" + have_libnl="yes" + else +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBNL1" >&5 +$as_echo_n "checking for LIBNL1... " >&6; } + +if test -n "$LIBNL1_CFLAGS"; then + pkg_cv_LIBNL1_CFLAGS="$LIBNL1_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-1 >= 1.0-pre8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-1 >= 1.0-pre8") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL1_CFLAGS=`$PKG_CONFIG --cflags "libnl-1 >= 1.0-pre8" 2>/dev/null` +else + pkg_failed=yes fi + else + pkg_failed=untried +fi +if test -n "$LIBNL1_LIBS"; then + pkg_cv_LIBNL1_LIBS="$LIBNL1_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libnl-1 >= 1.0-pre8\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libnl-1 >= 1.0-pre8") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBNL1_LIBS=`$PKG_CONFIG --libs "libnl-1 >= 1.0-pre8" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBNL1_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "libnl-1 >= 1.0-pre8" 2>&1` + else + LIBNL1_PKG_ERRORS=`$PKG_CONFIG --print-errors "libnl-1 >= 1.0-pre8" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBNL1_PKG_ERRORS" >&5 + + have_libnl1=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_libnl1=no +else + LIBNL1_CFLAGS=$pkg_cv_LIBNL1_CFLAGS + LIBNL1_LIBS=$pkg_cv_LIBNL1_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_libnl1=yes +fi + if (test "${have_libnl1}" = "yes"); then + +$as_echo "#define HAVE_LIBNL1 1" >>confdefs.h + + LIBNL_CFLAGS="$LIBNL1_CFLAGS" + LIBNL_LIBS="$LIBNL1_LIBS" + libnl_version="1" + have_libnl="yes" + fi + fi +fi + +if (test "${have_libnl}" = "no"); then + as_fn_error $? "libnl development header are required" "$LINENO" 5 +fi + + + +if (test "${libnl_version}" = "1"); then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnl address caching bug" >&5 $as_echo_n "checking for libnl address caching bug... " >&6; } @@ -21012,6 +21259,7 @@ $as_echo "?" >&6; } ;; esac +fi pkg_failed=no @@ -21956,6 +22204,19 @@ _ACEOF +# Check whether --enable-crashtrace was given. +if test "${enable_crashtrace+set}" = set; then : + enableval=$enable_crashtrace; enable_crashtrace=${enableval} +else + enable_crashtrace=yes +fi + +if test x"$enable_crashtrace" = xyes; then + +$as_echo "#define ENABLE_CRASHTRACE 1" >>confdefs.h + +fi + # Check whether --enable-more-warnings was given. if test "${enable_more_warnings+set}" = set; then : enableval=$enable_more_warnings; set_more_warnings="$enableval" @@ -22929,7 +23190,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.9.0, which was +This file was extended by NetworkManager $as_me 0.9.1.95, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22995,7 +23256,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.9.0 +NetworkManager config.status 0.9.1.95 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -25316,6 +25577,8 @@ else echo PPP support: no fi +echo libnl version: ${libnl_version} + echo echo Building documentation: ${with_docs} echo Building tests: ${with_tests} diff --git a/configure.ac b/configure.ac index c557c6be..75b99781 100644 --- a/configure.ac +++ b/configure.ac @@ -3,9 +3,10 @@ AC_PREREQ([2.63]) dnl The NM version number m4_define([nm_major_version], [0]) m4_define([nm_minor_version], [9]) -m4_define([nm_micro_version], [0]) +m4_define([nm_micro_version], [1]) +m4_define([nm_nano_version], [95]) m4_define([nm_version], - [nm_major_version.nm_minor_version.nm_micro_version]) + [nm_major_version.nm_minor_version.nm_micro_version.nm_nano_version]) AC_INIT([NetworkManager], [nm_version], [http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager], @@ -312,10 +313,44 @@ else fi AC_DEFINE_UNQUOTED(NO_CONSOLEKIT, $no_ck, [Define to disable use of ConsoleKit]) -PKG_CHECK_MODULES(LIBNL, libnl-1 >= 1.0-pre8) +have_libnl="no" +PKG_CHECK_MODULES(LIBNL3, libnl-3.0, [have_libnl3=yes], [have_libnl3=no]) +PKG_CHECK_MODULES(LIBNL_ROUTE3, libnl-route-3.0, [have_libnl_route3=yes], [have_libnl_route3=no]) +if (test "${have_libnl3}" = "yes" -a "${have_libnl_route3}" = "yes"); then + AC_DEFINE(HAVE_LIBNL3, 1, [Define if you require specific libnl-3 support]) + LIBNL_CFLAGS="$LIBNL3_CFLAGS $LIBNL_ROUTE3_CFLAGS" + LIBNL_LIBS="$LIBNL3_LIBS $LIBNL_ROUTE3_LIBS" + libnl_version="3" + have_libnl="yes" +else + PKG_CHECK_MODULES(LIBNL2, libnl-2.0, [have_libnl2=yes], [have_libnl2=no]) + if (test "${have_libnl2}" = "yes"); then + AC_DEFINE(HAVE_LIBNL2, 1, [Define if you require specific libnl-2 support]) + LIBNL_CFLAGS="$LIBNL2_CFLAGS" + LIBNL_LIBS="$LIBNL2_LIBS" + libnl_version="2" + have_libnl="yes" + else + PKG_CHECK_MODULES(LIBNL1, libnl-1 >= 1.0-pre8, [have_libnl1=yes], [have_libnl1=no]) + if (test "${have_libnl1}" = "yes"); then + AC_DEFINE(HAVE_LIBNL1, 1, [Define if you require libnl-1 legacy support]) + LIBNL_CFLAGS="$LIBNL1_CFLAGS" + LIBNL_LIBS="$LIBNL1_LIBS" + libnl_version="1" + have_libnl="yes" + fi + fi +fi + +if (test "${have_libnl}" = "no"); then + AC_MSG_ERROR([libnl development header are required]) +fi AC_SUBST(LIBNL_CFLAGS) AC_SUBST(LIBNL_LIBS) -NM_LIBNL_CHECK + +if (test "${libnl_version}" = "1"); then + NM_LIBNL_CHECK +fi PKG_CHECK_MODULES(UUID, uuid) AC_SUBST(UUID_CFLAGS) @@ -576,6 +611,13 @@ fi AC_DEFINE_UNQUOTED(KERNEL_FIRMWARE_DIR, "$KERNEL_FIRMWARE_DIR", [Define to path of the kernel firmware directory]) AC_SUBST(KERNEL_FIRMWARE_DIR) +AC_ARG_ENABLE(crashtrace, + AS_HELP_STRING([--disable-crashtrace], [Disable GNU backtrace extensions]), + [enable_crashtrace=${enableval}], [enable_crashtrace=yes]) +if test x"$enable_crashtrace" = xyes; then + AC_DEFINE(ENABLE_CRASHTRACE, 1, [Define if you have GNU backtrace extensions]) +fi + NM_COMPILER_WARNINGS GTK_DOC_CHECK(1.0) @@ -738,6 +780,8 @@ else echo PPP support: no fi +echo libnl version: ${libnl_version} + echo echo Building documentation: ${with_docs} echo Building tests: ${with_tests} diff --git a/data/Makefile.in b/data/Makefile.in index a5061e00..08280c96 100644 --- a/data/Makefile.in +++ b/data/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/docs/Makefile.in b/docs/Makefile.in index 91ce98e5..334c16cf 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -192,8 +192,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/docs/api/Makefile.in b/docs/api/Makefile.in index 47874caf..043ecf8a 100644 --- a/docs/api/Makefile.in +++ b/docs/api/Makefile.in @@ -196,8 +196,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/docs/api/html/NetworkManager.devhelp b/docs/api/html/NetworkManager.devhelp index 225718a4..a6c6d17d 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#id499631"/> + <sub name="Configuration Settings" link="ref-settings.html#id443345"/> <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#id515244"> - <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id506888"/> - <sub name="User Secret Agents" link="ref-migrating.html#id490940"/> - <sub name="Settings Service Interface Changes" link="ref-migrating.html#id478937"/> - <sub name="Connection Object Interface Changes" link="ref-migrating.html#id496154"/> - <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id469504"/> - <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id485456"/> - <sub name="Support for WiMAX Devices" link="ref-migrating.html#id490040"/> - <sub name="New Device States" link="ref-migrating.html#id507718"/> - <sub name="New Active Connection State" link="ref-migrating.html#id515265"/> - <sub name="Consolidated Modem Devices" link="ref-migrating.html#id515394"/> - <sub name="Secret Property Flags" link="ref-migrating.html#id479874"/> - <sub name="Deprecated Methods Removed" link="ref-migrating.html#id474466"/> + <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id458958"> + <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id450602"/> + <sub name="User Secret Agents" link="ref-migrating.html#id434654"/> + <sub name="Settings Service Interface Changes" link="ref-migrating.html#id422651"/> + <sub name="Connection Object Interface Changes" link="ref-migrating.html#id439868"/> + <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id413219"/> + <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id429171"/> + <sub name="Support for WiMAX Devices" link="ref-migrating.html#id433755"/> + <sub name="New Device States" link="ref-migrating.html#id451432"/> + <sub name="New Active Connection State" link="ref-migrating.html#id458979"/> + <sub name="Consolidated Modem Devices" link="ref-migrating.html#id459108"/> + <sub name="Secret Property Flags" link="ref-migrating.html#id423588"/> + <sub name="Deprecated Methods Removed" link="ref-migrating.html#id418180"/> </sub> </sub> <sub name="Index" link="ix01.html"/> diff --git a/docs/api/html/NetworkManager.devhelp2 b/docs/api/html/NetworkManager.devhelp2 index e5538797..2c08e0b1 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#id499631"/> + <sub name="Configuration Settings" link="ref-settings.html#id443345"/> <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#id515244"> - <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id506888"/> - <sub name="User Secret Agents" link="ref-migrating.html#id490940"/> - <sub name="Settings Service Interface Changes" link="ref-migrating.html#id478937"/> - <sub name="Connection Object Interface Changes" link="ref-migrating.html#id496154"/> - <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id469504"/> - <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id485456"/> - <sub name="Support for WiMAX Devices" link="ref-migrating.html#id490040"/> - <sub name="New Device States" link="ref-migrating.html#id507718"/> - <sub name="New Active Connection State" link="ref-migrating.html#id515265"/> - <sub name="Consolidated Modem Devices" link="ref-migrating.html#id515394"/> - <sub name="Secret Property Flags" link="ref-migrating.html#id479874"/> - <sub name="Deprecated Methods Removed" link="ref-migrating.html#id474466"/> + <sub name="Architecture and D-Bus API Changes in 0.9" link="ref-migrating.html#id458958"> + <sub name="Elimination of the User Settings Service" link="ref-migrating.html#id450602"/> + <sub name="User Secret Agents" link="ref-migrating.html#id434654"/> + <sub name="Settings Service Interface Changes" link="ref-migrating.html#id422651"/> + <sub name="Connection Object Interface Changes" link="ref-migrating.html#id439868"/> + <sub name="Permissions Methods Consolidation" link="ref-migrating.html#id413219"/> + <sub name="AddConnection Returns Object Path of New Connection" link="ref-migrating.html#id429171"/> + <sub name="Support for WiMAX Devices" link="ref-migrating.html#id433755"/> + <sub name="New Device States" link="ref-migrating.html#id451432"/> + <sub name="New Active Connection State" link="ref-migrating.html#id458979"/> + <sub name="Consolidated Modem Devices" link="ref-migrating.html#id459108"/> + <sub name="Secret Property Flags" link="ref-migrating.html#id423588"/> + <sub name="Deprecated Methods Removed" link="ref-migrating.html#id418180"/> </sub> </sub> <sub name="Index" link="ix01.html"/> diff --git a/docs/api/html/index.html b/docs/api/html/index.html index c734b922..84aa84c9 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.9.0 +<div><p class="releaseinfo">Version 0.9.1.95 </p></div> <div><p class="copyright">Copyright © 2011 The NetworkManager Authors</p></div> <div><div class="legalnotice"> -<a name="id429511"></a><p> +<a name="id373226"></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#id499631">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id443345">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#id515244">Architecture and D-Bus API Changes in 0.9</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id458958">Architecture and D-Bus API Changes in 0.9</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-migrating.html#id506888">Elimination of the User Settings Service</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id490940">User Secret Agents</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id478937">Settings Service Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id496154">Connection Object Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id469504">Permissions Methods Consolidation</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id485456">AddConnection Returns Object Path of New Connection</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id490040">Support for WiMAX Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id507718">New Device States</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id515265">New Active Connection State</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id515394">Consolidated Modem Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id479874">Secret Property Flags</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id474466">Deprecated Methods Removed</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id450602">Elimination of the User Settings Service</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id434654">User Secret Agents</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id422651">Settings Service Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id439868">Connection Object Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id413219">Permissions Methods Consolidation</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id429171">AddConnection Returns Object Path of New Connection</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id433755">Support for WiMAX Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id451432">New Device States</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id458979">New Active Connection State</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id459108">Consolidated Modem Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id423588">Secret Property Flags</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id418180">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 ffcd2110..00cfa690 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="id459403"></a>Index</h2></div></div></div> +<a name="id403117"></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 a3221b04..5e5471b1 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#id515244">Architecture and D-Bus API Changes in 0.9</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id458958">Architecture and D-Bus API Changes in 0.9</a></span></dt> <dd><dl> -<dt><span class="section"><a href="ref-migrating.html#id506888">Elimination of the User Settings Service</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id490940">User Secret Agents</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id478937">Settings Service Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id496154">Connection Object Interface Changes</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id469504">Permissions Methods Consolidation</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id485456">AddConnection Returns Object Path of New Connection</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id490040">Support for WiMAX Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id507718">New Device States</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id515265">New Active Connection State</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id515394">Consolidated Modem Devices</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id479874">Secret Property Flags</a></span></dt> -<dt><span class="section"><a href="ref-migrating.html#id474466">Deprecated Methods Removed</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id450602">Elimination of the User Settings Service</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id434654">User Secret Agents</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id422651">Settings Service Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id439868">Connection Object Interface Changes</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id413219">Permissions Methods Consolidation</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id429171">AddConnection Returns Object Path of New Connection</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id433755">Support for WiMAX Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id451432">New Device States</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id458979">New Active Connection State</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id459108">Consolidated Modem Devices</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id423588">Secret Property Flags</a></span></dt> +<dt><span class="section"><a href="ref-migrating.html#id418180">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="id515244"></a>Architecture and D-Bus API Changes in 0.9</h2></div></div></div> +<a name="id458958"></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="id506888"></a>Elimination of the User Settings Service</h3></div></div></div> +<a name="id450602"></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="id490940"></a>User Secret Agents</h3></div></div></div> +<a name="id434654"></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="id478937"></a>Settings Service Interface Changes</h3></div></div></div> +<a name="id422651"></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="id496154"></a>Connection Object Interface Changes</h3></div></div></div> +<a name="id439868"></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="id469504"></a>Permissions Methods Consolidation</h3></div></div></div> +<a name="id413219"></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="id502282"></a><p class="title"><b>Table 17. </b></p> +<a name="id445996"></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="id485456"></a>AddConnection Returns Object Path of New Connection</h3></div></div></div> +<a name="id429171"></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="id490040"></a>Support for WiMAX Devices</h3></div></div></div> +<a name="id433755"></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="id507718"></a>New Device States</h3></div></div></div> +<a name="id451432"></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="id515265"></a>New Active Connection State</h3></div></div></div> +<a name="id458979"></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="id515394"></a>Consolidated Modem Devices</h3></div></div></div> +<a name="id459108"></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="id479874"></a>Secret Property Flags</h3></div></div></div> +<a name="id423588"></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="id479882"></a><p class="title"><b>Table 18. </b></p> +<a name="id423596"></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="id474466"></a>Deprecated Methods Removed</h3></div></div></div> +<a name="id418180"></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="id474480"></a><p class="title"><b>Table 19. </b></p> +<a name="id418194"></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 5db0ccd8..59994af9 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#id499631">Configuration Settings</a></span></dt> +<dt><span class="section"><a href="ref-settings.html#id443345">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="id499631"></a>Configuration Settings</h2></div></div></div> +<a name="id443345"></a>Configuration Settings</h2></div></div></div> <p> </p> <div class="table"> -<a name="id502860"></a><p class="title"><b>Table 1. 802-1x setting</b></p> +<a name="id446574"></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> @@ -228,7 +228,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id486852"></a><p class="title"><b>Table 2. bluetooth setting</b></p> +<a name="id430566"></a><p class="title"><b>Table 2. bluetooth setting</b></p> <div class="table-contents"><table summary="bluetooth setting" border="1"> <colgroup> <col> @@ -267,7 +267,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id486984"></a><p class="title"><b>Table 3. cdma setting</b></p> +<a name="id430698"></a><p class="title"><b>Table 3. cdma setting</b></p> <div class="table-contents"><table summary="cdma setting" border="1"> <colgroup> <col> @@ -318,7 +318,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id487182"></a><p class="title"><b>Table 4. connection setting</b></p> +<a name="id430897"></a><p class="title"><b>Table 4. connection setting</b></p> <div class="table-contents"><table summary="connection setting" border="1"> <colgroup> <col> @@ -387,7 +387,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id487483"></a><p class="title"><b>Table 5. gsm setting</b></p> +<a name="id431198"></a><p class="title"><b>Table 5. gsm setting</b></p> <div class="table-contents"><table summary="gsm setting" border="1"> <colgroup> <col> @@ -480,7 +480,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id487908"></a><p class="title"><b>Table 6. ipv4 setting</b></p> +<a name="id431623"></a><p class="title"><b>Table 6. ipv4 setting</b></p> <div class="table-contents"><table summary="ipv4 setting" border="1"> <colgroup> <col> @@ -579,7 +579,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id516867"></a><p class="title"><b>Table 7. ipv6 setting</b></p> +<a name="id460581"></a><p class="title"><b>Table 7. ipv6 setting</b></p> <div class="table-contents"><table summary="ipv6 setting" border="1"> <colgroup> <col> @@ -660,7 +660,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id517185"></a><p class="title"><b>Table 8. 802-11-olpc-mesh setting</b></p> +<a name="id460899"></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> @@ -705,7 +705,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id517323"></a><p class="title"><b>Table 9. ppp setting</b></p> +<a name="id461037"></a><p class="title"><b>Table 9. ppp setting</b></p> <div class="table-contents"><table summary="ppp setting" border="1"> <colgroup> <col> @@ -840,7 +840,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id517853"></a><p class="title"><b>Table 10. pppoe setting</b></p> +<a name="id461567"></a><p class="title"><b>Table 10. pppoe setting</b></p> <div class="table-contents"><table summary="pppoe setting" border="1"> <colgroup> <col> @@ -891,7 +891,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id518018"></a><p class="title"><b>Table 11. serial setting</b></p> +<a name="id461732"></a><p class="title"><b>Table 11. serial setting</b></p> <div class="table-contents"><table summary="serial setting" border="1"> <colgroup> <col> @@ -948,7 +948,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id518231"></a><p class="title"><b>Table 12. vpn setting</b></p> +<a name="id461945"></a><p class="title"><b>Table 12. vpn setting</b></p> <div class="table-contents"><table summary="vpn setting" border="1"> <colgroup> <col> @@ -999,7 +999,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id518437"></a><p class="title"><b>Table 13. wimax setting</b></p> +<a name="id462151"></a><p class="title"><b>Table 13. wimax setting</b></p> <div class="table-contents"><table summary="wimax setting" border="1"> <colgroup> <col> @@ -1038,7 +1038,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id518575"></a><p class="title"><b>Table 14. 802-3-ethernet setting</b></p> +<a name="id462289"></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> @@ -1131,7 +1131,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id519016"></a><p class="title"><b>Table 15. 802-11-wireless setting</b></p> +<a name="id462730"></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> @@ -1236,7 +1236,7 @@ <p><br class="table-break"> </p> <div class="table"> -<a name="id519524"></a><p class="title"><b>Table 16. 802-11-wireless-security setting</b></p> +<a name="id463239"></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 c8abf6ca..3d38d7e3 100644 --- a/docs/api/html/spec.html +++ b/docs/api/html/spec.html @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.0</title><style type="text/css"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.1.95</title><style type="text/css"> body { font-family: sans-serif; @@ -98,7 +98,7 @@ margin-right: 4em; } - </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.0</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license"> + </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.1.95</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license"> <p>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 @@ -112,7 +112,7 @@ General Public License for more details.</p> <p>You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p> -</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul> +</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul> <h1><a name="org.freedesktop.NetworkManager" id="org.freedesktop.NetworkManager"></a>org.freedesktop.NetworkManager</h1><h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.GetDevices" id="org.freedesktop.NetworkManager.GetDevices">GetDevices</a> ( ) → @@ -1169,6 +1169,129 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ unregistered when they disconnect from D-Bus. </div></div><p>Interface has no signals.</p><p>Interface has no properties.</p> + + <h1><a name="org.freedesktop.NetworkManager.SecretAgent" id="org.freedesktop.NetworkManager.SecretAgent"></a>org.freedesktop.NetworkManager.SecretAgent</h1> + Private D-Bus interface used by secret agents that store and provide + secrets to NetworkManager. If an agent provides secrets to + NetworkManager as part of connection creation, and the some of those + secrets are "agent owned" the agent should store those secrets + itself and should not expect its SaveSecrets() method to be called. + SaveSecrets() will be called eg if some program other than the + agent itself (like a connection editor) changes the secrets out of + band. + <h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.GetSecrets" id="org.freedesktop.NetworkManager.SecretAgent.GetSecrets">GetSecrets</a> ( + a{sa{sv}}: connection, o: connection_path, s: setting_name, as: hints, u: flags + ) → + a{sa{sv}}</h3><div class="docstring"> + Retrieve and return stored secrets, if any, or request new + secrets from the agent's user. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the connection for which + secrets are being requested. This may contain system-owned + secrets if the agent has successfully authenticated to + modify system network settings and the GetSecrets request + flags allow user interaction. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which secrets are being + requested. + </dd><dt><code>setting_name</code> - + <code>s</code></dt><dd> + Setting name for which secrets are being requested. + </dd><dt><code>hints</code> - + <code>as</code></dt><dd> + Array of strings of key names in the requested setting for + which NetworkManager thinks a secrets may be required, + and/or well-known identifiers and data that may be useful + to the client in processing the secrets request. The Agent + should return any secrets it has, or that it thinks are + required, regardless of what hints NetworkManager sends + in this request. + </dd><dt><code>flags</code> - + <code>u</code> + (<a xmlns="" href="#type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a>) + </dt><dd> + Flags which modify the behavior of the secrets request. + If true, new secrets are assumed to be invalid or incorrect, + and the agent should ask the user for new secrets. If false, + existing secrets should be retrieved from storage and + returned without interrupting the user. + </dd></dl></div><div><h4>Returns</h4><dl><dt><code>secrets</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing secrets. Each setting MUST + contain at least the 'name' field, containing the name of + the setting, and one or more secrets. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets" id="org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets">CancelGetSecrets</a> ( + o: connection_path, s: setting_name + ) → + nothing</h3><div class="docstring"> + Cancel a pending GetSecrets request for secrets of the given + connection. Any matching request should be canceled. + </div><div><h4>Parameters</h4><dl><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which, if secrets are being + requested, the request should be canceled. + </dd><dt><code>setting_name</code> - + <code>s</code></dt><dd> + Setting name for which secrets for this connection were + originally being requested. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.SaveSecrets" id="org.freedesktop.NetworkManager.SecretAgent.SaveSecrets">SaveSecrets</a> ( + a{sa{sv}}: connection, o: connection_path + ) → + nothing</h3><div class="docstring"> + Save given secrets to backing storage. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the entire connection + (including secrets), for which the agent should save the + secrets to backing storage. This method will not be called + when the agent itself is the process creating or updating + a connection; in that case the agent is assumed to have + already saved those secrets since it had them already. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which the agent should + save secrets to backing storage. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets" id="org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets">DeleteSecrets</a> ( + a{sa{sv}}: connection, o: connection_path + ) → + nothing</h3><div class="docstring"> + Delete secrets from backing storage. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the connection properties + (sans secrets), for which the agent should delete the + secrets from backing storage. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which the agent should + delete secrets from backing storage. + </dd></dl></div></div><p>Interface has no signals.</p><p>Interface has no properties.</p><h2>Sets of flags:</h2><h3 xmlns=""><a name="type-NM_SECRET_AGENT_GET_SECRETS_FLAGS" id="type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a></h3> + Flags modifying the behavior of GetSecrets request. + <dl><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0</code></dt><dd> + No special behavior; by default no user interaction is allowed and + requests for secrets are fulfilled from persistent storage, or + if no secrets are available an error is returned. + </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1</code></dt><dd> + Allows the request to interact with the user, possibly prompting + via UI for secrets if any are required, or if none are found in + persistent storage. + </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2</code></dt><dd> + Explicitly prompt for new secrets from the user. This flag + signals that NetworkManager thinks any existing secrets are + invalid or wrong. This flag implies that interaction is allowed. + </dd></dl> + + <h1><a name="org.freedesktop.NetworkManager.VPN.Connection" id="org.freedesktop.NetworkManager.VPN.Connection"></a>org.freedesktop.NetworkManager.VPN.Connection</h1> Represents an active connection to a Virtual Private Network. <p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Connection.PropertiesChanged" id="org.freedesktop.NetworkManager.VPN.Connection.PropertiesChanged">PropertiesChanged</a> ( @@ -1379,7 +1502,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <h2><a name="org.freedesktop.NetworkManager.VPN.Error.BadArguments" id="org.freedesktop.NetworkManager.VPN.Error.BadArguments"></a>org.freedesktop.NetworkManager.VPN.Error.BadArguments</h2>Invalid arguments were passed with the request. FIXME: too general. <h2><a name="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed" id="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed"></a>org.freedesktop.NetworkManager.VPN.Error.LaunchFailed</h2>A binary providing the service failed to launch. <h2><a name="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid" id="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid"></a>org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid</h2>The request could not be processed because the VPN connection settings were invalid. -<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code> +<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code> - u</li><li><code><a href="#type-NM_802_11_AP_SEC">NM_802_11_AP_SEC</a></code> - u</li><li><code><a href="#type-NM_802_11_DEVICE_CAP">NM_802_11_DEVICE_CAP</a></code> - u</li><li><code><a href="#type-NM_802_11_MODE">NM_802_11_MODE</a></code> @@ -1390,6 +1513,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ - u</li><li><code><a href="#type-NM_DEVICE_STATE">NM_DEVICE_STATE</a></code> - u</li><li><code><a href="#type-NM_DEVICE_STATE_REASON">NM_DEVICE_STATE_REASON</a></code> - u</li><li><code><a href="#type-NM_DEVICE_TYPE">NM_DEVICE_TYPE</a></code> + - u</li><li><code><a href="#type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a></code> - u</li><li><code><a href="#type-NM_STATE">NM_STATE</a></code> - u</li><li><code><a href="#type-NM_VPN_CONNECTION_STATE">NM_VPN_CONNECTION_STATE</a></code> - u</li><li><code><a href="#type-NM_VPN_CONNECTION_STATE_REASON">NM_VPN_CONNECTION_STATE_REASON</a></code> diff --git a/docs/api/spec.html b/docs/api/spec.html index c8abf6ca..3d38d7e3 100644 --- a/docs/api/spec.html +++ b/docs/api/spec.html @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.0</title><style type="text/css"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ascii" /><title>NetworkManager D-Bus Interface Specification version 0.9.1.95</title><style type="text/css"> body { font-family: sans-serif; @@ -98,7 +98,7 @@ margin-right: 4em; } - </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.0</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license"> + </style></head><body><h1 class="topbox">NetworkManager D-Bus Interface Specification</h1><h2>Version 0.9.1.95</h2><div>Copyright (C) 2008 - 2011 Red Hat, Inc.</div><div>Copyright (C) 2008 - 2009 Novell, Inc.</div><div class="license"> <p>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 @@ -112,7 +112,7 @@ General Public License for more details.</p> <p>You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p> -</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul> +</div><h2>Interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul> <h1><a name="org.freedesktop.NetworkManager" id="org.freedesktop.NetworkManager"></a>org.freedesktop.NetworkManager</h1><h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.GetDevices" id="org.freedesktop.NetworkManager.GetDevices">GetDevices</a> ( ) → @@ -1169,6 +1169,129 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ unregistered when they disconnect from D-Bus. </div></div><p>Interface has no signals.</p><p>Interface has no properties.</p> + + <h1><a name="org.freedesktop.NetworkManager.SecretAgent" id="org.freedesktop.NetworkManager.SecretAgent"></a>org.freedesktop.NetworkManager.SecretAgent</h1> + Private D-Bus interface used by secret agents that store and provide + secrets to NetworkManager. If an agent provides secrets to + NetworkManager as part of connection creation, and the some of those + secrets are "agent owned" the agent should store those secrets + itself and should not expect its SaveSecrets() method to be called. + SaveSecrets() will be called eg if some program other than the + agent itself (like a connection editor) changes the secrets out of + band. + <h2>Methods:</h2><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.GetSecrets" id="org.freedesktop.NetworkManager.SecretAgent.GetSecrets">GetSecrets</a> ( + a{sa{sv}}: connection, o: connection_path, s: setting_name, as: hints, u: flags + ) → + a{sa{sv}}</h3><div class="docstring"> + Retrieve and return stored secrets, if any, or request new + secrets from the agent's user. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the connection for which + secrets are being requested. This may contain system-owned + secrets if the agent has successfully authenticated to + modify system network settings and the GetSecrets request + flags allow user interaction. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which secrets are being + requested. + </dd><dt><code>setting_name</code> - + <code>s</code></dt><dd> + Setting name for which secrets are being requested. + </dd><dt><code>hints</code> - + <code>as</code></dt><dd> + Array of strings of key names in the requested setting for + which NetworkManager thinks a secrets may be required, + and/or well-known identifiers and data that may be useful + to the client in processing the secrets request. The Agent + should return any secrets it has, or that it thinks are + required, regardless of what hints NetworkManager sends + in this request. + </dd><dt><code>flags</code> - + <code>u</code> + (<a xmlns="" href="#type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a>) + </dt><dd> + Flags which modify the behavior of the secrets request. + If true, new secrets are assumed to be invalid or incorrect, + and the agent should ask the user for new secrets. If false, + existing secrets should be retrieved from storage and + returned without interrupting the user. + </dd></dl></div><div><h4>Returns</h4><dl><dt><code>secrets</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing secrets. Each setting MUST + contain at least the 'name' field, containing the name of + the setting, and one or more secrets. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets" id="org.freedesktop.NetworkManager.SecretAgent.CancelGetSecrets">CancelGetSecrets</a> ( + o: connection_path, s: setting_name + ) → + nothing</h3><div class="docstring"> + Cancel a pending GetSecrets request for secrets of the given + connection. Any matching request should be canceled. + </div><div><h4>Parameters</h4><dl><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which, if secrets are being + requested, the request should be canceled. + </dd><dt><code>setting_name</code> - + <code>s</code></dt><dd> + Setting name for which secrets for this connection were + originally being requested. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.SaveSecrets" id="org.freedesktop.NetworkManager.SecretAgent.SaveSecrets">SaveSecrets</a> ( + a{sa{sv}}: connection, o: connection_path + ) → + nothing</h3><div class="docstring"> + Save given secrets to backing storage. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the entire connection + (including secrets), for which the agent should save the + secrets to backing storage. This method will not be called + when the agent itself is the process creating or updating + a connection; in that case the agent is assumed to have + already saved those secrets since it had them already. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which the agent should + save secrets to backing storage. + </dd></dl></div></div><div class="method"><h3><a name="org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets" id="org.freedesktop.NetworkManager.SecretAgent.DeleteSecrets">DeleteSecrets</a> ( + a{sa{sv}}: connection, o: connection_path + ) → + nothing</h3><div class="docstring"> + Delete secrets from backing storage. + </div><div><h4>Parameters</h4><dl><dt><code>connection</code> - + <code>a{sa{sv}}</code> + (<a xmlns="" href="#type-String_String_Variant_Map_Map">String_String_Variant_Map_Map</a>) + </dt><dd> + Nested settings maps containing the connection properties + (sans secrets), for which the agent should delete the + secrets from backing storage. + </dd><dt><code>connection_path</code> - + <code>o</code></dt><dd> + Object path of the connection for which the agent should + delete secrets from backing storage. + </dd></dl></div></div><p>Interface has no signals.</p><p>Interface has no properties.</p><h2>Sets of flags:</h2><h3 xmlns=""><a name="type-NM_SECRET_AGENT_GET_SECRETS_FLAGS" id="type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a></h3> + Flags modifying the behavior of GetSecrets request. + <dl><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE = 0x0</code></dt><dd> + No special behavior; by default no user interaction is allowed and + requests for secrets are fulfilled from persistent storage, or + if no secrets are available an error is returned. + </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_ALLOW_INTERACTION = 0x1</code></dt><dd> + Allows the request to interact with the user, possibly prompting + via UI for secrets if any are required, or if none are found in + persistent storage. + </dd><dt><code>NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW = 0x2</code></dt><dd> + Explicitly prompt for new secrets from the user. This flag + signals that NetworkManager thinks any existing secrets are + invalid or wrong. This flag implies that interaction is allowed. + </dd></dl> + + <h1><a name="org.freedesktop.NetworkManager.VPN.Connection" id="org.freedesktop.NetworkManager.VPN.Connection"></a>org.freedesktop.NetworkManager.VPN.Connection</h1> Represents an active connection to a Virtual Private Network. <p>Interface has no methods.</p><h2>Signals:</h2><div class="signal"><h3><a name="org.freedesktop.NetworkManager.VPN.Connection.PropertiesChanged" id="org.freedesktop.NetworkManager.VPN.Connection.PropertiesChanged">PropertiesChanged</a> ( @@ -1379,7 +1502,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <h2><a name="org.freedesktop.NetworkManager.VPN.Error.BadArguments" id="org.freedesktop.NetworkManager.VPN.Error.BadArguments"></a>org.freedesktop.NetworkManager.VPN.Error.BadArguments</h2>Invalid arguments were passed with the request. FIXME: too general. <h2><a name="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed" id="org.freedesktop.NetworkManager.VPN.Error.LaunchFailed"></a>org.freedesktop.NetworkManager.VPN.Error.LaunchFailed</h2>A binary providing the service failed to launch. <h2><a name="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid" id="org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid"></a>org.freedesktop.NetworkManager.VPN.Error.ConnectionInvalid</h2>The request could not be processed because the VPN connection settings were invalid. -<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code> +<h1>Index</h1><h2>Index of interfaces</h2><ul><li><code><a href="#org.freedesktop.NetworkManager">org.freedesktop.NetworkManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AccessPoint">org.freedesktop.NetworkManager.AccessPoint</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device">org.freedesktop.NetworkManager.Device</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wired">org.freedesktop.NetworkManager.Device.Wired</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Wireless">org.freedesktop.NetworkManager.Device.Wireless</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Modem">org.freedesktop.NetworkManager.Device.Modem</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.Bluetooth">org.freedesktop.NetworkManager.Device.Bluetooth</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.OlpcMesh">org.freedesktop.NetworkManager.Device.OlpcMesh</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Device.WiMax">org.freedesktop.NetworkManager.Device.WiMax</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.WiMax.Nsp">org.freedesktop.NetworkManager.WiMax.Nsp</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP4Config">org.freedesktop.NetworkManager.IP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.IP6Config">org.freedesktop.NetworkManager.IP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP4Config">org.freedesktop.NetworkManager.DHCP4Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.DHCP6Config">org.freedesktop.NetworkManager.DHCP6Config</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings">org.freedesktop.NetworkManager.Settings</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Settings.Connection">org.freedesktop.NetworkManager.Settings.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.Connection.Active">org.freedesktop.NetworkManager.Connection.Active</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.AgentManager">org.freedesktop.NetworkManager.AgentManager</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.SecretAgent">org.freedesktop.NetworkManager.SecretAgent</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Connection">org.freedesktop.NetworkManager.VPN.Connection</a></code></li><li><code><a href="#org.freedesktop.NetworkManager.VPN.Plugin">org.freedesktop.NetworkManager.VPN.Plugin</a></code></li></ul><h2>Index of types</h2><ul><li><code><a href="#type-NM_802_11_AP_FLAGS">NM_802_11_AP_FLAGS</a></code> - u</li><li><code><a href="#type-NM_802_11_AP_SEC">NM_802_11_AP_SEC</a></code> - u</li><li><code><a href="#type-NM_802_11_DEVICE_CAP">NM_802_11_DEVICE_CAP</a></code> - u</li><li><code><a href="#type-NM_802_11_MODE">NM_802_11_MODE</a></code> @@ -1390,6 +1513,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ - u</li><li><code><a href="#type-NM_DEVICE_STATE">NM_DEVICE_STATE</a></code> - u</li><li><code><a href="#type-NM_DEVICE_STATE_REASON">NM_DEVICE_STATE_REASON</a></code> - u</li><li><code><a href="#type-NM_DEVICE_TYPE">NM_DEVICE_TYPE</a></code> + - u</li><li><code><a href="#type-NM_SECRET_AGENT_GET_SECRETS_FLAGS">NM_SECRET_AGENT_GET_SECRETS_FLAGS</a></code> - u</li><li><code><a href="#type-NM_STATE">NM_STATE</a></code> - u</li><li><code><a href="#type-NM_VPN_CONNECTION_STATE">NM_VPN_CONNECTION_STATE</a></code> - u</li><li><code><a href="#type-NM_VPN_CONNECTION_STATE_REASON">NM_VPN_CONNECTION_STATE_REASON</a></code> diff --git a/docs/api/version.xml b/docs/api/version.xml index ac39a106..dbd0ed64 100644 --- a/docs/api/version.xml +++ b/docs/api/version.xml @@ -1 +1 @@ -0.9.0 +0.9.1.95 diff --git a/docs/libnm-glib/Makefile.am b/docs/libnm-glib/Makefile.am index 7dfea79a..dcca994b 100644 --- a/docs/libnm-glib/Makefile.am +++ b/docs/libnm-glib/Makefile.am @@ -64,7 +64,7 @@ HTML_IMAGES = libnm-glib.png content_files = # Other files to distribute. -extra_files = +extra_files = libnm-glib.png # CFLAGS and LDFLAGS for compiling scan program. Only needed diff --git a/docs/libnm-glib/Makefile.in b/docs/libnm-glib/Makefile.in index 775d33be..7ebf62ad 100644 --- a/docs/libnm-glib/Makefile.in +++ b/docs/libnm-glib/Makefile.in @@ -159,8 +159,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -341,7 +349,7 @@ HTML_IMAGES = libnm-glib.png content_files = # Other files to distribute. -extra_files = +extra_files = libnm-glib.png # CFLAGS and LDFLAGS for compiling scan program. Only needed # if $(DOC_MODULE).types is non-empty. diff --git a/docs/libnm-glib/html/NMDevice.html b/docs/libnm-glib/html/NMDevice.html index 2b01b135..94866102 100644 --- a/docs/libnm-glib/html/NMDevice.html +++ b/docs/libnm-glib/html/NMDevice.html @@ -729,12 +729,13 @@ request. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td> -<td>callback to be called when disconnect operation completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span> +<td>callback to be called when disconnect +operation completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>][<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> diff --git a/docs/libnm-glib/html/NMRemoteConnection.html b/docs/libnm-glib/html/NMRemoteConnection.html index 87aaf32b..bbdd59fd 100644 --- a/docs/libnm-glib/html/NMRemoteConnection.html +++ b/docs/libnm-glib/html/NMRemoteConnection.html @@ -221,12 +221,13 @@ save them in the settings service. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td> -<td>a function to be called when the commit completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span> +<td>a function to be called when the +commit completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>][allow none]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> @@ -256,7 +257,7 @@ Delete the connection. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> @@ -286,12 +287,13 @@ Request the connection's secrets. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td> -<td>a function to be called when the update completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span> +<td>a function to be called when the update completes; +must not be NULL. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> diff --git a/docs/libnm-glib/html/NMRemoteSettings.html b/docs/libnm-glib/html/NMRemoteSettings.html index 0457a567..09f803ff 100644 --- a/docs/libnm-glib/html/NMRemoteSettings.html +++ b/docs/libnm-glib/html/NMRemoteSettings.html @@ -421,7 +421,7 @@ added, not the object itself</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> <tr> @@ -457,12 +457,13 @@ persistent hostname</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>callback</code></em> :</span></p></td> -<td>callback to be called when the hostname operation completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span> +<td>callback to be called when the +hostname operation completes. <span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>][allow none]</span> </td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> -<td>caller-specific data passed to <em class="parameter"><code>callback</code></em> +<td>caller-specific data passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> <tr> diff --git a/docs/libnm-glib/html/NMSecretAgent.html b/docs/libnm-glib/html/NMSecretAgent.html index 4b08499c..ff6be0da 100644 --- a/docs/libnm-glib/html/NMSecretAgent.html +++ b/docs/libnm-glib/html/NMSecretAgent.html @@ -75,15 +75,15 @@ enum <a class="link" href="NMSecretAgent.html#NMSecretAgentGetSec <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>); + <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#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><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>); + <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#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><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>); + <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> </div> <div class="refsect1"> @@ -263,7 +263,7 @@ is allowed. /* Called when the subclass should retrieve and return secrets. Subclass * must copy or reference any arguments it may require after returning from * this method, as the arguments will freed (except for 'agent', 'callback', - * and 'callback_data' of course). If the request is canceled, the callback + * and 'user_data' of course). If the request is canceled, the callback * should still be called, but with the NM_SECRET_AGENT_ERROR_AGENT_CANCELED * error. */ @@ -274,7 +274,7 @@ is allowed. const char **hints, NMSecretAgentGetSecretsFlags flags, NMSecretAgentGetSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Called when the subclass should cancel an outstanding request to * get secrets for a given connection. Canceling the request MUST @@ -289,26 +289,26 @@ is allowed. /* Called when the subclass should save the secrets contained in the * connection to backing storage. Subclass must copy or reference any * arguments it may require after returning from this method, as the - * arguments will freed (except for 'agent', 'callback', and 'callback_data' + * arguments will freed (except for 'agent', 'callback', and 'user_data' * of course). */ void (*save_secrets) (NMSecretAgent *agent, NMConnection *connection, const char *connection_path, NMSecretAgentSaveSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Called when the subclass should delete the secrets contained in the * connection from backing storage. Subclass must copy or reference any * arguments it may require after returning from this method, as the - * arguments will freed (except for 'agent', 'callback', and 'callback_data' + * arguments will freed (except for 'agent', 'callback', and 'user_data' * of course). */ void (*delete_secrets) (NMSecretAgent *agent, NMConnection *connection, const char *connection_path, NMSecretAgentDeleteSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Signals */ void (*registration_result) (NMSecretAgent *agent, GError *error); @@ -393,7 +393,7 @@ store secrets on behalf of this user. <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>);</pre> + <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> Asyncronously retrieve secrets belonging to <em class="parameter"><code>connection</code></em> for the setting <em class="parameter"><code>setting_name</code></em>. <em class="parameter"><code>flags</code></em> indicate specific behavior that the secret @@ -435,8 +435,8 @@ VFunc: get_secrets </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>callback_data</code></em> :</span></p></td> -<td>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> @@ -448,7 +448,7 @@ VFunc: get_secrets <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><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> + <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> Asyncronously ensure that all secrets inside <em class="parameter"><code>connection</code></em> are stored to disk. @@ -475,8 +475,8 @@ VFunc: save_secrets </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>callback_data</code></em> :</span></p></td> -<td>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> @@ -488,7 +488,7 @@ VFunc: save_secrets <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><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> + <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> Asynchronously ask the agent to delete all saved secrets belonging to <em class="parameter"><code>connection</code></em>. @@ -515,8 +515,8 @@ VFunc: delete_secrets </td> </tr> <tr> -<td><p><span class="term"><em class="parameter"><code>callback_data</code></em> :</span></p></td> -<td>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>caller-specific data to be passed to <em class="parameter"><code>callback</code></em>. <span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span> </td> </tr> </tbody> diff --git a/docs/libnm-glib/html/ch02.html b/docs/libnm-glib/html/ch02.html index 4aa9ceee..5ed579ad 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="id446675"></a>libnm-glib API Reference</h2></div></div></div> +<a name="id395407"></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 10f59ff8..c64038ed 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="id417078"></a><p> +<a name="id365810"></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-util/Makefile.in b/docs/libnm-util/Makefile.in index 0b90a06e..43d198aa 100644 --- a/docs/libnm-util/Makefile.in +++ b/docs/libnm-util/Makefile.in @@ -159,8 +159,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/docs/libnm-util/html/NMConnection.html b/docs/libnm-util/html/NMConnection.html index c700c0d9..3eb0788a 100644 --- a/docs/libnm-util/html/NMConnection.html +++ b/docs/libnm-util/html/NMConnection.html @@ -82,6 +82,10 @@ enum <a class="link" href="NMConnection.html#NMConnectionError">N 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>); +<span class="returnvalue">void</span> <a class="link" href="NMConnection.html#nm-connection-clear-secrets-with-flags" title="nm_connection_clear_secrets_with_flags ()">nm_connection_clear_secrets_with_flags</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#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()"><span class="type">NMSettingClearSecretsWithFlagsFn</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-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> *secrets</code></em>, @@ -89,6 +93,8 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMCon <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>); +<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-is-type" title="nm_connection_is_type ()">nm_connection_is_type</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> *type</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>, @@ -153,6 +159,7 @@ const <span class="returnvalue">char</span> * <a class="link" href="NMCon <div class="refsect1"> <a name="NMConnection.signals"></a><h2>Signals</h2> <pre class="synopsis"> + "<a class="link" href="NMConnection.html#NMConnection-secrets-cleared" title='The "secrets-cleared" signal'>secrets-cleared</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> "<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> @@ -700,6 +707,38 @@ keeping secret data in memory when not needed. </div> <hr> <div class="refsect2"> +<a name="nm-connection-clear-secrets-with-flags"></a><h3>nm_connection_clear_secrets_with_flags ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_connection_clear_secrets_with_flags + (<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#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()"><span class="type">NMSettingClearSecretsWithFlagsFn</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> +Clears and frees secrets determined by <em class="parameter"><code>func</code></em>. +</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>function to be called to determine whether a +specific secret should be cleared or not. <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>caller-supplied data passed to <em class="parameter"><code>func</code></em> +</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>, @@ -796,6 +835,37 @@ Returns the connection's D-Bus path. </div> <hr> <div class="refsect2"> +<a name="nm-connection-is-type"></a><h3>nm_connection_is_type ()</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_is_type (<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> *type</code></em>);</pre> +<p> +A convenience function to check if the given <em class="parameter"><code>connection</code></em> is a particular +type (ie wired, wifi, ppp, etc). Checks the <a class="link" href="NMSettingConnection.html#NMSettingConnection--type" title='The "type" property'><span class="type">"type"</span></a> +property of the connection and matches that against <em class="parameter"><code>type</code></em>. +</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>type</code></em> :</span></p></td> +<td>a setting name to check the connection's type against (like +<a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-SETTING-NAME:CAPS" title="NM_SETTING_WIRELESS_SETTING_NAME"><code class="literal">NM_SETTING_WIRELESS_SETTING_NAME</code></a> or <a class="link" href="NMSettingWired.html#NM-SETTING-WIRED-SETTING-NAME:CAPS" title="NM_SETTING_WIRED_SETTING_NAME"><code class="literal">NM_SETTING_WIRED_SETTING_NAME</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 of the given <em class="parameter"><code>type</code></em>, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> if not</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>, @@ -1344,6 +1414,29 @@ of the D-Bus path of the connection as provided by a settings service. <div class="refsect1"> <a name="NMConnection.signal-details"></a><h2>Signal Details</h2> <div class="refsect2"> +<a name="NMConnection-secrets-cleared"></a><h3>The <code class="literal">"secrets-cleared"</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#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-cleared signal is emitted when the secrets of a connection +are cleared. +</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>user_data</code></em> :</span></p></td> +<td>user data set when the signal handler was connected.</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<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, diff --git a/docs/libnm-util/html/NMSetting.html b/docs/libnm-util/html/NMSetting.html index 0cc1fd03..eec15973 100644 --- a/docs/libnm-util/html/NMSetting.html +++ b/docs/libnm-util/html/NMSetting.html @@ -56,6 +56,10 @@ enum <a class="link" href="NMSetting.html#NMSettingError">NMSetti enum <a class="link" href="NMSetting.html#NMSettingSecretFlags" title="enum NMSettingSecretFlags">NMSettingSecretFlags</a>; enum <a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags">NMSettingCompareFlags</a>; <a class="link" href="NMSetting.html#NMSetting-struct" title="NMSetting">NMSetting</a>; +<a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (<a class="link" href="NMSetting.html#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()">*NMSettingClearSecretsWithFlagsFn</a>) (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *secret</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingSecretFlags" title="enum NMSettingSecretFlags"><span class="type">NMSettingSecretFlags</span></a> flags</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="NMSetting.html#NMSettingClass" title="NMSettingClass">NMSettingClass</a>; <span class="returnvalue">void</span> (<a class="link" href="NMSetting.html#NMSettingValueIterFn" title="NMSettingValueIterFn ()">*NMSettingValueIterFn</a>) (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>, <em class="parameter"><code>const <span class="type">char</span> *key</code></em>, @@ -87,6 +91,9 @@ enum <a class="link" href="NMSetting.html#NMSettingDiffResult" ti <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">char</span> * <a class="link" href="NMSetting.html#nm-setting-to-string" title="nm_setting_to_string ()">nm_setting_to_string</a> (<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="NMSetting.html#nm-setting-clear-secrets" title="nm_setting_clear_secrets ()">nm_setting_clear_secrets</a> (<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="NMSetting.html#nm-setting-clear-secrets-with-flags" title="nm_setting_clear_secrets_with_flags ()">nm_setting_clear_secrets_with_flags</a> (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()"><span class="type">NMSettingClearSecretsWithFlagsFn</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-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> * <a class="link" href="NMSetting.html#nm-setting-need-secrets" title="nm_setting_need_secrets ()">nm_setting_need_secrets</a> (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</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="NMSetting.html#nm-setting-update-secrets" title="nm_setting_update_secrets ()">nm_setting_update_secrets</a> (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</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>, @@ -380,6 +387,42 @@ It should only be accessed through the functions described below. </div> <hr> <div class="refsect2"> +<a name="NMSettingClearSecretsWithFlagsFn"></a><h3>NMSettingClearSecretsWithFlagsFn ()</h3> +<pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> (*NMSettingClearSecretsWithFlagsFn) (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>, + <em class="parameter"><code>const <span class="type">char</span> *secret</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingSecretFlags" title="enum NMSettingSecretFlags"><span class="type">NMSettingSecretFlags</span></a> flags</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> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<tr> +<td><p><span class="term"><em class="parameter"><code>setting</code></em> :</span></p></td> +<td>The setting for which secrets are being iterated</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>secret</code></em> :</span></p></td> +<td>The secret's name</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>flags</code></em> :</span></p></td> +<td>The secret's flags, eg <a class="link" href="NMSetting.html#NM-SETTING-SECRET-FLAG-AGENT-OWNED:CAPS"><code class="literal">NM_SETTING_SECRET_FLAG_AGENT_OWNED</code></a> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td> +<td>User data passed to <a class="link" href="NMConnection.html#nm-connection-clear-secrets-with-flags" title="nm_connection_clear_secrets_with_flags ()"><code class="function">nm_connection_clear_secrets_with_flags()</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> to clear the secret, <a href="http://library.gnome.org/devel/glib/unstable/glib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to not clear the secret</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> <a name="NMSettingClass"></a><h3>NMSettingClass</h3> <pre class="programlisting">typedef struct { GObjectClass parent; @@ -414,10 +457,14 @@ It should only be accessed through the functions described below. const GParamSpec *prop_spec, NMSettingCompareFlags flags); + void (*clear_secrets_with_flags) (NMSetting *setting, + GParamSpec *pspec, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data); + /* Padding for future expansion */ void (*_reserved1) (void); void (*_reserved2) (void); - void (*_reserved3) (void); } NMSettingClass; </pre> <p> @@ -635,8 +682,9 @@ failed validation, and in what way that property failed validation. </tr> <tr> <td><p><span class="term"><em class="parameter"><code>all_settings</code></em> :</span></p></td> -<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> of all settings in the connection from which <em class="parameter"><code>setting</code></em> -came</td> +<td>a <a href="http://library.gnome.org/devel/glib/unstable/glib-Singly-Linked-Lists.html#GSList"><span class="type">GSList</span></a> of all settings +in the connection from which <em class="parameter"><code>setting</code></em> came. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NMSetting]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>error</code></em> :</span></p></td> @@ -851,6 +899,37 @@ leakage of information. </div> <hr> <div class="refsect2"> +<a name="nm-setting-clear-secrets-with-flags"></a><h3>nm_setting_clear_secrets_with_flags ()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> nm_setting_clear_secrets_with_flags (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>, + <em class="parameter"><code><a class="link" href="NMSetting.html#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()"><span class="type">NMSettingClearSecretsWithFlagsFn</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> +Clears and frees secrets determined by <em class="parameter"><code>func</code></em>. +</p> +<div class="variablelist"><table border="0"> +<col align="left" valign="top"> +<tbody> +<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> +</td> +</tr> +<tr> +<td><p><span class="term"><em class="parameter"><code>func</code></em> :</span></p></td> +<td>function to be called to determine whether a +specific secret should be cleared or not. <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>caller-supplied data passed to <em class="parameter"><code>func</code></em> +</td> +</tr> +</tbody> +</table></div> +</div> +<hr> +<div class="refsect2"> <a name="nm-setting-need-secrets"></a><h3>nm_setting_need_secrets ()</h3> <pre class="programlisting"><a href="http://library.gnome.org/devel/glib/unstable/glib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> * nm_setting_need_secrets (<em class="parameter"><code><a class="link" href="NMSetting.html" title="NMSetting"><span class="type">NMSetting</span></a> *setting</code></em>);</pre> <p> diff --git a/docs/libnm-util/html/api-index-full.html b/docs/libnm-util/html/api-index-full.html index f47ea2c9..d2b7bdbe 100644 --- a/docs/libnm-util/html/api-index-full.html +++ b/docs/libnm-util/html/api-index-full.html @@ -21,20 +21,10 @@ <td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td> </tr> <tr><td colspan="5" class="shortcuts"> -<a class="shortcut" href="#idx8">8</a> - | - <a class="shortcut" href="#idxA">A</a> - | - <a class="shortcut" href="#idxB">B</a> - | - <a class="shortcut" href="#idxC">C</a> - | - <a class="shortcut" href="#idxD">D</a> +<a class="shortcut" href="#idxC">C</a> | <a class="shortcut" href="#idxI">I</a> | - <a class="shortcut" href="#idxM">M</a> - | <a class="shortcut" href="#idxS">S</a> | <a class="shortcut" href="#idxT">T</a> @@ -49,36 +39,13 @@ <div class="index"> <div class="titlepage"><div><div><h2 class="title"> <a name="api-index-full"></a>API Index</h2></div></div></div> -<a name="idx"></a><a name="idx8"></a><h3 class="title">8</h3> -<dt> -NM80211ApFlags, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NM80211ApSecurityFlags, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NM80211Mode, enum in NetworkManager -</dt> -<dd></dd> -<a name="idxA"></a><h3 class="title">A</h3> -<dt> -NMActiveConnectionState, enum in NetworkManager -</dt> -<dd></dd> -<a name="idxB"></a><h3 class="title">B</h3> -<dt> -NMBluetoothCapabilities, enum in NetworkManager -</dt> -<dd></dd> -<a name="idxC"></a><h3 class="title">C</h3> +<a name="idx"></a><a name="idxC"></a><h3 class="title">C</h3> <dt> -NM_CHECK_VERSION, macro in nm-version +<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> -<a class="link" href="NMConnection.html#NMConnection-struct" title="NMConnection">NMConnection</a>, struct in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> +<a class="link" href="NMConnection.html#NMConnection-secrets-cleared" title='The "secrets-cleared" signal'>NMConnection::secrets-cleared</a>, object signal in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> </dt> <dd></dd> <dt> @@ -106,6 +73,10 @@ NM_CHECK_VERSION, macro in nm-version </dt> <dd></dd> <dt> +<a class="link" href="NMConnection.html#nm-connection-clear-secrets-with-flags" title="nm_connection_clear_secrets_with_flags ()">nm_connection_clear_secrets_with_flags</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> +</dt> +<dd></dd> +<dt> <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> @@ -222,6 +193,10 @@ NM_CHECK_VERSION, macro in nm-version </dt> <dd></dd> <dt> +<a class="link" href="NMConnection.html#nm-connection-is-type" title="nm_connection_is_type ()">nm_connection_is_type</a>, function in <a class="link" href="NMConnection.html" title="NMConnection">NMConnection</a> +</dt> +<dd></dd> +<dt> <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> @@ -269,275 +244,6 @@ NM_CHECK_VERSION, macro in nm-version <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="idxD"></a><h3 class="title">D</h3> -<dt> -NM_DBUS_IFACE_SETTINGS, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_IFACE_SETTINGS_CONNECTION, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_IFACE_SETTINGS_CONNECTION_SECRETS, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_ACCESS_POINT, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_ACTIVE_CONNECTION, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_AGENT_MANAGER, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE_BLUETOOTH, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE_MODEM, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE_WIMAX, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE_WIRED, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DEVICE_WIRELESS, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DHCP4_CONFIG, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_DHCP6_CONFIG, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_IP4_CONFIG, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_IP6_CONFIG, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_SECRET_AGENT, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_VPN, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_VPN_CONNECTION, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_INTERFACE_WIMAX_NSP, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_INVALID_VPN_CONNECTION, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_NO_ACTIVE_VPN_CONNECTION, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_NO_VPN_CONNECTIONS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_ACCESS_POINT, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_AGENT_MANAGER, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_SECRET_AGENT, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_SETTINGS, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_SETTINGS_CONNECTION, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_VPN, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_VPN_CONNECTION, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_PATH_WIMAX_NSP, macro in NetworkManager -</dt> -<dd></dd> -<dt> -NM_DBUS_SERVICE, macro in NetworkManager -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UCHAR, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_ARRAY_OF_UINT, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_IP6_ADDRESS, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_IP6_ROUTE, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_STRING, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_ARRAY_OF_UINT, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_IP6_ADDRESS, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_IP6_ROUTE, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_LIST_OF_STRING, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_MAP_OF_MAP_OF_VARIANT, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_MAP_OF_STRING, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -DBUS_TYPE_G_MAP_OF_VARIANT, macro in nm-dbus-glib-types -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_ALREADY_STARTED, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_ALREADY_STOPPED, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_BAD_ARGUMENTS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_CONNECT_FAILED, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_IP4_CONFIG, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_IP_CONFIG_BAD, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_LAUNCH_FAILED, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_LOGIN_BANNER, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_LOGIN_FAILED, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_STATE_CHANGE, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_SIGNAL_VPN_CONFIG_BAD, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_STARTING_IN_PROGRESS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_STOPPING_IN_PROGRESS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_DBUS_VPN_WRONG_STATE, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NMDeviceCapabilities, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NMDeviceModemCapabilities, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NMDeviceState, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NMDeviceStateReason, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NMDeviceType, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NMDeviceWifiCapabilities, enum in NetworkManager -</dt> -<dd></dd> <a name="idxI"></a><h3 class="title">I</h3> <dt> <a class="link" href="NMSettingIP4Config.html#NMIP4Address">NMIP4Address</a>, typedef in <a class="link" href="NMSettingIP4Config.html" title="NMSettingIP4Config">NMSettingIP4Config</a> @@ -763,19 +469,6 @@ NMDeviceWifiCapabilities, enum in NetworkManager <a class="link" href="NMSettingIP6Config.html#nm-ip6-route-unref" title="nm_ip6_route_unref ()">nm_ip6_route_unref</a>, function in <a class="link" href="NMSettingIP6Config.html" title="NMSettingIP6Config">NMSettingIP6Config</a> </dt> <dd></dd> -<a name="idxM"></a><h3 class="title">M</h3> -<dt> -NM_MAJOR_VERSION, macro in nm-version -</dt> -<dd></dd> -<dt> -NM_MICRO_VERSION, macro in nm-version -</dt> -<dd></dd> -<dt> -NM_MINOR_VERSION, macro in nm-version -</dt> -<dd></dd> <a name="idxS"></a><h3 class="title">S</h3> <dt> <a class="link" href="NMSetting.html#NMSetting-struct" title="NMSetting">NMSetting</a>, struct in <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> @@ -966,6 +659,10 @@ NM_MINOR_VERSION, macro in nm-version </dt> <dd></dd> <dt> +<a class="link" href="NMSetting.html#NMSettingClearSecretsWithFlagsFn" title="NMSettingClearSecretsWithFlagsFn ()">NMSettingClearSecretsWithFlagsFn</a>, user_function in <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> +</dt> +<dd></dd> +<dt> <a class="link" href="NMSetting.html#NMSettingCompareFlags" title="enum NMSettingCompareFlags">NMSettingCompareFlags</a>, enum in <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> </dt> <dd></dd> @@ -2098,6 +1795,10 @@ NM_MINOR_VERSION, macro in nm-version </dt> <dd></dd> <dt> +<a class="link" href="NMSetting.html#nm-setting-clear-secrets-with-flags" title="nm_setting_clear_secrets_with_flags ()">nm_setting_clear_secrets_with_flags</a>, function in <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> +</dt> +<dd></dd> +<dt> <a class="link" href="NMSetting.html#nm-setting-compare" title="nm_setting_compare ()">nm_setting_compare</a>, function in <a class="link" href="NMSetting.html" title="NMSetting">NMSetting</a> </dt> <dd></dd> @@ -3661,14 +3362,6 @@ NM_SETTING_SECRET_FLAGS_ALL, macro in nm-setting-private <a class="link" href="NMSettingWireless.html#NM-SETTING-WIRELESS-TX-POWER:CAPS" title="NM_SETTING_WIRELESS_TX_POWER">NM_SETTING_WIRELESS_TX_POWER</a>, macro in <a class="link" href="NMSettingWireless.html" title="NMSettingWireless">NMSettingWireless</a> </dt> <dd></dd> -<dt> -NMState, enum in NetworkManager -</dt> -<dd></dd> -<dt> -NM_STATE_CONNECTED, macro in NetworkManager -</dt> -<dd></dd> <a name="idxT"></a><h3 class="title">T</h3> <dt> <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> @@ -3865,93 +3558,9 @@ NM_STATE_CONNECTED, macro in NetworkManager <dd></dd> <a name="idxV"></a><h3 class="title">V</h3> <dt> -NMVPNConnectionState, enum in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NMVPNConnectionStateReason, enum in NetworkManagerVPN -</dt> -<dd></dd> -<dt> <a class="link" href="NMSettingVPN.html#NMVPNIterFunc" title="NMVPNIterFunc ()">NMVPNIterFunc</a>, user_function in <a class="link" href="NMSettingVPN.html" title="NMSettingVPN">NMSettingVPN</a> </dt> <dd></dd> -<dt> -NMVPNPluginFailure, enum in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NMVPNServiceState, enum in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_DBUS_PLUGIN_INTERFACE, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_DBUS_PLUGIN_PATH, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_ADDRESS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_BANNER, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_DNS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_DOMAIN, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_EXT_GATEWAY, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_GATEWAY, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_INT_GATEWAY, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_MSS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_MTU, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_NBNS, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_NEVER_DEFAULT, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_PREFIX, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_PTP, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_ROUTES, macro in NetworkManagerVPN -</dt> -<dd></dd> -<dt> -NM_VPN_PLUGIN_IP4_CONFIG_TUNDEV, macro in NetworkManagerVPN -</dt> -<dd></dd> <a name="idxW"></a><h3 class="title">W</h3> <dt> <a class="link" href="NMSettingWirelessSecurity.html#NMWepKeyType" title="enum NMWepKeyType">NMWepKeyType</a>, enum in <a class="link" href="NMSettingWirelessSecurity.html" title="NMSettingWirelessSecurity">NMSettingWirelessSecurity</a> diff --git a/docs/libnm-util/html/ch01.html b/docs/libnm-util/html/ch01.html index d97a8939..e21c769e 100644 --- a/docs/libnm-util/html/ch01.html +++ b/docs/libnm-util/html/ch01.html @@ -21,7 +21,7 @@ </tr></table> <div class="chapter"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id503033"></a>libnm-util API Reference</h2></div></div></div> +<a name="id408143"></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> diff --git a/docs/libnm-util/html/index.sgml b/docs/libnm-util/html/index.sgml index eda2a542..306a2efd 100644 --- a/docs/libnm-util/html/index.sgml +++ b/docs/libnm-util/html/index.sgml @@ -33,9 +33,11 @@ <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-clear-secrets-with-flags" href="libnm-util/NMConnection.html#nm-connection-clear-secrets-with-flags"> <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-is-type" href="libnm-util/NMConnection.html#nm-connection-is-type"> <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"> @@ -61,6 +63,7 @@ <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-cleared" href="libnm-util/NMConnection.html#NMConnection-secrets-cleared"> <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"> @@ -95,6 +98,7 @@ <ANCHOR id="NM-SETTING-COMPARE-FLAG-IGNORE-AGENT-OWNED-SECRETS:CAPS" href="libnm-util/NMSetting.html#NM-SETTING-COMPARE-FLAG-IGNORE-AGENT-OWNED-SECRETS:CAPS"> <ANCHOR id="NM-SETTING-COMPARE-FLAG-IGNORE-NOT-SAVED-SECRETS:CAPS" href="libnm-util/NMSetting.html#NM-SETTING-COMPARE-FLAG-IGNORE-NOT-SAVED-SECRETS:CAPS"> <ANCHOR id="NMSetting-struct" href="libnm-util/NMSetting.html#NMSetting-struct"> +<ANCHOR id="NMSettingClearSecretsWithFlagsFn" href="libnm-util/NMSetting.html#NMSettingClearSecretsWithFlagsFn"> <ANCHOR id="NMSettingClass" href="libnm-util/NMSetting.html#NMSettingClass"> <ANCHOR id="NMSettingValueIterFn" href="libnm-util/NMSetting.html#NMSettingValueIterFn"> <ANCHOR id="nm-setting-get-type" href="libnm-util/NMSetting.html#nm-setting-get-type"> @@ -116,6 +120,7 @@ <ANCHOR id="nm-setting-enumerate-values" href="libnm-util/NMSetting.html#nm-setting-enumerate-values"> <ANCHOR id="nm-setting-to-string" href="libnm-util/NMSetting.html#nm-setting-to-string"> <ANCHOR id="nm-setting-clear-secrets" href="libnm-util/NMSetting.html#nm-setting-clear-secrets"> +<ANCHOR id="nm-setting-clear-secrets-with-flags" href="libnm-util/NMSetting.html#nm-setting-clear-secrets-with-flags"> <ANCHOR id="nm-setting-need-secrets" href="libnm-util/NMSetting.html#nm-setting-need-secrets"> <ANCHOR id="nm-setting-update-secrets" href="libnm-util/NMSetting.html#nm-setting-update-secrets"> <ANCHOR id="nm-setting-get-secret-flags" href="libnm-util/NMSetting.html#nm-setting-get-secret-flags"> diff --git a/docs/libnm-util/html/libnm-util-nm-utils.html b/docs/libnm-util/html/libnm-util-nm-utils.html index 00c11126..d4440e8d 100644 --- a/docs/libnm-util/html/libnm-util-nm-utils.html +++ b/docs/libnm-util/html/libnm-util-nm-utils.html @@ -507,7 +507,8 @@ extended in the future. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> -<td>a list of <a class="link" href="NMSettingIP4Config.html#NMIP4Address"><span class="type">NMIP4Address</span></a> objects</td> +<td>a list of <a class="link" href="NMSettingIP4Config.html#NMIP4Address"><span class="type">NMIP4Address</span></a> objects. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NMIP4Address]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> @@ -561,7 +562,8 @@ be extended in the future. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> -<td>a list of <a class="link" href="NMSettingIP4Config.html#NMIP4Route"><span class="type">NMIP4Route</span></a> objects</td> +<td>a list of <a class="link" href="NMSettingIP4Config.html#NMIP4Route"><span class="type">NMIP4Route</span></a> objects. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NMIP4Route]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> @@ -675,7 +677,8 @@ future. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> -<td>a list of <a class="link" href="NMSettingIP6Config.html#NMIP6Address"><span class="type">NMIP6Address</span></a> objects</td> +<td>a list of <a class="link" href="NMSettingIP6Config.html#NMIP6Address"><span class="type">NMIP6Address</span></a> objects. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NMIP6Address]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> @@ -730,7 +733,8 @@ guaranteed to be stable and may be extended in the future. <tbody> <tr> <td><p><span class="term"><em class="parameter"><code>list</code></em> :</span></p></td> -<td>a list of <a class="link" href="NMSettingIP6Config.html#NMIP6Route"><span class="type">NMIP6Route</span></a> objects</td> +<td>a list of <a class="link" href="NMSettingIP6Config.html#NMIP6Route"><span class="type">NMIP6Route</span></a> objects. <span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> NMIP6Route]</span> +</td> </tr> <tr> <td><p><span class="term"><em class="parameter"><code>value</code></em> :</span></p></td> diff --git a/docs/libnm-util/html/libnm-util.devhelp b/docs/libnm-util/html/libnm-util.devhelp index 21ba39f2..7e48f817 100644 --- a/docs/libnm-util/html/libnm-util.devhelp +++ b/docs/libnm-util/html/libnm-util.devhelp @@ -50,9 +50,11 @@ <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_clear_secrets_with_flags ()" link="NMConnection.html#nm-connection-clear-secrets-with-flags"/> <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_is_type ()" link="NMConnection.html#nm-connection-is-type"/> <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"/> @@ -76,6 +78,7 @@ <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-cleared" signal" link="NMConnection.html#NMConnection-secrets-cleared"/> <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"/> @@ -89,6 +92,7 @@ <function name="enum NMSettingSecretFlags" link="NMSetting.html#NMSettingSecretFlags"/> <function name="enum NMSettingCompareFlags" link="NMSetting.html#NMSettingCompareFlags"/> <function name="NMSetting" link="NMSetting.html#NMSetting-struct"/> + <function name="NMSettingClearSecretsWithFlagsFn ()" link="NMSetting.html#NMSettingClearSecretsWithFlagsFn"/> <function name="NMSettingClass" link="NMSetting.html#NMSettingClass"/> <function name="NMSettingValueIterFn ()" link="NMSetting.html#NMSettingValueIterFn"/> <function name="nm_setting_get_type ()" link="NMSetting.html#nm-setting-get-type"/> @@ -104,6 +108,7 @@ <function name="nm_setting_enumerate_values ()" link="NMSetting.html#nm-setting-enumerate-values"/> <function name="nm_setting_to_string ()" link="NMSetting.html#nm-setting-to-string"/> <function name="nm_setting_clear_secrets ()" link="NMSetting.html#nm-setting-clear-secrets"/> + <function name="nm_setting_clear_secrets_with_flags ()" link="NMSetting.html#nm-setting-clear-secrets-with-flags"/> <function name="nm_setting_need_secrets ()" link="NMSetting.html#nm-setting-need-secrets"/> <function name="nm_setting_update_secrets ()" link="NMSetting.html#nm-setting-update-secrets"/> <function name="nm_setting_get_secret_flags ()" link="NMSetting.html#nm-setting-get-secret-flags"/> diff --git a/docs/libnm-util/html/libnm-util.devhelp2 b/docs/libnm-util/html/libnm-util.devhelp2 index a6544ddd..3c4ec11b 100644 --- a/docs/libnm-util/html/libnm-util.devhelp2 +++ b/docs/libnm-util/html/libnm-util.devhelp2 @@ -50,9 +50,11 @@ <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_clear_secrets_with_flags ()" link="NMConnection.html#nm-connection-clear-secrets-with-flags"/> <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_is_type ()" link="NMConnection.html#nm-connection-is-type"/> <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"/> @@ -76,6 +78,7 @@ <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-cleared" signal" link="NMConnection.html#NMConnection-secrets-cleared"/> <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"/> @@ -89,6 +92,7 @@ <keyword type="enum" name="enum NMSettingSecretFlags" link="NMSetting.html#NMSettingSecretFlags"/> <keyword type="enum" name="enum NMSettingCompareFlags" link="NMSetting.html#NMSettingCompareFlags"/> <keyword type="struct" name="NMSetting" link="NMSetting.html#NMSetting-struct"/> + <keyword type="function" name="NMSettingClearSecretsWithFlagsFn ()" link="NMSetting.html#NMSettingClearSecretsWithFlagsFn"/> <keyword type="struct" name="NMSettingClass" link="NMSetting.html#NMSettingClass"/> <keyword type="function" name="NMSettingValueIterFn ()" link="NMSetting.html#NMSettingValueIterFn"/> <keyword type="function" name="nm_setting_get_type ()" link="NMSetting.html#nm-setting-get-type"/> @@ -104,6 +108,7 @@ <keyword type="function" name="nm_setting_enumerate_values ()" link="NMSetting.html#nm-setting-enumerate-values"/> <keyword type="function" name="nm_setting_to_string ()" link="NMSetting.html#nm-setting-to-string"/> <keyword type="function" name="nm_setting_clear_secrets ()" link="NMSetting.html#nm-setting-clear-secrets"/> + <keyword type="function" name="nm_setting_clear_secrets_with_flags ()" link="NMSetting.html#nm-setting-clear-secrets-with-flags"/> <keyword type="function" name="nm_setting_need_secrets ()" link="NMSetting.html#nm-setting-need-secrets"/> <keyword type="function" name="nm_setting_update_secrets ()" link="NMSetting.html#nm-setting-update-secrets"/> <keyword type="function" name="nm_setting_get_secret_flags ()" link="NMSetting.html#nm-setting-get-secret-flags"/> diff --git a/docs/libnm-util/libnm-util-sections.txt b/docs/libnm-util/libnm-util-sections.txt index 06bd0d32..8a3cf261 100644 --- a/docs/libnm-util/libnm-util-sections.txt +++ b/docs/libnm-util/libnm-util-sections.txt @@ -657,6 +657,7 @@ NM_SETTING_NAME NMSettingSecretFlags NMSettingCompareFlags NMSetting +NMSettingClearSecretsWithFlagsFn NMSettingClass NMSettingValueIterFn nm_setting_get_type @@ -672,6 +673,7 @@ nm_setting_diff nm_setting_enumerate_values nm_setting_to_string nm_setting_clear_secrets +nm_setting_clear_secrets_with_flags nm_setting_need_secrets nm_setting_update_secrets nm_setting_get_secret_flags @@ -769,9 +771,11 @@ nm_connection_diff nm_connection_verify nm_connection_need_secrets nm_connection_clear_secrets +nm_connection_clear_secrets_with_flags nm_connection_update_secrets nm_connection_set_path nm_connection_get_path +nm_connection_is_type nm_connection_for_each_setting_value nm_connection_to_hash nm_connection_dump diff --git a/examples/C/Makefile.in b/examples/C/Makefile.in index ea5932e6..a7a04ce9 100644 --- a/examples/C/Makefile.in +++ b/examples/C/Makefile.in @@ -193,8 +193,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/examples/C/glib/Makefile.in b/examples/C/glib/Makefile.in index 1d637510..2d10c11d 100644 --- a/examples/C/glib/Makefile.in +++ b/examples/C/glib/Makefile.in @@ -239,8 +239,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/examples/C/qt/Makefile.in b/examples/C/qt/Makefile.in index a07fe015..d52d61b1 100644 --- a/examples/C/qt/Makefile.in +++ b/examples/C/qt/Makefile.in @@ -196,8 +196,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/examples/C/qt/add-connection-wired.cpp b/examples/C/qt/add-connection-wired.cpp index f9e3f6c1..475eafff 100644 --- a/examples/C/qt/add-connection-wired.cpp +++ b/examples/C/qt/add-connection-wired.cpp @@ -72,4 +72,6 @@ int main() { QDBusConnection::systemBus()); addConnection(interface, "__Test connection__"); + + return 0; } diff --git a/examples/Makefile.in b/examples/Makefile.in index a84d601c..735b9665 100644 --- a/examples/Makefile.in +++ b/examples/Makefile.in @@ -192,8 +192,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/examples/python/Makefile.am b/examples/python/Makefile.am index 7fa376ef..59e16088 100644 --- a/examples/python/Makefile.am +++ b/examples/python/Makefile.am @@ -6,6 +6,5 @@ EXTRA_DIST = \ list-connections.py \ show-bssids.py \ disconnect-device.py \ - get-active-connections.py - - + get-active-connections.py \ + list-devices.py diff --git a/examples/python/Makefile.in b/examples/python/Makefile.in index 983f843d..59f379e3 100644 --- a/examples/python/Makefile.in +++ b/examples/python/Makefile.in @@ -152,8 +152,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -461,7 +469,8 @@ uninstall-am: list-connections.py \ show-bssids.py \ disconnect-device.py \ - get-active-connections.py + get-active-connections.py \ + list-devices.py # 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. diff --git a/include/Makefile.in b/include/Makefile.in index fda755a2..27d7ad02 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -179,8 +179,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/include/nm-glib-compat.h b/include/nm-glib-compat.h index 9c1fe347..4b968710 100644 --- a/include/nm-glib-compat.h +++ b/include/nm-glib-compat.h @@ -16,7 +16,7 @@ * 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 Red Hat, Inc. + * (C) Copyright 2008 - 2011 Red Hat, Inc. */ #ifndef NM_GLIB_COMPAT_H @@ -24,14 +24,9 @@ #include <glib.h> -#if !GLIB_CHECK_VERSION(2,14,0) - -#define g_timeout_add_seconds(i, f, d) \ - g_timeout_add (i * G_USEC_PER_SEC, f, d) - -#define g_timeout_add_seconds_full(p, i, f, d, n) \ - g_timeout_add_full (p, i * G_USEC_PER_SEC, f, d, n) - -#endif /* !GLIB_CHECK_VERSION(2,14,0) */ +#if !GLIB_CHECK_VERSION(2,31,0) +#define g_value_set_schar g_value_set_char +#define g_value_get_schar g_value_get_char +#endif #endif /* NM_GLIB_COMPAT_H */ diff --git a/include/nm-version.h b/include/nm-version.h index 3d3adfba..b893219d 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 (0) +#define NM_MICRO_VERSION (1) /** * NM_CHECK_VERSION: diff --git a/include/wireless-helper.h b/include/wireless-helper.h index d150ef7d..2e4509a8 100644 --- a/include/wireless-helper.h +++ b/include/wireless-helper.h @@ -27,6 +27,6 @@ #include <sys/types.h> #include <linux/types.h> #include <sys/socket.h> -#include <net/if.h> +#include <linux/if.h> #include <wireless.h> diff --git a/initscript/Arch/Makefile.in b/initscript/Arch/Makefile.in index 86adf2b2..3b7349d4 100644 --- a/initscript/Arch/Makefile.in +++ b/initscript/Arch/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/Debian/Makefile.in b/initscript/Debian/Makefile.in index 8b3384b6..73daae51 100644 --- a/initscript/Debian/Makefile.in +++ b/initscript/Debian/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/Gentoo/Makefile.in b/initscript/Gentoo/Makefile.in index 5a1514ed..dd92b10e 100644 --- a/initscript/Gentoo/Makefile.in +++ b/initscript/Gentoo/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/Makefile.in b/initscript/Makefile.in index 582c9dd5..becf7c4b 100644 --- a/initscript/Makefile.in +++ b/initscript/Makefile.in @@ -202,8 +202,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/Mandriva/Makefile.in b/initscript/Mandriva/Makefile.in index d1006a13..f0412c2a 100644 --- a/initscript/Mandriva/Makefile.in +++ b/initscript/Mandriva/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/RedHat/Makefile.in b/initscript/RedHat/Makefile.in index 4449798b..2329b6e0 100644 --- a/initscript/RedHat/Makefile.in +++ b/initscript/RedHat/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/SUSE/Makefile.in b/initscript/SUSE/Makefile.in index 5621ccdb..bbc5a8a6 100644 --- a/initscript/SUSE/Makefile.in +++ b/initscript/SUSE/Makefile.in @@ -153,8 +153,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/Slackware/Makefile.in b/initscript/Slackware/Makefile.in index df3222ff..8a84419c 100644 --- a/initscript/Slackware/Makefile.in +++ b/initscript/Slackware/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/linexa/Makefile.in b/initscript/linexa/Makefile.in index 0b6124e2..de30d93a 100644 --- a/initscript/linexa/Makefile.in +++ b/initscript/linexa/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/initscript/paldo/Makefile.in b/initscript/paldo/Makefile.in index d7550c6a..c2a53bdf 100644 --- a/initscript/paldo/Makefile.in +++ b/initscript/paldo/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/introspection/Makefile.in b/introspection/Makefile.in index 95c3c47e..a92e5793 100644 --- a/introspection/Makefile.in +++ b/introspection/Makefile.in @@ -153,8 +153,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/introspection/all.xml.in b/introspection/all.xml.in index 4d2c2721..bcb8d045 100644 --- a/introspection/all.xml.in +++ b/introspection/all.xml.in @@ -43,6 +43,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <xi:include href="nm-settings-connection.xml"/> <xi:include href="nm-active-connection.xml"/> <xi:include href="nm-agent-manager.xml"/> +<xi:include href="nm-secret-agent.xml"/> <xi:include href="nm-vpn-connection.xml"/> <xi:include href="nm-vpn-plugin.xml"/> diff --git a/libnm-glib/Makefile.in b/libnm-glib/Makefile.in index 9728f7d9..513c607f 100644 --- a/libnm-glib/Makefile.in +++ b/libnm-glib/Makefile.in @@ -348,8 +348,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/libnm-glib/nm-device.c b/libnm-glib/nm-device.c index f06c1e4a..1f9f3671 100644 --- a/libnm-glib/nm-device.c +++ b/libnm-glib/nm-device.c @@ -1475,8 +1475,9 @@ deactivate_cb (DBusGProxy *proxy, /** * nm_device_disconnect: * @device: a #NMDevice - * @callback: (scope async): callback to be called when disconnect operation completes - * @user_data: caller-specific data passed to @callback + * @callback: (scope async) (allow-none): callback to be called when disconnect + * operation completes + * @user_data: (closure): caller-specific data passed to @callback * * Disconnects the device if currently connected, and prevents the device from * automatically connecting to networks until the next manual network connection diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c index cbcf2919..9a8a60f7 100644 --- a/libnm-glib/nm-object.c +++ b/libnm-glib/nm-object.c @@ -28,6 +28,7 @@ #include "nm-object-cache.h" #include "nm-object-private.h" #include "nm-dbus-glib-types.h" +#include "nm-glib-compat.h" #define DEBUG 0 @@ -438,11 +439,11 @@ _nm_object_handle_properties_changed (NMObject *object, } } -#define HANDLE_TYPE(ucase, lcase) \ +#define HANDLE_TYPE(ucase, lcase, getter) \ } else if (pspec->value_type == G_TYPE_##ucase) { \ if (G_VALUE_HOLDS_##ucase (value)) { \ g##lcase *param = (g##lcase *) field; \ - *param = g_value_get_##lcase (value); \ + *param = g_value_get_##getter (value); \ } else { \ success = FALSE; \ goto done; \ @@ -474,16 +475,16 @@ _nm_object_demarshal_generic (NMObject *object, success = FALSE; goto done; } - HANDLE_TYPE(BOOLEAN, boolean) - HANDLE_TYPE(CHAR, char) - HANDLE_TYPE(UCHAR, uchar) - HANDLE_TYPE(DOUBLE, double) - HANDLE_TYPE(INT, int) - HANDLE_TYPE(UINT, uint) - HANDLE_TYPE(INT64, int) - HANDLE_TYPE(UINT64, uint) - HANDLE_TYPE(LONG, long) - HANDLE_TYPE(ULONG, ulong) + HANDLE_TYPE(BOOLEAN, boolean, boolean) + HANDLE_TYPE(CHAR, char, schar) + HANDLE_TYPE(UCHAR, uchar, uchar) + HANDLE_TYPE(DOUBLE, double, double) + HANDLE_TYPE(INT, int, int) + HANDLE_TYPE(UINT, uint, uint) + HANDLE_TYPE(INT64, int, int) + HANDLE_TYPE(UINT64, uint, uint) + HANDLE_TYPE(LONG, long, long) + HANDLE_TYPE(ULONG, ulong, ulong) } else { g_warning ("%s: %s/%s unhandled type %s.", __func__, G_OBJECT_TYPE_NAME (object), pspec->name, diff --git a/libnm-glib/nm-remote-connection.c b/libnm-glib/nm-remote-connection.c index 57870c62..9e190d9e 100644 --- a/libnm-glib/nm-remote-connection.c +++ b/libnm-glib/nm-remote-connection.c @@ -94,15 +94,17 @@ update_cb (DBusGProxy *proxy, GError *error, gpointer user_data) RemoteCall *call = user_data; NMRemoteConnectionCommitFunc func = (NMRemoteConnectionCommitFunc) call->callback; - (*func)(call->self, error, call->user_data); + if (func != NULL) + (*func)(call->self, error, call->user_data); remote_call_complete (call->self, call); } /** * nm_remote_connection_commit_changes: * @connection: the #NMRemoteConnection - * @callback: (scope async): a function to be called when the commit completes - * @user_data: caller-specific data to be passed to @callback + * @callback: (scope async) (allow-none): a function to be called when the + * commit completes + * @user_data: (closure): caller-specific data to be passed to @callback * * Save any local changes to the settings and properties of this connection and * save them in the settings service. @@ -154,7 +156,7 @@ delete_cb (DBusGProxy *proxy, GError *error, gpointer user_data) * nm_remote_connection_delete: * @connection: the #NMRemoteConnection * @callback: (scope async) (allow-none): a function to be called when the delete completes - * @user_data: caller-specific data to be passed to @callback + * @user_data: (closure): caller-specific data to be passed to @callback * * Delete the connection. **/ @@ -197,8 +199,9 @@ get_secrets_cb (DBusGProxy *proxy, GHashTable *secrets, GError *error, gpointer * nm_remote_connection_get_secrets: * @connection: the #NMRemoteConnection * @setting_name: the #NMSetting object name to get secrets for - * @callback: (scope async): a function to be called when the update completes - * @user_data: caller-specific data to be passed to @callback + * @callback: (scope async): a function to be called when the update completes; + * must not be NULL + * @user_data: (closure): caller-specific data to be passed to @callback * * Request the connection's secrets. **/ diff --git a/libnm-glib/nm-remote-settings.c b/libnm-glib/nm-remote-settings.c index b6aaabb0..7658623f 100644 --- a/libnm-glib/nm-remote-settings.c +++ b/libnm-glib/nm-remote-settings.c @@ -501,7 +501,7 @@ add_connection_done (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data * @connection: the connection to add. Note that this object's settings will be * added, not the object itself * @callback: (scope async): callback to be called when the add operation completes - * @user_data: caller-specific data passed to @callback + * @user_data: (closure): caller-specific data passed to @callback * * Requests that the remote settings service add the given settings to a new * connection. @@ -594,7 +594,8 @@ save_hostname_cb (DBusGProxy *proxy, GError *error = NULL; dbus_g_proxy_end_call (proxy, call, &error, G_TYPE_INVALID); - info->callback (info->settings, error, info->callback_data); + if (info->callback != NULL) + info->callback (info->settings, error, info->callback_data); g_clear_error (&error); } @@ -603,8 +604,9 @@ save_hostname_cb (DBusGProxy *proxy, * @settings: the %NMRemoteSettings * @hostname: the new persistent hostname to set, or NULL to clear any existing * persistent hostname - * @callback: (scope async): callback to be called when the hostname operation completes - * @user_data: caller-specific data passed to @callback + * @callback: (scope async) (allow-none): callback to be called when the + * hostname operation completes + * @user_data: (closure): caller-specific data passed to @callback * * Requests that the machine's persistent hostname be set to the specified value * or cleared. diff --git a/libnm-glib/nm-secret-agent.c b/libnm-glib/nm-secret-agent.c index 90bdfbe7..1b413171 100644 --- a/libnm-glib/nm-secret-agent.c +++ b/libnm-glib/nm-secret-agent.c @@ -656,7 +656,7 @@ auto_register_cb (gpointer user_data) * @hints: (array zero-terminated=1): hints to the agent * @flags: flags that modify the behavior of the request * @callback: (scope async): a callback, invoked when the operation is done - * @callback_data: (closure): + * @user_data: (closure): caller-specific data to be passed to @callback * * Asyncronously retrieve secrets belonging to @connection for the * setting @setting_name. @flags indicate specific behavior that the secret @@ -673,7 +673,7 @@ nm_secret_agent_get_secrets (NMSecretAgent *self, const char **hints, NMSecretAgentGetSecretsFlags flags, NMSecretAgentGetSecretsFunc callback, - gpointer callback_data) + gpointer user_data) { g_return_if_fail (self != NULL); g_return_if_fail (NM_IS_SECRET_AGENT (self)); @@ -691,7 +691,7 @@ nm_secret_agent_get_secrets (NMSecretAgent *self, hints, flags, callback, - callback_data); + user_data); } /** @@ -699,7 +699,7 @@ nm_secret_agent_get_secrets (NMSecretAgent *self, * @self: a #NMSecretAgent * @connection: a #NMConnection * @callback: (scope async): a callback, invoked when the operation is done - * @callback_data: (closure): + * @user_data: (closure): caller-specific data to be passed to @callback * * Asyncronously ensure that all secrets inside @connection * are stored to disk. @@ -710,7 +710,7 @@ void nm_secret_agent_save_secrets (NMSecretAgent *self, NMConnection *connection, NMSecretAgentSaveSecretsFunc callback, - gpointer callback_data) + gpointer user_data) { g_return_if_fail (self != NULL); g_return_if_fail (NM_IS_SECRET_AGENT (self)); @@ -722,7 +722,7 @@ nm_secret_agent_save_secrets (NMSecretAgent *self, connection, nm_connection_get_path (connection), callback, - callback_data); + user_data); } /** @@ -730,7 +730,7 @@ nm_secret_agent_save_secrets (NMSecretAgent *self, * @self: a #NMSecretAgent * @connection: a #NMConnection * @callback: (scope async): a callback, invoked when the operation is done - * @callback_data: (closure): + * @user_data: (closure): caller-specific data to be passed to @callback * * Asynchronously ask the agent to delete all saved secrets belonging to * @connection. @@ -741,7 +741,7 @@ void nm_secret_agent_delete_secrets (NMSecretAgent *self, NMConnection *connection, NMSecretAgentDeleteSecretsFunc callback, - gpointer callback_data) + gpointer user_data) { g_return_if_fail (self != NULL); g_return_if_fail (NM_IS_SECRET_AGENT (self)); @@ -753,7 +753,7 @@ nm_secret_agent_delete_secrets (NMSecretAgent *self, connection, nm_connection_get_path (connection), callback, - callback_data); + user_data); } /**************************************************************/ diff --git a/libnm-glib/nm-secret-agent.h b/libnm-glib/nm-secret-agent.h index 6b209c44..2e0cce40 100644 --- a/libnm-glib/nm-secret-agent.h +++ b/libnm-glib/nm-secret-agent.h @@ -101,7 +101,7 @@ typedef struct { /* Called when the subclass should retrieve and return secrets. Subclass * must copy or reference any arguments it may require after returning from * this method, as the arguments will freed (except for 'agent', 'callback', - * and 'callback_data' of course). If the request is canceled, the callback + * and 'user_data' of course). If the request is canceled, the callback * should still be called, but with the NM_SECRET_AGENT_ERROR_AGENT_CANCELED * error. */ @@ -112,7 +112,7 @@ typedef struct { const char **hints, NMSecretAgentGetSecretsFlags flags, NMSecretAgentGetSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Called when the subclass should cancel an outstanding request to * get secrets for a given connection. Canceling the request MUST @@ -127,26 +127,26 @@ typedef struct { /* Called when the subclass should save the secrets contained in the * connection to backing storage. Subclass must copy or reference any * arguments it may require after returning from this method, as the - * arguments will freed (except for 'agent', 'callback', and 'callback_data' + * arguments will freed (except for 'agent', 'callback', and 'user_data' * of course). */ void (*save_secrets) (NMSecretAgent *agent, NMConnection *connection, const char *connection_path, NMSecretAgentSaveSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Called when the subclass should delete the secrets contained in the * connection from backing storage. Subclass must copy or reference any * arguments it may require after returning from this method, as the - * arguments will freed (except for 'agent', 'callback', and 'callback_data' + * arguments will freed (except for 'agent', 'callback', and 'user_data' * of course). */ void (*delete_secrets) (NMSecretAgent *agent, NMConnection *connection, const char *connection_path, NMSecretAgentDeleteSecretsFunc callback, - gpointer callback_data); + gpointer user_data); /* Signals */ void (*registration_result) (NMSecretAgent *agent, GError *error); @@ -172,17 +172,17 @@ void nm_secret_agent_get_secrets (NMSecretAgent *self, const char **hints, NMSecretAgentGetSecretsFlags flags, NMSecretAgentGetSecretsFunc callback, - gpointer callback_data); + gpointer user_data); void nm_secret_agent_save_secrets (NMSecretAgent *self, NMConnection *connection, NMSecretAgentSaveSecretsFunc callback, - gpointer callback_data); + gpointer user_data); void nm_secret_agent_delete_secrets (NMSecretAgent *self, NMConnection *connection, NMSecretAgentDeleteSecretsFunc callback, - gpointer callback_data); + gpointer user_data); G_END_DECLS diff --git a/libnm-glib/tests/Makefile.in b/libnm-glib/tests/Makefile.in index d4d5e6b5..d3c3ecaa 100644 --- a/libnm-glib/tests/Makefile.in +++ b/libnm-glib/tests/Makefile.in @@ -188,8 +188,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/libnm-util/Makefile.am b/libnm-util/Makefile.am index 0a29e9c5..1327565a 100644 --- a/libnm-util/Makefile.am +++ b/libnm-util/Makefile.am @@ -69,7 +69,7 @@ libnm_util_la_LIBADD = $(GLIB_LIBS) $(DBUS_LIBS) $(UUID_LIBS) SYMBOL_VIS_FILE=$(srcdir)/libnm-util.ver libnm_util_la_LDFLAGS = -Wl,--version-script=$(SYMBOL_VIS_FILE) \ - -version-info "2:0:0" + -version-info "4:0:2" if WITH_GNUTLS libnm_util_la_SOURCES += crypto_gnutls.c diff --git a/libnm-util/Makefile.in b/libnm-util/Makefile.in index d251ea8c..188b0a5e 100644 --- a/libnm-util/Makefile.in +++ b/libnm-util/Makefile.in @@ -314,8 +314,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -492,7 +500,7 @@ libnm_util_la_LIBADD = $(GLIB_LIBS) $(DBUS_LIBS) $(UUID_LIBS) \ $(am__append_3) $(am__append_6) SYMBOL_VIS_FILE = $(srcdir)/libnm-util.ver libnm_util_la_LDFLAGS = -Wl,--version-script=$(SYMBOL_VIS_FILE) \ - -version-info "2:0:0" + -version-info "4:0:2" libnm_util_includedir = $(includedir)/NetworkManager diff --git a/libnm-util/libnm-util.ver b/libnm-util/libnm-util.ver index 6052c275..53c2482e 100644 --- a/libnm-util/libnm-util.ver +++ b/libnm-util/libnm-util.ver @@ -2,6 +2,7 @@ global: nm_connection_add_setting; nm_connection_clear_secrets; + nm_connection_clear_secrets_with_flags; nm_connection_compare; nm_connection_create_setting; nm_connection_diff; @@ -31,6 +32,7 @@ global: nm_connection_get_setting_wireless_security; nm_connection_get_type; nm_connection_get_uuid; + nm_connection_is_type; nm_connection_lookup_setting_type; nm_connection_lookup_setting_type_by_quark; nm_connection_need_secrets; @@ -174,6 +176,7 @@ global: nm_setting_cdma_get_username; nm_setting_cdma_new; nm_setting_clear_secrets; + nm_setting_clear_secrets_with_flags; nm_setting_compare; nm_setting_connection_add_permission; nm_setting_connection_error_get_type; diff --git a/libnm-util/nm-connection.c b/libnm-util/nm-connection.c index 91fc3afa..cdc3b81f 100644 --- a/libnm-util/nm-connection.c +++ b/libnm-util/nm-connection.c @@ -127,7 +127,7 @@ enum { enum { SECRETS_UPDATED, - + SECRETS_CLEARED, LAST_SIGNAL }; @@ -950,12 +950,6 @@ nm_connection_need_secrets (NMConnection *connection, return name; } -static void -clear_setting_secrets (gpointer key, gpointer data, gpointer user_data) -{ - nm_setting_clear_secrets (NM_SETTING (data)); -} - /** * nm_connection_clear_secrets: * @connection: the #NMConnection @@ -966,12 +960,42 @@ clear_setting_secrets (gpointer key, gpointer data, gpointer user_data) void nm_connection_clear_secrets (NMConnection *connection) { - NMConnectionPrivate *priv; + GHashTableIter iter; + NMSetting *setting; g_return_if_fail (NM_IS_CONNECTION (connection)); - priv = NM_CONNECTION_GET_PRIVATE (connection); - g_hash_table_foreach (priv->settings, clear_setting_secrets, NULL); + g_hash_table_iter_init (&iter, NM_CONNECTION_GET_PRIVATE (connection)->settings); + while (g_hash_table_iter_next (&iter, NULL, (gpointer) &setting)) + nm_setting_clear_secrets (setting); + + g_signal_emit (connection, signals[SECRETS_CLEARED], 0); +} + +/** + * nm_connection_clear_secrets_with_flags: + * @connection: the #NMConnection + * @func: (scope call): function to be called to determine whether a + * specific secret should be cleared or not + * @user_data: caller-supplied data passed to @func + * + * Clears and frees secrets determined by @func. + **/ +void +nm_connection_clear_secrets_with_flags (NMConnection *connection, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data) +{ + GHashTableIter iter; + NMSetting *setting; + + g_return_if_fail (NM_IS_CONNECTION (connection)); + + g_hash_table_iter_init (&iter, NM_CONNECTION_GET_PRIVATE (connection)->settings); + while (g_hash_table_iter_next (&iter, NULL, (gpointer) &setting)) + nm_setting_clear_secrets_with_flags (setting, func, user_data); + + g_signal_emit (connection, signals[SECRETS_CLEARED], 0); } /** @@ -1027,6 +1051,37 @@ nm_connection_to_hash (NMConnection *connection, NMSettingHashFlags flags) } /** + * nm_connection_is_type: + * @connection: the #NMConnection + * @type: a setting name to check the connection's type against (like + * %NM_SETTING_WIRELESS_SETTING_NAME or %NM_SETTING_WIRED_SETTING_NAME) + * + * A convenience function to check if the given @connection is a particular + * type (ie wired, wifi, ppp, etc). Checks the #NMSettingConnection:type + * property of the connection and matches that against @type. + * + * Returns: %TRUE if the connection is of the given @type, %FALSE if not + **/ +gboolean +nm_connection_is_type (NMConnection *connection, const char *type) +{ + NMSettingConnection *s_con; + const char *type2; + + g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); + g_return_val_if_fail (type != NULL, FALSE); + + s_con = nm_connection_get_setting_connection (connection); + g_assert (s_con); + + type2 = nm_setting_connection_get_connection_type (s_con); + g_assert (type2); + + return !strcmp (type2, type); +} + +/** * nm_connection_for_each_setting_value: * @connection: the #NMConnection * @func: (scope call): user-supplied function called for each setting's property @@ -1609,5 +1664,20 @@ nm_connection_class_init (NMConnectionClass *klass) g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + + /** + * NMConnection::secrets-cleared: + * @connection: the object on which the signal is emitted + * + * The ::secrets-cleared signal is emitted when the secrets of a connection + * are cleared. + */ + signals[SECRETS_CLEARED] = + g_signal_new ("secrets-cleared", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + 0, NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); } diff --git a/libnm-util/nm-connection.h b/libnm-util/nm-connection.h index 3cd18747..069dc84c 100644 --- a/libnm-util/nm-connection.h +++ b/libnm-util/nm-connection.h @@ -147,6 +147,10 @@ const char * nm_connection_need_secrets (NMConnection *connection, void nm_connection_clear_secrets (NMConnection *connection); +void nm_connection_clear_secrets_with_flags (NMConnection *connection, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data); + gboolean nm_connection_update_secrets (NMConnection *connection, const char *setting_name, GHashTable *secrets, @@ -157,6 +161,8 @@ void nm_connection_set_path (NMConnection *connection, const char * nm_connection_get_path (NMConnection *connection); +gboolean nm_connection_is_type (NMConnection *connection, const char *type); + void nm_connection_for_each_setting_value (NMConnection *connection, NMSettingValueIterFn func, gpointer user_data); diff --git a/libnm-util/nm-param-spec-specialized.c b/libnm-util/nm-param-spec-specialized.c index 7e921bca..82ec6a40 100644 --- a/libnm-util/nm-param-spec-specialized.c +++ b/libnm-util/nm-param-spec-specialized.c @@ -19,11 +19,12 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * (C) Copyright 2007 - 2010 Red Hat, Inc. + * (C) Copyright 2007 - 2011 Red Hat, Inc. * (C) Copyright 2007 - 2008 Novell, Inc. */ #include "nm-param-spec-specialized.h" +#include "nm-glib-compat.h" struct _NMParamSpecSpecialized { GParamSpec parent; @@ -92,8 +93,8 @@ _gvalues_compare_fixed (const GValue *value1, const GValue *value2) switch (G_VALUE_TYPE (value1)) { case G_TYPE_CHAR: { - gchar val1 = g_value_get_char (value1); - gchar val2 = g_value_get_char (value2); + gchar val1 = g_value_get_schar (value1); + gchar val2 = g_value_get_schar (value2); if (val1 != val2) ret = val1 < val2 ? -1 : val1 > val2; break; diff --git a/libnm-util/nm-setting-gsm.c b/libnm-util/nm-setting-gsm.c index 7033541b..80d3fd31 100644 --- a/libnm-util/nm-setting-gsm.c +++ b/libnm-util/nm-setting-gsm.c @@ -768,7 +768,7 @@ nm_setting_gsm_class_init (NMSettingGsmClass *setting_class) g_object_class_install_property (object_class, PROP_HOME_ONLY, g_param_spec_boolean (NM_SETTING_GSM_HOME_ONLY, - "PIN", + "Home Only", "When TRUE, only connections to the home network will " "be allowed. Connections to roaming networks will " "not be made.", diff --git a/libnm-util/nm-setting-serial.c b/libnm-util/nm-setting-serial.c index 7ed15e9e..24e6253e 100644 --- a/libnm-util/nm-setting-serial.c +++ b/libnm-util/nm-setting-serial.c @@ -26,6 +26,7 @@ #include <string.h> #include "nm-setting-serial.h" +#include "nm-glib-compat.h" /** * SECTION:nm-setting-serial @@ -214,7 +215,7 @@ set_property (GObject *object, guint prop_id, priv->bits = g_value_get_uint (value); break; case PROP_PARITY: - priv->parity = g_value_get_char (value); + priv->parity = g_value_get_schar (value); break; case PROP_STOPBITS: priv->stopbits = g_value_get_uint (value); @@ -242,7 +243,7 @@ get_property (GObject *object, guint prop_id, g_value_set_uint (value, nm_setting_serial_get_bits (setting)); break; case PROP_PARITY: - g_value_set_char (value, nm_setting_serial_get_parity (setting)); + g_value_set_schar (value, nm_setting_serial_get_parity (setting)); break; case PROP_STOPBITS: g_value_set_uint (value, nm_setting_serial_get_stopbits (setting)); diff --git a/libnm-util/nm-setting-vpn.c b/libnm-util/nm-setting-vpn.c index 50091cb9..755c1a45 100644 --- a/libnm-util/nm-setting-vpn.c +++ b/libnm-util/nm-setting-vpn.c @@ -612,6 +612,30 @@ compare_property (NMSetting *setting, } static void +clear_secrets_with_flags (NMSetting *setting, + GParamSpec *pspec, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data) +{ + NMSettingVPNPrivate *priv = NM_SETTING_VPN_GET_PRIVATE (setting); + GHashTableIter iter; + const char *secret; + + if (priv->secrets == NULL) + return; + + /* Iterate through secrets hash and check each entry */ + g_hash_table_iter_init (&iter, priv->secrets); + while (g_hash_table_iter_next (&iter, (gpointer) &secret, NULL)) { + NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; + + nm_setting_get_secret_flags (setting, secret, &flags, NULL); + if (func (setting, pspec->name, flags, user_data) == TRUE) + g_hash_table_iter_remove (&iter); + } +} + +static void destroy_one_secret (gpointer data) { char *secret = (char *) data; @@ -733,6 +757,7 @@ nm_setting_vpn_class_init (NMSettingVPNClass *setting_class) parent_class->set_secret_flags = set_secret_flags; parent_class->need_secrets = need_secrets; parent_class->compare_property = compare_property; + parent_class->clear_secrets_with_flags = clear_secrets_with_flags; /* Properties */ /** diff --git a/libnm-util/nm-setting.c b/libnm-util/nm-setting.c index 3573f888..2b3bdc58 100644 --- a/libnm-util/nm-setting.c +++ b/libnm-util/nm-setting.c @@ -308,8 +308,8 @@ nm_setting_get_name (NMSetting *setting) /** * nm_setting_verify: * @setting: the #NMSetting to verify - * @all_settings: a #GSList of all settings in the connection from which @setting - * came + * @all_settings: (element-type NMSetting): a #GSList of all settings + * in the connection from which @setting came * @error: location to store error, or %NULL * * Validates the setting. Each setting's properties have allowed values, and @@ -648,6 +648,60 @@ nm_setting_clear_secrets (NMSetting *setting) g_free (property_specs); } +static void +clear_secrets_with_flags (NMSetting *setting, + GParamSpec *pspec, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data) +{ + GValue value = { 0 }; + NMSettingSecretFlags flags = NM_SETTING_SECRET_FLAG_NONE; + + /* Clear the secret if the user function says to do so */ + nm_setting_get_secret_flags (setting, pspec->name, &flags, NULL); + if (func (setting, pspec->name, flags, user_data) == TRUE) { + g_value_init (&value, pspec->value_type); + g_param_value_set_default (pspec, &value); + g_object_set_property (G_OBJECT (setting), pspec->name, &value); + g_value_unset (&value); + } +} + +/** + * nm_setting_clear_secrets_with_flags: + * @setting: the #NMSetting + * @func: (scope call): function to be called to determine whether a + * specific secret should be cleared or not + * @user_data: caller-supplied data passed to @func + * + * Clears and frees secrets determined by @func. + **/ +void +nm_setting_clear_secrets_with_flags (NMSetting *setting, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data) +{ + GParamSpec **property_specs; + guint n_property_specs; + guint i; + + g_return_if_fail (setting); + g_return_if_fail (NM_IS_SETTING (setting)); + g_return_if_fail (func != NULL); + + property_specs = g_object_class_list_properties (G_OBJECT_GET_CLASS (setting), &n_property_specs); + for (i = 0; i < n_property_specs; i++) { + if (property_specs[i]->flags & NM_SETTING_PARAM_SECRET) { + NM_SETTING_GET_CLASS (setting)->clear_secrets_with_flags (setting, + property_specs[i], + func, + user_data); + } + } + + g_free (property_specs); +} + /** * nm_setting_need_secrets: * @setting: the #NMSetting @@ -1029,6 +1083,7 @@ nm_setting_class_init (NMSettingClass *setting_class) setting_class->get_secret_flags = get_secret_flags; setting_class->set_secret_flags = set_secret_flags; setting_class->compare_property = compare_property; + setting_class->clear_secrets_with_flags = clear_secrets_with_flags; /* Properties */ diff --git a/libnm-util/nm-setting.h b/libnm-util/nm-setting.h index e21efd81..3edf2a1f 100644 --- a/libnm-util/nm-setting.h +++ b/libnm-util/nm-setting.h @@ -150,6 +150,21 @@ typedef struct { GObject parent; } NMSetting; + +/** + * NMSettingClearSecretsWithFlagsFn: + * @setting: The setting for which secrets are being iterated + * @secret: The secret's name + * @flags: The secret's flags, eg %NM_SETTING_SECRET_FLAG_AGENT_OWNED + * @user_data: User data passed to nm_connection_clear_secrets_with_flags() + * + * Returns: %TRUE to clear the secret, %FALSE to not clear the secret + */ +typedef gboolean (*NMSettingClearSecretsWithFlagsFn) (NMSetting *setting, + const char *secret, + NMSettingSecretFlags flags, + gpointer user_data); + typedef struct { GObjectClass parent; @@ -183,10 +198,14 @@ typedef struct { const GParamSpec *prop_spec, NMSettingCompareFlags flags); + void (*clear_secrets_with_flags) (NMSetting *setting, + GParamSpec *pspec, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data); + /* Padding for future expansion */ void (*_reserved1) (void); void (*_reserved2) (void); - void (*_reserved3) (void); } NMSettingClass; /** @@ -269,6 +288,11 @@ char *nm_setting_to_string (NMSetting *setting); /* Secrets */ void nm_setting_clear_secrets (NMSetting *setting); + +void nm_setting_clear_secrets_with_flags (NMSetting *setting, + NMSettingClearSecretsWithFlagsFn func, + gpointer user_data); + GPtrArray *nm_setting_need_secrets (NMSetting *setting); gboolean nm_setting_update_secrets (NMSetting *setting, GHashTable *secrets, diff --git a/libnm-util/nm-utils.c b/libnm-util/nm-utils.c index d8bcf349..9d4418e4 100644 --- a/libnm-util/nm-utils.c +++ b/libnm-util/nm-utils.c @@ -490,7 +490,7 @@ nm_utils_gvalue_hash_dup (GHashTable *hash) } /** - * nm_utils_slist_free: + * nm_utils_slist_free: (skip) * @list: a #GSList * @elem_destroy_fn: user function called for each element in @list * @@ -1373,7 +1373,7 @@ nm_utils_ip4_addresses_from_gvalue (const GValue *value) /** * nm_utils_ip4_addresses_to_gvalue: - * @list: a list of #NMIP4Address objects + * @list: (element-type NMIP4Address): a list of #NMIP4Address objects * @value: a pointer to a #GValue into which to place the converted addresses, * which should be unset by the caller (when no longer needed) with * g_value_unset(). @@ -1456,7 +1456,7 @@ nm_utils_ip4_routes_from_gvalue (const GValue *value) /** * nm_utils_ip4_routes_to_gvalue: - * @list: a list of #NMIP4Route objects + * @list: (element-type NMIP4Route): a list of #NMIP4Route objects * @value: a pointer to a #GValue into which to place the converted routes, * which should be unset by the caller (when no longer needed) with * g_value_unset(). @@ -1664,7 +1664,7 @@ nm_utils_ip6_addresses_from_gvalue (const GValue *value) /** * nm_utils_ip6_addresses_to_gvalue: - * @list: a list of #NMIP6Address objects + * @list: (element-type NMIP6Address): a list of #NMIP6Address objects * @value: a pointer to a #GValue into which to place the converted addresses, * which should be unset by the caller (when no longer needed) with * g_value_unset(). @@ -1786,7 +1786,7 @@ nm_utils_ip6_routes_from_gvalue (const GValue *value) /** * nm_utils_ip6_routes_to_gvalue: - * @list: a list of #NMIP6Route objects + * @list: (element-type NMIP6Route): a list of #NMIP6Route objects * @value: a pointer to a #GValue into which to place the converted routes, * which should be unset by the caller (when no longer needed) with * g_value_unset(). diff --git a/libnm-util/tests/Makefile.in b/libnm-util/tests/Makefile.in index c4919ffc..b8aa1791 100644 --- a/libnm-util/tests/Makefile.in +++ b/libnm-util/tests/Makefile.in @@ -250,8 +250,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/libnm-util/tests/certs/Makefile.in b/libnm-util/tests/certs/Makefile.in index 5149078b..b0fbee9e 100644 --- a/libnm-util/tests/certs/Makefile.in +++ b/libnm-util/tests/certs/Makefile.in @@ -161,8 +161,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/man/Makefile.in b/man/Makefile.in index ef05bde1..dd6dfdf6 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -185,8 +185,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/man/nmcli.1 b/man/nmcli.1 index 5afb802b..03ed664c 100644 --- a/man/nmcli.1 +++ b/man/nmcli.1 @@ -20,9 +20,9 @@ .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" -.\" Copyright (C) 2010 Red Hat, Inc. +.\" Copyright (C) 2010 - 2011 Red Hat, Inc. .\" -.TH NMCLI "1" "22 September 2010" +.TH NMCLI "1" "6 September 2011" .SH NAME nmcli \- command-line tool for controlling NetworkManager @@ -201,7 +201,7 @@ Connections .br Get information about NetworkManager's connections. .TP -.SS \fICOMMAND\fP := { list | status | up | down } +.SS \fICOMMAND\fP := { list | status | up | down | delete } .sp .RS .TP @@ -226,7 +226,7 @@ Print status of active connections. No simple reference. .fi .TP -.B up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [\-\-nowait] [\-\-timeout <timeout>] +.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [\-\-nowait] [\-\-timeout <timeout>] .br Activate a connection. The connection is identified by its name using \fIid\fP or UUID using \fIuuid\fP. For requiring particular device to activate @@ -255,6 +255,18 @@ interface: org.freedesktop.NetworkManager method: DeactivateConnection arguments: according to arguments .fi +.TP +.B delete id <id> | uuid <id> +.br +Delete a configured connection. The connection to delete is specified with +\fIid\fP (connection name) or \fIuuid\fP (connection UUID). +.br +.nf +\fBReference to D-Bus:\fP +interface: org.freedesktop.NetworkManager.Settings.Connection +method: Delete +arguments: none +.fi .RE .TP @@ -303,9 +315,9 @@ method: Disconnect arguments: none .fi .TP -.B wifi [list [iface <iface>] [hwaddr <hwaddr>]] +.B wifi [list [iface <iface>] [bssid <BSSID>]] .br -List available WiFi access points. \fIiface\fP and \fIhwaddr\fP options +List available WiFi access points. \fIiface\fP and \fIbssid\fP options can be used to get just APs for particular interface or specific AP, respectively. .br @@ -329,7 +341,7 @@ or null. .RE Notes about localization: .br -Be aware that \fInmcli\fP is localized and that's why the output depends on +Be aware that \fInmcli\fP is localized and that's why the output depends on your environment. It's important to realize that especially when you parse the output. .br diff --git a/man/nmcli.1.in b/man/nmcli.1.in index 5afb802b..03ed664c 100644 --- a/man/nmcli.1.in +++ b/man/nmcli.1.in @@ -20,9 +20,9 @@ .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, .\" USA. .\" -.\" Copyright (C) 2010 Red Hat, Inc. +.\" Copyright (C) 2010 - 2011 Red Hat, Inc. .\" -.TH NMCLI "1" "22 September 2010" +.TH NMCLI "1" "6 September 2011" .SH NAME nmcli \- command-line tool for controlling NetworkManager @@ -201,7 +201,7 @@ Connections .br Get information about NetworkManager's connections. .TP -.SS \fICOMMAND\fP := { list | status | up | down } +.SS \fICOMMAND\fP := { list | status | up | down | delete } .sp .RS .TP @@ -226,7 +226,7 @@ Print status of active connections. No simple reference. .fi .TP -.B up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [\-\-nowait] [\-\-timeout <timeout>] +.B up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [\-\-nowait] [\-\-timeout <timeout>] .br Activate a connection. The connection is identified by its name using \fIid\fP or UUID using \fIuuid\fP. For requiring particular device to activate @@ -255,6 +255,18 @@ interface: org.freedesktop.NetworkManager method: DeactivateConnection arguments: according to arguments .fi +.TP +.B delete id <id> | uuid <id> +.br +Delete a configured connection. The connection to delete is specified with +\fIid\fP (connection name) or \fIuuid\fP (connection UUID). +.br +.nf +\fBReference to D-Bus:\fP +interface: org.freedesktop.NetworkManager.Settings.Connection +method: Delete +arguments: none +.fi .RE .TP @@ -303,9 +315,9 @@ method: Disconnect arguments: none .fi .TP -.B wifi [list [iface <iface>] [hwaddr <hwaddr>]] +.B wifi [list [iface <iface>] [bssid <BSSID>]] .br -List available WiFi access points. \fIiface\fP and \fIhwaddr\fP options +List available WiFi access points. \fIiface\fP and \fIbssid\fP options can be used to get just APs for particular interface or specific AP, respectively. .br @@ -329,7 +341,7 @@ or null. .RE Notes about localization: .br -Be aware that \fInmcli\fP is localized and that's why the output depends on +Be aware that \fInmcli\fP is localized and that's why the output depends on your environment. It's important to realize that especially when you parse the output. .br diff --git a/marshallers/Makefile.in b/marshallers/Makefile.in index 5e2e86db..5901c3a4 100644 --- a/marshallers/Makefile.in +++ b/marshallers/Makefile.in @@ -183,8 +183,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/po/de.po b/po/de.po index eb02b0f8..0aa41eea 100644 --- a/po/de.po +++ b/po/de.po @@ -15,8 +15,8 @@ msgstr "" "Project-Id-Version: NetworkManager HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=NetworkManager&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-03-31 15:25+0000\n" -"PO-Revision-Date: 2011-03-31 21:08+0200\n" +"POT-Creation-Date: 2011-08-20 15:25+0000\n" +"PO-Revision-Date: 2011-08-31 13:16+0100\n" "Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n" "MIME-Version: 1.0\n" @@ -121,12 +121,12 @@ msgstr "" "nowait] [--timeout <timeout>]\n" " down id <Kennung> | uuid <Kennung>\n" -#: ../cli/src/connections.c:220 ../cli/src/connections.c:542 +#: ../cli/src/connections.c:220 ../cli/src/connections.c:544 #, c-format msgid "Error: 'con list': %s" msgstr "Fehler: »Verb. Liste«: %s" -#: ../cli/src/connections.c:222 ../cli/src/connections.c:544 +#: ../cli/src/connections.c:222 ../cli/src/connections.c:546 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Fehler: »Verb. Liste«: %s; erlaubte Felder: %s" @@ -135,15 +135,15 @@ msgstr "Fehler: »Verb. Liste«: %s; erlaubte Felder: %s" msgid "Connection details" msgstr "Verbindungsinformationen" -#: ../cli/src/connections.c:417 +#: ../cli/src/connections.c:419 msgid "never" msgstr "nie" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../cli/src/connections.c:418 ../cli/src/connections.c:419 -#: ../cli/src/connections.c:597 ../cli/src/connections.c:599 +#: ../cli/src/connections.c:420 ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 ../cli/src/connections.c:601 #: ../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 @@ -162,8 +162,8 @@ msgstr "nie" msgid "yes" msgstr "ja" -#: ../cli/src/connections.c:418 ../cli/src/connections.c:419 -#: ../cli/src/connections.c:597 ../cli/src/connections.c:599 +#: ../cli/src/connections.c:420 ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 ../cli/src/connections.c:601 #: ../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 @@ -182,14 +182,14 @@ msgstr "ja" msgid "no" msgstr "nein" -#: ../cli/src/connections.c:493 +#: ../cli/src/connections.c:495 msgid "Connection list" msgstr "Verbindungsliste" -#: ../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/connections.c:508 ../cli/src/connections.c:1368 +#: ../cli/src/connections.c:1383 ../cli/src/connections.c:1392 +#: ../cli/src/connections.c:1402 ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1509 ../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 @@ -197,42 +197,42 @@ msgstr "Verbindungsliste" msgid "Error: %s argument is missing." msgstr "Fehler: Argument %s fehlt." -#: ../cli/src/connections.c:519 +#: ../cli/src/connections.c:521 #, c-format msgid "Error: %s - no such connection." msgstr "Fehler: Verbindung %s existiert nicht." -#: ../cli/src/connections.c:525 ../cli/src/connections.c:1437 -#: ../cli/src/connections.c:1536 ../cli/src/devices.c:987 +#: ../cli/src/connections.c:527 ../cli/src/connections.c:1427 +#: ../cli/src/connections.c:1526 ../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 "Unbekannter Parameter: %s\n" -#: ../cli/src/connections.c:534 +#: ../cli/src/connections.c:536 #, c-format msgid "Error: no valid parameter specified." msgstr "Fehler: Es wurde kein gültiger Parameter angegeben." -#: ../cli/src/connections.c:549 ../cli/src/connections.c:1627 +#: ../cli/src/connections.c:551 ../cli/src/connections.c:1617 #: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463 #, c-format msgid "Error: %s." msgstr "Fehler: %s." -#: ../cli/src/connections.c:637 +#: ../cli/src/connections.c:639 #, c-format msgid "Error: 'con status': %s" msgstr "Fehler: »Verb. Status«: %s" -#: ../cli/src/connections.c:639 +#: ../cli/src/connections.c:641 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Fehler: »Verb. Status«: %s; erlaubte Felder: %s" -#: ../cli/src/connections.c:647 ../cli/src/connections.c:1452 -#: ../cli/src/connections.c:1551 ../cli/src/devices.c:1014 +#: ../cli/src/connections.c:649 ../cli/src/connections.c:1442 +#: ../cli/src/connections.c:1541 ../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 @@ -240,227 +240,228 @@ msgid "Error: Can't find out if NetworkManager is running: %s." msgstr "" "Fehler: Es kann nicht erkannt werden, ob NetworkManager ausgeführt wird: %s." -#: ../cli/src/connections.c:651 ../cli/src/connections.c:1456 -#: ../cli/src/connections.c:1555 ../cli/src/devices.c:1018 +#: ../cli/src/connections.c:653 ../cli/src/connections.c:1446 +#: ../cli/src/connections.c:1545 ../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 "Fehler: NetworkManager wird nicht ausgeführt" -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:661 msgid "Active connections" msgstr "Aktive Verbindungen" -#: ../cli/src/connections.c:1095 +#: ../cli/src/connections.c:1085 #, c-format msgid "no active connection on device '%s'" msgstr "Keine aktive Verbindung auf Gerät »%s«" -#: ../cli/src/connections.c:1103 +#: ../cli/src/connections.c:1093 #, c-format msgid "no active connection or device" msgstr "Keine aktive Verbindung oder Gerät" -#: ../cli/src/connections.c:1174 +#: ../cli/src/connections.c:1164 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "Gerät »%s« ist nicht mit der Verbindung »%s« kompatibel" -#: ../cli/src/connections.c:1176 +#: ../cli/src/connections.c:1166 #, c-format msgid "no device found for connection '%s'" msgstr "Für die Verbindung »%s« wurde kein Gerät gefunden" -#: ../cli/src/connections.c:1187 +#: ../cli/src/connections.c:1177 msgid "activating" msgstr "wird aktiviert" -#: ../cli/src/connections.c:1189 +#: ../cli/src/connections.c:1179 msgid "activated" msgstr "aktiviert" -#: ../cli/src/connections.c:1191 ../cli/src/devices.c:304 +#: ../cli/src/connections.c:1181 ../cli/src/devices.c:304 msgid "deactivating" msgstr "wird deaktiviert" -#: ../cli/src/connections.c:1194 ../cli/src/connections.c:1217 -#: ../cli/src/connections.c:1250 ../cli/src/devices.c:308 +#: ../cli/src/connections.c:1184 ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1240 ../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: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 +#: ../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 "unbekannt" -#: ../cli/src/connections.c:1203 +#: ../cli/src/connections.c:1193 msgid "VPN connecting (prepare)" msgstr "VPN wird verbunden (wird vorbereitet)" -#: ../cli/src/connections.c:1205 +#: ../cli/src/connections.c:1195 msgid "VPN connecting (need authentication)" msgstr "VPN wird verbunden (Legitimierung wird benötigt)" -#: ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1197 msgid "VPN connecting" msgstr "VPN wird verbunden" -#: ../cli/src/connections.c:1209 +#: ../cli/src/connections.c:1199 msgid "VPN connecting (getting IP configuration)" msgstr "VPN wird verbunden (IP-Einstellungen werden ermittelt)" -#: ../cli/src/connections.c:1211 +#: ../cli/src/connections.c:1201 msgid "VPN connected" msgstr "VPN verbunden" -#: ../cli/src/connections.c:1213 +#: ../cli/src/connections.c:1203 msgid "VPN connection failed" msgstr "VPN-Verbindung gescheitert" -#: ../cli/src/connections.c:1215 +#: ../cli/src/connections.c:1205 msgid "VPN disconnected" msgstr "VPN getrennt" -#: ../cli/src/connections.c:1226 +#: ../cli/src/connections.c:1216 msgid "unknown reason" msgstr "unbekannter Grund" -#: ../cli/src/connections.c:1228 +#: ../cli/src/connections.c:1218 msgid "none" msgstr "kein" -#: ../cli/src/connections.c:1230 +#: ../cli/src/connections.c:1220 msgid "the user was disconnected" msgstr "Der Benutzer wurde getrennt" -#: ../cli/src/connections.c:1232 +#: ../cli/src/connections.c:1222 msgid "the base network connection was interrupted" msgstr "Die Basisverbindung wurde unterbrochen" -#: ../cli/src/connections.c:1234 +#: ../cli/src/connections.c:1224 msgid "the VPN service stopped unexpectedly" msgstr "Der VPN-Dienst wurde unerwartet gestoppt" -#: ../cli/src/connections.c:1236 +#: ../cli/src/connections.c:1226 msgid "the VPN service returned invalid configuration" msgstr "Der VPN-Dienst gab ungültige Einstellungen zurück" -#: ../cli/src/connections.c:1238 +#: ../cli/src/connections.c:1228 msgid "the connection attempt timed out" msgstr "Der Verbindungsversuch benötigte zu viel Zeit" -#: ../cli/src/connections.c:1240 +#: ../cli/src/connections.c:1230 msgid "the VPN service did not start in time" msgstr "Der VPN-Dienst wurde nicht rechtzeitig gestartet" -#: ../cli/src/connections.c:1242 +#: ../cli/src/connections.c:1232 msgid "the VPN service failed to start" msgstr "Der VPN-Dienst konnte nicht gestartet werden" -#: ../cli/src/connections.c:1244 +#: ../cli/src/connections.c:1234 msgid "no valid VPN secrets" msgstr "Keine gültigen VPN-Schlüssel" -#: ../cli/src/connections.c:1246 +#: ../cli/src/connections.c:1236 msgid "invalid VPN secrets" msgstr "Ungültige VPN-Schlüssel" -#: ../cli/src/connections.c:1248 +#: ../cli/src/connections.c:1238 msgid "the connection was removed" msgstr "Die Verbindung wurde entfernt" -#: ../cli/src/connections.c:1262 +#: ../cli/src/connections.c:1252 #, c-format msgid "state: %s\n" msgstr "Status: %s\n" -#: ../cli/src/connections.c:1265 ../cli/src/connections.c:1291 +#: ../cli/src/connections.c:1255 ../cli/src/connections.c:1281 #, c-format msgid "Connection activated\n" msgstr "Verbindung aktiviert\n" -#: ../cli/src/connections.c:1268 +#: ../cli/src/connections.c:1258 #, c-format msgid "Error: Connection activation failed." msgstr "Fehler: Aktivierung der Verbindung ist gescheitert." -#: ../cli/src/connections.c:1287 +#: ../cli/src/connections.c:1277 #, c-format msgid "state: %s (%d)\n" msgstr "Status: %s (%d)\n" -#: ../cli/src/connections.c:1297 +#: ../cli/src/connections.c:1287 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: %s." -#: ../cli/src/connections.c:1314 ../cli/src/devices.c:1136 +#: ../cli/src/connections.c:1304 ../cli/src/devices.c:1136 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Fehler: Zeitbeschränkung von %d Sekunden ist abgelaufen." -#: ../cli/src/connections.c:1327 +#: ../cli/src/connections.c:1317 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Fehler: Aktivierung der Verbindung ist gescheitert: %s" -#: ../cli/src/connections.c:1333 +#: ../cli/src/connections.c:1323 #, c-format msgid "Active connection state: %s\n" msgstr "Status der aktiven Verbindung: %s\n" -#: ../cli/src/connections.c:1334 +#: ../cli/src/connections.c:1324 #, c-format msgid "Active connection path: %s\n" msgstr "Pfad der aktiven Verbindung: %s\n" -#: ../cli/src/connections.c:1386 ../cli/src/connections.c:1527 +#: ../cli/src/connections.c:1376 ../cli/src/connections.c:1517 #, c-format msgid "Error: Unknown connection: %s." msgstr "Fehler: Unbekannte Verbindung: %s." -#: ../cli/src/connections.c:1432 ../cli/src/devices.c:1208 +#: ../cli/src/connections.c:1422 ../cli/src/devices.c:1208 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Fehler: Der Wert »%s« ist keine gültige Zeitangabe." -#: ../cli/src/connections.c:1445 ../cli/src/connections.c:1544 +#: ../cli/src/connections.c:1435 ../cli/src/connections.c:1534 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Fehler: id oder uuid müssen angegeben werden." -#: ../cli/src/connections.c:1473 +#: ../cli/src/connections.c:1463 #, c-format msgid "Error: No suitable device found: %s." msgstr "Fehler: Es wurde kein passendes Gerät gefunden: %s." -#: ../cli/src/connections.c:1475 +#: ../cli/src/connections.c:1465 #, c-format msgid "Error: No suitable device found." msgstr "Fehler: Es wurde kein passendes Gerät gefunden." -#: ../cli/src/connections.c:1580 +#: ../cli/src/connections.c:1570 #, c-format msgid "Warning: Connection not active\n" msgstr "Warnung: Verbindung ist nicht aktiv\n" -#: ../cli/src/connections.c:1618 +#: ../cli/src/connections.c:1608 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Fehler: Der »con«-Befehl »%s« ist ungültig." -#: ../cli/src/connections.c:1683 +#: ../cli/src/connections.c:1673 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Fehler: Verbindung zu D-Bus konnte nicht hergestellt werden." -#: ../cli/src/connections.c:1690 +#: ../cli/src/connections.c:1680 #, c-format msgid "Error: Could not get system settings." msgstr "Fehler: Systemeinstellungen konnten nicht ermittelt werden." -#: ../cli/src/connections.c:1700 +#: ../cli/src/connections.c:1690 #, c-format msgid "Error: Can't obtain connections: settings service is not running." msgstr "" @@ -1418,111 +1419,129 @@ msgstr "" "überein. Eine Ausführung kann mit »--nocheck« erzwungen werden, aber die " "Resultate sind unvorhersehbar." -#: ../libnm-util/crypto.c:127 +#: ../libnm-util/crypto.c:133 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "PEM-Schlüsseldatei hat kein abschließendes Tag »%s«." -#: ../libnm-util/crypto.c:140 +#: ../libnm-util/crypto.c:146 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Das sieht nicht nach einer privaten PEM-Schlüsseldatei aus." -#: ../libnm-util/crypto.c:148 +#: ../libnm-util/crypto.c:154 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Nicht genügend freier Speicher zum Speichern der PEM-Datendatei." -#: ../libnm-util/crypto.c:164 +#: ../libnm-util/crypto.c:170 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Fehlerhafte PEM-Datei: Proc-Type ist nicht das erste Tag." -#: ../libnm-util/crypto.c:172 +#: ../libnm-util/crypto.c:178 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Fehlerhafte PEM-Datei: unbekannter Proc-Type-Tag »%s«." -#: ../libnm-util/crypto.c:182 +#: ../libnm-util/crypto.c:188 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Fehlerhafte PEM-Datei: DEK-Info ist nicht das zweite Tag." -#: ../libnm-util/crypto.c:193 +#: ../libnm-util/crypto.c:199 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "Fehlerhafte PEM-Datei: kein IV im DEK-Info-Tag gefunden." -#: ../libnm-util/crypto.c:200 +#: ../libnm-util/crypto.c:206 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "Fehlerhafte PEM-Datei: falsches Format des IV im DEK-Info-Tag." -#: ../libnm-util/crypto.c:213 +#: ../libnm-util/crypto.c:219 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Fehlerhafte PEM-Datei: Unbekannter privater Schlüsselstrom »%s«." -#: ../libnm-util/crypto.c:232 +#: ../libnm-util/crypto.c:238 #, c-format msgid "Could not decode private key." msgstr "Der private Schlüssel konnte nicht entschlüsselt werden." -#: ../libnm-util/crypto.c:268 ../libnm-util/crypto.c:554 +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "Auffinden der erwarteten PKCS#8-Startmarkierung scheiterte." + +#: ../libnm-util/crypto.c:292 +#, c-format +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "Auffinden der erwarteten PKCS#8-Endmarkierung »%s« scheiterte." + +#: ../libnm-util/crypto.c:312 +msgid "Not enough memory to store private key data." +msgstr "" +"Nicht genug freier Speicher zum Speichern der Daten des privaten Schlüssels." + +#: ../libnm-util/crypto.c:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "Die Entschlüsselung des privaten PKCS#8-Schlüssels scheiterte." + +#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625 #, c-format msgid "Not enough memory to store certificate data." msgstr "Nicht genug freier Speicher zum Speichern des Zertifikats." -#: ../libnm-util/crypto.c:294 +#: ../libnm-util/crypto.c:365 #, c-format msgid "IV must be an even number of bytes in length." msgstr "IV muss eine gerade Anzahl an Byte lang sein." -#: ../libnm-util/crypto.c:303 +#: ../libnm-util/crypto.c:374 #, c-format msgid "Not enough memory to store the IV." msgstr "Nicht genug freier Speicher zum Speichern des IV." -#: ../libnm-util/crypto.c:314 +#: ../libnm-util/crypto.c:385 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV enthält nicht-hexadezimale Zeichen." -#: ../libnm-util/crypto.c:352 ../libnm-util/crypto_gnutls.c:149 -#: ../libnm-util/crypto_gnutls.c:267 ../libnm-util/crypto_nss.c:171 -#: ../libnm-util/crypto_nss.c:336 +#: ../libnm-util/crypto.c:423 ../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 "Privater Schlüsselstrom »%s« ist unbekannt." -#: ../libnm-util/crypto.c:361 +#: ../libnm-util/crypto.c:432 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Nicht genug freier Speicher zum Entschlüsseln des privaten Schlüssels." -#: ../libnm-util/crypto.c:426 +#: ../libnm-util/crypto.c:497 #, c-format msgid "Not enough memory to store decrypted private key." msgstr "" "Nicht genug freier Speicher zum Speichern des entschlüsselten privaten " "Schlüssels." -#: ../libnm-util/crypto.c:471 +#: ../libnm-util/crypto.c:542 #, c-format msgid "Unable to determine private key type." msgstr "Der Typ des privaten Schlüssels konnte nicht bestimmt werden." -#: ../libnm-util/crypto.c:526 +#: ../libnm-util/crypto.c:597 #, c-format msgid "PEM certificate had no start tag '%s'." msgstr "PEM-Zertifikat hatte kein Start-Tag »%s«." -#: ../libnm-util/crypto.c:535 +#: ../libnm-util/crypto.c:606 #, c-format msgid "PEM certificate had no end tag '%s'." msgstr "PEM-Zertifikat hatte kein abschließendes Tag »%s«." -#: ../libnm-util/crypto.c:559 +#: ../libnm-util/crypto.c:630 #, c-format msgid "Failed to decode certificate." msgstr "Die Entschlüsselung des Zertifikats scheiterte." @@ -1531,254 +1550,264 @@ msgstr "Die Entschlüsselung des Zertifikats scheiterte." msgid "Failed to initialize the crypto engine." msgstr "Die Initialisierung der crypto-engine scheiterte." -#: ../libnm-util/crypto_gnutls.c:94 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." msgstr "Die Initialisierung der MD5-engine %s / %s scheiterte." -#: ../libnm-util/crypto_gnutls.c:157 +#: ../libnm-util/crypto_gnutls.c:155 #, c-format msgid "Invalid IV length (must be at least %zd)." msgstr "Ungültige IV-Länge (muss mindestens %zd betragen)." -#: ../libnm-util/crypto_gnutls.c:166 ../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 "" "Nicht genug freier Speicher zum Zwischenspeichern des entschlüsselten " "Schlüssels." -#: ../libnm-util/crypto_gnutls.c:174 +#: ../libnm-util/crypto_gnutls.c:172 #, c-format msgid "Failed to initialize the decryption cipher context: %s / %s." msgstr "" "Die Initialisierung des Entschlüsselung-Chiffrekontextes scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:183 +#: ../libnm-util/crypto_gnutls.c:181 #, c-format msgid "Failed to set symmetric key for decryption: %s / %s." msgstr "" "Das Anlegen der symmetrischen Schlüssel zum Entschlüsseln scheiterte: %s / %" "s." -#: ../libnm-util/crypto_gnutls.c:192 +#: ../libnm-util/crypto_gnutls.c:190 #, c-format msgid "Failed to set IV for decryption: %s / %s." msgstr "Das Anlegen des IV zum Entschlüsseln scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:201 +#: ../libnm-util/crypto_gnutls.c:199 #, c-format msgid "Failed to decrypt the private key: %s / %s." msgstr "Die Entschlüsselung des privaten Schlüssels scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:211 ../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 "" "Die Entschlüsselung des privaten Schlüssels scheiterte: Unerwartete " "Zeilenlänge." -#: ../libnm-util/crypto_gnutls.c:222 ../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 "Die Entschlüsselung des privaten Schlüssels scheiterte." -#: ../libnm-util/crypto_gnutls.c:287 ../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 "" "Es konnte nicht genügend freier Speicher zum Verschlüsseln angefordert " "werden." -#: ../libnm-util/crypto_gnutls.c:295 +#: ../libnm-util/crypto_gnutls.c:293 #, c-format msgid "Failed to initialize the encryption cipher context: %s / %s." msgstr "" "Die Initialisierung des Verschlüsselung-Chiffrekontextes scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:304 +#: ../libnm-util/crypto_gnutls.c:302 #, c-format msgid "Failed to set symmetric key for encryption: %s / %s." msgstr "" "Das Anlegen des symmetrischen Schlüssels zum Verschlüsseln scheiterte: %s / %" "s." -#: ../libnm-util/crypto_gnutls.c:314 +#: ../libnm-util/crypto_gnutls.c:312 #, c-format msgid "Failed to set IV for encryption: %s / %s." msgstr "Das Anlegen des IV zur Verschlüsselung scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:323 +#: ../libnm-util/crypto_gnutls.c:321 #, c-format msgid "Failed to encrypt the data: %s / %s." msgstr "Die Verschlüsselung der Daten scheiterte: %s / %s." -#: ../libnm-util/crypto_gnutls.c:363 +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Die Initialisierung der Zertifikatsdaten schlug fehl: %s" -#: ../libnm-util/crypto_gnutls.c:385 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Zertifikat konnte nicht entschlüsselt werden: %s" -#: ../libnm-util/crypto_gnutls.c:409 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "PKCS#12-Decoder konnte nicht initialisiert werden: %s" -#: ../libnm-util/crypto_gnutls.c:422 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "PKCS#12 konnte nicht entschlüsselt werden: %s" -#: ../libnm-util/crypto_gnutls.c:434 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "PKCS#12-Datei konnte nicht überprüft werden: %s" +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "PKCS#8-Decoder konnte nicht initialisiert werden: %s" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "PKCS#8-Datei konnte nicht entschlüsselt werden: %s" + #: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "Die Initialisierung der crypto-engine scheiterte: %d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "Die Initialisierung des MD5-Kontexts scheiterte: %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 "Ungültige IV-Länge (muss mindestens %d betragen)." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Die Initialisierung des Entschlüsselungsstromslots scheiterte." -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." msgstr "" "Das Anlegen des symmetrischen Schlüssels zur Entschlüsselung scheiterte." -#: ../libnm-util/crypto_nss.c:216 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Das Anlegen des IV zur Entschlüsselung scheiterte." -#: ../libnm-util/crypto_nss.c:224 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Die Initialisierung des Entschlüsselungskontexts scheiterte." -#: ../libnm-util/crypto_nss.c:237 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." msgstr "Das Entschlüsseln des privaten Schlüssels scheiterte: %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 "" "Das Entschlüsseln des privaten Schlüssels scheiterte: Die entschlüsselten " "Daten sind zu groß." -#: ../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 "" "Das Abschließen der Entschlüsselung des privaten Schlüssels scheiterte: %d." -#: ../libnm-util/crypto_nss.c:364 +#: ../libnm-util/crypto_nss.c:360 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Die Initialisierung des Verschlüsselungsstromslots scheiterte." -#: ../libnm-util/crypto_nss.c:372 +#: ../libnm-util/crypto_nss.c:368 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "" "Das Anlegen des symmetrischen Schlüssels zur Verschlüsselung scheiterte." -#: ../libnm-util/crypto_nss.c:380 +#: ../libnm-util/crypto_nss.c:376 #, c-format msgid "Failed to set IV for encryption." msgstr "Das Anlegen des IV zur Verschlüsselung scheiterte." -#: ../libnm-util/crypto_nss.c:388 +#: ../libnm-util/crypto_nss.c:384 #, c-format msgid "Failed to initialize the encryption context." -msgstr "Die Initialisierung des Verschlusselungskontexts scheiterte." +msgstr "Die Initialisierung des Verschlüsselungskontexts scheiterte." -#: ../libnm-util/crypto_nss.c:396 +#: ../libnm-util/crypto_nss.c:392 #, c-format msgid "Failed to encrypt: %d." msgstr "Das Verschlüsseln scheiterte: %d." -#: ../libnm-util/crypto_nss.c:404 +#: ../libnm-util/crypto_nss.c:400 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Unerwartete Datenmenge nach der Verschlüsselung." -#: ../libnm-util/crypto_nss.c:447 +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Das Zertifikat konnte nicht entschlüsselt werden: %d" -#: ../libnm-util/crypto_nss.c:482 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Das Passwort konnte nicht zu UCS2 konvertiert werden: %d" -#: ../libnm-util/crypto_nss.c:510 +#: ../libnm-util/crypto_nss.c:506 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %d" msgstr "PKCS#12-Decoder konnte nicht initialisiert werden: %d" -#: ../libnm-util/crypto_nss.c:519 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "PKCS#12-Datei konnte nicht verschlüsselt werden: %d" -#: ../libnm-util/crypto_nss.c:528 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "PKCS#12-Datei konnte nicht überprüft werden: %d" -#: ../libnm-util/crypto_nss.c:557 +#: ../libnm-util/crypto_nss.c:568 msgid "Could not generate random data." msgstr "Es konnten keine Zufallsdaten generiert werden." -#: ../libnm-util/nm-utils.c:1989 +#: ../libnm-util/nm-utils.c:2000 #, c-format msgid "Not enough memory to make encryption key." msgstr "" "Nicht genügend freier Speicher zur Erstellung des Verschlüsselungsschlüssels." -#: ../libnm-util/nm-utils.c:2099 +#: ../libnm-util/nm-utils.c:2110 msgid "Could not allocate memory for PEM file creation." msgstr "" "Es konnte nicht genügend freier Speicher zur Erstellung der PEM-Datei " "angefordert werden." -#: ../libnm-util/nm-utils.c:2111 +#: ../libnm-util/nm-utils.c:2122 #, c-format msgid "Could not allocate memory for writing IV to PEM file." msgstr "" "Es konnte nicht genügend freier Speicher zum Schreiben des IV in die PEM-" "Datei angefordert werden." -#: ../libnm-util/nm-utils.c:2123 +#: ../libnm-util/nm-utils.c:2134 #, c-format msgid "Could not allocate memory for writing encrypted key to PEM file." msgstr "" "Es konnte nicht genügend freier Speicher zum Schreiben des verschlüsselten " "Schlüssels in die PEM-Datei angefordert werden." -#: ../libnm-util/nm-utils.c:2142 +#: ../libnm-util/nm-utils.c:2153 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "" @@ -1899,14 +1928,14 @@ msgstr "" "Die Systemrichtlinien verhindern Verbindungsfreigaben über ein offenes WLAN-" "Netzwerk" -#: ../src/main.c:519 +#: ../src/main.c:530 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "" "Ungültige Option. Verwenden Sie --help um eine Liste der verfügbaren " "Optionen zu erhalten.\n" -#: ../src/main.c:590 +#: ../src/main.c:611 #, c-format msgid "%s. Please use --help to see a list of valid options.\n" msgstr "" @@ -1943,13 +1972,13 @@ msgstr "»dhcpcd« konnte nicht gefunden werden." msgid "unsupported DHCP client '%s'" msgstr "Nicht unterstützter DHCP-Client »%s«" -#: ../src/dns-manager/nm-dns-manager.c:367 +#: ../src/dns-manager/nm-dns-manager.c:376 msgid "NOTE: the libc resolver may not support more than 3 nameservers." msgstr "" "HINWEIS: Der libc-resolver unterstützt eventuell nicht mehr als drei " "Nameserver." -#: ../src/dns-manager/nm-dns-manager.c:369 +#: ../src/dns-manager/nm-dns-manager.c:378 msgid "The nameservers listed below may not be recognized." msgstr "Die nachfolgend gelisteten Nameserver werden eventuell nicht erkannt." @@ -1983,22 +2012,22 @@ msgstr "PAN-Verbindung %d" msgid "DUN connection %d" msgstr "DUN-Verbindung %d" -#: ../src/nm-device-ethernet.c:1681 +#: ../src/nm-device-ethernet.c:1723 #, c-format msgid "PPPoE connection %d" msgstr "PPPoE-Verbindung %d" -#: ../src/nm-device-ethernet.c:1681 ../src/settings/nm-settings-utils.c:50 +#: ../src/nm-device-ethernet.c:1723 ../src/settings/nm-settings-utils.c:50 #, c-format msgid "Wired connection %d" msgstr "Kabelgebundene Verbindung %d" -#: ../src/nm-device-olpc-mesh.c:423 +#: ../src/nm-device-olpc-mesh.c:393 #, c-format msgid "Mesh %d" msgstr "Maschennetz %d" -#: ../src/nm-manager.c:660 +#: ../src/nm-manager.c:657 #, c-format msgid "VPN connection %d" msgstr "VPN-Verbindung %d" @@ -2051,7 +2080,7 @@ msgstr "Der netlink-Gruppe konnte nicht beigetreten werden: %s" msgid "error updating link cache: %s" msgstr "Die Aktualisierung des Verbindungszwischenspeichers schlug fehl: %s" -#: ../src/settings/plugins/ifcfg-rh/reader.c:3464 +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 #: ../src/settings/plugins/ifnet/connection_parser.c:51 msgid "System" msgstr "System" @@ -2080,9 +2109,6 @@ msgstr "System" #~ msgid "Error: Could not get user settings." #~ msgstr "Fehler: Benutzereinstellungen konnten nicht ermittelt werden." -#~ msgid "Not enough memory to store file data." -#~ msgstr "Nicht genug freier Speicher zum Speichern der Datei." - #~ msgid "Allow use of user-specific connections" #~ msgstr "Die Verwendung von benutzerspezifischen Verbindungen erlauben" diff --git a/po/es.po b/po/es.po index 802d482f..08815ef0 100644 --- a/po/es.po +++ b/po/es.po @@ -15,15 +15,15 @@ msgstr "" "Project-Id-Version: NetworkManager.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=NetworkManager&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-05-18 03:24+0000\n" -"PO-Revision-Date: 2011-03-13 15:03+0100\n" +"POT-Creation-Date: 2011-09-24 03:25+0000\n" +"PO-Revision-Date: 2011-10-01 13:57+0200\n" "Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n" -"Language-Team: Español <gnome-es-list@gnome.org>\n" +"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=(n!=1);\n" #: ../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 @@ -97,22 +97,34 @@ msgstr "AUTOCONECTAR" msgid "READONLY" msgstr "SÓLOLECTURA" -#: ../cli/src/connections.c:167 -#, c-format +#: ../cli/src/connections.c:153 +#, c-format +#| msgid "" +#| "Usage: nmcli con { COMMAND | help }\n" +#| " COMMAND := { list | status | up | down }\n" +#| "\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" msgid "" "Usage: nmcli con { COMMAND | help }\n" -" COMMAND := { list | status | up | down }\n" +" COMMAND := { list | status | up | down | delete }\n" "\n" " list [id <id> | uuid <id>]\n" " status\n" -" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--" +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--" "nowait] [--timeout <timeout>]\n" -" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout " +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout " "<timeout>]\n" " down id <id> | uuid <id>\n" +" delete id <id> | uuid <id>\n" msgstr "" "Uso: nmcli con { COMANDO | help }\n" -" COMANDO := { list | status | up | down }\n" +" COMANDO := { list | status | up | down | delete }\n" "\n" " list [id <id> | uuid <id>]\n" " status\n" @@ -121,347 +133,355 @@ msgstr "" " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout " "<timeout>]\n" " down id <id> | uuid <id>\n" +" delete id <id> | uuid <id>\n" -#: ../cli/src/connections.c:220 ../cli/src/connections.c:542 +#: ../cli/src/connections.c:208 ../cli/src/connections.c:532 #, c-format msgid "Error: 'con list': %s" msgstr "Error: «con list»: %s" -#: ../cli/src/connections.c:222 ../cli/src/connections.c:544 +#: ../cli/src/connections.c:210 ../cli/src/connections.c:534 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Error: «con list»: %s; campos permitidos: %s" -#: ../cli/src/connections.c:230 +#: ../cli/src/connections.c:218 msgid "Connection details" msgstr "Detalles de conexiones" -#: ../cli/src/connections.c:417 +#: ../cli/src/connections.c:407 msgid "never" msgstr "nunca" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../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 +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:632 ../cli/src/settings.c:753 +#: ../cli/src/settings.c:1041 ../cli/src/settings.c:1042 +#: ../cli/src/settings.c:1044 ../cli/src/settings.c:1046 +#: ../cli/src/settings.c:1047 ../cli/src/settings.c:1177 +#: ../cli/src/settings.c:1178 ../cli/src/settings.c:1179 +#: ../cli/src/settings.c:1180 ../cli/src/settings.c:1259 +#: ../cli/src/settings.c:1260 ../cli/src/settings.c:1261 +#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263 +#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265 +#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1267 +#: ../cli/src/settings.c:1268 ../cli/src/settings.c:1269 +#: ../cli/src/settings.c:1270 ../cli/src/settings.c:1271 +#: ../cli/src/settings.c:1346 msgid "yes" msgstr "sí" -#: ../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 +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:562 ../cli/src/settings.c:632 +#: ../cli/src/settings.c:753 ../cli/src/settings.c:1041 +#: ../cli/src/settings.c:1042 ../cli/src/settings.c:1044 +#: ../cli/src/settings.c:1046 ../cli/src/settings.c:1047 +#: ../cli/src/settings.c:1177 ../cli/src/settings.c:1178 +#: ../cli/src/settings.c:1179 ../cli/src/settings.c:1180 +#: ../cli/src/settings.c:1259 ../cli/src/settings.c:1260 +#: ../cli/src/settings.c:1261 ../cli/src/settings.c:1262 +#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264 +#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266 +#: ../cli/src/settings.c:1267 ../cli/src/settings.c:1268 +#: ../cli/src/settings.c:1269 ../cli/src/settings.c:1270 +#: ../cli/src/settings.c:1271 ../cli/src/settings.c:1346 msgid "no" msgstr "no" -#: ../cli/src/connections.c:493 +#: ../cli/src/connections.c:483 msgid "Connection list" msgstr "Lista de conexiones" -#: ../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 +#: ../cli/src/connections.c:496 ../cli/src/connections.c:1356 +#: ../cli/src/connections.c:1371 ../cli/src/connections.c:1380 +#: ../cli/src/connections.c:1390 ../cli/src/connections.c:1402 +#: ../cli/src/connections.c:1497 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1180 ../cli/src/devices.c:1190 +#: ../cli/src/devices.c:1304 ../cli/src/devices.c:1312 +#: ../cli/src/devices.c:1525 ../cli/src/devices.c:1532 #, c-format msgid "Error: %s argument is missing." msgstr "Error: falta el argumento %s." -#: ../cli/src/connections.c:519 +#: ../cli/src/connections.c:509 #, c-format msgid "Error: %s - no such connection." msgstr "Error: %s - no hay tal conexión." -#: ../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 +#: ../cli/src/connections.c:515 ../cli/src/connections.c:1415 +#: ../cli/src/connections.c:1514 ../cli/src/connections.c:1587 +#: ../cli/src/devices.c:977 ../cli/src/devices.c:1057 +#: ../cli/src/devices.c:1204 ../cli/src/devices.c:1318 +#: ../cli/src/devices.c:1538 #, c-format msgid "Unknown parameter: %s\n" msgstr "Parámetro desconocido: %s\n" -#: ../cli/src/connections.c:534 +#: ../cli/src/connections.c:524 #, c-format msgid "Error: no valid parameter specified." msgstr "Error: no se especificó un parámetro válido." -#: ../cli/src/connections.c:549 ../cli/src/connections.c:1627 -#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463 +#: ../cli/src/connections.c:539 ../cli/src/connections.c:1668 +#: ../cli/src/devices.c:1746 ../cli/src/network-manager.c:456 #, c-format msgid "Error: %s." msgstr "Error: %s." -#: ../cli/src/connections.c:637 +#: ../cli/src/connections.c:627 #, c-format msgid "Error: 'con status': %s" msgstr "Error: «con status»: %s" -#: ../cli/src/connections.c:639 +#: ../cli/src/connections.c:629 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Error: «con status»: %s; campos permitidos: %s" -#: ../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 +#: ../cli/src/connections.c:637 ../cli/src/connections.c:1430 +#: ../cli/src/connections.c:1529 ../cli/src/connections.c:1601 +#: ../cli/src/devices.c:1004 ../cli/src/devices.c:1066 +#: ../cli/src/devices.c:1219 ../cli/src/devices.c:1348 +#: ../cli/src/devices.c:1567 #, c-format msgid "Error: Can't find out if NetworkManager is running: %s." msgstr "Error: no se puede saber si NetworkManager se está ejecutando: %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 +#: ../cli/src/connections.c:641 ../cli/src/connections.c:1434 +#: ../cli/src/connections.c:1533 ../cli/src/connections.c:1605 +#: ../cli/src/devices.c:1008 ../cli/src/devices.c:1070 +#: ../cli/src/devices.c:1223 ../cli/src/devices.c:1352 +#: ../cli/src/devices.c:1571 #, c-format msgid "Error: NetworkManager is not running." msgstr "Error: NetworkManager no se está ejecutando." -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:649 msgid "Active connections" msgstr "Conexiones activas" -#: ../cli/src/connections.c:1095 +#: ../cli/src/connections.c:1073 #, c-format msgid "no active connection on device '%s'" msgstr "conexión no activa en el dispositivo «%s»" -#: ../cli/src/connections.c:1103 +#: ../cli/src/connections.c:1081 #, c-format msgid "no active connection or device" msgstr "conexión o dispositivo no activo" -#: ../cli/src/connections.c:1174 +#: ../cli/src/connections.c:1152 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "dispositivo «%s» incompatible con conexión «%s»" -#: ../cli/src/connections.c:1176 +#: ../cli/src/connections.c:1154 #, c-format msgid "no device found for connection '%s'" msgstr "no se encontró dispositivo para conexión «%s»" -#: ../cli/src/connections.c:1187 +#: ../cli/src/connections.c:1165 msgid "activating" msgstr "activando" -#: ../cli/src/connections.c:1189 +#: ../cli/src/connections.c:1167 msgid "activated" msgstr "activada" -#: ../cli/src/connections.c:1191 ../cli/src/devices.c:304 +#: ../cli/src/connections.c:1169 ../cli/src/devices.c:294 msgid "deactivating" msgstr "desactivando" -#: ../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 +#: ../cli/src/connections.c:1172 ../cli/src/connections.c:1195 +#: ../cli/src/connections.c:1228 ../cli/src/devices.c:298 +#: ../cli/src/devices.c:678 ../cli/src/network-manager.c:111 +#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176 +#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291 +#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384 +#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:513 +#: ../cli/src/utils.c:397 msgid "unknown" msgstr "desconocido" -#: ../cli/src/connections.c:1203 +#: ../cli/src/connections.c:1181 msgid "VPN connecting (prepare)" msgstr "Conectando VPN (preparar)" -#: ../cli/src/connections.c:1205 +#: ../cli/src/connections.c:1183 msgid "VPN connecting (need authentication)" msgstr "Conectando VPN (necesita autenticación)" -#: ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1185 msgid "VPN connecting" msgstr "Conectando VPN" -#: ../cli/src/connections.c:1209 +#: ../cli/src/connections.c:1187 msgid "VPN connecting (getting IP configuration)" msgstr "Conectando VPN (obteniendo configuración IP)" -#: ../cli/src/connections.c:1211 +#: ../cli/src/connections.c:1189 msgid "VPN connected" msgstr "VPN conectada" -#: ../cli/src/connections.c:1213 +#: ../cli/src/connections.c:1191 msgid "VPN connection failed" msgstr "Falló la conexión VPN" -#: ../cli/src/connections.c:1215 +#: ../cli/src/connections.c:1193 msgid "VPN disconnected" msgstr "VPN desconectada" -#: ../cli/src/connections.c:1226 +#: ../cli/src/connections.c:1204 msgid "unknown reason" msgstr "razón desconocida" -#: ../cli/src/connections.c:1228 +#: ../cli/src/connections.c:1206 msgid "none" msgstr "ninguna" -#: ../cli/src/connections.c:1230 +#: ../cli/src/connections.c:1208 msgid "the user was disconnected" msgstr "el usuario estaba desconectado" -#: ../cli/src/connections.c:1232 +#: ../cli/src/connections.c:1210 msgid "the base network connection was interrupted" msgstr "se interrumpió la conexión de red de base" -#: ../cli/src/connections.c:1234 +#: ../cli/src/connections.c:1212 msgid "the VPN service stopped unexpectedly" msgstr "el servicio VPN se detuvo inesperadamente" -#: ../cli/src/connections.c:1236 +#: ../cli/src/connections.c:1214 msgid "the VPN service returned invalid configuration" msgstr "el servicio VPN retornó una configuración no válida" -#: ../cli/src/connections.c:1238 +#: ../cli/src/connections.c:1216 msgid "the connection attempt timed out" msgstr "se agotaron los intentos de conexión" -#: ../cli/src/connections.c:1240 +#: ../cli/src/connections.c:1218 msgid "the VPN service did not start in time" msgstr "el servicio VPN no inició a tiempo" -#: ../cli/src/connections.c:1242 +#: ../cli/src/connections.c:1220 msgid "the VPN service failed to start" msgstr "el servicio VPN falló en el inicio" -#: ../cli/src/connections.c:1244 +#: ../cli/src/connections.c:1222 msgid "no valid VPN secrets" msgstr "secretos VPN inválidos" -#: ../cli/src/connections.c:1246 +#: ../cli/src/connections.c:1224 msgid "invalid VPN secrets" msgstr "secretos VPN válidos" -#: ../cli/src/connections.c:1248 +#: ../cli/src/connections.c:1226 msgid "the connection was removed" msgstr "se eliminó la conexión" -#: ../cli/src/connections.c:1262 +#: ../cli/src/connections.c:1240 #, c-format msgid "state: %s\n" msgstr "estado: %s\n" -#: ../cli/src/connections.c:1265 ../cli/src/connections.c:1291 +#: ../cli/src/connections.c:1243 ../cli/src/connections.c:1269 #, c-format msgid "Connection activated\n" msgstr "Conexión activada\n" -#: ../cli/src/connections.c:1268 +#: ../cli/src/connections.c:1246 #, c-format msgid "Error: Connection activation failed." msgstr "Error: falló la activación de la conexión." -#: ../cli/src/connections.c:1287 +#: ../cli/src/connections.c:1265 #, c-format msgid "state: %s (%d)\n" msgstr "estado: %s (%d)\n" -#: ../cli/src/connections.c:1297 +#: ../cli/src/connections.c:1275 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Error: falló la activación de la conexión: %s." -#: ../cli/src/connections.c:1314 ../cli/src/devices.c:1136 +#: ../cli/src/connections.c:1292 ../cli/src/devices.c:1126 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Error: expiró la pausa de %d segundos." -#: ../cli/src/connections.c:1327 +#: ../cli/src/connections.c:1305 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Error: falló la activación de la conexión: %s" -#: ../cli/src/connections.c:1333 +#: ../cli/src/connections.c:1311 #, c-format msgid "Active connection state: %s\n" msgstr "Estado de la conexión activa: %s\n" -#: ../cli/src/connections.c:1334 +#: ../cli/src/connections.c:1312 #, c-format msgid "Active connection path: %s\n" msgstr "Ruta de la conexión activa: %s\n" -#: ../cli/src/connections.c:1386 ../cli/src/connections.c:1527 +#: ../cli/src/connections.c:1364 ../cli/src/connections.c:1505 +#: ../cli/src/connections.c:1614 #, c-format msgid "Error: Unknown connection: %s." msgstr "Error: conexión desconocida: %s." -#: ../cli/src/connections.c:1432 ../cli/src/devices.c:1208 +#: ../cli/src/connections.c:1410 ../cli/src/devices.c:1198 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Error: valor de pausa «%s» inválido." -#: ../cli/src/connections.c:1445 ../cli/src/connections.c:1544 +#: ../cli/src/connections.c:1423 ../cli/src/connections.c:1522 +#: ../cli/src/connections.c:1594 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Error: se debe especificar un id o uuid." -#: ../cli/src/connections.c:1473 +#: ../cli/src/connections.c:1451 #, c-format msgid "Error: No suitable device found: %s." msgstr "Error: no se encontró un dispositivo apropiado: %s." -#: ../cli/src/connections.c:1475 +#: ../cli/src/connections.c:1453 #, c-format msgid "Error: No suitable device found." msgstr "Error: no se encontró un dispositivo apropiado." -#: ../cli/src/connections.c:1580 +#: ../cli/src/connections.c:1558 #, c-format msgid "Warning: Connection not active\n" msgstr "Advertencia: conexión inactiva\n" -#: ../cli/src/connections.c:1618 +#: ../cli/src/connections.c:1659 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Error: comando «con» «%s» no es válido." -#: ../cli/src/connections.c:1683 +#: ../cli/src/connections.c:1724 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Error: no se pudo conectar con D-Bus." -#: ../cli/src/connections.c:1690 +#: ../cli/src/connections.c:1732 #, c-format msgid "Error: Could not get system settings." msgstr "Error: no se pudo obtener configuración de sistema." -#: ../cli/src/connections.c:1700 +#: ../cli/src/connections.c:1742 #, c-format msgid "Error: Can't obtain connections: settings service is not running." msgstr "" @@ -686,8 +706,21 @@ msgstr "INDICADORES-RSN" msgid "ACTIVE" msgstr "ACTIVO" -#: ../cli/src/devices.c:256 -#, c-format +#: ../cli/src/devices.c:246 +#, 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" msgid "" "Usage: nmcli dev { COMMAND | help }\n" "\n" @@ -698,12 +731,14 @@ msgid "" " status\n" " list [iface <iface>]\n" " disconnect iface <iface> [--nowait] [--timeout <timeout>]\n" -" wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n" +" wifi [list [iface <iface>] [bssid <BSSID>]]\n" " wimax [list [iface <iface>] [nsp <name>]]\n" "\n" msgstr "" "Uso: nmcli dev { COMANDO | help }\n" "\n" +" COMANDO := { status | list | disconnect | wifi | wimax }\n" +"\n" " COMANDO := { status | list | disconnect | wifi }\n" "\n" " status\n" @@ -713,256 +748,262 @@ msgstr "" " wimax [list [iface <iface>] [nsp <name>]]\n" "\n" -#: ../cli/src/devices.c:284 +#: ../cli/src/devices.c:274 msgid "unmanaged" msgstr "sin gestión" -#: ../cli/src/devices.c:286 +#: ../cli/src/devices.c:276 msgid "unavailable" msgstr "no disponible" -#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115 +#: ../cli/src/devices.c:278 ../cli/src/network-manager.c:108 msgid "disconnected" msgstr "desconectado" -#: ../cli/src/devices.c:290 +#: ../cli/src/devices.c:280 msgid "connecting (prepare)" msgstr "conectando (preparar)" -#: ../cli/src/devices.c:292 +#: ../cli/src/devices.c:282 msgid "connecting (configuring)" msgstr "conectando (configurando)" -#: ../cli/src/devices.c:294 +#: ../cli/src/devices.c:284 msgid "connecting (need authentication)" msgstr "conectando (necesita autenticación)" -#: ../cli/src/devices.c:296 +#: ../cli/src/devices.c:286 msgid "connecting (getting IP configuration)" msgstr "conectando (obteniendo configuración IP)" -#: ../cli/src/devices.c:298 +#: ../cli/src/devices.c:288 msgid "connecting (checking IP connectivity)" msgstr "conectando (comprobando conectividad IP)" -#: ../cli/src/devices.c:300 +#: ../cli/src/devices.c:290 msgid "connecting (starting secondary connections)" msgstr "conectando (iniciando conexiones secundarias)" -#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111 +#: ../cli/src/devices.c:292 ../cli/src/network-manager.c:104 msgid "connected" msgstr "conectado" -#: ../cli/src/devices.c:306 +#: ../cli/src/devices.c:296 msgid "connection failed" msgstr "conexión falló" -#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501 -#: ../cli/src/devices.c:545 +#: ../cli/src/devices.c:321 ../cli/src/devices.c:331 ../cli/src/devices.c:491 +#: ../cli/src/devices.c:535 msgid "Unknown" msgstr "desconocido" -#: ../cli/src/devices.c:374 +#: ../cli/src/devices.c:364 msgid "(none)" msgstr "(ninguno)" -#: ../cli/src/devices.c:399 +#: ../cli/src/devices.c:389 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: error convirtiendo dirección IP4 0x%X" -#: ../cli/src/devices.c:470 +#: ../cli/src/devices.c:460 #, c-format msgid "%u MHz" msgstr "%u MHz" -#: ../cli/src/devices.c:471 +#: ../cli/src/devices.c:461 #, c-format msgid "%u MB/s" msgstr "%u MB/s" -#: ../cli/src/devices.c:480 +#: ../cli/src/devices.c:470 msgid "Encrypted: " msgstr "Encriptado: " -#: ../cli/src/devices.c:485 +#: ../cli/src/devices.c:475 msgid "WEP " msgstr "WEP" -#: ../cli/src/devices.c:487 +#: ../cli/src/devices.c:477 msgid "WPA " msgstr "WPA" -#: ../cli/src/devices.c:489 +#: ../cli/src/devices.c:479 msgid "WPA2 " msgstr "WPA2" -#: ../cli/src/devices.c:492 +#: ../cli/src/devices.c:482 msgid "Enterprise " msgstr "Empresa" -#: ../cli/src/devices.c:501 +#: ../cli/src/devices.c:491 msgid "Ad-Hoc" msgstr "Ad-Hoc" -#: ../cli/src/devices.c:501 +#: ../cli/src/devices.c:491 msgid "Infrastructure" msgstr "Infraestructura" -#: ../cli/src/devices.c:536 +#: ../cli/src/devices.c:526 msgid "Home" msgstr "Casa" -#: ../cli/src/devices.c:539 +#: ../cli/src/devices.c:529 msgid "Partner" msgstr "Asociado" -#: ../cli/src/devices.c:542 +#: ../cli/src/devices.c:532 msgid "Roaming" msgstr "Roaming" -#: ../cli/src/devices.c:612 +#: ../cli/src/devices.c:602 #, c-format msgid "Error: 'dev list': %s" msgstr "Error: «dev list»: %s" -#: ../cli/src/devices.c:614 +#: ../cli/src/devices.c:604 #, c-format msgid "Error: 'dev list': %s; allowed fields: %s" msgstr "Error: «dev list»: %s; campos permitidos: %s" -#: ../cli/src/devices.c:623 +#: ../cli/src/devices.c:613 msgid "Device details" msgstr "Detalles de los dispositivos" -#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342 +#: ../cli/src/devices.c:647 ../cli/src/devices.c:1142 ../cli/src/utils.c:343 msgid "(unknown)" msgstr "(desconocido)" -#: ../cli/src/devices.c:658 +#: ../cli/src/devices.c:648 msgid "unknown)" msgstr "desconocido" -#: ../cli/src/devices.c:684 +#: ../cli/src/devices.c:674 #, c-format msgid "%u Mb/s" msgstr "%u Mb/s" #. Print header #. "WIRED-PROPERTIES" -#: ../cli/src/devices.c:757 +#: ../cli/src/devices.c:747 msgid "on" msgstr "encendido" -#: ../cli/src/devices.c:757 +#: ../cli/src/devices.c:747 msgid "off" msgstr "apagado" -#: ../cli/src/devices.c:1004 +#: ../cli/src/devices.c:994 #, c-format msgid "Error: 'dev status': %s" msgstr "Error: «dev status»: %s" -#: ../cli/src/devices.c:1006 +#: ../cli/src/devices.c:996 #, c-format msgid "Error: 'dev status': %s; allowed fields: %s" msgstr "Error: «dev status»: %s; campos permitidos: %s" -#: ../cli/src/devices.c:1029 +#: ../cli/src/devices.c:1019 msgid "Status of devices" msgstr "Estado de los dispositivos" -#: ../cli/src/devices.c:1060 +#: ../cli/src/devices.c:1050 #, c-format msgid "Error: '%s' argument is missing." msgstr "Error: falta el argumento «%s»." -#: ../cli/src/devices.c:1101 ../cli/src/devices.c:1253 -#: ../cli/src/devices.c:1389 ../cli/src/devices.c:1608 +#: ../cli/src/devices.c:1091 ../cli/src/devices.c:1243 +#: ../cli/src/devices.c:1380 ../cli/src/devices.c:1599 #, c-format msgid "Error: Device '%s' not found." msgstr "Error: no se encontró el dispositivo «%s»." -#: ../cli/src/devices.c:1124 +#: ../cli/src/devices.c:1114 #, c-format msgid "Success: Device '%s' successfully disconnected." msgstr "Éxito: dispositivo «%s» desconectado correctamente." -#: ../cli/src/devices.c:1149 +#: ../cli/src/devices.c:1139 #, c-format msgid "Error: Device '%s' (%s) disconnecting failed: %s" msgstr "Error: falló la desconexión del dispositivo «%s» (%s): %s" -#: ../cli/src/devices.c:1157 +#: ../cli/src/devices.c:1147 #, c-format msgid "Device state: %d (%s)\n" msgstr "Estado del dispositivo: %d (%s)\n" -#: ../cli/src/devices.c:1222 +#: ../cli/src/devices.c:1212 #, c-format msgid "Error: iface has to be specified." msgstr "Error: se debe especificar iface." -#: ../cli/src/devices.c:1347 +#: ../cli/src/devices.c:1338 #, c-format msgid "Error: 'dev wifi': %s" msgstr "Error: «dev wifi» «%s»" -#: ../cli/src/devices.c:1349 +#: ../cli/src/devices.c:1340 #, c-format msgid "Error: 'dev wifi': %s; allowed fields: %s" msgstr "Error: «dev wifi»: %s; campos permitidos: %s" -#: ../cli/src/devices.c:1372 +#: ../cli/src/devices.c:1363 msgid "WiFi scan list" msgstr "lista de análisis WiFi" -#: ../cli/src/devices.c:1409 ../cli/src/devices.c:1463 -#: ../cli/src/devices.c:1670 +#: ../cli/src/devices.c:1400 ../cli/src/devices.c:1454 #, c-format -msgid "Error: Access point with hwaddr '%s' not found." -msgstr "Error: no se encontró el punto de acceso con hwaddr «%s»." +#| msgid "Error: Access point with hwaddr '%s' not found." +msgid "Error: Access point with bssid '%s' not found." +msgstr "Error: no se encontró el punto de acceso con bssid «%s»." -#: ../cli/src/devices.c:1426 +#: ../cli/src/devices.c:1417 #, c-format msgid "Error: Device '%s' is not a WiFi device." msgstr "Error: el dispositivo «%s» no es un dispositivo WiFi." -#: ../cli/src/devices.c:1490 +#: ../cli/src/devices.c:1481 #, c-format msgid "Error: 'dev wifi' command '%s' is not valid." msgstr "Error: comando «dev wifi» «%s» inválido." -#: ../cli/src/devices.c:1566 +#: ../cli/src/devices.c:1557 #, c-format msgid "Error: 'dev wimax': %s" msgstr "Error: «dev wimax» «%s»" -#: ../cli/src/devices.c:1568 +#: ../cli/src/devices.c:1559 #, c-format msgid "Error: 'dev wimax': %s; allowed fields: %s" msgstr "Error: «dev wimax»: %s; campos permitidos: %s" -#: ../cli/src/devices.c:1591 +#: ../cli/src/devices.c:1582 msgid "WiMAX NSP list" msgstr "Lista PSR WiMAX" -#: ../cli/src/devices.c:1628 +#: ../cli/src/devices.c:1619 #, c-format msgid "Error: NSP with name '%s' not found." msgstr "Error: no se encontró el PSR con el nombre «%s»." -#: ../cli/src/devices.c:1639 +#: ../cli/src/devices.c:1630 #, c-format msgid "Error: Device '%s' is not a WiMAX device." msgstr "Error: el dispositivo «%s» no es un dispositivo WiMAX." -#: ../cli/src/devices.c:1697 +#: ../cli/src/devices.c:1661 +#, c-format +#| msgid "Error: Access point with hwaddr '%s' not found." +msgid "Error: Access point with nsp '%s' not found." +msgstr "Error: no se encontró el punto de acceso con nsp «%s»." + +#: ../cli/src/devices.c:1688 #, c-format msgid "Error: 'dev wimax' command '%s' is not valid." msgstr "Error: comando «dev wimax» «%s» no válido." -#: ../cli/src/devices.c:1747 +#: ../cli/src/devices.c:1738 #, c-format msgid "Error: 'dev' command '%s' is not valid." msgstr "Error: comando «dev» «%s» no válido." @@ -1011,7 +1052,7 @@ msgstr "HARDWARE-WIMAX" msgid "WIMAX" msgstr "WIMAX" -#: ../cli/src/network-manager.c:74 +#: ../cli/src/network-manager.c:67 #, c-format msgid "" "Usage: nmcli nm { COMMAND | help }\n" @@ -1042,136 +1083,136 @@ msgstr "" " wimax [on|off]\n" "\n" -#: ../cli/src/network-manager.c:103 +#: ../cli/src/network-manager.c:96 msgid "asleep" msgstr "dormido" -#: ../cli/src/network-manager.c:105 +#: ../cli/src/network-manager.c:98 msgid "connecting" msgstr "conectando" -#: ../cli/src/network-manager.c:107 +#: ../cli/src/network-manager.c:100 msgid "connected (local only)" msgstr "conectado (sólo local)" -#: ../cli/src/network-manager.c:109 +#: ../cli/src/network-manager.c:102 msgid "connected (site only)" msgstr "conectado (sólo el sitio)" -#: ../cli/src/network-manager.c:113 +#: ../cli/src/network-manager.c:106 msgid "disconnecting" msgstr "desconectando" -#: ../cli/src/network-manager.c:153 +#: ../cli/src/network-manager.c:146 #, c-format msgid "Error: 'nm status': %s" msgstr "Error: «nm status»: %s" -#: ../cli/src/network-manager.c:155 +#: ../cli/src/network-manager.c:148 #, c-format msgid "Error: 'nm status': %s; allowed fields: %s" msgstr "Error: «nm status»: %s; campos permitidos: %s" #. 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 +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 msgid "enabled" msgstr "activado" -#: ../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 +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 msgid "disabled" msgstr "desactivado" -#: ../cli/src/network-manager.c:188 +#: ../cli/src/network-manager.c:181 msgid "NetworkManager status" msgstr "Estado de NetworkManager" #. Print header -#: ../cli/src/network-manager.c:191 +#: ../cli/src/network-manager.c:184 msgid "running" msgstr "ejecutando" -#: ../cli/src/network-manager.c:191 +#: ../cli/src/network-manager.c:184 msgid "not running" msgstr "no ejecutando" -#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322 +#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:323 #, c-format msgid "Error: Couldn't connect to system bus: %s" msgstr "Error: no se pudo conectar con el bus del sistema: %s" -#: ../cli/src/network-manager.c:233 +#: ../cli/src/network-manager.c:226 #, c-format msgid "Error: Couldn't create D-Bus object proxy." msgstr "Error: no se pudo crear un objeto proxy en D-Bus." -#: ../cli/src/network-manager.c:239 +#: ../cli/src/network-manager.c:232 #, c-format msgid "Error in sleep: %s" msgstr "Error al dormir: %s" -#: ../cli/src/network-manager.c:283 ../cli/src/network-manager.c:338 -#: ../cli/src/network-manager.c:376 ../cli/src/network-manager.c:415 +#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331 +#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408 #, c-format msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" msgstr "Error: «--fields» valor «%s» no es válido aquí; campos permitidos: %s" -#: ../cli/src/network-manager.c:291 +#: ../cli/src/network-manager.c:284 msgid "Networking enabled" msgstr "Red activada" -#: ../cli/src/network-manager.c:307 +#: ../cli/src/network-manager.c:300 #, c-format msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." msgstr "Error: parámetro «enable» inválido: «%s»; use «true» o «false»." -#: ../cli/src/network-manager.c:317 +#: ../cli/src/network-manager.c:310 #, c-format msgid "Error: Sleeping status is not exported by NetworkManager." msgstr "Error: NetworkManager no exporta el estado para dormir." -#: ../cli/src/network-manager.c:325 +#: ../cli/src/network-manager.c:318 #, c-format msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." msgstr "Error: parámetro «wifi» inválido: «%s»." -#: ../cli/src/network-manager.c:346 +#: ../cli/src/network-manager.c:339 msgid "WiFi enabled" msgstr "WiFi activado" -#: ../cli/src/network-manager.c:362 +#: ../cli/src/network-manager.c:355 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Error: parámetro «wifi» inválido: «%s»." -#: ../cli/src/network-manager.c:384 +#: ../cli/src/network-manager.c:377 msgid "WWAN enabled" msgstr "WWAN activado" -#: ../cli/src/network-manager.c:400 +#: ../cli/src/network-manager.c:393 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Error: parámetro «wwan» inválido: «%s»." -#: ../cli/src/network-manager.c:423 +#: ../cli/src/network-manager.c:416 msgid "WiMAX enabled" msgstr "WiMAX activado" -#: ../cli/src/network-manager.c:439 +#: ../cli/src/network-manager.c:432 #, c-format msgid "Error: invalid 'wimax' parameter: '%s'." msgstr "Error: parámetro «wimax» inválido: «%s»." -#: ../cli/src/network-manager.c:452 +#: ../cli/src/network-manager.c:445 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Error: comando «nm» command «%s» inválido." @@ -1284,79 +1325,89 @@ msgstr "Error: no se pudo crear un objeto NMClient." msgid "Success" msgstr "Éxito" -#: ../cli/src/settings.c:423 +#: ../cli/src/settings.c:447 #, c-format msgid "%d (hex-ascii-key)" msgstr "%d (clave-hex-ascii)" -#: ../cli/src/settings.c:425 +#: ../cli/src/settings.c:449 #, c-format msgid "%d (104/128-bit passphrase)" msgstr "%d (frase de acceso 104/128-bits)" -#: ../cli/src/settings.c:428 +#: ../cli/src/settings.c:452 #, c-format msgid "%d (unknown)" msgstr "%d (desconocido)" -#: ../cli/src/settings.c:454 +#: ../cli/src/settings.c:478 msgid "0 (unknown)" msgstr "0 (desconocido)" -#: ../cli/src/settings.c:460 +#: ../cli/src/settings.c:484 msgid "any, " msgstr "cualquiera," -#: ../cli/src/settings.c:462 +#: ../cli/src/settings.c:486 msgid "900 MHz, " msgstr "900 MHz, " -#: ../cli/src/settings.c:464 +#: ../cli/src/settings.c:488 msgid "1800 MHz, " msgstr "1800 MHz, " -#: ../cli/src/settings.c:466 +#: ../cli/src/settings.c:490 msgid "1900 MHz, " msgstr "1900 MHz, " -#: ../cli/src/settings.c:468 +#: ../cli/src/settings.c:492 msgid "850 MHz, " msgstr "850 MHz, " -#: ../cli/src/settings.c:470 +#: ../cli/src/settings.c:494 msgid "WCDMA 3GPP UMTS 2100 MHz, " msgstr "WCDMA 3GPP UMTS 2100 MHz, " -#: ../cli/src/settings.c:472 +#: ../cli/src/settings.c:496 msgid "WCDMA 3GPP UMTS 1800 MHz, " msgstr "WCDMA 3GPP UMTS 1800 MHz, " -#: ../cli/src/settings.c:474 +#: ../cli/src/settings.c:498 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " -#: ../cli/src/settings.c:476 +#: ../cli/src/settings.c:500 msgid "WCDMA 3GPP UMTS 800 MHz, " msgstr "WCDMA 3GPP UMTS 800 MHz, " -#: ../cli/src/settings.c:478 +#: ../cli/src/settings.c:502 msgid "WCDMA 3GPP UMTS 850 MHz, " msgstr "WCDMA 3GPP UMTS 850 MHz, " -#: ../cli/src/settings.c:480 +#: ../cli/src/settings.c:504 msgid "WCDMA 3GPP UMTS 900 MHz, " msgstr "WCDMA 3GPP UMTS 900 MHz, " -#: ../cli/src/settings.c:482 +#: ../cli/src/settings.c:506 msgid "WCDMA 3GPP UMTS 1700 MHz, " msgstr "WCDMA 3GPP UMTS 1700 MHz, " -#: ../cli/src/settings.c:566 ../cli/src/settings.c:732 +#: ../cli/src/settings.c:508 +#| msgid "WCDMA 3GPP UMTS 900 MHz, " +msgid "WCDMA 3GPP UMTS 1900 MHz, " +msgstr "WCDMA 3GPP UMTS 1900 MHz, " + +#: ../cli/src/settings.c:510 +#| msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgid "WCDMA 3GPP UMTS 2600 MHz, " +msgstr "WCDMA 3GPP UMTS 2600 MHz, " + +#: ../cli/src/settings.c:636 ../cli/src/settings.c:835 msgid "auto" msgstr "auto" -#: ../cli/src/settings.c:727 ../cli/src/settings.c:730 -#: ../cli/src/settings.c:731 ../cli/src/utils.c:176 +#: ../cli/src/settings.c:829 ../cli/src/settings.c:832 +#: ../cli/src/settings.c:833 ../cli/src/utils.c:176 msgid "not set" msgstr "no establecido" @@ -1380,18 +1431,18 @@ msgstr "Opción «--terse» requiere especificar «--fields»" msgid "Option '--terse' requires specific '--fields' option values , not '%s'" msgstr "Opción «--terse» requiere valores de «--fields» específicos, no «%s»" -#: ../cli/src/utils.c:333 +#: ../cli/src/utils.c:334 #, c-format msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" msgstr "" "Error: no se pudo crear un objeto proxy en D-Bus para org.freedesktop.DBus" -#: ../cli/src/utils.c:341 +#: ../cli/src/utils.c:342 #, c-format msgid "Error: NameHasOwner request failed: %s" msgstr "Error: falló la solicitud NameHasOwner: %s" -#: ../cli/src/utils.c:386 +#: ../cli/src/utils.c:387 #, c-format msgid "" "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --" @@ -1400,14 +1451,15 @@ msgstr "" "Advertencia: las versiones de nmcli (%s) y de NetworkManager (%s) no " "coinciden. Use «--nocheck» para evitar el aviso.\n" -#: ../cli/src/utils.c:395 +#: ../cli/src/utils.c:396 #, c-format msgid "" "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force " "execution using --nocheck, but the results are unpredictable." msgstr "" "Error: las versiones de nmcli (%s) y de NetworkManager (%s) no coinciden. " -"Fuerce la ejecución usando «--nocheck», pero los resultados son impredecibles." +"Fuerce la ejecución usando «--nocheck», pero los resultados son " +"impredecibles." #: ../libnm-util/crypto.c:133 #, c-format @@ -1470,12 +1522,11 @@ msgid "Failed to find expected PKCS#8 end tag '%s'." msgstr "Falló al buscar la etiqueta de final «%s» de PKCS#8." #: ../libnm-util/crypto.c:312 -#| msgid "Not enough memory to store file data." msgid "Not enough memory to store private key data." -msgstr "No hay memoria suficiente para almacenar los datos de la clave privada." +msgstr "" +"No hay memoria suficiente para almacenar los datos de la clave privada." #: ../libnm-util/crypto.c:317 -#| msgid "Failed to decrypt the private key." msgid "Failed to decode PKCS#8 private key." msgstr "Falló al descifrar la clave privada PKCS#8." @@ -1637,13 +1688,11 @@ msgstr "No se pudo verificar el archivo PKCS#12: %s" #: ../libnm-util/crypto_gnutls.c:460 #, c-format -#| msgid "Couldn't initialize PKCS#12 decoder: %s" msgid "Couldn't initialize PKCS#8 decoder: %s" msgstr "No se pudo inicializar el decodificador PKCS#8: %s" #: ../libnm-util/crypto_gnutls.c:483 #, c-format -#| msgid "Couldn't decode PKCS#12 file: %s" msgid "Couldn't decode PKCS#8 file: %s" msgstr "No se pudo decodificar el archivo PKCS#8: %s" @@ -1934,13 +1983,13 @@ msgstr "se pudo encontrar «dhcpcd»." msgid "unsupported DHCP client '%s'" msgstr "«%s» cliente DHCP sin soporte " -#: ../src/dns-manager/nm-dns-manager.c:369 +#: ../src/dns-manager/nm-dns-manager.c:376 msgid "NOTE: the libc resolver may not support more than 3 nameservers." msgstr "" "NOTA: el resolutor de nombres de libc puede que no soporte más de 3 " "servidores de nombres." -#: ../src/dns-manager/nm-dns-manager.c:371 +#: ../src/dns-manager/nm-dns-manager.c:378 msgid "The nameservers listed below may not be recognized." msgstr "Puede que los servidores de nombres listados abajo no se reconozcan." @@ -1974,72 +2023,72 @@ msgstr "Conexión PAN %d" msgid "DUN connection %d" msgstr "Conexión DUN %d" -#: ../src/nm-device-ethernet.c:1681 +#: ../src/nm-device-ethernet.c:1724 #, c-format msgid "PPPoE connection %d" msgstr "Conexión PPPoE %d" -#: ../src/nm-device-ethernet.c:1681 ../src/settings/nm-settings-utils.c:50 +#: ../src/nm-device-ethernet.c:1724 ../src/settings/nm-settings-utils.c:50 #, c-format msgid "Wired connection %d" msgstr "Conexión cableada %d" -#: ../src/nm-device-olpc-mesh.c:423 +#: ../src/nm-device-olpc-mesh.c:393 #, c-format msgid "Mesh %d" msgstr "Malla %d" -#: ../src/nm-manager.c:673 +#: ../src/nm-manager.c:670 #, c-format msgid "VPN connection %d" msgstr "Conexión VPN %d" -#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231 -#: ../src/nm-netlink-monitor.c:653 +#: ../src/nm-netlink-monitor.c:101 ../src/nm-netlink-monitor.c:234 +#: ../src/nm-netlink-monitor.c:661 #, c-format msgid "error processing netlink message: %s" msgstr "error al procesar el mensaje de netlink: %s" -#: ../src/nm-netlink-monitor.c:214 +#: ../src/nm-netlink-monitor.c:216 msgid "error occurred while waiting for data on socket" msgstr "ha ocurrido un error mientras esperaban datos en un socket" -#: ../src/nm-netlink-monitor.c:254 +#: ../src/nm-netlink-monitor.c:260 #, c-format msgid "unable to connect to netlink for monitoring link status: %s" msgstr "" "no se puede conectar con netlink para monitorizar el estado del enlace: %s" -#: ../src/nm-netlink-monitor.c:265 +#: ../src/nm-netlink-monitor.c:271 #, c-format msgid "unable to enable netlink handle credential passing: %s" msgstr "no se puede activar el manejador netlink para pasar credenciales: %s" -#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#: ../src/nm-netlink-monitor.c:294 ../src/nm-netlink-monitor.c:354 #, c-format msgid "unable to allocate netlink handle for monitoring link status: %s" msgstr "" "no se puede asignar el manejador netlink para monitorizar el estado del " "enlace: %s" -#: ../src/nm-netlink-monitor.c:376 +#: ../src/nm-netlink-monitor.c:379 #, c-format msgid "unable to allocate netlink link cache for monitoring link status: %s" msgstr "" "no se puede asignar el enlace a la cache de netlink para monitorizar el " "estado del enlace: %s" -#: ../src/nm-netlink-monitor.c:502 +#: ../src/nm-netlink-monitor.c:506 #, c-format msgid "unable to join netlink group: %s" msgstr "no pudo unirse al grupo netlink: %s" -#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#: ../src/nm-netlink-monitor.c:637 ../src/nm-netlink-monitor.c:650 #, c-format msgid "error updating link cache: %s" msgstr "error al actualizar el enlace caché: %s" -#: ../src/settings/plugins/ifcfg-rh/reader.c:3512 +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 #: ../src/settings/plugins/ifnet/connection_parser.c:51 msgid "System" msgstr "Sistema" diff --git a/po/fi.po b/po/fi.po index 31187e9f..8a7517f6 100644 --- a/po/fi.po +++ b/po/fi.po @@ -4,302 +4,1848 @@ # # Ilkka Tuohela <hile@iki.fi>, 2005-2008. # +# Additional Launchpad translators with re-licensable originally BSD licensed contributions: +# Christian Hellberg (https://launchpad.net/~christian-hellberg), Heikki Kulhia (https://launchpad.net/~hessuk), Heikki Mäntysaari <heikkim@gmail.com>, Jere Sokka (https://launchpad.net/~jerry-sokka), Jiri Grönroos <jiri.gronroos@iki.fi>, Joonas Pajuniva (https://launchpad.net/~joonas-pajuniva), Jussi Aalto, Lazy (https://launchpad.net/~ubuntu-bugs-oittaa), Matti Karnaattu (https://launchpad.net/~mattikarnaattu), Miko-Matias Grönvalli (https://launchpad.net/~matias-gronvall), Pasi Tarhonen (https://launchpad.net/~pasi-tarhonen), Sorkkarauta (https://launchpad.net/~sorkkarauta), Timo Jyrinki <timo.jyrinki@iki.fi>, Tomi Juntunen (https://launchpad.net/~tojuntu), Toni Lähdekorpi <toni@lygon.net>, vilQuri <vili.lehto@pp.inet.fi>. +# msgid "" msgstr "" "Project-Id-Version: NetworkManager\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-11-29 20:22+0300\n" -"PO-Revision-Date: 2008-11-29 20:00+0300\n" -"Last-Translator: Ilkka Tuohela <hile@iki.fi>\n" +"POT-Creation-Date: 2011-09-12 16:51+0300\n" +"PO-Revision-Date: 2011-09-12 16:51+0300\n" +"Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n" "Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n" +"Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Launchpad-Export-Date: 2011-09-12 13:20+0000\n" +"X-Generator: Launchpad (build 13910)\n" + +#: ../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 "NIMI" + +#. 0 +#: ../cli/src/connections.c:65 ../cli/src/connections.c:79 +msgid "UUID" +msgstr "UUID" + +#. 1 +#: ../cli/src/connections.c:66 +msgid "DEVICES" +msgstr "LAITTEET" + +#. 2 +#: ../cli/src/connections.c:67 +msgid "DEFAULT" +msgstr "OLETUS" + +#. 3 +#: ../cli/src/connections.c:68 +msgid "SPEC-OBJECT" +msgstr "SPEC-KOHDE" + +#. 4 +#: ../cli/src/connections.c:69 +msgid "VPN" +msgstr "VPN" + +#. 5 +#. 6 +#. 2 +#. 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 "" + +#. 1 +#. 0 +#. 1 +#. 2 +#: ../cli/src/connections.c:80 ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 ../cli/src/devices.c:227 +msgid "TYPE" +msgstr "TYYPPI" + +#. 2 +#: ../cli/src/connections.c:81 +msgid "TIMESTAMP" +msgstr "AIKALEIMA" + +#. 3 +#: ../cli/src/connections.c:82 +msgid "TIMESTAMP-REAL" +msgstr "AIKALEIMA-TODELLINEN" -#: ../libnm-util/crypto.c:120 +#. 4 +#: ../cli/src/connections.c:83 +msgid "AUTOCONNECT" +msgstr "AUTOMAATTINEN YHTEYDENMUODOSTUS" + +#. 5 +#: ../cli/src/connections.c:84 +msgid "READONLY" +msgstr "VAIN LUKU" + +#: ../cli/src/connections.c:153 +#, c-format +msgid "" +"Usage: nmcli con { COMMAND | help }\n" +" COMMAND := { list | status | up | down | delete }\n" +"\n" +" list [id <id> | uuid <id>]\n" +" status\n" +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--" +"nowait] [--timeout <timeout>]\n" +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout " +"<timeout>]\n" +" down id <id> | uuid <id>\n" +" delete id <id> | uuid <id>\n" +msgstr "" + +#: ../cli/src/connections.c:208 ../cli/src/connections.c:532 +#, c-format +msgid "Error: 'con list': %s" +msgstr "" + +#: ../cli/src/connections.c:210 ../cli/src/connections.c:534 +#, c-format +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/connections.c:218 +msgid "Connection details" +msgstr "Yhteyden tiedot" + +#: ../cli/src/connections.c:407 +msgid "never" +msgstr "ei koskaan" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:632 ../cli/src/settings.c:753 +#: ../cli/src/settings.c:1041 ../cli/src/settings.c:1042 +#: ../cli/src/settings.c:1044 ../cli/src/settings.c:1046 +#: ../cli/src/settings.c:1047 ../cli/src/settings.c:1177 +#: ../cli/src/settings.c:1178 ../cli/src/settings.c:1179 +#: ../cli/src/settings.c:1180 ../cli/src/settings.c:1259 +#: ../cli/src/settings.c:1260 ../cli/src/settings.c:1261 +#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263 +#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265 +#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1267 +#: ../cli/src/settings.c:1268 ../cli/src/settings.c:1269 +#: ../cli/src/settings.c:1270 ../cli/src/settings.c:1271 +#: ../cli/src/settings.c:1346 +msgid "yes" +msgstr "kyllä" + +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:562 ../cli/src/settings.c:632 +#: ../cli/src/settings.c:753 ../cli/src/settings.c:1041 +#: ../cli/src/settings.c:1042 ../cli/src/settings.c:1044 +#: ../cli/src/settings.c:1046 ../cli/src/settings.c:1047 +#: ../cli/src/settings.c:1177 ../cli/src/settings.c:1178 +#: ../cli/src/settings.c:1179 ../cli/src/settings.c:1180 +#: ../cli/src/settings.c:1259 ../cli/src/settings.c:1260 +#: ../cli/src/settings.c:1261 ../cli/src/settings.c:1262 +#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264 +#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266 +#: ../cli/src/settings.c:1267 ../cli/src/settings.c:1268 +#: ../cli/src/settings.c:1269 ../cli/src/settings.c:1270 +#: ../cli/src/settings.c:1271 ../cli/src/settings.c:1346 +msgid "no" +msgstr "ei" + +#: ../cli/src/connections.c:483 +msgid "Connection list" +msgstr "" + +#: ../cli/src/connections.c:496 ../cli/src/connections.c:1356 +#: ../cli/src/connections.c:1371 ../cli/src/connections.c:1380 +#: ../cli/src/connections.c:1390 ../cli/src/connections.c:1402 +#: ../cli/src/connections.c:1497 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1180 ../cli/src/devices.c:1190 +#: ../cli/src/devices.c:1304 ../cli/src/devices.c:1312 +#: ../cli/src/devices.c:1525 ../cli/src/devices.c:1532 +#, c-format +msgid "Error: %s argument is missing." +msgstr "Virhe: %s-argumentti puuttuu." + +#: ../cli/src/connections.c:509 +#, c-format +msgid "Error: %s - no such connection." +msgstr "Virhe: %s - ei kyseistä yhteyttä." + +#: ../cli/src/connections.c:515 ../cli/src/connections.c:1415 +#: ../cli/src/connections.c:1514 ../cli/src/connections.c:1587 +#: ../cli/src/devices.c:977 ../cli/src/devices.c:1057 +#: ../cli/src/devices.c:1204 ../cli/src/devices.c:1318 +#: ../cli/src/devices.c:1538 +#, c-format +msgid "Unknown parameter: %s\n" +msgstr "Tuntematon parametri: %s\n" + +#: ../cli/src/connections.c:524 +#, c-format +msgid "Error: no valid parameter specified." +msgstr "Virhe: annettu parametri on virheellinen." + +#: ../cli/src/connections.c:539 ../cli/src/connections.c:1668 +#: ../cli/src/devices.c:1746 ../cli/src/network-manager.c:456 +#, c-format +msgid "Error: %s." +msgstr "Virhe: %s." + +#: ../cli/src/connections.c:627 +#, c-format +msgid "Error: 'con status': %s" +msgstr "" + +#: ../cli/src/connections.c:629 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/connections.c:637 ../cli/src/connections.c:1430 +#: ../cli/src/connections.c:1529 ../cli/src/connections.c:1601 +#: ../cli/src/devices.c:1004 ../cli/src/devices.c:1066 +#: ../cli/src/devices.c:1219 ../cli/src/devices.c:1348 +#: ../cli/src/devices.c:1567 +#, c-format +msgid "Error: Can't find out if NetworkManager is running: %s." +msgstr "Virhe: Ei saada selville onko NetworkManager käynnissä: %s." + +#: ../cli/src/connections.c:641 ../cli/src/connections.c:1434 +#: ../cli/src/connections.c:1533 ../cli/src/connections.c:1605 +#: ../cli/src/devices.c:1008 ../cli/src/devices.c:1070 +#: ../cli/src/devices.c:1223 ../cli/src/devices.c:1352 +#: ../cli/src/devices.c:1571 +#, c-format +msgid "Error: NetworkManager is not running." +msgstr "Virhe: NetworkManager ei ole käynnissä." + +#: ../cli/src/connections.c:649 +msgid "Active connections" +msgstr "Aktiiviset yhteydet" + +#: ../cli/src/connections.c:1073 +#, c-format +msgid "no active connection on device '%s'" +msgstr "ei aktiivista yhteyttä laitteessa '%s'" + +#: ../cli/src/connections.c:1081 +#, c-format +msgid "no active connection or device" +msgstr "ei aktiivista yhteyttä tai laitetta" + +#: ../cli/src/connections.c:1152 +#, c-format +msgid "device '%s' not compatible with connection '%s'" +msgstr "laite '%s' ei ole yhteensopiva yhteyden '%s' kanssa" + +#: ../cli/src/connections.c:1154 +#, c-format +msgid "no device found for connection '%s'" +msgstr "laitetta yhteydelle '%s' ei löytynyt" + +#: ../cli/src/connections.c:1165 +msgid "activating" +msgstr "akitvoidaan" + +#: ../cli/src/connections.c:1167 +msgid "activated" +msgstr "aktivoitu" + +#: ../cli/src/connections.c:1169 ../cli/src/devices.c:294 +msgid "deactivating" +msgstr "" + +#: ../cli/src/connections.c:1172 ../cli/src/connections.c:1195 +#: ../cli/src/connections.c:1228 ../cli/src/devices.c:298 +#: ../cli/src/devices.c:678 ../cli/src/network-manager.c:111 +#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176 +#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291 +#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384 +#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:513 +#: ../cli/src/utils.c:397 +msgid "unknown" +msgstr "tuntematon" + +#: ../cli/src/connections.c:1181 +msgid "VPN connecting (prepare)" +msgstr "VPN yhdistää (valmistelu)" + +#: ../cli/src/connections.c:1183 +msgid "VPN connecting (need authentication)" +msgstr "VPN yhdistää (tarvitaan autentikointi)" + +#: ../cli/src/connections.c:1185 +msgid "VPN connecting" +msgstr "VPN yhdistää" + +#: ../cli/src/connections.c:1187 +msgid "VPN connecting (getting IP configuration)" +msgstr "VPN yhdistää (haetaan IP-asetuksia)" + +#: ../cli/src/connections.c:1189 +msgid "VPN connected" +msgstr "VPN yhdistetty" + +#: ../cli/src/connections.c:1191 +msgid "VPN connection failed" +msgstr "VPN-yhteyden avaus epäonnistui" + +#: ../cli/src/connections.c:1193 +msgid "VPN disconnected" +msgstr "VPN-yhteys katkaistu" + +#: ../cli/src/connections.c:1204 +msgid "unknown reason" +msgstr "tuntematon syy" + +#: ../cli/src/connections.c:1206 +msgid "none" +msgstr "ei mitään" + +#: ../cli/src/connections.c:1208 +msgid "the user was disconnected" +msgstr "käyttäjän yhteys katkaistu" + +#: ../cli/src/connections.c:1210 +msgid "the base network connection was interrupted" +msgstr "verkkoyhteys keskeytynyt" + +#: ../cli/src/connections.c:1212 +msgid "the VPN service stopped unexpectedly" +msgstr "VPN-palvelut pysähtyi yllättäen" + +#: ../cli/src/connections.c:1214 +msgid "the VPN service returned invalid configuration" +msgstr "VPN-palvelu palautti virheelliset asetukset" + +#: ../cli/src/connections.c:1216 +msgid "the connection attempt timed out" +msgstr "yhteyden muodostus aikakatkaistiin" + +#: ../cli/src/connections.c:1218 +msgid "the VPN service did not start in time" +msgstr "VPN-palvelu ei käynnistynyt ajoissa" + +#: ../cli/src/connections.c:1220 +msgid "the VPN service failed to start" +msgstr "VPN-palvelu ei käynnistynyt" + +#: ../cli/src/connections.c:1222 +msgid "no valid VPN secrets" +msgstr "" + +#: ../cli/src/connections.c:1224 +msgid "invalid VPN secrets" +msgstr "" + +#: ../cli/src/connections.c:1226 +msgid "the connection was removed" +msgstr "yhteys poistettu" + +#: ../cli/src/connections.c:1240 +#, c-format +msgid "state: %s\n" +msgstr "tila: %s\n" + +#: ../cli/src/connections.c:1243 ../cli/src/connections.c:1269 +#, c-format +msgid "Connection activated\n" +msgstr "yhteys aktivoitu\n" + +#: ../cli/src/connections.c:1246 +#, c-format +msgid "Error: Connection activation failed." +msgstr "Virhe: Yhteyden aktivointi epäonnistui." + +#: ../cli/src/connections.c:1265 +#, c-format +msgid "state: %s (%d)\n" +msgstr "tila: %s (%d)\n" + +#: ../cli/src/connections.c:1275 +#, c-format +msgid "Error: Connection activation failed: %s." +msgstr "Virhe: Yhteyden aktivointi epäonnistui: %s" + +#: ../cli/src/connections.c:1292 ../cli/src/devices.c:1126 +#, c-format +msgid "Error: Timeout %d sec expired." +msgstr "Virhe: Yhteydenmuodostus kesti liian kauan (%d s)" + +#: ../cli/src/connections.c:1305 +#, c-format +msgid "Error: Connection activation failed: %s" +msgstr "Virhe: Yhteyden aktivointi epäonnistui: %s" + +#: ../cli/src/connections.c:1311 +#, c-format +msgid "Active connection state: %s\n" +msgstr "Aktiivinen yhteyden tila:%s\n" + +#: ../cli/src/connections.c:1312 +#, c-format +msgid "Active connection path: %s\n" +msgstr "Aktiivisen yhteyden polku: %s\n" + +#: ../cli/src/connections.c:1364 ../cli/src/connections.c:1505 +#: ../cli/src/connections.c:1614 +#, c-format +msgid "Error: Unknown connection: %s." +msgstr "Virhe: tuntematon yhteys: %s." + +#: ../cli/src/connections.c:1410 ../cli/src/devices.c:1198 +#, c-format +msgid "Error: timeout value '%s' is not valid." +msgstr "Virhe: Kytkentäajan asetus '%s' virheellinen" + +#: ../cli/src/connections.c:1423 ../cli/src/connections.c:1522 +#: ../cli/src/connections.c:1594 +#, c-format +msgid "Error: id or uuid has to be specified." +msgstr "" + +#: ../cli/src/connections.c:1451 +#, c-format +msgid "Error: No suitable device found: %s." +msgstr "Virhe: Soveltuvaa laitetta ei löytynyt: %s." + +#: ../cli/src/connections.c:1453 +#, c-format +msgid "Error: No suitable device found." +msgstr "Virhe: Soveltuvaa laitetta ei löytynyt." + +#: ../cli/src/connections.c:1558 +#, c-format +msgid "Warning: Connection not active\n" +msgstr "Varoitus: Ei aktiivista yhteyttä\n" + +#: ../cli/src/connections.c:1659 +#, c-format +msgid "Error: 'con' command '%s' is not valid." +msgstr "" + +#: ../cli/src/connections.c:1724 +#, c-format +msgid "Error: could not connect to D-Bus." +msgstr "" + +#: ../cli/src/connections.c:1732 +#, c-format +msgid "Error: Could not get system settings." +msgstr "Virhe: Järjestelmäasetuksia ei saada." + +#: ../cli/src/connections.c:1742 +#, c-format +msgid "Error: Can't obtain connections: settings service is not running." +msgstr "" + +#. 0 +#. 9 +#. 3 +#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 +msgid "DEVICE" +msgstr "" + +#. 1 +#. 4 +#. 1 +#: ../cli/src/devices.c:68 ../cli/src/devices.c:106 +#: ../cli/src/network-manager.c:39 +msgid "STATE" +msgstr "TILA" + +#: ../cli/src/devices.c:78 +msgid "GENERAL" +msgstr "YLEISTÄ" + +#. 0 +#: ../cli/src/devices.c:79 +msgid "CAPABILITIES" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:80 +msgid "WIFI-PROPERTIES" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:81 +msgid "AP" +msgstr "" + +#. 3 +#: ../cli/src/devices.c:82 +msgid "WIRED-PROPERTIES" +msgstr "" + +#. 4 +#: ../cli/src/devices.c:83 +msgid "WIMAX-PROPERTIES" +msgstr "" + +#. 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-ASETUKSET" + +#. 7 +#: ../cli/src/devices.c:86 +msgid "IP4-DNS" +msgstr "" + +#. 8 +#: ../cli/src/devices.c:87 +msgid "IP6-SETTINGS" +msgstr "" + +#. 9 +#: ../cli/src/devices.c:88 +msgid "IP6-DNS" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:104 +msgid "DRIVER" +msgstr "OHJAIN" + +#. 3 +#: ../cli/src/devices.c:105 +msgid "HWADDR" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:115 +msgid "CARRIER-DETECT" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:116 +msgid "SPEED" +msgstr "NOPEUS" + +#. 0 +#: ../cli/src/devices.c:125 +msgid "CARRIER" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:135 +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:136 +msgid "WPA" +msgstr "WPA" + +#. 2 +#: ../cli/src/devices.c:137 +msgid "WPA2" +msgstr "WPA2" + +#. 3 +#: ../cli/src/devices.c:138 +msgid "TKIP" +msgstr "TKIP" + +#. 4 +#: ../cli/src/devices.c:139 +msgid "CCMP" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:149 +msgid "CTR-FREQ" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:150 +msgid "RSSI" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:151 +msgid "CINR" +msgstr "" + +#. 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 "" + +#. 1 +#: ../cli/src/devices.c:164 ../cli/src/devices.c:175 +msgid "PREFIX" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:165 ../cli/src/devices.c:176 +msgid "GATEWAY" +msgstr "" + +#. 0 +#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:203 +msgid "SSID" +msgstr "" + +#. 1 +#: ../cli/src/devices.c:204 +msgid "BSSID" +msgstr "" + +#. 2 +#: ../cli/src/devices.c:205 +msgid "MODE" +msgstr "TILA" + +#. 3 +#: ../cli/src/devices.c:206 +msgid "FREQ" +msgstr "TAAJ" + +#. 4 +#: ../cli/src/devices.c:207 +msgid "RATE" +msgstr "NOPEUS" + +#. 5 +#. 1 +#: ../cli/src/devices.c:208 ../cli/src/devices.c:226 +msgid "SIGNAL" +msgstr "" + +#. 6 +#: ../cli/src/devices.c:209 +msgid "SECURITY" +msgstr "TURVALLISUUS" + +#. 7 +#: ../cli/src/devices.c:210 +msgid "WPA-FLAGS" +msgstr "WPA-LIPUT" + +#. 8 +#: ../cli/src/devices.c:211 +msgid "RSN-FLAGS" +msgstr "RSN-LIPUT" + +#. 10 +#. 4 +#: ../cli/src/devices.c:213 ../cli/src/devices.c:229 +msgid "ACTIVE" +msgstr "AKTIIVINEN" + +#: ../cli/src/devices.c:246 +#, 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>] [bssid <BSSID>]]\n" +" wimax [list [iface <iface>] [nsp <name>]]\n" +"\n" +msgstr "" + +#: ../cli/src/devices.c:274 +msgid "unmanaged" +msgstr "hallinnoimaton" + +#: ../cli/src/devices.c:276 +msgid "unavailable" +msgstr "" + +#: ../cli/src/devices.c:278 ../cli/src/network-manager.c:108 +msgid "disconnected" +msgstr "" + +#: ../cli/src/devices.c:280 +msgid "connecting (prepare)" +msgstr "yhdistetään (valmistellaan)" + +#: ../cli/src/devices.c:282 +msgid "connecting (configuring)" +msgstr "yhdistetään (määritellään)" + +#: ../cli/src/devices.c:284 +msgid "connecting (need authentication)" +msgstr "yhdistetään (tarvitsee valtuutuksen)" + +#: ../cli/src/devices.c:286 +msgid "connecting (getting IP configuration)" +msgstr "yhdistetään (haetaan IP määrittelyjä)" + +#: ../cli/src/devices.c:288 +msgid "connecting (checking IP connectivity)" +msgstr "yhdistää (tarkastaa IP yhteyttä)" + +#: ../cli/src/devices.c:290 +msgid "connecting (starting secondary connections)" +msgstr "yhdistää (käynnistää toisen tason yhteydet)" + +#: ../cli/src/devices.c:292 ../cli/src/network-manager.c:104 +msgid "connected" +msgstr "" + +#: ../cli/src/devices.c:296 +msgid "connection failed" +msgstr "yhdistäminen epäonnistui" + +#: ../cli/src/devices.c:321 ../cli/src/devices.c:331 ../cli/src/devices.c:491 +#: ../cli/src/devices.c:535 +msgid "Unknown" +msgstr "Tuntematon" + +#: ../cli/src/devices.c:364 +msgid "(none)" +msgstr "" + +#: ../cli/src/devices.c:389 +#, c-format +msgid "%s: error converting IP4 address 0x%X" +msgstr "" + +#: ../cli/src/devices.c:460 +#, c-format +msgid "%u MHz" +msgstr "%u MHz" + +#: ../cli/src/devices.c:461 +#, c-format +msgid "%u MB/s" +msgstr "" + +#: ../cli/src/devices.c:470 +msgid "Encrypted: " +msgstr "" + +#: ../cli/src/devices.c:475 +msgid "WEP " +msgstr "WEP " + +#: ../cli/src/devices.c:477 +msgid "WPA " +msgstr "WPA " + +#: ../cli/src/devices.c:479 +msgid "WPA2 " +msgstr "WPA2 " + +#: ../cli/src/devices.c:482 +msgid "Enterprise " +msgstr "" + +#: ../cli/src/devices.c:491 +msgid "Ad-Hoc" +msgstr "" + +#: ../cli/src/devices.c:491 +msgid "Infrastructure" +msgstr "" + +#: ../cli/src/devices.c:526 +msgid "Home" +msgstr "" + +#: ../cli/src/devices.c:529 +msgid "Partner" +msgstr "" + +#: ../cli/src/devices.c:532 +msgid "Roaming" +msgstr "" + +#: ../cli/src/devices.c:602 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "" + +#: ../cli/src/devices.c:604 +#, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/devices.c:613 +msgid "Device details" +msgstr "Laitetiedot" + +#: ../cli/src/devices.c:647 ../cli/src/devices.c:1142 ../cli/src/utils.c:343 +msgid "(unknown)" +msgstr "(tuntematon)" + +#: ../cli/src/devices.c:648 +msgid "unknown)" +msgstr "tuntematon)" + +#: ../cli/src/devices.c:674 +#, c-format +msgid "%u Mb/s" +msgstr "" + +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:747 +msgid "on" +msgstr "" + +#: ../cli/src/devices.c:747 +msgid "off" +msgstr "" + +#: ../cli/src/devices.c:994 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "Virhe: 'laitetila': %s" + +#: ../cli/src/devices.c:996 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "Virhe: 'laitetila': %s; sallitut kentät: %s" + +#: ../cli/src/devices.c:1019 +msgid "Status of devices" +msgstr "Laitteiden tilat" + +#: ../cli/src/devices.c:1050 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "" + +#: ../cli/src/devices.c:1091 ../cli/src/devices.c:1243 +#: ../cli/src/devices.c:1380 ../cli/src/devices.c:1599 +#, c-format +msgid "Error: Device '%s' not found." +msgstr "Virhe: laitetta '%s' ei löytynyt." + +#: ../cli/src/devices.c:1114 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "" + +#: ../cli/src/devices.c:1139 +#, c-format +msgid "Error: Device '%s' (%s) disconnecting failed: %s" +msgstr "" + +#: ../cli/src/devices.c:1147 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Laitteen tila: %d (%s)\n" + +#: ../cli/src/devices.c:1212 +#, c-format +msgid "Error: iface has to be specified." +msgstr "" + +#: ../cli/src/devices.c:1338 +#, c-format +msgid "Error: 'dev wifi': %s" +msgstr "" + +#: ../cli/src/devices.c:1340 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/devices.c:1363 +msgid "WiFi scan list" +msgstr "" + +#: ../cli/src/devices.c:1400 ../cli/src/devices.c:1454 +#, c-format +msgid "Error: Access point with bssid '%s' not found." +msgstr "Virhe: Tukiasemaa bssid:llä '%s' ei löytynyt." + +#: ../cli/src/devices.c:1417 +#, c-format +msgid "Error: Device '%s' is not a WiFi device." +msgstr "" + +#: ../cli/src/devices.c:1481 +#, c-format +msgid "Error: 'dev wifi' command '%s' is not valid." +msgstr "" + +#: ../cli/src/devices.c:1557 +#, c-format +msgid "Error: 'dev wimax': %s" +msgstr "" + +#: ../cli/src/devices.c:1559 +#, c-format +msgid "Error: 'dev wimax': %s; allowed fields: %s" +msgstr "" + +#: ../cli/src/devices.c:1582 +msgid "WiMAX NSP list" +msgstr "" + +#: ../cli/src/devices.c:1619 +#, c-format +msgid "Error: NSP with name '%s' not found." +msgstr "" + +#: ../cli/src/devices.c:1630 +#, c-format +msgid "Error: Device '%s' is not a WiMAX device." +msgstr "" + +#: ../cli/src/devices.c:1661 +#, c-format +msgid "Error: Access point with nsp '%s' not found." +msgstr "Virhe: Tukiasemaa nsp:llä '%s' ei löytynyt." + +#: ../cli/src/devices.c:1688 +#, c-format +msgid "Error: 'dev wimax' command '%s' is not valid." +msgstr "" + +#: ../cli/src/devices.c:1738 +#, c-format +msgid "Error: 'dev' command '%s' is not valid." +msgstr "" + +#: ../cli/src/network-manager.c:37 +msgid "RUNNING" +msgstr "" + +#. 0 +#: ../cli/src/network-manager.c:38 +msgid "VERSION" +msgstr "" + +#. 2 +#: ../cli/src/network-manager.c:40 +msgid "NET-ENABLED" +msgstr "" + +#. 3 +#: ../cli/src/network-manager.c:41 +msgid "WIFI-HARDWARE" +msgstr "" + +#. 4 +#: ../cli/src/network-manager.c:42 +msgid "WIFI" +msgstr "" + +#. 5 +#: ../cli/src/network-manager.c:43 +msgid "WWAN-HARDWARE" +msgstr "" + +#. 6 +#: ../cli/src/network-manager.c:44 +msgid "WWAN" +msgstr "" + +#. 7 +#: ../cli/src/network-manager.c:45 +msgid "WIMAX-HARDWARE" +msgstr "" + +#. 8 +#: ../cli/src/network-manager.c:46 +msgid "WIMAX" +msgstr "" + +#: ../cli/src/network-manager.c:67 +#, 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" +" enable [true|false]\n" +" sleep [true|false]\n" +" wifi [on|off]\n" +" wwan [on|off]\n" +" wimax [on|off]\n" +"\n" +msgstr "" + +#: ../cli/src/network-manager.c:96 +msgid "asleep" +msgstr "" + +#: ../cli/src/network-manager.c:98 +msgid "connecting" +msgstr "" + +#: ../cli/src/network-manager.c:100 +msgid "connected (local only)" +msgstr "" + +#: ../cli/src/network-manager.c:102 +msgid "connected (site only)" +msgstr "" + +#: ../cli/src/network-manager.c:106 +msgid "disconnecting" +msgstr "" + +#: ../cli/src/network-manager.c:146 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "" + +#: ../cli/src/network-manager.c:148 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "" + +#. create NMClient +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 +msgid "enabled" +msgstr "" + +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 +msgid "disabled" +msgstr "" + +#: ../cli/src/network-manager.c:181 +msgid "NetworkManager status" +msgstr "" + +#. Print header +#: ../cli/src/network-manager.c:184 +msgid "running" +msgstr "" + +#: ../cli/src/network-manager.c:184 +msgid "not running" +msgstr "" + +#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:323 +#, c-format +msgid "Error: Couldn't connect to system bus: %s" +msgstr "" + +#: ../cli/src/network-manager.c:226 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "" + +#: ../cli/src/network-manager.c:232 +#, c-format +msgid "Error in sleep: %s" +msgstr "" + +#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331 +#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408 +#, c-format +msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" +msgstr "" + +#: ../cli/src/network-manager.c:284 +msgid "Networking enabled" +msgstr "" + +#: ../cli/src/network-manager.c:300 +#, c-format +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "" + +#: ../cli/src/network-manager.c:310 +#, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "" + +#: ../cli/src/network-manager.c:318 +#, c-format +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "" + +#: ../cli/src/network-manager.c:339 +msgid "WiFi enabled" +msgstr "" + +#: ../cli/src/network-manager.c:355 +#, c-format +msgid "Error: invalid 'wifi' parameter: '%s'." +msgstr "" + +#: ../cli/src/network-manager.c:377 +msgid "WWAN enabled" +msgstr "" + +#: ../cli/src/network-manager.c:393 +#, c-format +msgid "Error: invalid 'wwan' parameter: '%s'." +msgstr "" + +#: ../cli/src/network-manager.c:416 +msgid "WiMAX enabled" +msgstr "" + +#: ../cli/src/network-manager.c:432 +#, c-format +msgid "Error: invalid 'wimax' parameter: '%s'." +msgstr "" + +#: ../cli/src/network-manager.c:445 +#, c-format +msgid "Error: 'nm' command '%s' is not valid." +msgstr "" + +#: ../cli/src/nmcli.c:64 +#, c-format +msgid "" +"Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" +"\n" +"OPTIONS\n" +" -t[erse] terse output\n" +" -p[retty] pretty output\n" +" -m[ode] tabular|multiline output mode\n" +" -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" +"OBJECT\n" +" nm NetworkManager status\n" +" con NetworkManager connections\n" +" dev devices managed by NetworkManager\n" +"\n" +msgstr "" + +#: ../cli/src/nmcli.c:109 +#, c-format +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "" + +#: ../cli/src/nmcli.c:139 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "" + +#: ../cli/src/nmcli.c:144 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "" + +#: ../cli/src/nmcli.c:152 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "" + +#: ../cli/src/nmcli.c:157 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "" + +#: ../cli/src/nmcli.c:167 ../cli/src/nmcli.c:183 +#, c-format +msgid "Error: missing argument for '%s' option." +msgstr "" + +#: ../cli/src/nmcli.c:176 ../cli/src/nmcli.c:192 +#, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "" + +#: ../cli/src/nmcli.c:199 +#, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "" + +#: ../cli/src/nmcli.c:207 +#, c-format +msgid "nmcli tool, version %s\n" +msgstr "" + +#: ../cli/src/nmcli.c:213 +#, c-format +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "" + +#: ../cli/src/nmcli.c:232 +#, c-format +msgid "Caught signal %d, shutting down..." +msgstr "" + +#: ../cli/src/nmcli.c:257 +msgid "Error: Could not create NMClient object." +msgstr "" + +#: ../cli/src/nmcli.c:273 +msgid "Success" +msgstr "" + +#: ../cli/src/settings.c:447 +#, c-format +msgid "%d (hex-ascii-key)" +msgstr "" + +#: ../cli/src/settings.c:449 +#, c-format +msgid "%d (104/128-bit passphrase)" +msgstr "" + +#: ../cli/src/settings.c:452 +#, c-format +msgid "%d (unknown)" +msgstr "%d (tuntematon)" + +#: ../cli/src/settings.c:478 +msgid "0 (unknown)" +msgstr "0 (tuntematon)" + +#: ../cli/src/settings.c:484 +msgid "any, " +msgstr "" + +#: ../cli/src/settings.c:486 +msgid "900 MHz, " +msgstr "900 MHz, " + +#: ../cli/src/settings.c:488 +msgid "1800 MHz, " +msgstr "1800 MHz, " + +#: ../cli/src/settings.c:490 +msgid "1900 MHz, " +msgstr "1900 MHz, " + +#: ../cli/src/settings.c:492 +msgid "850 MHz, " +msgstr "850 MHz, " + +#: ../cli/src/settings.c:494 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 MHz, " + +#: ../cli/src/settings.c:496 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "WCDMA 3GPP UMTS 1800 MHz, " + +#: ../cli/src/settings.c:498 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " + +#: ../cli/src/settings.c:500 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "WCDMA 3GPP UMTS 800 MHz, " + +#: ../cli/src/settings.c:502 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "WCDMA 3GPP UMTS 850 MHz, " + +#: ../cli/src/settings.c:504 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "WCDMA 3GPP UMTS 900 MHz, " + +#: ../cli/src/settings.c:506 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "WCDMA 3GPP UMTS 1700 MHz, " + +#: ../cli/src/settings.c:508 +msgid "WCDMA 3GPP UMTS 1900 MHz, " +msgstr "WCDMA 3GPP UMTS 1900 MHz, " + +#: ../cli/src/settings.c:510 +msgid "WCDMA 3GPP UMTS 2600 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 MHz, " + +#: ../cli/src/settings.c:636 ../cli/src/settings.c:835 +msgid "auto" +msgstr "auto" + +#: ../cli/src/settings.c:829 ../cli/src/settings.c:832 +#: ../cli/src/settings.c:833 ../cli/src/utils.c:176 +msgid "not set" +msgstr "ei asetettu" + +#: ../cli/src/utils.c:128 +#, c-format +msgid "field '%s' has to be alone" +msgstr "" + +#: ../cli/src/utils.c:131 +#, c-format +msgid "invalid field '%s'" +msgstr "" + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "" + +#: ../cli/src/utils.c:154 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "" + +#: ../cli/src/utils.c:334 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" +msgstr "" + +#: ../cli/src/utils.c:342 +#, c-format +msgid "Error: NameHasOwner request failed: %s" +msgstr "" + +#: ../cli/src/utils.c:387 +#, 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:396 +#, 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:133 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "PEM-avaintiedostossa ei ole loppumerkkiä \"%s\"." -#: ../libnm-util/crypto.c:130 +#: ../libnm-util/crypto.c:146 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Tämä ei näytä PEM-muotoiselta salaisen avaimen tiedostolta." -#: ../libnm-util/crypto.c:138 +#: ../libnm-util/crypto.c:154 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Muisti ei riitä PEM-tiedoston sisällön tallentamiseen." -#: ../libnm-util/crypto.c:154 +#: ../libnm-util/crypto.c:170 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Virheellinen PEM-tiedosto: ensimmäinen merkintä ei ollut Proc-Type." -#: ../libnm-util/crypto.c:162 +#: ../libnm-util/crypto.c:178 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Virheellinen PEM-tiedosto: tuntematon Proc-Type-merkintä \"%s\"." -#: ../libnm-util/crypto.c:172 +#: ../libnm-util/crypto.c:188 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Virheellinen PEM-tiedosto: DEK-Info ei ollut toinen merkintä." -#: ../libnm-util/crypto.c:183 +#: ../libnm-util/crypto.c:199 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "Virheellinen PEM-tiedosto: alustusvektoria ei löytynyt DEK-Infosta." -#: ../libnm-util/crypto.c:190 +#: ../libnm-util/crypto.c:206 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "Virheellinen PEM-tiedosto: alustusvektori DEK-Infossa on virheellinen." -#: ../libnm-util/crypto.c:203 +#: ../libnm-util/crypto.c:219 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Virheellinen PEM-tiedosto: tuntematon salaisen avaimen sifferi \"%s\"." -#: ../libnm-util/crypto.c:222 +#: ../libnm-util/crypto.c:238 #, c-format msgid "Could not decode private key." msgstr "Salaista avainta ei voitu purkaa." -#: ../libnm-util/crypto.c:267 -#, c-format -msgid "PEM certificate '%s' had no end tag '%s'." -msgstr "PEM-varmenne \"%s\" ei sisällä päätösmerkkiä \"%s\"." +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "" -#: ../libnm-util/crypto.c:277 +#: ../libnm-util/crypto.c:292 #, c-format -msgid "Failed to decode certificate." -msgstr "Varmennetta ei voitu purkaa." +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "" + +#: ../libnm-util/crypto.c:312 +msgid "Not enough memory to store private key data." +msgstr "" -#: ../libnm-util/crypto.c:286 +#: ../libnm-util/crypto.c:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "" + +#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625 #, c-format msgid "Not enough memory to store certificate data." msgstr "Muisti ei riitä varmenteen tietojen tallennukseen." -#: ../libnm-util/crypto.c:294 -#, c-format -msgid "Not enough memory to store file data." -msgstr "Muisti ei riitä tiedoston sisällön tallentamiseen." - -#: ../libnm-util/crypto.c:324 +#: ../libnm-util/crypto.c:365 #, c-format msgid "IV must be an even number of bytes in length." msgstr "Alustusvektorin täytyy olla parillisen tavumäärän pituinen." -#: ../libnm-util/crypto.c:333 +#: ../libnm-util/crypto.c:374 #, c-format msgid "Not enough memory to store the IV." msgstr "Muisti ei riitä alustusvektorin tallennukseen." -#: ../libnm-util/crypto.c:344 +#: ../libnm-util/crypto.c:385 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "Alustusvektori sisältää muita kuin heksadesimaalisia merkkejä." -#: ../libnm-util/crypto.c:382 ../libnm-util/crypto_gnutls.c:143 -#: ../libnm-util/crypto_nss.c:169 +#: ../libnm-util/crypto.c:423 ../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 "Salaisen avaimen sifferi \"%s\" oli tuntematon." -#: ../libnm-util/crypto.c:391 +#: ../libnm-util/crypto.c:432 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Muisti ei riitä salaisen avaimen purkamiseen." -#: ../libnm-util/crypto.c:511 +#: ../libnm-util/crypto.c:497 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Muisti ei riitä puretun salaisen avaimen tallennukseen." + +#: ../libnm-util/crypto.c:542 #, c-format msgid "Unable to determine private key type." msgstr "Salaisen avaimen tyyppiä ei voi selvittää." -#: ../libnm-util/crypto.c:530 +#: ../libnm-util/crypto.c:597 #, c-format -msgid "Not enough memory to store decrypted private key." -msgstr "Muisti ei riitä puretun salaisen avaimen tallennukseen." +msgid "PEM certificate had no start tag '%s'." +msgstr "" -#: ../libnm-util/crypto_gnutls.c:46 +#: ../libnm-util/crypto.c:606 +#, c-format +msgid "PEM certificate had no end tag '%s'." +msgstr "" + +#: ../libnm-util/crypto.c:630 +#, c-format +msgid "Failed to decode certificate." +msgstr "Varmennetta ei voitu purkaa." + +#: ../libnm-util/crypto_gnutls.c:50 msgid "Failed to initialize the crypto engine." msgstr "Salausmoottoria ei voitu alustaa." -#: ../libnm-util/crypto_gnutls.c:90 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." -msgstr "MD5-moottoria ei voitu alustaa: %s / %s." +msgstr "MD5-moottorin alustus epäonnistui: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:155 +#, c-format +msgid "Invalid IV length (must be at least %zd)." +msgstr "Alustusvektorin pituus ei kelpaa (täytyy olla vähintään %zd)" -#: ../libnm-util/crypto_gnutls.c:152 ../libnm-util/crypto_nss.c:178 +#: ../libnm-util/crypto_gnutls.c:164 ../libnm-util/crypto_nss.c:184 #, c-format msgid "Not enough memory for decrypted key buffer." msgstr "Muisti ei riitä puretulle avainpuskurille." -#: ../libnm-util/crypto_gnutls.c:160 +#: ../libnm-util/crypto_gnutls.c:172 #, c-format msgid "Failed to initialize the decryption cipher context: %s / %s." msgstr "Virhe alustettaessa purkusifferin kontekstia: %s / %s." -#: ../libnm-util/crypto_gnutls.c:169 +#: ../libnm-util/crypto_gnutls.c:181 #, c-format msgid "Failed to set symmetric key for decryption: %s / %s." msgstr "Virhe asetettaessa symmetristä salausavainta: %s / %s." -#: ../libnm-util/crypto_gnutls.c:178 +#: ../libnm-util/crypto_gnutls.c:190 #, c-format msgid "Failed to set IV for decryption: %s / %s." msgstr "Alustusvektoria purkua varten ei voitu alustaa: %s / %s." -#: ../libnm-util/crypto_gnutls.c:187 +#: ../libnm-util/crypto_gnutls.c:199 #, c-format msgid "Failed to decrypt the private key: %s / %s." msgstr "Salaista avainta ei voitu purkaa: %s / %s." -#: ../libnm-util/crypto_gnutls.c:200 +#: ../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 "Henkilökohtaisen avaimen purku epäonnistui: odottamaton täytepituus." + +#: ../libnm-util/crypto_gnutls.c:220 ../libnm-util/crypto_nss.c:274 #, c-format msgid "Failed to decrypt the private key." msgstr "Salaisen avaimen purku epäonnistui." -#: ../libnm-util/crypto_gnutls.c:235 +#: ../libnm-util/crypto_gnutls.c:285 ../libnm-util/crypto_nss.c:352 +#, c-format +msgid "Could not allocate memory for encrypting." +msgstr "Muistin varaus salausta varten ei onnistunut." + +#: ../libnm-util/crypto_gnutls.c:293 +#, c-format +msgid "Failed to initialize the encryption cipher context: %s / %s." +msgstr "Salauksen sisällön alustus epäonnistui: %s / %s" + +#: ../libnm-util/crypto_gnutls.c:302 +#, c-format +msgid "Failed to set symmetric key for encryption: %s / %s." +msgstr "Virhe asetettaessa salauksen symmetristä avainta: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:312 +#, c-format +msgid "Failed to set IV for encryption: %s / %s." +msgstr "Salauksen alustusvektorin asettaminen epäonnistui: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:321 +#, c-format +msgid "Failed to encrypt the data: %s / %s." +msgstr "Virhe tietojen salaamisessa: %s / %s." + +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Virhe alustettaessa varmenteen tietoja: %s" -#: ../libnm-util/crypto_gnutls.c:257 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Varmennetta ei voitu purkaa: %s" -#: ../libnm-util/crypto_gnutls.c:281 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "PKCS#12-tulkkia ei voitu alustaa: %s" -#: ../libnm-util/crypto_gnutls.c:294 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "PKCS#12-tiedostoa ei voitu purkaa: %s" -#: ../libnm-util/crypto_gnutls.c:306 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "PKCS#12-tiedostoa ei voitu varmentaa: %s" -#: ../libnm-util/crypto_nss.c:57 +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "" + +#: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "Salausmoottoria ei voitu alustaa: %d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "MD5-kontekstia ei voitu alustaa: %d." -#: ../libnm-util/crypto_nss.c:186 +#: ../libnm-util/crypto_nss.c:175 +#, c-format +msgid "Invalid IV length (must be at least %d)." +msgstr "Alustusvektorin pituus ei kelpaa (täytyy olla vähintään %d)." + +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Salausmenetelmän lohkoa ei voitu alustaa." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." msgstr "Symmetristä salausavainta ei voitu asettaa." -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Salauksen purun aloitusvektorin asetus epäonnistui." -#: ../libnm-util/crypto_nss.c:214 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Salauksen purun kontekstia ei voitu alustaa." -#: ../libnm-util/crypto_nss.c:227 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." -msgstr "Salaista avainta ei voitu purkaa: %d." +msgstr "Salaisen avaimen purku epäonnistui: %d" -#: ../libnm-util/crypto_nss.c:239 +#: ../libnm-util/crypto_nss.c:241 +#, c-format +msgid "Failed to decrypt the private key: decrypted data too large." +msgstr "" +"Henkilökohtaisen avaimen purkaminen ei onnistu: käsiteltävää dataa on liikaa." + +#: ../libnm-util/crypto_nss.c:252 #, c-format msgid "Failed to finalize decryption of the private key: %d." msgstr "Salaisen avaimen salauksen purkua ei voitu viimeistellä: %d." -#: ../libnm-util/crypto_nss.c:284 +#: ../libnm-util/crypto_nss.c:360 +#, c-format +msgid "Failed to initialize the encryption cipher slot." +msgstr "Salausavainpaikan alustus epäonnistui." + +#: ../libnm-util/crypto_nss.c:368 +#, c-format +msgid "Failed to set symmetric key for encryption." +msgstr "Symmetrisen avaimen asettaminen salausta varten ei onnistunut." + +#: ../libnm-util/crypto_nss.c:376 +#, c-format +msgid "Failed to set IV for encryption." +msgstr "Salauksen alustusvektorin asettaminen epäonnistui." + +#: ../libnm-util/crypto_nss.c:384 +#, c-format +msgid "Failed to initialize the encryption context." +msgstr "Salauskontekstin alustus epäonnistui." + +#: ../libnm-util/crypto_nss.c:392 +#, c-format +msgid "Failed to encrypt: %d." +msgstr "Virhe salauksessa: %d." + +#: ../libnm-util/crypto_nss.c:400 +#, c-format +msgid "Unexpected amount of data after encrypting." +msgstr "Odottamaton määrä tietoa salauksen jälkeen." + +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Varmennetta ei voitu tulkita: %d" -#: ../libnm-util/crypto_nss.c:319 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Salasanaa ei voitu muuntaa UCS2-muotoon: %d" -#: ../libnm-util/crypto_nss.c:347 +#: ../libnm-util/crypto_nss.c:506 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %d" msgstr "PKCS#12-tulkkia ei voitu alustaa: %d" -#: ../libnm-util/crypto_nss.c:356 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "PKCS#12-tiedostoa ei voitu tulkita: %d" -#: ../libnm-util/crypto_nss.c:365 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "PKCS#12-tiedostoa ei voitu varmistaa: %d" -#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:454 -#, c-format -msgid "error processing netlink message: %s" -msgstr "virhe käsiteltäessä netlink-viestiä: %s" +#: ../libnm-util/crypto_nss.c:568 +msgid "Could not generate random data." +msgstr "Ei voitu tuottaa satunnaista dataa." -#: ../src/nm-netlink-monitor.c:251 +#: ../libnm-util/nm-utils.c:2000 #, c-format -msgid "unable to allocate netlink handle for monitoring link status: %s" -msgstr "ei voitu varata netlink-kahvaa linkin tilan tarkkailulle: %s" +msgid "Not enough memory to make encryption key." +msgstr "Ei tarpeeksi muistia salausavaimen luomiseksi." + +#: ../libnm-util/nm-utils.c:2110 +msgid "Could not allocate memory for PEM file creation." +msgstr "Muistin varaus PEM-tiedoston luontia varten ei onnistunut." -#: ../src/nm-netlink-monitor.c:261 +#: ../libnm-util/nm-utils.c:2122 #, c-format -msgid "unable to connect to netlink for monitoring link status: %s" +msgid "Could not allocate memory for writing IV to PEM file." msgstr "" -"ei voitu yhdistää netlink-pistokkeeseen linkin tilan tarkkailua varten: %s" +"Muistinvaraus epäonnistui kirjoitettaessa alustusvektoria PEM-tiedostoon." -#: ../src/nm-netlink-monitor.c:269 +#: ../libnm-util/nm-utils.c:2134 #, c-format -msgid "unable to join netlink group for monitoring link status: %s" -msgstr "ei voit liittyä netlink-ryhmään linkin tilan tarkkailua varten: %s" +msgid "Could not allocate memory for writing encrypted key to PEM file." +msgstr "" +"Muistinvaraus epäonnistui kirjoitettaessa salattua avainta PEM-tiedostoon." -#: ../src/nm-netlink-monitor.c:277 +#: ../libnm-util/nm-utils.c:2153 #, c-format -msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgid "Could not allocate memory for PEM file data." +msgstr "Muistinvaraus PEM-tiedoston luomiseksi epäonnistui." + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +msgid "Allow control of network connections" msgstr "" -"ei voitu varata netlink-linkin välimuistia inkin tilan tarkkailua varten %s" -#: ../src/nm-netlink-monitor.c:418 -#, c-format -msgid "error updating link cache: %s" -msgstr "virhe päivitettäessä linkkivälimuistia: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +msgid "Connection sharing via a protected WiFi network" +msgstr "Yhteyden jakaminen suojatun langattoman verkon kautta" -#: ../src/nm-netlink-monitor.c:484 -msgid "error occurred while waiting for data on socket" -msgstr "virhe odotettaessa tietoja pistokkeesta" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Connection sharing via an open WiFi network" +msgstr "Yhteyden jakaminen avoimen langattoman verkon kautta" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable WiFi devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable WiMAX mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "Enable or disable mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "Enable or disable system networking" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "Modify network connections for all users" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "Modify persistent system hostname" +msgstr "Muuta järjestelmän verkkonimeä" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "Modify personal network connections" +msgstr "" + +#: ../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 "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +msgid "System policy prevents control of network connections" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:13 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14 +msgid "" +"System policy prevents enabling or disabling WiMAX mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:16 +msgid "System policy prevents enabling or disabling system networking" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17 +msgid "System policy prevents modification of network settings for all users" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18 +msgid "System policy prevents modification of personal network settings" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "Tietoturvakäytäntö estää tietokoneen nimen muuttamisen" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "" -#: ../src/NetworkManager.c:293 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21 +msgid "System policy prevents sharing connections via a protected WiFi network" +msgstr "" +"Tietoturvakäytäntö estää yhteyksien jakamisen suojatun langattoman verkon " +"kautta" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22 +msgid "System policy prevents sharing connections via an open WiFi network" +msgstr "" +"Tietoturvakäytäntö estää yhteyksien jakamisen avoimen langattoman verkon " +"kautta" + +#: ../src/main.c:530 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "" "Virheellinen valitsin: Antamalla --help näet luettelon kelvollisista\n" "valitsimista.\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:88 +#: ../src/main.c:611 +#, c-format +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "" + +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62 msgid "# Created by NetworkManager\n" msgstr "# NetworkManagerin luoma\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:94 +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69 #, c-format msgid "" "# Merged from %s\n" @@ -308,21 +1854,160 @@ msgstr "" "# Yhdistetty tiedostosta %s\n" "\n" -#: ../src/dns-manager/nm-dns-manager.c:256 +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "DHCP-asiakasta ei käytettävissä" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "'dhclient' ei löydetty." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "" + +#: ../src/dns-manager/nm-dns-manager.c:376 msgid "NOTE: the libc resolver may not support more than 3 nameservers." msgstr "HUOMAUTUS: libc-nimenselvennys ei ehkä tue kuin kolmea nimipalvelinta." -#: ../src/dns-manager/nm-dns-manager.c:258 +#: ../src/dns-manager/nm-dns-manager.c:378 msgid "The nameservers listed below may not be recognized." msgstr "Alla olevaa nimipalvelinluetteloa ei voitu tunnistaa." -#: ../system-settings/src/main.c:380 +#: ../src/logging/nm-logging.c:149 +#, c-format +msgid "Unknown log level '%s'" +msgstr "" + +#: ../src/logging/nm-logging.c:174 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "" + +#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355 +#, c-format +msgid "CDMA connection %d" +msgstr "" + +#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351 +#, c-format +msgid "GSM connection %d" +msgstr "" + +#: ../src/nm-device-bt.c:326 +#, c-format +msgid "PAN connection %d" +msgstr "" + +#: ../src/nm-device-bt.c:359 +#, c-format +msgid "DUN connection %d" +msgstr "" + +#: ../src/nm-device-ethernet.c:1724 +#, c-format +msgid "PPPoE connection %d" +msgstr "" + +#: ../src/nm-device-ethernet.c:1724 ../src/settings/nm-settings-utils.c:50 +#, c-format +msgid "Wired connection %d" +msgstr "" + +#: ../src/nm-device-olpc-mesh.c:393 #, c-format -msgid "Auto %s" -msgstr "Auto-%s" +msgid "Mesh %d" +msgstr "" + +#: ../src/nm-manager.c:657 +#, c-format +msgid "VPN connection %d" +msgstr "" + +#: ../src/nm-netlink-monitor.c:101 ../src/nm-netlink-monitor.c:234 +#: ../src/nm-netlink-monitor.c:667 +#, c-format +msgid "error processing netlink message: %s" +msgstr "virhe käsiteltäessä netlink-viestiä: %s" + +#: ../src/nm-netlink-monitor.c:216 +msgid "error occurred while waiting for data on socket" +msgstr "virhe odotettaessa tietoja pistokkeesta" + +#: ../src/nm-netlink-monitor.c:260 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "" +"ei voitu yhdistää netlink-pistokkeeseen linkin tilan tarkkailua varten: %s" + +#: ../src/nm-netlink-monitor.c:271 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" + +#: ../src/nm-netlink-monitor.c:297 ../src/nm-netlink-monitor.c:360 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "ei voitu varata netlink-kahvaa linkin tilan tarkkailulle: %s" + +#: ../src/nm-netlink-monitor.c:385 +#, c-format +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" +"ei voitu varata netlink-linkin välimuistia linkin tilan tarkkailua varten %s" + +#: ../src/nm-netlink-monitor.c:512 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "Verkkolinkkiryhmään %s ei voida liittyä" + +#: ../src/nm-netlink-monitor.c:643 ../src/nm-netlink-monitor.c:656 +#, c-format +msgid "error updating link cache: %s" +msgstr "virhe päivitettäessä linkkivälimuistia: %s" + +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 +msgid "System" +msgstr "Järjestelmä" + +#~ msgid "Auto %s" +#~ msgstr "Auto-%s" + +#~ msgid "Not enough memory to store file data." +#~ msgstr "Muisti ei riitä tiedoston sisällön tallentamiseen." + +#~ msgid "System policy prevents modification of system settings" +#~ msgstr "Tietoturvakäytäntö estää järjestelmäasetusten muuttamisen" + +#~ msgid "Modify system connections" +#~ msgstr "Muokkaa järjestelmän yhteyksiä" + +#~ msgid "PEM certificate '%s' had no end tag '%s'." +#~ msgstr "PEM-varmenteessa \"%s\" ei ole lopputunnistetta \"%s\"." + +#~ msgid "System connections" +#~ msgstr "Järjestelmäyhteydet" + +#~ msgid "system" +#~ msgstr "järjestelmä" + +#~ msgid "User connections" +#~ msgstr "Käyttäjän yhteydet" + +#~ msgid "DBUS-SERVICE" +#~ msgstr "DBUS-PALVELU" + +#~ msgid "user" +#~ msgstr "käyttäjä" -#~ msgid "Not enough memory to create private key decryption key." -#~ msgstr "Muisti ei riitä luomaan salaisen avaimen purkuavainta." +#~ msgid "SCOPE" +#~ msgstr "ALUE" -#~ msgid "Auto Wired" -#~ msgstr "Automaattinen kiinteä" +#~ msgid "Error: Obtaining active connection for '%s' failed." +#~ msgstr "Virhe: Aktiivista yhteyttä '%s' ei saatu." diff --git a/po/gl.po b/po/gl.po index 62dc71f3..7242f4dd 100644 --- a/po/gl.po +++ b/po/gl.po @@ -4,978 +4,1244 @@ # # Ignacio Casal Quinteiro <icq@cvs.gnome.org>, 2007, 2008. # Miguel Anxo Bouzada <mbouzada@gmail.com>, 2010. +# Fran Diéguez <frandieguez@gnome.org>, 2011. +# msgid "" msgstr "" "Project-Id-Version: gl\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-11 21:19+0000\n" -"PO-Revision-Date: 2010-08-23 00:53+0000\n" -"Last-Translator: Francisco Diéguez <Unknown>\n" -"Language-Team: Galego <proxecto@trasno.net>\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=NetworkManager&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-08-24 19:48+0000\n" +"PO-Revision-Date: 2011-08-25 01:12+0000\n" +"Last-Translator: Fran Diéguez <Unknown>\n" +"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Launchpad-Export-Date: 2010-08-23 01:00+0000\n" -"X-Generator: Launchpad (build Unknown)\n" - -#: ../cli/src/connections.c:60 ../cli/src/connections.c:75 -#: ../cli/src/devices.c:88 ../cli/src/devices.c:101 ../cli/src/devices.c:111 -#: ../cli/src/devices.c:121 ../cli/src/devices.c:134 ../cli/src/devices.c:145 -#: ../cli/src/devices.c:156 ../cli/src/devices.c:165 ../cli/src/devices.c:174 + +#: ../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 "NOME" #. 0 -#: ../cli/src/connections.c:61 ../cli/src/connections.c:76 +#: ../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 "DISPOSITIVOS" #. 2 -#: ../cli/src/connections.c:63 ../cli/src/connections.c:78 -msgid "SCOPE" -msgstr "AMBITO" - -#. 3 -#: ../cli/src/connections.c:64 +#: ../cli/src/connections.c:67 msgid "DEFAULT" msgstr "PREDEFINIDO" -#. 4 -#: ../cli/src/connections.c:65 -msgid "DBUS-SERVICE" -msgstr "DBUS-SERVICE" - -#. 5 -#: ../cli/src/connections.c:66 +#. 3 +#: ../cli/src/connections.c:68 msgid "SPEC-OBJECT" msgstr "SPEC-OBXECTO" -#. 6 -#: ../cli/src/connections.c:67 +#. 4 +#: ../cli/src/connections.c:69 msgid "VPN" msgstr "VPN" +#. 5 +#. 6 +#. 2 +#. 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-RUTA" + #. 1 #. 0 #. 1 -#: ../cli/src/connections.c:77 ../cli/src/devices.c:62 ../cli/src/devices.c:90 +#. 2 +#: ../cli/src/connections.c:80 ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 ../cli/src/devices.c:227 msgid "TYPE" msgstr "TIPO" -#. 3 -#: ../cli/src/connections.c:79 +#. 2 +#: ../cli/src/connections.c:81 msgid "TIMESTAMP" msgstr "MARCADETEMPO" -#. 4 -#: ../cli/src/connections.c:80 +#. 3 +#: ../cli/src/connections.c:82 msgid "TIMESTAMP-REAL" msgstr "TIMESTAMP-REAL" -#. 5 -#: ../cli/src/connections.c:81 +#. 4 +#: ../cli/src/connections.c:83 msgid "AUTOCONNECT" msgstr "AUTOCONECTAR" -#. 6 -#: ../cli/src/connections.c:82 +#. 5 +#: ../cli/src/connections.c:84 msgid "READONLY" msgstr "SO-LECTURA" -#: ../cli/src/connections.c:158 -#, c-format +#: ../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" +#| " status\n" +#| " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--" +#| "timeout <timeout>]\n" +#| " down id <id> | uuid <id>\n" 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" msgstr "" -"Uso: nmcli con { ORDE | help }\n" -" ORDE := { list | status | up | down }\n" +"Uso: nmcli con { COMANDO | help }\n" +" COMANDO := { 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 <interface>] [ap <hwaddr>] [--nowait] [--" -"timeout <timeout>]\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:198 ../cli/src/connections.c:537 +#: ../cli/src/connections.c:220 ../cli/src/connections.c:544 #, c-format msgid "Error: 'con list': %s" msgstr "Erro: 'con list': %s" -#: ../cli/src/connections.c:200 ../cli/src/connections.c:539 +#: ../cli/src/connections.c:222 ../cli/src/connections.c:546 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Erro: 'con list': %s; campos permitidos: %s" -#: ../cli/src/connections.c:208 +#: ../cli/src/connections.c:230 msgid "Connection details" msgstr "Detalles da conexión" -#: ../cli/src/connections.c:382 ../cli/src/connections.c:602 -msgid "system" -msgstr "sistema" - -#: ../cli/src/connections.c:382 ../cli/src/connections.c:602 -msgid "user" -msgstr "usuario" - -#: ../cli/src/connections.c:384 +#: ../cli/src/connections.c:419 msgid "never" msgstr "nunca" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../cli/src/connections.c:385 ../cli/src/connections.c:386 -#: ../cli/src/connections.c:603 ../cli/src/connections.c:606 -#: ../cli/src/devices.c:432 ../cli/src/devices.c:557 ../cli/src/devices.c:583 -#: ../cli/src/devices.c:584 ../cli/src/devices.c:585 ../cli/src/devices.c:586 -#: ../cli/src/devices.c:587 ../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:420 ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 ../cli/src/connections.c:601 +#: ../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 "si" -#: ../cli/src/connections.c:385 ../cli/src/connections.c:386 -#: ../cli/src/connections.c:603 ../cli/src/connections.c:606 -#: ../cli/src/devices.c:432 ../cli/src/devices.c:557 ../cli/src/devices.c:583 -#: ../cli/src/devices.c:584 ../cli/src/devices.c:585 ../cli/src/devices.c:586 -#: ../cli/src/devices.c:587 ../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:420 ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 ../cli/src/connections.c:601 +#: ../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 "non" -#: ../cli/src/connections.c:458 ../cli/src/connections.c:501 -msgid "System connections" -msgstr "Conexións do sistema" +#: ../cli/src/connections.c:495 +#| msgid "Connection details" +msgid "Connection list" +msgstr "Lista de conexións" -#: ../cli/src/connections.c:463 ../cli/src/connections.c:514 -msgid "User connections" -msgstr "Conexións do usuario" - -#: ../cli/src/connections.c:475 ../cli/src/connections.c:1335 -#: ../cli/src/connections.c:1351 ../cli/src/connections.c:1360 -#: ../cli/src/connections.c:1371 ../cli/src/connections.c:1456 -#: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074 -#: ../cli/src/devices.c:1081 +#: ../cli/src/connections.c:508 ../cli/src/connections.c:1368 +#: ../cli/src/connections.c:1383 ../cli/src/connections.c:1392 +#: ../cli/src/connections.c:1402 ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1509 ../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 "Erro: falta o argumento %s" -#: ../cli/src/connections.c:488 +#: ../cli/src/connections.c:521 #, c-format msgid "Error: %s - no such connection." msgstr "Erro: %s - non existe dita conexión." -#: ../cli/src/connections.c:520 ../cli/src/connections.c:1384 -#: ../cli/src/connections.c:1474 ../cli/src/devices.c:785 -#: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087 +#: ../cli/src/connections.c:527 ../cli/src/connections.c:1427 +#: ../cli/src/connections.c:1526 ../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 "Parámetros descoñecidos: %s\n" -#: ../cli/src/connections.c:529 +#: ../cli/src/connections.c:536 #, c-format msgid "Error: no valid parameter specified." msgstr "Erro: non se especificou un parámetro válido" -#: ../cli/src/connections.c:544 ../cli/src/connections.c:1577 -#: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:274 +#: ../cli/src/connections.c:551 ../cli/src/connections.c:1617 +#: ../cli/src/devices.c:1755 ../cli/src/network-manager.c:463 #, c-format msgid "Error: %s." msgstr "Erro: %s." -#: ../cli/src/connections.c:650 +#: ../cli/src/connections.c:639 #, c-format msgid "Error: 'con status': %s" msgstr "Erro: «con status»: %s" -#: ../cli/src/connections.c:652 +#: ../cli/src/connections.c:641 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Erro: «con status»: %s; campos permitidos: %s" -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:649 ../cli/src/connections.c:1442 +#: ../cli/src/connections.c:1541 ../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 "Erro: non é posíbel determinar se NetworkManager está a funcionar: %s." + +#: ../cli/src/connections.c:653 ../cli/src/connections.c:1446 +#: ../cli/src/connections.c:1545 ../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 "Erro: NetworkManager non está a funcionar." + +#: ../cli/src/connections.c:661 msgid "Active connections" msgstr "Conexións activas" -#: ../cli/src/connections.c:1027 +#: ../cli/src/connections.c:1085 #, c-format msgid "no active connection on device '%s'" msgstr "non hai conexións activas no dispositivo «%s»" -#: ../cli/src/connections.c:1035 +#: ../cli/src/connections.c:1093 #, c-format msgid "no active connection or device" msgstr "non hai conexións activas ou dispositivo" -#: ../cli/src/connections.c:1085 +#: ../cli/src/connections.c:1164 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "o dispositivo «%s» non é compatíbel coa conexión «%s»" -#: ../cli/src/connections.c:1087 +#: ../cli/src/connections.c:1166 #, c-format msgid "no device found for connection '%s'" msgstr "non foi posíbel encontrar un dispositivo para a conexión «%s»" -#: ../cli/src/connections.c:1098 +#: ../cli/src/connections.c:1177 msgid "activating" msgstr "activando" -#: ../cli/src/connections.c:1100 +#: ../cli/src/connections.c:1179 msgid "activated" msgstr "activada" -#: ../cli/src/connections.c:1103 ../cli/src/connections.c:1126 -#: ../cli/src/connections.c:1159 ../cli/src/devices.c:246 -#: ../cli/src/devices.c:558 ../cli/src/network-manager.c:92 -#: ../cli/src/network-manager.c:145 ../cli/src/settings.c:473 +#: ../cli/src/connections.c:1181 ../cli/src/devices.c:304 +#| msgid "activating" +msgid "deactivating" +msgstr "desactivando" + +#: ../cli/src/connections.c:1184 ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1240 ../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 "descoñecido" -#: ../cli/src/connections.c:1112 +#: ../cli/src/connections.c:1193 msgid "VPN connecting (prepare)" msgstr "Conectándose á VPN (preparando)" -#: ../cli/src/connections.c:1114 +#: ../cli/src/connections.c:1195 msgid "VPN connecting (need authentication)" msgstr "Conexión VPN (requírese autenticación)" -#: ../cli/src/connections.c:1116 +#: ../cli/src/connections.c:1197 msgid "VPN connecting" msgstr "Conexión VPN" -#: ../cli/src/connections.c:1118 +#: ../cli/src/connections.c:1199 msgid "VPN connecting (getting IP configuration)" msgstr "Conectándose á VPN (obtendo a configuración de IP)" -#: ../cli/src/connections.c:1120 +#: ../cli/src/connections.c:1201 msgid "VPN connected" msgstr "Conectado á VPN" -#: ../cli/src/connections.c:1122 +#: ../cli/src/connections.c:1203 msgid "VPN connection failed" msgstr "Produciuse un fallo ao conectarse á VPN" -#: ../cli/src/connections.c:1124 +#: ../cli/src/connections.c:1205 msgid "VPN disconnected" msgstr "Desconectado á VPN" -#: ../cli/src/connections.c:1135 +#: ../cli/src/connections.c:1216 msgid "unknown reason" msgstr "razón descoñecida" -#: ../cli/src/connections.c:1137 +#: ../cli/src/connections.c:1218 msgid "none" msgstr "ninguna" -#: ../cli/src/connections.c:1139 +#: ../cli/src/connections.c:1220 msgid "the user was disconnected" msgstr "o usuario desconectouse" -#: ../cli/src/connections.c:1141 +#: ../cli/src/connections.c:1222 msgid "the base network connection was interrupted" msgstr "a conexión de rede base foi interrompida" -#: ../cli/src/connections.c:1143 +#: ../cli/src/connections.c:1224 msgid "the VPN service stopped unexpectedly" msgstr "o servizo de VPN deteuse de forma inesperada" -#: ../cli/src/connections.c:1145 +#: ../cli/src/connections.c:1226 msgid "the VPN service returned invalid configuration" msgstr "o servizo de VPN devolveu unha configuración non válida" -#: ../cli/src/connections.c:1147 +#: ../cli/src/connections.c:1228 msgid "the connection attempt timed out" msgstr "o intento de conexión superou o tempo de espera máximo" -#: ../cli/src/connections.c:1149 +#: ../cli/src/connections.c:1230 msgid "the VPN service did not start in time" msgstr "o servizo de VPN non se iniciou a tempo" -#: ../cli/src/connections.c:1151 +#: ../cli/src/connections.c:1232 msgid "the VPN service failed to start" msgstr "o servizo de VPN fallou ao iniciarse" -#: ../cli/src/connections.c:1153 +#: ../cli/src/connections.c:1234 msgid "no valid VPN secrets" msgstr "non hai segredos VPN válidos" -#: ../cli/src/connections.c:1155 +#: ../cli/src/connections.c:1236 msgid "invalid VPN secrets" msgstr "segredos VPN non válidos" -#: ../cli/src/connections.c:1157 +#: ../cli/src/connections.c:1238 msgid "the connection was removed" msgstr "eliminouse a conexión" -#: ../cli/src/connections.c:1171 +#: ../cli/src/connections.c:1252 #, c-format msgid "state: %s\n" msgstr "estado: %s\n" -#: ../cli/src/connections.c:1174 ../cli/src/connections.c:1200 +#: ../cli/src/connections.c:1255 ../cli/src/connections.c:1281 #, c-format msgid "Connection activated\n" msgstr "Conexión activada\n" -#: ../cli/src/connections.c:1177 +#: ../cli/src/connections.c:1258 #, c-format msgid "Error: Connection activation failed." msgstr "Erro: A activación da conexión fallou." -#: ../cli/src/connections.c:1196 +#: ../cli/src/connections.c:1277 #, c-format msgid "state: %s (%d)\n" msgstr "estado: %s (%d)\n" -#: ../cli/src/connections.c:1206 +#: ../cli/src/connections.c:1287 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Erro: A activación da conexión fallou: %s." -#: ../cli/src/connections.c:1223 ../cli/src/devices.c:909 +#: ../cli/src/connections.c:1304 ../cli/src/devices.c:1136 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Erro: Alcanzouse o tempo de espera de %d segundos." -#: ../cli/src/connections.c:1266 +#: ../cli/src/connections.c:1317 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Erro: Produciuse un fallo ao activar a conexión: %s" -#: ../cli/src/connections.c:1280 -#, c-format -msgid "Error: Obtaining active connection for '%s' failed." -msgstr "Erro: Produciuse un fallo ao obter a conexión activa para «%s»." - -#: ../cli/src/connections.c:1289 +#: ../cli/src/connections.c:1323 #, c-format msgid "Active connection state: %s\n" msgstr "Estado da conexión activa: %s\n" -#: ../cli/src/connections.c:1290 +#: ../cli/src/connections.c:1324 #, c-format msgid "Active connection path: %s\n" msgstr "Camiño da conexión activa: %s\n" -#: ../cli/src/connections.c:1344 ../cli/src/connections.c:1465 +#: ../cli/src/connections.c:1376 ../cli/src/connections.c:1517 #, c-format msgid "Error: Unknown connection: %s." msgstr "Erro: Conexión descoñecida: %s." -#: ../cli/src/connections.c:1379 ../cli/src/devices.c:980 +#: ../cli/src/connections.c:1422 ../cli/src/devices.c:1208 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Erro: O valor do tempo de espera máximo «%s» non é válido." -#: ../cli/src/connections.c:1392 ../cli/src/connections.c:1482 +#: ../cli/src/connections.c:1435 ../cli/src/connections.c:1534 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Erro: debe especificar o id ou o uuid." -#: ../cli/src/connections.c:1412 +#: ../cli/src/connections.c:1463 #, c-format msgid "Error: No suitable device found: %s." msgstr "Erro: Non se encontrou un dispositivo axeitado: %s." -#: ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1465 #, c-format msgid "Error: No suitable device found." msgstr "Erro: Non se encontrou o dispositivo axeitado." -#: ../cli/src/connections.c:1509 +#: ../cli/src/connections.c:1570 #, c-format msgid "Warning: Connection not active\n" msgstr "Aviso: A conexión non está activa.\n" -#: ../cli/src/connections.c:1566 +#: ../cli/src/connections.c:1608 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Erro: «con» a orde «%s» non é válida" -#: ../cli/src/connections.c:1602 +#: ../cli/src/connections.c:1673 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Erro: non é posíbel conectarse a D-Bus." -#: ../cli/src/connections.c:1609 +#: ../cli/src/connections.c:1680 #, c-format msgid "Error: Could not get system settings." msgstr "Erro: Non é posíbel obter as opcións do sistema." -#: ../cli/src/connections.c:1617 -#, c-format -msgid "Error: Could not get user settings." -msgstr "Erro: Non é posíbel obter as opcións do usuario." - -#: ../cli/src/connections.c:1627 +#: ../cli/src/connections.c:1690 #, c-format -msgid "Error: Can't obtain connections: settings services are not running." +#| msgid "Error: Can't obtain connections: settings services are not running." +msgid "Error: Can't obtain connections: settings service is not running." msgstr "" -"Erro: Non é posíbel obter as conexións: os servizos de opcións non están " -"executándose." +"Erro: Non é posíbel obter as conexións: o servizo de configuracións non " +"están executándose." #. 0 #. 9 -#: ../cli/src/devices.c:61 ../cli/src/devices.c:89 ../cli/src/devices.c:184 +#. 3 +#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 msgid "DEVICE" msgstr "DISPOSITIVO" #. 1 #. 4 -#. 0 -#: ../cli/src/devices.c:63 ../cli/src/devices.c:93 -#: ../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 "ESTADO" -#: ../cli/src/devices.c:72 +#: ../cli/src/devices.c:78 msgid "GENERAL" msgstr "XERAL" #. 0 -#: ../cli/src/devices.c:73 +#: ../cli/src/devices.c:79 msgid "CAPABILITIES" msgstr "CAPACIDADES" #. 1 -#: ../cli/src/devices.c:74 +#: ../cli/src/devices.c:80 msgid "WIFI-PROPERTIES" msgstr "PROPIEDADES-WIFI" #. 2 -#: ../cli/src/devices.c:75 +#: ../cli/src/devices.c:81 msgid "AP" msgstr "AP" #. 3 -#: ../cli/src/devices.c:76 +#: ../cli/src/devices.c:82 msgid "WIRED-PROPERTIES" msgstr "PROPIEDADES-CONCABLES" #. 4 -#: ../cli/src/devices.c:77 +#: ../cli/src/devices.c:83 +#| msgid "WIFI-PROPERTIES" +msgid "WIMAX-PROPERTIES" +msgstr "PROPIEDADES-WIMAX" + +#. 5 +#. 0 +#: ../cli/src/devices.c:84 ../cli/src/devices.c:225 +#| msgid "DNS" +msgid "NSP" +msgstr "PSR" + +#. 6 +#: ../cli/src/devices.c:85 msgid "IP4-SETTINGS" msgstr "CONFIGURACIONS-IP4" -#. 5 -#: ../cli/src/devices.c:78 +#. 7 +#: ../cli/src/devices.c:86 msgid "IP4-DNS" msgstr "IP4-DNS" -#. 6 -#: ../cli/src/devices.c:79 +#. 8 +#: ../cli/src/devices.c:87 msgid "IP6-SETTINGS" msgstr "IP4-CONFIGURACIONS" -#. 7 -#: ../cli/src/devices.c:80 +#. 9 +#: ../cli/src/devices.c:88 msgid "IP6-DNS" msgstr "IP6-DNS" #. 2 -#: ../cli/src/devices.c:91 +#: ../cli/src/devices.c:104 msgid "DRIVER" msgstr "CONTROLADOR" #. 3 -#: ../cli/src/devices.c:92 +#: ../cli/src/devices.c:105 msgid "HWADDR" msgstr "ENDEREZO-HARDWARE" #. 0 -#: ../cli/src/devices.c:102 +#: ../cli/src/devices.c:115 msgid "CARRIER-DETECT" msgstr "DETECTAR-CARRIERV" #. 1 -#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:116 msgid "SPEED" msgstr "VELOCIDADE" #. 0 -#: ../cli/src/devices.c:112 +#: ../cli/src/devices.c:125 msgid "CARRIER" msgstr "CARRIER" #. 0 -#: ../cli/src/devices.c:122 +#: ../cli/src/devices.c:135 msgid "WEP" msgstr "WEP" #. 1 -#: ../cli/src/devices.c:123 +#: ../cli/src/devices.c:136 msgid "WPA" msgstr "WPA" #. 2 -#: ../cli/src/devices.c:124 +#: ../cli/src/devices.c:137 msgid "WPA2" msgstr "WPA2" #. 3 -#: ../cli/src/devices.c:125 +#: ../cli/src/devices.c:138 msgid "TKIP" msgstr "TKIP" #. 4 -#: ../cli/src/devices.c:126 +#: ../cli/src/devices.c:139 msgid "CCMP" msgstr "CCMP" #. 0 -#: ../cli/src/devices.c:135 ../cli/src/devices.c:146 +#: ../cli/src/devices.c:149 +#| msgid "FREQ" +msgid "CTR-FREQ" +msgstr "CTR-FREC" + +#. 1 +#: ../cli/src/devices.c:150 +#| msgid "SSID" +msgid "RSSI" +msgstr "RSSI" + +#. 2 +#: ../cli/src/devices.c:151 +msgid "CINR" +msgstr "CINR" + +#. 3 +#: ../cli/src/devices.c:152 +msgid "TX-POW" +msgstr "TX-POW" + +#. 4 +#: ../cli/src/devices.c:153 +#| msgid "BSSID" +msgid "BSID" +msgstr "BSID" + +#. 0 +#: ../cli/src/devices.c:163 ../cli/src/devices.c:174 msgid "ADDRESS" msgstr "ENDEREZO" #. 1 -#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +#: ../cli/src/devices.c:164 ../cli/src/devices.c:175 msgid "PREFIX" msgstr "PREFIXO" #. 2 -#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +#: ../cli/src/devices.c:165 ../cli/src/devices.c:176 msgid "GATEWAY" msgstr "PASARELA" #. 0 -#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 +#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 msgid "DNS" msgstr "DNS" #. 0 -#: ../cli/src/devices.c:175 +#: ../cli/src/devices.c:203 msgid "SSID" msgstr "SSID" #. 1 -#: ../cli/src/devices.c:176 +#: ../cli/src/devices.c:204 msgid "BSSID" msgstr "BSSID" #. 2 -#: ../cli/src/devices.c:177 +#: ../cli/src/devices.c:205 msgid "MODE" msgstr "MODO" #. 3 -#: ../cli/src/devices.c:178 +#: ../cli/src/devices.c:206 msgid "FREQ" msgstr "FREQ" #. 4 -#: ../cli/src/devices.c:179 +#: ../cli/src/devices.c:207 msgid "RATE" msgstr "TAXA" #. 5 -#: ../cli/src/devices.c:180 +#. 1 +#: ../cli/src/devices.c:208 ../cli/src/devices.c:226 msgid "SIGNAL" msgstr "SINAL" #. 6 -#: ../cli/src/devices.c:181 +#: ../cli/src/devices.c:209 msgid "SECURITY" msgstr "SEGURIDADE" #. 7 -#: ../cli/src/devices.c:182 +#: ../cli/src/devices.c:210 msgid "WPA-FLAGS" msgstr "OPCIONS-WPA" #. 8 -#: ../cli/src/devices.c:183 +#: ../cli/src/devices.c:211 msgid "RSN-FLAGS" msgstr "OPCIONS-RSN" #. 10 -#: ../cli/src/devices.c:185 +#. 4 +#: ../cli/src/devices.c:213 ../cli/src/devices.c:229 msgid "ACTIVE" msgstr "ACTIVA" -#: ../cli/src/devices.c:208 -#, c-format +#: ../cli/src/devices.c:256 +#, c-format +#| msgid "" +#| "Usage: nmcli dev { COMMAND | help }\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" +#| "\n" 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 "" "Uso: nmcli dev { ORDE | help }\n" "\n" -" ORDE := { status | list | disconnect | wifi }\n" +" COMANDO := { status | list | disconnect | wifi }\n" "\n" " status\n" -" list [iface <interface>]\n" -" disconnect iface <interface> [--nowait] [--timeout <tempo-de-espera>]\n" -" wifi [list [iface <interface>] [hwaddr <enderezo-hardware>]]\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" -#: ../cli/src/devices.c:228 +#: ../cli/src/devices.c:284 msgid "unmanaged" msgstr "non xestionada" -#: ../cli/src/devices.c:230 +#: ../cli/src/devices.c:286 msgid "unavailable" msgstr "non dispoñíbel" -#: ../cli/src/devices.c:232 ../cli/src/network-manager.c:89 +#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115 msgid "disconnected" msgstr "desconectado" -#: ../cli/src/devices.c:234 +#: ../cli/src/devices.c:290 msgid "connecting (prepare)" msgstr "conectando (preparando)" -#: ../cli/src/devices.c:236 +#: ../cli/src/devices.c:292 msgid "connecting (configuring)" msgstr "conectando (configurando)" -#: ../cli/src/devices.c:238 +#: ../cli/src/devices.c:294 msgid "connecting (need authentication)" msgstr "conectando (precisa autenticación)" -#: ../cli/src/devices.c:240 +#: ../cli/src/devices.c:296 msgid "connecting (getting IP configuration)" msgstr "conectando (obtendo a configuración IP)" -#: ../cli/src/devices.c:242 ../cli/src/network-manager.c:87 +#: ../cli/src/devices.c:298 +#| msgid "connecting (getting IP configuration)" +msgid "connecting (checking IP connectivity)" +msgstr "conectando (comprobando conectividade IP)" + +#: ../cli/src/devices.c:300 +#| msgid "connecting (getting IP configuration)" +msgid "connecting (starting secondary connections)" +msgstr "conectando (iniciando conexións secundarias)" + +#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111 msgid "connected" msgstr "conectado" -#: ../cli/src/devices.c:244 +#: ../cli/src/devices.c:306 msgid "connection failed" msgstr "produciuse un fallo na conexión" -#: ../cli/src/devices.c:267 ../cli/src/devices.c:424 +#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501 +#: ../cli/src/devices.c:545 msgid "Unknown" msgstr "Descoñecido" -#: ../cli/src/devices.c:299 +#: ../cli/src/devices.c:374 msgid "(none)" msgstr "(ningún)" -#: ../cli/src/devices.c:324 +#: ../cli/src/devices.c:399 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: produciuse un erro ao converter o enderezo IP4 0x%X" -#: ../cli/src/devices.c:393 +#: ../cli/src/devices.c:470 #, c-format msgid "%u MHz" msgstr "%u MHz" -#: ../cli/src/devices.c:394 +#: ../cli/src/devices.c:471 #, c-format msgid "%u MB/s" msgstr "%u MB/s" -#: ../cli/src/devices.c:403 +#: ../cli/src/devices.c:480 msgid "Encrypted: " msgstr "Cifrado: " -#: ../cli/src/devices.c:408 +#: ../cli/src/devices.c:485 msgid "WEP " msgstr "WEP " -#: ../cli/src/devices.c:410 +#: ../cli/src/devices.c:487 msgid "WPA " msgstr "WPA " -#: ../cli/src/devices.c:412 +#: ../cli/src/devices.c:489 msgid "WPA2 " msgstr "WPA2 " -#: ../cli/src/devices.c:415 +#: ../cli/src/devices.c:492 msgid "Enterprise " msgstr "Empresa " -#: ../cli/src/devices.c:424 +#: ../cli/src/devices.c:501 msgid "Ad-Hoc" msgstr "Ad-Hoc" -#: ../cli/src/devices.c:424 +#: ../cli/src/devices.c:501 msgid "Infrastructure" msgstr "Infraestrutura" -#: ../cli/src/devices.c:486 +#: ../cli/src/devices.c:536 +msgid "Home" +msgstr "Casa" + +#: ../cli/src/devices.c:539 +msgid "Partner" +msgstr "Asociado" + +#: ../cli/src/devices.c:542 +msgid "Roaming" +msgstr "Roaming" + +#: ../cli/src/devices.c:612 #, c-format msgid "Error: 'dev list': %s" msgstr "Erro: «dev list»: %s" -#: ../cli/src/devices.c:488 +#: ../cli/src/devices.c:614 #, c-format msgid "Error: 'dev list': %s; allowed fields: %s" msgstr "Erro: «dev list»: %s campos permitidos: %s" -#: ../cli/src/devices.c:497 +#: ../cli/src/devices.c:623 msgid "Device details" msgstr "Detalles do dispositivo" -#: ../cli/src/devices.c:527 ../cli/src/devices.c:925 +#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342 msgid "(unknown)" msgstr "(descoñecido)" -#: ../cli/src/devices.c:528 +#: ../cli/src/devices.c:658 msgid "unknown)" msgstr "descoñecido)" -#: ../cli/src/devices.c:554 +#: ../cli/src/devices.c:684 #, c-format msgid "%u Mb/s" msgstr "%u Mb/s" #. Print header #. "WIRED-PROPERTIES" -#: ../cli/src/devices.c:627 +#: ../cli/src/devices.c:757 msgid "on" msgstr "activado" -#: ../cli/src/devices.c:627 +#: ../cli/src/devices.c:757 msgid "off" msgstr "desactivado" -#: ../cli/src/devices.c:808 +#: ../cli/src/devices.c:1004 #, c-format msgid "Error: 'dev status': %s" msgstr "Erro: «dev status»: %s" -#: ../cli/src/devices.c:810 +#: ../cli/src/devices.c:1006 #, c-format msgid "Error: 'dev status': %s; allowed fields: %s" msgstr "Erro: «dev status»: %s campos permitidos: %s" -#: ../cli/src/devices.c:817 +#: ../cli/src/devices.c:1029 msgid "Status of devices" msgstr "Estado dos dispositivos" -#: ../cli/src/devices.c:845 +#: ../cli/src/devices.c:1060 #, c-format msgid "Error: '%s' argument is missing." msgstr "Erro: falta o argumento «%s»." -#: ../cli/src/devices.c:874 ../cli/src/devices.c:1013 -#: ../cli/src/devices.c:1136 +#: ../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 "Erro: Non é posíbel encontrar o dispositivo %s." -#: ../cli/src/devices.c:897 +#: ../cli/src/devices.c:1124 #, c-format msgid "Success: Device '%s' successfully disconnected." msgstr "Éxito: O dispositivo «%s» desconectouse correctamente." -#: ../cli/src/devices.c:922 +#: ../cli/src/devices.c:1149 #, c-format msgid "Error: Device '%s' (%s) disconnecting failed: %s" msgstr "Erro: Fallou a desconexión do dispositivo «%s» (%s): %s" -#: ../cli/src/devices.c:930 +#: ../cli/src/devices.c:1157 #, c-format msgid "Device state: %d (%s)\n" msgstr "Estado do dispositivo: %d (%s)\n" -#: ../cli/src/devices.c:994 +#: ../cli/src/devices.c:1222 #, c-format msgid "Error: iface has to be specified." msgstr "Erro: non se especificou a interface." -#: ../cli/src/devices.c:1112 +#: ../cli/src/devices.c:1347 #, c-format msgid "Error: 'dev wifi': %s" msgstr "Erro: «dev wifi»: %s" -#: ../cli/src/devices.c:1114 +#: ../cli/src/devices.c:1349 #, c-format msgid "Error: 'dev wifi': %s; allowed fields: %s" msgstr "Erro: «dev wiki»: %s; campos permitidos: %s" -#: ../cli/src/devices.c:1121 +#: ../cli/src/devices.c:1372 msgid "WiFi scan list" msgstr "Lista de escaneo WiFi" -#: ../cli/src/devices.c:1156 ../cli/src/devices.c:1210 +#: ../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 "Erro: Non se encontrou o punto de acces co enderezo hardware «%s»." -#: ../cli/src/devices.c:1173 +#: ../cli/src/devices.c:1426 #, c-format msgid "Error: Device '%s' is not a WiFi device." msgstr "Erro: O dispositivo «%s» non é un dispositivo WiFi." -#: ../cli/src/devices.c:1237 +#: ../cli/src/devices.c:1490 #, c-format msgid "Error: 'dev wifi' command '%s' is not valid." msgstr "Erro: «dev wifi» a orde «%s» non é válida." -#: ../cli/src/devices.c:1284 +#: ../cli/src/devices.c:1566 +#, c-format +#| msgid "Error: 'dev wifi': %s" +msgid "Error: 'dev wimax': %s" +msgstr "Erro: «dev wimax» «%s»" + +#: ../cli/src/devices.c:1568 +#, c-format +#| msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgid "Error: 'dev wimax': %s; allowed fields: %s" +msgstr "Erro: «dev wimax»: %s; campos permitidos: %s" + +#: ../cli/src/devices.c:1591 +msgid "WiMAX NSP list" +msgstr "Lista PSR WiMAX" + +#: ../cli/src/devices.c:1628 +#, c-format +#| msgid "Error: Device '%s' not found." +msgid "Error: NSP with name '%s' not found." +msgstr "Error: no se encontrou o PSR co nome «%s»." + +#: ../cli/src/devices.c:1639 +#, c-format +#| msgid "Error: Device '%s' is not a WiFi device." +msgid "Error: Device '%s' is not a WiMAX device." +msgstr "Error: o dispositivo «%s» non é un dispositivo WiMAX." + +#: ../cli/src/devices.c:1697 +#, c-format +#| msgid "Error: 'dev wifi' command '%s' is not valid." +msgid "Error: 'dev wimax' command '%s' is not valid." +msgstr "Error: orde «dev wimax» «%s» non válida." + +#: ../cli/src/devices.c:1747 #, c-format msgid "Error: 'dev' command '%s' is not valid." msgstr "Erro: «dev» a orde «%s» non é válida." -#: ../cli/src/network-manager.c:35 +#: ../cli/src/network-manager.c:37 msgid "RUNNING" msgstr "EXECUTANDO" -#. 1 -#: ../cli/src/network-manager.c:37 +#. 0 +#: ../cli/src/network-manager.c:38 +msgid "VERSION" +msgstr "VERSIÓN" + +#. 2 +#: ../cli/src/network-manager.c:40 +msgid "NET-ENABLED" +msgstr "NET-ACTIVADA" + +#. 3 +#: ../cli/src/network-manager.c:41 msgid "WIFI-HARDWARE" msgstr "WIFI-HARDWARE" -#. 2 -#: ../cli/src/network-manager.c:38 +#. 4 +#: ../cli/src/network-manager.c:42 msgid "WIFI" msgstr "WIFI" -#. 3 -#: ../cli/src/network-manager.c:39 +#. 5 +#: ../cli/src/network-manager.c:43 msgid "WWAN-HARDWARE" msgstr "WWAN-HARDWARE" -#. 4 -#: ../cli/src/network-manager.c:40 +#. 6 +#: ../cli/src/network-manager.c:44 msgid "WWAN" msgstr "WWAN" -#: ../cli/src/network-manager.c:62 -#, c-format +#. 7 +#: ../cli/src/network-manager.c:45 +#| msgid "WIFI-HARDWARE" +msgid "WIMAX-HARDWARE" +msgstr "HARDWARE-WIMAX" + +#. 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 | sleep | wakeup | wifi | wwan }\n" +#| "\n" +#| " status\n" +#| " sleep\n" +#| " wakeup\n" +#| " wifi [on|off]\n" +#| " wwan [on|off]\n" +#| "\n" msgid "" "Usage: nmcli nm { COMMAND | help }\n" "\n" -" COMMAND := { status | sleep | wakeup | wifi | wwan }\n" +" COMMAND := { status | enable | sleep | wifi | wwan | wimax }\n" +"\n" +" COMMAND := { status | enable | sleep | wifi | wwan }\n" "\n" " status\n" -" sleep\n" -" wakeup\n" +" enable [true|false]\n" +" sleep [true|false]\n" " wifi [on|off]\n" " wwan [on|off]\n" +" wimax [on|off]\n" "\n" msgstr "" -"Usage: nmcli nm { ORDE | help }\n" +"Uso: nmcli nm { ORDE | help }\n" +"\n" +" COMANDO := { status | enable | sleep | wifi | wwan | wimax }\n" "\n" -" ORDE := { status | sleep | wakeup | wifi | wwan }\n" +" COMANDO := { status | enable | sleep | wifi | wwan }\n" "\n" " status\n" -" sleep\n" -" wakeup\n" +" enable [true|false]\n" +" sleep [true|false]\n" " wifi [on|off]\n" " wwan [on|off]\n" +" wimax [on|off]\n" "\n" -#: ../cli/src/network-manager.c:83 +#: ../cli/src/network-manager.c:103 msgid "asleep" msgstr "dormido" -#: ../cli/src/network-manager.c:85 +#: ../cli/src/network-manager.c:105 msgid "connecting" msgstr "conectando" -#: ../cli/src/network-manager.c:125 +#: ../cli/src/network-manager.c:107 +msgid "connected (local only)" +msgstr "conectado (só local)" + +#: ../cli/src/network-manager.c:109 +#| msgid "connected" +msgid "connected (site only)" +msgstr "conectado (só o sitio)" + +#: ../cli/src/network-manager.c:113 +#| msgid "connecting" +msgid "disconnecting" +msgstr "desconectando" + +#: ../cli/src/network-manager.c:153 #, c-format msgid "Error: 'nm status': %s" msgstr "Erro:«'nm status»: %s" -#: ../cli/src/network-manager.c:127 +#: ../cli/src/network-manager.c:155 #, c-format msgid "Error: 'nm status': %s; allowed fields: %s" msgstr "Erro: 'nm status': %s; campos permitidos: %s" -#: ../cli/src/network-manager.c:134 -msgid "NetworkManager status" -msgstr "Estado de NetworkManager" - -#. Print header -#: ../cli/src/network-manager.c:140 ../cli/src/network-manager.c:141 -#: ../cli/src/network-manager.c:142 ../cli/src/network-manager.c:143 -#: ../cli/src/network-manager.c:211 ../cli/src/network-manager.c:243 +#. 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 "activado" -#: ../cli/src/network-manager.c:140 ../cli/src/network-manager.c:141 -#: ../cli/src/network-manager.c:142 ../cli/src/network-manager.c:143 -#: ../cli/src/network-manager.c:211 ../cli/src/network-manager.c:243 +#: ../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 "desactivado" -#: ../cli/src/network-manager.c:148 +#: ../cli/src/network-manager.c:188 +msgid "NetworkManager status" +msgstr "Estado de NetworkManager" + +#. Print header +#: ../cli/src/network-manager.c:191 msgid "running" msgstr "en execución" -#: ../cli/src/network-manager.c:148 +#: ../cli/src/network-manager.c:191 msgid "not running" msgstr "non está a executarse" -#: ../cli/src/network-manager.c:201 ../cli/src/network-manager.c:233 +#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322 +#, c-format +msgid "Error: Couldn't connect to system bus: %s" +msgstr "Erro: Non se puido conectar ao bus do sistema: %s" + +#: ../cli/src/network-manager.c:233 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "Erro: Non se puido crear o proxy do obxecto D-Bus." + +#: ../cli/src/network-manager.c:239 +#, c-format +msgid "Error in sleep: %s" +msgstr "Erro ao durmir: %s" + +#: ../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 "Erro: '--fields' valor '%s' non é válido aquí; campos permitidos: %s" -#: ../cli/src/network-manager.c:209 +#: ../cli/src/network-manager.c:291 +msgid "Networking enabled" +msgstr "Rede activada" + +#: ../cli/src/network-manager.c:307 +#, c-format +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"Erro: o parámetro 'activar' é incorrecto: '%s'; use 'verdadeiro' ou 'falso'." + +#: ../cli/src/network-manager.c:317 +#, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "Erro: O status dormente non foi exportado polo NetworkManager." + +#: ../cli/src/network-manager.c:325 +#, c-format +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"Erro: O parámetro 'durmir' é incorrecto: '%s'; use 'verdadeiro' ou 'falso'." + +#: ../cli/src/network-manager.c:346 msgid "WiFi enabled" msgstr "WiFi activada" -#: ../cli/src/network-manager.c:220 +#: ../cli/src/network-manager.c:362 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Erro: parámetro «wifi» non válido: «%s»." -#: ../cli/src/network-manager.c:241 +#: ../cli/src/network-manager.c:384 msgid "WWAN enabled" msgstr "WWAN activada" -#: ../cli/src/network-manager.c:252 +#: ../cli/src/network-manager.c:400 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Erro: parámetro «wwan» non válido: «%s»." -#: ../cli/src/network-manager.c:263 +#: ../cli/src/network-manager.c:423 +#| msgid "WiFi enabled" +msgid "WiMAX enabled" +msgstr "WiMAX activado" + +#: ../cli/src/network-manager.c:439 +#, c-format +#| msgid "Error: invalid 'wifi' parameter: '%s'." +msgid "Error: invalid 'wimax' parameter: '%s'." +msgstr "Erro: parámetro «wimax» non válido: «%s»." + +#: ../cli/src/network-manager.c:452 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Erro: «nm» a orde «%s» non é válida." -#: ../cli/src/nmcli.c:69 -#, c-format +#: ../cli/src/nmcli.c:64 +#, c-format +#| msgid "" +#| "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" +#| "\n" +#| "OPTIONS\n" +#| " -t[erse] terse output\n" +#| " -p[retty] pretty output\n" +#| " -m[ode] tabular|multiline output mode\n" +#| " -f[ields] <field1,field2,...>|all|common specify fields to output\n" +#| " -e[scape] yes|no escape columns separators in " +#| "values\n" +#| " -v[ersion] show program version\n" +#| " -h[elp] print this help\n" +#| "\n" +#| "OBJECT\n" +#| " nm NetworkManager status\n" +#| " con NetworkManager connections\n" +#| " dev devices managed by NetworkManager\n" +#| "\n" msgid "" "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" "\n" @@ -986,6 +1252,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" @@ -995,598 +1263,647 @@ msgid "" " dev devices managed by NetworkManager\n" "\n" msgstr "" -"Uso: %s [OPCIÓNS] OBXECTO { ORDE | ayuda }\n" +"Uso: %s [OPCIÓNS] OBXECTO { ORDE | help }\n" "\n" "OPCIÓNS\n" -" -t[erse] saída terse \n" -" -p[retty] saída pretty\n" -" -v[ersion] mostrar a versión do programa\n" -" -h[elp] imprimir esta axuda\n" +" -t[erse] saída terse \n" +" -p[retty] saída pretty\n" +" -m[ode] tabular|multiline saída mode\n" +" -f[ields] <campo1,campo2,...>|all|common especificar os campos que " +"mostrar\n" +" -e[scape] yes|no escapar os separadores de " +"columnas nos valores\n" +" -n[ocheck] non comprobar versións de nmcli " +"e NetworkManager\n" +" -v[ersion] mostrar a versión do programa\n" +" -h[elp] mostrar esta axuda\n" "\n" "OBXECTO\n" -" nm estado do NetworkManager\n" -" con conexións do NetworkManager\n" -" dev dispositivos administrados por NetworkManager\n" +" nm estado de NetworkManager\n" +" con conexións de NetworkManager\n" +" dev dispositivos xestionados por 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 "Erro: O obxecto «%s» é descoñecido, tente a executar «nmcli help»." -#: ../cli/src/nmcli.c:143 +#: ../cli/src/nmcli.c:139 #, c-format msgid "Error: Option '--terse' is specified the second time." msgstr "Erro: A opción «--terse» especifícase en segundo lugar." -#: ../cli/src/nmcli.c:148 +#: ../cli/src/nmcli.c:144 #, c-format msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." msgstr "Erro: A opción «--terse» é mutuamente exclusiva con «--pretty»." -#: ../cli/src/nmcli.c:156 +#: ../cli/src/nmcli.c:152 #, c-format msgid "Error: Option '--pretty' is specified the second time." msgstr "Erro: A opción «--pretty» especifícase en segundo lugar." -#: ../cli/src/nmcli.c:161 +#: ../cli/src/nmcli.c:157 #, c-format msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." msgstr "Erro: A opción «--pretty» é mutuamente exclusiva con «--terse»." -#: ../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 "Erro: falta o argumento para a opción «%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 "Erro: «%s» non é un argumento válido para a opción «%s»." -#: ../cli/src/nmcli.c:203 +#: ../cli/src/nmcli.c:199 #, c-format msgid "Error: fields for '%s' options are missing." msgstr "Erro: faltan os campos para «%s»." -#: ../cli/src/nmcli.c:209 +#: ../cli/src/nmcli.c:207 #, c-format msgid "nmcli tool, version %s\n" msgstr "ferramenta nmcli, versión %s\n" -#: ../cli/src/nmcli.c:215 +#: ../cli/src/nmcli.c:213 #, c-format msgid "Error: Option '%s' is unknown, try 'nmcli -help'." msgstr "Erro: A opción «%s» é descoñecida, tente «nmcli --help»" -#: ../cli/src/nmcli.c:234 +#: ../cli/src/nmcli.c:232 #, c-format msgid "Caught signal %d, shutting down..." msgstr "Sinal %d capturada, apagando..." -#: ../cli/src/nmcli.c:259 -#, c-format -msgid "Error: Could not connect to NetworkManager." -msgstr "Erro: non foi posíbel conectarse a NetworkManager" +#: ../cli/src/nmcli.c:257 +msgid "Error: Could not create NMClient object." +msgstr "Erro: non é posíbel crear o obxecto NMClient." -#: ../cli/src/nmcli.c:275 +#: ../cli/src/nmcli.c:273 msgid "Success" msgstr "Éxito" -#: ../cli/src/settings.c:411 +#: ../cli/src/settings.c:423 #, c-format msgid "%d (hex-ascii-key)" msgstr "%d (hex-ascii-key)" -#: ../cli/src/settings.c:413 +#: ../cli/src/settings.c:425 #, c-format msgid "%d (104/128-bit passphrase)" msgstr "%d (frase de paso 104/128-bit)" -#: ../cli/src/settings.c:416 +#: ../cli/src/settings.c:428 #, c-format msgid "%d (unknown)" msgstr "%d (descoñecido)" -#: ../cli/src/settings.c:442 +#: ../cli/src/settings.c:454 msgid "0 (unknown)" msgstr "0 (descoñecido)" -#: ../cli/src/settings.c:448 +#: ../cli/src/settings.c:460 msgid "any, " msgstr "calquera, " -#: ../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 "automático" -#: ../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 "non definido" -#: ../cli/src/utils.c:124 +#: ../cli/src/utils.c:128 #, c-format msgid "field '%s' has to be alone" msgstr "o campo «%s» ten que estar só" -#: ../cli/src/utils.c:127 +#: ../cli/src/utils.c:131 #, c-format msgid "invalid field '%s'" msgstr "campo «%s» non válido" -#: ../cli/src/utils.c:146 +#: ../cli/src/utils.c:150 #, c-format msgid "Option '--terse' requires specifying '--fields'" msgstr "A opcións «--terse» require que especifique «--fields»" -#: ../cli/src/utils.c:150 +#: ../cli/src/utils.c:154 #, c-format -msgid "" -"Option '--terse' requires specific '--fields' option values , not '%s'" +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" msgstr "" "A opción «--terse» require que especifique os valores da opción «--fields», " "non «%s»" -#: ../libnm-util/crypto.c:120 +#: ../cli/src/utils.c:333 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" +msgstr "" +"Erro: non é posíbel crear un proxy de obxecto D-Bus para org.freedesktop." +"DBus." + +#: ../cli/src/utils.c:341 +#, c-format +msgid "Error: NameHasOwner request failed: %s" +msgstr "Erro: produciuse un fallo na resposta «NameHasOwner»: %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 "" +"Advertencia: as versións de nmcli (%s) e de NetworkManager (%s) non " +"coinciden. Use «--nocheck» para evitar o aviso.\n" + +#: ../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 "" +"Erro: as versións de nmcli (%s) e de NetworkManager (%s) non coinciden. " +"Force a execución usando «--nocheck», pero os resultados son impredecíbeis." + +#: ../libnm-util/crypto.c:133 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "O ficheiro de chave PEM non ten a etiqueta de final «%s»." -#: ../libnm-util/crypto.c:130 +#: ../libnm-util/crypto.c:146 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Non parece un ficheiro de chave privada PEM." -#: ../libnm-util/crypto.c:138 +#: ../libnm-util/crypto.c:154 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Non hai memoria abondo para almacenar o ficheiro PEM." -#: ../libnm-util/crypto.c:154 +#: ../libnm-util/crypto.c:170 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Ficheiro PEM malformado: Proc-Type non é a primeira etiqueta." -#: ../libnm-util/crypto.c:162 +#: ../libnm-util/crypto.c:178 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." -msgstr "Ficheiro PEM malformado: a etiqueta Proc-Type «%s »é descoñecida." +msgstr "O ficheiro PEM é erróneo: a etiqueta Proc-Type «%s» é descoñecida." -#: ../libnm-util/crypto.c:172 +#: ../libnm-util/crypto.c:188 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Ficheiro PEM malformado: Proc-Type non é a segunda etiqueta." -#: ../libnm-util/crypto.c:183 +#: ../libnm-util/crypto.c:199 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." -msgstr "" -"Ficheiro PEM malformado: non se atopou ningún IV na etiqueta DEK-Info" +msgstr "Ficheiro PEM malformado: non se atopou ningún IV na etiqueta DEK-Info" -#: ../libnm-util/crypto.c:190 +#: ../libnm-util/crypto.c:206 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." -msgstr "" -"Ficheiro PEM malformado: formato de IV incorrecto na etiqueta DEK-Info" +msgstr "Ficheiro PEM malformado: formato de IV incorrecto na etiqueta DEK-Info" -#: ../libnm-util/crypto.c:203 +#: ../libnm-util/crypto.c:219 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." -msgstr "" -"Ficheiro PEM malformado: o cifrado da chave privada «%s» é descoñecido" +msgstr "Ficheiro PEM malformado: o cifrado da chave privada «%s» é descoñecido" -#: ../libnm-util/crypto.c:222 +#: ../libnm-util/crypto.c:238 #, c-format msgid "Could not decode private key." msgstr "Non puido ser decodificada a chave privada." -#: ../libnm-util/crypto.c:267 -#, c-format -msgid "PEM certificate '%s' had no end tag '%s'." -msgstr "O certificado PEM «%s» non ten unha etiqueta de final «%s»." +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "Produciuse un fallo ao buscar a etiqueta de inicio «%s» de PKCS#8." -#: ../libnm-util/crypto.c:277 +#: ../libnm-util/crypto.c:292 #, c-format -msgid "Failed to decode certificate." -msgstr "Fallou ao decodificar o certificado" +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "" +"Produciuse un fallo ao buscar a etiqueta de finalización «%s» de PKCS#8." -#: ../libnm-util/crypto.c:286 +#: ../libnm-util/crypto.c:312 +#| msgid "Not enough memory to store file data." +msgid "Not enough memory to store private key data." +msgstr "No hai memoria dabondo para almacenar os datos da chave privada." + +#: ../libnm-util/crypto.c:317 +#| msgid "Failed to decrypt the private key." +msgid "Failed to decode PKCS#8 private key." +msgstr "Produciuse un erro ao descifrar a chave privada PKCS#8." + +#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625 #, c-format msgid "Not enough memory to store certificate data." msgstr "Non hai memoria abondo para almacenar os datos do certificado" -#: ../libnm-util/crypto.c:294 -#, c-format -msgid "Not enough memory to store file data." -msgstr "Non hai memoriaabondo para almacenar os datos do ficheiro" - -#: ../libnm-util/crypto.c:324 +#: ../libnm-util/crypto.c:365 #, c-format msgid "IV must be an even number of bytes in length." msgstr "IV debe ter un número par de bytes en lonxitude." -#: ../libnm-util/crypto.c:333 +#: ../libnm-util/crypto.c:374 #, c-format msgid "Not enough memory to store the IV." msgstr "Non hai memoria abondo para almacenar o IV." -#: ../libnm-util/crypto.c:344 +#: ../libnm-util/crypto.c:385 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV contén díxitos non hexadecimais." -#: ../libnm-util/crypto.c:382 ../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:423 ../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 "O cifrado «%s» da chave privada é descoñecido." -#: ../libnm-util/crypto.c:391 +#: ../libnm-util/crypto.c:432 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Non hai memoria abondo para descifrar esta chave privada." -#: ../libnm-util/crypto.c:511 +#: ../libnm-util/crypto.c:497 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Non hai memoria abondo para almacenar a chave privada descifrada." + +#: ../libnm-util/crypto.c:542 #, c-format msgid "Unable to determine private key type." msgstr "Non foi posíbel determinar o tipo de chave privada" -#: ../libnm-util/crypto.c:530 +#: ../libnm-util/crypto.c:597 #, c-format -msgid "Not enough memory to store decrypted private key." -msgstr "Non hai memoria abondo para almacenar a chave privada descifrada." +#| msgid "PEM certificate '%s' had no end tag '%s'." +msgid "PEM certificate had no start tag '%s'." +msgstr "O certificado PEM non ten etiqueta de inicio «%s»." + +#: ../libnm-util/crypto.c:606 +#, c-format +#| msgid "PEM certificate '%s' had no end tag '%s'." +msgid "PEM certificate had no end tag '%s'." +msgstr "O certificado PEM non ten etiqueta de finalización «%s»." + +#: ../libnm-util/crypto.c:630 +#, c-format +msgid "Failed to decode certificate." +msgstr "Fallou ao decodificar o certificado" -#: ../libnm-util/crypto_gnutls.c:49 +#: ../libnm-util/crypto_gnutls.c:50 msgid "Failed to initialize the crypto engine." msgstr "Produciuse un erro ao iniciar o motor de cifrado" -#: ../libnm-util/crypto_gnutls.c:93 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." msgstr "Produciuse un erro ao iniciar a arquitectura MD5: %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 "Lonxitude de IV incorrecta (debe ser polo menos %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 "Non hai memoria abondo para o búfer da chave descifrada." -#: ../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 "" "Produciuse un erro ao inicializar o contexto de cifrado para o descifrado: " "%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 "" "Produciuse un erro ao establecer a chave simétrica para o descifrado: %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 "Produciuse un erro ao establecer IV para o descifrado: %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 "Produciuse un erro ao descifrar a chave privada: %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 "" "Produciuse un fallo ao descifrar a chave privada: lonxitude de desprazamento " "non esperada." -#: ../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 "Produciuse un erro ao descifrar a chave privada" -#: ../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 "Non foi posíbel asignar a memoria para cifrar." -#: ../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 "" "Produciuse un erro ao inicializar o contexto da chave de cifrado: %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 "" "Produciuse un erro ao establecer a chave simétrica para o cifrado: %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 "Produciuse un erro ao establecer IV para o cifrado: %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 "Produciuse un erro ao cifrar os datos: %s / %s." -#: ../libnm-util/crypto_gnutls.c:362 +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Produciuse un erro ao iniciar a certificación dos datos: %s" -#: ../libnm-util/crypto_gnutls.c:384 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Non se puido decodificar o certificado: %s" -#: ../libnm-util/crypto_gnutls.c:408 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "Non foi posíbel iniciar o decodificador PKCS#12: %s" -#: ../libnm-util/crypto_gnutls.c:421 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "Non foi posíbel decodificar o ficheiro PKCS#12: %s" -#: ../libnm-util/crypto_gnutls.c:433 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "Non foi posíbel verificar o ficheiro PKCS#12: %s" +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +#| msgid "Couldn't initialize PKCS#12 decoder: %s" +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "Non foi posíbel iniciar o decodificador PKCS#8: %s" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +#| msgid "Couldn't decode PKCS#12 file: %s" +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "Non foi posíbel decodificar o ficheiro PKCS#8: %s" + #: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "Produciuse un erro ao iniciar o motor de cifrado:%d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "Produciuse un erro ao iniciar o contexto MD5: %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 "Lonxitude de IV incorrecta (debe ser polo menos %d)." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Produciuse un erro ao iniciar a rañura de cifrado para o descifrado" -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." -msgstr "" -"Produciuse un erro ao establecer a chave simétrica para o descifrado." +msgstr "Produciuse un erro ao establecer a chave simétrica para o descifrado." -#: ../libnm-util/crypto_nss.c:216 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Produciuse un erro ao establecer IV para o descifrado." -#: ../libnm-util/crypto_nss.c:224 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Produciuse un erro ao iniciar o contexto de descifrado." -#: ../libnm-util/crypto_nss.c:237 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." msgstr "Produciuse un erro ao descifrar a chave privada: %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 "" "Produciuse un erro ao descifrar a chave privada: os datos descifrados son " "moi grandes." -#: ../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 "Produciuse un erro ao finalizar o descifrado da chave privada: %d." -#: ../libnm-util/crypto_nss.c:364 +#: ../libnm-util/crypto_nss.c:360 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Produciuse un erro ao inicializar a rañura da cifra de cifrado." -#: ../libnm-util/crypto_nss.c:372 +#: ../libnm-util/crypto_nss.c:368 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "Produciuse un erro ao establecer a chave simétrica para o cifrado." -#: ../libnm-util/crypto_nss.c:380 +#: ../libnm-util/crypto_nss.c:376 #, c-format msgid "Failed to set IV for encryption." msgstr "Produciuse un erro ao establecer IV para o cifrado." -#: ../libnm-util/crypto_nss.c:388 +#: ../libnm-util/crypto_nss.c:384 #, c-format msgid "Failed to initialize the encryption context." msgstr "Produciuse un erro ao inicializar o contexto de cifrado." -#: ../libnm-util/crypto_nss.c:396 +#: ../libnm-util/crypto_nss.c:392 #, c-format msgid "Failed to encrypt: %d." msgstr "Produciuse un erro ao cifrar: %d." -#: ../libnm-util/crypto_nss.c:404 +#: ../libnm-util/crypto_nss.c:400 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Tamaño non agardado de datos despois de cifrar." -#: ../libnm-util/crypto_nss.c:447 +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Non foi posíbel decodificar o certificado: %d" -#: ../libnm-util/crypto_nss.c:482 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Non foi posíbel converter a chave a 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 "Non foi posíbel iniciar o decodificador PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:519 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "Non fo posíbel decodificar o ficheiro PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:528 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "Non foi posíbel verficar o ficheiro PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:557 +#: ../libnm-util/crypto_nss.c:568 msgid "Could not generate random data." msgstr "Non foi posíbel xerar datos aleatorios." -#: ../libnm-util/nm-utils.c:1975 +#: ../libnm-util/nm-utils.c:2000 #, c-format msgid "Not enough memory to make encryption key." msgstr "Sen memoria abondo para crear a chave de cifrado." -#: ../libnm-util/nm-utils.c:2085 +#: ../libnm-util/nm-utils.c:2110 msgid "Could not allocate memory for PEM file creation." msgstr "Non foi posíbel asignar memoria para a creación do ficheiro PEM," -#: ../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 "Non foi posíbel asignar memoria para escribir IV no ficheiro PEM." -#: ../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 "" "Non foi posíbel asignar memoria para escribir a chave cifrada no ficheiro " "PEM." -#: ../libnm-util/nm-utils.c:2128 +#: ../libnm-util/nm-utils.c:2153 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Non foi posíbel asignar memoria para os datos do ficheiro PEM." -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 -msgid "Connection sharing via a protected WiFi network" -msgstr "Conexión compartida a través dunha rede WiFi protexida" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2 -msgid "Connection sharing via an open WiFi network" -msgstr "Conexión compartida a través dunha rede WiFi aberta" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3 -msgid "Modify persistent system hostname" -msgstr "Modificar o nome persistente do anfitrión do sistema" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4 -msgid "Modify system connections" -msgstr "Modificar as conexións do sistema" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5 -msgid "System policy prevents modification of system settings" -msgstr "" -"A política do sistema impide a modificación da configuración do sistema" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 -msgid "System policy prevents modification of the persistent system hostname" -msgstr "" -"A política do sistema impide a modificación do nome do anfitrión do sistema" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 -msgid "" -"System policy prevents sharing connections via a protected WiFi network" -msgstr "" -"A política do sistema impide compartir conexións a través dunha rede WiFi " -"protexida" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 -msgid "System policy prevents sharing connections via an open WiFi network" -msgstr "" -"A política do sistema impide compartir conexións a través dunha rede WiFi " -"aberta" - #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 msgid "Allow control of network connections" msgstr "Permitir o control das conexións de rede" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 -msgid "Allow use of user-specific connections" -msgstr "Permitir o uso de conexións específicas do usuario" +msgid "Connection sharing via a protected WiFi network" +msgstr "Conexión compartida a través dunha rede WiFi protexida" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Connection sharing via an open WiFi network" +msgstr "Conexión compartida a través dunha rede WiFi aberta" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 msgid "Enable or disable WiFi devices" msgstr "Activar ou desactivar os dispositivos WiFi" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +#| msgid "Enable or disable mobile broadband devices" +msgid "Enable or disable WiMAX mobile broadband devices" +msgstr "Activar ou desactivar os dispositivos de banda larga móbil WIMAX" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 msgid "Enable or disable mobile broadband devices" msgstr "Activar ou desactivar os dispositivos de banda ancha móbiles" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 msgid "Enable or disable system networking" msgstr "Activar ou desactivar a rede do sistema" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +#| msgid "Modify system connections" +msgid "Modify network connections for all users" +msgstr "Modificar as conexións de rede para tódolos usuarios" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "Modify persistent system hostname" +msgstr "Modificar o nome persistente do anfitrión do sistema" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +#| msgid "Allow control of network connections" +msgid "Modify personal network connections" +msgstr "Modificar as conexións de rede persoais" + +#: ../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)" @@ -1594,101 +1911,87 @@ msgstr "" "Poñer o NetworkManager en suspensión e espertalo (só debe ser usado polo " "sistema de xestión de rede)" -#: ../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 "A normativa do sistema evita o control das conexións de rede" -#: ../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 "" "A normativa do sistema evita a activación e desactivación dos dispositivos " "WiFi" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14 +#| msgid "" +#| "System policy prevents enabling or disabling mobile broadband devices" +msgid "" +"System policy prevents enabling or disabling WiMAX mobile broadband devices" +msgstr "" +"A normativa do sistema evita activar ou desactivar os dispositivos de banda " +"larga móbil WIMAX." + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15 msgid "System policy prevents enabling or disabling mobile broadband devices" msgstr "" "A normativa do sistema evita a activación ou desactivación dos dispositivos " "de banda ancha." -#: ../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 "" "A normativa do sistema evita a activación ou desactivación da rede do sistema" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 -msgid "" -"System policy prevents putting NetworkManager to sleep or waking it up" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17 +#| msgid "System policy prevents modification of system settings" +msgid "System policy prevents modification of network settings for all users" msgstr "" -"A normativa do sistema evita poñer o NetworkManager en suspensión ou " -"espertalo" +"A política do sistema impide a modificación da configuración da rede para " +"tódolos usuarios" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 -msgid "System policy prevents use of user-specific connections" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18 +#| msgid "System policy prevents modification of system settings" +msgid "System policy prevents modification of personal network settings" msgstr "" -"A normativa do sistema evita o uso de conexións específicas do usuario" +"A política do sistema impide a modificación da configuración persoal da rede" -#: ../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 "produciuse un erro procesando a mensaxe netlink: %s" - -#: ../src/nm-netlink-monitor.c:214 -msgid "error occurred while waiting for data on socket" -msgstr "producouse un erro agardando por datos nun socket" - -#: ../src/nm-netlink-monitor.c:254 -#, c-format -msgid "unable to connect to netlink for monitoring link status: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19 +msgid "System policy prevents modification of the persistent system hostname" msgstr "" -"non é posíbel conectar ao netlink para monitorizar o estado da lingazón: %s" +"A política do sistema impide a modificación do nome do anfitrión do sistema" -#: ../src/nm-netlink-monitor.c:265 -#, c-format -msgid "unable to enable netlink handle credential passing: %s" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" msgstr "" -"non é posíbel activar a ligazón de rede para xestionar o paso de " -"creadenciais: %s" +"A normativa do sistema evita poñer o NetworkManager en suspensión ou " +"espertalo" -#: ../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" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21 +msgid "System policy prevents sharing connections via a protected WiFi network" msgstr "" -"non é posíbel crear o manexador netlink para monitorizar o estado da " -"ligazón: %s" +"A política do sistema impide compartir conexións a través dunha rede WiFi " +"protexida" -#: ../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:22 +msgid "System policy prevents sharing connections via an open WiFi network" msgstr "" -"non é posíbel asignar a ligazón á caché netlink para monitorizar o estado da " -"ligazón: %s" - -#: ../src/nm-netlink-monitor.c:502 -#, c-format -msgid "unable to join netlink group: %s" -msgstr "non é posíbel unir ao grupo da ligazón de rede: %s" - -#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 -#, c-format -msgid "error updating link cache: %s" -msgstr "produciuse un erro ao actualizar a caché de ligazóns: %s" +"A política do sistema impide compartir conexións a través dunha rede WiFi " +"aberta" -#: ../src/main.c:498 +#: ../src/main.c:525 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "Opción incorrecta. Use --help para ver a lista de opcións válidas.\n" -#: ../src/main.c:569 +#: ../src/main.c:606 #, c-format msgid "%s. Please use --help to see a list of valid options.\n" msgstr "%s. Use --help para ver a lista das opcións válidas.\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62 msgid "# Created by NetworkManager\n" msgstr "# Creado por 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" @@ -1714,38 +2017,275 @@ msgstr "Non foi posíbel encontrar «dhcpcd»." msgid "unsupported DHCP client '%s'" msgstr "cliente DHCP «%s» non compatíbel" -#: ../src/logging/nm-logging.c:146 +#: ../src/dns-manager/nm-dns-manager.c:376 +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "NOTE: o importador libc non permite máis de 3 nomes de servidores." + +#: ../src/dns-manager/nm-dns-manager.c:378 +msgid "The nameservers listed below may not be recognized." +msgstr "Os nomes de servidores listados a seguir poden non ser recoñecidos" + +#: ../src/logging/nm-logging.c:149 #, c-format msgid "Unknown log level '%s'" msgstr "Nivel de rexistro «%s» descoñecido" -#: ../src/logging/nm-logging.c:171 +#: ../src/logging/nm-logging.c:174 #, c-format msgid "Unknown log domain '%s'" msgstr "Dominio de rexistro «%s» descoñecido" -#: ../src/dns-manager/nm-dns-manager.c:384 -msgid "NOTE: the libc resolver may not support more than 3 nameservers." -msgstr "NOTE: o importador libc non permite máis de 3 nomes de servidores." +#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355 +#, c-format +#| msgid "connection failed" +msgid "CDMA connection %d" +msgstr "Conexión CDMA %d" -#: ../src/dns-manager/nm-dns-manager.c:386 -msgid "The nameservers listed below may not be recognized." -msgstr "Os nomes de servidores listados a seguir poden non ser recoñecidos" +#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351 +#, c-format +#| msgid "connection failed" +msgid "GSM connection %d" +msgstr "Conexión GSM %d" + +#: ../src/nm-device-bt.c:326 +#, c-format +#| msgid "VPN connection failed" +msgid "PAN connection %d" +msgstr "Conexión PAN %d" + +#: ../src/nm-device-bt.c:359 +#, c-format +#| msgid "VPN connection failed" +msgid "DUN connection %d" +msgstr "Conexión DUN %d" + +#: ../src/nm-device-ethernet.c:1724 +#, c-format +#| msgid "VPN connection failed" +msgid "PPPoE connection %d" +msgstr "Conexión PPPoE %d" + +#: ../src/nm-device-ethernet.c:1724 ../src/settings/nm-settings-utils.c:50 +#, c-format +#| msgid "Active connections" +msgid "Wired connection %d" +msgstr "Conexión cableada %d" + +#: ../src/nm-device-olpc-mesh.c:393 +#, c-format +msgid "Mesh %d" +msgstr "Malla %d" + +#: ../src/nm-manager.c:663 +#, c-format +#| msgid "VPN connection failed" +msgid "VPN connection %d" +msgstr "Conexión VPN %d" + +#: ../src/nm-netlink-monitor.c:101 ../src/nm-netlink-monitor.c:234 +#: ../src/nm-netlink-monitor.c:667 +#, c-format +msgid "error processing netlink message: %s" +msgstr "produciuse un erro procesando a mensaxe netlink: %s" + +#: ../src/nm-netlink-monitor.c:216 +msgid "error occurred while waiting for data on socket" +msgstr "producouse un erro agardando por datos nun socket" + +#: ../src/nm-netlink-monitor.c:260 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "" +"non é posíbel conectar ao netlink para monitorizar o estado da lingazón: %s" + +#: ../src/nm-netlink-monitor.c:271 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" +"non é posíbel activar a ligazón de rede para xestionar o paso de " +"creadenciais: %s" + +#: ../src/nm-netlink-monitor.c:297 ../src/nm-netlink-monitor.c:360 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "" +"non é posíbel crear o manexador netlink para monitorizar o estado da " +"ligazón: %s" -#: ../src/settings/nm-default-wired-connection.c:157 +#: ../src/nm-netlink-monitor.c:385 #, c-format -msgid "Auto %s" -msgstr "Auto %s" +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" +"non é posíbel asignar a ligazón á caché netlink para monitorizar o estado da " +"ligazón: %s" -#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 +#: ../src/nm-netlink-monitor.c:512 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "non é posíbel unir ao grupo da ligazón de rede: %s" + +#: ../src/nm-netlink-monitor.c:643 ../src/nm-netlink-monitor.c:656 +#, c-format +msgid "error updating link cache: %s" +msgstr "produciuse un erro ao actualizar a caché de ligazóns: %s" + +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 msgid "System" msgstr "Sistema" -#, c-format +#~ msgid "Auto %s" +#~ msgstr "Auto %s" + +#~ msgid "System policy prevents modification of system settings" +#~ msgstr "" +#~ "A política do sistema impide a modificación da configuración do sistema" + +#~ msgid "Modify system connections" +#~ msgstr "Modificar as conexións do sistema" + +#~ msgid "PEM certificate '%s' had no end tag '%s'." +#~ msgstr "O certificado PEM «%s» non ten unha etiqueta de final «%s»." + +#~ msgid "Not enough memory to store file data." +#~ msgstr "Non hai memoriaabondo para almacenar os datos do ficheiro" + +#~ msgid "SCOPE" +#~ msgstr "AMBITO" + +#~ msgid "DBUS-SERVICE" +#~ msgstr "DBUS-SERVICE" + +#~ msgid "system" +#~ msgstr "sistema" + +#~ msgid "user" +#~ msgstr "usuario" + +#~ msgid "User connections" +#~ msgstr "Conexións do usuario" + +#~ msgid "System connections" +#~ msgstr "Conexións do sistema" + +#~ msgid "Error: Obtaining active connection for '%s' failed." +#~ msgstr "Erro: Produciuse un fallo ao obter a conexión activa para «%s»." + +#~ msgid "" +#~ "Usage: nmcli con { COMMAND | help }\n" +#~ " COMMAND := { list | status | up | down }\n" +#~ "\n" +#~ " list [id <id> | uuid <id> | system | user]\n" +#~ " status\n" +#~ " up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--" +#~ "timeout <timeout>]\n" +#~ " down id <id> | uuid <id>\n" +#~ msgstr "" +#~ "Uso: nmcli con { ORDE | help }\n" +#~ " ORDE := { list | status | up | down }\n" +#~ "\n" +#~ " list [id <id> | uuid <id> | system | user]\n" +#~ " status\n" +#~ " up id <id> | uuid <id> [iface <interface>] [ap <hwaddr>] [--nowait] [--" +#~ "timeout <timeout>]\n" +#~ " down id <id> | uuid <id>\n" + +#~ msgid "System policy prevents use of user-specific connections" +#~ msgstr "" +#~ "A normativa do sistema evita o uso de conexións específicas do usuario" + +#~ msgid "Error: Could not get user settings." +#~ msgstr "Erro: Non é posíbel obter as opcións do usuario." + +#~ msgid "Error: Can't obtain connections: settings services are not running." +#~ msgstr "" +#~ "Erro: Non é posíbel obter as conexións: os servizos de opcións non están " +#~ "executándose." + +#~ msgid "Allow use of user-specific connections" +#~ msgstr "Permitir o uso de conexións específicas do usuario" + +#~ msgid "" +#~ "Usage: nmcli dev { COMMAND | help }\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" +#~ "\n" +#~ msgstr "" +#~ "Uso: nmcli dev { ORDE | help }\n" +#~ "\n" +#~ " ORDE := { status | list | disconnect | wifi }\n" +#~ "\n" +#~ " status\n" +#~ " list [iface <interface>]\n" +#~ " disconnect iface <interface> [--nowait] [--timeout <tempo-de-espera>]\n" +#~ " wifi [list [iface <interface>] [hwaddr <enderezo-hardware>]]\n" +#~ "\n" + +#~ msgid "" +#~ "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" +#~ "\n" +#~ "OPTIONS\n" +#~ " -t[erse] terse output\n" +#~ " -p[retty] pretty output\n" +#~ " -m[ode] tabular|multiline output mode\n" +#~ " -f[ields] <field1,field2,...>|all|common specify fields to output\n" +#~ " -e[scape] yes|no escape columns separators in " +#~ "values\n" +#~ " -v[ersion] show program version\n" +#~ " -h[elp] print this help\n" +#~ "\n" +#~ "OBJECT\n" +#~ " nm NetworkManager status\n" +#~ " con NetworkManager connections\n" +#~ " dev devices managed by NetworkManager\n" +#~ "\n" +#~ msgstr "" +#~ "Uso: %s [OPCIÓNS] OBXECTO { ORDE | ayuda }\n" +#~ "\n" +#~ "OPCIÓNS\n" +#~ " -t[erse] saída terse \n" +#~ " -p[retty] saída pretty\n" +#~ " -v[ersion] mostrar a versión do programa\n" +#~ " -h[elp] imprimir esta axuda\n" +#~ "\n" +#~ "OBXECTO\n" +#~ " nm estado do NetworkManager\n" +#~ " con conexións do NetworkManager\n" +#~ " dev dispositivos administrados por NetworkManager\n" +#~ "\n" + +#~ msgid "" +#~ "Usage: nmcli nm { COMMAND | help }\n" +#~ "\n" +#~ " COMMAND := { status | enable | sleep | wifi | wwan }\n" +#~ "\n" +#~ " status\n" +#~ " enable [true|false]\n" +#~ " sleep [true|false]\n" +#~ " wifi [on|off]\n" +#~ " wwan [on|off]\n" +#~ "\n" +#~ msgstr "" +#~ "Uso: nmcli nm { ORDE | axuda }\n" +#~ "\n" +#~ " ORDE := { status | activar | durmir | wifi | wwan }\n" +#~ "\n" +#~ " status\n" +#~ " activar [verdadeiro|falso]\n" +#~ " durmir [verdadeiro|falso]\n" +#~ " wifi [activa|desactivada]\n" +#~ " wwan [activa|desactivada]\n" +#~ "\n" + #~ msgid "unable to join netlink group for monitoring link status: %s" #~ msgstr "" -#~ "non é posíbel unir ao grupo netlink para monitorizar o estado da ligazón: %s" +#~ "non é posíbel unir ao grupo netlink para monitorizar o estado da ligazón: " +#~ "%s" -#, c-format #~ msgid "unable to connect to netlink: %s" #~ msgstr "non é posíbel conectar coa ligazón de rede: %s" diff --git a/po/hr.po b/po/hr.po index 3ddfd37d..1d0b4676 100644 --- a/po/hr.po +++ b/po/hr.po @@ -1,220 +1,2180 @@ # NetworkManager # Copyright (C) Red Hat, Inc. # This file is distributed under the same license as the NetworkManager package. +# # Tomislav Vujec <tvujec@redhat.com>, 2005. # msgid "" msgstr "" "Project-Id-Version: NetworkManager \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2005-02-04 17:28+0100\n" -"PO-Revision-Date: 2005-02-04 01:08+0100\n" -"Last-Translator: Tomislav Vujec <tvujec@redhat.com>\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=NetworkManager&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-05-18 03:24+0000\n" +"PO-Revision-Date: 2011-09-14 02:06+0200\n" +"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n" "Language-Team: Croatian <hr@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<" +"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Language: hr\n" +"X-Generator: Lokalize 1.2\n" + +#: ../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 "NAZIV" + +#. 0 +#: ../cli/src/connections.c:65 ../cli/src/connections.c:79 +msgid "UUID" +msgstr "UUID" + +#. 1 +#: ../cli/src/connections.c:66 +msgid "DEVICES" +msgstr "UREĐAJI" + +#. 2 +#: ../cli/src/connections.c:67 +msgid "DEFAULT" +msgstr "UOBIČAJENO" + +#. 3 +#: ../cli/src/connections.c:68 +#, fuzzy +msgid "SPEC-OBJECT" +msgstr "SPEC-OBJEKT" + +#. 4 +#: ../cli/src/connections.c:69 +msgid "VPN" +msgstr "VPN" + +#. 5 +#. 6 +#. 2 +#. 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-PUTANJA" + +#. 1 +#. 0 +#. 1 +#. 2 +#: ../cli/src/connections.c:80 ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 ../cli/src/devices.c:227 +msgid "TYPE" +msgstr "TIP" + +#. 2 +#: ../cli/src/connections.c:81 +#, fuzzy +msgid "TIMESTAMP" +msgstr "VREMENSKA OZNAKA" + +#. 3 +#: ../cli/src/connections.c:82 +#, fuzzy +msgid "TIMESTAMP-REAL" +msgstr "VREMENSKA OZNAKA-STVARNO" + +#. 4 +#: ../cli/src/connections.c:83 +#, fuzzy +msgid "AUTOCONNECT" +msgstr "AUTOMATSKO SPAJANJE" + +#. 5 +#: ../cli/src/connections.c:84 +#, fuzzy +msgid "READONLY" +msgstr "SAMO ZA ČITANJE" + +#: ../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>]\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" +msgstr "" +"Uporaba: nmcli con { NAREDBA | help }\n" +" COMMAND := { list | status | up | down }\n" +"\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:220 ../cli/src/connections.c:542 +#, c-format +msgid "Error: 'con list': %s" +msgstr "Greška: 'con list': %s" + +#: ../cli/src/connections.c:222 ../cli/src/connections.c:544 +#, c-format +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "Greška: 'con list': %s; dozvoljena polja: %s" + +#: ../cli/src/connections.c:230 +msgid "Connection details" +msgstr "Detalji veze" + +#: ../cli/src/connections.c:417 +msgid "never" +msgstr "nikad" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../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 "da" + +#: ../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:493 +#| msgid "C_onnect" +msgid "Connection list" +msgstr "Lista veza" + +#: ../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 "Greška: nedostaje argument %s." + +#: ../cli/src/connections.c:519 +#, c-format +msgid "Error: %s - no such connection." +msgstr "Greška: %s - veza ne postoji." + +#: ../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 "Nepoznati parametar: %s\n" + +#: ../cli/src/connections.c:534 +#, c-format +msgid "Error: no valid parameter specified." +msgstr "Greška: nije određen važeći parametar." + +#: ../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 "Greška: %s." + +#: ../cli/src/connections.c:637 +#, c-format +msgid "Error: 'con status': %s" +msgstr "Greška: 'con status': %s" + +#: ../cli/src/connections.c:639 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "Greška: 'con status': %s; dozvoljena polja: %s" + +#: ../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 "Greška: Ne mogu otkriti je li NetworkManager pokrenut: %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 "NetworkManager is not running" +msgid "Error: NetworkManager is not running." +msgstr "Greška: NetworkManager nije pokrenut." + +#: ../cli/src/connections.c:659 +#| msgid "Wired network connection" +msgid "Active connections" +msgstr "Aktivne veze" + +#: ../cli/src/connections.c:1095 +#, c-format +msgid "no active connection on device '%s'" +msgstr "nema aktivne veze na uređaju '%s'" + +#: ../cli/src/connections.c:1103 +#, c-format +msgid "no active connection or device" +msgstr "nema aktivne veze ili uređaja" + +#: ../cli/src/connections.c:1174 +#, c-format +msgid "device '%s' not compatible with connection '%s'" +msgstr "uređaj '%s' ne podržava vezu '%s'" + +#: ../cli/src/connections.c:1176 +#, c-format +msgid "no device found for connection '%s'" +msgstr "nije pronađen uređaj za vezu '%s'" + +#: ../cli/src/connections.c:1187 +msgid "activating" +msgstr "aktiviram" + +#: ../cli/src/connections.c:1189 +msgid "activated" +msgstr "aktivirano" + +#: ../cli/src/connections.c:1191 ../cli/src/devices.c:304 +msgid "deactivating" +msgstr "deaktiviram" + +#: ../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 "nepoznato" + +#: ../cli/src/connections.c:1203 +msgid "VPN connecting (prepare)" +msgstr "VPN spajanje (priprema)" + +#: ../cli/src/connections.c:1205 +msgid "VPN connecting (need authentication)" +msgstr "VPN spajanje (potrebna potvrda)" + +#: ../cli/src/connections.c:1207 +#| msgid "No network connection" +msgid "VPN connecting" +msgstr "VPN spajanje" + +#: ../cli/src/connections.c:1209 +msgid "VPN connecting (getting IP configuration)" +msgstr "VPN spajanje (dohvat IP konfiguracije)" + +#: ../cli/src/connections.c:1211 +msgid "VPN connected" +msgstr "VPN spojen" + +#: ../cli/src/connections.c:1213 +msgid "VPN connection failed" +msgstr "VPN spajanje neuspješno" + +#: ../cli/src/connections.c:1215 +msgid "VPN disconnected" +msgstr "VPN odspojen" + +#: ../cli/src/connections.c:1226 +msgid "unknown reason" +msgstr "nepoznat razlog" + +#: ../cli/src/connections.c:1228 +msgid "none" +msgstr "nijedan" + +#: ../cli/src/connections.c:1230 +msgid "the user was disconnected" +msgstr "korisnik je odspojen" + +#: ../cli/src/connections.c:1232 +#| msgid "Wireless network connection" +msgid "the base network connection was interrupted" +msgstr "osnovna mrežna veza je prekinuta" + +#: ../cli/src/connections.c:1234 +msgid "the VPN service stopped unexpectedly" +msgstr "VPN servis je neočekivano zaustavljen" + +#: ../cli/src/connections.c:1236 +msgid "the VPN service returned invalid configuration" +msgstr "VPN servis je vratio nevažeću konfiguraciju" + +#: ../cli/src/connections.c:1238 +msgid "the connection attempt timed out" +msgstr "vrijeme spajanja je prekoračeno" + +#: ../cli/src/connections.c:1240 +msgid "the VPN service did not start in time" +msgstr "VPN servis nije pokrenut pravovremeno" + +#: ../cli/src/connections.c:1242 +msgid "the VPN service failed to start" +msgstr "VPN servis nije pokrenut" + +#: ../cli/src/connections.c:1244 +msgid "no valid VPN secrets" +msgstr "nema važećih VPN tajni" + +#: ../cli/src/connections.c:1246 +msgid "invalid VPN secrets" +msgstr "nevažeće VPN tajne" + +#: ../cli/src/connections.c:1248 +msgid "the connection was removed" +msgstr "veza je uklonjena" + +#: ../cli/src/connections.c:1262 +#, c-format +msgid "state: %s\n" +msgstr "stanje: %s\n" + +#: ../cli/src/connections.c:1265 ../cli/src/connections.c:1291 +#, c-format +msgid "Connection activated\n" +msgstr "Veza aktivirana\n" + +#: ../cli/src/connections.c:1268 +#, c-format +msgid "Error: Connection activation failed." +msgstr "Greška: Aktivacija veze neuspješna." + +#: ../cli/src/connections.c:1287 +#, c-format +msgid "state: %s (%d)\n" +msgstr "stanje: %s (%d)\n" + +#: ../cli/src/connections.c:1297 +#, c-format +msgid "Error: Connection activation failed: %s." +msgstr "Greška: Aktivacija veze neuspješna: %s." + +#: ../cli/src/connections.c:1314 ../cli/src/devices.c:1136 +#, c-format +msgid "Error: Timeout %d sec expired." +msgstr "Greška: Vrijeme spajanja %d sekundi prekoračeno." + +#: ../cli/src/connections.c:1327 +#, c-format +msgid "Error: Connection activation failed: %s" +msgstr "Greška: Aktivacija veze neuspješna: %s" + +#: ../cli/src/connections.c:1333 +#, c-format +msgid "Active connection state: %s\n" +msgstr "Stanje aktivne veze: %s\n" + +#: ../cli/src/connections.c:1334 +#, c-format +msgid "Active connection path: %s\n" +msgstr "Putanja aktivne veze: %s\n" + +#: ../cli/src/connections.c:1386 ../cli/src/connections.c:1527 +#, c-format +msgid "Error: Unknown connection: %s." +msgstr "Greška: Nepoznata veza: %s." + +#: ../cli/src/connections.c:1432 ../cli/src/devices.c:1208 +#, c-format +msgid "Error: timeout value '%s' is not valid." +msgstr "Greška: vrijednost vremena spajanja '%s' nije važeća." + +#: ../cli/src/connections.c:1445 ../cli/src/connections.c:1544 +#, c-format +msgid "Error: id or uuid has to be specified." +msgstr "Greška: id ili uuid mora biti određen." + +#: ../cli/src/connections.c:1473 +#, c-format +msgid "Error: No suitable device found: %s." +msgstr "Greška: Prikladni uređaji nisu pronađeni: %s." + +#: ../cli/src/connections.c:1475 +#, c-format +msgid "Error: No suitable device found." +msgstr "Greška: Prikladni uređaji nisu pronađeni." + +#: ../cli/src/connections.c:1580 +#, c-format +msgid "Warning: Connection not active\n" +msgstr "Upozorenje: Veza nije aktivna\n" + +#: ../cli/src/connections.c:1618 +#, c-format +msgid "Error: 'con' command '%s' is not valid." +msgstr "Greška: 'con' naredba '%s' nije važeća." + +#: ../cli/src/connections.c:1683 +#, c-format +msgid "Error: could not connect to D-Bus." +msgstr "Greška: neuspješno spajanje na D-Bus." + +#: ../cli/src/connections.c:1690 +#, c-format +msgid "Error: Could not get system settings." +msgstr "Greška: Neuspješan dohvat postavki sustava." + +#: ../cli/src/connections.c:1700 +#, c-format +msgid "Error: Can't obtain connections: settings service is not running." +msgstr "Greška: Neuspješan dohvat veza: servis postavki nije pokrenut." + +#. 0 +#. 9 +#. 3 +#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 +msgid "DEVICE" +msgstr "UREĐAJ" + +#. 1 +#. 4 +#. 1 +#: ../cli/src/devices.c:68 ../cli/src/devices.c:106 +#: ../cli/src/network-manager.c:39 +msgid "STATE" +msgstr "STANJE" + +#: ../cli/src/devices.c:78 +msgid "GENERAL" +msgstr "OPĆENITO" + +#. 0 +#: ../cli/src/devices.c:79 +msgid "CAPABILITIES" +msgstr "MOGUĆNOSTI" + +#. 1 +#: ../cli/src/devices.c:80 +msgid "WIFI-PROPERTIES" +msgstr "WIFI-SVOJSTVA" + +#. 2 +#: ../cli/src/devices.c:81 +msgid "AP" +msgstr "AP" + +#. 3 +#: ../cli/src/devices.c:82 +#, fuzzy +msgid "WIRED-PROPERTIES" +msgstr "ŽIČNO-SVOJSTVA" + +#. 4 +#: ../cli/src/devices.c:83 +msgid "WIMAX-PROPERTIES" +msgstr "WIMAX-SVOJSTVA" + +#. 5 +#. 0 +#: ../cli/src/devices.c:84 ../cli/src/devices.c:225 +msgid "NSP" +msgstr "NSP" + +#. 6 +#: ../cli/src/devices.c:85 +msgid "IP4-SETTINGS" +msgstr "IP4-POSTAVKE" + +#. 7 +#: ../cli/src/devices.c:86 +msgid "IP4-DNS" +msgstr "IP4-DNS" + +#. 8 +#: ../cli/src/devices.c:87 +msgid "IP6-SETTINGS" +msgstr "IP6-POSTAVKE" + +#. 9 +#: ../cli/src/devices.c:88 +msgid "IP6-DNS" +msgstr "IP6-DNS" + +#. 2 +#: ../cli/src/devices.c:104 +#, fuzzy +msgid "DRIVER" +msgstr "DRIVER" + +#. 3 +#: ../cli/src/devices.c:105 +#, fuzzy +msgid "HWADDR" +msgstr "HWADDR" + +#. 0 +#: ../cli/src/devices.c:115 +#, fuzzy +msgid "CARRIER-DETECT" +msgstr "OTKRIVANJE-NOSIOCA" + +#. 1 +#: ../cli/src/devices.c:116 +msgid "SPEED" +msgstr "BRZINA" + +#. 0 +#: ../cli/src/devices.c:125 +msgid "CARRIER" +msgstr "NOSIOC" + +#. 0 +#: ../cli/src/devices.c:135 +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:136 +msgid "WPA" +msgstr "WPA" + +#. 2 +#: ../cli/src/devices.c:137 +msgid "WPA2" +msgstr "WPA2" + +#. 3 +#: ../cli/src/devices.c:138 +msgid "TKIP" +msgstr "TKIP" + +#. 4 +#: ../cli/src/devices.c:139 +msgid "CCMP" +msgstr "CCMP" + +#. 0 +#: ../cli/src/devices.c:149 +#, fuzzy +msgid "CTR-FREQ" +msgstr "CTR-FREQ" + +#. 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 +#, fuzzy +msgid "TX-POW" +msgstr "TX-POW" + +#. 4 +#: ../cli/src/devices.c:153 +msgid "BSID" +msgstr "BSID" + +#. 0 +#: ../cli/src/devices.c:163 ../cli/src/devices.c:174 +msgid "ADDRESS" +msgstr "ADRESA" + +#. 1 +#: ../cli/src/devices.c:164 ../cli/src/devices.c:175 +msgid "PREFIX" +msgstr "PREFIKS" + +#. 2 +#: ../cli/src/devices.c:165 ../cli/src/devices.c:176 +#, fuzzy +msgid "GATEWAY" +msgstr "GATEWAY" + +#. 0 +#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:203 +msgid "SSID" +msgstr "SSID" + +#. 1 +#: ../cli/src/devices.c:204 +msgid "BSSID" +msgstr "BSSID" + +#. 2 +#: ../cli/src/devices.c:205 +#, fuzzy +msgid "MODE" +msgstr "NAČIN" + +#. 3 +#: ../cli/src/devices.c:206 +msgid "FREQ" +msgstr "FREKVENCIJA" + +#. 4 +#: ../cli/src/devices.c:207 +msgid "RATE" +msgstr "BRZINA" + +#. 5 +#. 1 +#: ../cli/src/devices.c:208 ../cli/src/devices.c:226 +msgid "SIGNAL" +msgstr "SIGNAL" + +#. 6 +#: ../cli/src/devices.c:209 +msgid "SECURITY" +msgstr "SIGURNOST" + +#. 7 +#: ../cli/src/devices.c:210 +msgid "WPA-FLAGS" +msgstr "WPA-ZASTAVICE" + +#. 8 +#: ../cli/src/devices.c:211 +msgid "RSN-FLAGS" +msgstr "RSN-ZASTAVICE" + +#. 10 +#. 4 +#: ../cli/src/devices.c:213 ../cli/src/devices.c:229 +msgid "ACTIVE" +msgstr "AKTIVAN" + +#: ../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 "" +"Uporaba: nmcli dev { NAREDBA | help }\n" +"\n" +" NAREDBA := { status | list | disconnect | wifi | wimax }\n" +"\n" +" NAREDBA := { 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" + +#: ../cli/src/devices.c:284 +msgid "unmanaged" +msgstr "neupravljan" + +#: ../cli/src/devices.c:286 +msgid "unavailable" +msgstr "nedostupan" + +#: ../cli/src/devices.c:288 ../cli/src/network-manager.c:115 +#| msgid "C_onnect" +msgid "disconnected" +msgstr "odspojen" + +#: ../cli/src/devices.c:290 +msgid "connecting (prepare)" +msgstr "spajanje (priprema)" + +#: ../cli/src/devices.c:292 +msgid "connecting (configuring)" +msgstr "spajanje (konfiguracija)" + +#: ../cli/src/devices.c:294 +msgid "connecting (need authentication)" +msgstr "spajanje (potrebna potvrda)" + +#: ../cli/src/devices.c:296 +msgid "connecting (getting IP configuration)" +msgstr "spajanje (dohvat IP konfiguracije)" + +#: ../cli/src/devices.c:298 +msgid "connecting (checking IP connectivity)" +msgstr "spajanje (provjera IP spojivosti)" + +#: ../cli/src/devices.c:300 +msgid "connecting (starting secondary connections)" +msgstr "spajanje (pokretanje sekundarnih veza)" + +#: ../cli/src/devices.c:302 ../cli/src/network-manager.c:111 +#| msgid "C_onnect" +msgid "connected" +msgstr "spojen" + +#: ../cli/src/devices.c:306 +msgid "connection failed" +msgstr "spajanje neuspješno" + +#: ../cli/src/devices.c:331 ../cli/src/devices.c:341 ../cli/src/devices.c:501 +#: ../cli/src/devices.c:545 +msgid "Unknown" +msgstr "Nepoznat" + +#: ../cli/src/devices.c:374 +msgid "(none)" +msgstr "(nijedan)" + +#: ../cli/src/devices.c:399 +#, c-format +msgid "%s: error converting IP4 address 0x%X" +msgstr "%s: greška pretvorbe IP4 adrese 0x%X" + +#: ../cli/src/devices.c:470 +#, c-format +msgid "%u MHz" +msgstr "%u MHz" + +#: ../cli/src/devices.c:471 +#, c-format +msgid "%u MB/s" +msgstr "%u MB/s" + +#: ../cli/src/devices.c:480 +msgid "Encrypted: " +msgstr "Zaštićeno: " + +#: ../cli/src/devices.c:485 +msgid "WEP " +msgstr "WEP " + +#: ../cli/src/devices.c:487 +msgid "WPA " +msgstr "WPA " + +#: ../cli/src/devices.c:489 +msgid "WPA2 " +msgstr "WPA2 " + +#: ../cli/src/devices.c:492 +msgid "Enterprise " +msgstr "Enterprise " + +#: ../cli/src/devices.c:501 +msgid "Ad-Hoc" +msgstr "Ad-Hoc" + +#: ../cli/src/devices.c:501 +msgid "Infrastructure" +msgstr "Infrastruktura" + +#: ../cli/src/devices.c:536 +msgid "Home" +msgstr "Početna" + +#: ../cli/src/devices.c:539 +msgid "Partner" +msgstr "Partner" + +#: ../cli/src/devices.c:542 +msgid "Roaming" +msgstr "Roaming" + +#: ../cli/src/devices.c:612 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "Greška: 'dev list': %s" + +#: ../cli/src/devices.c:614 +#, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "Greška: 'dev list': %s; dozvoljena polja: %s" + +#: ../cli/src/devices.c:623 +msgid "Device details" +msgstr "Detalji uređaja" + +#: ../cli/src/devices.c:657 ../cli/src/devices.c:1152 ../cli/src/utils.c:342 +msgid "(unknown)" +msgstr "(nepoznat)" + +#: ../cli/src/devices.c:658 +msgid "unknown)" +msgstr "nepoznat)" + +#: ../cli/src/devices.c:684 +#, c-format +msgid "%u Mb/s" +msgstr "%u Mb/s" + +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:757 +msgid "on" +msgstr "uključen" + +#: ../cli/src/devices.c:757 +msgid "off" +msgstr "isključen" + +#: ../cli/src/devices.c:1004 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "Greška: 'dev status': %s" + +#: ../cli/src/devices.c:1006 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "Greška: 'dev status': s; dozvoljena polja: %s" + +#: ../cli/src/devices.c:1029 +msgid "Status of devices" +msgstr "Stanje uređaja" + +#: ../cli/src/devices.c:1060 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "Greška: nedostaje argument '%s'." + +#: ../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 "Greška: Uređaj '%s' nije pronađen." + +#: ../cli/src/devices.c:1124 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "Uspjeh: Uređaj '%s' uspješno odspojen." + +#: ../cli/src/devices.c:1149 +#, c-format +msgid "Error: Device '%s' (%s) disconnecting failed: %s" +msgstr "Greška: Odspajanje uređaja '%s' (%s) neuspješno: %s" + +#: ../cli/src/devices.c:1157 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Stanje uređaja: %d (%s) \n" + +#: ../cli/src/devices.c:1222 +#, c-format +msgid "Error: iface has to be specified." +msgstr "Greška: iface mora biti određen." + +#: ../cli/src/devices.c:1347 +#, c-format +msgid "Error: 'dev wifi': %s" +msgstr "Greška: 'dev wifi': %s" + +#: ../cli/src/devices.c:1349 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "Greška: 'dev wifi': %s; dozvoljena polja: %s" + +#: ../cli/src/devices.c:1372 +msgid "WiFi scan list" +msgstr "WiFi rezultati skeniranja" + +#: ../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 "Greška: Pristupna točka adrese '%s' nije pronađena." + +#: ../cli/src/devices.c:1426 +#, c-format +msgid "Error: Device '%s' is not a WiFi device." +msgstr "Greška: Uređaj '%s' nije WiFi uređaj." + +#: ../cli/src/devices.c:1490 +#, c-format +msgid "Error: 'dev wifi' command '%s' is not valid." +msgstr "Greška: 'dev wifi' naredba '%s' nije važeća." + +#: ../cli/src/devices.c:1566 +#, c-format +msgid "Error: 'dev wimax': %s" +msgstr "Greška: 'dev wimax': %s" + +#: ../cli/src/devices.c:1568 +#, c-format +msgid "Error: 'dev wimax': %s; allowed fields: %s" +msgstr "Greška: 'dev wimax': %s; dozvoljena polja: %s" + +#: ../cli/src/devices.c:1591 +msgid "WiMAX NSP list" +msgstr "WiMAX NSP popis" + +#: ../cli/src/devices.c:1628 +#, c-format +msgid "Error: NSP with name '%s' not found." +msgstr "Greška: NSP imena '%s' nije pronađen." + +#: ../cli/src/devices.c:1639 +#, c-format +msgid "Error: Device '%s' is not a WiMAX device." +msgstr "Greška: Uređaj '%s' nije WiMAX uređaj." + +#: ../cli/src/devices.c:1697 +#, c-format +msgid "Error: 'dev wimax' command '%s' is not valid." +msgstr "Greška: 'dev wimax' naredba '%s' nije važeća." + +#: ../cli/src/devices.c:1747 +#, c-format +msgid "Error: 'dev' command '%s' is not valid." +msgstr "Greška: 'dev' naredba '%s' nije važeća." + +#: ../cli/src/network-manager.c:37 +msgid "RUNNING" +msgstr "POKRENUT" + +#. 0 +#: ../cli/src/network-manager.c:38 +msgid "VERSION" +msgstr "VERZIJA" + +#. 2 +#: ../cli/src/network-manager.c:40 +#, fuzzy +msgid "NET-ENABLED" +msgstr "MREŽA-OMOGUĆENA" + +#. 3 +#: ../cli/src/network-manager.c:41 +#, fuzzy +msgid "WIFI-HARDWARE" +msgstr "WIFI-HARDVER" + +#. 4 +#: ../cli/src/network-manager.c:42 +msgid "WIFI" +msgstr "WIFI" + +#. 5 +#: ../cli/src/network-manager.c:43 +#, fuzzy +msgid "WWAN-HARDWARE" +msgstr "WWAN-HARDVER" + +#. 6 +#: ../cli/src/network-manager.c:44 +msgid "WWAN" +msgstr "WWAN" + +#. 7 +#: ../cli/src/network-manager.c:45 +#, fuzzy +msgid "WIMAX-HARDWARE" +msgstr "WIMAX-HARDVER" + +#. 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" +" enable [true|false]\n" +" sleep [true|false]\n" +" wifi [on|off]\n" +" wwan [on|off]\n" +" wimax [on|off]\n" +"\n" +msgstr "" +"Uporaba: nmcli nm { NAREDBA | help }\n" +"\n" +" NAREDBA := { status | enable | sleep | wifi | wwan | wimax }\n" +"\n" +" NAREDBA := { status | enable | sleep | wifi | wwan }\n" +"\n" +" status\n" +" enable [true|false]\n" +" sleep [true|false]\n" +" wifi [on|off]\n" +" wwan [on|off]\n" +" wimax [on|off]\n" +"\n" + +#: ../cli/src/network-manager.c:103 +#, fuzzy +msgid "asleep" +msgstr "u stanju čekanja" + +#: ../cli/src/network-manager.c:105 +#| msgid "C_onnect" +msgid "connecting" +msgstr "spajanje" + +#: ../cli/src/network-manager.c:107 +msgid "connected (local only)" +msgstr "spojen (lokalna veza)" + +#: ../cli/src/network-manager.c:109 +msgid "connected (site only)" +msgstr "" + +#: ../cli/src/network-manager.c:113 +msgid "disconnecting" +msgstr "odspajanje" + +#: ../cli/src/network-manager.c:153 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "Greška: 'nm status': %s" + +#: ../cli/src/network-manager.c:155 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "Greška: 'nm status': %s; dozvoljena polja: %s" + +#. 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 "omogućen" + +#: ../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 "onemogućen" + +#: ../cli/src/network-manager.c:188 +#| msgid "NetworkManager is not running" +msgid "NetworkManager status" +msgstr "NetworkManager stanje" + +#. Print header +#: ../cli/src/network-manager.c:191 +msgid "running" +msgstr "pokrenut" + +#: ../cli/src/network-manager.c:191 +msgid "not running" +msgstr "nije pokrenut" -#: info-daemon/networks.glade:11 -msgid "Modify Wireless Networks" -msgstr "Postavke bežičnih mreža" +#: ../cli/src/network-manager.c:222 ../cli/src/utils.c:322 +#, c-format +msgid "Error: Couldn't connect to system bus: %s" +msgstr "Greška: Neuspješno spajanje na sabirnicu sustava: %s" + +#: ../cli/src/network-manager.c:233 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "" + +#: ../cli/src/network-manager.c:239 +#, c-format +msgid "Error in sleep: %s" +msgstr "Pogreška u čekanju: %s" -#: info-daemon/networks.glade:92 -msgid "<span weight=\"bold\">Wireless Networks:</span>" -msgstr "<span weight=\"bold\">Bežične mreže:</span>" +#: ../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 "Greška: '--fields' vrijednost '%s' nije važeća; dozvoljena polja: %s" + +#: ../cli/src/network-manager.c:291 +msgid "Networking enabled" +msgstr "Umrežavanje omogućeno" + +#: ../cli/src/network-manager.c:307 +#, c-format +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"Greška: nevažeći 'enable' parametar: '%s'; dozvoljeni su 'true' i 'false'." -#: info-daemon/passphrase.glade:9 -msgid "Wireless Network Key Required" -msgstr "Potreban je ključ bežične mreže" +#: ../cli/src/network-manager.c:317 +#, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "Greška: NetworkManager nije izveo stanje čekanja." + +#: ../cli/src/network-manager.c:325 +#, c-format +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"Greška: nevažeći 'sleep' parametar: '%s'; dozvoljeni su 'true' i 'false'." + +#: ../cli/src/network-manager.c:346 +msgid "WiFi enabled" +msgstr "WiFi omogućen" + +#: ../cli/src/network-manager.c:362 +#, c-format +msgid "Error: invalid 'wifi' parameter: '%s'." +msgstr "Greška: nevažeći 'wifi' parametar: '%s'." + +#: ../cli/src/network-manager.c:384 +msgid "WWAN enabled" +msgstr "WWAN omogućen" + +#: ../cli/src/network-manager.c:400 +#, c-format +msgid "Error: invalid 'wwan' parameter: '%s'." +msgstr "Greška: nevažeći 'wwan' parametar: '%s'." -#: info-daemon/passphrase.glade:52 -msgid "_Login to Network" -msgstr "_Prijava na mrežu" +#: ../cli/src/network-manager.c:423 +msgid "WiMAX enabled" +msgstr "WiMAX omogućen" -#: info-daemon/passphrase.glade:100 +#: ../cli/src/network-manager.c:439 +#, c-format +msgid "Error: invalid 'wimax' parameter: '%s'." +msgstr "Greška: nevažeći 'wimax' parametar: '%s'." + +#: ../cli/src/network-manager.c:452 +#, c-format +msgid "Error: 'nm' command '%s' is not valid." +msgstr "Greška: 'nm' naredba '%s' nije važeća." + +#: ../cli/src/nmcli.c:64 +#, c-format msgid "" -"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless " -"Network</span>\n" +"Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" +"\n" +"OPTIONS\n" +" -t[erse] terse output\n" +" -p[retty] pretty output\n" +" -m[ode] tabular|multiline output mode\n" +" -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" +"OBJECT\n" +" nm NetworkManager status\n" +" con NetworkManager connections\n" +" dev devices managed by NetworkManager\n" "\n" -"A passphrase or encryption key is required to access the wireless network '%" -"s'." msgstr "" -"<span weight=\"bold\" size=\"larger\">Potrebna je lozinka za bežičnu mrežu</" -"span>\n" +"Uporaba: %s [OPCIJE] OBJEKT { NAREDBA | help }\n" +"\n" +"OPCIJE\n" +" -t[erse] sažet ispis\n" +" -p[retty] uljepšan ispis\n" +" -m[ode] tabular|multiline način ispisa\n" +" -f[ields] <field1,field2,...>|all|common određuje polja koja će se " +"ispisati\n" +" -e[scape] yes|no izbacuje razdjelnike stupaca u " +"vrijednostima\n" +" -n[ocheck] bez provjere verzija nmcli i " +"NetworkManagera\n" +" -v[ersion] prikazuje verziju programa\n" +" -h[elp] ispisuje ovu pomoć\n" "\n" -"Za pristup mreži '%s', potrebna je lozinka ili ključ." +"OBJEKT\n" +" nm NetworkManager stanje\n" +" con NetworkManager veze\n" +" dev uređaji kojima upravlja NetworkManager\n" +"\n" + +#: ../cli/src/nmcli.c:109 +#, c-format +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "Greška: Objekt '%s' je nepoznat, pokušajte 'nmcli help'." + +#: ../cli/src/nmcli.c:139 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "Greška: Opcija '--terse' označena dva puta." + +#: ../cli/src/nmcli.c:144 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "Greška: Opcije '--terse' i '--pretty' se međusobno isključuju." + +#: ../cli/src/nmcli.c:152 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "Greška: Opcija '--pretty' označena dva puta." + +#: ../cli/src/nmcli.c:157 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "Greška: Opcije '--pretty' i '--terse' se međusobno isključuju." + +#: ../cli/src/nmcli.c:167 ../cli/src/nmcli.c:183 +#, c-format +msgid "Error: missing argument for '%s' option." +msgstr "Greška: nedostaje argument za opciju '%s'." + +#: ../cli/src/nmcli.c:176 ../cli/src/nmcli.c:192 +#, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "Greška: nevažeći argument '%s' za opciju '%s'." + +#: ../cli/src/nmcli.c:199 +#, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "Greška: nedostaju polja za opciju '%s'." + +#: ../cli/src/nmcli.c:207 +#, c-format +msgid "nmcli tool, version %s\n" +msgstr "nmcli alat, verzija %s\n" + +#: ../cli/src/nmcli.c:213 +#, c-format +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "Greška: Nepoznata opcija '%s', pokušajte 'nmcli -help'." + +#: ../cli/src/nmcli.c:232 +#, c-format +msgid "Caught signal %d, shutting down..." +msgstr "Primljen signal %d, isključujem..." + +#: ../cli/src/nmcli.c:257 +msgid "Error: Could not create NMClient object." +msgstr "Greška: Neuspješno stvaranje NMClient objekta." + +#: ../cli/src/nmcli.c:273 +msgid "Success" +msgstr "Uspjeh" + +#: ../cli/src/settings.c:423 +#, fuzzy, c-format +msgid "%d (hex-ascii-key)" +msgstr "%d (heksadekadski ascii ključ)" + +#: ../cli/src/settings.c:425 +#, c-format +msgid "%d (104/128-bit passphrase)" +msgstr "%d (104/128-bitna lozinka)" + +#: ../cli/src/settings.c:428 +#, c-format +msgid "%d (unknown)" +msgstr "%d (nepoznat)" + +#: ../cli/src/settings.c:454 +msgid "0 (unknown)" +msgstr "0 (nepoznat)" + +#: ../cli/src/settings.c:460 +msgid "any, " +msgstr "bilo koji, " + +#: ../cli/src/settings.c:462 +msgid "900 MHz, " +msgstr "900 MHz, " + +#: ../cli/src/settings.c:464 +msgid "1800 MHz, " +msgstr "1800 MHz, " + +#: ../cli/src/settings.c:466 +msgid "1900 MHz, " +msgstr "1900 MHz, " + +#: ../cli/src/settings.c:468 +msgid "850 MHz, " +msgstr "850 MHz, " + +#: ../cli/src/settings.c:470 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 MHz, " + +#: ../cli/src/settings.c:472 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "WCDMA 3GPP UMTS 1800 MHz, " + +#: ../cli/src/settings.c:474 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " + +#: ../cli/src/settings.c:476 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "WCDMA 3GPP UMTS 800 MHz, " + +#: ../cli/src/settings.c:478 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "WCDMA 3GPP UMTS 850 MHz, " + +#: ../cli/src/settings.c:480 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "WCDMA 3GPP UMTS 900 MHz, " + +#: ../cli/src/settings.c:482 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "WCDMA 3GPP UMTS 1700 MHz, " + +#: ../cli/src/settings.c:566 ../cli/src/settings.c:732 +msgid "auto" +msgstr "automatski" + +#: ../cli/src/settings.c:727 ../cli/src/settings.c:730 +#: ../cli/src/settings.c:731 ../cli/src/utils.c:176 +msgid "not set" +msgstr "nije postavljen" + +#: ../cli/src/utils.c:128 +#, c-format +msgid "field '%s' has to be alone" +msgstr "polje '%s' mora biti samo" + +#: ../cli/src/utils.c:131 +#, c-format +msgid "invalid field '%s'" +msgstr "nevažeće polje '%s'" + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "Opcija '--terse' zahtijeva označavanje '--fields'" + +#: ../cli/src/utils.c:154 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "" +"Opcija '--terse' zahtijeva označene vrijednosti opcije '--fields', a ne '%s'" + +#: ../cli/src/utils.c:333 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" +msgstr "" -#: info-daemon/passphrase.glade:129 panel-applet/essid.glade:246 -msgid "Key Type:" -msgstr "Tip ključa:" +#: ../cli/src/utils.c:341 +#, fuzzy, c-format +msgid "Error: NameHasOwner request failed: %s" +msgstr "Greška: NameHasOwner zahtjev neuspješan: %s" -#: info-daemon/passphrase.glade:150 panel-applet/essid.glade:315 +#: ../cli/src/utils.c:386 +#, c-format msgid "" -"128-bit Passphrase (WEP)\n" -"Ascii Key (WEP)\n" -"Hex Key (WEP)" +"Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --" +"nocheck to suppress the warning.\n" +msgstr "" +"Upozorenje: verzije nmcli (%s) i NetworkManager (%s) se ne podudaraju. " +"Korištenje " +"--nocheck zanemaruje ovo upozorenje.\n" + +#: ../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 "" +"Greška: verzije nmcli (%s) i NetworkManager (%s) se ne podudaraju. Korištenje " +"--nocheck prisiljava izvršavanje, uz moguće neočekivane rezultate.\n." + +#: ../libnm-util/crypto.c:133 +#, c-format +msgid "PEM key file had no end tag '%s'." +msgstr "Datoteka PEM ključa nema završnu oznaku '%s'." + +#: ../libnm-util/crypto.c:146 +#, c-format +msgid "Doesn't look like a PEM private key file." +msgstr "Ne izgleda kao datoteka PEM privatnog ključa." + +#: ../libnm-util/crypto.c:154 +#, c-format +msgid "Not enough memory to store PEM file data." +msgstr "Nedovoljno memorije za spremanje podataka PEM datoteke." + +#: ../libnm-util/crypto.c:170 +#, fuzzy, c-format +msgid "Malformed PEM file: Proc-Type was not first tag." +msgstr "Deformirana PEM datoteka: Proc-Type nije prva oznaka." + +#: ../libnm-util/crypto.c:178 +#, fuzzy, c-format +msgid "Malformed PEM file: unknown Proc-Type tag '%s'." +msgstr "Deformirana PEM datoteka: nepoznata Proc-Type oznaka '%s'." + +#: ../libnm-util/crypto.c:188 +#, fuzzy, c-format +msgid "Malformed PEM file: DEK-Info was not the second tag." +msgstr "Deformirana PEM datoteka: DEK-Info nije druga oznaka." + +#: ../libnm-util/crypto.c:199 +#, fuzzy, c-format +msgid "Malformed PEM file: no IV found in DEK-Info tag." +msgstr "Deformirana PEM datoteka: IV nije pronađen u DEK-Info oznaci." + +#: ../libnm-util/crypto.c:206 +#, fuzzy, c-format +msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." +msgstr "Deformirana PEM datoteka: nevažeći IV oblik u DEK-Info oznaci." + +#: ../libnm-util/crypto.c:219 +#, fuzzy, c-format +msgid "Malformed PEM file: unknown private key cipher '%s'." +msgstr "Deformirana PEM datoteka: nepoznata šifra privatnog ključa '%s'." + +#: ../libnm-util/crypto.c:238 +#, c-format +msgid "Could not decode private key." +msgstr "Neuspješno dekodiranje privatnog ključa." + +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "Neuspješno traženje očekivane PKCS#8 početne oznake." + +#: ../libnm-util/crypto.c:292 +#, c-format +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "Neuspješno traženje očekivane PKCS#8 krajnje oznake '%s'." + +#: ../libnm-util/crypto.c:312 +msgid "Not enough memory to store private key data." +msgstr "Nedovoljno memorije za spremanje podataka privatnog ključa." + +#: ../libnm-util/crypto.c:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "Neuspješno dekodiranje PKCS#8 privatnog ključa." + +#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625 +#, c-format +msgid "Not enough memory to store certificate data." +msgstr "Nedovoljno memorije za spremanje podataka certifikata." + +#: ../libnm-util/crypto.c:365 +#, c-format +msgid "IV must be an even number of bytes in length." +msgstr "IV mora biti dugačak paran broj bajtova." + +#: ../libnm-util/crypto.c:374 +#, c-format +msgid "Not enough memory to store the IV." +msgstr "Nedovoljno memorije za spremanje IV-a." + +#: ../libnm-util/crypto.c:385 +#, c-format +msgid "IV contains non-hexadecimal digits." +msgstr "IV sadrži znamenke koje nisu heksadekadske." + +#: ../libnm-util/crypto.c:423 ../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 "Šifra privatnog ključa '%s' je nepoznata." + +#: ../libnm-util/crypto.c:432 +#, c-format +msgid "Not enough memory to decrypt private key." +msgstr "Nedovoljno memorije za dešifriranje privatnog ključa." + +#: ../libnm-util/crypto.c:497 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Nedovoljno memorije za spremanje dešifriranog privatnog ključa." + +#: ../libnm-util/crypto.c:542 +#, c-format +msgid "Unable to determine private key type." +msgstr "Neuspješno određivanje vrste privatnog ključa." + +#: ../libnm-util/crypto.c:597 +#, c-format +msgid "PEM certificate had no start tag '%s'." +msgstr "PEM certifikat nema početnu oznaku '%s'." + +#: ../libnm-util/crypto.c:606 +#, c-format +msgid "PEM certificate had no end tag '%s'." +msgstr "PEM certifikat nema krajnju oznaku '%s'." + +#: ../libnm-util/crypto.c:630 +#, c-format +msgid "Failed to decode certificate." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:50 +msgid "Failed to initialize the crypto engine." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:92 +#, c-format +msgid "Failed to initialize the MD5 engine: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:155 +#, c-format +msgid "Invalid IV length (must be at least %zd)." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:164 ../libnm-util/crypto_nss.c:184 +#, c-format +msgid "Not enough memory for decrypted key buffer." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:172 +#, c-format +msgid "Failed to initialize the decryption cipher context: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:181 +#, c-format +msgid "Failed to set symmetric key for decryption: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:190 +#, c-format +msgid "Failed to set IV for decryption: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:199 +#, c-format +msgid "Failed to decrypt the private key: %s / %s." +msgstr "" + +#: ../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 "" + +#: ../libnm-util/crypto_gnutls.c:220 ../libnm-util/crypto_nss.c:274 +#, c-format +msgid "Failed to decrypt the private key." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:285 ../libnm-util/crypto_nss.c:352 +#, c-format +msgid "Could not allocate memory for encrypting." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:293 +#, c-format +msgid "Failed to initialize the encryption cipher context: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:302 +#, c-format +msgid "Failed to set symmetric key for encryption: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:312 +#, c-format +msgid "Failed to set IV for encryption: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:321 +#, c-format +msgid "Failed to encrypt the data: %s / %s." +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:361 +#, c-format +msgid "Error initializing certificate data: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:383 +#, c-format +msgid "Couldn't decode certificate: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:407 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:420 +#, c-format +msgid "Couldn't decode PKCS#12 file: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:432 +#, c-format +msgid "Couldn't verify PKCS#12 file: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "" + +#: ../libnm-util/crypto_nss.c:56 +#, c-format +msgid "Failed to initialize the crypto engine: %d." +msgstr "" + +#: ../libnm-util/crypto_nss.c:107 +#, c-format +msgid "Failed to initialize the MD5 context: %d." +msgstr "" + +#: ../libnm-util/crypto_nss.c:175 +#, c-format +msgid "Invalid IV length (must be at least %d)." msgstr "" -"128-bitna lozinka (WEP)\n" -"Slovčani ključ (WEP)\n" -"Heksadecimalni ključ (WEP)" -#: info-daemon/passphrase.glade:181 -#: info-daemon/NetworkManagerInfoPassphraseDialog.c:139 -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:149 -#: panel-applet/essid.glade:270 -msgid "Passphrase:" -msgstr "Lozinka:" +#: ../libnm-util/crypto_nss.c:192 +#, c-format +msgid "Failed to initialize the decryption cipher slot." +msgstr "" -#: info-daemon/passphrase.glade:209 panel-applet/essid.glade:203 -#: panel-applet/essid.glade:300 -msgid "*" -msgstr "*" +#: ../libnm-util/crypto_nss.c:202 +#, c-format +msgid "Failed to set symmetric key for decryption." +msgstr "" + +#: ../libnm-util/crypto_nss.c:212 +#, c-format +msgid "Failed to set IV for decryption." +msgstr "" + +#: ../libnm-util/crypto_nss.c:220 +#, c-format +msgid "Failed to initialize the decryption context." +msgstr "" + +#: ../libnm-util/crypto_nss.c:233 +#, c-format +msgid "Failed to decrypt the private key: %d." +msgstr "" + +#: ../libnm-util/crypto_nss.c:241 +#, c-format +msgid "Failed to decrypt the private key: decrypted data too large." +msgstr "" + +#: ../libnm-util/crypto_nss.c:252 +#, c-format +msgid "Failed to finalize decryption of the private key: %d." +msgstr "" + +#: ../libnm-util/crypto_nss.c:360 +#, c-format +msgid "Failed to initialize the encryption cipher slot." +msgstr "" + +#: ../libnm-util/crypto_nss.c:368 +#, c-format +msgid "Failed to set symmetric key for encryption." +msgstr "" + +#: ../libnm-util/crypto_nss.c:376 +#, c-format +msgid "Failed to set IV for encryption." +msgstr "" + +#: ../libnm-util/crypto_nss.c:384 +#, c-format +msgid "Failed to initialize the encryption context." +msgstr "" + +#: ../libnm-util/crypto_nss.c:392 +#, c-format +msgid "Failed to encrypt: %d." +msgstr "" + +#: ../libnm-util/crypto_nss.c:400 +#, c-format +msgid "Unexpected amount of data after encrypting." +msgstr "" + +#: ../libnm-util/crypto_nss.c:443 +#, c-format +msgid "Couldn't decode certificate: %d" +msgstr "" -#: info-daemon/NetworkManagerInfoPassphraseDialog.c:142 -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:152 -msgid "Ascii Key:" -msgstr "Slovčani ključ" +#: ../libnm-util/crypto_nss.c:478 +#, c-format +msgid "Couldn't convert password to UCS2: %d" +msgstr "" -#: info-daemon/NetworkManagerInfoPassphraseDialog.c:145 -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:155 -msgid "Hex Key:" -msgstr "Heksadecimalni ključ" +#: ../libnm-util/crypto_nss.c:506 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %d" +msgstr "" -#: info-daemon/NetworkManagerInfoVPN.c:157 +#: ../libnm-util/crypto_nss.c:515 #, c-format -msgid "You must log in to access the private network %s" -msgstr "Prijava je potrebna za pristup na mrežu %s" +msgid "Couldn't decode PKCS#12 file: %d" +msgstr "" -#: panel-applet/NMWirelessApplet.c:313 -msgid "No network connection" -msgstr "Nema spoja na mrežu" +#: ../libnm-util/crypto_nss.c:524 +#, c-format +msgid "Couldn't verify PKCS#12 file: %d" +msgstr "" -#: panel-applet/NMWirelessApplet.c:318 -msgid "Wired network connection" -msgstr "Spoj na žičanu mrežu" +#: ../libnm-util/crypto_nss.c:568 +msgid "Could not generate random data." +msgstr "" -#: panel-applet/NMWirelessApplet.c:323 -msgid "Connecting to a wired network..." -msgstr "Spajanje na žičanu mrežu..." +#: ../libnm-util/nm-utils.c:2000 +#, c-format +msgid "Not enough memory to make encryption key." +msgstr "" -#: panel-applet/NMWirelessApplet.c:332 -msgid "Connected to an Ad-Hoc wireless network" -msgstr "Spoj na Ad-Hoc bežičnu mrežu" +#: ../libnm-util/nm-utils.c:2110 +msgid "Could not allocate memory for PEM file creation." +msgstr "" -#: panel-applet/NMWirelessApplet.c:346 +#: ../libnm-util/nm-utils.c:2122 #, c-format -msgid "Wireless network connection to '%s' (%d%%)" -msgstr "Spoj na bežičnu mrežu '%s' (%d%%)" +msgid "Could not allocate memory for writing IV to PEM file." +msgstr "" -#: panel-applet/NMWirelessApplet.c:351 -msgid "Wireless network connection" -msgstr "Spoj na bežičnu mrežu" +#: ../libnm-util/nm-utils.c:2134 +#, c-format +msgid "Could not allocate memory for writing encrypted key to PEM file." +msgstr "" -#: panel-applet/NMWirelessApplet.c:356 +#: ../libnm-util/nm-utils.c:2153 #, c-format -msgid "Connecting to wireless network '%s'..." -msgstr "Spajanje na bežičnu mrežu '%s'..." +msgid "Could not allocate memory for PEM file data." +msgstr "" -#: panel-applet/NMWirelessApplet.c:362 -msgid "NetworkManager is not running" -msgstr "NetworkManager nije pokrenut" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +#| msgid "No network connection" +msgid "Allow control of network connections" +msgstr "Dozvoli upravljanje mrežnim vezama" -#: panel-applet/NMWirelessApplet.c:367 -msgid "Scanning for wireless networks..." -msgstr "Potraga za bežičnim mrežama..." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +#| msgid "Connecting to a wired network..." +msgid "Connection sharing via a protected WiFi network" +msgstr "Dijeljenje veze korištenjem zaštićene WiFi mreže" -#: panel-applet/NMWirelessApplet.c:690 -msgid "Other Wireless Networks..." -msgstr "Ostale bežične mreže..." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +#| msgid "Connecting to a wired network..." +msgid "Connection sharing via an open WiFi network" +msgstr "Dijeljenje veze korištenjem otvorene WiFi mreže" -#: panel-applet/NMWirelessApplet.c:711 -msgid "Create new Wireless Network..." -msgstr "Stvori novu bečičnu mrežu..." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable WiFi devices" +msgstr "Omogućuje ili onemogućuje WiFi uređaje" -#: panel-applet/NMWirelessApplet.c:821 -msgid "No network devices have been found" -msgstr "Nema mrežnih uređaja" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable WiMAX mobile broadband devices" +msgstr "Omogućuje ili onemogućuje WiMAX mobilne širokopojasne uređaje" -#: panel-applet/NMWirelessApplet.c:939 -msgid "NetworkManager is not running..." -msgstr "NetworkManager nije pokrenut..." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "Enable or disable mobile broadband devices" +msgstr "Omogućuje ili onemogućuje mobilne širokopojasne uređaje" -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:228 -msgid "Create new wireless network" -msgstr "Stvori novu bečičnu mrežu" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "Enable or disable system networking" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +#| msgid "No network connection" +msgid "Modify network connections for all users" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "Modify persistent system hostname" +msgstr "" -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:229 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +#| msgid "No network connection" +msgid "Modify personal network connections" +msgstr "" + +#: ../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 "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +#| msgid "Wireless network connection" +msgid "System policy prevents control of network connections" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:13 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:14 msgid "" -"Enter the ESSID and security settings of the wireless network you wish to " -"create." -msgstr "Unesi ESSID i sigurnosne postavke bežične mreže koju treba stvoriti." +"System policy prevents enabling or disabling WiMAX mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:16 +msgid "System policy prevents enabling or disabling system networking" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17 +msgid "System policy prevents modification of network settings for all users" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18 +msgid "System policy prevents modification of personal network settings" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "" -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:234 -msgid "Custom wireless network" -msgstr "Posebna bežična mreža" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21 +msgid "System policy prevents sharing connections via a protected WiFi network" +msgstr "" -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:235 -msgid "Enter the ESSID of the wireless network to which you wish to connect." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22 +msgid "System policy prevents sharing connections via an open WiFi network" msgstr "" -"Unesi ESSID i sigurnosne postavke bežične mreže na koju se treba spojiti." -#. Reuse the above string to make the translators less angry. -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:316 -#: panel-applet/NMWirelessAppletOtherNetworkDialog.c:325 +#: ../src/main.c:530 +#, c-format +msgid "Invalid option. Please use --help to see a list of valid options.\n" +msgstr "Nevažeća opcija. Upišite --help za popis važećih opcija.\n" + +#: ../src/main.c:611 +#, c-format +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "%s. Upišite --help za popis važećih opcija.\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62 +msgid "# Created by NetworkManager\n" +msgstr "# Napravio NetworkManager\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69 +#, c-format msgid "" -"The NetworkManager Applet could not find some required resources (the glade " -"file was not found)." +"# Merged from %s\n" +"\n" msgstr "" -"NetworkManager ne može naći potrebne datoteke (glade datoteka nije " -"pronađena)." +"# Spojeno iz %s\n" +"\n" -#: panel-applet/essid.glade:53 -msgid "C_onnect" -msgstr "_Spoji se" +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "nije pronađen upotrebljiv DHCP klijent." -#: panel-applet/essid.glade:132 -msgid "Wireless _adapter:" -msgstr "Bežični _uređaj:" +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "'dhclient' nije pronađen." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "'dhcpcd' nije pronađen." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "nepodržani DHCP klijent '%s'" + +#: ../src/dns-manager/nm-dns-manager.c:369 +#, fuzzy +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "OPASKA: libc resolver ne podržava više od 3 nameservera" + +#: ../src/dns-manager/nm-dns-manager.c:371 +msgid "The nameservers listed below may not be recognized." +msgstr "" + +#: ../src/logging/nm-logging.c:149 +#, fuzzy, c-format +msgid "Unknown log level '%s'" +msgstr "Nepoznata razina dnevnika '%s'" + +#: ../src/logging/nm-logging.c:174 +#, fuzzy, c-format +msgid "Unknown log domain '%s'" +msgstr "Nepoznata domena dnevnika '%s'" + +#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355 +#, c-format +msgid "CDMA connection %d" +msgstr "CDMA veza %d" + +#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351 +#, c-format +msgid "GSM connection %d" +msgstr "GSM veza %d" + +#: ../src/nm-device-bt.c:326 +#, c-format +#| msgid "No network connection" +msgid "PAN connection %d" +msgstr "PAN veza %d" + +#: ../src/nm-device-bt.c:359 +#, c-format +#| msgid "No network connection" +msgid "DUN connection %d" +msgstr "DUN veza %d" + +#: ../src/nm-device-ethernet.c:1681 +#, c-format +#| msgid "No network connection" +msgid "PPPoE connection %d" +msgstr "PPPoE veza %d" + +#: ../src/nm-device-ethernet.c:1681 ../src/settings/nm-settings-utils.c:50 +#, fuzzy, c-format +#| msgid "Wired network connection" +msgid "Wired connection %d" +msgstr "Spoj na žičanu mrežu %d" + +#: ../src/nm-device-olpc-mesh.c:423 +#, c-format +msgid "Mesh %d" +msgstr "Mreža %d" + +#: ../src/nm-manager.c:673 +#, c-format +#| msgid "No network connection" +msgid "VPN connection %d" +msgstr "VPN veza %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 "" + +#: ../src/nm-netlink-monitor.c:214 +msgid "error occurred while waiting for data on socket" +msgstr "" + +#: ../src/nm-netlink-monitor.c:254 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "" -#: panel-applet/essid.glade:172 -msgid "Wireless _Network:" -msgstr "Bežična _mreža:" +#: ../src/nm-netlink-monitor.c:265 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" -#: panel-applet/essid.glade:337 -msgid "Connect with encryption enabled" -msgstr "Spoji se sa enkripcijom" +#: ../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 "" -#: panel-applet/menu-info.c:109 +#: ../src/nm-netlink-monitor.c:376 #, c-format -msgid "Wired Network (%s)" -msgstr "Žičana mreža (%s)" +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" -#: panel-applet/menu-info.c:111 -msgid "Wired Network" -msgstr "Žičana mreža" +#: ../src/nm-netlink-monitor.c:502 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "" -#: panel-applet/menu-info.c:177 +#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 #, c-format -msgid "Wireless Network (%s)" -msgid_plural "Wireless Networks (%s)" -msgstr[0] "Bežična mreža (%s)" -msgstr[1] "Bežične mreže (%s)" +msgid "error updating link cache: %s" +msgstr "" + +#: ../src/settings/plugins/ifcfg-rh/reader.c:3512 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 +msgid "System" +msgstr "Sustav" + +#~ msgid "Modify Wireless Networks" +#~ msgstr "Postavke bežičnih mreža" + +#~ msgid "<span weight=\"bold\">Wireless Networks:</span>" +#~ msgstr "<span weight=\"bold\">Bežične mreže:</span>" + +#~ msgid "Wireless Network Key Required" +#~ msgstr "Potreban je ključ bežične mreže" + +#~ msgid "_Login to Network" +#~ msgstr "_Prijava na mrežu" + +#~ msgid "" +#~ "<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless " +#~ "Network</span>\n" +#~ "\n" +#~ "A passphrase or encryption key is required to access the wireless network " +#~ "'%s'." +#~ msgstr "" +#~ "<span weight=\"bold\" size=\"larger\">Potrebna je lozinka za bežičnu " +#~ "mrežu</span>\n" +#~ "\n" +#~ "Za pristup mreži '%s', potrebna je lozinka ili ključ." + +#~ msgid "Key Type:" +#~ msgstr "Tip ključa:" + +#~ msgid "" +#~ "128-bit Passphrase (WEP)\n" +#~ "Ascii Key (WEP)\n" +#~ "Hex Key (WEP)" +#~ msgstr "" +#~ "128-bitna lozinka (WEP)\n" +#~ "Slovčani ključ (WEP)\n" +#~ "Heksadecimalni ključ (WEP)" + +#~ msgid "Passphrase:" +#~ msgstr "Lozinka:" + +#~ msgid "*" +#~ msgstr "*" + +#~ msgid "Ascii Key:" +#~ msgstr "Slovčani ključ" + +#~ msgid "Hex Key:" +#~ msgstr "Heksadecimalni ključ" + +#~ msgid "You must log in to access the private network %s" +#~ msgstr "Prijava je potrebna za pristup na mrežu %s" + +#~ msgid "Connected to an Ad-Hoc wireless network" +#~ msgstr "Spoj na Ad-Hoc bežičnu mrežu" + +#~ msgid "Wireless network connection to '%s' (%d%%)" +#~ msgstr "Spoj na bežičnu mrežu '%s' (%d%%)" + +#~ msgid "Connecting to wireless network '%s'..." +#~ msgstr "Spajanje na bežičnu mrežu '%s'..." + +#~ msgid "Scanning for wireless networks..." +#~ msgstr "Potraga za bežičnim mrežama..." + +#~ msgid "Other Wireless Networks..." +#~ msgstr "Ostale bežične mreže..." + +#~ msgid "Create new Wireless Network..." +#~ msgstr "Stvori novu bečičnu mrežu..." + +#~ msgid "No network devices have been found" +#~ msgstr "Nema mrežnih uređaja" + +#~ msgid "NetworkManager is not running..." +#~ msgstr "NetworkManager nije pokrenut..." + +#~ msgid "Create new wireless network" +#~ msgstr "Stvori novu bečičnu mrežu" + +#~ msgid "" +#~ "Enter the ESSID and security settings of the wireless network you wish to " +#~ "create." +#~ msgstr "" +#~ "Unesi ESSID i sigurnosne postavke bežične mreže koju treba stvoriti." + +#~ msgid "Custom wireless network" +#~ msgstr "Posebna bežična mreža" + +#~ msgid "" +#~ "Enter the ESSID of the wireless network to which you wish to connect." +#~ msgstr "" +#~ "Unesi ESSID i sigurnosne postavke bežične mreže na koju se treba spojiti." + +#~ msgid "" +#~ "The NetworkManager Applet could not find some required resources (the " +#~ "glade file was not found)." +#~ msgstr "" +#~ "NetworkManager ne može naći potrebne datoteke (glade datoteka nije " +#~ "pronađena)." + +#~ msgid "Wireless _adapter:" +#~ msgstr "Bežični _uređaj:" + +#~ msgid "Wireless _Network:" +#~ msgstr "Bežična _mreža:" + +#~ msgid "Connect with encryption enabled" +#~ msgstr "Spoji se sa enkripcijom" + +#~ msgid "Wired Network (%s)" +#~ msgstr "Žičana mreža (%s)" + +#~ msgid "Wired Network" +#~ msgstr "Žičana mreža" + +#~ msgid "Wireless Network (%s)" +#~ msgid_plural "Wireless Networks (%s)" +#~ msgstr[0] "Bežična mreža (%s)" +#~ msgstr[1] "Bežične mreže (%s)" -#: panel-applet/menu-info.c:179 -msgid "Wireless Network" -msgid_plural "Wireless Networks" -msgstr[0] "Bežična mreža" -msgstr[1] "Bežične mreže" +#~ msgid "Wireless Network" +#~ msgid_plural "Wireless Networks" +#~ msgstr[0] "Bežična mreža" +#~ msgstr[1] "Bežične mreže" -#: panel-applet/menu-info.c:316 -msgid " (invalid Unicode)" -msgstr " (greška u unicodu)" +#~ msgid " (invalid Unicode)" +#~ msgstr " (greška u unicodu)" -#: examples/python/systray/eggtrayicon.c:111 -msgid "Orientation" -msgstr "Orjentacija" +#~ msgid "Orientation" +#~ msgstr "Orjentacija" -#: examples/python/systray/eggtrayicon.c:112 -msgid "The orientation of the tray." -msgstr "Orjentacija ladice." +#~ msgid "The orientation of the tray." +#~ msgstr "Orjentacija ladice." diff --git a/po/pl.po b/po/pl.po index ceb85738..7aeb3733 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,50 +8,50 @@ msgid "" msgstr "" "Project-Id-Version: NetworkManager\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=NetworkManager&component=general\n" -"POT-Creation-Date: 2011-03-10 15:25+0000\n" -"PO-Revision-Date: 2011-03-10 17:07+0100\n" +"product=NetworkManager&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-09-24 03:25+0000\n" +"PO-Revision-Date: 2011-09-28 21:47+0200\n" "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" "Language-Team: Polish <gnomepl@aviary.pl>\n" -"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" +"Language: pl\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "X-Poedit-Language: Polish\n" "X-Poedit-Country: Poland\n" -#: ../cli/src/connections.c:62 ../cli/src/connections.c:76 -#: ../cli/src/devices.c:99 ../cli/src/devices.c:112 ../cli/src/devices.c:122 -#: ../cli/src/devices.c:132 ../cli/src/devices.c:146 ../cli/src/devices.c:160 -#: ../cli/src/devices.c:171 ../cli/src/devices.c:182 ../cli/src/devices.c:191 -#: ../cli/src/devices.c:200 ../cli/src/devices.c:222 +#: ../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 "NAZWA" #. 0 -#: ../cli/src/connections.c:63 ../cli/src/connections.c:77 +#: ../cli/src/connections.c:65 ../cli/src/connections.c:79 msgid "UUID" msgstr "UUID" #. 1 -#: ../cli/src/connections.c:64 +#: ../cli/src/connections.c:66 msgid "DEVICES" msgstr "URZĄDZENIA" #. 2 -#: ../cli/src/connections.c:65 +#: ../cli/src/connections.c:67 msgid "DEFAULT" msgstr "DOMYŚLNE" #. 3 -#: ../cli/src/connections.c:66 +#: ../cli/src/connections.c:68 msgid "SPEC-OBJECT" msgstr "KONKRETNY-OBIEKT" #. 4 -#: ../cli/src/connections.c:67 +#: ../cli/src/connections.c:69 msgid "VPN" msgstr "VPN" @@ -60,8 +60,8 @@ msgstr "VPN" #. 2 #. 11 #. 5 -#: ../cli/src/connections.c:68 ../cli/src/connections.c:83 -#: ../cli/src/devices.c:67 ../cli/src/devices.c:212 ../cli/src/devices.c:228 +#: ../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 "ŚCIEŻKA-DO-DBUS" @@ -69,397 +69,406 @@ msgstr "ŚCIEŻKA-DO-DBUS" #. 0 #. 1 #. 2 -#: ../cli/src/connections.c:78 ../cli/src/devices.c:65 -#: ../cli/src/devices.c:101 ../cli/src/devices.c:225 +#: ../cli/src/connections.c:80 ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 ../cli/src/devices.c:227 msgid "TYPE" msgstr "TYP" #. 2 -#: ../cli/src/connections.c:79 +#: ../cli/src/connections.c:81 msgid "TIMESTAMP" msgstr "OKRES-CZASU" #. 3 -#: ../cli/src/connections.c:80 +#: ../cli/src/connections.c:82 msgid "TIMESTAMP-REAL" msgstr "RZECZYWISTY-OKRES-CZASU" #. 4 -#: ../cli/src/connections.c:81 +#: ../cli/src/connections.c:83 msgid "AUTOCONNECT" msgstr "ŁĄCZENIE-AUTOMATYCZNE" #. 5 -#: ../cli/src/connections.c:82 +#: ../cli/src/connections.c:84 msgid "READONLY" msgstr "TYLKO-DO-ODCZYTU" -#: ../cli/src/connections.c:166 +#: ../cli/src/connections.c:153 #, c-format msgid "" "Usage: nmcli con { COMMAND | help }\n" -" COMMAND := { list | status | up | down }\n" +" COMMAND := { list | status | up | down | delete }\n" "\n" " list [id <id> | uuid <id>]\n" " status\n" -" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [nsp <name>] [--" +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [nsp <name>] [--" "nowait] [--timeout <timeout>]\n" -" up id <id> | uuid <id> [iface <iface>] [ap <hwaddr>] [--nowait] [--timeout " +" up id <id> | uuid <id> [iface <iface>] [ap <BSSID>] [--nowait] [--timeout " "<timeout>]\n" " down id <id> | uuid <id>\n" +" delete id <id> | uuid <id>\n" msgstr "" "Użycie: nmcli con { POLECENIE | help }\n" -" POLECENIE := { list | status | up | down }\n" +" POLECENIE := { list | status | up | down | delete }\n" "\n" " list [id <identyfikator> | uuid <identyfikator>]\n" " status\n" " up id <identyfikator> | uuid <identyfikator> [iface <interfejs>] [ap " -"<adres_sprzętowy>] [nsp <nazwa>] [--nowait] [--timeout <czas>]\n" +"<BSSID>] [nsp <nazwa>] [--nowait] [--timeout <czas>]\n" " up id <identyfikator> | uuid <identyfikator> [iface <interfejs>] [ap " -"<adres_sprzętowy>] [--nowait] [--timeout <timeout>]\n" +"<BSSID>] [--nowait] [--timeout <timeout>]\n" " down id <identyfikator> | uuid <identyfikator>\n" +" delete id <identyfikator> | uuid <identyfikator>\n" -#: ../cli/src/connections.c:219 ../cli/src/connections.c:541 +#: ../cli/src/connections.c:208 ../cli/src/connections.c:532 #, c-format msgid "Error: 'con list': %s" msgstr "Błąd: \"con list\": %s" -#: ../cli/src/connections.c:221 ../cli/src/connections.c:543 +#: ../cli/src/connections.c:210 ../cli/src/connections.c:534 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Błąd: \"con list\": %s; dozwolone pola: %s" -#: ../cli/src/connections.c:229 +#: ../cli/src/connections.c:218 msgid "Connection details" msgstr "Szczegóły połączenia" -#: ../cli/src/connections.c:416 +#: ../cli/src/connections.c:407 msgid "never" msgstr "nigdy" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../cli/src/connections.c:417 ../cli/src/connections.c:418 -#: ../cli/src/connections.c:596 ../cli/src/connections.c:598 -#: ../cli/src/devices.c:507 ../cli/src/devices.c:560 ../cli/src/devices.c:685 -#: ../cli/src/devices.c:711 ../cli/src/devices.c:712 ../cli/src/devices.c:713 -#: ../cli/src/devices.c:714 ../cli/src/devices.c:715 ../cli/src/settings.c:518 -#: ../cli/src/settings.c:561 ../cli/src/settings.c:661 -#: ../cli/src/settings.c:935 ../cli/src/settings.c:936 -#: ../cli/src/settings.c:938 ../cli/src/settings.c:940 -#: ../cli/src/settings.c:1065 ../cli/src/settings.c:1066 -#: ../cli/src/settings.c:1067 ../cli/src/settings.c:1146 -#: ../cli/src/settings.c:1147 ../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:1233 +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:632 ../cli/src/settings.c:753 +#: ../cli/src/settings.c:1041 ../cli/src/settings.c:1042 +#: ../cli/src/settings.c:1044 ../cli/src/settings.c:1046 +#: ../cli/src/settings.c:1047 ../cli/src/settings.c:1177 +#: ../cli/src/settings.c:1178 ../cli/src/settings.c:1179 +#: ../cli/src/settings.c:1180 ../cli/src/settings.c:1259 +#: ../cli/src/settings.c:1260 ../cli/src/settings.c:1261 +#: ../cli/src/settings.c:1262 ../cli/src/settings.c:1263 +#: ../cli/src/settings.c:1264 ../cli/src/settings.c:1265 +#: ../cli/src/settings.c:1266 ../cli/src/settings.c:1267 +#: ../cli/src/settings.c:1268 ../cli/src/settings.c:1269 +#: ../cli/src/settings.c:1270 ../cli/src/settings.c:1271 +#: ../cli/src/settings.c:1346 msgid "yes" msgstr "tak" -#: ../cli/src/connections.c:417 ../cli/src/connections.c:418 -#: ../cli/src/connections.c:596 ../cli/src/connections.c:598 -#: ../cli/src/devices.c:507 ../cli/src/devices.c:560 ../cli/src/devices.c:685 -#: ../cli/src/devices.c:711 ../cli/src/devices.c:712 ../cli/src/devices.c:713 -#: ../cli/src/devices.c:714 ../cli/src/devices.c:715 ../cli/src/settings.c:518 -#: ../cli/src/settings.c:520 ../cli/src/settings.c:561 -#: ../cli/src/settings.c:661 ../cli/src/settings.c:935 -#: ../cli/src/settings.c:936 ../cli/src/settings.c:938 -#: ../cli/src/settings.c:940 ../cli/src/settings.c:1065 -#: ../cli/src/settings.c:1066 ../cli/src/settings.c:1067 -#: ../cli/src/settings.c:1146 ../cli/src/settings.c:1147 -#: ../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:1233 +#: ../cli/src/connections.c:408 ../cli/src/connections.c:409 +#: ../cli/src/connections.c:587 ../cli/src/connections.c:589 +#: ../cli/src/devices.c:499 ../cli/src/devices.c:552 ../cli/src/devices.c:677 +#: ../cli/src/devices.c:703 ../cli/src/devices.c:704 ../cli/src/devices.c:705 +#: ../cli/src/devices.c:706 ../cli/src/devices.c:707 ../cli/src/settings.c:560 +#: ../cli/src/settings.c:562 ../cli/src/settings.c:632 +#: ../cli/src/settings.c:753 ../cli/src/settings.c:1041 +#: ../cli/src/settings.c:1042 ../cli/src/settings.c:1044 +#: ../cli/src/settings.c:1046 ../cli/src/settings.c:1047 +#: ../cli/src/settings.c:1177 ../cli/src/settings.c:1178 +#: ../cli/src/settings.c:1179 ../cli/src/settings.c:1180 +#: ../cli/src/settings.c:1259 ../cli/src/settings.c:1260 +#: ../cli/src/settings.c:1261 ../cli/src/settings.c:1262 +#: ../cli/src/settings.c:1263 ../cli/src/settings.c:1264 +#: ../cli/src/settings.c:1265 ../cli/src/settings.c:1266 +#: ../cli/src/settings.c:1267 ../cli/src/settings.c:1268 +#: ../cli/src/settings.c:1269 ../cli/src/settings.c:1270 +#: ../cli/src/settings.c:1271 ../cli/src/settings.c:1346 msgid "no" msgstr "nie" -#: ../cli/src/connections.c:492 +#: ../cli/src/connections.c:483 msgid "Connection list" msgstr "Lista połączeń" -#: ../cli/src/connections.c:505 ../cli/src/connections.c:1457 -#: ../cli/src/connections.c:1472 ../cli/src/connections.c:1481 -#: ../cli/src/connections.c:1491 ../cli/src/connections.c:1503 -#: ../cli/src/connections.c:1598 ../cli/src/devices.c:1188 -#: ../cli/src/devices.c:1198 ../cli/src/devices.c:1312 -#: ../cli/src/devices.c:1319 ../cli/src/devices.c:1532 -#: ../cli/src/devices.c:1539 +#: ../cli/src/connections.c:496 ../cli/src/connections.c:1356 +#: ../cli/src/connections.c:1371 ../cli/src/connections.c:1380 +#: ../cli/src/connections.c:1390 ../cli/src/connections.c:1402 +#: ../cli/src/connections.c:1497 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1180 ../cli/src/devices.c:1190 +#: ../cli/src/devices.c:1304 ../cli/src/devices.c:1312 +#: ../cli/src/devices.c:1525 ../cli/src/devices.c:1532 #, c-format msgid "Error: %s argument is missing." msgstr "Błąd: brak parametru %s." -#: ../cli/src/connections.c:518 +#: ../cli/src/connections.c:509 #, c-format msgid "Error: %s - no such connection." msgstr "Błąd: %s - nie ma takiego połączenia." -#: ../cli/src/connections.c:524 ../cli/src/connections.c:1516 -#: ../cli/src/connections.c:1615 ../cli/src/devices.c:985 -#: ../cli/src/devices.c:1065 ../cli/src/devices.c:1212 -#: ../cli/src/devices.c:1325 ../cli/src/devices.c:1545 +#: ../cli/src/connections.c:515 ../cli/src/connections.c:1415 +#: ../cli/src/connections.c:1514 ../cli/src/connections.c:1587 +#: ../cli/src/devices.c:977 ../cli/src/devices.c:1057 +#: ../cli/src/devices.c:1204 ../cli/src/devices.c:1318 +#: ../cli/src/devices.c:1538 #, c-format msgid "Unknown parameter: %s\n" msgstr "Nieznany parametr: %s\n" -#: ../cli/src/connections.c:533 +#: ../cli/src/connections.c:524 #, c-format msgid "Error: no valid parameter specified." msgstr "Błąd: nie podano prawidłowego parametru." -#: ../cli/src/connections.c:548 ../cli/src/connections.c:1706 -#: ../cli/src/devices.c:1753 ../cli/src/network-manager.c:461 +#: ../cli/src/connections.c:539 ../cli/src/connections.c:1668 +#: ../cli/src/devices.c:1746 ../cli/src/network-manager.c:456 #, c-format msgid "Error: %s." msgstr "Błąd: %s." -#: ../cli/src/connections.c:636 +#: ../cli/src/connections.c:627 #, c-format msgid "Error: 'con status': %s" msgstr "Błąd: \"con status\": %s" -#: ../cli/src/connections.c:638 +#: ../cli/src/connections.c:629 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Błąd: \"con status\": %s; dozwolone pola: %s" -#: ../cli/src/connections.c:646 ../cli/src/connections.c:1531 -#: ../cli/src/connections.c:1630 ../cli/src/devices.c:1012 -#: ../cli/src/devices.c:1074 ../cli/src/devices.c:1227 -#: ../cli/src/devices.c:1355 ../cli/src/devices.c:1574 +#: ../cli/src/connections.c:637 ../cli/src/connections.c:1430 +#: ../cli/src/connections.c:1529 ../cli/src/connections.c:1601 +#: ../cli/src/devices.c:1004 ../cli/src/devices.c:1066 +#: ../cli/src/devices.c:1219 ../cli/src/devices.c:1348 +#: ../cli/src/devices.c:1567 #, c-format msgid "Error: Can't find out if NetworkManager is running: %s." msgstr "" "Błąd: nie można ustalić, czy usługa NetworkManager jest uruchomiona: %s." -#: ../cli/src/connections.c:650 ../cli/src/connections.c:1535 -#: ../cli/src/connections.c:1634 ../cli/src/devices.c:1016 -#: ../cli/src/devices.c:1078 ../cli/src/devices.c:1231 -#: ../cli/src/devices.c:1359 ../cli/src/devices.c:1578 +#: ../cli/src/connections.c:641 ../cli/src/connections.c:1434 +#: ../cli/src/connections.c:1533 ../cli/src/connections.c:1605 +#: ../cli/src/devices.c:1008 ../cli/src/devices.c:1070 +#: ../cli/src/devices.c:1223 ../cli/src/devices.c:1352 +#: ../cli/src/devices.c:1571 #, c-format msgid "Error: NetworkManager is not running." msgstr "Błąd: usługa NetworkManager nie jest uruchomiona." -#: ../cli/src/connections.c:658 +#: ../cli/src/connections.c:649 msgid "Active connections" msgstr "Aktywne połączenia" -#: ../cli/src/connections.c:1128 +#: ../cli/src/connections.c:1073 #, c-format msgid "no active connection on device '%s'" msgstr "brak aktywnych połączeń na urządzeniu \"%s\"" -#: ../cli/src/connections.c:1136 +#: ../cli/src/connections.c:1081 #, c-format msgid "no active connection or device" msgstr "brak aktywnych połączeń na urządzeń" -#: ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1152 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "urządzenie \"%s\" nie jest zgodne z połączeniem \"%s\"" -#: ../cli/src/connections.c:1209 +#: ../cli/src/connections.c:1154 #, c-format msgid "no device found for connection '%s'" msgstr "nie odnaleziono urządzenia dla połączenia \"%s\"" -#: ../cli/src/connections.c:1220 +#: ../cli/src/connections.c:1165 msgid "activating" msgstr "aktywowanie" -#: ../cli/src/connections.c:1222 +#: ../cli/src/connections.c:1167 msgid "activated" msgstr "aktywowano" -#: ../cli/src/connections.c:1225 ../cli/src/connections.c:1248 -#: ../cli/src/connections.c:1281 ../cli/src/devices.c:306 -#: ../cli/src/devices.c:686 ../cli/src/network-manager.c:116 -#: ../cli/src/network-manager.c:178 ../cli/src/network-manager.c:181 -#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:351 -#: ../cli/src/network-manager.c:389 ../cli/src/network-manager.c:428 -#: ../cli/src/settings.c:483 ../cli/src/utils.c:396 +#: ../cli/src/connections.c:1169 ../cli/src/devices.c:294 +msgid "deactivating" +msgstr "deaktywowanie" + +#: ../cli/src/connections.c:1172 ../cli/src/connections.c:1195 +#: ../cli/src/connections.c:1228 ../cli/src/devices.c:298 +#: ../cli/src/devices.c:678 ../cli/src/network-manager.c:111 +#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:176 +#: ../cli/src/network-manager.c:185 ../cli/src/network-manager.c:291 +#: ../cli/src/network-manager.c:346 ../cli/src/network-manager.c:384 +#: ../cli/src/network-manager.c:423 ../cli/src/settings.c:513 +#: ../cli/src/utils.c:397 msgid "unknown" msgstr "nieznane" -#: ../cli/src/connections.c:1234 +#: ../cli/src/connections.c:1181 msgid "VPN connecting (prepare)" msgstr "Łączenie z VPN (przygotowanie)" -#: ../cli/src/connections.c:1236 +#: ../cli/src/connections.c:1183 msgid "VPN connecting (need authentication)" msgstr "Łączenie z VPN (wymaga uwierzytelnienia)" -#: ../cli/src/connections.c:1238 +#: ../cli/src/connections.c:1185 msgid "VPN connecting" msgstr "Łączenie z VPN" -#: ../cli/src/connections.c:1240 +#: ../cli/src/connections.c:1187 msgid "VPN connecting (getting IP configuration)" msgstr "Łączenie z VPN (pobieranie konfiguracji adresu IP)" -#: ../cli/src/connections.c:1242 +#: ../cli/src/connections.c:1189 msgid "VPN connected" msgstr "Połączono z VPN" -#: ../cli/src/connections.c:1244 +#: ../cli/src/connections.c:1191 msgid "VPN connection failed" msgstr "Połączenie z VPN się nie powiodło" -#: ../cli/src/connections.c:1246 +#: ../cli/src/connections.c:1193 msgid "VPN disconnected" msgstr "Rozłączono z VPN" -#: ../cli/src/connections.c:1257 +#: ../cli/src/connections.c:1204 msgid "unknown reason" msgstr "nieznany powód" -#: ../cli/src/connections.c:1259 +#: ../cli/src/connections.c:1206 msgid "none" msgstr "brak" -#: ../cli/src/connections.c:1261 +#: ../cli/src/connections.c:1208 msgid "the user was disconnected" msgstr "użytkownik został rozłączony" -#: ../cli/src/connections.c:1263 +#: ../cli/src/connections.c:1210 msgid "the base network connection was interrupted" msgstr "podstawowe połączenie sieciowe zostało przerwane" -#: ../cli/src/connections.c:1265 +#: ../cli/src/connections.c:1212 msgid "the VPN service stopped unexpectedly" msgstr "usługa VPN została nieoczekiwanie zatrzymana" -#: ../cli/src/connections.c:1267 +#: ../cli/src/connections.c:1214 msgid "the VPN service returned invalid configuration" msgstr "usługa VPN zwróciła nieprawidłową konfigurację" -#: ../cli/src/connections.c:1269 +#: ../cli/src/connections.c:1216 msgid "the connection attempt timed out" msgstr "próba połączenia przekroczyła czas oczekiwania" -#: ../cli/src/connections.c:1271 +#: ../cli/src/connections.c:1218 msgid "the VPN service did not start in time" msgstr "usługa VPN nie została uruchomiona w czasie" -#: ../cli/src/connections.c:1273 +#: ../cli/src/connections.c:1220 msgid "the VPN service failed to start" msgstr "uruchomienie usługi VPN się nie powiodło" -#: ../cli/src/connections.c:1275 +#: ../cli/src/connections.c:1222 msgid "no valid VPN secrets" msgstr "brak prawidłowych haseł VPN" -#: ../cli/src/connections.c:1277 +#: ../cli/src/connections.c:1224 msgid "invalid VPN secrets" msgstr "nieprawidłowe hasła VPN" -#: ../cli/src/connections.c:1279 +#: ../cli/src/connections.c:1226 msgid "the connection was removed" msgstr "połączenie zostało usunięte" -#: ../cli/src/connections.c:1293 +#: ../cli/src/connections.c:1240 #, c-format msgid "state: %s\n" msgstr "stan: %s\n" -#: ../cli/src/connections.c:1296 ../cli/src/connections.c:1322 +#: ../cli/src/connections.c:1243 ../cli/src/connections.c:1269 #, c-format msgid "Connection activated\n" msgstr "Aktywowano połączenie\n" -#: ../cli/src/connections.c:1299 +#: ../cli/src/connections.c:1246 #, c-format msgid "Error: Connection activation failed." msgstr "Błąd: aktywacja połączenia się nie powiodła." -#: ../cli/src/connections.c:1318 +#: ../cli/src/connections.c:1265 #, c-format msgid "state: %s (%d)\n" msgstr "stan: %s (%d)\n" -#: ../cli/src/connections.c:1328 +#: ../cli/src/connections.c:1275 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Błąd: aktywacja połączenia się nie powiodła: %s." -#: ../cli/src/connections.c:1345 ../cli/src/devices.c:1134 +#: ../cli/src/connections.c:1292 ../cli/src/devices.c:1126 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Błąd: przekroczono czas oczekiwania o %d sekund." -#: ../cli/src/connections.c:1388 +#: ../cli/src/connections.c:1305 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Błąd: aktywacja połączenia się nie powiodła: %s" -#: ../cli/src/connections.c:1402 -#, c-format -msgid "Error: Obtaining active connection for '%s' failed." -msgstr "Błąd: uzyskanie aktywnego połączenia dla \"%s\" się nie powiodło." - -#: ../cli/src/connections.c:1411 +#: ../cli/src/connections.c:1311 #, c-format msgid "Active connection state: %s\n" msgstr "Stan aktywnego połączenia: %s\n" -#: ../cli/src/connections.c:1412 +#: ../cli/src/connections.c:1312 #, c-format msgid "Active connection path: %s\n" msgstr "Ścieżka aktywnego połączenia: %s\n" -#: ../cli/src/connections.c:1465 ../cli/src/connections.c:1606 +#: ../cli/src/connections.c:1364 ../cli/src/connections.c:1505 +#: ../cli/src/connections.c:1614 #, c-format msgid "Error: Unknown connection: %s." msgstr "Błąd: nieznane połączenie: %s." -#: ../cli/src/connections.c:1511 ../cli/src/devices.c:1206 +#: ../cli/src/connections.c:1410 ../cli/src/devices.c:1198 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Błąd: wartość czasu oczekiwania \"%s\" jest nieprawidłowa." -#: ../cli/src/connections.c:1524 ../cli/src/connections.c:1623 +#: ../cli/src/connections.c:1423 ../cli/src/connections.c:1522 +#: ../cli/src/connections.c:1594 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Błąd: należy podać identyfikator lub UUID." -#: ../cli/src/connections.c:1554 +#: ../cli/src/connections.c:1451 #, c-format msgid "Error: No suitable device found: %s." msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia: %s" -#: ../cli/src/connections.c:1556 +#: ../cli/src/connections.c:1453 #, c-format msgid "Error: No suitable device found." msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia." -#: ../cli/src/connections.c:1659 +#: ../cli/src/connections.c:1558 #, c-format msgid "Warning: Connection not active\n" msgstr "Ostrzeżenie: połączenie nie jest aktywne\n" -#: ../cli/src/connections.c:1697 +#: ../cli/src/connections.c:1659 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Błąd: polecenie \"con\" \"%s\" jest nieprawidłowe." -#: ../cli/src/connections.c:1762 +#: ../cli/src/connections.c:1724 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Błąd: nie można połączyć się z D-Bus." -#: ../cli/src/connections.c:1769 +#: ../cli/src/connections.c:1732 #, c-format msgid "Error: Could not get system settings." msgstr "Błąd: nie można uzyskać ustawień systemu." -#: ../cli/src/connections.c:1779 +#: ../cli/src/connections.c:1742 #, c-format msgid "Error: Can't obtain connections: settings service is not running." msgstr "" @@ -468,222 +477,222 @@ msgstr "" #. 0 #. 9 #. 3 -#: ../cli/src/devices.c:64 ../cli/src/devices.c:100 ../cli/src/devices.c:210 -#: ../cli/src/devices.c:226 +#: ../cli/src/devices.c:66 ../cli/src/devices.c:102 ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 msgid "DEVICE" msgstr "URZĄDZENIE" #. 1 #. 4 #. 1 -#: ../cli/src/devices.c:66 ../cli/src/devices.c:104 -#: ../cli/src/network-manager.c:37 +#: ../cli/src/devices.c:68 ../cli/src/devices.c:106 +#: ../cli/src/network-manager.c:39 msgid "STATE" msgstr "STAN" -#: ../cli/src/devices.c:76 +#: ../cli/src/devices.c:78 msgid "GENERAL" msgstr "OGÓLNE" #. 0 -#: ../cli/src/devices.c:77 +#: ../cli/src/devices.c:79 msgid "CAPABILITIES" msgstr "MOŻLIWOŚCI" #. 1 -#: ../cli/src/devices.c:78 +#: ../cli/src/devices.c:80 msgid "WIFI-PROPERTIES" msgstr "WŁAŚCIWOŚCI-WIFI" #. 2 -#: ../cli/src/devices.c:79 +#: ../cli/src/devices.c:81 msgid "AP" msgstr "PUNKT-DOSTĘPOWY" #. 3 -#: ../cli/src/devices.c:80 +#: ../cli/src/devices.c:82 msgid "WIRED-PROPERTIES" msgstr "WŁAŚCIWOŚCI-POŁĄCZENIA-PRZEWODOWEGO" #. 4 -#: ../cli/src/devices.c:81 +#: ../cli/src/devices.c:83 msgid "WIMAX-PROPERTIES" msgstr "WŁAŚCIWOŚCI-WIMAX" #. 5 #. 0 -#: ../cli/src/devices.c:82 ../cli/src/devices.c:223 +#: ../cli/src/devices.c:84 ../cli/src/devices.c:225 msgid "NSP" msgstr "NSP" #. 6 -#: ../cli/src/devices.c:83 +#: ../cli/src/devices.c:85 msgid "IP4-SETTINGS" msgstr "USTAWIENIA-IP4" #. 7 -#: ../cli/src/devices.c:84 +#: ../cli/src/devices.c:86 msgid "IP4-DNS" msgstr "IP4-DNS" #. 8 -#: ../cli/src/devices.c:85 +#: ../cli/src/devices.c:87 msgid "IP6-SETTINGS" msgstr "USTAWIENIA-IP6" #. 9 -#: ../cli/src/devices.c:86 +#: ../cli/src/devices.c:88 msgid "IP6-DNS" msgstr "IP6-DNS" #. 2 -#: ../cli/src/devices.c:102 +#: ../cli/src/devices.c:104 msgid "DRIVER" msgstr "STEROWNIK" #. 3 -#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:105 msgid "HWADDR" msgstr "ADRES-SPRZĘTOWY" #. 0 -#: ../cli/src/devices.c:113 +#: ../cli/src/devices.c:115 msgid "CARRIER-DETECT" msgstr "WYKRYWANIE-OPERATORA" #. 1 -#: ../cli/src/devices.c:114 +#: ../cli/src/devices.c:116 msgid "SPEED" msgstr "PRĘDKOŚĆ" #. 0 -#: ../cli/src/devices.c:123 +#: ../cli/src/devices.c:125 msgid "CARRIER" msgstr "OPERATOR" #. 0 -#: ../cli/src/devices.c:133 +#: ../cli/src/devices.c:135 msgid "WEP" msgstr "WEP" #. 1 -#: ../cli/src/devices.c:134 +#: ../cli/src/devices.c:136 msgid "WPA" msgstr "WPA" #. 2 -#: ../cli/src/devices.c:135 +#: ../cli/src/devices.c:137 msgid "WPA2" msgstr "WPA2" #. 3 -#: ../cli/src/devices.c:136 +#: ../cli/src/devices.c:138 msgid "TKIP" msgstr "TKIP" #. 4 -#: ../cli/src/devices.c:137 +#: ../cli/src/devices.c:139 msgid "CCMP" msgstr "CCMP" #. 0 -#: ../cli/src/devices.c:147 +#: ../cli/src/devices.c:149 msgid "CTR-FREQ" msgstr "CZĘSTOTLIWOŚĆ-CTR" #. 1 -#: ../cli/src/devices.c:148 +#: ../cli/src/devices.c:150 msgid "RSSI" msgstr "RSSI" #. 2 -#: ../cli/src/devices.c:149 +#: ../cli/src/devices.c:151 msgid "CINR" msgstr "CINR" #. 3 -#: ../cli/src/devices.c:150 +#: ../cli/src/devices.c:152 msgid "TX-POW" msgstr "TX-POW" #. 4 -#: ../cli/src/devices.c:151 +#: ../cli/src/devices.c:153 msgid "BSID" msgstr "BSID" #. 0 -#: ../cli/src/devices.c:161 ../cli/src/devices.c:172 +#: ../cli/src/devices.c:163 ../cli/src/devices.c:174 msgid "ADDRESS" msgstr "ADRES" #. 1 -#: ../cli/src/devices.c:162 ../cli/src/devices.c:173 +#: ../cli/src/devices.c:164 ../cli/src/devices.c:175 msgid "PREFIX" msgstr "PRZEDROSTEK" #. 2 -#: ../cli/src/devices.c:163 ../cli/src/devices.c:174 +#: ../cli/src/devices.c:165 ../cli/src/devices.c:176 msgid "GATEWAY" msgstr "BRAMA" #. 0 -#: ../cli/src/devices.c:183 ../cli/src/devices.c:192 +#: ../cli/src/devices.c:185 ../cli/src/devices.c:194 msgid "DNS" msgstr "DNS" #. 0 -#: ../cli/src/devices.c:201 +#: ../cli/src/devices.c:203 msgid "SSID" msgstr "SSID" #. 1 -#: ../cli/src/devices.c:202 +#: ../cli/src/devices.c:204 msgid "BSSID" msgstr "BSSID" #. 2 -#: ../cli/src/devices.c:203 +#: ../cli/src/devices.c:205 msgid "MODE" msgstr "TRYB" #. 3 -#: ../cli/src/devices.c:204 +#: ../cli/src/devices.c:206 msgid "FREQ" msgstr "CZĘSTOTLIWOŚĆ" #. 4 -#: ../cli/src/devices.c:205 +#: ../cli/src/devices.c:207 msgid "RATE" msgstr "OCENA" #. 5 #. 1 -#: ../cli/src/devices.c:206 ../cli/src/devices.c:224 +#: ../cli/src/devices.c:208 ../cli/src/devices.c:226 msgid "SIGNAL" msgstr "SYGNAŁ" #. 6 -#: ../cli/src/devices.c:207 +#: ../cli/src/devices.c:209 msgid "SECURITY" msgstr "ZABEZPIECZENIA" #. 7 -#: ../cli/src/devices.c:208 +#: ../cli/src/devices.c:210 msgid "WPA-FLAGS" msgstr "FLAGI-WPA" #. 8 -#: ../cli/src/devices.c:209 +#: ../cli/src/devices.c:211 msgid "RSN-FLAGS" msgstr "FLAGI-RSN" #. 10 #. 4 -#: ../cli/src/devices.c:211 ../cli/src/devices.c:227 +#: ../cli/src/devices.c:213 ../cli/src/devices.c:229 msgid "ACTIVE" msgstr "AKTYWNOŚĆ" -#: ../cli/src/devices.c:254 +#: ../cli/src/devices.c:246 #, c-format msgid "" "Usage: nmcli dev { COMMAND | help }\n" @@ -695,7 +704,7 @@ msgid "" " status\n" " list [iface <iface>]\n" " disconnect iface <iface> [--nowait] [--timeout <timeout>]\n" -" wifi [list [iface <iface>] [hwaddr <hwaddr>]]\n" +" wifi [list [iface <iface>] [bssid <BSSID>]]\n" " wimax [list [iface <iface>] [nsp <name>]]\n" "\n" msgstr "" @@ -708,312 +717,312 @@ msgstr "" " status\n" " list [iface <interfejs]\n" " disconnect iface <interfejs> [--nowait] [--timeout <czas>]\n" -" wifi [list [iface <interfejs>] [hwaddr <adres_sprzętowy>]]\n" +" wifi [list [iface <interfejs>] [bssid <BSSID>]]\n" " wimax [list [iface <interfejs>] [nsp <nazwa>]]\n" -#: ../cli/src/devices.c:282 +#: ../cli/src/devices.c:274 msgid "unmanaged" msgstr "niezarządzane" -#: ../cli/src/devices.c:284 +#: ../cli/src/devices.c:276 msgid "unavailable" msgstr "niedostępne" -#: ../cli/src/devices.c:286 ../cli/src/network-manager.c:113 +#: ../cli/src/devices.c:278 ../cli/src/network-manager.c:108 msgid "disconnected" msgstr "rozłączono" -#: ../cli/src/devices.c:288 +#: ../cli/src/devices.c:280 msgid "connecting (prepare)" msgstr "łączenie (przygotowanie)" -#: ../cli/src/devices.c:290 +#: ../cli/src/devices.c:282 msgid "connecting (configuring)" msgstr "łączenie (konfigurowanie)" -#: ../cli/src/devices.c:292 +#: ../cli/src/devices.c:284 msgid "connecting (need authentication)" msgstr "łączenie (wymaga uwierzytelnienia)" -#: ../cli/src/devices.c:294 +#: ../cli/src/devices.c:286 msgid "connecting (getting IP configuration)" msgstr "łączenie (pobieranie konfiguracji adresu IP)" -#: ../cli/src/devices.c:296 +#: ../cli/src/devices.c:288 msgid "connecting (checking IP connectivity)" msgstr "łączenie (sprawdzanie łączności IP)" -#: ../cli/src/devices.c:298 +#: ../cli/src/devices.c:290 msgid "connecting (starting secondary connections)" msgstr "łączenie (uruchamianie drugorzędnych połączeń)" -#: ../cli/src/devices.c:300 ../cli/src/network-manager.c:109 +#: ../cli/src/devices.c:292 ../cli/src/network-manager.c:104 msgid "connected" msgstr "połączono" -#: ../cli/src/devices.c:302 -msgid "deactivating" -msgstr "deaktywowanie" - -#: ../cli/src/devices.c:304 +#: ../cli/src/devices.c:296 msgid "connection failed" msgstr "połączenie się nie powiodło" -#: ../cli/src/devices.c:329 ../cli/src/devices.c:339 ../cli/src/devices.c:499 -#: ../cli/src/devices.c:543 +#: ../cli/src/devices.c:321 ../cli/src/devices.c:331 ../cli/src/devices.c:491 +#: ../cli/src/devices.c:535 msgid "Unknown" msgstr "Nieznane" -#: ../cli/src/devices.c:372 +#: ../cli/src/devices.c:364 msgid "(none)" msgstr "(brak)" -#: ../cli/src/devices.c:397 +#: ../cli/src/devices.c:389 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: błąd podczas konwertowania adresu IPv4 0x%X" -#: ../cli/src/devices.c:468 +#: ../cli/src/devices.c:460 #, c-format msgid "%u MHz" msgstr "%u MHz" -#: ../cli/src/devices.c:469 +#: ../cli/src/devices.c:461 #, c-format msgid "%u MB/s" msgstr "%u MB/s" -#: ../cli/src/devices.c:478 +#: ../cli/src/devices.c:470 msgid "Encrypted: " msgstr "Zaszyfrowane: " -#: ../cli/src/devices.c:483 +#: ../cli/src/devices.c:475 msgid "WEP " msgstr "WEP " -#: ../cli/src/devices.c:485 +#: ../cli/src/devices.c:477 msgid "WPA " msgstr "WPA " -#: ../cli/src/devices.c:487 +#: ../cli/src/devices.c:479 msgid "WPA2 " msgstr "WPA2 " -#: ../cli/src/devices.c:490 +#: ../cli/src/devices.c:482 msgid "Enterprise " msgstr "Enterprise " -#: ../cli/src/devices.c:499 +#: ../cli/src/devices.c:491 msgid "Ad-Hoc" msgstr "Ad-hoc" -#: ../cli/src/devices.c:499 +#: ../cli/src/devices.c:491 msgid "Infrastructure" msgstr "Infrastruktura" -#: ../cli/src/devices.c:534 +#: ../cli/src/devices.c:526 msgid "Home" msgstr "Dom" -#: ../cli/src/devices.c:537 +#: ../cli/src/devices.c:529 msgid "Partner" msgstr "Partner" -#: ../cli/src/devices.c:540 +#: ../cli/src/devices.c:532 msgid "Roaming" msgstr "Roaming" -#: ../cli/src/devices.c:610 +#: ../cli/src/devices.c:602 #, c-format msgid "Error: 'dev list': %s" msgstr "Błąd: \"dev list\": %s" -#: ../cli/src/devices.c:612 +#: ../cli/src/devices.c:604 #, c-format msgid "Error: 'dev list': %s; allowed fields: %s" msgstr "Błąd: \"dev list\": %s; dozwolone pola: %s" -#: ../cli/src/devices.c:621 +#: ../cli/src/devices.c:613 msgid "Device details" msgstr "Informacje o urządzeniu" -#: ../cli/src/devices.c:655 ../cli/src/devices.c:1150 ../cli/src/utils.c:342 +#: ../cli/src/devices.c:647 ../cli/src/devices.c:1142 ../cli/src/utils.c:343 msgid "(unknown)" msgstr "(nieznane)" -#: ../cli/src/devices.c:656 +#: ../cli/src/devices.c:648 msgid "unknown)" msgstr "nieznane)" -#: ../cli/src/devices.c:682 +#: ../cli/src/devices.c:674 #, c-format msgid "%u Mb/s" msgstr "%u Mb/s" #. Print header #. "WIRED-PROPERTIES" -#: ../cli/src/devices.c:755 +#: ../cli/src/devices.c:747 msgid "on" msgstr "włączone" -#: ../cli/src/devices.c:755 +#: ../cli/src/devices.c:747 msgid "off" msgstr "wyłączone" -#: ../cli/src/devices.c:1002 +#: ../cli/src/devices.c:994 #, c-format msgid "Error: 'dev status': %s" msgstr "Błąd: \"dev status\": %s" -#: ../cli/src/devices.c:1004 +#: ../cli/src/devices.c:996 #, c-format msgid "Error: 'dev status': %s; allowed fields: %s" msgstr "Błąd: \"dev status\": %s; dozwolone pola: %s" -#: ../cli/src/devices.c:1027 +#: ../cli/src/devices.c:1019 msgid "Status of devices" msgstr "Stan urządzenia" -#: ../cli/src/devices.c:1058 +#: ../cli/src/devices.c:1050 #, c-format msgid "Error: '%s' argument is missing." msgstr "Błąd: brak parametru \"%s\"." -#: ../cli/src/devices.c:1099 ../cli/src/devices.c:1251 -#: ../cli/src/devices.c:1387 ../cli/src/devices.c:1606 +#: ../cli/src/devices.c:1091 ../cli/src/devices.c:1243 +#: ../cli/src/devices.c:1380 ../cli/src/devices.c:1599 #, c-format msgid "Error: Device '%s' not found." msgstr "Błąd: nie odnaleziono urządzenia \"%s\"." -#: ../cli/src/devices.c:1122 +#: ../cli/src/devices.c:1114 #, c-format msgid "Success: Device '%s' successfully disconnected." msgstr "Powodzenie: urządzenie \"%s\" zostało rozłączone." -#: ../cli/src/devices.c:1147 +#: ../cli/src/devices.c:1139 #, c-format msgid "Error: Device '%s' (%s) disconnecting failed: %s" msgstr "Błąd: rozłączenie urządzenia \"%s\" (%s) się nie powiodło: %s" -#: ../cli/src/devices.c:1155 +#: ../cli/src/devices.c:1147 #, c-format msgid "Device state: %d (%s)\n" msgstr "Stan urządzenia: %d (%s)\n" -#: ../cli/src/devices.c:1220 +#: ../cli/src/devices.c:1212 #, c-format msgid "Error: iface has to be specified." msgstr "Błąd: należy podać interfejs." -#: ../cli/src/devices.c:1345 +#: ../cli/src/devices.c:1338 #, c-format msgid "Error: 'dev wifi': %s" msgstr "Błąd: \"dev wifi\": %s" -#: ../cli/src/devices.c:1347 +#: ../cli/src/devices.c:1340 #, c-format msgid "Error: 'dev wifi': %s; allowed fields: %s" msgstr "Błąd: \"dev wifi\": %s; dozwolone pola: %s" -#: ../cli/src/devices.c:1370 +#: ../cli/src/devices.c:1363 msgid "WiFi scan list" msgstr "Lista skanowania sieci WiFi" -#: ../cli/src/devices.c:1407 ../cli/src/devices.c:1461 -#: ../cli/src/devices.c:1668 +#: ../cli/src/devices.c:1400 ../cli/src/devices.c:1454 #, c-format -msgid "Error: Access point with hwaddr '%s' not found." -msgstr "Błąd: nie odnaleziono punktu dostępowego z adresem sprzętowym \"%s\"." +msgid "Error: Access point with bssid '%s' not found." +msgstr "Błąd: nie odnaleziono punktu dostępowego z BSSID \"%s\"." -#: ../cli/src/devices.c:1424 +#: ../cli/src/devices.c:1417 #, c-format msgid "Error: Device '%s' is not a WiFi device." msgstr "Błąd: urządzenie \"%s\" nie jest urządzeniem WiFi." -#: ../cli/src/devices.c:1488 +#: ../cli/src/devices.c:1481 #, c-format msgid "Error: 'dev wifi' command '%s' is not valid." msgstr "Błąd: polecenie \"dev wifi\" \"%s\" jest nieprawidłowe." -#: ../cli/src/devices.c:1564 +#: ../cli/src/devices.c:1557 #, c-format msgid "Error: 'dev wimax': %s" msgstr "Błąd: \"dev wimax\": %s" -#: ../cli/src/devices.c:1566 +#: ../cli/src/devices.c:1559 #, c-format msgid "Error: 'dev wimax': %s; allowed fields: %s" msgstr "Błąd: \"dev wimax\": %s; dozwolone pola: %s" -#: ../cli/src/devices.c:1589 +#: ../cli/src/devices.c:1582 msgid "WiMAX NSP list" msgstr "Lista NSP sieci WiMAX" -#: ../cli/src/devices.c:1626 +#: ../cli/src/devices.c:1619 #, c-format msgid "Error: NSP with name '%s' not found." msgstr "Błąd: nie odnaleziono NSP o nazwie \"%s\"." -#: ../cli/src/devices.c:1637 +#: ../cli/src/devices.c:1630 #, c-format msgid "Error: Device '%s' is not a WiMAX device." msgstr "Błąd: urządzenie \"%s\" nie jest urządzeniem WiMAX." -#: ../cli/src/devices.c:1695 +#: ../cli/src/devices.c:1661 +#, c-format +msgid "Error: Access point with nsp '%s' not found." +msgstr "Błąd: nie odnaleziono punktu dostępowego z NSP \"%s\"." + +#: ../cli/src/devices.c:1688 #, c-format msgid "Error: 'dev wimax' command '%s' is not valid." msgstr "Błąd: polecenie \"dev wimax\" \"%s\" jest nieprawidłowe." -#: ../cli/src/devices.c:1745 +#: ../cli/src/devices.c:1738 #, c-format msgid "Error: 'dev' command '%s' is not valid." msgstr "Błąd: polecenie \"dev\" \"%s\" jest nieprawidłowe." -#: ../cli/src/network-manager.c:35 +#: ../cli/src/network-manager.c:37 msgid "RUNNING" msgstr "URUCHOMIONE" #. 0 -#: ../cli/src/network-manager.c:36 +#: ../cli/src/network-manager.c:38 msgid "VERSION" msgstr "WERSJA" #. 2 -#: ../cli/src/network-manager.c:38 +#: ../cli/src/network-manager.c:40 msgid "NET-ENABLED" msgstr "SIEĆ-WŁĄCZONA" #. 3 -#: ../cli/src/network-manager.c:39 +#: ../cli/src/network-manager.c:41 msgid "WIFI-HARDWARE" msgstr "SPRZĘT-WIFI" #. 4 -#: ../cli/src/network-manager.c:40 +#: ../cli/src/network-manager.c:42 msgid "WIFI" msgstr "WIFI" #. 5 -#: ../cli/src/network-manager.c:41 +#: ../cli/src/network-manager.c:43 msgid "WWAN-HARDWARE" msgstr "SPRZĘT-WWAN" #. 6 -#: ../cli/src/network-manager.c:42 +#: ../cli/src/network-manager.c:44 msgid "WWAN" msgstr "WWAN" #. 7 -#: ../cli/src/network-manager.c:43 +#: ../cli/src/network-manager.c:45 msgid "WIMAX-HARDWARE" msgstr "SPRZĘT-WIMAX" #. 8 -#: ../cli/src/network-manager.c:44 +#: ../cli/src/network-manager.c:46 msgid "WIMAX" msgstr "WIMAX" -#: ../cli/src/network-manager.c:72 +#: ../cli/src/network-manager.c:67 #, c-format msgid "" "Usage: nmcli nm { COMMAND | help }\n" @@ -1043,142 +1052,142 @@ msgstr "" " wwan [on|off]\n" " wimax [on|off]\n" -#: ../cli/src/network-manager.c:101 +#: ../cli/src/network-manager.c:96 msgid "asleep" msgstr "wstrzymane" -#: ../cli/src/network-manager.c:103 +#: ../cli/src/network-manager.c:98 msgid "connecting" msgstr "łączenie" -#: ../cli/src/network-manager.c:105 +#: ../cli/src/network-manager.c:100 msgid "connected (local only)" msgstr "połączono (tylko lokalnie)" -#: ../cli/src/network-manager.c:107 +#: ../cli/src/network-manager.c:102 msgid "connected (site only)" msgstr "połączono (tylko witryny)" -#: ../cli/src/network-manager.c:111 +#: ../cli/src/network-manager.c:106 msgid "disconnecting" msgstr "rozłączanie" -#: ../cli/src/network-manager.c:151 +#: ../cli/src/network-manager.c:146 #, c-format msgid "Error: 'nm status': %s" msgstr "Błąd: \"nm status\": %s" -#: ../cli/src/network-manager.c:153 +#: ../cli/src/network-manager.c:148 #, c-format msgid "Error: 'nm status': %s; allowed fields: %s" msgstr "Błąd: \"nm status\": %s; dozwolone pola: %s" #. create NMClient -#: ../cli/src/network-manager.c:166 ../cli/src/network-manager.c:167 -#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169 -#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:172 -#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:294 -#: ../cli/src/network-manager.c:349 ../cli/src/network-manager.c:387 -#: ../cli/src/network-manager.c:426 +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 msgid "enabled" msgstr "włączone" -#: ../cli/src/network-manager.c:166 ../cli/src/network-manager.c:167 -#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:169 -#: ../cli/src/network-manager.c:170 ../cli/src/network-manager.c:172 -#: ../cli/src/network-manager.c:173 ../cli/src/network-manager.c:294 -#: ../cli/src/network-manager.c:349 ../cli/src/network-manager.c:387 -#: ../cli/src/network-manager.c:426 +#: ../cli/src/network-manager.c:161 ../cli/src/network-manager.c:162 +#: ../cli/src/network-manager.c:163 ../cli/src/network-manager.c:164 +#: ../cli/src/network-manager.c:165 ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:168 ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:344 ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:421 msgid "disabled" msgstr "wyłączone" -#: ../cli/src/network-manager.c:186 +#: ../cli/src/network-manager.c:181 msgid "NetworkManager status" msgstr "Stan usługi NetworkManager" #. Print header -#: ../cli/src/network-manager.c:189 +#: ../cli/src/network-manager.c:184 msgid "running" msgstr "uruchamiany" -#: ../cli/src/network-manager.c:189 +#: ../cli/src/network-manager.c:184 msgid "not running" msgstr "nieuruchomiony" -#: ../cli/src/network-manager.c:220 ../cli/src/utils.c:322 +#: ../cli/src/network-manager.c:215 ../cli/src/utils.c:323 #, c-format msgid "Error: Couldn't connect to system bus: %s" msgstr "Błąd: nie można połączyć się z magistralą systemową: %s" -#: ../cli/src/network-manager.c:231 +#: ../cli/src/network-manager.c:226 #, c-format msgid "Error: Couldn't create D-Bus object proxy." msgstr "Błąd: nie można utworzyć pośrednika obiektu usługi D-Bus." -#: ../cli/src/network-manager.c:237 +#: ../cli/src/network-manager.c:232 #, c-format msgid "Error in sleep: %s" msgstr "Błąd w poleceniu sleep: %s" -#: ../cli/src/network-manager.c:281 ../cli/src/network-manager.c:336 -#: ../cli/src/network-manager.c:374 ../cli/src/network-manager.c:413 +#: ../cli/src/network-manager.c:276 ../cli/src/network-manager.c:331 +#: ../cli/src/network-manager.c:369 ../cli/src/network-manager.c:408 #, c-format msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" msgstr "" -"Błąd: wartość \"%s\" opcji \"--fields\" jest nieprawidłowa; dozwolone pola: " -"%s." +"Błąd: wartość \"%s\" opcji \"--fields\" jest nieprawidłowa; dozwolone pola: %" +"s." -#: ../cli/src/network-manager.c:289 +#: ../cli/src/network-manager.c:284 msgid "Networking enabled" msgstr "Sieć jest włączona" -#: ../cli/src/network-manager.c:305 +#: ../cli/src/network-manager.c:300 #, c-format msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." msgstr "" "Błąd: nieprawidłowy parametr \"enable\": \"%s\"; należy użyć \"true\" lub " "\"false\"." -#: ../cli/src/network-manager.c:315 +#: ../cli/src/network-manager.c:310 #, c-format msgid "Error: Sleeping status is not exported by NetworkManager." msgstr "Błąd: stan snu nie jest eksportowany przez usługę NetworkManager." -#: ../cli/src/network-manager.c:323 +#: ../cli/src/network-manager.c:318 #, c-format msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." msgstr "" "Błąd: nieprawidłowy parametr \"sleep\": \"%s\"; należy użyć \"true\" lub " "\"false\"." -#: ../cli/src/network-manager.c:344 +#: ../cli/src/network-manager.c:339 msgid "WiFi enabled" msgstr "WiFi jest włączone" -#: ../cli/src/network-manager.c:360 +#: ../cli/src/network-manager.c:355 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Błąd: nieprawidłowy parametr \"wifi\": \"%s\"." -#: ../cli/src/network-manager.c:382 +#: ../cli/src/network-manager.c:377 msgid "WWAN enabled" msgstr "WWAN jest włączone" -#: ../cli/src/network-manager.c:398 +#: ../cli/src/network-manager.c:393 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Błąd: nieprawidłowy parametr \"wwan\": \"%s\"." -#: ../cli/src/network-manager.c:421 +#: ../cli/src/network-manager.c:416 msgid "WiMAX enabled" msgstr "WiMAX jest włączone" -#: ../cli/src/network-manager.c:437 +#: ../cli/src/network-manager.c:432 #, c-format msgid "Error: invalid 'wimax' parameter: '%s'." msgstr "Błąd: nieprawidłowy parametr \"wimax\": \"%s\"." -#: ../cli/src/network-manager.c:450 +#: ../cli/src/network-manager.c:445 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Błąd: parametr \"nm\" \"%s\" jest nieprawidłowy." @@ -1293,79 +1302,87 @@ msgstr "Błąd: nie można utworzyć obiektu NMClient." msgid "Success" msgstr "Powodzenie" -#: ../cli/src/settings.c:421 +#: ../cli/src/settings.c:447 #, c-format msgid "%d (hex-ascii-key)" msgstr "%d (klucz-szesnastkowy-acsii))" -#: ../cli/src/settings.c:423 +#: ../cli/src/settings.c:449 #, c-format msgid "%d (104/128-bit passphrase)" msgstr "%d (104/128-bitowe hasło)" -#: ../cli/src/settings.c:426 +#: ../cli/src/settings.c:452 #, c-format msgid "%d (unknown)" msgstr "%d (nieznane)" -#: ../cli/src/settings.c:452 +#: ../cli/src/settings.c:478 msgid "0 (unknown)" msgstr "0 (nieznane)" -#: ../cli/src/settings.c:458 +#: ../cli/src/settings.c:484 msgid "any, " msgstr "dowolne, " -#: ../cli/src/settings.c:460 +#: ../cli/src/settings.c:486 msgid "900 MHz, " msgstr "900 MHz, " -#: ../cli/src/settings.c:462 +#: ../cli/src/settings.c:488 msgid "1800 MHz, " msgstr "1800 MHz, " -#: ../cli/src/settings.c:464 +#: ../cli/src/settings.c:490 msgid "1900 MHz, " msgstr "1900 MHz, " -#: ../cli/src/settings.c:466 +#: ../cli/src/settings.c:492 msgid "850 MHz, " msgstr "850 MHz, " -#: ../cli/src/settings.c:468 +#: ../cli/src/settings.c:494 msgid "WCDMA 3GPP UMTS 2100 MHz, " msgstr "WCDMA 3GPP UMTS 2100 MHz, " -#: ../cli/src/settings.c:470 +#: ../cli/src/settings.c:496 msgid "WCDMA 3GPP UMTS 1800 MHz, " msgstr "WCDMA 3GPP UMTS 1800 MHz, " -#: ../cli/src/settings.c:472 +#: ../cli/src/settings.c:498 msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " -#: ../cli/src/settings.c:474 +#: ../cli/src/settings.c:500 msgid "WCDMA 3GPP UMTS 800 MHz, " msgstr "WCDMA 3GPP UMTS 800 MHz, " -#: ../cli/src/settings.c:476 +#: ../cli/src/settings.c:502 msgid "WCDMA 3GPP UMTS 850 MHz, " msgstr "WCDMA 3GPP UMTS 850 MHz, " -#: ../cli/src/settings.c:478 +#: ../cli/src/settings.c:504 msgid "WCDMA 3GPP UMTS 900 MHz, " msgstr "WCDMA 3GPP UMTS 900 MHz, " -#: ../cli/src/settings.c:480 +#: ../cli/src/settings.c:506 msgid "WCDMA 3GPP UMTS 1700 MHz, " msgstr "WCDMA 3GPP UMTS 1700 MHz, " -#: ../cli/src/settings.c:564 ../cli/src/settings.c:730 +#: ../cli/src/settings.c:508 +msgid "WCDMA 3GPP UMTS 1900 MHz, " +msgstr "WCDMA 3GPP UMTS 1900 MHz, " + +#: ../cli/src/settings.c:510 +msgid "WCDMA 3GPP UMTS 2600 MHz, " +msgstr "WCDMA 3GPP UMTS 2600 MHz, " + +#: ../cli/src/settings.c:636 ../cli/src/settings.c:835 msgid "auto" msgstr "automatyczne" -#: ../cli/src/settings.c:725 ../cli/src/settings.c:728 -#: ../cli/src/settings.c:729 ../cli/src/utils.c:176 +#: ../cli/src/settings.c:829 ../cli/src/settings.c:832 +#: ../cli/src/settings.c:833 ../cli/src/utils.c:176 msgid "not set" msgstr "nieustawione" @@ -1390,19 +1407,19 @@ msgid "Option '--terse' requires specific '--fields' option values , not '%s'" msgstr "" "Opcja \"--terse\" wymaga konkretnej wartości opcji \"--fields\", nie \"%s\"" -#: ../cli/src/utils.c:333 +#: ../cli/src/utils.c:334 #, c-format msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" msgstr "" "Błąd: nie można utworzyć pośrednika obiektu usługi D-Bus dla org.freedesktop." "DBus" -#: ../cli/src/utils.c:341 +#: ../cli/src/utils.c:342 #, c-format msgid "Error: NameHasOwner request failed: %s" msgstr "Błąd: żądanie NameHasOwner się nie powiodło: %s" -#: ../cli/src/utils.c:386 +#: ../cli/src/utils.c:387 #, c-format msgid "" "Warning: nmcli (%s) and NetworkManager (%s) versions don't match. Use --" @@ -1411,7 +1428,7 @@ msgstr "" "Ostrzeżenie: wersje programu nmcli (%s) i usługi NetworkManager (%s) się nie " "zgadzają. Użycie opcji --nocheck ukrywa ostrzeżenie.\n" -#: ../cli/src/utils.c:395 +#: ../cli/src/utils.c:396 #, c-format msgid "" "Error: nmcli (%s) and NetworkManager (%s) versions don't match. Force " @@ -1421,353 +1438,383 @@ msgstr "" "zgadzają. Wymuszono wykonanie używając opcji --nocheck, ale wynik może być " "nieprzewidywalny." -#: ../libnm-util/crypto.c:125 +#: ../libnm-util/crypto.c:133 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "Plik klucza PEM nie zawiera znacznika końcowego \"%s\"." -#: ../libnm-util/crypto.c:138 +#: ../libnm-util/crypto.c:146 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Nie wygląda na plik klucza prywatnego PEM." -#: ../libnm-util/crypto.c:146 +#: ../libnm-util/crypto.c:154 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Brak wystarczającej ilości pamięci do przechowania danych pliku PEM." -#: ../libnm-util/crypto.c:162 +#: ../libnm-util/crypto.c:170 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Uszkodzony plik PEM: Proc-Type nie był pierwszym znacznikiem." -#: ../libnm-util/crypto.c:170 +#: ../libnm-util/crypto.c:178 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Uszkodzony plik PEM: nieznany znacznik Proc-Type \"%s\"." -#: ../libnm-util/crypto.c:180 +#: ../libnm-util/crypto.c:188 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Uszkodzony plik PEM: DEK-Info nie był drugim znacznikiem." -#: ../libnm-util/crypto.c:191 +#: ../libnm-util/crypto.c:199 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "Uszkodzony plik PEM: brak IV w znaczniku DEK-Info." -#: ../libnm-util/crypto.c:198 +#: ../libnm-util/crypto.c:206 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "Uszkodzony plik PEM: nieprawidłowy format IV w znaczniku DEK-Info." -#: ../libnm-util/crypto.c:211 +#: ../libnm-util/crypto.c:219 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Uszkodzony plik PEM: nieznany szyfr klucza prywatnego: \"%s\"." -#: ../libnm-util/crypto.c:230 +#: ../libnm-util/crypto.c:238 #, c-format msgid "Could not decode private key." msgstr "Nie można zdekodować klucza prywatnego." -#: ../libnm-util/crypto.c:266 ../libnm-util/crypto.c:552 +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "" +"Odnalezienie oczekiwanego znacznika początkowego PKCS#8 się nie powiodło." + +#: ../libnm-util/crypto.c:292 +#, c-format +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "" +"Odnalezienie oczekiwanego znacznika końcowego PKCS#8 \"%s\" się nie powiodło." + +#: ../libnm-util/crypto.c:312 +msgid "Not enough memory to store private key data." +msgstr "" +"Brak wystarczającej ilości pamięci do przechowania danych klucza prywatnego." + +#: ../libnm-util/crypto.c:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "Odkodowanie klucza prywatnego PKCS#8 się nie powiodło." + +#: ../libnm-util/crypto.c:339 ../libnm-util/crypto.c:625 #, c-format msgid "Not enough memory to store certificate data." msgstr "Brak wystarczającej ilości pamięci do przechowania danych certyfikatu." -#: ../libnm-util/crypto.c:292 +#: ../libnm-util/crypto.c:365 #, c-format msgid "IV must be an even number of bytes in length." msgstr "Liczba bajtów w IV musi być liczbą parzystą." -#: ../libnm-util/crypto.c:301 +#: ../libnm-util/crypto.c:374 #, c-format msgid "Not enough memory to store the IV." msgstr "Brak wystarczającej ilości pamięci do przechowania IV." -#: ../libnm-util/crypto.c:312 +#: ../libnm-util/crypto.c:385 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV zawiera nieszesnastkowe cyfry." -#: ../libnm-util/crypto.c:350 ../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:423 ../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 "Nieznany szyfr klucza prywatnego \"%s\"." -#: ../libnm-util/crypto.c:359 +#: ../libnm-util/crypto.c:432 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Brak wystarczającej ilości pamięci do odszyfrowania klucza prywatnego." -#: ../libnm-util/crypto.c:424 +#: ../libnm-util/crypto.c:497 #, c-format msgid "Not enough memory to store decrypted private key." msgstr "" "Brak wystarczającej ilości pamięci do przechowania odszyfrowanego klucza " "prywatnego." -#: ../libnm-util/crypto.c:469 +#: ../libnm-util/crypto.c:542 #, c-format msgid "Unable to determine private key type." msgstr "Nie można określić typu klucza prywatnego." -#: ../libnm-util/crypto.c:524 +#: ../libnm-util/crypto.c:597 #, c-format msgid "PEM certificate had no start tag '%s'." msgstr "Certyfikat PEM nie zawiera początkowego znacznika \"%s\"." -#: ../libnm-util/crypto.c:533 +#: ../libnm-util/crypto.c:606 #, c-format msgid "PEM certificate had no end tag '%s'." msgstr "Certyfikat PEM nie zawiera kończącego znacznika \"%s\"." -#: ../libnm-util/crypto.c:557 +#: ../libnm-util/crypto.c:630 #, c-format msgid "Failed to decode certificate." msgstr "Zdekodowanie certyfikatu się nie powiodło." -#: ../libnm-util/crypto_gnutls.c:49 +#: ../libnm-util/crypto_gnutls.c:50 msgid "Failed to initialize the crypto engine." msgstr "Zainicjowanie modułu szyfrowania się nie powiodło." -#: ../libnm-util/crypto_gnutls.c:93 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." msgstr "Zainicjowanie modułu MD5 się nie powiodło: %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 "Nieprawidłowa długość IV (musi wynosić co najmniej %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 "Brak wystarczającej ilości pamięci dla bufora odszyfrowanego klucza." -#: ../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 "" "Zainicjowanie kontekstu szyfru do odszyfrowania się nie powiodło: %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 "" "Ustawienie klucza symetrycznego do odszyfrowania się nie powiodło: %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 "Ustawienie IV do odszyfrowania się nie powiodło: %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 "Odszyfrowanie klucza prywatnego się nie powiodło: %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 "" "Odszyfrowanie klucza prywatnego się nie powiodło: nieoczekiwana długość " "wypełnienia." -#: ../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 "Odszyfrowanie klucza prywatnego się nie powiodło." -#: ../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 "Nie można przydzielić pamięci do szyfrowania." -#: ../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 "" "Zainicjowanie kontekstu szyfru do szyfrowania się nie powiodło: %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 "" "Ustawienie klucza symetrycznego do szyfrowania się nie powiodło: %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 "Ustawienie IV do szyfrowania się nie powiodło: %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 "Zaszyfrowanie danych się nie powiodło: %s / %s." -#: ../libnm-util/crypto_gnutls.c:362 +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Błąd podczas inicjowania danych certyfikatu: %s" -#: ../libnm-util/crypto_gnutls.c:384 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Nie można zdekodować certyfikatu: %s" -#: ../libnm-util/crypto_gnutls.c:408 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "Nie można zainicjować dekodera PKCS#12: %s" -#: ../libnm-util/crypto_gnutls.c:421 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "Nie można odszyfrować pliku PKCS#12: %s" -#: ../libnm-util/crypto_gnutls.c:433 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "Nie można zweryfikować pliku PKCS#12: %s" +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "Nie można zainicjować dekodera PKCS#8: %s" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "Nie można dekodować pliku PKCS#8: %s" + #: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "Zainicjowanie modułu szyfrowania się nie powiodło: %d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "Zainicjowanie kontekstu MD5 się nie powiodło: %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 "Nieprawidłowa długość IV (musi wynosić co najmniej %d)." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Zainicjowanie gniazda szyfru do odszyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." msgstr "Ustawienie klucza symetrycznego do odszyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:216 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Ustawienie IV do odszyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:224 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Zainicjowanie kontekstu odszyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:237 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." msgstr "Odszyfrowanie klucza prywatnego się nie powiodło: %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 "" "Odszyfrowanie klucza prywatnego się nie powiodło: odszyfrowane dane są za " "duże." -#: ../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 "Zakończenie odszyfrowania klucza prywatnego się nie powiodło: %d." -#: ../libnm-util/crypto_nss.c:364 +#: ../libnm-util/crypto_nss.c:360 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Zainicjowanie gniazda szyfru do szyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:372 +#: ../libnm-util/crypto_nss.c:368 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "Ustawienie klucza symetrycznego do szyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:380 +#: ../libnm-util/crypto_nss.c:376 #, c-format msgid "Failed to set IV for encryption." msgstr "Ustawienie IV do szyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:388 +#: ../libnm-util/crypto_nss.c:384 #, c-format msgid "Failed to initialize the encryption context." msgstr "Zainicjowanie kontekstu szyfrowania się nie powiodło." -#: ../libnm-util/crypto_nss.c:396 +#: ../libnm-util/crypto_nss.c:392 #, c-format msgid "Failed to encrypt: %d." msgstr "Zaszyfrowanie się nie powiodło: %d." -#: ../libnm-util/crypto_nss.c:404 +#: ../libnm-util/crypto_nss.c:400 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Nieoczekiwana ilość danych po zaszyfrowaniu." -#: ../libnm-util/crypto_nss.c:447 +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Nie można zdekodować certyfikatu: %d" -#: ../libnm-util/crypto_nss.c:482 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Nie można przekonwertować hasła do 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 "Nie można zainicjować dekodera PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:519 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "Nie można odszyfrować pliku PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:528 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "Nie można zweryfikować pliku PKCS#12: %d" -#: ../libnm-util/crypto_nss.c:557 +#: ../libnm-util/crypto_nss.c:568 msgid "Could not generate random data." msgstr "Nie można utworzyć losowych danych." -#: ../libnm-util/nm-utils.c:1988 +#: ../libnm-util/nm-utils.c:2000 #, c-format msgid "Not enough memory to make encryption key." msgstr "Brak wystarczającej ilości pamięci, aby utworzyć klucz szyfrowania." -#: ../libnm-util/nm-utils.c:2098 +#: ../libnm-util/nm-utils.c:2110 msgid "Could not allocate memory for PEM file creation." msgstr "Nie można przydzielić pamięci do utworzenia pliku PEM." -#: ../libnm-util/nm-utils.c:2110 +#: ../libnm-util/nm-utils.c:2122 #, c-format msgid "Could not allocate memory for writing IV to PEM file." msgstr "Nie można przydzielić pamięci do zapisywania IV do pliku PEM." -#: ../libnm-util/nm-utils.c:2122 +#: ../libnm-util/nm-utils.c:2134 #, c-format msgid "Could not allocate memory for writing encrypted key to PEM file." msgstr "" "Nie można przydzielić pamięci do zapisywania zaszyfrowanego klucza do pliku " "PEM." -#: ../libnm-util/nm-utils.c:2141 +#: ../libnm-util/nm-utils.c:2153 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Nie można przydzielić pamięci dla danych pliku PEM." @@ -1878,13 +1925,13 @@ msgid "System policy prevents sharing connections via an open WiFi network" msgstr "" "Polityka systemu powstrzymuje współdzielenie połączeń przez otwartą sieć WiFi" -#: ../src/main.c:519 +#: ../src/main.c:530 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "" "Nieprawidłowa opcja. Parametr --help wyświetli listę prawidłowych opcji.\n" -#: ../src/main.c:590 +#: ../src/main.c:611 #, c-format msgid "%s. Please use --help to see a list of valid options.\n" msgstr "%s. Parametr --help wyświetli listę prawidłowych opcji.\n" @@ -1919,116 +1966,111 @@ msgstr "nie można odnaleźć usługi \"dhcpcd\"." msgid "unsupported DHCP client '%s'" msgstr "nieobsługiwany klient DHCP \"%s\"" -#: ../src/dns-manager/nm-dns-manager.c:367 +#: ../src/dns-manager/nm-dns-manager.c:376 msgid "NOTE: the libc resolver may not support more than 3 nameservers." msgstr "UWAGA: obsługa nazw libc nie obsługuje więcej niż 3 serwery nazw." -#: ../src/dns-manager/nm-dns-manager.c:369 +#: ../src/dns-manager/nm-dns-manager.c:378 msgid "The nameservers listed below may not be recognized." msgstr "Poniższe serwery nazw nie mogą nie zostać rozpoznane." -#: ../src/logging/nm-logging.c:148 +#: ../src/logging/nm-logging.c:149 #, c-format msgid "Unknown log level '%s'" msgstr "Nieznany poziom dziennika \"%s\"" -#: ../src/logging/nm-logging.c:173 +#: ../src/logging/nm-logging.c:174 #, c-format msgid "Unknown log domain '%s'" msgstr "Nieznana domena dziennika \"%s\"" -#: ../src/modem-manager/nm-modem-cdma.c:294 ../src/nm-device-bt.c:353 +#: ../src/modem-manager/nm-modem-cdma.c:296 ../src/nm-device-bt.c:355 #, c-format msgid "CDMA connection %d" msgstr "Połączenie CDMA %d" -#: ../src/modem-manager/nm-modem-gsm.c:497 ../src/nm-device-bt.c:349 +#: ../src/modem-manager/nm-modem-gsm.c:499 ../src/nm-device-bt.c:351 #, c-format msgid "GSM connection %d" msgstr "Połączenie GSM %d" -#: ../src/nm-device-bt.c:324 +#: ../src/nm-device-bt.c:326 #, c-format msgid "PAN connection %d" msgstr "Połączenie PAN %d" -#: ../src/nm-device-bt.c:357 +#: ../src/nm-device-bt.c:359 #, c-format msgid "DUN connection %d" msgstr "Połączenie DUN %d" -#: ../src/nm-device-ethernet.c:1681 +#: ../src/nm-device-ethernet.c:1724 #, c-format msgid "PPPoE connection %d" msgstr "Połączenie PPPoE %d" -#: ../src/nm-device-ethernet.c:1681 +#: ../src/nm-device-ethernet.c:1724 ../src/settings/nm-settings-utils.c:50 #, c-format msgid "Wired connection %d" msgstr "Połączenie przewodowe %d" -#: ../src/nm-device-olpc-mesh.c:422 +#: ../src/nm-device-olpc-mesh.c:393 #, c-format msgid "Mesh %d" msgstr "Sieć kratowa %d" -#: ../src/nm-manager.c:656 +#: ../src/nm-manager.c:670 #, c-format msgid "VPN connection %d" msgstr "Połączenie VPN %d" -#: ../src/nm-netlink-monitor.c:100 ../src/nm-netlink-monitor.c:231 -#: ../src/nm-netlink-monitor.c:653 +#: ../src/nm-netlink-monitor.c:101 ../src/nm-netlink-monitor.c:234 +#: ../src/nm-netlink-monitor.c:661 #, c-format msgid "error processing netlink message: %s" msgstr "błąd podczas przetwarzania komunikatu netlink: %s" -#: ../src/nm-netlink-monitor.c:214 +#: ../src/nm-netlink-monitor.c:216 msgid "error occurred while waiting for data on socket" msgstr "wystąpił błąd podczas oczekiwania na dane na gnieździe" -#: ../src/nm-netlink-monitor.c:254 +#: ../src/nm-netlink-monitor.c:260 #, c-format msgid "unable to connect to netlink for monitoring link status: %s" msgstr "" "nie można połączyć się z netlink dla monitorowania stanu połączenia: %s" -#: ../src/nm-netlink-monitor.c:265 +#: ../src/nm-netlink-monitor.c:271 #, c-format msgid "unable to enable netlink handle credential passing: %s" msgstr "" -"nie można włączyć przekazywania danych uwierzytelniających uchwytu netlink: " -"%s" +"nie można włączyć przekazywania danych uwierzytelniających uchwytu netlink: %" +"s" -#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#: ../src/nm-netlink-monitor.c:294 ../src/nm-netlink-monitor.c:354 #, c-format msgid "unable to allocate netlink handle for monitoring link status: %s" msgstr "" "nie można przydzielić uchwytu netlink dla monitorowania stanu połączenia: %s" -#: ../src/nm-netlink-monitor.c:376 +#: ../src/nm-netlink-monitor.c:379 #, c-format msgid "unable to allocate netlink link cache for monitoring link status: %s" msgstr "" "nie można przydzielić pamięci podręcznej połączenia netlink dla " "monitorowania stanu połączenia: %s" -#: ../src/nm-netlink-monitor.c:502 +#: ../src/nm-netlink-monitor.c:506 #, c-format msgid "unable to join netlink group: %s" msgstr "nie można dołączyć do grupy netlink: %s" -#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#: ../src/nm-netlink-monitor.c:637 ../src/nm-netlink-monitor.c:650 #, c-format msgid "error updating link cache: %s" msgstr "błąd podczas aktualizowania pamięci podręcznej połączenia: %s" -#: ../src/settings/plugins/ifcfg-rh/reader.c:3458 -#: ../src/settings/plugins/ifnet/connection_parser.c:49 +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 msgid "System" msgstr "Systemowe" - -#: ../src/settings/nm-default-wired-connection.c:143 -#, c-format -msgid "Auto %s" -msgstr "Automatyczne %s" diff --git a/po/sl.po b/po/sl.po index 33af9c1e..40b2741d 100644 --- a/po/sl.po +++ b/po/sl.po @@ -5,111 +5,120 @@ # Matic Žgur <mr.zgur@gmail.com>, 2007. # Andrej Žnidaršič <andrej.znidarsic@gmail.com>, 2009 - 2010. # Matej Urbančič <matej.urban@gmail.com>, 2010. +# Martin Srebotnjak <miles@filmsi.net>, 2011. # msgid "" msgstr "" "Project-Id-Version: NetworkManager master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&component=general\n" -"POT-Creation-Date: 2010-09-18 15:24+0000\n" -"PO-Revision-Date: 2010-09-18 20:27+0100\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=NetworkManager&keywords=I18N+L10N&component=general\n" +"POT-Creation-Date: 2011-08-20 15:25+0000\n" +"PO-Revision-Date: 2011-09-21 09:12+0100\n" "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n" "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" "X-Poedit-Country: SLOVENIA\n" "X-Poedit-Language: Slovenian\n" "X-Poedit-SourceCharset: utf-8\n" -#: ../cli/src/connections.c:60 -#: ../cli/src/connections.c:75 -#: ../cli/src/devices.c:88 +#: ../cli/src/connections.c:64 +#: ../cli/src/connections.c:78 #: ../cli/src/devices.c:101 -#: ../cli/src/devices.c:111 -#: ../cli/src/devices.c:121 +#: ../cli/src/devices.c:114 +#: ../cli/src/devices.c:124 #: ../cli/src/devices.c:134 -#: ../cli/src/devices.c:145 -#: ../cli/src/devices.c:156 -#: ../cli/src/devices.c:165 -#: ../cli/src/devices.c:174 +#: ../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 "IME" #. 0 -#: ../cli/src/connections.c:61 -#: ../cli/src/connections.c:76 +#: ../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 "NAPRAVE" #. 2 -#: ../cli/src/connections.c:63 -#: ../cli/src/connections.c:78 -msgid "SCOPE" -msgstr "OBSEG" - -#. 3 -#: ../cli/src/connections.c:64 +#: ../cli/src/connections.c:67 msgid "DEFAULT" msgstr "PRIVZETO" -#. 4 -#: ../cli/src/connections.c:65 -msgid "DBUS-SERVICE" -msgstr "STORITEV-DBUS" - -#. 5 -#: ../cli/src/connections.c:66 +#. 3 +#: ../cli/src/connections.c:68 msgid "SPEC-OBJECT" msgstr "SPEC-PREDMET" -#. 6 -#: ../cli/src/connections.c:67 +#. 4 +#: ../cli/src/connections.c:69 msgid "VPN" msgstr "VPN" +#. 5 +#. 6 +#. 2 +#. 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-POT" + #. 1 #. 0 #. 1 -#: ../cli/src/connections.c:77 -#: ../cli/src/devices.c:62 -#: ../cli/src/devices.c:90 +#. 2 +#: ../cli/src/connections.c:80 +#: ../cli/src/devices.c:67 +#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:227 msgid "TYPE" msgstr "VRSTA" -#. 3 -#: ../cli/src/connections.c:79 +#. 2 +#: ../cli/src/connections.c:81 msgid "TIMESTAMP" msgstr "ČASOVNI ŽIG" -#. 4 -#: ../cli/src/connections.c:80 +#. 3 +#: ../cli/src/connections.c:82 msgid "TIMESTAMP-REAL" msgstr "REAL-ČASOVNI ŽIG" -#. 5 -#: ../cli/src/connections.c:81 +#. 4 +#: ../cli/src/connections.c:83 msgid "AUTOCONNECT" msgstr "SAMODEJNO POVEŽI" -#. 6 -#: ../cli/src/connections.c:82 +#. 5 +#: ../cli/src/connections.c:84 msgid "READONLY" msgstr "SAMO ZA BRANJE" -#: ../cli/src/connections.c:158 +#: ../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" msgstr "" @@ -118,862 +127,999 @@ msgstr "" "\n" " list [id <id> | uuid <id> | system | user]\n" " status\n" +" up id <id> | uuid <id> [iface <vmesnik>] [ap <strojni-naslov>] [nsp <ime>] [--nowait] [--timeout <zakasnitev>]\n" " up id <id> | uuid <id> [iface <vmesnik>] [ap <strojni-naslov>] [--nowait] [--timeout <zakasnitev>]\n" " down id <id> | uuid <id>\n" -#: ../cli/src/connections.c:198 -#: ../cli/src/connections.c:537 +#: ../cli/src/connections.c:220 +#: ../cli/src/connections.c:544 #, c-format msgid "Error: 'con list': %s" msgstr "Napaka: 'con list': %s" -#: ../cli/src/connections.c:200 -#: ../cli/src/connections.c:539 +#: ../cli/src/connections.c:222 +#: ../cli/src/connections.c:546 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Napaka: 'con list': %s; dovoljena so polja: %s" -#: ../cli/src/connections.c:208 +#: ../cli/src/connections.c:230 msgid "Connection details" msgstr "Podatki o povezavi" -#: ../cli/src/connections.c:382 -#: ../cli/src/connections.c:602 -msgid "system" -msgstr "sistem" - -#: ../cli/src/connections.c:382 -#: ../cli/src/connections.c:602 -msgid "user" -msgstr "uporabnik" - -#: ../cli/src/connections.c:384 +#: ../cli/src/connections.c:419 msgid "never" msgstr "nikoli" #. "CAPABILITIES" #. Print header #. "WIFI-PROPERTIES" -#: ../cli/src/connections.c:385 -#: ../cli/src/connections.c:386 -#: ../cli/src/connections.c:603 -#: ../cli/src/connections.c:606 -#: ../cli/src/devices.c:432 -#: ../cli/src/devices.c:557 -#: ../cli/src/devices.c:583 -#: ../cli/src/devices.c:584 -#: ../cli/src/devices.c:585 -#: ../cli/src/devices.c:586 -#: ../cli/src/devices.c:587 -#: ../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/connections.c:420 +#: ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 +#: ../cli/src/connections.c:601 +#: ../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:1224 +#: ../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 "da" -#: ../cli/src/connections.c:385 -#: ../cli/src/connections.c:386 -#: ../cli/src/connections.c:603 -#: ../cli/src/connections.c:606 -#: ../cli/src/devices.c:432 -#: ../cli/src/devices.c:557 -#: ../cli/src/devices.c:583 -#: ../cli/src/devices.c:584 -#: ../cli/src/devices.c:585 -#: ../cli/src/devices.c:586 -#: ../cli/src/devices.c:587 -#: ../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/connections.c:420 +#: ../cli/src/connections.c:421 +#: ../cli/src/connections.c:599 +#: ../cli/src/connections.c:601 +#: ../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:1224 +#: ../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:458 -#: ../cli/src/connections.c:501 -msgid "System connections" -msgstr "Sistemske povezave" - -#: ../cli/src/connections.c:463 -#: ../cli/src/connections.c:514 -msgid "User connections" -msgstr "Uporabniške povezave" - -#: ../cli/src/connections.c:475 -#: ../cli/src/connections.c:1335 -#: ../cli/src/connections.c:1351 -#: ../cli/src/connections.c:1360 -#: ../cli/src/connections.c:1371 -#: ../cli/src/connections.c:1456 -#: ../cli/src/devices.c:962 -#: ../cli/src/devices.c:972 -#: ../cli/src/devices.c:1074 -#: ../cli/src/devices.c:1081 +#: ../cli/src/connections.c:495 +msgid "Connection list" +msgstr "Seznam povezav" + +#: ../cli/src/connections.c:508 +#: ../cli/src/connections.c:1368 +#: ../cli/src/connections.c:1383 +#: ../cli/src/connections.c:1392 +#: ../cli/src/connections.c:1402 +#: ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1509 +#: ../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 "Napaka: manjka argument %s." -#: ../cli/src/connections.c:488 +#: ../cli/src/connections.c:521 #, c-format msgid "Error: %s - no such connection." msgstr "Napaka: %s - povezava ne obstaja." -#: ../cli/src/connections.c:520 -#: ../cli/src/connections.c:1384 -#: ../cli/src/connections.c:1474 -#: ../cli/src/devices.c:785 -#: ../cli/src/devices.c:852 -#: ../cli/src/devices.c:986 -#: ../cli/src/devices.c:1087 +#: ../cli/src/connections.c:527 +#: ../cli/src/connections.c:1427 +#: ../cli/src/connections.c:1526 +#: ../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 "Neznan parameter: %s\n" -#: ../cli/src/connections.c:529 +#: ../cli/src/connections.c:536 #, c-format msgid "Error: no valid parameter specified." msgstr "Napaka: ni podanega veljavnega parametra." -#: ../cli/src/connections.c:544 -#: ../cli/src/connections.c:1577 -#: ../cli/src/devices.c:1293 -#: ../cli/src/network-manager.c:359 +#: ../cli/src/connections.c:551 +#: ../cli/src/connections.c:1617 +#: ../cli/src/devices.c:1755 +#: ../cli/src/network-manager.c:463 #, c-format msgid "Error: %s." msgstr "Napaka: %s." -#: ../cli/src/connections.c:650 +#: ../cli/src/connections.c:639 #, c-format msgid "Error: 'con status': %s" msgstr "Napaka: 'con status': %s" -#: ../cli/src/connections.c:652 +#: ../cli/src/connections.c:641 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Napaka: 'con status': %s; dovoljena polja: %s" -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:649 +#: ../cli/src/connections.c:1442 +#: ../cli/src/connections.c:1541 +#: ../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 "Napaka: ni mogoče ugotoviti, ali se program NetworkManager izvaja: %s." + +#: ../cli/src/connections.c:653 +#: ../cli/src/connections.c:1446 +#: ../cli/src/connections.c:1545 +#: ../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 "Napaka: program NetworkManager ni zagnan." + +#: ../cli/src/connections.c:661 msgid "Active connections" msgstr "Dejavne povezave" -#: ../cli/src/connections.c:1027 +#: ../cli/src/connections.c:1085 #, c-format msgid "no active connection on device '%s'" msgstr "ni dejavnih povezav na napravi '%s'" -#: ../cli/src/connections.c:1035 +#: ../cli/src/connections.c:1093 #, c-format msgid "no active connection or device" msgstr "ni dejavne povezave ali naprave" -#: ../cli/src/connections.c:1085 +#: ../cli/src/connections.c:1164 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "naprava '%s' ni združljiva s povezavo '%s'" -#: ../cli/src/connections.c:1087 +#: ../cli/src/connections.c:1166 #, c-format msgid "no device found for connection '%s'" msgstr "ni naprave za povezavo '%s'" -#: ../cli/src/connections.c:1098 +#: ../cli/src/connections.c:1177 msgid "activating" msgstr "začenjanje" -#: ../cli/src/connections.c:1100 +#: ../cli/src/connections.c:1179 msgid "activated" msgstr "začeto" -#: ../cli/src/connections.c:1103 -#: ../cli/src/connections.c:1126 -#: ../cli/src/connections.c:1159 -#: ../cli/src/devices.c:246 -#: ../cli/src/devices.c:558 -#: ../cli/src/network-manager.c:94 -#: ../cli/src/network-manager.c:149 -#: ../cli/src/settings.c:473 +#: ../cli/src/connections.c:1181 +#: ../cli/src/devices.c:304 +msgid "deactivating" +msgstr "onemogočanje" + +#: ../cli/src/connections.c:1184 +#: ../cli/src/connections.c:1207 +#: ../cli/src/connections.c:1240 +#: ../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 "neznano" -#: ../cli/src/connections.c:1112 +#: ../cli/src/connections.c:1193 msgid "VPN connecting (prepare)" msgstr "VPN povezovanje (priprava)" -#: ../cli/src/connections.c:1114 +#: ../cli/src/connections.c:1195 msgid "VPN connecting (need authentication)" msgstr "VPN povezovanje (zahtevana je overitev)" -#: ../cli/src/connections.c:1116 +#: ../cli/src/connections.c:1197 msgid "VPN connecting" msgstr "VPN povezovanje" -#: ../cli/src/connections.c:1118 +#: ../cli/src/connections.c:1199 msgid "VPN connecting (getting IP configuration)" msgstr "VPN povezovanje (pridobivanje nastavitev IP)" -#: ../cli/src/connections.c:1120 +#: ../cli/src/connections.c:1201 msgid "VPN connected" msgstr "Povezan v VPN" -#: ../cli/src/connections.c:1122 +#: ../cli/src/connections.c:1203 msgid "VPN connection failed" msgstr "Povezava z VPN je spodletela" -#: ../cli/src/connections.c:1124 +#: ../cli/src/connections.c:1205 msgid "VPN disconnected" msgstr "Povezava z VPN je prekinjena" -#: ../cli/src/connections.c:1135 +#: ../cli/src/connections.c:1216 msgid "unknown reason" msgstr "neznan vzrok" -#: ../cli/src/connections.c:1137 +#: ../cli/src/connections.c:1218 msgid "none" msgstr "brez" -#: ../cli/src/connections.c:1139 +#: ../cli/src/connections.c:1220 msgid "the user was disconnected" msgstr "povezava z uporabnikom je prekinjena" -#: ../cli/src/connections.c:1141 +#: ../cli/src/connections.c:1222 msgid "the base network connection was interrupted" msgstr "osnovna omrežna povezava je bila prekinjena" -#: ../cli/src/connections.c:1143 +#: ../cli/src/connections.c:1224 msgid "the VPN service stopped unexpectedly" msgstr "storitev VPN je nepričakovano zaustavljena" -#: ../cli/src/connections.c:1145 +#: ../cli/src/connections.c:1226 msgid "the VPN service returned invalid configuration" msgstr "storitev VPN je vrnila neveljavne nastavitve" -#: ../cli/src/connections.c:1147 +#: ../cli/src/connections.c:1228 msgid "the connection attempt timed out" msgstr "poskus povezave je časovno potekel" -#: ../cli/src/connections.c:1149 +#: ../cli/src/connections.c:1230 msgid "the VPN service did not start in time" msgstr "storitev VPN se ni pravočasno začela" -#: ../cli/src/connections.c:1151 +#: ../cli/src/connections.c:1232 msgid "the VPN service failed to start" msgstr "storitev VPN ni uspešno začeta" -#: ../cli/src/connections.c:1153 +#: ../cli/src/connections.c:1234 msgid "no valid VPN secrets" msgstr "ni veljavnih VPN skrivnosti" -#: ../cli/src/connections.c:1155 +#: ../cli/src/connections.c:1236 msgid "invalid VPN secrets" msgstr "neveljavne VPN skrivnosti" -#: ../cli/src/connections.c:1157 +#: ../cli/src/connections.c:1238 msgid "the connection was removed" msgstr "povezava je odstranjena" -#: ../cli/src/connections.c:1171 +#: ../cli/src/connections.c:1252 #, c-format msgid "state: %s\n" msgstr "stanje: %s\n" -#: ../cli/src/connections.c:1174 -#: ../cli/src/connections.c:1200 +#: ../cli/src/connections.c:1255 +#: ../cli/src/connections.c:1281 #, c-format msgid "Connection activated\n" msgstr "Povezava je omogočena\n" -#: ../cli/src/connections.c:1177 +#: ../cli/src/connections.c:1258 #, c-format msgid "Error: Connection activation failed." msgstr "Napaka: začenjanje povezave ni uspelo." -#: ../cli/src/connections.c:1196 +#: ../cli/src/connections.c:1277 #, c-format msgid "state: %s (%d)\n" msgstr "stanje: %s (%d)\n" -#: ../cli/src/connections.c:1206 +#: ../cli/src/connections.c:1287 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Napaka: začenjanje povezave ni uspelo: %s." -#: ../cli/src/connections.c:1223 -#: ../cli/src/devices.c:909 +#: ../cli/src/connections.c:1304 +#: ../cli/src/devices.c:1136 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Napaka: časovna omejitev %d sekund je potekla." -#: ../cli/src/connections.c:1266 +#: ../cli/src/connections.c:1317 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Napaka: začenjanje povezave ni uspelo: %s." -#: ../cli/src/connections.c:1280 -#, c-format -msgid "Error: Obtaining active connection for '%s' failed." -msgstr "Napaka: pridobivanje dejavne povezave '%s' je spodletelo." - -#: ../cli/src/connections.c:1289 +#: ../cli/src/connections.c:1323 #, c-format msgid "Active connection state: %s\n" msgstr "Stanje dejavne povezave: %s\n" -#: ../cli/src/connections.c:1290 +#: ../cli/src/connections.c:1324 #, c-format msgid "Active connection path: %s\n" msgstr "Pot dejavne povezave: %s\n" -#: ../cli/src/connections.c:1344 -#: ../cli/src/connections.c:1465 +#: ../cli/src/connections.c:1376 +#: ../cli/src/connections.c:1517 #, c-format msgid "Error: Unknown connection: %s." msgstr "Napaka: neznana povezava: %s." -#: ../cli/src/connections.c:1379 -#: ../cli/src/devices.c:980 +#: ../cli/src/connections.c:1422 +#: ../cli/src/devices.c:1208 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Napaka: vrednost časovne omejitve '%s' ni veljavna." -#: ../cli/src/connections.c:1392 -#: ../cli/src/connections.c:1482 +#: ../cli/src/connections.c:1435 +#: ../cli/src/connections.c:1534 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Napaka: podatek id ali uuid ni naveden." -#: ../cli/src/connections.c:1412 +#: ../cli/src/connections.c:1463 #, c-format msgid "Error: No suitable device found: %s." msgstr "Napaka: ni mogoče najti ustrezne naprave: %s." -#: ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1465 #, c-format msgid "Error: No suitable device found." msgstr "Napaka: ni mogoče najti ustrezne naprave." -#: ../cli/src/connections.c:1509 +#: ../cli/src/connections.c:1570 #, c-format msgid "Warning: Connection not active\n" msgstr "Opozorilo: povezava ni dejavna\n" -#: ../cli/src/connections.c:1566 +#: ../cli/src/connections.c:1608 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Napaka: ukaz 'con' '%s' ni veljaven." -#: ../cli/src/connections.c:1602 +#: ../cli/src/connections.c:1673 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Napaka: povezava z D-Bus ni mogoča." -#: ../cli/src/connections.c:1609 +#: ../cli/src/connections.c:1680 #, c-format msgid "Error: Could not get system settings." msgstr "Napaka: ni mogoče pridobiti sistemskih nastavitev." -#: ../cli/src/connections.c:1617 -#, c-format -msgid "Error: Could not get user settings." -msgstr "Napaka: ni mogoče pridobiti uporabniških nastavitev." - -#: ../cli/src/connections.c:1627 +#: ../cli/src/connections.c:1690 #, c-format -msgid "Error: Can't obtain connections: settings services are not running." -msgstr "Napaka: ni mogoče pridobiti povezave: storitve nastavitev niso zagnane." +msgid "Error: Can't obtain connections: settings service is not running." +msgstr "Napaka: ni mogoče pridobiti povezav: storitev nastavitev ni zagnana." #. 0 #. 9 -#: ../cli/src/devices.c:61 -#: ../cli/src/devices.c:89 -#: ../cli/src/devices.c:184 +#. 3 +#: ../cli/src/devices.c:66 +#: ../cli/src/devices.c:102 +#: ../cli/src/devices.c:212 +#: ../cli/src/devices.c:228 msgid "DEVICE" msgstr "NAPRAVA" #. 1 #. 4 -#. 0 -#: ../cli/src/devices.c:63 -#: ../cli/src/devices.c:93 -#: ../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 "STANJE" -#: ../cli/src/devices.c:72 +#: ../cli/src/devices.c:78 msgid "GENERAL" msgstr "SPLOŠNO" #. 0 -#: ../cli/src/devices.c:73 +#: ../cli/src/devices.c:79 msgid "CAPABILITIES" msgstr "ZMOŽNOSTI" #. 1 -#: ../cli/src/devices.c:74 +#: ../cli/src/devices.c:80 msgid "WIFI-PROPERTIES" msgstr "WIFI-LASTNOSTI" #. 2 -#: ../cli/src/devices.c:75 +#: ../cli/src/devices.c:81 msgid "AP" msgstr "AP" #. 3 -#: ../cli/src/devices.c:76 +#: ../cli/src/devices.c:82 msgid "WIRED-PROPERTIES" msgstr "LASTNOSTI ŽIČNE POVEZAVE" #. 4 -#: ../cli/src/devices.c:77 +#: ../cli/src/devices.c:83 +msgid "WIMAX-PROPERTIES" +msgstr "WIMAX-LASTNOSTI" + +#. 5 +#. 0 +#: ../cli/src/devices.c:84 +#: ../cli/src/devices.c:225 +msgid "NSP" +msgstr "NSP" + +#. 6 +#: ../cli/src/devices.c:85 msgid "IP4-SETTINGS" msgstr "IP4-NASTAVITVE" -#. 5 -#: ../cli/src/devices.c:78 +#. 7 +#: ../cli/src/devices.c:86 msgid "IP4-DNS" msgstr "IP4-DNS" -#. 6 -#: ../cli/src/devices.c:79 +#. 8 +#: ../cli/src/devices.c:87 msgid "IP6-SETTINGS" msgstr "IP6-NASTAVITVE" -#. 7 -#: ../cli/src/devices.c:80 +#. 9 +#: ../cli/src/devices.c:88 msgid "IP6-DNS" msgstr "IP6-DNS" #. 2 -#: ../cli/src/devices.c:91 +#: ../cli/src/devices.c:104 msgid "DRIVER" msgstr "GONILNIK" #. 3 -#: ../cli/src/devices.c:92 +#: ../cli/src/devices.c:105 msgid "HWADDR" msgstr "HWADDR" #. 0 -#: ../cli/src/devices.c:102 +#: ../cli/src/devices.c:115 msgid "CARRIER-DETECT" msgstr "ZAZNAVA-OPERATERJA" #. 1 -#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:116 msgid "SPEED" msgstr "HITROST" #. 0 -#: ../cli/src/devices.c:112 +#: ../cli/src/devices.c:125 msgid "CARRIER" msgstr "OPERATER" #. 0 -#: ../cli/src/devices.c:122 +#: ../cli/src/devices.c:135 msgid "WEP" msgstr "WEP" #. 1 -#: ../cli/src/devices.c:123 +#: ../cli/src/devices.c:136 msgid "WPA" msgstr "WPA" #. 2 -#: ../cli/src/devices.c:124 +#: ../cli/src/devices.c:137 msgid "WPA2" msgstr "WPA2" #. 3 -#: ../cli/src/devices.c:125 +#: ../cli/src/devices.c:138 msgid "TKIP" msgstr "TKIP" #. 4 -#: ../cli/src/devices.c:126 +#: ../cli/src/devices.c:139 msgid "CCMP" msgstr "CCMP" #. 0 -#: ../cli/src/devices.c:135 -#: ../cli/src/devices.c:146 +#: ../cli/src/devices.c:149 +msgid "CTR-FREQ" +msgstr "CTR-FREQ" + +#. 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 "TX-POW" + +#. 4 +#: ../cli/src/devices.c:153 +msgid "BSID" +msgstr "BSID" + +#. 0 +#: ../cli/src/devices.c:163 +#: ../cli/src/devices.c:174 msgid "ADDRESS" msgstr "NASLOV" #. 1 -#: ../cli/src/devices.c:136 -#: ../cli/src/devices.c:147 +#: ../cli/src/devices.c:164 +#: ../cli/src/devices.c:175 msgid "PREFIX" msgstr "PREDPONA" #. 2 -#: ../cli/src/devices.c:137 -#: ../cli/src/devices.c:148 +#: ../cli/src/devices.c:165 +#: ../cli/src/devices.c:176 msgid "GATEWAY" msgstr "PREHOD" #. 0 -#: ../cli/src/devices.c:157 -#: ../cli/src/devices.c:166 +#: ../cli/src/devices.c:185 +#: ../cli/src/devices.c:194 msgid "DNS" msgstr "DNS" #. 0 -#: ../cli/src/devices.c:175 +#: ../cli/src/devices.c:203 msgid "SSID" msgstr "SSID" #. 1 -#: ../cli/src/devices.c:176 +#: ../cli/src/devices.c:204 msgid "BSSID" msgstr "BSSID" #. 2 -#: ../cli/src/devices.c:177 +#: ../cli/src/devices.c:205 msgid "MODE" msgstr "NAČIN" #. 3 -#: ../cli/src/devices.c:178 +#: ../cli/src/devices.c:206 msgid "FREQ" msgstr "FREKVENCA" #. 4 -#: ../cli/src/devices.c:179 +#: ../cli/src/devices.c:207 msgid "RATE" msgstr "HITROST" #. 5 -#: ../cli/src/devices.c:180 +#. 1 +#: ../cli/src/devices.c:208 +#: ../cli/src/devices.c:226 msgid "SIGNAL" msgstr "SIGNAL" #. 6 -#: ../cli/src/devices.c:181 +#: ../cli/src/devices.c:209 msgid "SECURITY" msgstr "VARNOST" #. 7 -#: ../cli/src/devices.c:182 +#: ../cli/src/devices.c:210 msgid "WPA-FLAGS" msgstr "WPA-ZASTAVICE" #. 8 -#: ../cli/src/devices.c:183 +#: ../cli/src/devices.c:211 msgid "RSN-FLAGS" msgstr "RSN-ZASTAVICE" #. 10 -#: ../cli/src/devices.c:185 +#. 4 +#: ../cli/src/devices.c:213 +#: ../cli/src/devices.c:229 msgid "ACTIVE" msgstr "DEJAVNO" -#: ../cli/src/devices.c:208 +#: ../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 "" "Uporaba: nmcli dev { UKAZ | help }\n" "\n" +"UKAZ := { status | list | disconnect | wifi | wimax }\n" +"\n" "UKAZ := { 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" +" status\n" +" list [iface <iface>]\n" +" disconnect iface <vmesnik> [--nowait] [--timeout <zakasnitev>]\n" +" wifi [list [iface <vmesnik>] [hwaddr <strojna-oprema>]]\n" +" wimax [list [iface <vmesnik>] [nsp <ime>]]\n" "\n" -#: ../cli/src/devices.c:228 +#: ../cli/src/devices.c:284 msgid "unmanaged" msgstr "neupravljano" -#: ../cli/src/devices.c:230 +#: ../cli/src/devices.c:286 msgid "unavailable" msgstr "ni razpoložljivo" -#: ../cli/src/devices.c:232 -#: ../cli/src/network-manager.c:91 +#: ../cli/src/devices.c:288 +#: ../cli/src/network-manager.c:115 msgid "disconnected" msgstr "povezava je prekinjena" -#: ../cli/src/devices.c:234 +#: ../cli/src/devices.c:290 msgid "connecting (prepare)" msgstr "povezovanje (priprava)" -#: ../cli/src/devices.c:236 +#: ../cli/src/devices.c:292 msgid "connecting (configuring)" msgstr "povezovanje (nastavljanje)" -#: ../cli/src/devices.c:238 +#: ../cli/src/devices.c:294 msgid "connecting (need authentication)" msgstr "povezovanje (zahteva overitev)" -#: ../cli/src/devices.c:240 +#: ../cli/src/devices.c:296 msgid "connecting (getting IP configuration)" msgstr "povezovanje (pridobivanje nastavitev IP)" -#: ../cli/src/devices.c:242 -#: ../cli/src/network-manager.c:89 +#: ../cli/src/devices.c:298 +msgid "connecting (checking IP connectivity)" +msgstr "povezovanje (preverjanje povezljivosti IP)" + +#: ../cli/src/devices.c:300 +msgid "connecting (starting secondary connections)" +msgstr "povezovanje (zagon drugotnih povezav)" + +#: ../cli/src/devices.c:302 +#: ../cli/src/network-manager.c:111 msgid "connected" msgstr "povezano" -#: ../cli/src/devices.c:244 +#: ../cli/src/devices.c:306 msgid "connection failed" msgstr "povezava je spodletela" -#: ../cli/src/devices.c:267 -#: ../cli/src/devices.c:424 +#: ../cli/src/devices.c:331 +#: ../cli/src/devices.c:341 +#: ../cli/src/devices.c:501 +#: ../cli/src/devices.c:545 msgid "Unknown" msgstr "Neznano" -#: ../cli/src/devices.c:299 +#: ../cli/src/devices.c:374 msgid "(none)" msgstr "(brez)" -#: ../cli/src/devices.c:324 +#: ../cli/src/devices.c:399 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: napaka med pretvarjanjem naslova IP4 0x%X" -#: ../cli/src/devices.c:393 +#: ../cli/src/devices.c:470 #, c-format msgid "%u MHz" msgstr "%u MHz" -#: ../cli/src/devices.c:394 +#: ../cli/src/devices.c:471 #, c-format msgid "%u MB/s" msgstr "%u MB/s" -#: ../cli/src/devices.c:403 +#: ../cli/src/devices.c:480 msgid "Encrypted: " msgstr "Šifrirano: " -#: ../cli/src/devices.c:408 +#: ../cli/src/devices.c:485 msgid "WEP " msgstr "WEP " -#: ../cli/src/devices.c:410 +#: ../cli/src/devices.c:487 msgid "WPA " msgstr "WPA " -#: ../cli/src/devices.c:412 +#: ../cli/src/devices.c:489 msgid "WPA2 " msgstr "WPA2 " -#: ../cli/src/devices.c:415 +#: ../cli/src/devices.c:492 msgid "Enterprise " msgstr "Podjetniški " -#: ../cli/src/devices.c:424 +#: ../cli/src/devices.c:501 msgid "Ad-Hoc" msgstr "Ad-Hoc" -#: ../cli/src/devices.c:424 +#: ../cli/src/devices.c:501 msgid "Infrastructure" msgstr "infrastruktura" -#: ../cli/src/devices.c:486 +#: ../cli/src/devices.c:536 +msgid "Home" +msgstr "Domov" + +#: ../cli/src/devices.c:539 +msgid "Partner" +msgstr "Partner" + +#: ../cli/src/devices.c:542 +msgid "Roaming" +msgstr "Gostovanje" + +#: ../cli/src/devices.c:612 #, c-format msgid "Error: 'dev list': %s" msgstr "Napaka: 'dev list': %s" -#: ../cli/src/devices.c:488 +#: ../cli/src/devices.c:614 #, c-format msgid "Error: 'dev list': %s; allowed fields: %s" msgstr "Napaka: 'dev list': %s; dovoljena polja: %s" -#: ../cli/src/devices.c:497 +#: ../cli/src/devices.c:623 msgid "Device details" msgstr "Podrobnosti naprave" -#: ../cli/src/devices.c:527 -#: ../cli/src/devices.c:925 +#: ../cli/src/devices.c:657 +#: ../cli/src/devices.c:1152 +#: ../cli/src/utils.c:342 msgid "(unknown)" msgstr "(neznano)" -#: ../cli/src/devices.c:528 +#: ../cli/src/devices.c:658 msgid "unknown)" msgstr "neznano)" -#: ../cli/src/devices.c:554 +#: ../cli/src/devices.c:684 #, c-format msgid "%u Mb/s" msgstr "%u Mb/s" #. Print header #. "WIRED-PROPERTIES" -#: ../cli/src/devices.c:627 +#: ../cli/src/devices.c:757 msgid "on" msgstr "omogočeno" -#: ../cli/src/devices.c:627 +#: ../cli/src/devices.c:757 msgid "off" msgstr "onemogočeno" -#: ../cli/src/devices.c:808 +#: ../cli/src/devices.c:1004 #, c-format msgid "Error: 'dev status': %s" msgstr "Napaka: 'dev status': %s" -#: ../cli/src/devices.c:810 +#: ../cli/src/devices.c:1006 #, c-format msgid "Error: 'dev status': %s; allowed fields: %s" msgstr "Napaka: 'dev status': %s; dovoljena polja: %s" -#: ../cli/src/devices.c:817 +#: ../cli/src/devices.c:1029 msgid "Status of devices" msgstr "Stanje naprav" -#: ../cli/src/devices.c:845 +#: ../cli/src/devices.c:1060 #, c-format msgid "Error: '%s' argument is missing." msgstr "Napaka: manjka argument '%s'" -#: ../cli/src/devices.c:874 -#: ../cli/src/devices.c:1013 -#: ../cli/src/devices.c:1136 +#: ../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 "Napaka: naprave '%s' ni mogoče najti" -#: ../cli/src/devices.c:897 +#: ../cli/src/devices.c:1124 #, c-format msgid "Success: Device '%s' successfully disconnected." msgstr "Obvestilo: povezava naprave '%s' je uspešno prekinjena." -#: ../cli/src/devices.c:922 +#: ../cli/src/devices.c:1149 #, c-format msgid "Error: Device '%s' (%s) disconnecting failed: %s" msgstr "Napaka: prišlo je do napake med prekinjanjem naprave '%s' (%s): %s" -#: ../cli/src/devices.c:930 +#: ../cli/src/devices.c:1157 #, c-format msgid "Device state: %d (%s)\n" msgstr "Stanje naprave: %d (%s)\n" -#: ../cli/src/devices.c:994 +#: ../cli/src/devices.c:1222 #, c-format msgid "Error: iface has to be specified." msgstr "Napaka: iface nastavitev mora določena." -#: ../cli/src/devices.c:1112 +#: ../cli/src/devices.c:1347 #, c-format msgid "Error: 'dev wifi': %s" msgstr "Napaka: 'dev wifi': %s" -#: ../cli/src/devices.c:1114 +#: ../cli/src/devices.c:1349 #, c-format msgid "Error: 'dev wifi': %s; allowed fields: %s" msgstr "Napaka: 'dev wifi': %s; dovoljena polja: %s" -#: ../cli/src/devices.c:1121 +#: ../cli/src/devices.c:1372 msgid "WiFi scan list" msgstr "WiFi seznam preiskovanja" -#: ../cli/src/devices.c:1156 -#: ../cli/src/devices.c:1210 +#: ../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 "Napaka: dostopne točke s strojnim naslovom '%s' ni mogoče najti." -#: ../cli/src/devices.c:1173 +#: ../cli/src/devices.c:1426 #, c-format msgid "Error: Device '%s' is not a WiFi device." msgstr "Napaka: naprava '%s' ni veljavna WiFi naprava." -#: ../cli/src/devices.c:1237 +#: ../cli/src/devices.c:1490 #, c-format msgid "Error: 'dev wifi' command '%s' is not valid." msgstr "Napaka: 'dev wifi' ukaz '%s' ni veljaven." -#: ../cli/src/devices.c:1284 +#: ../cli/src/devices.c:1566 +#, c-format +msgid "Error: 'dev wimax': %s" +msgstr "Napaka: 'dev wimax': %s" + +#: ../cli/src/devices.c:1568 +#, c-format +msgid "Error: 'dev wimax': %s; allowed fields: %s" +msgstr "Napaka: 'dev wimax': %s; dovoljena polja: %s" + +#: ../cli/src/devices.c:1591 +msgid "WiMAX NSP list" +msgstr "Seznam ponudnikov storitev WiMAX" + +#: ../cli/src/devices.c:1628 +#, c-format +msgid "Error: NSP with name '%s' not found." +msgstr "Napaka: ponudnika omrežnih storitev '%s' ni mogoče najti" + +#: ../cli/src/devices.c:1639 +#, c-format +msgid "Error: Device '%s' is not a WiMAX device." +msgstr "Napaka: naprava '%s' ni naprava WiMAX." + +#: ../cli/src/devices.c:1697 +#, c-format +msgid "Error: 'dev wimax' command '%s' is not valid." +msgstr "Napaka: 'dev wimax' ukaz '%s' ni veljaven." + +#: ../cli/src/devices.c:1747 #, c-format msgid "Error: 'dev' command '%s' is not valid." msgstr "Napaka: 'dev' ukaz '%s' ni veljaven." -#: ../cli/src/network-manager.c:35 +#: ../cli/src/network-manager.c:37 msgid "RUNNING" msgstr "V TEKU" -#. 1 -#: ../cli/src/network-manager.c:37 +#. 0 +#: ../cli/src/network-manager.c:38 +msgid "VERSION" +msgstr "RAZLIČICA" + +#. 2 +#: ../cli/src/network-manager.c:40 msgid "NET-ENABLED" msgstr "NET-OMOGOČENO" -#. 2 -#: ../cli/src/network-manager.c:38 +#. 3 +#: ../cli/src/network-manager.c:41 msgid "WIFI-HARDWARE" msgstr "WIFI-STROJNA OPREMA" -#. 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-STROJNA OPREMA" -#. 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 "WIFI-STROJNA OPREMA" + +#. 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" @@ -981,137 +1127,171 @@ msgid "" " sleep [true|false]\n" " wifi [on|off]\n" " wwan [on|off]\n" +" wimax [on|off]\n" "\n" msgstr "" "Uporaba: nmcli nm { UKAZ | help }\n" "\n" -" UKAZ := { status | enable | sleep | wifi | wwan }\n" +" UKAZ := { status | enable | sleep | wifi | wwan | wimax}\n" +"\n" +" UKAZ := { status | enable | sleep | wifi | wwan}\n" "\n" " status\n" " enable [true|false]\n" " 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 "v mirovanju" -#: ../cli/src/network-manager.c:87 +#: ../cli/src/network-manager.c:105 msgid "connecting" msgstr "povezovanje" -#: ../cli/src/network-manager.c:128 +#: ../cli/src/network-manager.c:107 +msgid "connected (local only)" +msgstr "povezan (le krajevno)" + +#: ../cli/src/network-manager.c:109 +msgid "connected (site only)" +msgstr "povezan (le mesto)" + +#: ../cli/src/network-manager.c:113 +msgid "disconnecting" +msgstr "prekinjanje povezave" + +#: ../cli/src/network-manager.c:153 #, c-format msgid "Error: 'nm status': %s" msgstr "Napaka: '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 "Napaka: 'nm status': %s; dovoljena polja: %s" -#: ../cli/src/network-manager.c:137 -msgid "NetworkManager status" -msgstr "Stanje 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 +#. 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:328 +#: ../cli/src/network-manager.c:351 +#: ../cli/src/network-manager.c:389 +#: ../cli/src/network-manager.c:428 msgid "enabled" msgstr "omogočeno" -#: ../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: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:328 +#: ../cli/src/network-manager.c:351 +#: ../cli/src/network-manager.c:389 +#: ../cli/src/network-manager.c:428 msgid "disabled" msgstr "onemogočeno" -#: ../cli/src/network-manager.c:152 +#: ../cli/src/network-manager.c:188 +msgid "NetworkManager status" +msgstr "Stanje NetworkManager" + +#. Print header +#: ../cli/src/network-manager.c:191 msgid "running" msgstr "v teku" -#: ../cli/src/network-manager.c:152 +#: ../cli/src/network-manager.c:191 msgid "not running" msgstr "ni v teku" -#: ../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 "Napaka: ni se mogoče povezati s sistemskim vodilom: %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 "Napaka: ni mogoče ustvariti posredniškega predmeta vodila D-Bus." -#: ../cli/src/network-manager.c:192 +#: ../cli/src/network-manager.c:239 #, c-format msgid "Error in sleep: %s" msgstr "Napaka v mirovanju: %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 "Napaka: vrednost '--fields' '%s' ni veljavna, dovoljena polja: %s" -#: ../cli/src/network-manager.c:245 +#: ../cli/src/network-manager.c:291 msgid "Networking enabled" msgstr "Omrežje je omogočeno" -#: ../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 "Napaka: neveljaven parameter 'enable': '%s'; uporabite 'true' ali '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 "Napaka: stanje v mirovanju ni izvoženo s programom 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 "Napaka: neveljaven parameter 'sleep': '%s'; uporabite 'true' ali 'false'." -#: ../cli/src/network-manager.c:294 +#: ../cli/src/network-manager.c:346 msgid "WiFi enabled" msgstr "WiFi je omogočen" -#: ../cli/src/network-manager.c:305 +#: ../cli/src/network-manager.c:362 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Napaka: neveljaven 'wifi' parameter: '%s'." -#: ../cli/src/network-manager.c:326 +#: ../cli/src/network-manager.c:384 msgid "WWAN enabled" msgstr "WWAN je omogočen" -#: ../cli/src/network-manager.c:337 +#: ../cli/src/network-manager.c:400 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Napaka: neveljaven 'wwan' parameter: '%s'." -#: ../cli/src/network-manager.c:348 +#: ../cli/src/network-manager.c:423 +msgid "WiMAX enabled" +msgstr "WiMAX je omogočen" + +#: ../cli/src/network-manager.c:439 +#, c-format +msgid "Error: invalid 'wimax' parameter: '%s'." +msgstr "Napaka: neveljaven parameter 'wimax': '%s'." + +#: ../cli/src/network-manager.c:452 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Napaka: ukaz 'nm' '%s' ni veljaven" -#: ../cli/src/nmcli.c:69 +#: ../cli/src/nmcli.c:64 #, c-format msgid "" "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" @@ -1122,6 +1302,7 @@ msgid "" " -m[ode] tabular|multiline output mode\n" " -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" @@ -1134,609 +1315,766 @@ msgstr "" "Uporaba: %s [MOŽNOSTI] PREDMET { UKAZ| help }\n" "\n" "MOŽNOSTI\n" -"-t[erse] zgoščen odvod\n" -"-p[retty] olepšan odvod\n" -"-m[ode] tabular|multiline način odvoda\n" -"-f[ields] <polje1,polje2,...>|all|common določilo polj odvoda\n" -"-e[scape] yes|no izpuščanje ločilnikov vrednosti\n" -"-v[ersion] pokaži različico programa\n" -"-h[elp] natisni pomoč\n" +" -t[erse] zgoščen odvod\n" +" -p[retty] olepšan odvod\n" +" -m[ode] tabular|multiline način odvoda\n" +" -f[ields] <polje1,polje2,...>|all|common določilo polj odvoda\n" +" -e[scape] yes|no izpuščanje ločilnikov vrednosti\n" +" -n[ocheck] ne preverjaj različic nmcli in NetworkManager\n" +" -v[ersion] pokaži različico programa\n" +" -h[elp] natisni pomoč\n" "\n" "PREDMET\n" "nm stanje programa NetworkManager\n" "con povezave programa NetworkManager\n" -"dev naprave upravljane s programom NetworkManager\n" +"dev naprave, upravljane s programom 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 "Napaka: predmeta '%s' ni mogoče prepoznati, poskusite: 'nmcli help'." -#: ../cli/src/nmcli.c:143 +#: ../cli/src/nmcli.c:139 #, c-format msgid "Error: Option '--terse' is specified the second time." msgstr "Napaka: možnost '--terse' je podana dvakrat." -#: ../cli/src/nmcli.c:148 +#: ../cli/src/nmcli.c:144 #, c-format msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." msgstr "Napaka: možnosti \"--terse\" in \"--pretty\" se med seboj izključujeta." -#: ../cli/src/nmcli.c:156 +#: ../cli/src/nmcli.c:152 #, c-format msgid "Error: Option '--pretty' is specified the second time." msgstr "Napaka: možnost '--pretty' je podana dvakrat." -#: ../cli/src/nmcli.c:161 +#: ../cli/src/nmcli.c:157 #, c-format msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." msgstr "Napaka: možnosti \"--pretty\" in \"--tearse\" se med seboj izključujeta." -#: ../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 "Napaka: manjka argument za možnost '%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 "Napaka: '%s' ni veljaven argument za možnost '%s'." -#: ../cli/src/nmcli.c:203 +#: ../cli/src/nmcli.c:199 #, c-format msgid "Error: fields for '%s' options are missing." msgstr "Napaka: polja za možnosti '%s' manjkajo." -#: ../cli/src/nmcli.c:209 +#: ../cli/src/nmcli.c:207 #, c-format msgid "nmcli tool, version %s\n" msgstr "nmcli orodje, različica %s\n" -#: ../cli/src/nmcli.c:215 +#: ../cli/src/nmcli.c:213 #, c-format msgid "Error: Option '%s' is unknown, try 'nmcli -help'." msgstr "Napaka: možnost '%s' ni prepoznana, poskusite 'nmcli -help'." -#: ../cli/src/nmcli.c:234 +#: ../cli/src/nmcli.c:232 #, c-format msgid "Caught signal %d, shutting down..." msgstr "Ujet signal %d, povezava bo izklopljena ..." -#: ../cli/src/nmcli.c:259 -#, c-format -msgid "Error: Could not connect to NetworkManager." -msgstr "Napaka: ni se mogoče povezati s programom NetworkManager." +#: ../cli/src/nmcli.c:257 +msgid "Error: Could not create NMClient object." +msgstr "Napaka: ni mogoče ustvariti predmeta NMClient." -#: ../cli/src/nmcli.c:275 +#: ../cli/src/nmcli.c:273 msgid "Success" msgstr "Uspešno zaključeno" -#: ../cli/src/settings.c:411 +#: ../cli/src/settings.c:423 #, c-format msgid "%d (hex-ascii-key)" msgstr "%d (šestnajstiški-ascii-ključ)" -#: ../cli/src/settings.c:413 +#: ../cli/src/settings.c:425 #, c-format msgid "%d (104/128-bit passphrase)" msgstr "%d (104/128-bitno šifrirno geslo)" -#: ../cli/src/settings.c:416 +#: ../cli/src/settings.c:428 #, c-format msgid "%d (unknown)" msgstr "%d (neznano)" -#: ../cli/src/settings.c:442 +#: ../cli/src/settings.c:454 msgid "0 (unknown)" msgstr "0 (neznano)" -#: ../cli/src/settings.c:448 +#: ../cli/src/settings.c:460 msgid "any, " msgstr "karkoli, " -#: ../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 "samodejno" -#: ../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 "ni nastavljeno" -#: ../cli/src/utils.c:124 +#: ../cli/src/utils.c:128 #, c-format msgid "field '%s' has to be alone" msgstr "polje '%s' mora biti samostojno." -#: ../cli/src/utils.c:127 +#: ../cli/src/utils.c:131 #, c-format msgid "invalid field '%s'" msgstr "neveljavno polje '%s'" -#: ../cli/src/utils.c:146 +#: ../cli/src/utils.c:150 #, c-format msgid "Option '--terse' requires specifying '--fields'" msgstr "Možnost '--terse' zahteva podan argument '--fields'" -#: ../cli/src/utils.c:150 +#: ../cli/src/utils.c:154 #, c-format msgid "Option '--terse' requires specific '--fields' option values , not '%s'" msgstr "Možnost '--terse' zahteva posebne vrednosti '--polja' in ne '%s'" -#: ../libnm-util/crypto.c:120 +#: ../cli/src/utils.c:333 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy for org.freedesktop.DBus" +msgstr "Napaka: ni mogoče ustvariti posredniškega predmeta D-Bus za org.freedesktop.DBus" + +#: ../cli/src/utils.c:341 +#, c-format +msgid "Error: NameHasOwner request failed: %s" +msgstr "Napaka: zahteva NameHasOwner ni uspela: %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 "Opozorilo: različici nmcli (%s) in NetworkManager (%s) se ne ujemata. Uporabite --nocheck, da onemogočite opozorilo.\n" + +#: ../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 "Napaka: različici nmcli (%s) in NetworkManager (%s) se ne ujemata. Izvajanje vsilite z --nocheck, rezultati pa niso napovedljivi." + +#: ../libnm-util/crypto.c:133 #, c-format msgid "PEM key file had no end tag '%s'." msgstr "Datoteka ključa PEM nima končne oznake '%s'." -#: ../libnm-util/crypto.c:130 +#: ../libnm-util/crypto.c:146 #, c-format msgid "Doesn't look like a PEM private key file." msgstr "Datoteka ni videti kot PEM datoteka zasebnega ključa." -#: ../libnm-util/crypto.c:138 +#: ../libnm-util/crypto.c:154 #, c-format msgid "Not enough memory to store PEM file data." msgstr "Ni dovolj pomnilnika za shranjevanje podatkov datoteke PEM." -#: ../libnm-util/crypto.c:154 +#: ../libnm-util/crypto.c:170 #, c-format msgid "Malformed PEM file: Proc-Type was not first tag." msgstr "Slabo oblikovana datoteka PEM: Proc-Type ni prva oznaka." -#: ../libnm-util/crypto.c:162 +#: ../libnm-util/crypto.c:178 #, c-format msgid "Malformed PEM file: unknown Proc-Type tag '%s'." msgstr "Slabo oblikovana datoteka PEM: neznana oznaka Proc-Type '%s'" -#: ../libnm-util/crypto.c:172 +#: ../libnm-util/crypto.c:188 #, c-format msgid "Malformed PEM file: DEK-Info was not the second tag." msgstr "Slabo oblikovana datoteka PEM: DEK-Info ni druga oznaka." -#: ../libnm-util/crypto.c:183 +#: ../libnm-util/crypto.c:199 #, c-format msgid "Malformed PEM file: no IV found in DEK-Info tag." msgstr "Slabo oblikovana datoteka PEM: IV ni mogoče najti v DEK-Info oznaki." -#: ../libnm-util/crypto.c:190 +#: ../libnm-util/crypto.c:206 #, c-format msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." msgstr "Slabo oblikovana datoteka PEM: neveljavna oblika IV v DEK-Info oznaki." -#: ../libnm-util/crypto.c:203 +#: ../libnm-util/crypto.c:219 #, c-format msgid "Malformed PEM file: unknown private key cipher '%s'." msgstr "Slabo oblikovana datoteka PEM: neznana cifra zasebnega ključa '%s'." -#: ../libnm-util/crypto.c:222 +#: ../libnm-util/crypto.c:238 #, c-format msgid "Could not decode private key." msgstr "Zasebnega ključa ni mogoče odkodirati." -#: ../libnm-util/crypto.c:267 -#, c-format -msgid "PEM certificate '%s' had no end tag '%s'." -msgstr "PEM potrdilo '%s' nima končne oznake '%s'." +#: ../libnm-util/crypto.c:284 +msgid "Failed to find expected PKCS#8 start tag." +msgstr "Pričakovane začetne oznake PKCS#8 ni mogoče najti." -#: ../libnm-util/crypto.c:277 +#: ../libnm-util/crypto.c:292 #, c-format -msgid "Failed to decode certificate." -msgstr "Odkodiranje potrdila je spodletelo." +msgid "Failed to find expected PKCS#8 end tag '%s'." +msgstr "Pričakovane končne oznake PKCS#8 '%s' ni mogoče najti." + +#: ../libnm-util/crypto.c:312 +msgid "Not enough memory to store private key data." +msgstr "Ni dovolj pomnilnika za shranjevanje podatkov zasebnega ključa." -#: ../libnm-util/crypto.c:286 +#: ../libnm-util/crypto.c:317 +msgid "Failed to decode PKCS#8 private key." +msgstr "Odkodiranje zasebnega ključa PKCS#8 je spodletelo." + +#: ../libnm-util/crypto.c:339 +#: ../libnm-util/crypto.c:625 #, c-format msgid "Not enough memory to store certificate data." msgstr "Ni dovolj pomnilnika za shranjevanje podatkov potrdila." -#: ../libnm-util/crypto.c:294 -#, c-format -msgid "Not enough memory to store file data." -msgstr "Ni dovolj pomnilnika za shranjevanje podatkov datoteke." - -#: ../libnm-util/crypto.c:324 +#: ../libnm-util/crypto.c:365 #, c-format msgid "IV must be an even number of bytes in length." msgstr "IV mora biti dolg sodo število bajtov." -#: ../libnm-util/crypto.c:333 +#: ../libnm-util/crypto.c:374 #, c-format msgid "Not enough memory to store the IV." msgstr "Za shranjevanje IV ni dovolj pomnilnika." -#: ../libnm-util/crypto.c:344 +#: ../libnm-util/crypto.c:385 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV vsebuje ne-šestnajstiške številke." -#: ../libnm-util/crypto.c:382 -#: ../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:423 +#: ../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 "Cifra zasebnega ključa '%s' je neznana." -#: ../libnm-util/crypto.c:391 +#: ../libnm-util/crypto.c:432 #, c-format msgid "Not enough memory to decrypt private key." msgstr "Ni dovolj pomnilnika za dešifriranje zasebnega ključa." -#: ../libnm-util/crypto.c:511 +#: ../libnm-util/crypto.c:497 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Ni dovolj pomnilnika za shranjevanje odšifriranega zasebnega ključa." + +#: ../libnm-util/crypto.c:542 #, c-format msgid "Unable to determine private key type." msgstr "Ni mogoče določiti vrste zasebnega ključa." -#: ../libnm-util/crypto.c:530 +#: ../libnm-util/crypto.c:597 #, c-format -msgid "Not enough memory to store decrypted private key." -msgstr "Ni dovolj pomnilnika za shranjevanje odšifriranega zasebnega ključa." +msgid "PEM certificate had no start tag '%s'." +msgstr "Potrdilo PEM nima začetne oznake '%s'." -#: ../libnm-util/crypto_gnutls.c:49 +#: ../libnm-util/crypto.c:606 +#, c-format +msgid "PEM certificate had no end tag '%s'." +msgstr "Potrdilo PEM nima končne oznake '%s'." + +#: ../libnm-util/crypto.c:630 +#, c-format +msgid "Failed to decode certificate." +msgstr "Odkodiranje potrdila je spodletelo." + +#: ../libnm-util/crypto_gnutls.c:50 msgid "Failed to initialize the crypto engine." msgstr "Začenjanje programnika šifriranja je spodletelo." -#: ../libnm-util/crypto_gnutls.c:93 +#: ../libnm-util/crypto_gnutls.c:92 #, c-format msgid "Failed to initialize the MD5 engine: %s / %s." msgstr "Začenjanje programnika MD5 je spodletelo: %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 "Neveljavna dolžina IV (mora biti vsaj %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 "Ni dovolj pomnilnika za medpomnilnik odšifriranega ključa." -#: ../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 "Začenjanje vsebine odšifrirne cifre je spodletelo: %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 "Nastavljanje simetričnega ključa za odšifriranje je spodletelo: %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 "Nastavljanje IV za odšifriranje je spodletelo: %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 "Odšifriranje zasebnega ključa je spodletelo: %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 "Odšifriranje zasebnega ključa je spodletelo: nepričakovana dolžina blazinjenja." -#: ../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 "Odšifriranje zasebnega ključa je spodletelo." -#: ../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 "Ni mogoče dodeliti pomnilnika za šifriranje." -#: ../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 "Začenjanje vsebine šifrirne cifre je spodletelo: %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 "Nastavitev simetričnega ključa za šifriranje je spodletela: %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 "Nastavitev IV za šifriranje je spodletela: %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 "Šifriranje podatkov je spodletelo: %s / %s." -#: ../libnm-util/crypto_gnutls.c:362 +#: ../libnm-util/crypto_gnutls.c:361 #, c-format msgid "Error initializing certificate data: %s" msgstr "Napaka med zaganjanjem podatkov potrdila: %s" -#: ../libnm-util/crypto_gnutls.c:384 +#: ../libnm-util/crypto_gnutls.c:383 #, c-format msgid "Couldn't decode certificate: %s" msgstr "Potrdila ni mogoča odkodirati: %s" -#: ../libnm-util/crypto_gnutls.c:408 +#: ../libnm-util/crypto_gnutls.c:407 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "Odkodirnika PKCS#12 ni mogoče začeti: %s" -#: ../libnm-util/crypto_gnutls.c:421 +#: ../libnm-util/crypto_gnutls.c:420 #, c-format msgid "Couldn't decode PKCS#12 file: %s" msgstr "Datoteke PKCS#12 ni mogoče odkodirati: %s" -#: ../libnm-util/crypto_gnutls.c:433 +#: ../libnm-util/crypto_gnutls.c:432 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "Datoteke PKCS#12 ni mogoče preveriti: %s" +#: ../libnm-util/crypto_gnutls.c:460 +#, c-format +msgid "Couldn't initialize PKCS#8 decoder: %s" +msgstr "Odkodirnika PKCS#8 ni mogoče zagnati: %s" + +#: ../libnm-util/crypto_gnutls.c:483 +#, c-format +msgid "Couldn't decode PKCS#8 file: %s" +msgstr "Datoteke PKCS#8 ni mogoče odkodirati: %s" + #: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "Začenjanje programnika šifriranja je spodletelo: %d." -#: ../libnm-util/crypto_nss.c:111 +#: ../libnm-util/crypto_nss.c:107 #, c-format msgid "Failed to initialize the MD5 context: %d." msgstr "Začenjanje vsebine MD5 je spodletelo: %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 "Neveljavna dolžina IV (mora biti vsaj %d)." -#: ../libnm-util/crypto_nss.c:196 +#: ../libnm-util/crypto_nss.c:192 #, c-format msgid "Failed to initialize the decryption cipher slot." msgstr "Začenjanje polja cifre odšifriranja je spodletelo." -#: ../libnm-util/crypto_nss.c:206 +#: ../libnm-util/crypto_nss.c:202 #, c-format msgid "Failed to set symmetric key for decryption." msgstr "Nastavljanje simetričnega ključa za opis je spodletelo." -#: ../libnm-util/crypto_nss.c:216 +#: ../libnm-util/crypto_nss.c:212 #, c-format msgid "Failed to set IV for decryption." msgstr "Nastavljanje IV za odšifriranje je spodletelo." -#: ../libnm-util/crypto_nss.c:224 +#: ../libnm-util/crypto_nss.c:220 #, c-format msgid "Failed to initialize the decryption context." msgstr "Začenjanje vsebine odšifriranja je spodletelo." -#: ../libnm-util/crypto_nss.c:237 +#: ../libnm-util/crypto_nss.c:233 #, c-format msgid "Failed to decrypt the private key: %d." msgstr "Odšifriranje zasebnega ključa je spodletelo: %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 "Odšifriranje zasebnega ključa je spodletelo: odšifrirani podatki so preveliki." -#: ../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 "Končanje odšifriranja zasebnega ključa je spodletelo: %d." -#: ../libnm-util/crypto_nss.c:364 +#: ../libnm-util/crypto_nss.c:360 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "Začenjanje polja cifre šifriranja je spodletelo." -#: ../libnm-util/crypto_nss.c:372 +#: ../libnm-util/crypto_nss.c:368 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "Nastavljanje simetričnega ključa za šifriranje je spodletelo." -#: ../libnm-util/crypto_nss.c:380 +#: ../libnm-util/crypto_nss.c:376 #, c-format msgid "Failed to set IV for encryption." msgstr "Nastavljanje IV za šifriranje je spodletelo." -#: ../libnm-util/crypto_nss.c:388 +#: ../libnm-util/crypto_nss.c:384 #, c-format msgid "Failed to initialize the encryption context." msgstr "Začenjanje vsebine šifriranja je spodletelo." -#: ../libnm-util/crypto_nss.c:396 +#: ../libnm-util/crypto_nss.c:392 #, c-format msgid "Failed to encrypt: %d." msgstr "Šifriranje je spodletelo: %d." -#: ../libnm-util/crypto_nss.c:404 +#: ../libnm-util/crypto_nss.c:400 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Nepričakovana količina podatkov po šifriranju." -#: ../libnm-util/crypto_nss.c:447 +#: ../libnm-util/crypto_nss.c:443 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Potrdila ni mogoče odkodirati: %d" -#: ../libnm-util/crypto_nss.c:482 +#: ../libnm-util/crypto_nss.c:478 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "Gesla ni mogoče pretvoriti v 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 "Dekodirnika PKCS#12 ni mogoče začeti: %d" -#: ../libnm-util/crypto_nss.c:519 +#: ../libnm-util/crypto_nss.c:515 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "Datoteke PCKS#12 ni mogoče odkodirati: %d" -#: ../libnm-util/crypto_nss.c:528 +#: ../libnm-util/crypto_nss.c:524 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "Datoteke PCKS#12 ni mogoče preveriti: %d" -#: ../libnm-util/crypto_nss.c:557 +#: ../libnm-util/crypto_nss.c:568 msgid "Could not generate random data." msgstr "Naključnih podatkov ni mogoče ustvariti." -#: ../libnm-util/nm-utils.c:1975 +#: ../libnm-util/nm-utils.c:2000 #, c-format msgid "Not enough memory to make encryption key." msgstr "Ni dovolj pomnilnika za ustvarjanje šifrirnega ključa." -#: ../libnm-util/nm-utils.c:2085 +#: ../libnm-util/nm-utils.c:2110 msgid "Could not allocate memory for PEM file creation." msgstr "Ni mogoče dodeliti pomnilnika za ustvarjanje datoteke PEM." -#: ../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 "Ni mogoče dodeliti pomnilnika za zapis IV v datoteko PEM." -#: ../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 "Ni mogoče dodeliti pomnilnika za zapis šifriranega ključa v datoteko PEM." -#: ../libnm-util/nm-utils.c:2128 +#: ../libnm-util/nm-utils.c:2153 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Ni mogoče dodeliti pomnilnika za podatke datoteke PEM." -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 -msgid "Connection sharing via a protected WiFi network" -msgstr "Souporaba povezave preko zaščitenega WiFi omrežja" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2 -msgid "Connection sharing via an open WiFi network" -msgstr "Souporaba povezave preko odprtega WiFi omrežja" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3 -msgid "Modify persistent system hostname" -msgstr "Spremeni trajno sistemsko ime gostitelja" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4 -msgid "Modify system connections" -msgstr "Spremeni sistemske povezave" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5 -msgid "System policy prevents modification of system settings" -msgstr "Sistemska določila onemogočajo spreminjanje sistemskih nastavitev" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 -msgid "System policy prevents modification of the persistent system hostname" -msgstr "Sistemska pravila preprečujejo spremembo imena gostitelja trajnega sistema" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 -msgid "System policy prevents sharing connections via a protected WiFi network" -msgstr "Sistemska pravila preprečujejo souporabo povezav preko zaščitenega WiFi omrežja" - -#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 -msgid "System policy prevents sharing connections via an open WiFi network" -msgstr "Sistemska pravila preprečujejo souporabo povezav preko odprtega WiFi omrežja" - #: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 msgid "Allow control of network connections" msgstr "Dovoli nadzor omrežnih povezav" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 -msgid "Allow use of user-specific connections" -msgstr "Dovoli uporabo posebnih uporabniških povezav." +msgid "Connection sharing via a protected WiFi network" +msgstr "Souporaba povezave preko zaščitenega WiFi omrežja" #: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Connection sharing via an open WiFi network" +msgstr "Souporaba povezave preko odprtega WiFi omrežja" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 msgid "Enable or disable WiFi devices" msgstr "Omogoči ali onemogoči naprave WiFi" -#: ../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 "Omogoči ali onemogoči mobilne širokopasovne naprave WiMAX" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 msgid "Enable or disable mobile broadband devices" msgstr "Omogoči ali onemogoči naprave mobilnih širokopasovnih storitev" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 msgid "Enable or disable system networking" msgstr "Omogoči ali onemogoči sistemske omrežne povezave" -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "Modify network connections for all users" +msgstr "Spremeni omrežne povezave za vse uporabnike" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "Modify persistent system hostname" +msgstr "Spremeni trajno sistemsko ime gostitelja" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "Modify personal network connections" +msgstr "Spremeni osebne omrežne povezave" + +#: ../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 "Postavi program NetworkManager v mirovanje ali iz njega (možnost je namenjena upravljanju napajanja)" -#: ../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 "Sistemska določila preprečujejo nadzor omrežnih povezav" -#: ../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 "Sistemska določila preprečujejo omogočanja ali onemogočanje WiFi naprav" -#: ../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 "Sistemska določila preprečujejo omogočanje ali onemogočanje mobilnih širokopasovnih naprav WiMAX" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:15 msgid "System policy prevents enabling or disabling mobile broadband devices" msgstr "Sistemska določila preprečuje omogočanja ali onemogočanje mobilne širokopasovne naprave" -#: ../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 "Sistemska določila preprečujejo omogočanje ali onemogočanje omrežnih povezav." -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:17 +msgid "System policy prevents modification of network settings for all users" +msgstr "Sistemska določila preprečujejo spreminjanje sistemskih nastavitev za vse uporabnike" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:18 +msgid "System policy prevents modification of personal network settings" +msgstr "Sistemska določila preprečujejo spreminjanje osebnih omrežnih nastavitev" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:19 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "Sistemska pravila preprečujejo spremembo imena gostitelja trajnega sistema" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:20 msgid "System policy prevents putting NetworkManager to sleep or waking it up" msgstr "Sistemska določila preprečujejo postavitev programa NetworkManager v mirovanje ali iz njega." -#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 -msgid "System policy prevents use of user-specific connections" -msgstr "Sistemska določila preprečujejo uporabo uporabniških povezav." +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:21 +msgid "System policy prevents sharing connections via a protected WiFi network" +msgstr "Sistemska pravila preprečujejo souporabo povezav preko zaščitenega WiFi omrežja" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:22 +msgid "System policy prevents sharing connections via an open WiFi network" +msgstr "Sistemska pravila preprečujejo souporabo povezav preko odprtega WiFi omrežja" + +#: ../src/main.c:530 +#, c-format +msgid "Invalid option. Please use --help to see a list of valid options.\n" +msgstr "Neveljavna možnost. Uporabite --help za seznam veljavnih možnosti.\n" + +#: ../src/main.c:611 +#, c-format +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "%s. Uporabite --help za prikaz seznam veljavnih možnosti.\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:62 +msgid "# Created by NetworkManager\n" +msgstr "#Ustvarjeno z upravljalnikom omrežij\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient-utils.c:69 +#, c-format +msgid "" +"# Merged from %s\n" +"\n" +msgstr "" +"# Združeno iz %s\n" +"\n" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "ni mogoče najti uporabnega odjemalca DHCP." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "'dhclient' je najden." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "'dhcpcd' ni mogoče najti." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "nepodprt odjemalec DHCP '%s'" + +#: ../src/dns-manager/nm-dns-manager.c:376 +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "OPOMBA: razreševalnik libc morda ne podpira več kot 3 imenskih strežnikov." + +#: ../src/dns-manager/nm-dns-manager.c:378 +msgid "The nameservers listed below may not be recognized." +msgstr "Navedeni imenski strežniki morda ne bodo prepoznani." + +#: ../src/logging/nm-logging.c:149 +#, c-format +msgid "Unknown log level '%s'" +msgstr "Neznana raven beleženja '%s'" + +#: ../src/logging/nm-logging.c:174 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "Neznana domena beleženja '%s'" + +#: ../src/modem-manager/nm-modem-cdma.c:296 +#: ../src/nm-device-bt.c:355 +#, c-format +msgid "CDMA connection %d" +msgstr "Povezava CDMA %d" + +#: ../src/modem-manager/nm-modem-gsm.c:499 +#: ../src/nm-device-bt.c:351 +#, c-format +msgid "GSM connection %d" +msgstr "Povezava GSM %d" + +#: ../src/nm-device-bt.c:326 +#, c-format +msgid "PAN connection %d" +msgstr "Povezava PAN %d" + +#: ../src/nm-device-bt.c:359 +#, c-format +msgid "DUN connection %d" +msgstr "Povezava DUN %d" + +#: ../src/nm-device-ethernet.c:1723 +#, c-format +msgid "PPPoE connection %d" +msgstr "Povezava PPPoE %d" + +#: ../src/nm-device-ethernet.c:1723 +#: ../src/settings/nm-settings-utils.c:50 +#, c-format +msgid "Wired connection %d" +msgstr "Žična povezava %d" + +#: ../src/nm-device-olpc-mesh.c:393 +#, c-format +msgid "Mesh %d" +msgstr "Mreža %d" + +#: ../src/nm-manager.c:657 +#, c-format +msgid "VPN connection %d" +msgstr "Povezava VPN %d" #: ../src/nm-netlink-monitor.c:100 #: ../src/nm-netlink-monitor.c:231 @@ -1781,71 +2119,40 @@ msgstr "skupini netlink se ni mogoče pridružiti: %s" msgid "error updating link cache: %s" msgstr "napaka med posodabljanjem predpomnilnika povezave: %s" -#: ../src/main.c:499 -#, c-format -msgid "Invalid option. Please use --help to see a list of valid options.\n" -msgstr "Neveljavna možnost. Uporabite --help za seznam veljavnih možnosti.\n" +#: ../src/settings/plugins/ifcfg-rh/reader.c:3575 +#: ../src/settings/plugins/ifnet/connection_parser.c:51 +msgid "System" +msgstr "Sistem" -#: ../src/main.c:570 -#, c-format -msgid "%s. Please use --help to see a list of valid options.\n" -msgstr "%s. Uporabite --help za prikaz seznam veljavnih možnosti.\n" +#~ msgid "SCOPE" +#~ msgstr "OBSEG" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 -msgid "# Created by NetworkManager\n" -msgstr "#Ustvarjeno z upravljalnikom omrežij\n" +#~ msgid "DBUS-SERVICE" +#~ msgstr "STORITEV-DBUS" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 -#, c-format -msgid "" -"# Merged from %s\n" -"\n" -msgstr "" -"# Združeno iz %s\n" -"\n" +#~ msgid "system" +#~ msgstr "sistem" -#: ../src/dhcp-manager/nm-dhcp-manager.c:284 -msgid "no usable DHCP client could be found." -msgstr "ni mogoče najti uporabnega odjemalca DHCP." +#~ msgid "user" +#~ msgstr "uporabnik" -#: ../src/dhcp-manager/nm-dhcp-manager.c:293 -msgid "'dhclient' could be found." -msgstr "'dhclient' je najden." - -#: ../src/dhcp-manager/nm-dhcp-manager.c:303 -msgid "'dhcpcd' could be found." -msgstr "'dhcpcd' ni mogoče najti." - -#: ../src/dhcp-manager/nm-dhcp-manager.c:311 -#, c-format -msgid "unsupported DHCP client '%s'" -msgstr "nepodprt odjemalec DHCP '%s'" - -#: ../src/logging/nm-logging.c:146 -#, c-format -msgid "Unknown log level '%s'" -msgstr "Neznana raven beleženja '%s'" +#~ msgid "System connections" +#~ msgstr "Sistemske povezave" -#: ../src/logging/nm-logging.c:171 -#, c-format -msgid "Unknown log domain '%s'" -msgstr "Neznana domena beleženja '%s'" +#~ msgid "User connections" +#~ msgstr "Uporabniške povezave" -#: ../src/dns-manager/nm-dns-manager.c:384 -msgid "NOTE: the libc resolver may not support more than 3 nameservers." -msgstr "OPOMBA: razreševalnik libc morda ne podpira več kot 3 imenskih strežnikov." +#~ msgid "Error: Obtaining active connection for '%s' failed." +#~ msgstr "Napaka: pridobivanje dejavne povezave '%s' je spodletelo." -#: ../src/dns-manager/nm-dns-manager.c:386 -msgid "The nameservers listed below may not be recognized." -msgstr "Navedeni imenski strežniki morda ne bodo prepoznani." +#~ msgid "Error: Could not get user settings." +#~ msgstr "Napaka: ni mogoče pridobiti uporabniških nastavitev." -#: ../src/settings/nm-default-wired-connection.c:157 -#, c-format -msgid "Auto %s" -msgstr "Samodejno %s" +#~ msgid "Allow use of user-specific connections" +#~ msgstr "Dovoli uporabo posebnih uporabniških povezav." -#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 -#: ../system-settings/plugins/ifnet/connection_parser.c:49 -msgid "System" -msgstr "Sistem" +#~ msgid "System policy prevents use of user-specific connections" +#~ msgstr "Sistemska določila preprečujejo uporabo uporabniških povezav." +#~ msgid "Auto %s" +#~ msgstr "Samodejno %s" diff --git a/policy/Makefile.in b/policy/Makefile.in index c63e1c5e..739987cd 100644 --- a/policy/Makefile.in +++ b/policy/Makefile.in @@ -177,8 +177,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/policy/org.freedesktop.NetworkManager.policy b/policy/org.freedesktop.NetworkManager.policy index 73689dc9..7f349115 100644 --- a/policy/org.freedesktop.NetworkManager.policy +++ b/policy/org.freedesktop.NetworkManager.policy @@ -146,6 +146,7 @@ <description xml:lang="es">Activar o desactivar los dispositivos inalámbricos</description> <description xml:lang="gl">Activar ou desactivar os dispositivos WiFi</description> <description xml:lang="hi">WiFi युक्तियाँ सक्रिय या निष्क्रिय करें</description> + <description xml:lang="hr">Omogućuje ili onemogućuje WiFi uređaje</description> <description xml:lang="hu">WiFi eszközök be- és kikapcsolása</description> <description xml:lang="id">Aktifkan atau matikan perangkat WiFi</description> <description xml:lang="kn">WiFi ಸಾಧನಗಳನ್ನು ಶಕ್ತಗೊಳಿಸಿ ಅಥವ ಅಶಕ್ತಗೊಳಿಸಿ</description> @@ -209,6 +210,7 @@ <description xml:lang="es">Activar o desactivar los dispositivos de banda ancha móvil</description> <description xml:lang="gl">Activar ou desactivar os dispositivos de banda ancha móbiles</description> <description xml:lang="hi">मोबाइल ब्राडबैंड युक्तियाँ सक्रिय या निष्क्रिय करें</description> + <description xml:lang="hr">Omogućuje ili onemogućuje mobilne širokopojasne uređaje</description> <description xml:lang="hu">Mobil széles sávú eszközök be- és kikapcsolása</description> <description xml:lang="id">Aktifkan atau matikan perangkat broadband bergerak</description> <description xml:lang="kn">ಮೊಬೈಲ್ ಬ್ರಾಡ್ಬ್ಯಾಂಡ್ ಸಾಧನಗಳನ್ನು ಶಕ್ತಗೊಳಿಸಿ ಅಥವ ಅಶಕ್ತಗೊಳಿಸಿ</description> @@ -267,12 +269,15 @@ <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="gl">Activar ou desactivar os dispositivos de banda larga móbil WIMAX</description> + <description xml:lang="hr">Omogućuje ili onemogućuje WiMAX mobilne širokopojasne uređaje</description> <description xml:lang="hu">WiMAX mobil széles sávú eszközök be- és kikapcsolása</description> <description xml:lang="id">Aktifkan atau matikan perangkat broadband bergerak WiMAX</description> <description xml:lang="ko">와이맥스 모바일 광대역 장치 사용 여부</description> <description xml:lang="mr">WiMAX मोबाईल ब्रॉडबँड साधने सुरू किंवा बंद करा</description> <description xml:lang="pl">Włączenie lub wyłączenie urządzeń komórkowych WiMAX</description> <description xml:lang="ru">Включить или выключить устройства мобильных сетей WiMax</description> + <description xml:lang="sl">Omogoči ali onemogoči mobilne širokopasovne naprave WiMAX</description> <description xml:lang="uk">Увімкнути або вимкнути пристрої широкосмугових мобільних мереж WiMAX</description> <message>System policy prevents enabling or disabling WiMAX mobile broadband devices</message> <message xml:lang="bg">Политиката на системата не позволява включване и изключване на устройства за мобилни мрежи по WiMAX</message> @@ -280,12 +285,14 @@ <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="gl">A normativa do sistema evita activar ou desactivar os dispositivos de banda larga móbil 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="id">Kebijakan sistem mencegah mengaktifkan atau mematikan perangkat broadband bergerak WiMAX</message> <message xml:lang="ko">시스템 정책이 와이맥스 모바일 광대역 장치의 사용 여부 설정을 금지합니다</message> <message xml:lang="mr">प्रणाली करार WiMAX मोबाईल ब्रॉडबँड साधनांना सुरू किंवा बंद होण्यापासून रोखते</message> <message xml:lang="pl">Polityka systemu powstrzymuje włączenie lub wyłączenie urządzeń komórkowych WiMAX</message> <message xml:lang="ru">Системная политика запрещает включение или выключение устройств мобильной связи WiMAX</message> + <message xml:lang="sl">Sistemska določila preprečujejo omogočanje ali onemogočanje mobilnih širokopasovnih naprav WiMAX</message> <message xml:lang="uk">Правила системи забороняють вмикання або вимикання пристроїв широкосмугових мобільних мереж WiMAX</message> <defaults> <allow_inactive>no</allow_inactive> @@ -305,6 +312,7 @@ <description xml:lang="es">Permitir controlar las conexiones de red</description> <description xml:lang="gl">Permitir o control das conexións de rede</description> <description xml:lang="hi">संजाल कनेक्शन के नियंत्रण स्वीकार करें</description> + <description xml:lang="hr">Dozvoli upravljanje mrežnim vezama</description> <description xml:lang="hu">Hálózati kapcsolatok felügyeletének engedélyezése</description> <description xml:lang="id">Ijinkan pengendalian sambungan jaringan</description> <description xml:lang="kn">ಜಾಲಬಂಧ ಸಂಪರ್ಕಗಳನ್ನು ನಿಯಂತ್ರಿಸುವುದನ್ನು ಅನುಮತಿಸಿ</description> @@ -370,10 +378,12 @@ <description xml:lang="eo">Kundivido de konektoj per protektita WiFi-reto</description> <description xml:lang="es">Compartir conexión a través de una red WIFI protegida</description> <description xml:lang="eu">Konexio partekatua babestutako haririk gabeko sarearen bidez</description> + <description xml:lang="fi">Yhteyden jakaminen suojatun langattoman verkon kautta</description> <description xml:lang="fr">Partage de connexion via un réseau WiFi protégé</description> <description xml:lang="gl">Conexión compartida a través dunha rede WiFi protexida</description> <description xml:lang="gu">સુરક્ષિત થયેલ WiFi નેટવર્ક મારફતે જોડાણ વહેંચણી</description> <description xml:lang="hi">किसी संरक्षित WiFi संजाल के द्वारा कनेक्शन साझा</description> + <description xml:lang="hr">Dijeljenje veze korištenjem zaštićene WiFi mreže</description> <description xml:lang="hu">Kapcsolatmegosztás védett WiFi hálózaton</description> <description xml:lang="id">Berbagi koneksi melalui jaringan WiFi terlindung.</description> <description xml:lang="it">Condivide connessione attraverso una rete WiFi protetta</description> @@ -410,6 +420,7 @@ <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="fi">Tietoturvakäytäntö estää yhteyksien jakamisen suojatun langattoman verkon kautta</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> <message xml:lang="gl">A política do sistema impide compartir conexións a través dunha rede WiFi protexida</message> <message xml:lang="gu">સિસ્ટમ પોલિસી એ સુરક્ષિત થયેલ WiFi નેટવર્ક મારફતે વહેંચણી જોડાણોને રોકી રહ્યા છે</message> @@ -457,10 +468,12 @@ <description xml:lang="eo">Kundivido de konektoj per malferma WiFi-reto</description> <description xml:lang="es">Compartir conexión a través de una red WIFI abierta</description> <description xml:lang="eu">Konexio partekatua irekitako haririk gabeko sarearen bidez</description> + <description xml:lang="fi">Yhteyden jakaminen avoimen langattoman verkon kautta</description> <description xml:lang="fr">Partage de connexion via un réseau WiFi ouvert</description> <description xml:lang="gl">Conexión compartida a través dunha rede WiFi aberta</description> <description xml:lang="gu">ખુલ્લા WiFi નેટવર્ક મારફતે જોડાણ વહેંચણી</description> <description xml:lang="hi">किसी खुले WiFi संजाल के द्वारा कनेक्शन साझा</description> + <description xml:lang="hr">Dijeljenje veze korištenjem otvorene WiFi mreže</description> <description xml:lang="hu">Kapcsolatmegosztás nyílt WiFi hálózaton</description> <description xml:lang="id">Berbagi koneksi melalui jaringan WiFi terbuka</description> <description xml:lang="it">Condivide connessione attraverso una rete WiFi aperta</description> @@ -497,6 +510,7 @@ <message xml:lang="eo">Sistempolitiko preventas kundividon de konektoj per malferma WiFi-reto</message> <message xml:lang="es">La política del sistema evita compartir conexiones a través de una red WiFi abierta</message> <message xml:lang="eu">Sistemako arauek irakitako haririk gabeko sareen bidez konexioak partekatzea saihesten dute</message> + <message xml:lang="fi">Tietoturvakäytäntö estää yhteyksien jakamisen avoimen langattoman verkon kautta</message> <message xml:lang="fr">La stratégie du système empêche tout partage des connexions via un réseau WiFi ouvert</message> <message xml:lang="gl">A política do sistema impide compartir conexións a través dunha rede WiFi aberta</message> <message xml:lang="gu">સિસ્ટમ પોલિસી એ ખુલ્લા WiFi નેટવર્ક મારફતે વહેંચણી જોડાણોને રોકી રહ્યા છે</message> @@ -535,23 +549,27 @@ <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="gl">Modificar as conexións de rede persoais</description> <description xml:lang="hu">Személyes hálózati kapcsolatok módosítása</description> <description xml:lang="id">Ubah koneksi jaringan personal</description> <description xml:lang="ko">개인 네트워크 연결을 수정합니다</description> <description xml:lang="mr">वैयक्तिक नेटवर्क जोडणी संपादित करा</description> <description xml:lang="pl">Modyfikacja osobistych połączeń sieciowych</description> <description xml:lang="ru">Редактировать личные настройки подключения</description> + <description xml:lang="sl">Spremeni osebne omrežne povezave</description> <description xml:lang="uk">Змінити параметри особистих з’єднань з мережею</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="gl">A política do sistema impide a modificación da configuración persoal da rede</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="id">Kebijakan sistem mencegah pengubahan tatanan jaringan pribadi</message> <message xml:lang="ko">시스템 정책이 개인 네트워크 설정의 수정을 금지합니다</message> <message xml:lang="mr">प्रणाली करार, व्यक्तिगत नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते</message> <message xml:lang="pl">Polityka systemu powstrzymuje modyfikację osobistych ustawień systemowych</message> <message xml:lang="ru">Системная политика запрещает изменение персональных настроек сети</message> + <message xml:lang="sl">Sistemska določila preprečujejo spreminjanje osebnih omrežnih nastavitev</message> <message xml:lang="uk">Правила системи забороняють внесення змін до особистих параметрів мережі</message> <defaults> <allow_inactive>no</allow_inactive> @@ -564,23 +582,27 @@ <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="gl">Modificar as conexións de rede para tódolos usuarios</description> <description xml:lang="hu">Hálózati kapcsolatok módosítása minden felhasználó számára</description> <description xml:lang="id">Ubah koneksi jaringan bagi semua pengguna</description> <description xml:lang="ko">모든 사용자의 네트워크 연결을 수정합니다</description> <description xml:lang="mr">सर्व वापरकर्त्यांकरीता नेटवर्क जोडणी संपादित करा</description> <description xml:lang="pl">Modyfikacja połączeń sieciowych dla wszystkich użytkowników</description> <description xml:lang="ru">Изменить подключения доступные всем пользователям</description> + <description xml:lang="sl">Spremeni omrežne povezave za vse uporabnike</description> <description xml:lang="uk">Внести зміни до мережевих з’єднань всіх користувачів</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="gl">A política do sistema impide a modificación da configuración da rede para tódolos 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="id">Kebijakan sistem mencegah pengubahan tatanan sistem bagi semua pengguna</message> <message xml:lang="ko">시스템 정책이 모든 사용자의 네트워크 설정의 수정을 금지합니다</message> <message xml:lang="mr">प्रणाली करार सर्व वापरकर्त्यांना नेटवर्क सेटिंग्स् संपादीत करण्यापासून रोखते</message> <message xml:lang="pl">Polityka systemu powstrzymuje modyfikację ustawień sieciowych dla wszystkich użytkowników</message> <message xml:lang="ru">Системная политика запрещает изменение настроек для всех пользователей</message> + <message xml:lang="sl">Sistemska določila preprečujejo spreminjanje sistemskih nastavitev za vse uporabnike</message> <message xml:lang="uk">Правила системи забороняють внесення змін до параметрів мережі для всіх користувачів</message> <defaults> <allow_inactive>no</allow_inactive> @@ -602,6 +624,7 @@ <description xml:lang="eo">Modifi permanentan sisteman gastigan nomon</description> <description xml:lang="es">Modificar nombre de host de sistema persistente</description> <description xml:lang="eu">Aldatu sistemako ostalari-izen iraunkorra</description> + <description xml:lang="fi">Muuta järjestelmän verkkonimeä</description> <description xml:lang="fr">Modifier le nom d'hôte du système persistant</description> <description xml:lang="gl">Modificar o nome persistente do anfitrión do sistema</description> <description xml:lang="gu">નિરંતર સિસ્ટમ યજમાનનામને બદલો</description> @@ -642,6 +665,7 @@ <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="fi">Tietoturvakäytäntö estää tietokoneen nimen muuttamisen</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> <message xml:lang="gl">A política do sistema impide a modificación do nome do anfitrión do sistema</message> <message xml:lang="gu">સિસ્ટમ પોલિસી એ નિરંતર સિસ્ટમ યજમાનનામનાં બદલાવને અટકાવે છે</message> diff --git a/src/Makefile.am b/src/Makefile.am index 94e1a8c0..cbcfdc62 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -142,6 +142,8 @@ NetworkManager_SOURCES = \ nm-ip6-config.h \ nm-active-connection.h \ nm-active-connection.c \ + nm-config.h \ + nm-config.c \ main.c \ nm-policy.c \ nm-policy.h \ @@ -159,6 +161,10 @@ NetworkManager_SOURCES = \ nm-manager-auth.h \ nm-netlink-monitor.c \ nm-netlink-monitor.h \ + nm-netlink-utils.c \ + nm-netlink-utils.h \ + nm-netlink-compat.h \ + nm-netlink-compat.c \ nm-activation-request.c \ nm-activation-request.h \ nm-properties-changed-signal.c \ diff --git a/src/Makefile.in b/src/Makefile.in index 5d9567ed..103df7fb 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -107,6 +107,7 @@ am_NetworkManager_OBJECTS = NetworkManager-nm-call-store.$(OBJEXT) \ NetworkManager-nm-ip4-config.$(OBJEXT) \ NetworkManager-nm-ip6-config.$(OBJEXT) \ NetworkManager-nm-active-connection.$(OBJEXT) \ + NetworkManager-nm-config.$(OBJEXT) \ NetworkManager-main.$(OBJEXT) \ NetworkManager-nm-policy.$(OBJEXT) \ NetworkManager-nm-policy-hosts.$(OBJEXT) \ @@ -116,6 +117,8 @@ am_NetworkManager_OBJECTS = NetworkManager-nm-call-store.$(OBJEXT) \ NetworkManager-nm-manager.$(OBJEXT) \ NetworkManager-nm-manager-auth.$(OBJEXT) \ NetworkManager-nm-netlink-monitor.$(OBJEXT) \ + NetworkManager-nm-netlink-utils.$(OBJEXT) \ + NetworkManager-nm-netlink-compat.$(OBJEXT) \ NetworkManager-nm-activation-request.$(OBJEXT) \ NetworkManager-nm-properties-changed-signal.$(OBJEXT) \ NetworkManager-wpa.$(OBJEXT) \ @@ -338,8 +341,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -565,6 +576,8 @@ NetworkManager_SOURCES = \ nm-ip6-config.h \ nm-active-connection.h \ nm-active-connection.c \ + nm-config.h \ + nm-config.c \ main.c \ nm-policy.c \ nm-policy.h \ @@ -582,6 +595,10 @@ NetworkManager_SOURCES = \ nm-manager-auth.h \ nm-netlink-monitor.c \ nm-netlink-monitor.h \ + nm-netlink-utils.c \ + nm-netlink-utils.h \ + nm-netlink-compat.h \ + nm-netlink-compat.c \ nm-activation-request.c \ nm-activation-request.h \ nm-properties-changed-signal.c \ @@ -832,6 +849,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-activation-request.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-active-connection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-call-store.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-dbus-manager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-bt.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-device-ethernet.Po@am__quote@ @@ -847,7 +865,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-ip6-config.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-manager-auth.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-netlink-compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-netlink-monitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-netlink-utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-policy-hostname.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-policy-hosts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/NetworkManager-nm-policy.Po@am__quote@ @@ -1197,6 +1217,22 @@ NetworkManager-nm-active-connection.obj: nm-active-connection.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-active-connection.obj `if test -f 'nm-active-connection.c'; then $(CYGPATH_W) 'nm-active-connection.c'; else $(CYGPATH_W) '$(srcdir)/nm-active-connection.c'; fi` +NetworkManager-nm-config.o: nm-config.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-config.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-config.Tpo -c -o NetworkManager-nm-config.o `test -f 'nm-config.c' || echo '$(srcdir)/'`nm-config.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-config.Tpo $(DEPDIR)/NetworkManager-nm-config.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-config.c' object='NetworkManager-nm-config.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-config.o `test -f 'nm-config.c' || echo '$(srcdir)/'`nm-config.c + +NetworkManager-nm-config.obj: nm-config.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-config.obj -MD -MP -MF $(DEPDIR)/NetworkManager-nm-config.Tpo -c -o NetworkManager-nm-config.obj `if test -f 'nm-config.c'; then $(CYGPATH_W) 'nm-config.c'; else $(CYGPATH_W) '$(srcdir)/nm-config.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-config.Tpo $(DEPDIR)/NetworkManager-nm-config.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-config.c' object='NetworkManager-nm-config.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-config.obj `if test -f 'nm-config.c'; then $(CYGPATH_W) 'nm-config.c'; else $(CYGPATH_W) '$(srcdir)/nm-config.c'; fi` + NetworkManager-main.o: main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-main.o -MD -MP -MF $(DEPDIR)/NetworkManager-main.Tpo -c -o NetworkManager-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-main.Tpo $(DEPDIR)/NetworkManager-main.Po @@ -1341,6 +1377,38 @@ NetworkManager-nm-netlink-monitor.obj: nm-netlink-monitor.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-netlink-monitor.obj `if test -f 'nm-netlink-monitor.c'; then $(CYGPATH_W) 'nm-netlink-monitor.c'; else $(CYGPATH_W) '$(srcdir)/nm-netlink-monitor.c'; fi` +NetworkManager-nm-netlink-utils.o: nm-netlink-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-netlink-utils.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-netlink-utils.Tpo -c -o NetworkManager-nm-netlink-utils.o `test -f 'nm-netlink-utils.c' || echo '$(srcdir)/'`nm-netlink-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-netlink-utils.Tpo $(DEPDIR)/NetworkManager-nm-netlink-utils.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-netlink-utils.c' object='NetworkManager-nm-netlink-utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-netlink-utils.o `test -f 'nm-netlink-utils.c' || echo '$(srcdir)/'`nm-netlink-utils.c + +NetworkManager-nm-netlink-utils.obj: nm-netlink-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-netlink-utils.obj -MD -MP -MF $(DEPDIR)/NetworkManager-nm-netlink-utils.Tpo -c -o NetworkManager-nm-netlink-utils.obj `if test -f 'nm-netlink-utils.c'; then $(CYGPATH_W) 'nm-netlink-utils.c'; else $(CYGPATH_W) '$(srcdir)/nm-netlink-utils.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-netlink-utils.Tpo $(DEPDIR)/NetworkManager-nm-netlink-utils.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-netlink-utils.c' object='NetworkManager-nm-netlink-utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-netlink-utils.obj `if test -f 'nm-netlink-utils.c'; then $(CYGPATH_W) 'nm-netlink-utils.c'; else $(CYGPATH_W) '$(srcdir)/nm-netlink-utils.c'; fi` + +NetworkManager-nm-netlink-compat.o: nm-netlink-compat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-netlink-compat.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-netlink-compat.Tpo -c -o NetworkManager-nm-netlink-compat.o `test -f 'nm-netlink-compat.c' || echo '$(srcdir)/'`nm-netlink-compat.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-netlink-compat.Tpo $(DEPDIR)/NetworkManager-nm-netlink-compat.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-netlink-compat.c' object='NetworkManager-nm-netlink-compat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-netlink-compat.o `test -f 'nm-netlink-compat.c' || echo '$(srcdir)/'`nm-netlink-compat.c + +NetworkManager-nm-netlink-compat.obj: nm-netlink-compat.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-netlink-compat.obj -MD -MP -MF $(DEPDIR)/NetworkManager-nm-netlink-compat.Tpo -c -o NetworkManager-nm-netlink-compat.obj `if test -f 'nm-netlink-compat.c'; then $(CYGPATH_W) 'nm-netlink-compat.c'; else $(CYGPATH_W) '$(srcdir)/nm-netlink-compat.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-netlink-compat.Tpo $(DEPDIR)/NetworkManager-nm-netlink-compat.Po +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nm-netlink-compat.c' object='NetworkManager-nm-netlink-compat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o NetworkManager-nm-netlink-compat.obj `if test -f 'nm-netlink-compat.c'; then $(CYGPATH_W) 'nm-netlink-compat.c'; else $(CYGPATH_W) '$(srcdir)/nm-netlink-compat.c'; fi` + NetworkManager-nm-activation-request.o: nm-activation-request.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(NetworkManager_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT NetworkManager-nm-activation-request.o -MD -MP -MF $(DEPDIR)/NetworkManager-nm-activation-request.Tpo -c -o NetworkManager-nm-activation-request.o `test -f 'nm-activation-request.c' || echo '$(srcdir)/'`nm-activation-request.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/NetworkManager-nm-activation-request.Tpo $(DEPDIR)/NetworkManager-nm-activation-request.Po diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index f96f2aad..451de6d0 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -26,6 +26,7 @@ #include <string.h> #include <unistd.h> #include <ctype.h> +#include <stdlib.h> #include "NetworkManagerUtils.h" #include "nm-utils.h" @@ -43,9 +44,6 @@ #include "nm-setting-wireless-security.h" #include "nm-manager-auth.h" -#include <netlink/addr.h> -#include <netinet/in.h> - /* * nm_ethernet_address_is_valid * diff --git a/src/backends/Makefile.in b/src/backends/Makefile.in index 2f489e75..9eb2e0ff 100644 --- a/src/backends/Makefile.in +++ b/src/backends/Makefile.in @@ -232,8 +232,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/backends/NetworkManagerGeneric.c b/src/backends/NetworkManagerGeneric.c index 8f16066f..89b8a46d 100644 --- a/src/backends/NetworkManagerGeneric.c +++ b/src/backends/NetworkManagerGeneric.c @@ -34,7 +34,9 @@ #include "nm-system.h" #include "NetworkManagerUtils.h" #include "nm-logging.h" +#include "nm-netlink-compat.h" #include "nm-netlink-monitor.h" +#include "nm-netlink-utils.h" /* Because of a bug in libnl, rtnl.h should be included before route.h */ #include <netlink/route/rtnl.h> @@ -50,15 +52,13 @@ */ void nm_generic_enable_loopback (void) { - struct nl_handle * nlh = NULL; + struct nl_sock * nlh = NULL; struct rtnl_addr * addr = NULL; struct nl_addr * nl_addr = NULL; guint32 binaddr = 0; int iface_idx = -1; int err; - nm_system_device_set_up_down_with_iface ("lo", TRUE, NULL); - nlh = nm_netlink_get_default_handle (); if (!nlh) return; @@ -67,6 +67,8 @@ void nm_generic_enable_loopback (void) if (iface_idx < 0) return; + nm_system_iface_set_up (iface_idx, TRUE, NULL); + addr = rtnl_addr_alloc (); if (!addr) return; @@ -90,10 +92,10 @@ void nm_generic_enable_loopback (void) rtnl_addr_set_scope (addr, RT_SCOPE_HOST); rtnl_addr_set_label (addr, "lo"); - if ((err = rtnl_addr_add (nlh, addr, 0)) < 0) { - if (err != -EEXIST) { - nm_log_warn (LOGD_CORE, "error %d returned from rtnl_addr_add():\n%s", err, nl_geterror()); - } + err = rtnl_addr_add (nlh, addr, 0); + if (err && (err != -NLE_EXIST)) { + nm_log_warn (LOGD_CORE, "error setting loopback address: (%d) %s", + err, nl_geterror (err)); } out: if (addr) diff --git a/src/bluez-manager/Makefile.in b/src/bluez-manager/Makefile.in index 1336b7ec..764493a4 100644 --- a/src/bluez-manager/Makefile.in +++ b/src/bluez-manager/Makefile.in @@ -189,8 +189,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/dhcp-manager/Makefile.in b/src/dhcp-manager/Makefile.in index dd557056..d373f7e9 100644 --- a/src/dhcp-manager/Makefile.in +++ b/src/dhcp-manager/Makefile.in @@ -237,8 +237,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index 3418bf3b..f10f3de9 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -638,7 +638,7 @@ nm_dhcp_client_foreach_option (NMDHCPClient *self, } if (!ignore) { - const char *tmp_key = value; + const char *tmp_key = key; /* Remove the "new_" prefix that dhclient passes back */ if (!strncmp (key, NEW_TAG, strlen (NEW_TAG))) diff --git a/src/dhcp-manager/tests/Makefile.in b/src/dhcp-manager/tests/Makefile.in index 7e875055..8a3c2e97 100644 --- a/src/dhcp-manager/tests/Makefile.in +++ b/src/dhcp-manager/tests/Makefile.in @@ -187,8 +187,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/dns-manager/Makefile.in b/src/dns-manager/Makefile.in index aad1c562..d44c3bfc 100644 --- a/src/dns-manager/Makefile.in +++ b/src/dns-manager/Makefile.in @@ -190,8 +190,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/dns-manager/nm-dns-bind.c b/src/dns-manager/nm-dns-bind.c index fc7af776..55fce030 100644 --- a/src/dns-manager/nm-dns-bind.c +++ b/src/dns-manager/nm-dns-bind.c @@ -297,7 +297,8 @@ update (NMDnsPlugin *plugin, const GSList *vpn_configs, const GSList *dev_configs, const GSList *other_configs, - const char *hostname) + const char *hostname, + const char *iface) { NMDnsBind *self = NM_DNS_BIND (plugin); NMDnsBindPrivate *priv = NM_DNS_BIND_GET_PRIVATE (self); diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c index 9cc01978..a602c54f 100644 --- a/src/dns-manager/nm-dns-dnsmasq.c +++ b/src/dns-manager/nm-dns-dnsmasq.c @@ -133,23 +133,56 @@ add_ip4_config (GString *str, NMIP4Config *ip4, gboolean split) return TRUE; } -static gboolean -ip6_addr_to_string (const struct in6_addr *addr, char *buf, size_t buflen) +#define IP6_ADDR_BUFLEN (INET6_ADDRSTRLEN + 50) + +static char * +ip6_addr_to_string (const struct in6_addr *addr, const char *iface) { - memset (buf, 0, buflen); + char *buf, *p; + + /* allocate enough space for the address + interface name */ + buf = g_malloc0 (IP6_ADDR_BUFLEN + 1); /* inet_ntop is probably supposed to do this for us, but it doesn't */ - if (IN6_IS_ADDR_V4MAPPED (addr)) - return !!inet_ntop (AF_INET, &(addr->s6_addr32[3]), buf, buflen); + if (IN6_IS_ADDR_V4MAPPED (addr)) { + if (!inet_ntop (AF_INET, &(addr->s6_addr32[3]), buf, IP6_ADDR_BUFLEN)) + goto error; + return buf; + } - return !!inet_ntop (AF_INET6, addr, buf, buflen); + if (!inet_ntop (AF_INET6, addr, buf, IP6_ADDR_BUFLEN)) + goto error; + + /* In the case of addr being a link-local address, inet_ntop can either + * return an address with scope identifier already in place (like + * fe80::202:b3ff:fe8d:7aaf%wlan0) or it returns an address without + * scope identifier at all (like fe80::202:b3ff:fe8d:7aaf) + */ + p = strchr (buf, '%'); + if (p) { + /* If we got a scope identifier, we need to replace the '%' + * with '@', since dnsmasq supports '%' in server= addresses + * only since version 2.58 and up + */ + *p = '@'; + } else if (IN6_IS_ADDR_LINKLOCAL (addr)) { + /* If we got no scope identifier at all append the interface name */ + strncat (buf, "@", IP6_ADDR_BUFLEN - strlen (buf)); + strncat (buf, iface, IP6_ADDR_BUFLEN - strlen (buf)); + } + + return buf; + +error: + g_free (buf); + return NULL; } static gboolean -add_ip6_config (GString *str, NMIP6Config *ip6, gboolean split) +add_ip6_config (GString *str, NMIP6Config *ip6, gboolean split, const char *iface) { - char buf[INET6_ADDRSTRLEN + 1]; const struct in6_addr *addr; + char *buf; int n, i; gboolean added = FALSE; @@ -159,7 +192,8 @@ add_ip6_config (GString *str, NMIP6Config *ip6, gboolean split) * the first nameserver here. */ addr = nm_ip6_config_get_nameserver (ip6, 0); - if (!ip6_addr_to_string (addr, &buf[0], sizeof (buf))) + buf = ip6_addr_to_string (addr, iface); + if (!buf) return FALSE; /* searches are preferred over domains */ @@ -181,6 +215,8 @@ add_ip6_config (GString *str, NMIP6Config *ip6, gboolean split) added = TRUE; } } + + g_free (buf); } /* If no searches or domains, just add the namservers */ @@ -188,8 +224,11 @@ add_ip6_config (GString *str, NMIP6Config *ip6, gboolean split) n = nm_ip6_config_get_num_nameservers (ip6); for (i = 0; i < n; i++) { addr = nm_ip6_config_get_nameserver (ip6, i); - if (ip6_addr_to_string (addr, &buf[0], sizeof (buf))) + buf = ip6_addr_to_string (addr, iface); + if (buf) { g_string_append_printf (str, "server=%s\n", buf); + g_free (buf); + } } } @@ -201,12 +240,13 @@ update (NMDnsPlugin *plugin, const GSList *vpn_configs, const GSList *dev_configs, const GSList *other_configs, - const char *hostname) + const char *hostname, + const char *iface) { NMDnsDnsmasq *self = NM_DNS_DNSMASQ (plugin); GString *conf; GSList *iter; - const char *argv[10]; + const char *argv[11]; GError *error = NULL; int ignored; GPid pid = 0; @@ -226,7 +266,7 @@ update (NMDnsPlugin *plugin, if (NM_IS_IP4_CONFIG (iter->data)) add_ip4_config (conf, NM_IP4_CONFIG (iter->data), TRUE); else if (NM_IS_IP6_CONFIG (iter->data)) - add_ip6_config (conf, NM_IP6_CONFIG (iter->data), TRUE); + add_ip6_config (conf, NM_IP6_CONFIG (iter->data), TRUE, iface); } /* Now add interface configs without split DNS */ @@ -234,7 +274,7 @@ update (NMDnsPlugin *plugin, if (NM_IS_IP4_CONFIG (iter->data)) add_ip4_config (conf, NM_IP4_CONFIG (iter->data), FALSE); else if (NM_IS_IP6_CONFIG (iter->data)) - add_ip6_config (conf, NM_IP6_CONFIG (iter->data), FALSE); + add_ip6_config (conf, NM_IP6_CONFIG (iter->data), FALSE, iface); } /* And any other random configs */ @@ -242,7 +282,7 @@ update (NMDnsPlugin *plugin, if (NM_IS_IP4_CONFIG (iter->data)) add_ip4_config (conf, NM_IP4_CONFIG (iter->data), FALSE); else if (NM_IS_IP6_CONFIG (iter->data)) - add_ip6_config (conf, NM_IP6_CONFIG (iter->data), FALSE); + add_ip6_config (conf, NM_IP6_CONFIG (iter->data), FALSE, iface); } /* Write out the config file */ @@ -267,7 +307,8 @@ update (NMDnsPlugin *plugin, argv[5] = "--pid-file=" PIDFILE; argv[6] = "--listen-address=127.0.0.1"; /* Should work for both 4 and 6 */ argv[7] = "--conf-file=" CONFFILE; - argv[8] = NULL; + argv[8] = "--cache-size=400"; + argv[9] = NULL; /* And finally spawn dnsmasq */ pid = nm_dns_plugin_child_spawn (NM_DNS_PLUGIN (self), argv, PIDFILE, "bin/dnsmasq"); diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c index 49cd74e5..0203f2bb 100644 --- a/src/dns-manager/nm-dns-manager.c +++ b/src/dns-manager/nm-dns-manager.c @@ -711,7 +711,8 @@ update_dns (NMDnsManager *self, vpn_configs, dev_configs, other_configs, - priv->hostname)) { + priv->hostname, + iface)) { nm_log_warn (LOGD_DNS, "DNS: plugin %s update failed", plugin_name); /* If the plugin failed to update, we shouldn't write out a local diff --git a/src/dns-manager/nm-dns-plugin.c b/src/dns-manager/nm-dns-plugin.c index ae230ada..e997948e 100644 --- a/src/dns-manager/nm-dns-plugin.c +++ b/src/dns-manager/nm-dns-plugin.c @@ -55,7 +55,8 @@ nm_dns_plugin_update (NMDnsPlugin *self, const GSList *vpn_configs, const GSList *dev_configs, const GSList *other_configs, - const char *hostname) + const char *hostname, + const char *iface) { g_return_val_if_fail (NM_DNS_PLUGIN_GET_CLASS (self)->update != NULL, FALSE); @@ -63,7 +64,8 @@ nm_dns_plugin_update (NMDnsPlugin *self, vpn_configs, dev_configs, other_configs, - hostname); + hostname, + iface); } static gboolean diff --git a/src/dns-manager/nm-dns-plugin.h b/src/dns-manager/nm-dns-plugin.h index d4298b86..37dd7336 100644 --- a/src/dns-manager/nm-dns-plugin.h +++ b/src/dns-manager/nm-dns-plugin.h @@ -53,7 +53,8 @@ typedef struct { const GSList *vpn_configs, const GSList *dev_configs, const GSList *other_configs, - const char *hostname); + const char *hostname, + const char *iface); /* Subclasses should override and return TRUE if they start a local * caching nameserver that listens on localhost and would block any @@ -91,7 +92,8 @@ gboolean nm_dns_plugin_update (NMDnsPlugin *self, const GSList *vpn_configs, const GSList *dev_configs, const GSList *other_configs, - const char *hostname); + const char *hostname, + const char *iface); /* For subclasses/plugins */ diff --git a/src/dnsmasq-manager/Makefile.in b/src/dnsmasq-manager/Makefile.in index 89f55e5e..de3a4478 100644 --- a/src/dnsmasq-manager/Makefile.in +++ b/src/dnsmasq-manager/Makefile.in @@ -186,8 +186,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/ip6-manager/Makefile.in b/src/ip6-manager/Makefile.in index 33539f51..1912bd59 100644 --- a/src/ip6-manager/Makefile.in +++ b/src/ip6-manager/Makefile.in @@ -187,8 +187,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/ip6-manager/nm-ip6-manager.c b/src/ip6-manager/nm-ip6-manager.c index 4a5dee58..1c761305 100644 --- a/src/ip6-manager/nm-ip6-manager.c +++ b/src/ip6-manager/nm-ip6-manager.c @@ -27,6 +27,8 @@ #include "nm-ip6-manager.h" #include "nm-netlink-monitor.h" +#include "nm-netlink-utils.h" +#include "nm-netlink-compat.h" #include "NetworkManagerUtils.h" #include "nm-marshal.h" #include "nm-logging.h" @@ -44,7 +46,7 @@ typedef struct { NMNetlinkMonitor *monitor; GHashTable *devices; - struct nl_handle *nlh; + struct nl_sock *nlh; struct nl_cache *addr_cache, *route_cache; guint netlink_id; @@ -155,7 +157,7 @@ nm_ip6_device_new (NMIP6Manager *manager, int ifindex) } device->ifindex = ifindex; - device->iface = g_strdup (nm_netlink_index_to_iface (ifindex)); + device->iface = nm_netlink_index_to_iface (ifindex); if (!device->iface) { nm_log_err (LOGD_IP6, "(%d): could not find interface name from index.", ifindex); @@ -549,11 +551,12 @@ process_addr (NMIP6Manager *manager, struct nl_msg *msg) device = nm_ip6_manager_get_device (manager, rtnl_addr_get_ifindex (rtnladdr)); if (!device) { nm_log_dbg (LOGD_IP6, "ignoring message for unknown device"); + rtnl_addr_put (rtnladdr); return NULL; } old_size = nl_cache_nitems (priv->addr_cache); - nl_cache_include (priv->addr_cache, (struct nl_object *)rtnladdr, NULL); + nl_cache_include (priv->addr_cache, (struct nl_object *)rtnladdr, NULL, NULL); rtnl_addr_put (rtnladdr); /* The kernel will re-notify us of automatically-added addresses @@ -589,11 +592,12 @@ process_route (NMIP6Manager *manager, struct nl_msg *msg) device = nm_ip6_manager_get_device (manager, rtnl_route_get_oif (rtnlroute)); if (!device) { nm_log_dbg (LOGD_IP6, "ignoring message for unknown device"); + rtnl_route_put (rtnlroute); return NULL; } old_size = nl_cache_nitems (priv->route_cache); - nl_cache_include (priv->route_cache, (struct nl_object *)rtnlroute, NULL); + nl_cache_include (priv->route_cache, (struct nl_object *)rtnlroute, NULL, NULL); rtnl_route_put (rtnlroute); /* As above in process_addr */ @@ -620,6 +624,11 @@ process_prefix (NMIP6Manager *manager, struct nl_msg *msg) nm_log_dbg (LOGD_IP6, "processing netlink new prefix message"); + if (!nlmsg_valid_hdr (nlmsg_hdr (msg), sizeof(*pmsg))) { + nm_log_dbg (LOGD_IP6, "ignoring invalid prefix message"); + return NULL; + } + pmsg = (struct prefixmsg *) NLMSG_DATA (nlmsg_hdr (msg)); device = nm_ip6_manager_get_device (manager, pmsg->prefix_ifindex); @@ -907,6 +916,13 @@ process_nduseropt (NMIP6Manager *manager, struct nl_msg *msg) ndmsg = (struct nduseroptmsg *) NLMSG_DATA (nlmsg_hdr (msg)); + if (!nlmsg_valid_hdr (nlmsg_hdr (msg), sizeof (*ndmsg)) || + nlmsg_datalen (nlmsg_hdr (msg)) < + (ndmsg->nduseropt_opts_len + sizeof (*ndmsg))) { + nm_log_dbg (LOGD_IP6, "ignoring invalid nduseropt message"); + return NULL; + } + if (ndmsg->nduseropt_family != AF_INET6 || ndmsg->nduseropt_icmp_type != ND_ROUTER_ADVERT || ndmsg->nduseropt_icmp_code != 0) { @@ -966,6 +982,19 @@ process_newlink (NMIP6Manager *manager, struct nl_msg *msg) struct nlattr *pi[IFLA_INET6_MAX + 1]; int err; + /* FIXME: we have to do this manually for now since libnl doesn't yet + * support the IFLA_PROTINFO attribute of NEWLINK messages. When it does, + * we can get rid of this function and just grab IFLA_PROTINFO from + * nm_ip6_device_sync_from_netlink(), then get the IFLA_INET6_FLAGS out of + * the PROTINFO. + */ + err = nlmsg_parse (hdr, sizeof (*ifi), tb, IFLA_MAX, link_policy); + if (err < 0) { + nm_log_dbg (LOGD_IP6, "ignoring invalid newlink netlink message " + "while parsing PROTINFO attribute"); + return NULL; + } + ifi = nlmsg_data (hdr); if (ifi->ifi_family != AF_INET6) { nm_log_dbg (LOGD_IP6, "ignoring netlink message family %d", ifi->ifi_family); @@ -979,18 +1008,6 @@ process_newlink (NMIP6Manager *manager, struct nl_msg *msg) return NULL; } - /* FIXME: we have to do this manually for now since libnl doesn't yet - * support the IFLA_PROTINFO attribute of NEWLINK messages. When it does, - * we can get rid of this function and just grab IFLA_PROTINFO from - * nm_ip6_device_sync_from_netlink(), then get the IFLA_INET6_FLAGS out of - * the PROTINFO. - */ - - err = nlmsg_parse (hdr, sizeof (*ifi), tb, IFLA_MAX, link_policy); - if (err < 0) { - nm_log_dbg (LOGD_IP6, "(%s): error parsing PROTINFO attribute", device->iface); - return NULL; - } if (!tb[IFLA_PROTINFO]) { nm_log_dbg (LOGD_IP6, "(%s): message had no PROTINFO attribute", device->iface); return NULL; @@ -1087,7 +1104,7 @@ nm_ip6_manager_prepare_interface (NMIP6Manager *manager, nm_utils_do_sysctl (accept_ra_path, "0\n"); } else { device->target_state = NM_IP6_DEVICE_GOT_ADDRESS; - nm_utils_do_sysctl (accept_ra_path, "1\n"); + nm_utils_do_sysctl (accept_ra_path, "2\n"); } return TRUE; @@ -1248,7 +1265,7 @@ nm_ip6_manager_get_ip6_config (NMIP6Manager *manager, int ifindex) nm_ip6_route_set_dest (ip6route, dest); nm_ip6_route_set_prefix (ip6route, rtnl_route_get_dst_len (rtnlroute)); nm_ip6_route_set_next_hop (ip6route, gateway); - metric = rtnl_route_get_metric (rtnlroute, 1); + rtnl_route_get_metric(rtnlroute, 1, &metric); if (metric != UINT_MAX) nm_ip6_route_set_metric (ip6route, metric); nm_ip6_config_take_route (config, ip6route); @@ -1344,8 +1361,10 @@ nm_ip6_manager_init (NMIP6Manager *manager) G_CALLBACK (netlink_notification), manager); priv->nlh = nm_netlink_get_default_handle (); - priv->addr_cache = rtnl_addr_alloc_cache (priv->nlh); - priv->route_cache = rtnl_route_alloc_cache (priv->nlh); + rtnl_addr_alloc_cache (priv->nlh, &priv->addr_cache); + g_warn_if_fail (priv->addr_cache != NULL); + rtnl_route_alloc_cache (priv->nlh, NETLINK_ROUTE, NL_AUTO_PROVIDE, &priv->route_cache); + g_warn_if_fail (priv->route_cache != NULL); } static void diff --git a/src/logging/Makefile.in b/src/logging/Makefile.in index a85578d9..4606160a 100644 --- a/src/logging/Makefile.in +++ b/src/logging/Makefile.in @@ -183,8 +183,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/logging/nm-logging.c b/src/logging/nm-logging.c index d8353f27..078f1527 100644 --- a/src/logging/nm-logging.c +++ b/src/logging/nm-logging.c @@ -30,10 +30,13 @@ #include <errno.h> #include <sys/wait.h> #include <sys/stat.h> -#include <execinfo.h> #include <strings.h> #include <string.h> +#ifdef ENABLE_CRASHTRACE +#include <execinfo.h> +#endif + #include <glib/gi18n.h> #include "nm-logging.h" @@ -262,6 +265,7 @@ _nm_log (const char *loc, static void fallback_get_backtrace (void) { +#ifdef ENABLE_CRASHTRACE void *frames[64]; Dl_info info; size_t size; @@ -289,6 +293,7 @@ fallback_get_backtrace (void) } } syslog (LOG_CRIT, "******************* END **********************************"); +#endif /* ENABLE_CRASHTRACE */ } diff --git a/src/main.c b/src/main.c index 328c253d..b7c0fd5a 100644 --- a/src/main.c +++ b/src/main.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) 2005 - 2008 Novell, Inc. */ @@ -50,14 +50,13 @@ #include "nm-vpn-manager.h" #include "nm-logging.h" #include "nm-policy-hosts.h" +#include "nm-config.h" #if !defined(NM_DIST_VERSION) # define NM_DIST_VERSION VERSION #endif #define NM_DEFAULT_PID_FILE LOCALSTATEDIR"/run/NetworkManager.pid" -#define NM_DEFAULT_SYSTEM_CONF_FILE SYSCONFDIR"/NetworkManager/NetworkManager.conf" -#define NM_OLD_SYSTEM_CONF_FILE SYSCONFDIR"/NetworkManager/nm-system-settings.conf" #define NM_DEFAULT_SYSTEM_STATE_FILE LOCALSTATEDIR"/lib/NetworkManager/NetworkManager.state" /* @@ -310,51 +309,11 @@ done: } static gboolean -parse_config_file (const char *filename, - char **plugins, - char **dhcp_client, - char ***dns_plugins, - char **log_level, - char **log_domains, - GError **error) -{ - GKeyFile *config; - gboolean success = FALSE; - - config = g_key_file_new (); - if (!config) { - g_set_error (error, 0, 0, - "Not enough memory to load config file."); - return FALSE; - } - - g_key_file_set_list_separator (config, ','); - if (!g_key_file_load_from_file (config, filename, G_KEY_FILE_NONE, error)) - goto out; - - *plugins = g_key_file_get_value (config, "main", "plugins", error); - if (*error) - goto out; - - *dhcp_client = g_key_file_get_value (config, "main", "dhcp", NULL); - *dns_plugins = g_key_file_get_string_list (config, "main", "dns", NULL, NULL); - - *log_level = g_key_file_get_value (config, "logging", "level", NULL); - *log_domains = g_key_file_get_value (config, "logging", "domains", NULL); - - success = TRUE; - -out: - g_key_file_free (config); - return success; -} - -static gboolean parse_state_file (const char *filename, gboolean *net_enabled, gboolean *wifi_enabled, gboolean *wwan_enabled, - gboolean *wimax_enabled, + gboolean *wimax_enabled, GError **error) { GKeyFile *state_file; @@ -368,13 +327,15 @@ parse_state_file (const char *filename, state_file = g_key_file_new (); if (!state_file) { - g_set_error (error, 0, 0, - "Not enough memory to load state file."); + g_set_error (error, NM_CONFIG_ERROR, NM_CONFIG_ERROR_NO_MEMORY, + "Not enough memory to load state file %s.", filename); return FALSE; } g_key_file_set_list_separator (state_file, ','); if (!g_key_file_load_from_file (state_file, filename, G_KEY_FILE_KEEP_COMMENTS, &tmp_error)) { + gboolean ret = FALSE; + /* This is kinda ugly; create the file and directory if it doesn't * exist yet. We can't rely on distros necessarily creating the * /var/lib/NetworkManager for us since we have to ensure that @@ -384,15 +345,16 @@ parse_state_file (const char *filename, && tmp_error->code == G_FILE_ERROR_NOENT) { char *data, *dirname; gsize len = 0; - gboolean ret = FALSE; + + g_clear_error (&tmp_error); /* try to create the directory if it doesn't exist */ dirname = g_path_get_dirname (filename); errno = 0; - if (mkdir (dirname, 0755) != 0) { + if (g_mkdir_with_parents (dirname, 0755) != 0) { if (errno != EEXIST) { g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_ACCES, - "Error creating state directory %s: %d", dirname, errno); + "Error creating state directory %s: %s", dirname, strerror(errno)); g_free (dirname); return FALSE; } @@ -409,53 +371,38 @@ parse_state_file (const char *filename, if (data) ret = g_file_set_contents (filename, data, len, error); g_free (data); - - return ret; } else { - g_set_error_literal (error, tmp_error->domain, tmp_error->code, tmp_error->message); - g_clear_error (&tmp_error); + /* the error is not "No such file or directory" - propagate the error */ + g_propagate_error (error, tmp_error); } - /* Otherwise, file probably corrupt or inaccessible */ - return FALSE; + return ret; } /* Reading state bits of NetworkManager; an error leaves the passed-in state * value unchanged. */ net = g_key_file_get_boolean (state_file, "main", "NetworkingEnabled", &tmp_error); - if (tmp_error) - g_set_error_literal (error, tmp_error->domain, tmp_error->code, tmp_error->message); - else + if (tmp_error == NULL) *net_enabled = net; g_clear_error (&tmp_error); wifi = g_key_file_get_boolean (state_file, "main", "WirelessEnabled", &tmp_error); - if (tmp_error) { - g_clear_error (error); - g_set_error_literal (error, tmp_error->domain, tmp_error->code, tmp_error->message); - } else + if (tmp_error == NULL) *wifi_enabled = wifi; g_clear_error (&tmp_error); wwan = g_key_file_get_boolean (state_file, "main", "WWANEnabled", &tmp_error); - if (tmp_error) { - g_clear_error (error); - g_set_error_literal (error, tmp_error->domain, tmp_error->code, tmp_error->message); - } else + if (tmp_error == NULL) *wwan_enabled = wwan; g_clear_error (&tmp_error); wimax = g_key_file_get_boolean (state_file, "main", "WimaxEnabled", &tmp_error); - if (tmp_error) { - g_clear_error (error); - g_set_error_literal (error, tmp_error->domain, tmp_error->code, tmp_error->message); - } else + if (tmp_error == NULL) *wimax_enabled = wimax; g_clear_error (&tmp_error); g_key_file_free (state_file); - return TRUE; } @@ -469,10 +416,9 @@ main (int argc, char *argv[]) GOptionContext *opt_ctx = NULL; gboolean become_daemon = FALSE; gboolean g_fatal_warnings = FALSE; - char *pidfile = NULL, *state_file = NULL, *dhcp = NULL; - char *config = NULL, *plugins = NULL, *conf_plugins = NULL; + char *pidfile = NULL, *state_file = NULL; + char *config_path = NULL, *plugins = NULL; char *log_level = NULL, *log_domains = NULL; - char **dns = NULL; gboolean wifi_enabled = TRUE, net_enabled = TRUE, wwan_enabled = TRUE, wimax_enabled = TRUE; gboolean success, show_version = FALSE; NMPolicy *policy = NULL; @@ -482,9 +428,9 @@ main (int argc, char *argv[]) NMSupplicantManager *sup_mgr = NULL; NMDHCPManager *dhcp_mgr = NULL; NMSettings *settings = NULL; + NMConfig *config; GError *error = NULL; gboolean wrote_pidfile = FALSE; - char *cfg_log_level = NULL, *cfg_log_domains = NULL; GOptionEntry options[] = { { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, "Print NetworkManager version and exit", NULL }, @@ -492,7 +438,7 @@ main (int argc, char *argv[]) { "g-fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &g_fatal_warnings, "Make all warnings fatal", NULL }, { "pid-file", 0, 0, G_OPTION_ARG_FILENAME, &pidfile, "Specify the location of a PID file", "filename" }, { "state-file", 0, 0, G_OPTION_ARG_FILENAME, &state_file, "State file location", "/path/to/state.file" }, - { "config", 0, 0, G_OPTION_ARG_FILENAME, &config, "Config file location", "/path/to/config.file" }, + { "config", 0, 0, G_OPTION_ARG_FILENAME, &config_path, "Config file location", "/path/to/config.file" }, { "plugins", 0, 0, G_OPTION_ARG_STRING, &plugins, "List of plugins separated by ','", "plugin1,plugin2" }, { "log-level", 0, 0, G_OPTION_ARG_STRING, &log_level, "Log level: one of [ERR, WARN, INFO, DEBUG]", "INFO" }, { "log-domains", 0, 0, G_OPTION_ARG_STRING, &log_domains, @@ -554,58 +500,18 @@ main (int argc, char *argv[]) if (check_pidfile (pidfile)) exit (1); - /* Parse the config file */ - if (config) { - if (!parse_config_file (config, &conf_plugins, &dhcp, &dns, &cfg_log_level, &cfg_log_domains, &error)) { - fprintf (stderr, "Config file %s invalid: (%d) %s\n", - config, - error ? error->code : -1, - (error && error->message) ? error->message : "unknown"); - exit (1); - } - } else { - gboolean parsed = FALSE; - - /* Even though we prefer NetworkManager.conf, we need to check the - * old nm-system-settings.conf first to preserve compat with older - * setups. In package managed systems dropping a NetworkManager.conf - * onto the system would make NM use it instead of nm-system-settings.conf, - * changing behavior during an upgrade. We don't want that. - */ - - /* Try deprecated nm-system-settings.conf first */ - if (g_file_test (NM_OLD_SYSTEM_CONF_FILE, G_FILE_TEST_EXISTS)) { - config = g_strdup (NM_OLD_SYSTEM_CONF_FILE); - parsed = parse_config_file (config, &conf_plugins, &dhcp, &dns, &cfg_log_level, &cfg_log_domains, &error); - if (!parsed) { - fprintf (stderr, "Default config file %s invalid: (%d) %s\n", - config, - error ? error->code : -1, - (error && error->message) ? error->message : "unknown"); - g_free (config); - config = NULL; - g_clear_error (&error); - } - } - - /* Try the preferred NetworkManager.conf last */ - if (!parsed && g_file_test (NM_DEFAULT_SYSTEM_CONF_FILE, G_FILE_TEST_EXISTS)) { - config = g_strdup (NM_DEFAULT_SYSTEM_CONF_FILE); - parsed = parse_config_file (config, &conf_plugins, &dhcp, &dns, &cfg_log_level, &cfg_log_domains, &error); - if (!parsed) { - fprintf (stderr, "Default config file %s invalid: (%d) %s\n", - config, - error ? error->code : -1, - (error && error->message) ? error->message : "unknown"); - g_free (config); - config = NULL; - g_clear_error (&error); - } - } + /* Read the config file and CLI overrides */ + config = nm_config_new (config_path, plugins, log_level, log_domains, &error); + if (config == NULL) { + fprintf (stderr, "Failed to read configuration: (%d) %s\n", + error ? error->code : -1, + (error && error->message) ? error->message : "unknown"); + exit (1); } + /* Logging setup */ - if (!nm_logging_setup (log_level ? log_level : cfg_log_level, - log_domains ? log_domains : cfg_log_domains, + if (!nm_logging_setup (nm_config_get_log_level (config), + nm_config_get_log_domains (config), &error)) { fprintf (stderr, _("%s. Please use --help to see a list of valid options.\n"), @@ -613,10 +519,6 @@ main (int argc, char *argv[]) exit (1); } - /* Plugins specified with '--plugins' override those of config file */ - plugins = plugins ? plugins : g_strdup (conf_plugins); - g_free (conf_plugins); - /* Parse the state file */ if (!parse_state_file (state_file, &net_enabled, &wifi_enabled, &wwan_enabled, &wimax_enabled, &error)) { fprintf (stderr, "State file %s parsing failed: (%d) %s\n", @@ -683,8 +585,7 @@ main (int argc, char *argv[]) nm_log_info (LOGD_CORE, "NetworkManager (version " NM_DIST_VERSION ") is starting..."); success = FALSE; - if (config) - nm_log_info (LOGD_CORE, "Read config file %s", config); + nm_log_info (LOGD_CORE, "Read config file %s", nm_config_get_path (config)); main_loop = g_main_loop_new (NULL, FALSE); @@ -704,22 +605,22 @@ main (int argc, char *argv[]) goto done; } - dns_mgr = nm_dns_manager_get ((const char **) dns); + dns_mgr = nm_dns_manager_get (nm_config_get_dns_plugins (config)); if (!dns_mgr) { nm_log_err (LOGD_CORE, "failed to start the DNS manager."); goto done; } - settings = nm_settings_new (config, plugins, &error); + settings = nm_settings_new (nm_config_get_path (config), + nm_config_get_plugins (config), + &error); if (!settings) { nm_log_err (LOGD_CORE, "failed to initialize settings storage: %s", error && error->message ? error->message : "(unknown)"); goto done; } - manager = nm_manager_get (settings, - config, - plugins, + manager = nm_manager_new (settings, state_file, net_enabled, wifi_enabled, @@ -746,7 +647,7 @@ main (int argc, char *argv[]) } /* Initialize DHCP manager */ - dhcp_mgr = nm_dhcp_manager_new (dhcp, &error); + dhcp_mgr = nm_dhcp_manager_new (nm_config_get_dhcp_client (config), &error); if (!dhcp_mgr) { nm_log_err (LOGD_CORE, "failed to start the DHCP manager: %s.", error->message); goto done; @@ -806,17 +707,15 @@ done: if (pidfile && wrote_pidfile) unlink (pidfile); + nm_config_free (config); + /* Free options */ g_free (pidfile); g_free (state_file); - g_free (config); + g_free (config_path); g_free (plugins); - g_free (dhcp); - g_strfreev (dns); g_free (log_level); g_free (log_domains); - g_free (cfg_log_level); - g_free (cfg_log_domains); nm_log_info (LOGD_CORE, "exiting (%s)", success ? "success" : "error"); exit (success ? 0 : 1); diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in index 2a054f70..c78ed0f3 100644 --- a/src/modem-manager/Makefile.in +++ b/src/modem-manager/Makefile.in @@ -189,8 +189,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c index f5ade50c..3509d667 100644 --- a/src/modem-manager/nm-modem-manager.c +++ b/src/modem-manager/nm-modem-manager.c @@ -29,6 +29,7 @@ #include "nm-dbus-manager.h" #include "nm-modem-types.h" #include "nm-marshal.h" +#include "nm-dbus-glib-types.h" #define MODEM_POKE_INTERVAL 120 @@ -235,6 +236,23 @@ modem_removed (DBusGProxy *proxy, const char *path, gpointer user_data) } } +static void +mm_poke_cb (DBusGProxy *proxy, DBusGProxyCall *call, gpointer user_data) +{ + GPtrArray *modems; + int i; + + if (dbus_g_proxy_end_call (proxy, call, NULL, + DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH, &modems, + G_TYPE_INVALID)) { + /* Don't care about the returned value, just free it */ + for (i = 0; i < modems->len; i++) + g_free ((char *) g_ptr_array_index (modems, i)); + g_ptr_array_free (modems, TRUE); + } + g_object_unref (proxy); +} + static gboolean poke_modem_cb (gpointer user_data) { @@ -242,6 +260,7 @@ poke_modem_cb (gpointer user_data) NMModemManagerPrivate *priv = NM_MODEM_MANAGER_GET_PRIVATE (self); DBusGConnection *g_connection; DBusGProxy *proxy; + DBusGProxyCall *call; g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr); proxy = dbus_g_proxy_new_for_name (g_connection, @@ -249,9 +268,13 @@ poke_modem_cb (gpointer user_data) MM_DBUS_PATH, MM_DBUS_INTERFACE); - dbus_g_proxy_call_no_reply (proxy, "EnumerateDevices", G_TYPE_INVALID); - g_object_unref (proxy); - + call = dbus_g_proxy_begin_call_with_timeout (proxy, + "EnumerateDevices", + mm_poke_cb, + NULL, + NULL, + 5000, + G_TYPE_INVALID); return TRUE; } diff --git a/src/modem-manager/nm-modem.c b/src/modem-manager/nm-modem.c index 1823e5e6..debfbdf7 100644 --- a/src/modem-manager/nm-modem.c +++ b/src/modem-manager/nm-modem.c @@ -640,7 +640,7 @@ static void real_deactivate (NMModem *self, NMDevice *device) { NMModemPrivate *priv; - const char *iface; + int ifindex; g_return_if_fail (self != NULL); g_return_if_fail (NM_IS_MODEM (self)); @@ -679,11 +679,11 @@ real_deactivate (NMModem *self, NMDevice *device) break; case MM_MODEM_IP_METHOD_STATIC: case MM_MODEM_IP_METHOD_DHCP: - iface = nm_device_get_ip_iface (device); + ifindex = nm_device_get_ip_ifindex (device); /* FIXME: use AF_UNSPEC here when we have IPv6 support */ - nm_system_device_flush_routes_with_iface (iface, AF_INET); - nm_system_device_flush_addresses_with_iface (iface); - nm_system_device_set_up_down_with_iface (iface, FALSE, NULL); + nm_system_iface_flush_routes (ifindex, AF_INET); + nm_system_iface_flush_addresses (ifindex, AF_UNSPEC); + nm_system_iface_set_up (ifindex, FALSE, NULL); break; default: nm_log_err (LOGD_MB, "unknown IP method %d", priv->ip_method); @@ -775,7 +775,7 @@ nm_modem_hw_is_up (NMModem *self, NMDevice *device) state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device)); if (priv->pending_ip4_config || _state_is_active (state)) - return nm_system_device_is_up (device); + return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); } return TRUE; @@ -792,7 +792,7 @@ nm_modem_hw_bring_up (NMModem *self, NMDevice *device, gboolean *no_firmware) state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (device)); if (priv->pending_ip4_config || _state_is_active (state)) - return nm_system_device_set_up_down (device, TRUE, no_firmware); + return nm_system_iface_set_up (nm_device_get_ip_ifindex (device), TRUE, no_firmware); } return TRUE; diff --git a/src/nm-config.c b/src/nm-config.c new file mode 100644 index 00000000..71f67d55 --- /dev/null +++ b/src/nm-config.c @@ -0,0 +1,247 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Red Hat, Inc. + */ + +#include <config.h> +#include <string.h> +#include <stdio.h> + +#include "nm-config.h" + +#define NM_DEFAULT_SYSTEM_CONF_FILE SYSCONFDIR"/NetworkManager/NetworkManager.conf" +#define NM_OLD_SYSTEM_CONF_FILE SYSCONFDIR"/NetworkManager/nm-system-settings.conf" + +struct NMConfig { + char *path; + char **plugins; + char *dhcp_client; + char **dns_plugins; + char *log_level; + char *log_domains; +}; + +/************************************************************************/ + +GQuark +nm_config_error_quark (void) +{ + static GQuark quark = 0; + if (!quark) + quark = g_quark_from_static_string ("nm-config-error"); + return quark; +} + +/* This should really be standard. */ +#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC } + +GType +nm_config_error_get_type (void) +{ + static GType etype = 0; + + if (etype == 0) { + static const GEnumValue values[] = { + /* Not enough memory to parse the config file. */ + ENUM_ENTRY (NM_CONFIG_ERROR_NO_MEMORY, "NoMemory"), + { 0, 0, 0 } + }; + etype = g_enum_register_static ("NMConfigError", values); + } + return etype; +} + +/************************************************************************/ + +const char * +nm_config_get_path (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return config->path; +} + +const char ** +nm_config_get_plugins (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return (const char **) config->plugins; +} + +const char * +nm_config_get_dhcp_client (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return config->dhcp_client; +} + +const char ** +nm_config_get_dns_plugins (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return (const char **) config->dns_plugins; +} + +const char * +nm_config_get_log_level (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return config->log_level; +} + +const char * +nm_config_get_log_domains (NMConfig *config) +{ + g_return_val_if_fail (config != NULL, NULL); + + return config->log_domains; +} + +/************************************************************************/ + +static gboolean +fill_from_file (NMConfig *config, + const char *path, + const char *cli_plugins, + const char *cli_log_level, + const char *cli_log_domains, + GError **error) +{ + GKeyFile *kf; + gboolean success = FALSE; + + if (g_file_test (path, G_FILE_TEST_EXISTS) == FALSE) { + g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND, "file %s not found", path); + return FALSE; + } + + kf = g_key_file_new (); + if (!kf) { + g_set_error (error, NM_CONFIG_ERROR, NM_CONFIG_ERROR_NO_MEMORY, + "Not enough memory to load config file %s", path); + return FALSE; + } + + g_key_file_set_list_separator (kf, ','); + if (g_key_file_load_from_file (kf, path, G_KEY_FILE_NONE, error)) { + config->path = g_strdup (path); + + /* CLI provided options override config file options */ + if (cli_plugins && strlen (cli_plugins)) + config->plugins = g_strsplit_set (cli_plugins, ",", 0); + else + config->plugins = g_key_file_get_string_list (kf, "main", "plugins", NULL, NULL); + + config->dhcp_client = g_key_file_get_value (kf, "main", "dhcp", NULL); + config->dns_plugins = g_key_file_get_string_list (kf, "main", "dns", NULL, NULL); + + if (cli_log_level && strlen (cli_log_level)) + config->log_level = g_strdup (cli_log_level); + else + config->log_level = g_key_file_get_value (kf, "logging", "level", NULL); + + if (cli_log_domains && strlen (cli_log_domains)) + config->log_domains = g_strdup (cli_log_domains); + else + config->log_domains = g_key_file_get_value (kf, "logging", "domains", NULL); + success = TRUE; + } + + g_key_file_free (kf); + return success; +} + +NMConfig * +nm_config_new (const char *cli_config_path, + const char *cli_plugins, + const char *cli_log_level, + const char *cli_log_domains, + GError **error) +{ + NMConfig *config; + GError *local = NULL; + + config = g_malloc0 (sizeof (*config)); + + if (cli_config_path) { + /* Bad user-specific config file path is a hard error */ + if (!fill_from_file (config, cli_config_path, cli_plugins, cli_log_level, cli_log_domains, error)) { + nm_config_free (config); + return NULL; + } + return config; + } + + /* Even though we prefer NetworkManager.conf, we need to check the + * old nm-system-settings.conf first to preserve compat with older + * setups. In package managed systems dropping a NetworkManager.conf + * onto the system would make NM use it instead of nm-system-settings.conf, + * changing behavior during an upgrade. We don't want that. + */ + + /* Try deprecated nm-system-settings.conf first */ + if (fill_from_file (config, NM_OLD_SYSTEM_CONF_FILE, cli_plugins, cli_log_level, cli_log_domains, &local)) + return config; + + if (g_error_matches (local, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND) == FALSE) { + fprintf (stderr, "Default config file %s invalid: (%d) %s\n", + NM_OLD_SYSTEM_CONF_FILE, + local ? local->code : -1, + (local && local->message) ? local->message : "unknown"); + } + g_clear_error (&local); + + /* Try the standard config file location next */ + if (fill_from_file (config, NM_DEFAULT_SYSTEM_CONF_FILE, cli_plugins, cli_log_level, cli_log_domains, &local)) + return config; + + if (g_error_matches (local, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND) == FALSE) { + fprintf (stderr, "Default config file %s invalid: (%d) %s\n", + NM_DEFAULT_SYSTEM_CONF_FILE, + local ? local->code : -1, + (local && local->message) ? local->message : "unknown"); + g_propagate_error (error, local); + nm_config_free (config); + return NULL; + } + + /* ignore error if config file not found */ + g_clear_error (&local); + return config; +} + +void +nm_config_free (NMConfig *config) +{ + g_return_if_fail (config != NULL); + + g_free (config->path); + g_strfreev (config->plugins); + g_free (config->dhcp_client); + g_strfreev (config->dns_plugins); + g_free (config->log_level); + g_free (config->log_domains); + + memset (config, 0, sizeof (*config)); + g_free (config); +} + diff --git a/src/nm-config.h b/src/nm-config.h new file mode 100644 index 00000000..fae344fb --- /dev/null +++ b/src/nm-config.h @@ -0,0 +1,55 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Red Hat, Inc. + */ + +#ifndef NM_CONFIG_H +#define NM_CONFIG_H + +#include <glib.h> +#include <glib-object.h> + +typedef struct NMConfig NMConfig; + +typedef enum { + NM_CONFIG_ERROR_NO_MEMORY = 0, +} NMConfigError; + +#define NM_CONFIG_ERROR (nm_config_error_quark ()) +GQuark nm_config_error_quark (void); +#define NM_TYPE_CONFIG_ERROR (nm_config_error_get_type ()) +GType nm_config_error_get_type (void); + + +NMConfig *nm_config_new (const char *cli_config_path, + const char *cli_plugins, + const char *cli_log_level, + const char *cli_log_domains, + GError **error); + +const char *nm_config_get_path (NMConfig *config); +const char **nm_config_get_plugins (NMConfig *config); +const char *nm_config_get_dhcp_client (NMConfig *config); +const char **nm_config_get_dns_plugins (NMConfig *config); +const char *nm_config_get_log_level (NMConfig *config); +const char *nm_config_get_log_domains (NMConfig *config); + +void nm_config_free (NMConfig *config); + +#endif /* NM_CONFIG_H */ + diff --git a/src/nm-crash-logger.c b/src/nm-crash-logger.c index 9ad0412d..e0e7cbf6 100644 --- a/src/nm-crash-logger.c +++ b/src/nm-crash-logger.c @@ -55,6 +55,7 @@ int main (int argc, char ** argv) syslog (LOG_CRIT, "******************* START **********************************"); while (!done) { + line[sizeof (line) - 1] = '\0'; bytes_read = read (out, line, sizeof (line) - 1); if (bytes_read > 0) { diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 35b73670..8556c5bd 100644 --- a/src/nm-device-ethernet.c +++ b/src/nm-device-ethernet.c @@ -59,6 +59,7 @@ #include "nm-logging.h" #include "nm-properties-changed-signal.h" #include "nm-dhcp-manager.h" +#include "nm-netlink-utils.h" #include "nm-device-ethernet-glue.h" @@ -546,19 +547,19 @@ real_take_down (NMDevice *dev) static gboolean real_hw_is_up (NMDevice *device) { - return nm_system_device_is_up (device); + return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); } static gboolean real_hw_bring_up (NMDevice *dev, gboolean *no_firmware) { - return nm_system_device_set_up_down (dev, TRUE, no_firmware); + return nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); } static void real_hw_take_down (NMDevice *dev) { - nm_system_device_set_up_down (dev, FALSE, NULL); + nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); } NMDevice * @@ -677,7 +678,7 @@ _set_hw_addr (NMDeviceEthernet *self, const guint8 *addr, const char *detail) /* Can't change MAC address while device is up */ real_hw_take_down (dev); - success = nm_system_device_set_mac (iface, (struct ether_addr *) addr); + success = nm_system_iface_set_mac (nm_device_get_ip_ifindex (dev), (struct ether_addr *) addr); if (success) { /* MAC address succesfully changed; update the current MAC to match */ _update_hw_addr (self, addr); @@ -1796,73 +1797,19 @@ wired_match_config (NMDevice *self, NMConnection *connection) return TRUE; } -typedef struct { - int ifindex; - NMIP4Address *addr; - gboolean found; -} AddrData; - -static void -check_one_address (struct nl_object *object, void *user_data) -{ - AddrData *data = user_data; - struct rtnl_addr *addr = (struct rtnl_addr *) object; - struct nl_addr *local; - struct in_addr tmp; - - if (rtnl_addr_get_ifindex (addr) != data->ifindex) - return; - if (rtnl_addr_get_family (addr) != AF_INET) - return; - - if (nm_ip4_address_get_prefix (data->addr) != rtnl_addr_get_prefixlen (addr)) - return; - - local = rtnl_addr_get_local (addr); - if (nl_addr_get_family (local) != AF_INET) - return; - if (nl_addr_get_len (local) != sizeof (struct in_addr)) - return; - if (!nl_addr_get_binary_addr (local)) - return; - - memcpy (&tmp, nl_addr_get_binary_addr (local), nl_addr_get_len (local)); - if (tmp.s_addr != nm_ip4_address_get_address (data->addr)) - return; - - /* Yay, found it */ - data->found = TRUE; -} - static gboolean ip4_match_config (NMDevice *self, NMConnection *connection) { NMSettingIP4Config *s_ip4; - struct nl_handle *nlh = NULL; - struct nl_cache *addr_cache = NULL; int i, num; GSList *leases, *iter; NMDHCPManager *dhcp_mgr; const char *method; - int ifindex; - AddrData check_data; - - ifindex = nm_device_get_ifindex (self); - s_ip4 = (NMSettingIP4Config *) nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG); + s_ip4 = nm_connection_get_setting_ip4_config (connection); if (!s_ip4) return FALSE; - /* Read all the device's IP addresses */ - nlh = nm_netlink_get_default_handle (); - if (!nlh) - return FALSE; - - addr_cache = rtnl_addr_alloc_cache (nlh); - if (!addr_cache) - return FALSE; - nl_cache_mngt_provide (addr_cache); - /* Get any saved leases that apply to this connection */ dhcp_mgr = nm_dhcp_manager_get (); leases = nm_dhcp_manager_get_lease_config (dhcp_mgr, @@ -1876,15 +1823,14 @@ ip4_match_config (NMDevice *self, NMConnection *connection) /* Find at least one lease's address on the device */ for (iter = leases; iter; iter = g_slist_next (iter)) { - NMIP4Config *addr = iter->data; - - memset (&check_data, 0, sizeof (check_data)); - check_data.ifindex = ifindex; - check_data.found = FALSE; - check_data.addr = nm_ip4_config_get_address (addr, 0); - - nl_cache_foreach (addr_cache, check_one_address, &check_data); - if (check_data.found) { + NMIP4Config *ip4_config = iter->data; + NMIP4Address *addr = nm_ip4_config_get_address (ip4_config, 0); + struct in_addr tmp = { .s_addr = nm_ip4_address_get_address (addr) }; + + if (addr && nm_netlink_find_address (nm_device_get_ip_ifindex (self), + AF_INET, + &tmp, + nm_ip4_address_get_prefix (addr))) { found = TRUE; /* Yay, device has same address as a lease */ break; } @@ -1908,16 +1854,16 @@ ip4_match_config (NMDevice *self, NMConnection *connection) /* Everything below for static addressing */ - /* Find all IP4 addresses of this connection in the device's address list */ + /* Find all IP4 addresses of this connection on the device */ num = nm_setting_ip4_config_get_num_addresses (s_ip4); for (i = 0; i < num; i++) { - memset (&check_data, 0, sizeof (check_data)); - check_data.ifindex = ifindex; - check_data.found = FALSE; - check_data.addr = nm_setting_ip4_config_get_address (s_ip4, i); + NMIP4Address *addr = nm_setting_ip4_config_get_address (s_ip4, i); + struct in_addr tmp = { .s_addr = nm_ip4_address_get_address (addr) }; - nl_cache_foreach (addr_cache, check_one_address, &check_data); - if (!check_data.found) + if (!nm_netlink_find_address (nm_device_get_ip_ifindex (self), + AF_INET, + &tmp, + nm_ip4_address_get_prefix (addr))) return FALSE; } diff --git a/src/nm-device-olpc-mesh.c b/src/nm-device-olpc-mesh.c index 88322344..ddd5198e 100644 --- a/src/nm-device-olpc-mesh.c +++ b/src/nm-device-olpc-mesh.c @@ -271,19 +271,19 @@ error: static gboolean real_hw_is_up (NMDevice *device) { - return nm_system_device_is_up (device); + return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); } static gboolean real_hw_bring_up (NMDevice *dev, gboolean *no_firmware) { - return nm_system_device_set_up_down (dev, TRUE, no_firmware); + return nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); } static void real_hw_take_down (NMDevice *dev) { - nm_system_device_set_up_down (dev, FALSE, NULL); + nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); } static gboolean @@ -653,7 +653,7 @@ dispose (GObject *object) device_cleanup (self); - manager = nm_manager_get (NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, NULL); + manager = nm_manager_get (); if (priv->device_added_id) g_signal_handler_disconnect (manager, priv->device_added_id); g_object_unref (manager); @@ -852,7 +852,7 @@ is_companion (NMDeviceOlpcMesh *self, NMDevice *other) priv->companion = other; /* When we've found the companion, stop listening for other devices */ - manager = nm_manager_get (NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, NULL); + manager = nm_manager_get (); if (priv->device_added_id) { g_signal_handler_disconnect (manager, priv->device_added_id); priv->device_added_id = 0; @@ -907,7 +907,7 @@ check_companion_cb (gpointer user_data) if (priv->device_added_id != 0) return FALSE; - manager = nm_manager_get (NULL, NULL, NULL, NULL, FALSE, FALSE, FALSE, FALSE, NULL); + manager = nm_manager_get (); priv->device_added_id = g_signal_connect (manager, "device-added", G_CALLBACK (device_added_cb), self); diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c index 278d9a06..9695c077 100644 --- a/src/nm-device-wifi.c +++ b/src/nm-device-wifi.c @@ -1133,7 +1133,7 @@ out: static gboolean real_hw_is_up (NMDevice *device) { - return nm_system_device_is_up (device); + return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); } static gboolean @@ -1142,13 +1142,13 @@ real_hw_bring_up (NMDevice *device, gboolean *no_firmware) if (!NM_DEVICE_WIFI_GET_PRIVATE (device)->enabled) return FALSE; - return nm_system_device_set_up_down (device, TRUE, no_firmware); + return nm_system_iface_set_up (nm_device_get_ip_ifindex (device), TRUE, no_firmware); } static void -real_hw_take_down (NMDevice *dev) +real_hw_take_down (NMDevice *device) { - nm_system_device_set_up_down (dev, FALSE, NULL); + nm_system_iface_set_up (nm_device_get_ip_ifindex (device), FALSE, NULL); } static gboolean @@ -1209,7 +1209,7 @@ _set_hw_addr (NMDeviceWifi *self, const guint8 *addr, const char *detail) /* Can't change MAC address while device is up */ real_hw_take_down (dev); - success = nm_system_device_set_mac (iface, (struct ether_addr *) addr); + success = nm_system_iface_set_mac (nm_device_get_ip_ifindex (dev), (struct ether_addr *) addr); if (success) { /* MAC address succesfully changed; update the current MAC to match */ _update_hw_addr (self, addr); @@ -1690,7 +1690,7 @@ nm_device_wifi_get_address (NMDeviceWifi *self, } static void -nm_device_wifi_ap_list_print (NMDeviceWifi *self) +ap_list_dump (NMDeviceWifi *self) { NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); GSList * elt; @@ -1701,7 +1701,7 @@ nm_device_wifi_ap_list_print (NMDeviceWifi *self) nm_log_dbg (LOGD_WIFI_SCAN, "Current AP list:"); for (elt = priv->ap_list; elt; elt = g_slist_next (elt), i++) { NMAccessPoint * ap = NM_AP (elt->data); - nm_ap_print_self (ap, "AP: "); + nm_ap_dump (ap, "List AP: "); } nm_log_dbg (LOGD_WIFI_SCAN, "Current AP list: done"); } @@ -2180,91 +2180,20 @@ supplicant_iface_scan_done_cb (NMSupplicantInterface *iface, * happens when there are actual scan results to process. */ cull_scan_list (self); - nm_device_wifi_ap_list_print (self); + ap_list_dump (self); } #endif } -static gboolean -is_encrypted (guint32 flags, guint32 wpa_flags, guint32 rsn_flags) -{ - if (flags & NM_802_11_AP_FLAGS_PRIVACY) - return TRUE; - if (wpa_flags & (NM_802_11_AP_SEC_KEY_MGMT_PSK | NM_802_11_AP_SEC_KEY_MGMT_802_1X)) - return TRUE; - if (rsn_flags & (NM_802_11_AP_SEC_KEY_MGMT_PSK | NM_802_11_AP_SEC_KEY_MGMT_802_1X)) - return TRUE; - - return FALSE; -} - -/* - * ap_auth_enforced - * - * Checks whether or not there is an encryption key present for - * this connection, and whether or not the authentication method - * in use will result in an authentication rejection if the key - * is wrong. For example, Ad Hoc mode networks don't have a - * master node and therefore nothing exists to reject the station. - * Similarly, Open System WEP access points don't reject a station - * when the key is wrong. Shared Key WEP access points will. - * - */ -static gboolean -ap_auth_enforced (NMConnection *connection, - NMAccessPoint *ap, - gboolean *encrypted) -{ - guint32 flags, wpa_flags, rsn_flags; - gboolean enforced = FALSE; - - g_return_val_if_fail (NM_IS_AP (ap), FALSE); - g_return_val_if_fail (NM_IS_CONNECTION (connection), FALSE); - g_return_val_if_fail (encrypted != NULL, FALSE); - - flags = nm_ap_get_flags (ap); - wpa_flags = nm_ap_get_wpa_flags (ap); - rsn_flags = nm_ap_get_rsn_flags (ap); - - if (nm_ap_get_mode (ap) == NM_802_11_MODE_ADHOC) - goto out; - - /* Static WEP */ - if ( (flags & NM_802_11_AP_FLAGS_PRIVACY) - && (wpa_flags == NM_802_11_AP_SEC_NONE) - && (rsn_flags == NM_802_11_AP_SEC_NONE)) { - NMSettingWirelessSecurity *s_wireless_sec; - const char *auth_alg; - - /* No way to tell if the key is wrong with Open System - * auth mode in WEP. Auth is not enforced like Shared Key. - */ - s_wireless_sec = (NMSettingWirelessSecurity *) nm_connection_get_setting (connection, - NM_TYPE_SETTING_WIRELESS_SECURITY); - if (s_wireless_sec) { - auth_alg = nm_setting_wireless_security_get_auth_alg (s_wireless_sec); - if (!auth_alg || !strcmp (auth_alg, "open")) - goto out; - } - - enforced = TRUE; - } else if (wpa_flags != NM_802_11_AP_SEC_NONE) { /* WPA */ - enforced = TRUE; - } else if (rsn_flags != NM_802_11_AP_SEC_NONE) { /* WPA2 */ - enforced = TRUE; - } - -out: - *encrypted = is_encrypted (flags, wpa_flags, rsn_flags); - return enforced; -} - /**************************************************************************** * WPA Supplicant control stuff * */ +#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" +#define MAC_ARG(x) ((guint8*)(x))[0],((guint8*)(x))[1],((guint8*)(x))[2],((guint8*)(x))[3],((guint8*)(x))[4],((guint8*)(x))[5] + /* * merge_scanned_ap * @@ -2284,16 +2213,33 @@ merge_scanned_ap (NMDeviceWifi *self, NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); NMAccessPoint *found_ap = NULL; const GByteArray *ssid; + const struct ether_addr *bssid; gboolean strict_match = TRUE; NMAccessPoint *current_ap = NULL; /* Let the manager try to fill in the SSID from seen-bssids lists * if it can */ + bssid = nm_ap_get_address (merge_ap); ssid = nm_ap_get_ssid (merge_ap); if (!ssid || nm_utils_is_empty_ssid (ssid->data, ssid->len)) { + /* Let the manager try to fill the AP's SSID from the database */ g_signal_emit (self, signals[HIDDEN_AP_FOUND], 0, merge_ap); - nm_ap_set_broadcast (merge_ap, FALSE); + + ssid = nm_ap_get_ssid (merge_ap); + if (ssid && (nm_utils_is_empty_ssid (ssid->data, ssid->len) == FALSE)) { + /* Yay, matched it, no longer treat as hidden */ + nm_log_dbg (LOGD_WIFI_SCAN, "(%s): matched hidden AP " MAC_FMT " => '%s'", + nm_device_get_iface (NM_DEVICE (self)), + MAC_ARG (bssid->ether_addr_octet), + nm_utils_escape_ssid (ssid->data, ssid->len)); + nm_ap_set_broadcast (merge_ap, FALSE); + } else { + /* Didn't have an entry for this AP in the database */ + nm_log_dbg (LOGD_WIFI_SCAN, "(%s): failed to match hidden AP " MAC_FMT, + nm_device_get_iface (NM_DEVICE (self)), + MAC_ARG (bssid->ether_addr_octet)); + } } /* If the incoming scan result matches the hidden AP that NM is currently @@ -2308,6 +2254,13 @@ merge_scanned_ap (NMDeviceWifi *self, found_ap = nm_ap_match_in_list (merge_ap, priv->ap_list, strict_match); if (found_ap) { + nm_log_dbg (LOGD_WIFI_SCAN, "(%s): merging AP '%s' " MAC_FMT " (%p) with existing (%p)", + nm_device_get_iface (NM_DEVICE (self)), + ssid ? nm_utils_escape_ssid (ssid->data, ssid->len) : "(none)", + MAC_ARG (bssid->ether_addr_octet), + merge_ap, + found_ap); + nm_ap_set_flags (found_ap, nm_ap_get_flags (merge_ap)); nm_ap_set_wpa_flags (found_ap, nm_ap_get_wpa_flags (merge_ap)); nm_ap_set_rsn_flags (found_ap, nm_ap_get_rsn_flags (merge_ap)); @@ -2323,7 +2276,12 @@ merge_scanned_ap (NMDeviceWifi *self, nm_ap_set_fake (found_ap, FALSE); } else { /* New entry in the list */ - // FIXME: figure out if reference counts are correct here for AP objects + nm_log_dbg (LOGD_WIFI_SCAN, "(%s): adding new AP '%s' " MAC_FMT " (%p)", + nm_device_get_iface (NM_DEVICE (self)), + ssid ? nm_utils_escape_ssid (ssid->data, ssid->len) : "(none)", + MAC_ARG (bssid->ether_addr_octet), + merge_ap); + g_object_ref (merge_ap); priv->ap_list = g_slist_prepend (priv->ap_list, merge_ap); nm_ap_export_to_dbus (merge_ap); @@ -2421,7 +2379,7 @@ supplicant_iface_new_bss_cb (NMSupplicantInterface *iface, ap = nm_ap_new_from_properties (properties); if (ap) { - nm_ap_print_self (ap, "AP: "); + nm_ap_dump (ap, "New AP: "); /* Add the AP to the device's AP list */ merge_scanned_ap (self, ap); @@ -2430,7 +2388,7 @@ supplicant_iface_new_bss_cb (NMSupplicantInterface *iface, /* Remove outdated access points */ cull_scan_list (self); - nm_device_wifi_ap_list_print (self); + ap_list_dump (self); } else { nm_log_warn (LOGD_WIFI_SCAN, "(%s): invalid AP properties received", nm_device_get_iface (NM_DEVICE (self))); @@ -2512,7 +2470,7 @@ link_timeout_cb (gpointer user_data) } static gboolean -handle_authenticate_fail (NMDeviceWifi *self, guint32 new_state, guint32 old_state) +handle_8021x_auth_fail (NMDeviceWifi *self, guint32 new_state, guint32 old_state) { NMDevice *device = NM_DEVICE (self); NMSetting8021x *s_8021x; @@ -2643,18 +2601,21 @@ supplicant_iface_state_cb (NMSupplicantInterface *iface, break; case NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED: if ((devstate == NM_DEVICE_STATE_ACTIVATED) || nm_device_is_activating (device)) { - /* Disconnect during authentication means the 802.1x password is wrong */ - if (handle_authenticate_fail (self, new_state, old_state)) + /* Disconnect of an 802.1x/LEAP connection during authentication + * means secrets might be wrong. Not always the case, but until we + * have more information from wpa_supplicant about why the + * disconnect happened this is the best we can do. + */ + if (handle_8021x_auth_fail (self, new_state, old_state)) break; } + /* Otherwise it might be a stupid driver or some transient error, so + * let the supplicant try to reconnect a few more times. Give it more + * time if a scan is in progress since the link might be dropped during + * the scan but will be re-established when the scan is done. + */ if (devstate == NM_DEVICE_STATE_ACTIVATED) { - /* If it's a disconnect while activated then start the link timer - * to let the supplicant reconnect for a bit and if that doesn't - * work kill the connection and try something else. Allow a bit - * more time if the card is scanning since sometimes the link will - * drop while scanning and come back when the scan is done. - */ if (priv->link_timeout_id == 0) priv->link_timeout_id = g_timeout_add_seconds (scanning ? 30 : 15, link_timeout_cb, self); } @@ -2756,7 +2717,7 @@ supplicant_iface_notify_scanning_cb (NMSupplicantInterface *iface, scanning = nm_supplicant_interface_get_scanning (iface); nm_log_dbg (LOGD_WIFI_SCAN, "(%s): now %s", nm_device_get_iface (NM_DEVICE (self)), - scanning ? "scanning" : "not scanning"); + scanning ? "scanning" : "idle"); g_object_notify (G_OBJECT (self), "scanning"); } @@ -2826,6 +2787,29 @@ handle_auth_or_fail (NMDeviceWifi *self, return ret; } +static gboolean +is_encrypted (NMAccessPoint *ap, NMConnection *connection) +{ + NM80211ApFlags flags; + NM80211ApSecurityFlags wpa_flags, rsn_flags; + + g_return_val_if_fail (ap != NULL, FALSE); + g_return_val_if_fail (connection != NULL, FALSE); + + flags = nm_ap_get_flags (ap); + wpa_flags = nm_ap_get_wpa_flags (ap); + rsn_flags = nm_ap_get_rsn_flags (ap); + + if (flags & NM_802_11_AP_FLAGS_PRIVACY) + return TRUE; + if (wpa_flags & (NM_802_11_AP_SEC_KEY_MGMT_PSK | NM_802_11_AP_SEC_KEY_MGMT_802_1X)) + return TRUE; + if (rsn_flags & (NM_802_11_AP_SEC_KEY_MGMT_PSK | NM_802_11_AP_SEC_KEY_MGMT_802_1X)) + return TRUE; + + return FALSE; +} + /* * supplicant_connection_timeout_cb * @@ -2835,11 +2819,10 @@ handle_auth_or_fail (NMDeviceWifi *self, static gboolean supplicant_connection_timeout_cb (gpointer user_data) { - NMDevice * dev = NM_DEVICE (user_data); - NMDeviceWifi * self = NM_DEVICE_WIFI (user_data); - NMAccessPoint * ap; - NMActRequest * req; - gboolean auth_enforced = FALSE, encrypted = FALSE; + NMDevice *dev = NM_DEVICE (user_data); + NMDeviceWifi *self = NM_DEVICE_WIFI (user_data); + NMAccessPoint *ap; + NMActRequest *req; NMConnection *connection; cleanup_association_attempt (self, TRUE); @@ -2847,10 +2830,10 @@ supplicant_connection_timeout_cb (gpointer user_data) if (!nm_device_is_activating (dev)) return FALSE; - /* Timed out waiting for authentication success; if the security in use - * does not require access point side authentication (Open System - * WEP, for example) then we are likely using the wrong authentication - * algorithm or key. Request new one from the user. + /* Timed out waiting for a successful connection to the AP; if the AP's + * security requires network-side authentication (like WPA or 802.1x) + * and the connection attempt timed out then it's likely the authentication + * information (passwords, pin codes, etc) are wrong. */ req = nm_device_get_act_request (dev); @@ -2862,16 +2845,24 @@ supplicant_connection_timeout_cb (gpointer user_data) ap = nm_device_wifi_get_activation_ap (self); g_assert (ap); - auth_enforced = ap_auth_enforced (connection, ap, &encrypted); - if (!encrypted) { + if (nm_ap_get_mode (ap) == NM_802_11_MODE_ADHOC) { + /* In Ad-Hoc mode there's nothing to check the encryption key (if any) + * so supplicant timeouts here are almost certainly the wifi driver + * being really stupid. + */ nm_log_warn (LOGD_DEVICE | LOGD_WIFI, - "Activation (%s/wireless): association took too long, " - "failing activation.", + "Activation (%s/wireless): Ad-Hoc network creation took " + "too long, failing activation.", nm_device_get_iface (dev)); nm_device_state_changed (dev, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT); - } else { - /* Authentication failed, encryption key is probably bad */ + return FALSE; + } + + if (is_encrypted (ap, connection)) { + /* Connection failed; either driver problems, the encryption key is + * wrong, or the passwords or certificates were wrong. + */ nm_log_warn (LOGD_DEVICE | LOGD_WIFI, "Activation (%s/wireless): association took too long.", nm_device_get_iface (dev)); @@ -2884,6 +2875,13 @@ supplicant_connection_timeout_cb (gpointer user_data) nm_device_state_changed (dev, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_NO_SECRETS); } + } else { + nm_log_warn (LOGD_DEVICE | LOGD_WIFI, + "Activation (%s/wireless): association took too long, " + "failing activation.", + nm_device_get_iface (dev)); + nm_device_state_changed (dev, NM_DEVICE_STATE_FAILED, + NM_DEVICE_STATE_REASON_SUPPLICANT_TIMEOUT); } return FALSE; @@ -3323,6 +3321,34 @@ real_act_stage4_get_ip4_config (NMDevice *dev, return ret; } +static gboolean +is_static_wep (NMAccessPoint *ap, NMConnection *connection) +{ + NM80211ApFlags flags; + NM80211ApSecurityFlags wpa_flags, rsn_flags; + NMSettingWirelessSecurity *s_wsec; + const char *key_mgmt; + + g_return_val_if_fail (ap != NULL, FALSE); + g_return_val_if_fail (connection != NULL, FALSE); + + flags = nm_ap_get_flags (ap); + wpa_flags = nm_ap_get_wpa_flags (ap); + rsn_flags = nm_ap_get_rsn_flags (ap); + + if ( (flags & NM_802_11_AP_FLAGS_PRIVACY) + && (wpa_flags == NM_802_11_AP_SEC_NONE) + && (rsn_flags == NM_802_11_AP_SEC_NONE)) { + s_wsec = nm_connection_get_setting_wireless_security (connection); + if (s_wsec) { + key_mgmt = nm_setting_wireless_security_get_key_mgmt (s_wsec); + if (g_strcmp0 (key_mgmt, "none") == 0) + return TRUE; + } + } + + return FALSE; +} static NMActStageReturn handle_ip_config_timeout (NMDeviceWifi *self, @@ -3333,20 +3359,20 @@ handle_ip_config_timeout (NMDeviceWifi *self, { NMAccessPoint *ap; NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE; - gboolean auth_enforced = FALSE, encrypted = FALSE; g_return_val_if_fail (connection != NULL, NM_ACT_STAGE_RETURN_FAILURE); ap = nm_device_wifi_get_activation_ap (self); g_assert (ap); - /* If nothing checks the security authentication information (as in - * Open System WEP for example), and DHCP times out, then - * the encryption key is likely wrong. Ask the user for a new one. - * Otherwise the failure likely happened after a successful authentication. + /* If IP configuration times out and it's a static WEP connection, that + * usually means the WEP key is wrong. WEP's Open System auth mode has + * no provision for figuring out if the WEP key is wrong, so you just have + * to wait for DHCP to fail to figure it out. For all other WiFi security + * types (open, WPA, 802.1x, etc) if the secrets/certs were wrong the + * connection would have failed before IP configuration. */ - auth_enforced = ap_auth_enforced (connection, ap, &encrypted); - if (encrypted && !auth_enforced && !may_fail) { + if (is_static_wep (ap, connection) && (may_fail == FALSE)) { /* Activation failed, we must have bad encryption key */ nm_log_warn (LOGD_DEVICE | LOGD_WIFI, "Activation (%s/wireless): could not get IP configuration for " @@ -3363,10 +3389,7 @@ handle_ip_config_timeout (NMDeviceWifi *self, *reason = NM_DEVICE_STATE_REASON_NO_SECRETS; } } else { - /* Non-encrypted network or authentication is enforced by some - * entity (AP, RADIUS server, etc), but IP configure failed. Let the - * superclass handle it. - */ + /* Not static WEP or failure allowed; let superclass handle it */ *chain_up = TRUE; } diff --git a/src/nm-device.c b/src/nm-device.c index 1301197a..a4cd3e93 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -25,7 +25,6 @@ #include <dbus/dbus.h> #include <netinet/in.h> #include <string.h> -#include <net/if.h> #include <unistd.h> #include <errno.h> #include <sys/ioctl.h> @@ -34,6 +33,7 @@ #include <sys/wait.h> #include <arpa/inet.h> #include <fcntl.h> +#include <linux/if.h> #include "nm-glib-compat.h" #include "nm-device-interface.h" @@ -47,6 +47,8 @@ #include "nm-utils.h" #include "nm-logging.h" #include "nm-netlink-monitor.h" +#include "nm-netlink-utils.h" +#include "nm-netlink-compat.h" #include "nm-setting-ip4-config.h" #include "nm-setting-ip6-config.h" #include "nm-setting-connection.h" @@ -187,6 +189,8 @@ static void addrconf6_cleanup (NMDevice *self); static void dhcp6_cleanup (NMDevice *self, gboolean stop, gboolean release); static void dhcp4_cleanup (NMDevice *self, gboolean stop, gboolean release); +static const char *reason_to_string (NMDeviceStateReason reason); + static void device_interface_init (NMDeviceInterface *device_interface_class) @@ -1569,8 +1573,11 @@ nm_device_dhcp4_renew (NMDevice *self, gboolean release) g_return_val_if_fail (priv->dhcp4_client != NULL, FALSE); + nm_log_info (LOGD_DHCP4, "(%s): DHCPv4 lease renewal requested", + nm_device_get_iface (self)); + /* Terminate old DHCP instance and release the old lease */ - dhcp4_cleanup (self, TRUE, TRUE); + dhcp4_cleanup (self, TRUE, release); req = nm_device_get_act_request (self); g_assert (req); @@ -1591,16 +1598,15 @@ real_act_stage3_ip4_config_start (NMDevice *self, NMDeviceStateReason *reason) NMSettingIP4Config *s_ip4; NMActRequest *req; NMActStageReturn ret = NM_ACT_STAGE_RETURN_SUCCESS; - const char *ip_iface, *method = NULL; + const char *method = NULL; + int ifindex; g_return_val_if_fail (reason != NULL, NM_ACT_STAGE_RETURN_FAILURE); - /* Use the IP interface (not the control interface) for IP stuff */ - ip_iface = nm_device_get_ip_iface (self); - /* Make sure the interface is up before trying to do anything with it */ - if (!nm_system_device_is_up_with_iface (ip_iface)) - nm_system_device_set_up_down_with_iface (ip_iface, TRUE, NULL); + ifindex = nm_device_get_ip_ifindex (self); + if (!nm_system_iface_is_up (ifindex)) + nm_system_iface_set_up (ifindex, TRUE, NULL); req = nm_device_get_act_request (self); connection = nm_act_request_get_connection (req); @@ -1680,10 +1686,10 @@ dhcp6_start (NMDevice *self, */ err = nm_system_set_ip6_route (priv->ip_iface ? priv->ip_ifindex : priv->ifindex, &dest, 8, NULL, 256, 0, RTPROT_BOOT, RT_TABLE_LOCAL, NULL); - if (err && (nl_get_errno () != EEXIST)) { + if (err && (err != -NLE_EXIST)) { nm_log_err (LOGD_DEVICE | LOGD_IP6, "(%s): failed to add IPv6 multicast route: %s", - priv->ip_iface ? priv->ip_iface : priv->iface, nl_geterror ()); + priv->ip_iface ? priv->ip_iface : priv->iface, nl_geterror (err)); } s_ip6 = (NMSettingIP6Config *) nm_connection_get_setting (connection, NM_TYPE_SETTING_IP6_CONFIG); @@ -2522,7 +2528,7 @@ start_sharing (NMDevice *self) add_share_rule (req, "filter", "FORWARD --in-interface %s --out-interface %s --jump ACCEPT", ip_iface, ip_iface); add_share_rule (req, "filter", "FORWARD --source %s/%s --in-interface %s --jump ACCEPT", str_addr, str_mask, ip_iface); add_share_rule (req, "filter", "FORWARD --destination %s/%s --out-interface %s --match state --state ESTABLISHED,RELATED --jump ACCEPT", str_addr, str_mask, ip_iface); - add_share_rule (req, "nat", "POSTROUTING --source %s/%s --destination ! %s/%s --jump MASQUERADE", str_addr, str_mask, str_addr, str_mask); + add_share_rule (req, "nat", "POSTROUTING --source %s/%s ! --destination %s/%s --jump MASQUERADE", str_addr, str_mask, str_addr, str_mask); nm_act_request_set_shared (req, TRUE); @@ -2820,14 +2826,15 @@ nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason) NMDevicePrivate *priv = NM_DEVICE_GET_PRIVATE (self); NMDeviceStateReason ignored = NM_DEVICE_STATE_REASON_NONE; gboolean tried_ipv6 = FALSE; + int ifindex, family; g_return_if_fail (self != NULL); - nm_log_info (LOGD_DEVICE, "(%s): deactivating device (reason: %d).", - nm_device_get_iface (self), reason); + nm_log_info (LOGD_DEVICE, "(%s): deactivating device (reason '%s') [%d]", + nm_device_get_iface (self), reason_to_string (reason), reason); /* Save whether or not we tried IPv6 for later */ - if (NM_DEVICE_GET_PRIVATE (self)->ip6_manager) + if (priv->ip6_manager || priv->ip6_config) tried_ipv6 = TRUE; /* Break the activation chain */ @@ -2857,8 +2864,10 @@ nm_device_deactivate (NMDeviceInterface *device, NMDeviceStateReason reason) clear_act_request (self); /* Take out any entries in the routing table and any IP address the device had. */ - nm_system_device_flush_routes (self, tried_ipv6 ? AF_UNSPEC : AF_INET); - nm_system_device_flush_addresses (self, tried_ipv6 ? AF_UNSPEC : AF_INET); + ifindex = nm_device_get_ip_ifindex (self); + family = tried_ipv6 ? AF_UNSPEC : AF_INET; + nm_system_iface_flush_routes (ifindex, family); + nm_system_iface_flush_addresses (ifindex, family); nm_device_update_ip4_address (self); /* Clean up nameservers and addresses */ @@ -3009,6 +3018,7 @@ nm_device_set_ip4_config (NMDevice *self, gboolean success = TRUE; NMIP4ConfigCompareFlags diff = NM_IP4_COMPARE_FLAG_ALL; NMDnsManager *dns_mgr; + int ip_ifindex; g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); g_return_val_if_fail (reason != NULL, FALSE); @@ -3039,8 +3049,10 @@ nm_device_set_ip4_config (NMDevice *self, /* Don't touch the device's actual IP config if the connection is * assumed when NM starts. */ - if (!assumed) - success = nm_system_apply_ip4_config (ip_iface, new_config, nm_device_get_priority (self), diff); + if (!assumed) { + ip_ifindex = nm_device_get_ip_ifindex (self); + success = nm_system_apply_ip4_config (ip_ifindex, new_config, nm_device_get_priority (self), diff); + } if (success || assumed) { /* Export over D-Bus */ @@ -3112,12 +3124,14 @@ nm_device_set_ip6_config (NMDevice *self, gboolean success = TRUE; NMIP6ConfigCompareFlags diff = NM_IP6_COMPARE_FLAG_ALL; NMDnsManager *dns_mgr; + int ip_ifindex; g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); g_return_val_if_fail (reason != NULL, FALSE); priv = NM_DEVICE_GET_PRIVATE (self); ip_iface = nm_device_get_ip_iface (self); + ip_ifindex = nm_device_get_ip_ifindex (self); old_config = priv->ip6_config; @@ -3143,7 +3157,7 @@ nm_device_set_ip6_config (NMDevice *self, * assumed when NM starts. */ if (!assumed) - success = nm_system_apply_ip6_config (ip_iface, new_config, nm_device_get_priority (self), diff); + success = nm_system_apply_ip6_config (ip_ifindex, new_config, nm_device_get_priority (self), diff); if (success || assumed) { /* Export over D-Bus */ @@ -3395,7 +3409,7 @@ set_property (GObject *object, guint prop_id, priv->iface = g_value_dup_string (value); if (priv->iface) { priv->ifindex = nm_netlink_iface_to_index (priv->iface); - if (priv->ifindex < 0) { + if (priv->ifindex <= 0) { nm_log_warn (LOGD_HW, "(%s): failed to look up interface index", priv->iface); } } diff --git a/src/nm-manager.c b/src/nm-manager.c index f5782254..475344a5 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -196,7 +196,6 @@ typedef struct { } RadioState; typedef struct { - char *config_file; char *state_file; GSList *devices; @@ -214,7 +213,8 @@ typedef struct { gboolean net_enabled; NMVPNManager *vpn_manager; - guint vpn_manager_id; + gulong vpn_manager_activated_id; + gulong vpn_manager_deactivated_id; NMModemManager *modem_manager; guint modem_added_id; @@ -377,6 +377,18 @@ manager_sleeping (NMManager *self) } static void +vpn_manager_connection_activated_cb (NMVPNManager *manager, + NMVPNConnection *vpn, + NMVPNConnectionState state, + NMVPNConnectionStateReason reason, + gpointer user_data) +{ + /* Update timestamp for the VPN connection */ + nm_settings_connection_update_timestamp (NM_SETTINGS_CONNECTION (nm_vpn_connection_get_connection (vpn)), + (guint64) time (NULL)); +} + +static void vpn_manager_connection_deactivated_cb (NMVPNManager *manager, NMVPNConnection *vpn, NMVPNConnectionState state, @@ -1980,6 +1992,7 @@ nm_manager_activate_connection (NMManager *manager, vpn_connection = nm_vpn_manager_activate_connection (priv->vpn_manager, connection, device, + nm_act_request_get_active_connection_path (parent_req), TRUE, sender_uid, error); @@ -3029,10 +3042,17 @@ out: return DBUS_HANDLER_RESULT_HANDLED; } +static NMManager *singleton = NULL; + +NMManager * +nm_manager_get (void) +{ + g_assert (singleton); + return g_object_ref (singleton); +} + NMManager * -nm_manager_get (NMSettings *settings, - const char *config_file, - const char *plugins, +nm_manager_new (NMSettings *settings, const char *state_file, gboolean initial_net_enabled, gboolean initial_wifi_enabled, @@ -3040,16 +3060,14 @@ nm_manager_get (NMSettings *settings, gboolean initial_wimax_enabled, GError **error) { - static NMManager *singleton = NULL; NMManagerPrivate *priv; DBusGConnection *bus; DBusConnection *dbus_connection; - if (singleton) - return g_object_ref (singleton); - g_assert (settings); + /* Can only be called once */ + g_assert (singleton == NULL); singleton = (NMManager *) g_object_new (NM_TYPE_MANAGER, NULL); g_assert (singleton); @@ -3068,7 +3086,6 @@ nm_manager_get (NMSettings *settings, priv->settings = g_object_ref (settings); - priv->config_file = g_strdup (config_file); priv->state_file = g_strdup (state_file); priv->net_enabled = initial_net_enabled; @@ -3155,13 +3172,16 @@ dispose (GObject *object) } g_free (priv->hostname); - g_free (priv->config_file); g_object_unref (priv->settings); - if (priv->vpn_manager_id) { - g_source_remove (priv->vpn_manager_id); - priv->vpn_manager_id = 0; + if (priv->vpn_manager_activated_id) { + g_source_remove (priv->vpn_manager_activated_id); + priv->vpn_manager_activated_id = 0; + } + if (priv->vpn_manager_deactivated_id) { + g_source_remove (priv->vpn_manager_deactivated_id); + priv->vpn_manager_deactivated_id = 0; } g_object_unref (priv->vpn_manager); @@ -3402,6 +3422,7 @@ static gboolean periodic_update_active_connection_timestamps (gpointer user_data) { NMManager *manager = NM_MANAGER (user_data); + NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); GPtrArray *active; int i; @@ -3416,6 +3437,15 @@ periodic_update_active_connection_timestamps (gpointer user_data) if (device && nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) nm_settings_connection_update_timestamp (NM_SETTINGS_CONNECTION (nm_act_request_get_connection (req)), (guint64) time (NULL)); + else { + /* The connection is probably VPN */ + NMVPNConnection *vpn_con; + + vpn_con = nm_vpn_manager_get_vpn_connection_for_active (priv->vpn_manager, active_path); + if (vpn_con && nm_vpn_connection_get_vpn_state (vpn_con) == NM_VPN_CONNECTION_STATE_ACTIVATED) + nm_settings_connection_update_timestamp (NM_SETTINGS_CONNECTION (nm_vpn_connection_get_connection (vpn_con)), + (guint64) time (NULL)); + } } return TRUE; @@ -3426,7 +3456,7 @@ nm_manager_init (NMManager *manager) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); DBusGConnection *g_connection; - guint id, i; + guint i; GFile *file; /* Initialize rfkill structures and states */ @@ -3471,9 +3501,10 @@ nm_manager_init (NMManager *manager) G_CALLBACK (modem_removed), manager); priv->vpn_manager = nm_vpn_manager_get (); - id = g_signal_connect (G_OBJECT (priv->vpn_manager), "connection-deactivated", - G_CALLBACK (vpn_manager_connection_deactivated_cb), manager); - priv->vpn_manager_id = id; + priv->vpn_manager_activated_id = g_signal_connect (G_OBJECT (priv->vpn_manager), "connection-activated", + G_CALLBACK (vpn_manager_connection_activated_cb), manager); + priv->vpn_manager_deactivated_id = g_signal_connect (G_OBJECT (priv->vpn_manager), "connection-deactivated", + G_CALLBACK (vpn_manager_connection_deactivated_cb), manager); g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr); diff --git a/src/nm-manager.h b/src/nm-manager.h index 22bfca9e..b044971f 100644 --- a/src/nm-manager.h +++ b/src/nm-manager.h @@ -67,9 +67,8 @@ typedef struct { GType nm_manager_get_type (void); -NMManager *nm_manager_get (NMSettings *settings, - const char *config_file, - const char *plugins, +/* nm_manager_new() should only be used by main.c */ +NMManager *nm_manager_new (NMSettings *settings, const char *state_file, gboolean initial_net_enabled, gboolean initial_wifi_enabled, @@ -77,6 +76,8 @@ NMManager *nm_manager_get (NMSettings *settings, gboolean initial_wimax_enabled, GError **error); +NMManager *nm_manager_get (void); + void nm_manager_start (NMManager *manager); /* Device handling */ diff --git a/src/nm-netlink-compat.c b/src/nm-netlink-compat.c new file mode 100644 index 00000000..e91a1ff2 --- /dev/null +++ b/src/nm-netlink-compat.c @@ -0,0 +1,105 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Caixa Magica Software. + */ + +#include <config.h> +#include <glib.h> + +#include "nm-netlink-compat.h" + +#ifndef HAVE_LIBNL1 +struct rtnl_nexthop * +nm_netlink_get_nh (struct rtnl_route * route) +{ + int hops; + + hops = rtnl_route_get_nnexthops (route); + g_return_val_if_fail(hops > 0, NULL); + return rtnl_route_nexthop_n (route, 0); +} + +int +rtnl_route_get_oif (struct rtnl_route * route) +{ + struct rtnl_nexthop * nh; + + nh = nm_netlink_get_nh(route); + g_return_val_if_fail(nh, -NLE_OBJ_NOTFOUND); + return rtnl_route_nh_get_ifindex (nh); +} + +int +rtnl_route_set_oif (struct rtnl_route * route, int ifindex) +{ + struct rtnl_nexthop * nh; + + nh = rtnl_route_nh_alloc(); + rtnl_route_nh_set_ifindex(nh, ifindex); + rtnl_route_add_nexthop(route, nh); + return 0; +} + +struct nl_addr * +rtnl_route_get_gateway (struct rtnl_route * route) +{ + struct rtnl_nexthop * nh; + + nh = nm_netlink_get_nh(route); + g_return_val_if_fail(nh, NULL); + return rtnl_route_nh_get_gateway(nh); +} + +int +rtnl_route_set_gateway (struct rtnl_route * route, struct nl_addr * gw_addr) +{ + struct rtnl_nexthop * nh; + + nh = nm_netlink_get_nh(route); + g_return_val_if_fail(nh, -NLE_OBJ_NOTFOUND); + + rtnl_route_nh_set_gateway(nh, gw_addr); + return 0; +} + +int +rtnl_route_get_dst_len(struct rtnl_route * rtnlroute) +{ + struct nl_addr * dst; + + dst = rtnl_route_get_dst(rtnlroute); + return nl_addr_get_prefixlen(dst); +} +#endif + +#ifdef HAVE_LIBNL1 +int +nl_compat_error (int err) +{ + err = abs (err); + + if (err == EEXIST) + err = NLE_EXIST; + else if (err == ENOENT || err == ESRCH) + err = NLE_OBJ_NOTFOUND; + else if (err == ERANGE) + err = NLE_RANGE; + + return -err; +} +#endif diff --git a/src/nm-netlink-compat.h b/src/nm-netlink-compat.h new file mode 100644 index 00000000..af21fb9a --- /dev/null +++ b/src/nm-netlink-compat.h @@ -0,0 +1,207 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Caixa Magica Software. + */ + +#ifndef NM_NETLINK_COMPAT_H +#define NM_NETLINK_COMPAT_H + +#include <errno.h> + +#include <netlink/netlink.h> +#include <netlink/route/rtnl.h> +#include <netlink/route/link.h> +#include <netlink/route/route.h> +#include <netlink/route/addr.h> + + +#include <netlink/netlink.h> +#include <netlink/cache.h> +#include <netlink/utils.h> +#include <netlink/data.h> +#include <netlink/route/rtnl.h> +#include <netlink/route/route.h> +#include <netlink/route/link.h> +#include <netlink/route/nexthop.h> + +#include <config.h> + +/* libnl-1 API compatibility for libnl-2/3*/ +#ifndef HAVE_LIBNL1 + +struct rtnl_nexthop * nm_netlink_get_nh(struct rtnl_route *); +int rtnl_route_get_oif(struct rtnl_route *); +int rtnl_route_set_oif(struct rtnl_route *, int); +int rtnl_route_set_gateway(struct rtnl_route *, struct nl_addr *); +int rtnl_route_get_dst_len(struct rtnl_route *); +struct nl_addr * rtnl_route_get_gateway(struct rtnl_route *); +#endif + +/* libnl-2 API compatibility for libnl-3 */ +#ifdef HAVE_LIBNL3 +static inline int +__rtnl_link_alloc_cache (struct nl_sock *h, struct nl_cache **cache) +{ + return rtnl_link_alloc_cache (h, AF_UNSPEC, cache); +} +#define rtnl_link_alloc_cache __rtnl_link_alloc_cache +#endif + + +/* libnl-2.0 compat functions */ +#ifdef HAVE_LIBNL2 + +/* functions with similar prototypes */ +#define nlmsg_datalen nlmsg_len +#endif + + +/* libnl-1.0 compat functions */ +#ifdef HAVE_LIBNL1 + +#define nl_sock nl_handle + +/* libnl-1.0 functions with similar prototypes */ +#define nl_socket_alloc nl_handle_alloc +#define nl_socket_alloc_cb nl_handle_alloc_cb +#define nl_socket_free nl_handle_destroy +#define nl_socket_set_passcred nl_set_passcred +#define nl_socket_disable_seq_check nl_disable_sequence_check +#define rtnl_route_set_priority rtnl_route_set_prio +#define nlmsg_datalen nlmsg_len + +/* auxiliary functions */ +int nl_compat_error (int); + +/* libnl-1.0 functions with modified prototypes in libnl-2/3*/ +static inline const char * +__nl_geterror (int err) +{ + /* err is set, can be parsed */ + return nl_geterror (); +} +#define nl_geterror __nl_geterror + +static inline int +__rtnl_addr_alloc_cache (struct nl_sock *h, struct nl_cache **cache) +{ + g_return_val_if_fail (cache != NULL, -EINVAL); + + *cache = rtnl_addr_alloc_cache (h); + return *cache ? 0 : -ENOMEM; +} +#define rtnl_addr_alloc_cache __rtnl_addr_alloc_cache + +static inline int +__rtnl_route_alloc_cache (struct nl_sock *h, int family, int flags, struct nl_cache **cache) +{ + g_return_val_if_fail (cache != NULL, -EINVAL); + + *cache = rtnl_route_alloc_cache (h); + return *cache ? 0 : -ENOMEM; +} +#define rtnl_route_alloc_cache __rtnl_route_alloc_cache + +static inline int +__rtnl_link_alloc_cache (struct nl_sock *h, struct nl_cache **cache) +{ + g_return_val_if_fail (cache != NULL, -EINVAL); + + *cache = rtnl_link_alloc_cache (h); + return *cache ? 0 : -ENOMEM; +} +#define rtnl_link_alloc_cache __rtnl_link_alloc_cache + +static inline int +__rtnl_route_get_metric (struct rtnl_route *route, int metric, unsigned int *value) +{ + g_return_val_if_fail (value != NULL, -EINVAL); + + *value = rtnl_route_get_metric (route, metric); + return 0; +} +#define rtnl_route_get_metric __rtnl_route_get_metric + +static inline int +__rtnl_addr_add (struct nl_sock *h, struct rtnl_addr *addr, int flags) +{ + return nl_compat_error (rtnl_addr_add (h, addr, flags)); +} +#define rtnl_addr_add __rtnl_addr_add + +static inline int +__rtnl_route_add (struct nl_sock *sk, struct rtnl_route *route, int flags) +{ + return nl_compat_error (rtnl_route_add (sk, route, flags)); +} +#define rtnl_route_add __rtnl_route_add + +static inline int +rtnl_route_delete (struct nl_sock *h, struct rtnl_route *route, int flags) +{ + return nl_compat_error (rtnl_route_del (h, route, flags)); +} +#define rtnl_route_del rtnl_route_delete + +static inline int +__rtnl_link_change (struct nl_sock *h, struct rtnl_link *old, struct rtnl_link *tmpl, int flags) +{ + return nl_compat_error (rtnl_link_change (h, old, tmpl,flags)); +} +#define rtnl_link_change __rtnl_link_change + +static inline int +__nl_cache_include (struct nl_cache *cache, struct nl_object *obj, change_func_t cb, void *data) +{ + return nl_cache_include (cache, obj, cb); +} +#define nl_cache_include __nl_cache_include + +#define NLE_SUCCESS 0 +#define NLE_FAILURE 1 +#define NLE_INTR 2 +#define NLE_BAD_SOCK 3 +#define NLE_AGAIN 4 +#define NLE_NOMEM 5 +#define NLE_EXIST 6 +#define NLE_INVAL 7 +#define NLE_RANGE 8 +#define NLE_MSGSIZE 9 +#define NLE_OPNOTSUPP 10 +#define NLE_AF_NOSUPPORT 11 +#define NLE_OBJ_NOTFOUND 12 +#define NLE_NOATTR 13 +#define NLE_MISSING_ATTR 14 +#define NLE_AF_MISMATCH 15 +#define NLE_SEQ_MISMATCH 16 +#define NLE_MSG_OVERFLOW 17 +#define NLE_MSG_TRUNC 18 +#define NLE_NOADDR 19 +#define NLE_SRCRT_NOSUPPORT 20 +#define NLE_MSG_TOOSHORT 21 +#define NLE_MSGTYPE_NOSUPPORT 22 +#define NLE_OBJ_MISMATCH 23 +#define NLE_NOCACHE 24 +#define NLE_BUSY 25 +#define NLE_PROTO_MISMATCH 26 +#define NLE_NOACCESS 27 +#define NLE_PERM 28 +#define NLE_PKTLOC_FILE 29 +#endif + +#endif /* NM_NETLINK_COMPAT_H */ diff --git a/src/nm-netlink-monitor.c b/src/nm-netlink-monitor.c index 13b3ab98..9b8dac5c 100644 --- a/src/nm-netlink-monitor.c +++ b/src/nm-netlink-monitor.c @@ -45,6 +45,7 @@ #include <glib.h> #include <glib/gi18n.h> +#include "nm-netlink-compat.h" #include "nm-netlink-monitor.h" #include "nm-logging.h" @@ -58,12 +59,12 @@ typedef struct { /* Async event listener connection */ - struct nl_handle *nlh_event; + struct nl_sock *nlh_event; GIOChannel * io_channel; guint event_id; /* Sync/blocking request/response connection */ - struct nl_handle *nlh_sync; + struct nl_sock *nlh_sync; struct nl_cache * link_cache; guint request_status_id; @@ -98,7 +99,7 @@ link_msg_handler (struct nl_object *obj, void *arg) error = g_error_new (NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_BAD_ALLOC, _("error processing netlink message: %s"), - nl_geterror ()); + nl_geterror (ENOMEM)); g_signal_emit (self, signals[ERROR], 0, error); g_error_free (error); return; @@ -130,7 +131,7 @@ link_msg_handler (struct nl_object *obj, void *arg) static int event_msg_recv (struct nl_msg *msg, void *arg) { - struct nl_handle *nlh = arg; + struct nl_sock *nlh = arg; struct nlmsghdr *hdr = nlmsg_hdr (msg); struct ucred *creds = nlmsg_get_creds (msg); const struct sockaddr_nl *snl; @@ -195,6 +196,7 @@ event_handler (GIOChannel *channel, NMNetlinkMonitor *self = (NMNetlinkMonitor *) user_data; NMNetlinkMonitorPrivate *priv; GError *error = NULL; + int err; g_return_val_if_fail (NM_IS_NETLINK_MONITOR (self), TRUE); @@ -225,11 +227,12 @@ event_handler (GIOChannel *channel, g_return_val_if_fail (!(io_condition & ~EVENT_CONDITIONS), FALSE); /* Process the netlink messages */ - if (nl_recvmsgs_default (priv->nlh_event) < 0) { + err = nl_recvmsgs_default (priv->nlh_event); + if (err < 0) { error = g_error_new (NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_PROCESSING_MESSAGE, _("error processing netlink message: %s"), - nl_geterror ()); + nl_geterror (err)); g_signal_emit (self, signals[ERROR], 0, error); g_error_free (error); } @@ -238,32 +241,35 @@ event_handler (GIOChannel *channel, } static gboolean -nlh_setup (struct nl_handle *nlh, +nlh_setup (struct nl_sock *nlh, nl_recvmsg_msg_cb_t valid_func, gpointer cb_data, GError **error) { + int err; + nl_socket_modify_cb (nlh, NL_CB_MSG_IN, NL_CB_CUSTOM, event_msg_recv, cb_data); if (valid_func) nl_socket_modify_cb (nlh, NL_CB_VALID, NL_CB_CUSTOM, valid_func, cb_data); - if (nl_connect (nlh, NETLINK_ROUTE) < 0) { + err = nl_connect (nlh, NETLINK_ROUTE); + if (err < 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_CONNECT, _("unable to connect to netlink for monitoring link status: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } /* Enable unix socket peer credentials which we use for verifying that the * sender of the message is actually the kernel. */ - if (nl_set_passcred (nlh, 1) < 0) { + if (nl_socket_set_passcred (nlh, 1) < 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_CONNECT, _("unable to enable netlink handle credential passing: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } @@ -276,27 +282,24 @@ event_connection_setup (NMNetlinkMonitor *self, GError **error) NMNetlinkMonitorPrivate *priv = NM_NETLINK_MONITOR_GET_PRIVATE (self); GError *channel_error = NULL; GIOFlags channel_flags; - struct nl_cb *cb; int fd; g_return_val_if_fail (priv->io_channel == NULL, FALSE); /* Set up the event listener connection */ - cb = nl_cb_alloc (NL_CB_DEFAULT); - priv->nlh_event = nl_handle_alloc_cb (cb); - nl_cb_put (cb); + priv->nlh_event = nl_socket_alloc (); if (!priv->nlh_event) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_ALLOC_HANDLE, _("unable to allocate netlink handle for monitoring link status: %s"), - nl_geterror ()); + nl_geterror (ENOMEM)); goto error; } if (!nlh_setup (priv->nlh_event, event_msg_ready, self, error)) goto error; - nl_disable_sequence_check (priv->nlh_event); + nl_socket_disable_seq_check (priv->nlh_event); /* Subscribe to the LINK group for internal carrier signals */ if (!nm_netlink_monitor_subscribe (self, RTNLGRP_LINK, error)) @@ -327,7 +330,7 @@ error: nm_netlink_monitor_close_connection (self); if (priv->nlh_event) { - nl_handle_destroy (priv->nlh_event); + nl_socket_free (priv->nlh_event); priv->nlh_event = NULL; } @@ -338,20 +341,18 @@ static gboolean sync_connection_setup (NMNetlinkMonitor *self, GError **error) { NMNetlinkMonitorPrivate *priv = NM_NETLINK_MONITOR_GET_PRIVATE (self); - struct nl_cb *cb; #ifdef LIBNL_NEEDS_ADDR_CACHING_WORKAROUND struct nl_cache *addr_cache; #endif + int err; /* Set up the event listener connection */ - cb = nl_cb_alloc (NL_CB_DEFAULT); - priv->nlh_sync = nl_handle_alloc_cb (cb); - nl_cb_put (cb); + priv->nlh_sync = nl_socket_alloc (); if (!priv->nlh_sync) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_ALLOC_HANDLE, _("unable to allocate netlink handle for monitoring link status: %s"), - nl_geterror ()); + nl_geterror (ENOMEM)); goto error; } @@ -365,16 +366,18 @@ sync_connection_setup (NMNetlinkMonitor *self, GError **error) * result, most addresses will not compare as equal even to * themselves, busting caching. */ - addr_cache = rtnl_addr_alloc_cache (priv->nlh_sync); + rtnl_addr_alloc_cache (priv->nlh_sync, &addr_cache); + g_warn_if_fail (addr_cache != NULL); nl_cache_get_ops (addr_cache)->co_obj_ops->oo_id_attrs &= ~0x80; nl_cache_free (addr_cache); #endif - if ((priv->link_cache = rtnl_link_alloc_cache (priv->nlh_sync)) == NULL) { + err = rtnl_link_alloc_cache (priv->nlh_sync, &priv->link_cache); + if (err < 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_ALLOC_LINK_CACHE, _("unable to allocate netlink link cache for monitoring link status: %s"), - nl_geterror ()); + nl_geterror (err)); goto error; } nl_cache_mngt_provide (priv->link_cache); @@ -388,7 +391,7 @@ error: } if (priv->nlh_sync) { - nl_handle_destroy (priv->nlh_sync); + nl_socket_free (priv->nlh_sync); priv->nlh_sync = NULL; } @@ -483,7 +486,7 @@ gboolean nm_netlink_monitor_subscribe (NMNetlinkMonitor *self, int group, GError **error) { NMNetlinkMonitorPrivate *priv; - int subs; + int subs, err; g_return_val_if_fail (NM_IS_NETLINK_MONITOR (self), FALSE); @@ -496,11 +499,12 @@ nm_netlink_monitor_subscribe (NMNetlinkMonitor *self, int group, GError **error) subs = get_subs (self, group) + 1; if (subs == 1) { - if (nl_socket_add_membership (priv->nlh_event, group) < 0) { + err = nl_socket_add_membership (priv->nlh_event, group); + if (err < 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_NETLINK_JOIN_GROUP, _("unable to join netlink group: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } } @@ -558,15 +562,17 @@ deferred_emit_carrier_state (gpointer user_data) { NMNetlinkMonitor *self = NM_NETLINK_MONITOR (user_data); NMNetlinkMonitorPrivate *priv = NM_NETLINK_MONITOR_GET_PRIVATE (self); + int err; priv->request_status_id = 0; /* Update the link cache with latest state, and if there are no errors * emit the link states for all the interfaces in the cache. */ - if (nl_cache_refill (priv->nlh_sync, priv->link_cache)) { - nm_log_err (LOGD_HW, "error updating link cache: %s", nl_geterror ()); - } else + err = nl_cache_refill (priv->nlh_sync, priv->link_cache); + if (err < 0) + nm_log_err (LOGD_HW, "error updating link cache: %s", nl_geterror (err)); + else nl_cache_foreach_filter (priv->link_cache, NULL, link_msg_handler, self); return FALSE; @@ -614,6 +620,7 @@ nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *self, NMNetlinkMonitorPrivate *priv; GetFlagsInfo info; struct rtnl_link *filter; + int err; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (NM_IS_NETLINK_MONITOR (self), FALSE); @@ -622,12 +629,13 @@ nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *self, priv = NM_NETLINK_MONITOR_GET_PRIVATE (self); /* Update the link cache with the latest information */ - if (nl_cache_refill (priv->nlh_sync, priv->link_cache)) { + err = nl_cache_refill (priv->nlh_sync, priv->link_cache); + if (err < 0) { g_set_error (error, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_LINK_CACHE_UPDATE, _("error updating link cache: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } @@ -640,7 +648,7 @@ nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *self, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_LINK_CACHE_UPDATE, _("error updating link cache: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } @@ -651,7 +659,7 @@ nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *self, NM_NETLINK_MONITOR_ERROR, NM_NETLINK_MONITOR_ERROR_BAD_ALLOC, _("error processing netlink message: %s"), - nl_geterror ()); + nl_geterror (err)); return FALSE; } rtnl_link_set_ifindex (filter, ifindex); @@ -678,11 +686,11 @@ nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *self, /***************************************************************/ -struct nl_handle * +struct nl_sock * nm_netlink_get_default_handle (void) { NMNetlinkMonitor *self; - struct nl_handle *nlh; + struct nl_sock *nlh; self = nm_netlink_monitor_get (); nlh = NM_NETLINK_MONITOR_GET_PRIVATE (self)->nlh_sync; @@ -710,6 +718,13 @@ nm_netlink_iface_to_index (const char *iface) return idx; } +/** + * nm_netlink_index_to_iface: + * @idx: kernel interface index + * + * Returns: the device name corresponding to the kernel interface index; caller + * owns returned value and must free it when it is no longer required + **/ #define MAX_IFACE_LEN 33 char * nm_netlink_index_to_iface (int idx) @@ -728,6 +743,7 @@ nm_netlink_index_to_iface (int idx) nl_cache_refill (priv->nlh_sync, priv->link_cache); if (!rtnl_link_i2name (priv->link_cache, idx, buf, MAX_IFACE_LEN - 1)) { + nm_log_warn (LOGD_HW, "(%d) failed to find interface name for index", idx); g_free (buf); buf = NULL; } @@ -796,12 +812,12 @@ finalize (GObject *object) } if (priv->nlh_event) { - nl_handle_destroy (priv->nlh_event); + nl_socket_free (priv->nlh_event); priv->nlh_event = NULL; } if (priv->nlh_sync) { - nl_handle_destroy (priv->nlh_sync); + nl_socket_free (priv->nlh_sync); priv->nlh_sync = NULL; } diff --git a/src/nm-netlink-monitor.h b/src/nm-netlink-monitor.h index 8b57a312..5c1fa339 100644 --- a/src/nm-netlink-monitor.h +++ b/src/nm-netlink-monitor.h @@ -90,10 +90,12 @@ gboolean nm_netlink_monitor_get_flags_sync (NMNetlinkMonitor *monitor guint32 *ifflags, GError **error); +#include "nm-netlink-compat.h" + /* Generic utility functions */ int nm_netlink_iface_to_index (const char *iface); char * nm_netlink_index_to_iface (int idx); struct rtnl_link *nm_netlink_index_to_rtnl_link (int idx); -struct nl_handle *nm_netlink_get_default_handle (void); +struct nl_sock * nm_netlink_get_default_handle (void); #endif /* NM_NETLINK_MONITOR_H */ diff --git a/src/nm-netlink-utils.c b/src/nm-netlink-utils.c new file mode 100644 index 00000000..4a62aa55 --- /dev/null +++ b/src/nm-netlink-utils.c @@ -0,0 +1,426 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Red Hat, Inc. + */ + +#include "logging/nm-logging.h" +#include "nm-netlink-utils.h" +#include "nm-netlink-monitor.h" +#include "nm-netlink-compat.h" + +#include <arpa/inet.h> +#include <netinet/in.h> +#include <netlink/netlink.h> +#include <netlink/addr.h> +#include <netlink/route/addr.h> + +#include <errno.h> + +typedef struct { + int ifindex; + int family; + void *addr; + int addrlen; + int prefix; + gboolean found; +} FindAddrInfo; + +static void +find_one_address (struct nl_object *object, void *user_data) +{ + FindAddrInfo *info = user_data; + struct rtnl_addr *addr = (struct rtnl_addr *) object; + struct nl_addr *local; + void *binaddr; + + if (info->found) + return; + + if (rtnl_addr_get_ifindex (addr) != info->ifindex) + return; + if (rtnl_addr_get_family (addr) != info->family) + return; + + if (rtnl_addr_get_prefixlen (addr) != info->prefix) + return; + + local = rtnl_addr_get_local (addr); + if (nl_addr_get_family (local) != info->family) + return; + if (nl_addr_get_len (local) != info->addrlen) + return; + binaddr = nl_addr_get_binary_addr (local); + if (binaddr) { + if (memcmp (binaddr, info->addr, info->addrlen) == 0) + info->found = TRUE; /* Yay, found it */ + } +} + +/** + * nm_netlink_find_address: + * @ifindex: interface index + * @family: address family, either AF_INET or AF_INET6 + * @addr: binary address, either struct in_addr* or struct in6_addr* + * @prefix: prefix length + * + * Searches for a matching address on the given interface. + * + * Returns: %TRUE if the given address was found on the interface, %FALSE if it + * was not found or an error occurred. + **/ +gboolean +nm_netlink_find_address (int ifindex, + int family, + void *addr, /* struct in_addr or struct in6_addr */ + int prefix) +{ + struct nl_sock *nlh = NULL; + struct nl_cache *cache = NULL; + FindAddrInfo info; + + g_return_val_if_fail (ifindex > 0, FALSE); + g_return_val_if_fail (family == AF_INET || family == AF_INET6, FALSE); + g_return_val_if_fail (addr != NULL, FALSE); + g_return_val_if_fail (prefix >= 0, FALSE); + + memset (&info, 0, sizeof (info)); + info.ifindex = ifindex; + info.family = family; + info.prefix = prefix; + info.addr = addr; + if (family == AF_INET) + info.addrlen = sizeof (struct in_addr); + else if (family == AF_INET6) + info.addrlen = sizeof (struct in6_addr); + else + g_assert_not_reached (); + + nlh = nm_netlink_get_default_handle (); + if (nlh) { + rtnl_addr_alloc_cache(nlh, &cache); + if (cache) { + nl_cache_mngt_provide (cache); + nl_cache_foreach (cache, find_one_address, &info); + nl_cache_free (cache); + } + } + return info.found; +} + +struct rtnl_route * +nm_netlink_route_new (int ifindex, + int family, + int mss, + ...) +{ + va_list var_args; + struct rtnl_route *route; + NmNlProp prop = NMNL_PROP_INVALID; + int value; + + route = rtnl_route_alloc (); + g_return_val_if_fail (route != NULL, NULL); + + if (ifindex >= 0) + rtnl_route_set_oif (route, ifindex); + if (family != AF_UNSPEC) + rtnl_route_set_family (route, family); + if (mss > 0) + rtnl_route_set_metric (route, RTAX_ADVMSS, mss); + + va_start (var_args, mss); + prop = va_arg (var_args, NmNlProp); + while (prop != NMNL_PROP_INVALID) { + value = va_arg (var_args, int); + + if (prop == NMNL_PROP_PROT && value != RTPROT_UNSPEC) + rtnl_route_set_protocol (route, value); + else if (prop == NMNL_PROP_TABLE && value != RT_TABLE_UNSPEC) + rtnl_route_set_table (route, value); + else if (prop == NMNL_PROP_SCOPE && value != RT_SCOPE_NOWHERE) + rtnl_route_set_scope (route, value); + else if (prop == NMNL_PROP_PRIO && value > 0) + rtnl_route_set_priority (route, value); + + prop = va_arg (var_args, NmNlProp); + } + va_end (var_args); + + return route; +} + +/** + * nm_netlink_route_add: + * @route: the route to add + * + * Returns: zero if succeeded or the netlink error otherwise. + **/ +int nm_netlink_route_add(struct rtnl_route * route, + int family, + const void * dest, /* in_addr or in6_addr */ + int dest_prefix, + const void * gateway, /* in_addr or in6_addr */ + int flags) +{ + struct nl_sock * sk; + struct nl_addr * dest_addr, * gw_addr; + void * tmp_addr; + int addrlen, err, log; + + if(family == AF_INET) { + addrlen = sizeof(struct in_addr); + log = LOGD_IP4; + } + else if (family == AF_INET6) { + addrlen = sizeof(struct in6_addr); + log = LOGD_IP6; + } else { + g_assert_not_reached (); + } + + + sk = nm_netlink_get_default_handle(); + + /* Build up the destination address */ + if (dest) { + /* Copy to preserve const */ + tmp_addr = g_malloc0(addrlen); + memcpy(tmp_addr, dest, addrlen); + + dest_addr = nl_addr_build (family, tmp_addr, addrlen); + g_free(tmp_addr); + + g_return_val_if_fail (dest_addr != NULL, -NLE_INVAL); + nl_addr_set_prefixlen (dest_addr, dest_prefix); + + rtnl_route_set_dst (route, dest_addr); + nl_addr_put (dest_addr); + } + + /* Build up the gateway address */ + if (gateway) { + tmp_addr = g_malloc0(addrlen); + memcpy(tmp_addr, gateway, addrlen); + + gw_addr = nl_addr_build (family, tmp_addr, addrlen); + g_free(tmp_addr); + + if (gw_addr) { + nl_addr_set_prefixlen (gw_addr, 0); + rtnl_route_set_gateway (route, gw_addr); + rtnl_route_set_scope (route, RT_SCOPE_UNIVERSE); + nl_addr_put(gw_addr); + } else { + nm_log_err (LOGD_DEVICE | log, "Invalid gateway"); + } + } + + err = rtnl_route_add (sk, route, flags); + + /* LIBNL Bug: Aliased ESRCH */ + if (err == -NLE_FAILURE) + err = -NLE_OBJ_NOTFOUND; + + if (err) + nm_log_warn (LOGD_DEVICE | log, + "Failed to add route %s", + nl_geterror(err)); + + return err; +} + +/** + * nm_netlink_route_delete: + * @route: the route to delete + * + * Returns: %TRUE if the request was successful, %FALSE if it failed + **/ +gboolean +nm_netlink_route_delete (struct rtnl_route *route) +{ + struct nl_sock *nlh; + int err = 0; + + g_return_val_if_fail (route != NULL, FALSE); + + nlh = nm_netlink_get_default_handle (); + err = rtnl_route_delete (nlh, route, 0); + + if (err) + nm_log_dbg (LOGD_IP4 | LOGD_IP6, "%s (%d)", nl_geterror(err), err); + + /* Workaround libnl BUG: ESRCH is aliased to generic NLE_FAILURE + * See: http://git.kernel.org/?p=libs/netlink/libnl.git;a=commit;h=7e9d5f */ + if (err == -NLE_FAILURE) + err = -NLE_OBJ_NOTFOUND; + + return (err && (err != -NLE_OBJ_NOTFOUND) && (err != -NLE_RANGE) ) ? FALSE : TRUE; +} + + +static void +dump_route (struct rtnl_route *route) +{ + char buf6[INET6_ADDRSTRLEN]; + char buf4[INET_ADDRSTRLEN]; + struct nl_addr *nl; + struct in6_addr *addr6 = NULL; + struct in_addr *addr4 = NULL; + int prefixlen = 0; + const char *sf = "UNSPEC"; + int family = rtnl_route_get_family (route); + guint32 log_level = LOGD_IP4 | LOGD_IP6; + + memset (buf6, 0, sizeof (buf6)); + memset (buf4, 0, sizeof (buf4)); + nl = rtnl_route_get_dst (route); + if (nl) { + if (nl_addr_get_family (nl) == AF_INET) { + addr4 = nl_addr_get_binary_addr (nl); + if (addr4) + inet_ntop (AF_INET, addr4, &buf4[0], sizeof (buf4)); + } else if (nl_addr_get_family (nl) == AF_INET6) { + addr6 = nl_addr_get_binary_addr (nl); + if (addr6) + inet_ntop (AF_INET6, addr6, &buf6[0], sizeof (buf6)); + } + prefixlen = nl_addr_get_prefixlen (nl); + } + + if (family == AF_INET) { + sf = "INET"; + log_level = LOGD_IP4; + } else if (family == AF_INET6) { + sf = "INET6"; + log_level = LOGD_IP6; + } + + nm_log_dbg (log_level, " route idx %d family %s (%d) addr %s/%d", + rtnl_route_get_oif (route), + sf, family, + strlen (buf4) ? buf4 : (strlen (buf6) ? buf6 : "<unknown>"), + prefixlen); +} + + +typedef struct { + int ifindex; + int family; + int scope; + gboolean ignore_inet6_ll_mc; + char *iface; + NlRouteForeachFunc callback; + gpointer user_data; + struct rtnl_route *out_route; +} ForeachRouteInfo; + +static void +foreach_route_cb (struct nl_object *object, void *user_data) +{ + ForeachRouteInfo *info = user_data; + struct rtnl_route *route = (struct rtnl_route *) object; + struct nl_addr *dst; + + if (info->out_route) + return; + + if (nm_logging_level_enabled (LOGL_DEBUG)) + dump_route (route); + + if ( info->ifindex >= 0 + && rtnl_route_get_oif (route) != info->ifindex) + return; + + if ( info->scope != RT_SCOPE_UNIVERSE + && rtnl_route_get_scope (route) != info->scope) + return; + + if ( info->family != AF_UNSPEC + && rtnl_route_get_family (route) != info->family) + return; + + dst = rtnl_route_get_dst (route); + + /* Check for IPv6 LL and MC routes that might need to be ignored */ + if ( (info->family == AF_INET6 || info->family == AF_UNSPEC) + && (rtnl_route_get_family (route) == AF_INET6)) { + struct in6_addr *addr = NULL; + + if (dst) + addr = nl_addr_get_binary_addr (dst); + if (addr) { + if ( IN6_IS_ADDR_LINKLOCAL (addr) + || IN6_IS_ADDR_MC_LINKLOCAL (addr) + || (IN6_IS_ADDR_MULTICAST (addr) && (nl_addr_get_prefixlen (dst) == 8))) + return; + } + } + + info->out_route = info->callback (route, dst, info->iface, info->user_data); + if (info->out_route) { + /* Ref the route so it sticks around after the cache is cleared */ + rtnl_route_get (info->out_route); + } +} + +/** + * nm_netlink_foreach_route: + * @ifindex: the interface index to filter routes for + * @family: the address family to filter routes for + * @scope: route scope, eg RT_SCOPE_LINK + * @ignore_inet6_ll_mc: if %TRUE ignore IPv6 link-local and multi-cast routes + * @callback: function called when a route matches the filter + * @user_data: data passed to @callback + * + * Filters each route in the routing table against the given @ifindex and + * @family (if given) and calls @callback for each matching route. + * + * Returns: a route if @callback returned one; the caller must dispose of the + * route using rtnl_route_put() when it is no longer required. + **/ +struct rtnl_route * +nm_netlink_foreach_route (int ifindex, + int family, + int scope, + gboolean ignore_inet6_ll_mc, + NlRouteForeachFunc callback, + gpointer user_data) +{ + struct nl_cache *cache; + ForeachRouteInfo info; + + memset (&info, 0, sizeof (info)); + info.ifindex = ifindex; + info.family = family; + info.scope = scope; + info.ignore_inet6_ll_mc = ignore_inet6_ll_mc; + info.callback = callback; + info.user_data = user_data; + info.iface = nm_netlink_index_to_iface (ifindex); + + rtnl_route_alloc_cache (nm_netlink_get_default_handle (), family, NL_AUTO_PROVIDE, &cache); + g_warn_if_fail (cache != NULL); + if (cache) { + nl_cache_foreach (cache, foreach_route_cb, &info); + nl_cache_free (cache); + } + g_free (info.iface); + return info.out_route; +} + + diff --git a/src/nm-netlink-utils.h b/src/nm-netlink-utils.h new file mode 100644 index 00000000..c6c452a0 --- /dev/null +++ b/src/nm-netlink-utils.h @@ -0,0 +1,80 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * 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. + * + * Copyright (C) 2011 Red Hat, Inc. + */ + +#ifndef NM_NETLINK_UTILS_H +#define NM_NETLINK_UTILS_H + +#include <glib.h> +#include <netlink/route/rtnl.h> +#include <netlink/route/route.h> + +gboolean nm_netlink_find_address (int ifindex, + int family, + void *addr, /* struct in_addr or struct in6_addr */ + int prefix_); + +typedef enum { + NMNL_PROP_INVALID = 0, + NMNL_PROP_PROT, + NMNL_PROP_SCOPE, + NMNL_PROP_TABLE, + NMNL_PROP_PRIO, +} NmNlProp; + +struct rtnl_route * nm_netlink_route_new (int ifindex, + int family, + int mss, + ...) __attribute__((__sentinel__)); + +int nm_netlink_route_add (struct rtnl_route *route, + int family, + const void * dst, /* struct in_addr or struct in6_addr */ + int prefix, + const void * gw, /* struct in_addr or struct in6_addr */ + int flags); + +gboolean nm_netlink_route_delete (struct rtnl_route *route); + +/** + * NlRouteForeachFunc: + * @route: the route being processed + * @dst: the route's destination address + * @iface: the interface name of the index passed to nm_netlink_foreach_route() + * @in_family: the address family passed to nm_netlink_foreach_route() + * @user_data: the user data pointer passed to nm_netlink_foreach_route() + * + * Returns: a route to return to the caller of nm_netlink_foreach_route() which + * terminates routing table iteration, or NULL to continue iterating the + * routing table. + **/ +typedef struct rtnl_route * (*NlRouteForeachFunc) (struct rtnl_route *route, + struct nl_addr *dst, + const char *iface, + gpointer user_data); + +struct rtnl_route * nm_netlink_foreach_route (int ifindex, + int family, + int scope, + gboolean ignore_inet6_ll_mc, + NlRouteForeachFunc callback, + gpointer user_data); + +#endif /* NM_NETLINK_MONITOR_H */ + diff --git a/src/nm-policy.c b/src/nm-policy.c index a42a0fa9..5c4059e1 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -322,7 +322,7 @@ update_system_hostname (NMPolicy *policy, NMDevice *best4, NMDevice *best6) /* Grab a hostname out of the device's DHCP4 config */ dhcp4_config = nm_device_get_dhcp4_config (best4); if (dhcp4_config) { - p = dhcp_hostname = nm_dhcp4_config_get_option (dhcp4_config, "new_host_name"); + p = dhcp_hostname = nm_dhcp4_config_get_option (dhcp4_config, "host_name"); if (dhcp_hostname && strlen (dhcp_hostname)) { /* Sanity check; strip leading spaces */ while (*p) { @@ -341,7 +341,7 @@ update_system_hostname (NMPolicy *policy, NMDevice *best4, NMDevice *best6) /* Grab a hostname out of the device's DHCP6 config */ dhcp6_config = nm_device_get_dhcp6_config (best6); if (dhcp6_config) { - p = dhcp_hostname = nm_dhcp6_config_get_option (dhcp6_config, "new_host_name"); + p = dhcp_hostname = nm_dhcp6_config_get_option (dhcp6_config, "host_name"); if (dhcp_hostname && strlen (dhcp_hostname)) { /* Sanity check; strip leading spaces */ while (*p) { @@ -425,6 +425,7 @@ update_ip4_routing_and_dns (NMPolicy *policy, gboolean force_update) NMConnection *connection = NULL; NMSettingConnection *s_con = NULL; const char *connection_id; + int ip_ifindex = 0; best = get_best_ip4_device (policy->manager, &best_req); if (!best) @@ -461,17 +462,18 @@ update_ip4_routing_and_dns (NMPolicy *policy, gboolean force_update) NMDevice *parent; ip_iface = nm_vpn_connection_get_ip_iface (candidate); + ip_ifindex = nm_vpn_connection_get_ip_ifindex (candidate); connection = nm_vpn_connection_get_connection (candidate); addr = nm_ip4_config_get_address (ip4_config, 0); parent = nm_vpn_connection_get_parent_device (candidate); parent_ip4 = nm_device_get_ip4_config (parent); - nm_system_replace_default_ip4_route_vpn (ip_iface, + nm_system_replace_default_ip4_route_vpn (ip_ifindex, nm_ip4_address_get_gateway (addr), nm_vpn_connection_get_ip4_internal_gateway (candidate), nm_ip4_config_get_mss (ip4_config), - nm_device_get_ip_iface (parent), + nm_device_get_ip_ifindex (parent), nm_ip4_config_get_mss (parent_ip4)); dns_type = NM_DNS_IP_CONFIG_TYPE_VPN; @@ -483,12 +485,14 @@ update_ip4_routing_and_dns (NMPolicy *policy, gboolean force_update) if (!ip_iface || !ip4_config) { connection = nm_act_request_get_connection (best_req); ip_iface = nm_device_get_ip_iface (best); + ip_ifindex = nm_device_get_ip_ifindex (best); ip4_config = nm_device_get_ip4_config (best); g_assert (ip4_config); addr = nm_ip4_config_get_address (ip4_config, 0); - nm_system_replace_default_ip4_route (ip_iface, nm_ip4_address_get_gateway (addr), nm_ip4_config_get_mss (ip4_config)); - + nm_system_replace_default_ip4_route (ip_ifindex, + nm_ip4_address_get_gateway (addr), + nm_ip4_config_get_mss (ip4_config)); dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE; } @@ -551,6 +555,7 @@ update_ip6_routing_and_dns (NMPolicy *policy, gboolean force_update) NMIP6Config *ip6_config = NULL; NMIP6Address *addr; const char *ip_iface = NULL; + int ip_ifindex = -1; NMConnection *connection = NULL; NMSettingConnection *s_con = NULL; const char *connection_id; @@ -608,11 +613,12 @@ update_ip6_routing_and_dns (NMPolicy *policy, gboolean force_update) if (!ip_iface || !ip6_config) { connection = nm_act_request_get_connection (best_req); ip_iface = nm_device_get_ip_iface (best); + ip_ifindex = nm_device_get_ip_ifindex (best); ip6_config = nm_device_get_ip6_config (best); g_assert (ip6_config); addr = nm_ip6_config_get_address (ip6_config, 0); - nm_system_replace_default_ip6_route (ip_iface, nm_ip6_address_get_gateway (addr)); + nm_system_replace_default_ip6_route (ip_ifindex, nm_ip6_address_get_gateway (addr)); dns_type = NM_DNS_IP_CONFIG_TYPE_BEST_DEVICE; } diff --git a/src/nm-system.c b/src/nm-system.c index 88db6596..62ab8b93 100644 --- a/src/nm-system.c +++ b/src/nm-system.c @@ -40,7 +40,7 @@ #include <netdb.h> #include <glib.h> #include <ctype.h> -#include <net/if.h> +#include <linux/if.h> #include "nm-system.h" #include "nm-device.h" @@ -48,9 +48,8 @@ #include "nm-utils.h" #include "nm-logging.h" #include "nm-netlink-monitor.h" - -/* Because of a bug in libnl, rtnl.h should be included before route.h */ -#include <netlink/route/rtnl.h> +#include "nm-netlink-utils.h" +#include "nm-netlink-compat.h" #include <netlink/route/addr.h> #include <netlink/route/route.h> @@ -58,9 +57,9 @@ #include <netlink/utils.h> #include <netlink/route/link.h> -static void nm_system_device_set_priority (const char *iface, - NMIP4Config *config, - int priority); +static void nm_system_device_set_priority (int ifindex, + NMIP4Config *config, + int priority); static gboolean ip4_dest_in_same_subnet (NMIP4Config *config, guint32 dest, guint32 dest_prefix) @@ -87,99 +86,54 @@ ip4_dest_in_same_subnet (NMIP4Config *config, guint32 dest, guint32 dest_prefix) } static struct rtnl_route * -create_route (int iface_idx, int mss) -{ - struct rtnl_route *route; - - route = rtnl_route_alloc (); - if (route) { - rtnl_route_set_oif (route, iface_idx); - - if (mss && rtnl_route_set_metric (route, RTAX_ADVMSS, mss) < 0) { - nm_log_warn (LOGD_DEVICE, "could not set mss"); - } - } else - nm_log_err (LOGD_DEVICE, "could not allocate route"); - - return route; -} - -static struct rtnl_route * -nm_system_device_set_ip4_route (const char *iface, +nm_system_device_set_ip4_route (int ifindex, guint32 ip4_dest, guint32 ip4_prefix, guint32 ip4_gateway, guint32 metric, int mss) { - struct nl_handle *nlh; + struct nl_sock *nlh; struct rtnl_route *route; - struct nl_addr *dest_addr; - struct nl_addr *gw_addr = NULL; - int err, iface_idx; + int err; + + g_return_val_if_fail (ifindex > 0, NULL); nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, NULL); - iface_idx = nm_netlink_iface_to_index (iface); - g_return_val_if_fail (iface_idx >= 0, NULL); - - route = create_route (iface_idx, mss); + route = nm_netlink_route_new (ifindex, AF_INET, mss, + NMNL_PROP_PRIO, metric, + NULL); g_return_val_if_fail (route != NULL, NULL); - /* Destination */ - dest_addr = nl_addr_build (AF_INET, &ip4_dest, sizeof (ip4_dest)); - g_return_val_if_fail (dest_addr != NULL, NULL); - nl_addr_set_prefixlen (dest_addr, (int) ip4_prefix); - - rtnl_route_set_dst (route, dest_addr); - nl_addr_put (dest_addr); - - /* Gateway */ - if (ip4_gateway) { - gw_addr = nl_addr_build (AF_INET, &ip4_gateway, sizeof (ip4_gateway)); - if (gw_addr) { - rtnl_route_set_gateway (route, gw_addr); - rtnl_route_set_scope (route, RT_SCOPE_UNIVERSE); - } else { - nm_log_err (LOGD_DEVICE | LOGD_IP4, "Invalid gateway 0x%X", ip4_gateway); - rtnl_route_put (route); - return NULL; - } - } - - /* Metric */ - if (metric) - rtnl_route_set_prio (route, metric); - /* Add the route */ - err = rtnl_route_add (nlh, route, 0); - if (err == -ESRCH && ip4_gateway) { + err = nm_netlink_route_add(route, AF_INET, &ip4_dest, ip4_prefix, &ip4_gateway, 0); + if (err == -NLE_OBJ_NOTFOUND && ip4_gateway) { /* Gateway might be over a bridge; try adding a route to gateway first */ struct rtnl_route *route2; - route2 = create_route (iface_idx, mss); + route2 = nm_netlink_route_new (ifindex, AF_INET, mss, NULL); if (route2) { /* Add route to gateway over bridge */ - rtnl_route_set_dst (route2, gw_addr); - err = rtnl_route_add (nlh, route2, 0); + err = nm_netlink_route_add(route2, AF_INET, &ip4_gateway, 32, NULL, 0); if (!err) { - /* Try adding the route again */ - err = rtnl_route_add (nlh, route, 0); + err = nm_netlink_route_add(route, AF_INET, &ip4_dest, ip4_prefix, &ip4_gateway, 0); if (err) - rtnl_route_del (nlh, route2, 0); + nm_netlink_route_delete (route2); } rtnl_route_put (route2); } } - if (gw_addr) - nl_addr_put (gw_addr); - if (err) { + char *iface = nm_netlink_index_to_iface (ifindex); + nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to set IPv4 route: %s", - iface, nl_geterror ()); + iface ? iface : "unknown", nl_geterror (err)); + g_free (iface); + rtnl_route_put (route); route = NULL; } @@ -188,17 +142,21 @@ nm_system_device_set_ip4_route (const char *iface, } static gboolean -sync_addresses (const char *iface, int ifindex, int family, - struct rtnl_addr **addrs, int num_addrs) +sync_addresses (int ifindex, + int family, + struct rtnl_addr **addrs, + int num_addrs) { - struct nl_handle *nlh; - struct nl_cache *addr_cache; - struct rtnl_addr *filter_addr, *match_addr; + struct nl_sock *nlh; + struct nl_cache *addr_cache = NULL; + struct rtnl_addr *filter_addr = NULL, *match_addr; struct nl_object *match; struct nl_addr *nladdr; int i, err; guint32 log_domain = (family == AF_INET) ? LOGD_IP4 : LOGD_IP6; char buf[INET6_ADDRSTRLEN + 1]; + char *iface = NULL; + gboolean success = FALSE; log_domain |= LOGD_DEVICE; @@ -206,19 +164,22 @@ sync_addresses (const char *iface, int ifindex, int family, if (!nlh) return FALSE; - addr_cache = rtnl_addr_alloc_cache (nlh); - if (!addr_cache) + err = rtnl_addr_alloc_cache (nlh, &addr_cache); + if (err < 0) return FALSE; filter_addr = rtnl_addr_alloc (); - if (!filter_addr) { - nl_cache_free (addr_cache); - return FALSE; - } + if (!filter_addr) + goto out; + rtnl_addr_set_ifindex (filter_addr, ifindex); if (family) rtnl_addr_set_family (filter_addr, family); + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + goto out; + nm_log_dbg (log_domain, "(%s): syncing addresses (family %d)", iface, family); /* Walk through the cache, comparing the addresses already on @@ -279,13 +240,10 @@ sync_addresses (const char *iface, int ifindex, int family, err = rtnl_addr_delete (nlh, match_addr, 0); if (err < 0) { nm_log_err (log_domain, "(%s): error %d returned from rtnl_addr_delete(): %s", - iface, err, nl_geterror ()); + iface, err, nl_geterror (err)); } } - rtnl_addr_put (filter_addr); - nl_cache_free (addr_cache); - /* Now add the remaining new addresses */ for (i = 0; i < num_addrs; i++) { struct in6_addr *in6tmp; @@ -312,28 +270,40 @@ sync_addresses (const char *iface, int ifindex, int family, } err = rtnl_addr_add (nlh, addrs[i], 0); - if (err < 0 && (nl_get_errno () != EEXIST)) { + if (err < 0 && (err != -NLE_EXIST)) { nm_log_err (log_domain, "(%s): error %d returned from rtnl_addr_add():\n%s", - iface, err, nl_geterror ()); + iface, err, nl_geterror (err)); } rtnl_addr_put (addrs[i]); } g_free (addrs); + success = TRUE; - return TRUE; +out: + if (filter_addr) + rtnl_addr_put (filter_addr); + if (addr_cache) + nl_cache_free (addr_cache); + g_free (iface); + return success; } static gboolean -add_ip4_addresses (NMIP4Config *config, const char *iface) +add_ip4_addresses (NMIP4Config *config, int ifindex) { - int num_addrs, i, iface_idx; + char *iface; + int num_addrs, i; guint32 flags = 0; gboolean did_gw = FALSE; struct rtnl_addr **addrs; - iface_idx = nm_netlink_iface_to_index (iface); + g_return_val_if_fail (ifindex > 0, FALSE); + + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + return FALSE; num_addrs = nm_ip4_config_get_num_addresses (config); addrs = g_new0 (struct rtnl_addr *, num_addrs + 1); @@ -355,13 +325,14 @@ add_ip4_addresses (NMIP4Config *config, const char *iface) if (!addrs[i]) { nm_log_warn (LOGD_DEVICE | LOGD_IP4, "(%s): couldn't create rtnl address!", - iface); + iface ? iface : "unknown"); continue; } - rtnl_addr_set_ifindex (addrs[i], iface_idx); + rtnl_addr_set_ifindex (addrs[i], ifindex); } + g_free (iface); - return sync_addresses (iface, iface_idx, AF_INET, addrs, num_addrs); + return sync_addresses (ifindex, AF_INET, addrs, num_addrs); } struct rtnl_route * @@ -406,10 +377,10 @@ nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_c * parent device. */ if (ip4_dest_in_same_subnet (parent_config, vpn_gw, parent_prefix)) { - route = nm_system_device_set_ip4_route (nm_device_get_ip_iface (parent_device), + route = nm_system_device_set_ip4_route (nm_device_get_ip_ifindex (parent_device), vpn_gw, 32, 0, 0, nm_ip4_config_get_mss (parent_config)); } else { - route = nm_system_device_set_ip4_route (nm_device_get_ip_iface (parent_device), + route = nm_system_device_set_ip4_route (nm_device_get_ip_ifindex (parent_device), vpn_gw, 32, parent_gw, 0, nm_ip4_config_get_mss (parent_config)); } @@ -423,18 +394,18 @@ nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_c * */ gboolean -nm_system_apply_ip4_config (const char *iface, +nm_system_apply_ip4_config (int ifindex, NMIP4Config *config, int priority, NMIP4ConfigCompareFlags flags) { int i; - g_return_val_if_fail (iface != NULL, FALSE); + g_return_val_if_fail (ifindex > 0, FALSE); g_return_val_if_fail (config != NULL, FALSE); if (flags & NM_IP4_COMPARE_FLAG_ADDRESSES) { - if (!add_ip4_addresses (config, iface)) + if (!add_ip4_addresses (config, ifindex)) return FALSE; sleep (1); } @@ -459,7 +430,7 @@ nm_system_apply_ip4_config (const char *iface, && nm_ip4_route_get_dest (route) == 0) continue; - tmp = nm_system_device_set_ip4_route (iface, + tmp = nm_system_device_set_ip4_route (ifindex, nm_ip4_route_get_dest (route), nm_ip4_route_get_prefix (route), nm_ip4_route_get_next_hop (route), @@ -471,11 +442,11 @@ nm_system_apply_ip4_config (const char *iface, if (flags & NM_IP4_COMPARE_FLAG_MTU) { if (nm_ip4_config_get_mtu (config)) - nm_system_device_set_mtu (iface, nm_ip4_config_get_mtu (config)); + nm_system_iface_set_mtu (ifindex, nm_ip4_config_get_mtu (config)); } if (priority > 0) - nm_system_device_set_priority (iface, config, priority); + nm_system_device_set_priority (ifindex, config, priority); return TRUE; } @@ -491,10 +462,8 @@ nm_system_set_ip6_route (int ifindex, int table, struct rtnl_route **out_route) { - struct nl_handle *nlh; + struct nl_sock *nlh; struct rtnl_route *route; - struct nl_addr *dest_addr; - struct nl_addr *gw_addr = NULL; int err = 0; g_return_val_if_fail (ifindex >= 0, -1); @@ -502,64 +471,33 @@ nm_system_set_ip6_route (int ifindex, nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, -1); - route = create_route (ifindex, mss); + route = nm_netlink_route_new (ifindex, AF_INET6, mss, + NMNL_PROP_PROT, protocol, + NMNL_PROP_PRIO, metric, + NMNL_PROP_TABLE, table, + NULL); g_return_val_if_fail (route != NULL, -1); - /* Destination */ - dest_addr = nl_addr_build (AF_INET6, (struct in6_addr *) ip6_dest, sizeof (*ip6_dest)); - g_return_val_if_fail (dest_addr != NULL, -1); - nl_addr_set_prefixlen (dest_addr, (int) ip6_prefix); - - rtnl_route_set_dst (route, dest_addr); - nl_addr_put (dest_addr); - - /* Gateway */ - if (ip6_gateway && !IN6_IS_ADDR_UNSPECIFIED (ip6_gateway)) { - gw_addr = nl_addr_build (AF_INET6, (struct in6_addr *) ip6_gateway, sizeof (*ip6_gateway)); - if (gw_addr) { - rtnl_route_set_gateway (route, gw_addr); - rtnl_route_set_scope (route, RT_SCOPE_UNIVERSE); - } else { - nm_log_warn (LOGD_DEVICE | LOGD_IP6, "Invalid gateway"); - rtnl_route_put (route); - return -1; - } - } - - /* Metric */ - if (metric) - rtnl_route_set_prio (route, metric); - - if (protocol) - rtnl_route_set_protocol (route, protocol); - - if (table) - rtnl_route_set_table (route, table); - /* Add the route */ - err = rtnl_route_add (nlh, route, 0); - if (err == -ESRCH && ip6_gateway) { + err = nm_netlink_route_add(route, AF_INET6, &ip6_dest, ip6_prefix, &ip6_gateway, 0); + if (err == -NLE_OBJ_NOTFOUND && ip6_gateway) { /* Gateway might be over a bridge; try adding a route to gateway first */ struct rtnl_route *route2; - route2 = create_route (ifindex, mss); + route2 = nm_netlink_route_new (ifindex, AF_INET6, mss, NULL); if (route2) { + err = nm_netlink_route_add(route, AF_INET6, &ip6_gateway, 128, NULL, 0); /* Add route to gateway over bridge */ - rtnl_route_set_dst (route2, gw_addr); - err = rtnl_route_add (nlh, route2, 0); if (!err) { /* Try adding the route again */ - err = rtnl_route_add (nlh, route, 0); + err = nm_netlink_route_add(route, AF_INET6, &ip6_dest, ip6_prefix, &ip6_gateway, 0); if (err) - rtnl_route_del (nlh, route2, 0); + nm_netlink_route_delete (route2); } rtnl_route_put (route2); } } - if (gw_addr) - nl_addr_put (gw_addr); - if (out_route) *out_route = route; else @@ -569,12 +507,17 @@ nm_system_set_ip6_route (int ifindex, } static gboolean -add_ip6_addresses (NMIP6Config *config, const char *iface) +add_ip6_addresses (NMIP6Config *config, int ifindex) { - int num_addrs, i, iface_idx; + char *iface; + int num_addrs, i; struct rtnl_addr **addrs; - iface_idx = nm_netlink_iface_to_index (iface); + g_return_val_if_fail (ifindex > 0, FALSE); + + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + return FALSE; num_addrs = nm_ip6_config_get_num_addresses (config); addrs = g_new0 (struct rtnl_addr *, num_addrs + 1); @@ -589,13 +532,14 @@ add_ip6_addresses (NMIP6Config *config, const char *iface) if (!addrs[i]) { nm_log_warn (LOGD_DEVICE | LOGD_IP6, "(%s): couldn't create rtnl address!", - iface); + iface ? iface : "unknown"); continue; } - rtnl_addr_set_ifindex (addrs[i], iface_idx); + rtnl_addr_set_ifindex (addrs[i], ifindex); } + g_free (iface); - return sync_addresses (iface, iface_idx, AF_INET6, addrs, num_addrs); + return sync_addresses (ifindex, AF_INET6, addrs, num_addrs); } /* @@ -605,24 +549,24 @@ add_ip6_addresses (NMIP6Config *config, const char *iface) * */ gboolean -nm_system_apply_ip6_config (const char *iface, +nm_system_apply_ip6_config (int ifindex, NMIP6Config *config, int priority, NMIP6ConfigCompareFlags flags) { int i; - g_return_val_if_fail (iface != NULL, FALSE); + g_return_val_if_fail (ifindex > 0, FALSE); g_return_val_if_fail (config != NULL, FALSE); if (flags & NM_IP6_COMPARE_FLAG_ADDRESSES) { - if (!add_ip6_addresses (config, iface)) + if (!add_ip6_addresses (config, ifindex)) return FALSE; sleep (1); // FIXME? } if (flags & NM_IP6_COMPARE_FLAG_ROUTES) { - int ifindex = nm_netlink_iface_to_index (iface); + char *iface = nm_netlink_index_to_iface (ifindex); for (i = 0; i < nm_ip6_config_get_num_routes (config); i++) { NMIP6Route *route = nm_ip6_config_get_route (config, i); @@ -647,9 +591,11 @@ nm_system_apply_ip6_config (const char *iface, if (err) { nm_log_err (LOGD_DEVICE | LOGD_IP6, "(%s): failed to set IPv6 route: %s", - iface, nl_geterror ()); + iface ? iface : "unknown", + nl_geterror (err)); } } + g_free (iface); } // FIXME @@ -659,217 +605,221 @@ nm_system_apply_ip6_config (const char *iface, return TRUE; } -/* - * nm_system_device_set_up_down +/** + * nm_system_iface_set_up: + * @ifindex: interface index + * @up: %TRUE to bring interface up, or %FALSE to take it down + * @no_firmware: on return, %TRUE if the operation may have failed due to + * missing firmware * - * Mark the device as up or down. + * Bring the interface up or take it down. * - */ -gboolean -nm_system_device_set_up_down (NMDevice *dev, - gboolean up, - gboolean *no_firmware) -{ - g_return_val_if_fail (dev != NULL, FALSE); - - return nm_system_device_set_up_down_with_iface (nm_device_get_ip_iface (dev), up, no_firmware); -} - + * Returns: %TRUE on success, %FALSE on failure + **/ gboolean -nm_system_device_set_up_down_with_iface (const char *iface, - gboolean up, - gboolean *no_firmware) +nm_system_iface_set_up (int ifindex, + gboolean up, + gboolean *no_firmware) { struct rtnl_link *request = NULL, *old = NULL; - struct nl_handle *nlh; + struct nl_sock *nlh; gboolean success = FALSE; - guint32 idx; + int err; - g_return_val_if_fail (iface != NULL, FALSE); + g_return_val_if_fail (ifindex > 0, FALSE); if (no_firmware) g_return_val_if_fail (*no_firmware == FALSE, FALSE); if (!(request = rtnl_link_alloc ())) - goto out; + return FALSE; if (up) rtnl_link_set_flags (request, IFF_UP); else rtnl_link_unset_flags (request, IFF_UP); - idx = nm_netlink_iface_to_index (iface); - old = nm_netlink_index_to_rtnl_link (idx); + old = nm_netlink_index_to_rtnl_link (ifindex); if (old) { nlh = nm_netlink_get_default_handle (); if (nlh) { - if (rtnl_link_change (nlh, old, request, 0) == 0) + err = rtnl_link_change (nlh, old, request, 0); + if (err == 0) { success = TRUE; - else if ((nl_get_errno () == ENOENT) && no_firmware && up) - *no_firmware = TRUE; + } else { + if ((err == -NLE_OBJ_NOTFOUND) && no_firmware && up) + *no_firmware = TRUE; + } } } rtnl_link_put (old); rtnl_link_put (request); - -out: return success; } +/** + * nm_system_iface_is_up: + * @ifindex: interface index + * + * Returns: %TRUE if the interface is up, %FALSE if it was down or the check + * failed. + **/ gboolean -nm_system_device_is_up (NMDevice *device) +nm_system_iface_is_up (int ifindex) { - g_return_val_if_fail (device != NULL, FALSE); + struct rtnl_link *l; + guint32 flags; - return nm_system_device_is_up_with_iface (nm_device_get_ip_iface (device)); -} + g_return_val_if_fail (ifindex > 0, FALSE); -gboolean -nm_system_device_is_up_with_iface (const char *iface) -{ - struct ifreq ifr; - int fd; - gboolean up = FALSE; + l = nm_netlink_index_to_rtnl_link (ifindex); + if (l == NULL) { + char *iface = nm_netlink_index_to_iface (ifindex); - fd = socket (PF_INET, SOCK_DGRAM, 0); - if (fd < 0) { - nm_log_err (LOGD_HW, "couldn't open control socket."); + g_warn_if_fail (iface != NULL); + nm_log_err (LOGD_HW, "(%s): failed to get interface link object", + iface ? iface : "unknown"); + g_free (iface); return FALSE; } - /* Get device's flags */ - memset (&ifr, 0, sizeof (ifr)); - strncpy (ifr.ifr_name, iface, IFNAMSIZ); - if (ioctl (fd, SIOCGIFFLAGS, &ifr) < 0) { - if (errno != ENODEV) { - nm_log_err (LOGD_HW, "(%s): could not get flags: errno %d", - iface, errno); - } - } else { - up = !!(ifr.ifr_flags & IFF_UP); - } - close (fd); + flags = rtnl_link_get_flags (l); + rtnl_link_put (l); - return up; + return flags & IFF_UP; } +/** + * nm_system_iface_set_mtu: + * @ifindex: interface index + * @mtu: the new MTU + * + * Returns: %TRUE if the request was successful, %FALSE if it failed + **/ gboolean -nm_system_device_set_mtu (const char *iface, guint32 mtu) +nm_system_iface_set_mtu (int ifindex, guint32 mtu) { struct rtnl_link *old; struct rtnl_link *new; gboolean success = FALSE; - struct nl_handle *nlh; - int iface_idx; + struct nl_sock *nlh; + int err; - g_return_val_if_fail (iface != NULL, FALSE); + g_return_val_if_fail (ifindex > 0, FALSE); g_return_val_if_fail (mtu > 0, FALSE); new = rtnl_link_alloc (); if (!new) return FALSE; - iface_idx = nm_netlink_iface_to_index (iface); - old = nm_netlink_index_to_rtnl_link (iface_idx); + old = nm_netlink_index_to_rtnl_link (ifindex); if (old) { rtnl_link_set_mtu (new, mtu); nlh = nm_netlink_get_default_handle (); if (nlh) { - rtnl_link_change (nlh, old, new, 0); - success = TRUE; + err = rtnl_link_change (nlh, old, new, 0); + if (err == 0) + success = TRUE; + else { + char *iface = nm_netlink_index_to_iface (ifindex); + + nm_log_warn (LOGD_HW, "(%s): failed to change interface MTU", + iface ? iface : "unknown"); + g_free (iface); + } } rtnl_link_put (old); } - rtnl_link_put (new); + return success; } +/** + * nm_system_iface_set_mac: + * @ifindex: interface index + * @mac: new MAC address + * + * Attempts to change the interface's MAC address to the requested value, + * ie MAC spoofing or cloning. + * + * Returns: %TRUE if the request succeeded, %FALSE if it failed. + **/ gboolean -nm_system_device_set_mac (const char *iface, const struct ether_addr *mac) +nm_system_iface_set_mac (int ifindex, const struct ether_addr *mac) { - struct rtnl_link *old; - struct rtnl_link *new; + struct rtnl_link *old, *new; gboolean success = FALSE; - struct nl_handle *nlh; - int iface_idx; + struct nl_sock *nlh; + char *iface; struct nl_addr *addr = NULL; + int err; - g_return_val_if_fail (iface != NULL, FALSE); + g_return_val_if_fail (ifindex > 0, FALSE); g_return_val_if_fail (mac != NULL, FALSE); new = rtnl_link_alloc (); if (!new) return FALSE; - iface_idx = nm_netlink_iface_to_index (iface); - old = nm_netlink_index_to_rtnl_link (iface_idx); + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + goto out; + + old = nm_netlink_index_to_rtnl_link (ifindex); if (old) { addr = nl_addr_build (AF_LLC, (void *) mac, ETH_ALEN); if (!addr) { - char *mac_str; - mac_str = g_strdup_printf ("%02X:%02X:%02X:%02X:%02X:%02X", mac->ether_addr_octet[0], mac->ether_addr_octet[1], mac->ether_addr_octet[2], - mac->ether_addr_octet[3], mac->ether_addr_octet[4], mac->ether_addr_octet[5]); - nm_log_err (LOGD_DEVICE, "(%s): could not allocate memory for MAC address (%s)", iface, mac_str); - g_free (mac_str); + nm_log_err (LOGD_HW, "(%s): failed to allocate memory for MAC address change", iface); + rtnl_link_put (old); + rtnl_link_put (new); return FALSE; } rtnl_link_set_addr (new, addr); + nl_addr_put (addr); nlh = nm_netlink_get_default_handle (); if (nlh) { - rtnl_link_change (nlh, old, new, 0); - success = TRUE; + err = rtnl_link_change (nlh, old, new, 0); + if (err == 0) + success = TRUE; + else + nm_log_warn (LOGD_HW, "(%s): failed to change interface MAC address", iface); } rtnl_link_put (old); } +out: rtnl_link_put (new); + g_free (iface); return success; } static struct rtnl_route * -add_ip4_route_to_gateway (const char *iface, guint32 gw, guint32 mss) +add_ip4_route_to_gateway (int ifindex, guint32 gw, guint32 mss) { - struct nl_handle *nlh; + struct nl_sock *nlh; struct rtnl_route *route = NULL; - struct nl_addr *gw_addr = NULL; - int iface_idx, err; + int err; nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, NULL); - iface_idx = nm_netlink_iface_to_index (iface); - if (iface_idx < 0) - return NULL; - /* Gateway might be over a bridge; try adding a route to gateway first */ - route = rtnl_route_alloc (); - if (route == NULL) - return NULL; - - rtnl_route_set_family (route, AF_INET); - rtnl_route_set_table (route, RT_TABLE_MAIN); - rtnl_route_set_oif (route, iface_idx); - rtnl_route_set_scope (route, RT_SCOPE_LINK); - - gw_addr = nl_addr_build (AF_INET, &gw, sizeof (gw)); - if (!gw_addr) - goto error; - nl_addr_set_prefixlen (gw_addr, 32); - rtnl_route_set_dst (route, gw_addr); - nl_addr_put (gw_addr); - - if (mss) { - if (rtnl_route_set_metric (route, RTAX_ADVMSS, mss) < 0) - goto error; - } + route = nm_netlink_route_new (ifindex, AF_INET, mss, + NMNL_PROP_SCOPE, RT_SCOPE_LINK, + NMNL_PROP_TABLE, RT_TABLE_MAIN, + NULL); + g_return_val_if_fail (route != NULL, NULL); /* Add direct route to the gateway */ - err = rtnl_route_add (nlh, route, 0); + err = nm_netlink_route_add(route, AF_INET, &gw, 32, NULL, 0); if (err) { + char *iface = nm_netlink_index_to_iface (ifindex); + nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to add IPv4 route to gateway (%d)", - iface, err); + iface ? iface : "unknown", err); + g_free (iface); goto error; } @@ -881,64 +831,27 @@ error: } static int -replace_default_ip4_route (const char *iface, guint32 gw, guint32 mss) +replace_default_ip4_route (int ifindex, guint32 gw, guint32 mss) { struct rtnl_route *route = NULL; - struct nl_handle *nlh; - struct nl_addr *dst_addr = NULL; - guint32 dst = 0; - struct nl_addr *gw_addr = NULL; - int iface_idx, err = -1; + struct nl_sock *nlh; + int err = -1; + int dst=0; - g_return_val_if_fail (iface != NULL, -ENODEV); + g_return_val_if_fail (ifindex > 0, -ENODEV); nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, -ENOMEM); - iface_idx = nm_netlink_iface_to_index (iface); - if (iface_idx < 0) - return -ENODEV; - - route = rtnl_route_alloc(); + route = nm_netlink_route_new (ifindex, AF_INET, mss, + NMNL_PROP_SCOPE, RT_SCOPE_UNIVERSE, + NMNL_PROP_TABLE, RT_TABLE_MAIN, + NULL); g_return_val_if_fail (route != NULL, -ENOMEM); - rtnl_route_set_family (route, AF_INET); - rtnl_route_set_table (route, RT_TABLE_MAIN); - rtnl_route_set_scope (route, RT_SCOPE_UNIVERSE); - rtnl_route_set_oif (route, iface_idx); - - /* Build up the destination address */ - dst_addr = nl_addr_build (AF_INET, &dst, sizeof (dst)); - if (!dst_addr) { - err = -ENOMEM; - goto out; - } - nl_addr_set_prefixlen (dst_addr, 0); - rtnl_route_set_dst (route, dst_addr); - - /* Build up the gateway address */ - gw_addr = nl_addr_build (AF_INET, &gw, sizeof (gw)); - if (!gw_addr) { - err = -ENOMEM; - goto out; - } - nl_addr_set_prefixlen (gw_addr, 0); - rtnl_route_set_gateway (route, gw_addr); - - if (mss > 0) { - err = rtnl_route_set_metric (route, RTAX_ADVMSS, mss); - if (err < 0) - goto out; - } - /* Add the new default route */ - err = rtnl_route_add (nlh, route, NLM_F_REPLACE); + err = nm_netlink_route_add (route, AF_INET, &dst, 0, &gw, NLM_F_REPLACE); -out: - if (dst_addr) - nl_addr_put (dst_addr); - if (gw_addr) - nl_addr_put (gw_addr); rtnl_route_put (route); return err; } @@ -950,47 +863,56 @@ out: * */ gboolean -nm_system_replace_default_ip4_route_vpn (const char *iface, +nm_system_replace_default_ip4_route_vpn (int ifindex, guint32 ext_gw, guint32 int_gw, guint32 mss, - const char *parent_iface, + int parent_ifindex, guint32 parent_mss) { struct rtnl_route *gw_route = NULL; - struct nl_handle *nlh; + struct nl_sock *nlh; gboolean success = FALSE; int err; + char *iface; nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, FALSE); - err = replace_default_ip4_route (iface, int_gw, mss); - if (err == 0) { + err = replace_default_ip4_route (ifindex, int_gw, mss); + if (err == 0) return TRUE; - } else if (err != -ESRCH) { + + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + goto out; + + if ((err != -NLE_OBJ_NOTFOUND) && (err != -NLE_FAILURE)) { nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to set IPv4 default route: %d", iface, err); - return FALSE; + goto out; } /* Try adding a direct route to the gateway first */ - gw_route = add_ip4_route_to_gateway (parent_iface, ext_gw, parent_mss); + gw_route = add_ip4_route_to_gateway (parent_ifindex, ext_gw, parent_mss); if (!gw_route) - return FALSE; + goto out; /* Try adding the original route again */ - err = replace_default_ip4_route (iface, int_gw, mss); + err = replace_default_ip4_route (ifindex, int_gw, mss); if (err != 0) { - rtnl_route_del (nlh, gw_route, 0); + nm_netlink_route_delete (gw_route); nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to set IPv4 default route (pass #2): %d", iface, err); } else success = TRUE; - rtnl_route_put (gw_route); +out: + if (gw_route) + rtnl_route_put (gw_route); + g_free (iface); return success; } @@ -1001,132 +923,105 @@ nm_system_replace_default_ip4_route_vpn (const char *iface, * */ gboolean -nm_system_replace_default_ip4_route (const char *iface, guint32 gw, guint32 mss) +nm_system_replace_default_ip4_route (int ifindex, guint32 gw, guint32 mss) { struct rtnl_route *gw_route = NULL; - struct nl_handle *nlh; gboolean success = FALSE; + char *iface; int err; - nlh = nm_netlink_get_default_handle (); - g_return_val_if_fail (nlh != NULL, FALSE); - - err = replace_default_ip4_route (iface, gw, mss); - if (err == 0) { + err = replace_default_ip4_route (ifindex, gw, mss); + if (err == 0) return TRUE; - } else if (err != -ESRCH) { + + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + goto out; + + if (err != -NLE_OBJ_NOTFOUND) { nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to set IPv4 default route: %d", iface, err); - return FALSE; + goto out; } /* Try adding a direct route to the gateway first */ - gw_route = add_ip4_route_to_gateway (iface, gw, mss); + gw_route = add_ip4_route_to_gateway (ifindex, gw, mss); if (!gw_route) - return FALSE; + goto out; /* Try adding the original route again */ - err = replace_default_ip4_route (iface, gw, mss); + err = replace_default_ip4_route (ifindex, gw, mss); if (err != 0) { - rtnl_route_del (nlh, gw_route, 0); + nm_netlink_route_delete (gw_route); nm_log_err (LOGD_DEVICE | LOGD_IP4, "(%s): failed to set IPv4 default route (pass #2): %d", iface, err); } else success = TRUE; - rtnl_route_put (gw_route); +out: + if (gw_route) + rtnl_route_put (gw_route); + g_free (iface); return success; } static struct rtnl_route * -add_ip6_route_to_gateway (const char *iface, const struct in6_addr *gw) +add_ip6_route_to_gateway (int ifindex, const struct in6_addr *gw) { - struct nl_handle *nlh; + struct nl_sock *nlh; struct rtnl_route *route = NULL; - struct nl_addr *gw_addr = NULL; - int iface_idx, err; + int err; nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, NULL); - iface_idx = nm_netlink_iface_to_index (iface); - if (iface_idx < 0) - return NULL; - /* Gateway might be over a bridge; try adding a route to gateway first */ - route = rtnl_route_alloc (); - if (route == NULL) - return NULL; - - rtnl_route_set_family (route, AF_INET6); - rtnl_route_set_table (route, RT_TABLE_MAIN); - rtnl_route_set_oif (route, iface_idx); - rtnl_route_set_scope (route, RT_SCOPE_LINK); - - gw_addr = nl_addr_build (AF_INET, (void *) gw, sizeof (*gw)); - if (!gw_addr) - goto error; - nl_addr_set_prefixlen (gw_addr, 128); - rtnl_route_set_dst (route, gw_addr); - nl_addr_put (gw_addr); + route = nm_netlink_route_new (ifindex, AF_INET6, 0, + NMNL_PROP_SCOPE, RT_SCOPE_LINK, + NMNL_PROP_TABLE, RT_TABLE_MAIN, + NULL); + g_return_val_if_fail (route != NULL, NULL); /* Add direct route to the gateway */ - err = rtnl_route_add (nlh, route, 0); + err = nm_netlink_route_add(route, AF_INET, gw, 128, NULL, 0); if (err) { + char *iface = nm_netlink_index_to_iface (ifindex); + nm_log_err (LOGD_DEVICE | LOGD_IP6, - "(%s): failed to add IPv4 route to gateway (%d)", - iface, err); - goto error; + "(%s): failed to add IPv6 route to gateway (%d)", + iface ? iface : "unknown", err); + g_free (iface); + + rtnl_route_put (route); + route = NULL; } return route; - -error: - rtnl_route_put (route); - return NULL; } static int -replace_default_ip6_route (const char *iface, const struct in6_addr *gw) +replace_default_ip6_route (int ifindex, const struct in6_addr *gw) { struct rtnl_route *route = NULL; - struct nl_handle *nlh; - struct nl_addr *gw_addr = NULL; - int iface_idx, err = -1; + struct nl_sock *nlh; + int err = -1; - g_return_val_if_fail (iface != NULL, -ENODEV); + g_return_val_if_fail (ifindex > 0, FALSE); nlh = nm_netlink_get_default_handle (); g_return_val_if_fail (nlh != NULL, -ENOMEM); - iface_idx = nm_netlink_iface_to_index (iface); - if (iface_idx < 0) - return -ENODEV; - - route = rtnl_route_alloc(); + route = nm_netlink_route_new (ifindex, AF_INET6, 0, + NMNL_PROP_SCOPE, RT_SCOPE_UNIVERSE, + NMNL_PROP_TABLE, RT_TABLE_MAIN, + NULL); g_return_val_if_fail (route != NULL, -ENOMEM); - rtnl_route_set_family (route, AF_INET6); - rtnl_route_set_table (route, RT_TABLE_MAIN); - rtnl_route_set_scope (route, RT_SCOPE_UNIVERSE); - rtnl_route_set_oif (route, iface_idx); - - if (gw && !IN6_IS_ADDR_UNSPECIFIED (gw)) { - /* Build up the gateway address */ - gw_addr = nl_addr_build (AF_INET6, (void *) gw, sizeof (*gw)); - if (!gw_addr) { - err = -ENOMEM; - goto out; - } - nl_addr_set_prefixlen (gw_addr, -1); - rtnl_route_set_gateway (route, gw_addr); - } - /* Add the new default route */ - err = rtnl_route_add (nlh, route, NLM_F_REPLACE); - if (err == -EEXIST) { + nm_netlink_route_add(route, AF_INET6, NULL, 0, gw, NLM_F_REPLACE); + if (err == -NLE_EXIST) { /* FIXME: even though we use NLM_F_REPLACE the kernel won't replace * the route if it's the same. Should try to remove it first, then * add the new one again here. @@ -1134,9 +1029,6 @@ replace_default_ip6_route (const char *iface, const struct in6_addr *gw) err = 0; } -out: - if (gw_addr) - nl_addr_put (gw_addr); rtnl_route_put (route); return err; } @@ -1148,208 +1040,99 @@ out: * */ gboolean -nm_system_replace_default_ip6_route (const char *iface, const struct in6_addr *gw) +nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw) { struct rtnl_route *gw_route = NULL; - struct nl_handle *nlh; gboolean success = FALSE; + char *iface; int err; - nlh = nm_netlink_get_default_handle (); - g_return_val_if_fail (nlh != NULL, FALSE); - - err = replace_default_ip6_route (iface, gw); - if (err == 0) { + err = replace_default_ip6_route (ifindex, gw); + if (err == 0) return TRUE; - } else if (err != -ESRCH) { + + iface = nm_netlink_index_to_iface (ifindex); + if (!iface) + goto out; + + if (err != -NLE_OBJ_NOTFOUND) { nm_log_err (LOGD_DEVICE | LOGD_IP6, "(%s): failed to set IPv6 default route: %d", iface, err); - return FALSE; + goto out; } /* Try adding a direct route to the gateway first */ - gw_route = add_ip6_route_to_gateway (iface, gw); + gw_route = add_ip6_route_to_gateway (ifindex, gw); if (!gw_route) - return FALSE; + goto out; /* Try adding the original route again */ - err = replace_default_ip6_route (iface, gw); + err = replace_default_ip6_route (ifindex, gw); if (err != 0) { - rtnl_route_del (nlh, gw_route, 0); + nm_netlink_route_delete (gw_route); nm_log_err (LOGD_DEVICE | LOGD_IP6, "(%s): failed to set IPv6 default route (pass #2): %d", iface, err); } else success = TRUE; - rtnl_route_put (gw_route); +out: + if (gw_route) + rtnl_route_put (gw_route); + g_free (iface); return success; } -static void flush_addresses (const char *iface, int family) -{ - int iface_idx; - - g_return_if_fail (iface != NULL); - iface_idx = nm_netlink_iface_to_index (iface); - if (iface_idx >= 0) - sync_addresses (iface, iface_idx, family, NULL, 0); -} - -/* - * nm_system_device_flush_addresses - * - * Flush all network addresses associated with a network device - * - */ -void nm_system_device_flush_addresses (NMDevice *dev, int family) -{ - g_return_if_fail (dev != NULL); - - flush_addresses (nm_device_get_ip_iface (dev), family); -} - - /* - * nm_system_device_flush_addresses_with_iface + * nm_system_iface_flush_addresses * * Flush all network addresses associated with a network device * */ -void nm_system_device_flush_addresses_with_iface (const char *iface) -{ - flush_addresses (iface, AF_UNSPEC); -} - - -static void -foreach_route (void (*callback)(struct nl_object *, gpointer), - gpointer user_data) -{ - struct nl_handle *nlh; - struct nl_cache *route_cache; - - nlh = nm_netlink_get_default_handle (); - route_cache = rtnl_route_alloc_cache (nlh); - g_assert (route_cache); - nl_cache_foreach (route_cache, callback, user_data); - nl_cache_free (route_cache); -} - -static void -dump_route (struct rtnl_route *route) +gboolean +nm_system_iface_flush_addresses (int ifindex, int family) { - char buf6[INET6_ADDRSTRLEN]; - char buf4[INET_ADDRSTRLEN]; - struct nl_addr *nl; - struct in6_addr *addr6 = NULL; - struct in_addr *addr4 = NULL; - int prefixlen = 0; - const char *sf = "UNSPEC"; - int family = rtnl_route_get_family (route); - - memset (buf6, 0, sizeof (buf6)); - memset (buf4, 0, sizeof (buf4)); - nl = rtnl_route_get_dst (route); - if (nl) { - if (nl_addr_get_family (nl) == AF_INET) { - addr4 = nl_addr_get_binary_addr (nl); - if (addr4) - inet_ntop (AF_INET, addr4, &buf4[0], sizeof (buf4)); - } else if (nl_addr_get_family (nl) == AF_INET6) { - addr6 = nl_addr_get_binary_addr (nl); - if (addr6) - inet_ntop (AF_INET6, addr6, &buf6[0], sizeof (buf6)); - } - prefixlen = nl_addr_get_prefixlen (nl); - } - - if (family == AF_INET) - sf = "INET"; - else if (family == AF_INET6) - sf = "INET6"; - - nm_log_dbg (LOGD_IP4 | LOGD_IP6, " route idx %d family %s (%d) addr %s/%d", - rtnl_route_get_oif (route), - sf, family, - strlen (buf4) ? buf4 : (strlen (buf6) ? buf6 : "<unknown>"), - prefixlen); + g_return_val_if_fail (ifindex > 0, FALSE); + return sync_addresses (ifindex, family, NULL, 0); } -typedef struct { - const char *iface; - int iface_idx; - int family; -} RouteCheckData; -static void -check_one_route (struct nl_object *object, void *user_data) +static struct rtnl_route * +delete_one_route (struct rtnl_route *route, + struct nl_addr *dst, + const char *iface, + gpointer user_data) { - RouteCheckData *data = (RouteCheckData *) user_data; - struct rtnl_route *route = (struct rtnl_route *) object; - int err; - guint32 log_level = LOGD_IP4 | LOGD_IP6; - - if (nm_logging_level_enabled (LOGL_DEBUG)) - dump_route (route); - - /* Delete all routes from this interface */ - if (rtnl_route_get_oif (route) != data->iface_idx) - return; - if (data->family && rtnl_route_get_family (route) != data->family) - return; - - /* We don't want to flush IPv6 link-local routes that may exist on the - * the interface since the LL address and routes should normally stay - * assigned all the time. - */ - if ( (data->family == AF_INET6 || data->family == AF_UNSPEC) - && (rtnl_route_get_family (route) == AF_INET6)) { - struct nl_addr *nl; - struct in6_addr *addr = NULL; - - nl = rtnl_route_get_dst (route); - if (nl) - addr = nl_addr_get_binary_addr (nl); - - if (addr) { - if ( IN6_IS_ADDR_LINKLOCAL (addr) - || IN6_IS_ADDR_MC_LINKLOCAL (addr) - || (IN6_IS_ADDR_MULTICAST (addr) && (nl_addr_get_prefixlen (nl) == 8))) - return; - } - } + guint32 log_level = GPOINTER_TO_UINT (user_data); - if (data->family == AF_INET) - log_level = LOGD_IP4; - else if (data->family == AF_INET6) - log_level = LOGD_IP6; nm_log_dbg (log_level, " deleting route"); + if (!nm_netlink_route_delete (route)) + nm_log_err (LOGD_DEVICE, "(%s): failed to delete route", iface); - err = rtnl_route_del (nm_netlink_get_default_handle (), route, 0); - if (err < 0 && (err != -ERANGE)) { - nm_log_err (LOGD_DEVICE, - "(%s): error %d returned from rtnl_route_del(): %s", - data->iface, err, nl_geterror ()); - } + return NULL; } -static void flush_routes (int ifindex, const char *iface, int family) +/** + * nm_system_iface_flush_routes: + * @ifindex: interface index + * @family: address family, i.e. AF_INET, AF_INET6, or AF_UNSPEC + * + * Flush all network addresses associated with a network device. + * + * Returns: %TRUE on success, %FALSE on failure + **/ +gboolean +nm_system_iface_flush_routes (int ifindex, int family) { - RouteCheckData check_data; guint32 log_level = LOGD_IP4 | LOGD_IP6; const char *sf = "UNSPEC"; + char *iface; - g_return_if_fail (iface != NULL); + g_return_val_if_fail (ifindex > 0, FALSE); - if (ifindex < 0) { - ifindex = nm_netlink_iface_to_index (iface); - if (ifindex < 0) { - nm_log_dbg (LOGD_DEVICE, "(%s) failed to lookup interface index", iface); - return; - } - } + iface = nm_netlink_index_to_iface (ifindex); + g_return_val_if_fail (iface != NULL, FALSE); if (family == AF_INET) { log_level = LOGD_IP4; @@ -1361,104 +1144,61 @@ static void flush_routes (int ifindex, const char *iface, int family) nm_log_dbg (log_level, "(%s): flushing routes ifindex %d family %s (%d)", iface, ifindex, sf, family); - memset (&check_data, 0, sizeof (check_data)); - check_data.iface = iface; - check_data.iface_idx = ifindex; - check_data.family = family; - foreach_route (check_one_route, &check_data); -} - -/* - * nm_system_device_flush_routes - * - * Flush all network addresses associated with a network device - * - */ -void nm_system_device_flush_routes (NMDevice *dev, int family) -{ - g_return_if_fail (dev != NULL); - - flush_routes (nm_device_get_ip_ifindex (dev), - nm_device_get_ip_iface (dev), - family); -} + /* We don't want to flush IPv6 link-local routes that may exist on the + * the interface since the LL address and routes should normally stay + * assigned all the time. + */ + nm_netlink_foreach_route (ifindex, family, RT_SCOPE_UNIVERSE, TRUE, delete_one_route, GUINT_TO_POINTER (log_level)); -/* - * nm_system_device_flush_routes_with_iface - * - * Flush all routes associated with a network device. 'family' is an - * address family, either AF_INET, AF_INET6, or AF_UNSPEC. - * - */ -void nm_system_device_flush_routes_with_iface (const char *iface, int family) -{ - flush_routes (-1, iface, family); + g_free (iface); + return TRUE; } -typedef struct { - struct rtnl_route *route; - NMIP4Config *config; - int iface; -} SetPriorityInfo; - -static void -find_route (struct nl_object *object, gpointer user_data) +static struct rtnl_route * +find_route (struct rtnl_route *route, + struct nl_addr *dst, + const char *iface, + gpointer user_data) { - struct rtnl_route *route = (struct rtnl_route *) object; - SetPriorityInfo *info = (SetPriorityInfo *) user_data; - struct nl_addr *dst; + NMIP4Config *config = user_data; struct in_addr *dst_addr; int num; int i; - if (info->route || - rtnl_route_get_oif (route) != info->iface || - rtnl_route_get_scope (route) != RT_SCOPE_LINK) - return; - - dst = rtnl_route_get_dst (route); - if (nl_addr_get_family (dst) != AF_INET) - return; + if (dst && (nl_addr_get_family (dst) != AF_INET)) + return NULL; + /* Find the first route that handles a subnet of at least one of the + * device's IPv4 addresses. + */ dst_addr = nl_addr_get_binary_addr (dst); - num = nm_ip4_config_get_num_addresses (info->config); + num = nm_ip4_config_get_num_addresses (config); for (i = 0; i < num; i++) { - NMIP4Address *addr = nm_ip4_config_get_address (info->config, i); + NMIP4Address *addr = nm_ip4_config_get_address (config, i); guint32 prefix = nm_ip4_address_get_prefix (addr); guint32 address = nm_ip4_address_get_address (addr); - if (prefix == nl_addr_get_prefixlen (dst) && - (address & nm_utils_ip4_prefix_to_netmask (prefix)) == dst_addr->s_addr) { - - /* Ref the route so it sticks around after the cache is cleared */ - rtnl_route_get (route); - info->route = route; - break; - } + if ( prefix == nl_addr_get_prefixlen (dst) + && (address & nm_utils_ip4_prefix_to_netmask (prefix)) == dst_addr->s_addr) + return route; } + return NULL; } static void -nm_system_device_set_priority (const char *iface, - NMIP4Config *config, - int priority) +nm_system_device_set_priority (int ifindex, + NMIP4Config *config, + int priority) { - SetPriorityInfo info; - - info.route = NULL; - info.config = config; - info.iface = nm_netlink_iface_to_index (iface); - g_return_if_fail (info.iface >= 0); - - foreach_route (find_route, &info); - if (info.route) { - struct nl_handle *nlh; + struct nl_sock *nlh; + struct rtnl_route *found; + found = nm_netlink_foreach_route (ifindex, AF_INET, RT_SCOPE_LINK, FALSE, find_route, config); + if (found) { nlh = nm_netlink_get_default_handle (); - rtnl_route_del (nlh, info.route, 0); - - rtnl_route_set_prio (info.route, priority); - rtnl_route_add (nlh, info.route, 0); - rtnl_route_put (info.route); + nm_netlink_route_delete (found); + rtnl_route_set_priority (found, priority); + rtnl_route_add (nlh, found, 0); + rtnl_route_put (found); } } diff --git a/src/nm-system.h b/src/nm-system.h index 094f40ef..ae4e7d91 100644 --- a/src/nm-system.h +++ b/src/nm-system.h @@ -35,33 +35,31 @@ * implemented in the backend files in backends/ directory */ -void nm_system_device_flush_routes (NMDevice *dev, int family); -void nm_system_device_flush_routes_with_iface (const char *iface, int family); +gboolean nm_system_iface_flush_routes (int ifindex, int family); -gboolean nm_system_replace_default_ip4_route (const char *iface, +gboolean nm_system_replace_default_ip4_route (int ifindex, guint32 gw, guint32 mss); -gboolean nm_system_replace_default_ip6_route (const char *iface, +gboolean nm_system_replace_default_ip6_route (int ifindex, const struct in6_addr *gw); -gboolean nm_system_replace_default_ip4_route_vpn (const char *iface, +gboolean nm_system_replace_default_ip4_route_vpn (int ifindex, guint32 ext_gw, guint32 int_gw, guint32 mss, - const char *parent_iface, + int parent_ifindex, guint32 parent_mss); struct rtnl_route *nm_system_add_ip4_vpn_gateway_route (NMDevice *parent_device, NMIP4Config *vpn_config); -void nm_system_device_flush_addresses (NMDevice *dev, int family); -void nm_system_device_flush_addresses_with_iface (const char *iface); +gboolean nm_system_iface_flush_addresses (int ifindex, int family); void nm_system_enable_loopback (void); void nm_system_update_dns (void); -gboolean nm_system_apply_ip4_config (const char *iface, +gboolean nm_system_apply_ip4_config (int ifindex, NMIP4Config *config, int priority, NMIP4ConfigCompareFlags flags); @@ -76,22 +74,19 @@ int nm_system_set_ip6_route (int ifindex, int table, struct rtnl_route **out_route); -gboolean nm_system_apply_ip6_config (const char *iface, +gboolean nm_system_apply_ip6_config (int ifindex, NMIP6Config *config, int priority, NMIP6ConfigCompareFlags flags); -gboolean nm_system_device_set_up_down (NMDevice *dev, - gboolean up, - gboolean *no_firmware); -gboolean nm_system_device_set_up_down_with_iface (const char *iface, - gboolean up, - gboolean *no_firmware); +gboolean nm_system_iface_set_up (int ifindex, + gboolean up, + gboolean *no_firmware); -gboolean nm_system_device_is_up (NMDevice *device); -gboolean nm_system_device_is_up_with_iface (const char *iface); +gboolean nm_system_iface_is_up (int ifindex); -gboolean nm_system_device_set_mtu (const char *iface, guint32 mtu); -gboolean nm_system_device_set_mac (const char *iface, const struct ether_addr *mac); +gboolean nm_system_iface_set_mtu (int ifindex, guint32 mtu); + +gboolean nm_system_iface_set_mac (int ifindex, const struct ether_addr *mac); #endif diff --git a/src/nm-udev-manager.c b/src/nm-udev-manager.c index 72501c28..e8c6b822 100644 --- a/src/nm-udev-manager.c +++ b/src/nm-udev-manager.c @@ -195,78 +195,50 @@ recheck_killswitches (NMUdevManager *self) NMUdevManagerPrivate *priv = NM_UDEV_MANAGER_GET_PRIVATE (self); GSList *iter; RfKillState poll_states[RFKILL_TYPE_MAX]; + RfKillState platform_states[RFKILL_TYPE_MAX]; gboolean platform_checked[RFKILL_TYPE_MAX]; int i; /* Default state is unblocked */ for (i = 0; i < RFKILL_TYPE_MAX; i++) { poll_states[i] = RFKILL_UNBLOCKED; + platform_states[i] = RFKILL_UNBLOCKED; platform_checked[i] = FALSE; } - /* Perform two passes here; the first pass is for non-platform switches, - * which typically if hardkilled cannot be changed except by a physical - * hardware switch. The second pass checks platform killswitches, which - * take precedence over device killswitches, because typically platform - * killswitches control device killswitches. That is, a hardblocked device - * switch can often be unblocked by a platform switch. Thus if we have - * a hardblocked device switch and a softblocked platform switch, the - * combined state should be softblocked since the platform switch can be - * unblocked to change the device switch. - */ - - /* Device switches first */ + /* Poll the states of all killswitches */ for (iter = priv->killswitches; iter; iter = g_slist_next (iter)) { Killswitch *ks = iter->data; GUdevDevice *device; RfKillState dev_state; int sysfs_state; - if (ks->platform == FALSE) { - device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name); - if (device) { - sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE"); - dev_state = sysfs_state_to_nm_state (sysfs_state); + device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name); + if (device) { + sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE"); + dev_state = sysfs_state_to_nm_state (sysfs_state); + if (ks->platform == FALSE) { if (dev_state > poll_states[ks->rtype]) poll_states[ks->rtype] = dev_state; - g_object_unref (device); - } - } - } - - /* Platform switches next; their state overwrites device state */ - for (iter = priv->killswitches; iter; iter = g_slist_next (iter)) { - Killswitch *ks = iter->data; - GUdevDevice *device; - RfKillState dev_state; - int sysfs_state; - - if (ks->platform == TRUE) { - device = g_udev_client_query_by_subsystem_and_name (priv->client, "rfkill", ks->name); - if (device) { - sysfs_state = g_udev_device_get_property_as_int (device, "RFKILL_STATE"); - dev_state = sysfs_state_to_nm_state (sysfs_state); - - if (platform_checked[ks->rtype] == FALSE) { - /* Overwrite device state with platform state for first - * platform switch found. - */ - poll_states[ks->rtype] = dev_state; - platform_checked[ks->rtype] = TRUE; - } else { - /* If there are multiple platform switches of the same type, - * take the "worst" state for all of that type. - */ - if (dev_state > poll_states[ks->rtype]) - poll_states[ks->rtype] = dev_state; - } - g_object_unref (device); + } else { + platform_checked[ks->rtype] = TRUE; + if (dev_state > platform_states[ks->rtype]) + platform_states[ks->rtype] = dev_state; } + g_object_unref (device); } } /* Log and emit change signal for final rfkill states */ for (i = 0; i < RFKILL_TYPE_MAX; i++) { + if (platform_checked[i] == TRUE) { + /* blocked platform switch state overrides device state, otherwise + * let the device state stand. (bgo #655773) + */ + if (platform_states[i] != RFKILL_UNBLOCKED) + poll_states[i] = platform_states[i]; + } + if (poll_states[i] != priv->rfkill_states[i]) { nm_log_dbg (LOGD_RFKILL, "%s rfkill state now '%s'", rfkill_type_to_desc (i), @@ -515,7 +487,7 @@ net_add (NMUdevManager *self, GUdevDevice *device) * FIXME: use something other than interface name to detect CTC here. */ if ((etype != 1) && (is_ctc == FALSE)) { - nm_log_dbg (LOGD_HW, "ignoring interface with type %d", etype); + nm_log_dbg (LOGD_HW, "(%s): ignoring interface with type %d", iface, etype); return; } @@ -528,7 +500,7 @@ net_add (NMUdevManager *self, GUdevDevice *device) */ tmp = g_udev_device_get_property (device, "DEVTYPE"); if (g_strcmp0 (tmp, "wwan") == 0) { - nm_log_dbg (LOGD_HW, "ignoring interface with devtype '%s'", tmp); + nm_log_dbg (LOGD_HW, "(%s): ignoring interface with devtype '%s'", iface, tmp); return; } @@ -539,7 +511,7 @@ net_add (NMUdevManager *self, GUdevDevice *device) if (g_strcmp0 (tmp, "0421") == 0) { /* Nokia vendor ID */ tmp = g_udev_device_get_property (device, "ID_MODEL"); if (tmp && (strstr (tmp, "PC-Suite") || strstr (tmp, "PC Suite"))) { - nm_log_dbg (LOGD_HW, "ignoring Nokia PC-Suite ethernet interface"); + nm_log_dbg (LOGD_HW, "(%s): ignoring Nokia PC-Suite ethernet interface", iface); return; } } diff --git a/src/nm-wifi-ap.c b/src/nm-wifi-ap.c index f9c66473..be836df0 100644 --- a/src/nm-wifi-ap.c +++ b/src/nm-wifi-ap.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) 2006 - 2008 Novell, Inc. */ @@ -33,6 +33,7 @@ #include "wpa.h" #include "nm-properties-changed-signal.h" #include "nm-setting-wireless.h" +#include "nm-glib-compat.h" #include "nm-access-point-glue.h" @@ -59,10 +60,6 @@ typedef struct gboolean fake; /* Whether or not the AP is from a scan */ gboolean broadcast; /* Whether or not the AP is broadcasting (hidden) */ glong last_seen; /* Last time the AP was seen in a scan in seconds */ - - /* Things from user prefs/NetworkManagerInfo */ - GTimeVal timestamp; - GSList * user_addresses; } NMAccessPointPrivate; #define NM_AP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_AP, NMAccessPointPrivate)) @@ -112,8 +109,6 @@ finalize (GObject *object) g_free (priv->dbus_path); if (priv->ssid) g_byte_array_free (priv->ssid, TRUE); - g_slist_foreach (priv->user_addresses, (GFunc)g_free, NULL); - g_slist_free (priv->user_addresses); G_OBJECT_CLASS (nm_ap_parent_class)->finalize (object); } @@ -147,7 +142,7 @@ set_property (GObject *object, guint prop_id, nm_ap_set_max_bitrate (ap, g_value_get_uint (value)); break; case PROP_STRENGTH: - nm_ap_set_strength (ap, g_value_get_char (value)); + nm_ap_set_strength (ap, g_value_get_schar (value)); break; case PROP_HW_ADDRESS: break; @@ -197,7 +192,7 @@ get_property (GObject *object, guint prop_id, g_value_set_uint (value, priv->max_bitrate); break; case PROP_STRENGTH: - g_value_set_char (value, priv->strength); + g_value_set_schar (value, priv->strength); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -757,8 +752,7 @@ error: #define MAC_ARG(x) ((guint8*)(x))[0],((guint8*)(x))[1],((guint8*)(x))[2],((guint8*)(x))[3],((guint8*)(x))[4],((guint8*)(x))[5] void -nm_ap_print_self (NMAccessPoint *ap, - const char * prefix) +nm_ap_dump (NMAccessPoint *ap, const char *prefix) { NMAccessPointPrivate *priv; @@ -773,7 +767,6 @@ nm_ap_print_self (NMAccessPoint *ap, ap); nm_log_dbg (LOGD_WIFI_SCAN, " BSSID " MAC_FMT, MAC_ARG (priv->address.ether_addr_octet)); nm_log_dbg (LOGD_WIFI_SCAN, " mode %d", priv->mode); - nm_log_dbg (LOGD_WIFI_SCAN, " timestamp %ld", priv->timestamp.tv_sec); nm_log_dbg (LOGD_WIFI_SCAN, " flags 0x%X", priv->flags); nm_log_dbg (LOGD_WIFI_SCAN, " wpa flags 0x%X", priv->wpa_flags); nm_log_dbg (LOGD_WIFI_SCAN, " rsn flags 0x%X", priv->rsn_flags); @@ -791,37 +784,6 @@ nm_ap_get_dbus_path (NMAccessPoint *ap) return NM_AP_GET_PRIVATE (ap)->dbus_path; } - -/* - * Get/set functions for timestamp - * - */ -const GTimeVal *nm_ap_get_timestamp (const NMAccessPoint *ap) -{ - g_return_val_if_fail (NM_IS_AP (ap), 0); - - return (&NM_AP_GET_PRIVATE (ap)->timestamp); -} - -void nm_ap_set_timestamp (NMAccessPoint *ap, glong sec, glong usec) -{ - NMAccessPointPrivate *priv; - - g_return_if_fail (NM_IS_AP (ap)); - - priv = NM_AP_GET_PRIVATE (ap); - - priv->timestamp.tv_sec = sec; - priv->timestamp.tv_usec = usec; -} - -void nm_ap_set_timestamp_via_timestamp (NMAccessPoint *ap, const GTimeVal *timestamp) -{ - g_return_if_fail (NM_IS_AP (ap)); - - NM_AP_GET_PRIVATE (ap)->timestamp = *timestamp; -} - /* * Get/set functions for ssid * @@ -1151,57 +1113,6 @@ void nm_ap_set_last_seen (NMAccessPoint *ap, const glong last_seen) NM_AP_GET_PRIVATE (ap)->last_seen = last_seen; } - -/* - * Get/Set functions for user address list - * - * The internal address list is always "owned" by the AP and - * the list returned by nm_ap_get_user_addresses() is a deep copy. - * Likewise, when setting the list, a deep copy is made for the - * ap's actual list. - * - */ -GSList *nm_ap_get_user_addresses (const NMAccessPoint *ap) -{ - GSList *new = NULL; - GSList *elt = NULL; - - g_return_val_if_fail (NM_IS_AP (ap), NULL); - - for (elt = NM_AP_GET_PRIVATE (ap)->user_addresses; elt; elt = g_slist_next (elt)) - { - if (elt->data) - new = g_slist_append (new, g_strdup (elt->data)); - } - - /* Return a _deep__copy_ of the address list */ - return new; -} - -void nm_ap_set_user_addresses (NMAccessPoint *ap, GSList *list) -{ - NMAccessPointPrivate *priv; - GSList *elt = NULL; - GSList *new = NULL; - - g_return_if_fail (NM_IS_AP (ap)); - - priv = NM_AP_GET_PRIVATE (ap); - - /* Free existing list */ - g_slist_foreach (priv->user_addresses, (GFunc) g_free, NULL); - - /* Copy new list and set as our own */ - for (elt = list; elt; elt = g_slist_next (elt)) - { - if (elt->data) - new = g_slist_append (new, g_ascii_strup (elt->data, -1)); - } - - priv->user_addresses = new; -} - - gboolean nm_ap_check_compatible (NMAccessPoint *self, NMConnection *connection) diff --git a/src/nm-wifi-ap.h b/src/nm-wifi-ap.h index 95514ba6..31100d34 100644 --- a/src/nm-wifi-ap.h +++ b/src/nm-wifi-ap.h @@ -24,7 +24,6 @@ #include <glib.h> #include <glib-object.h> -#include <time.h> #include "NetworkManager.h" #include "nm-connection.h" @@ -64,9 +63,6 @@ NMAccessPoint * nm_ap_new_fake_from_connection (NMConnection *connection); void nm_ap_export_to_dbus (NMAccessPoint *ap); const char * nm_ap_get_dbus_path (NMAccessPoint *ap); -const GTimeVal * nm_ap_get_timestamp (const NMAccessPoint *ap); -void nm_ap_set_timestamp (NMAccessPoint *ap, glong sec, glong usec); -void nm_ap_set_timestamp_via_timestamp (NMAccessPoint *ap, const GTimeVal *timestamp); const GByteArray * nm_ap_get_ssid (const NMAccessPoint * ap); void nm_ap_set_ssid (NMAccessPoint * ap, const GByteArray * ssid); @@ -104,9 +100,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); -GSList * nm_ap_get_user_addresses (const NMAccessPoint *ap); -void nm_ap_set_user_addresses (NMAccessPoint *ap, GSList *list); - gboolean nm_ap_check_compatible (NMAccessPoint *self, NMConnection *connection); @@ -119,6 +112,6 @@ NMAccessPoint * nm_ap_match_in_list (NMAccessPoint *find_ap, GSList *ap_list, gboolean strict_match); -void nm_ap_print_self (NMAccessPoint *ap, const char * prefix); +void nm_ap_dump (NMAccessPoint *ap, const char *prefix); #endif /* NM_ACCESS_POINT_H */ diff --git a/src/ppp-manager/Makefile.in b/src/ppp-manager/Makefile.in index 13c60b41..6971408f 100644 --- a/src/ppp-manager/Makefile.in +++ b/src/ppp-manager/Makefile.in @@ -222,8 +222,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index e863aaba..3546f8d7 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -32,7 +32,7 @@ #include <sys/socket.h> #include <sys/ioctl.h> #include <asm/types.h> -#include <net/if.h> +#include <linux/if.h> #include <sys/stat.h> #include <linux/ppp_defs.h> @@ -875,6 +875,8 @@ create_pppd_cmd_line (NMPPPManager *self, nm_cmd_line_add_string (cmd, "refuse-mschap-v2"); if (nm_setting_ppp_get_nobsdcomp (setting)) nm_cmd_line_add_string (cmd, "nobsdcomp"); + if (nm_setting_ppp_get_no_vj_comp (setting)) + nm_cmd_line_add_string (cmd, "novj"); if (nm_setting_ppp_get_nodeflate (setting)) nm_cmd_line_add_string (cmd, "nodeflate"); if (nm_setting_ppp_get_require_mppe (setting)) diff --git a/src/settings/Makefile.in b/src/settings/Makefile.in index 980f35cb..09da869d 100644 --- a/src/settings/Makefile.in +++ b/src/settings/Makefile.in @@ -248,8 +248,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 4b3a56cd..cdad8325 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -84,15 +84,27 @@ typedef struct { NMDBusManager *dbus_mgr; NMAgentManager *agent_mgr; + NMSessionMonitor *session_monitor; + guint session_changed_id; GSList *pending_auths; /* List of pending authentication requests */ - NMConnection *secrets; gboolean visible; /* Is this connection is visible by some session? */ - GSList *reqs; /* in-progress secrets requests */ - NMSessionMonitor *session_monitor; - guint session_changed_id; + /* Caches secrets from on-disk connections; were they not cached any + * call to nm_connection_clear_secrets() wipes them out and we'd have + * to re-read them from disk which defeats the purpose of having the + * connection in-memory at all. + */ + NMConnection *system_secrets; + + /* Caches secrets from agents during the activation process; if new system + * secrets are returned from an agent, they get written out to disk, + * triggering a re-read of the connection, which reads only system + * secrets, and would wipe out any agent-owned or not-saved secrets the + * agent also returned. + */ + NMConnection *agent_secrets; guint64 timestamp; /* Up-to-date timestamp of connection use */ GHashTable *seen_bssids; /* Up-to-date BSSIDs that's been seen for the connection */ @@ -294,57 +306,67 @@ nm_settings_connection_check_permission (NMSettingsConnection *self, /**************************************************************/ -static void -only_system_secrets_cb (NMSetting *setting, - const char *key, - const GValue *value, - GParamFlags flags, - gpointer user_data) +static gboolean +secrets_filter_cb (NMSetting *setting, + const char *secret, + NMSettingSecretFlags flags, + gpointer user_data) { - if (flags & NM_SETTING_PARAM_SECRET) { - NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; + NMSettingSecretFlags filter_flags = GPOINTER_TO_UINT (user_data); - /* VPNs are special; need to handle each secret separately */ - if (NM_IS_SETTING_VPN (setting) && !strcmp (key, NM_SETTING_VPN_SECRETS)) { - GHashTableIter iter; - const char *secret_name = NULL; + /* Returns TRUE to remove the secret */ - g_hash_table_iter_init (&iter, (GHashTable *) g_value_get_boxed (value)); - while (g_hash_table_iter_next (&iter, (gpointer *) &secret_name, NULL)) { - 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); - if (secret_flags != NM_SETTING_SECRET_FLAG_NONE) - g_object_set (G_OBJECT (setting), key, NULL, NULL); - } - } + /* Can't use bitops with SECRET_FLAG_NONE so handle that specifically */ + if ( (flags == NM_SETTING_SECRET_FLAG_NONE) + && (filter_flags == NM_SETTING_SECRET_FLAG_NONE)) + return FALSE; + + /* Otherwise if the secret has at least one of the desired flags keep it */ + return (flags & filter_flags) ? FALSE : TRUE; } static void -update_secrets_cache (NMSettingsConnection *self) +update_system_secrets_cache (NMSettingsConnection *self) { NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); - if (priv->secrets) - g_object_unref (priv->secrets); - priv->secrets = nm_connection_duplicate (NM_CONNECTION (self)); + if (priv->system_secrets) + g_object_unref (priv->system_secrets); + priv->system_secrets = nm_connection_duplicate (NM_CONNECTION (self)); /* Clear out non-system-owned and not-saved secrets */ - nm_connection_for_each_setting_value (priv->secrets, only_system_secrets_cb, NULL); + nm_connection_clear_secrets_with_flags (priv->system_secrets, + secrets_filter_cb, + GUINT_TO_POINTER (NM_SETTING_SECRET_FLAG_NONE)); } -static gboolean -clear_system_secrets (GHashTableIter *iter, - NMSettingSecretFlags flags, - gpointer user_data) +static void +update_agent_secrets_cache (NMSettingsConnection *self, NMConnection *new) { - if (flags == NM_SETTING_SECRET_FLAG_NONE) - g_hash_table_iter_remove (iter); - return TRUE; + NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + NMSettingSecretFlags filter_flags = NM_SETTING_SECRET_FLAG_NOT_SAVED | NM_SETTING_SECRET_FLAG_AGENT_OWNED; + + if (priv->agent_secrets) + g_object_unref (priv->agent_secrets); + priv->agent_secrets = nm_connection_duplicate (new ? new : NM_CONNECTION (self)); + + /* Clear out non-system-owned secrets */ + nm_connection_clear_secrets_with_flags (priv->agent_secrets, + secrets_filter_cb, + GUINT_TO_POINTER (filter_flags)); +} + +static void +secrets_cleared_cb (NMSettingsConnection *self) +{ + NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); + + /* Clear agent secrets when connection's secrets are cleared since agent + * secrets are transient. + */ + if (priv->agent_secrets) + g_object_unref (priv->agent_secrets); + priv->agent_secrets = NULL; } /* Update the settings of this connection to match that of 'new', taking care to @@ -356,7 +378,7 @@ nm_settings_connection_replace_settings (NMSettingsConnection *self, GError **error) { NMSettingsConnectionPrivate *priv; - GHashTable *new_settings, *transient_secrets; + GHashTable *new_settings, *hash = NULL; gboolean success = FALSE; g_return_val_if_fail (self != NULL, FALSE); @@ -366,37 +388,29 @@ 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)) { - /* Copy the connection to keep its secrets around even if NM - * calls nm_connection_clear_secrets(). + /* Cache the just-updated system secrets in case something calls + * nm_connection_clear_secrets() and clears them. */ - update_secrets_cache (self); + update_system_secrets_cache (self); + success = TRUE; - /* And add the transient secrets back */ - if (transient_secrets) - nm_connection_update_secrets (NM_CONNECTION (self), NULL, transient_secrets, NULL); + /* Add agent and always-ask secrets back; they won't necessarily be + * in the replacement connection data if it was eg reread from disk. + */ + if (priv->agent_secrets) { + hash = nm_connection_to_hash (priv->agent_secrets, NM_SETTING_HASH_FLAG_ONLY_SECRETS); + if (hash) { + success = nm_connection_update_secrets (NM_CONNECTION (self), NULL, hash, error); + g_hash_table_destroy (hash); + } + } 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; } @@ -550,6 +564,7 @@ do_delete (NMSettingsConnection *connection, for_agents = nm_connection_duplicate (NM_CONNECTION (connection)); nm_connection_clear_secrets (for_agents); nm_agent_manager_delete_secrets (priv->agent_mgr, for_agents, FALSE, 0); + g_object_unref (for_agents); /* Remove timestamp from timestamps database file */ remove_entry_from_db (connection, "timestamps"); @@ -719,7 +734,7 @@ agent_secrets_done_cb (NMAgentManager *manager, /* Update the connection with our existing secrets from backing storage */ nm_connection_clear_secrets (NM_CONNECTION (self)); - hash = nm_connection_to_hash (priv->secrets, NM_SETTING_HASH_FLAG_ONLY_SECRETS); + hash = nm_connection_to_hash (priv->system_secrets, NM_SETTING_HASH_FLAG_ONLY_SECRETS); if (!hash || nm_connection_update_secrets (NM_CONNECTION (self), setting_name, hash, &local)) { /* Update the connection with the agent's secrets; by this point if any * system-owned secrets exist in 'secrets' the agent that provided them @@ -730,7 +745,8 @@ agent_secrets_done_cb (NMAgentManager *manager, /* Now that all secrets are updated, copy and cache new secrets, * then save them to backing storage. */ - update_secrets_cache (self); + update_system_secrets_cache (self); + update_agent_secrets_cache (self, NULL); /* Only save secrets to backing storage if the agent returned any * new system secrets. If it didn't, then the secrets are agent- @@ -807,11 +823,9 @@ nm_settings_connection_get_secrets (NMSettingsConnection *self, guint32 call_id = 0; /* Use priv->secrets to work around the fact that nm_connection_clear_secrets() - * will clear secrets on this object's settings. priv->secrets should be - * a complete copy of this object and kept in sync by - * nm_settings_connection_replace_settings(). + * will clear secrets on this object's settings. */ - if (!priv->secrets) { + if (!priv->system_secrets) { g_set_error (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_INVALID_CONNECTION, "%s.%d - Internal error; secrets cache invalid.", __FILE__, __LINE__); @@ -826,7 +840,7 @@ nm_settings_connection_get_secrets (NMSettingsConnection *self, return 0; } - existing_secrets = nm_connection_to_hash (priv->secrets, NM_SETTING_HASH_FLAG_ONLY_SECRETS); + existing_secrets = nm_connection_to_hash (priv->system_secrets, NM_SETTING_HASH_FLAG_ONLY_SECRETS); call_id = nm_agent_manager_get_secrets (priv->agent_mgr, NM_CONNECTION (self), filter_by_uid, @@ -1084,47 +1098,40 @@ impl_settings_connection_get_settings (NMSettingsConnection *self, auth_start (self, context, NULL, get_settings_auth_cb, NULL); } +typedef struct { + DBusGMethodInvocation *context; + NMAgentManager *agent_mgr; + gulong sender_uid; +} UpdateInfo; + static void -con_update_cb (NMSettingsConnection *connection, +con_update_cb (NMSettingsConnection *self, GError *error, gpointer user_data) { - DBusGMethodInvocation *context = user_data; + UpdateInfo *info = user_data; + NMConnection *for_agent; if (error) - dbus_g_method_return_error (context, error); - else - dbus_g_method_return (context); -} - -static void -secrets_filter_cb (NMSetting *setting, - const char *key, - const GValue *value, - GParamFlags flags, - gpointer user_data) -{ - NMSettingSecretFlags filter_flags = GPOINTER_TO_UINT (user_data); - NMSettingSecretFlags secret_flags = NM_SETTING_SECRET_FLAG_NONE; - const char *secret_name = NULL; - GHashTableIter iter; + dbus_g_method_return_error (info->context, error); + else { + /* Dupe the connection so we can clear out non-agent-owned secrets, + * as agent-owned secrets are the only ones we send back be saved. + * Only send secrets to agents of the same UID that called update too. + */ + for_agent = nm_connection_duplicate (NM_CONNECTION (self)); + nm_connection_clear_secrets_with_flags (for_agent, + secrets_filter_cb, + GUINT_TO_POINTER (NM_SETTING_SECRET_FLAG_AGENT_OWNED)); + nm_agent_manager_save_secrets (info->agent_mgr, for_agent, TRUE, info->sender_uid); + g_object_unref (for_agent); - if (flags & NM_SETTING_PARAM_SECRET) { - if (NM_IS_SETTING_VPN (setting) && !strcmp (key, NM_SETTING_VPN_SECRETS)) { - /* 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)) { - secret_flags = NM_SETTING_SECRET_FLAG_NONE; - nm_setting_get_secret_flags (setting, secret_name, &secret_flags, NULL); - if (!(secret_flags & filter_flags)) - nm_setting_vpn_remove_secret (NM_SETTING_VPN (setting), secret_name); - } - } else { - nm_setting_get_secret_flags (setting, key, &secret_flags, NULL); - if (!(secret_flags & filter_flags)) - g_object_set (G_OBJECT (setting), key, NULL, NULL); - } + dbus_g_method_return (info->context); } + + g_object_unref (info->agent_mgr); + memset (info, 0, sizeof (*info)); + g_free (info); } static void @@ -1136,54 +1143,27 @@ update_auth_cb (NMSettingsConnection *self, { NMSettingsConnectionPrivate *priv = NM_SETTINGS_CONNECTION_GET_PRIVATE (self); NMConnection *new_settings = data; - NMConnection *for_agent, *dup; - NMSettingSecretFlags filter_flags; - GHashTable *hash; - GError *local = NULL; + UpdateInfo *info; if (error) dbus_g_method_return_error (context, error); else { - /* Cache the new secrets since they may get overwritten by the replace - * when transient secrets are copied back. + info = g_malloc0 (sizeof (*info)); + info->context = context; + info->agent_mgr = g_object_ref (priv->agent_mgr); + info->sender_uid = sender_uid; + + /* Cache the new secrets from the agent, as stuff like inotify-triggered + * changes to connection's backing config files will blow them away if + * they're in the main connection. */ - dup = nm_connection_duplicate (new_settings); + update_agent_secrets_cache (self, new_settings); /* Update and commit our settings. */ nm_settings_connection_replace_and_commit (self, - new_settings, - con_update_cb, - context); - - /* Copy new agent secrets back to the connection */ - filter_flags = NM_SETTING_SECRET_FLAG_AGENT_OWNED | NM_SETTING_SECRET_FLAG_NOT_SAVED; - nm_connection_for_each_setting_value (dup, - secrets_filter_cb, - GUINT_TO_POINTER (filter_flags)); - hash = nm_connection_to_hash (dup, NM_SETTING_HASH_FLAG_ONLY_SECRETS); - g_object_unref (dup); - - if (hash) { - if (!nm_connection_update_secrets (NM_CONNECTION (self), NULL, hash, &local)) { - nm_log_warn (LOGD_SETTINGS, "Failed to update connection secrets: (%d) %s", - local ? local->code : -1, - local && local->message ? local->message : "(unknown)"); - g_clear_error (&local); - } - g_hash_table_destroy (hash); - } - - /* Dupe the connection and clear out non-agent-owned secrets so we can - * send the agent-owned ones to agents to be saved. Only send them to - * agents of the same UID as the Update() request sender. - */ - for_agent = nm_connection_duplicate (NM_CONNECTION (self)); - filter_flags = NM_SETTING_SECRET_FLAG_AGENT_OWNED; - nm_connection_for_each_setting_value (for_agent, - secrets_filter_cb, - GUINT_TO_POINTER (filter_flags)); - nm_agent_manager_save_secrets (priv->agent_mgr, for_agent, TRUE, sender_uid); - g_object_unref (for_agent); + new_settings, + con_update_cb, + info); } g_object_unref (new_settings); @@ -1345,16 +1325,11 @@ dbus_get_agent_secrets_cb (NMSettingsConnection *self, if (error) dbus_g_method_return_error (context, error); else { - /* The connection's secrets will have been updated by the agent manager, - * so we want to refresh the secrets cache. Note that we will never save - * new secrets to backing storage here because D-Bus initated requests will - * never ask for completely new secrets from agents. Thus system-owned - * secrets should not have changed from backing storage. We also don't - * send agent-owned secrets back out to be saved since we assume the agent - * that provided the secrets saved them itself. + /* Return secrets from agent and backing storage to the D-Bus caller; + * nm_settings_connection_get_secrets() will have updated itself with + * secrets from backing storage and those returned from the agent + * by the time we get here. */ - update_secrets_cache (self); - hash = nm_connection_to_hash (NM_CONNECTION (self), NM_SETTING_HASH_FLAG_ONLY_SECRETS); if (!hash) hash = g_hash_table_new (NULL, NULL); @@ -1726,6 +1701,8 @@ nm_settings_connection_init (NMSettingsConnection *self) priv->agent_mgr = nm_agent_manager_get (); priv->seen_bssids = g_hash_table_new_full (mac_hash, mac_equal, g_free, g_free); + + g_signal_connect (self, "secrets-cleared", G_CALLBACK (secrets_cleared_cb), NULL); } static void @@ -1739,8 +1716,10 @@ dispose (GObject *object) goto out; priv->disposed = TRUE; - if (priv->secrets) - g_object_unref (priv->secrets); + if (priv->system_secrets) + g_object_unref (priv->system_secrets); + if (priv->agent_secrets) + g_object_unref (priv->agent_secrets); /* Cancel PolicyKit requests */ for (iter = priv->pending_auths; iter; iter = g_slist_next (iter)) diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 733e9145..f0bfc162 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -27,6 +27,7 @@ #include <unistd.h> #include <string.h> +#include <ctype.h> #include <gmodule.h> #include <net/ethernet.h> #include <netinet/ether.h> @@ -546,24 +547,23 @@ find_plugin (GSList *list, const char *pname) } static gboolean -load_plugins (NMSettings *self, const char *plugins, GError **error) +load_plugins (NMSettings *self, const char **plugins, GError **error) { GSList *list = NULL; - char **plist; - char **iter; + const char **iter; gboolean success = TRUE; - plist = g_strsplit (plugins, ",", 0); - if (!plist) - return FALSE; - - for (iter = plist; *iter; iter++) { + for (iter = plugins; *iter; iter++) { GModule *plugin; char *full_name, *path; - const char *pname = g_strstrip (*iter); + const char *pname = *iter; GObject *obj; GObject * (*factory_func) (void); + /* strip leading spaces */ + while (isblank (*pname)) + pname++; + /* keyfile plugin built in now */ if (!strcmp (pname, "keyfile")) continue; @@ -616,8 +616,6 @@ load_plugins (NMSettings *self, const char *plugins, GError **error) list = g_slist_append (list, obj); } - g_strfreev (plist); - g_slist_foreach (list, (GFunc) g_object_unref, NULL); g_slist_free (list); @@ -634,6 +632,7 @@ connection_removed (NMSettingsConnection *obj, gpointer user_data) { GObject *connection = G_OBJECT (obj); guint id; + g_object_ref (connection); /* Disconnect signal handlers, as plugins might still keep references @@ -653,7 +652,7 @@ connection_removed (NMSettingsConnection *obj, gpointer user_data) if (id) g_signal_handler_disconnect (connection, id); - /* Forget about the connection internall */ + /* Forget about the connection internally */ g_hash_table_remove (NM_SETTINGS_GET_PRIVATE (user_data)->connections, (gpointer) nm_connection_get_path (NM_CONNECTION (connection))); @@ -840,9 +839,6 @@ claim_connection (NMSettings *self, } } -// TODO it seems that this is only ever used to remove a -// NMDefaultWiredConnection, and it probably needs to stay that way. So this -// *needs* a better name! static void remove_default_wired_connection (NMSettings *self, NMSettingsConnection *connection, @@ -852,7 +848,8 @@ remove_default_wired_connection (NMSettings *self, const char *path = nm_connection_get_path (NM_CONNECTION (connection)); if (g_hash_table_lookup (priv->connections, path)) { - g_signal_emit_by_name (G_OBJECT (connection), NM_SETTINGS_CONNECTION_REMOVED); + if (do_signal) + g_signal_emit_by_name (G_OBJECT (connection), NM_SETTINGS_CONNECTION_REMOVED); g_hash_table_remove (priv->connections, path); } } @@ -1378,7 +1375,7 @@ delete_cb (NMSettingsConnection *connection, GError *error, gpointer user_data) { } -static gboolean +static void default_wired_try_update (NMDefaultWiredConnection *wired, NMSettings *self) { @@ -1390,6 +1387,9 @@ default_wired_try_update (NMDefaultWiredConnection *wired, * persistent storage. */ + /* Keep it alive over removal so we can re-add it if we need to */ + g_object_ref (wired); + id = nm_connection_get_id (NM_CONNECTION (wired)); g_assert (id); @@ -1402,21 +1402,21 @@ default_wired_try_update (NMDefaultWiredConnection *wired, DEFAULT_WIRED_TAG, NULL); nm_log_info (LOGD_SETTINGS, "Saved default wired connection '%s' to persistent storage", id); - return FALSE; + } else { + nm_log_warn (LOGD_SETTINGS, "couldn't save default wired connection '%s': %d / %s", + id, + error ? error->code : -1, + (error && error->message) ? error->message : "(unknown)"); + g_clear_error (&error); + + /* If there was an error, don't destroy the default wired connection, + * but add it back to the system settings service. Connection is already + * exported on the bus, don't export it again, thus do_export == FALSE. + */ + claim_connection (self, NM_SETTINGS_CONNECTION (wired), FALSE); } - nm_log_warn (LOGD_SETTINGS, "couldn't save default wired connection '%s': %d / %s", - id, - error ? error->code : -1, - (error && error->message) ? error->message : "(unknown)"); - g_clear_error (&error); - - /* If there was an error, don't destroy the default wired connection, - * but add it back to the system settings service. Connection is already - * exported on the bus, don't export it again, thus do_export == FALSE. - */ - claim_connection (self, NM_SETTINGS_CONNECTION (wired), FALSE); - return TRUE; + g_object_unref (wired); } void @@ -1492,7 +1492,7 @@ nm_settings_device_removed (NMSettings *self, NMDevice *device) NMSettings * nm_settings_new (const char *config_file, - const char *plugins, + const char **plugins, GError **error) { NMSettings *self; diff --git a/src/settings/nm-settings.h b/src/settings/nm-settings.h index 66d41cce..77485e19 100644 --- a/src/settings/nm-settings.h +++ b/src/settings/nm-settings.h @@ -77,7 +77,7 @@ typedef struct { GType nm_settings_get_type (void); NMSettings *nm_settings_new (const char *config_file, - const char *plugins, + const char **plugins, GError **error); typedef void (*NMSettingsForEachFunc) (NMSettings *settings, diff --git a/src/settings/plugins/Makefile.in b/src/settings/plugins/Makefile.in index 148e9620..c23e3be0 100644 --- a/src/settings/plugins/Makefile.in +++ b/src/settings/plugins/Makefile.in @@ -197,8 +197,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifcfg-rh/Makefile.in b/src/settings/plugins/ifcfg-rh/Makefile.in index f02b6431..b904563a 100644 --- a/src/settings/plugins/ifcfg-rh/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/Makefile.in @@ -267,8 +267,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifcfg-rh/plugin.c b/src/settings/plugins/ifcfg-rh/plugin.c index ed0dceca..b4be4cba 100644 --- a/src/settings/plugins/ifcfg-rh/plugin.c +++ b/src/settings/plugins/ifcfg-rh/plugin.c @@ -655,8 +655,10 @@ sc_plugin_ifcfg_init (SCPluginIfcfg *plugin) } if (!success) { - dbus_g_connection_unref (priv->bus); - priv->bus = NULL; + if (priv->bus) { + dbus_g_connection_unref (priv->bus); + priv->bus = NULL; + } } } diff --git a/src/settings/plugins/ifcfg-rh/reader.c b/src/settings/plugins/ifcfg-rh/reader.c index cdf5889e..910cca35 100644 --- a/src/settings/plugins/ifcfg-rh/reader.c +++ b/src/settings/plugins/ifcfg-rh/reader.c @@ -28,10 +28,10 @@ #include <ctype.h> #include <sys/inotify.h> #include <errno.h> -#include <net/if.h> #include <sys/ioctl.h> #include <unistd.h> #include <netinet/ether.h> +#include <linux/if.h> #ifndef __user #define __user @@ -3382,7 +3382,7 @@ connection_from_file (const char *filename, network_file = SYSCONFDIR "/sysconfig/network"; if (!iscsiadm_path) - iscsiadm_path = SBINDIR "/iscsiadm"; + iscsiadm_path = "/sbin/iscsiadm"; ifcfg_name = utils_get_ifcfg_name (filename, TRUE); if (!ifcfg_name) { diff --git a/src/settings/plugins/ifcfg-rh/shvar.c b/src/settings/plugins/ifcfg-rh/shvar.c index db084969..0aa8efc2 100644 --- a/src/settings/plugins/ifcfg-rh/shvar.c +++ b/src/settings/plugins/ifcfg-rh/shvar.c @@ -142,10 +142,11 @@ svUnescape(char *s) { */ static const char escapees[] = "\"'\\$~`"; /* must be escaped */ static const char spaces[] = " \t|&;()<>"; /* only require "" */ +static const char newlines[] = "\n\r"; /* will be removed */ char * svEscape(const char *s) { char *new; - int i, j, mangle = 0, space = 0; + int i, j, mangle = 0, space = 0, newline = 0; int newlen, slen; static int esclen, splen; @@ -156,23 +157,26 @@ svEscape(const char *s) { for (i = 0; i < slen; i++) { if (strchr(escapees, s[i])) mangle++; if (strchr(spaces, s[i])) space++; + if (strchr(newlines, s[i])) newline++; } - if (!mangle && !space) return strdup(s); + if (!mangle && !space && !newline) return strdup(s); - newlen = slen + mangle + 3; /* 3 is extra ""\0 */ + newlen = slen + mangle - newline + 3; /* 3 is extra ""\0 */ new = g_malloc0(newlen); if (!new) return NULL; j = 0; new[j++] = '"'; for (i = 0; i < slen; i++) { + if (strchr(newlines, s[i])) + continue; if (strchr(escapees, s[i])) { new[j++] = '\\'; } new[j++] = s[i]; } new[j++] = '"'; - g_assert(j == slen + mangle + 2); /* j is the index of the '\0' */ + g_assert(j == slen + mangle - newline + 2); /* j is the index of the '\0' */ return new; } @@ -332,13 +336,13 @@ svSetValue(shvarFile *s, const char *key, const char *value, gboolean verbatim) } end: - if (newval) free(newval); - if (val1) free(val1); - if (val2) free(val2); + g_free(newval); + g_free(val1); + g_free(val2); return; bail: - if (keyValue) free (keyValue); + g_free (keyValue); goto end; } diff --git a/src/settings/plugins/ifcfg-rh/tests/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/Makefile.in index cd37d0a7..6c509fd0 100644 --- a/src/settings/plugins/ifcfg-rh/tests/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/tests/Makefile.in @@ -228,8 +228,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in index a10cbb86..7a00bcfd 100644 --- a/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in +++ b/src/settings/plugins/ifcfg-rh/tests/network-scripts/Makefile.in @@ -152,8 +152,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c index d1f08aa9..e32266cb 100644 --- a/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c +++ b/src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh.c @@ -10141,6 +10141,207 @@ test_write_wifi_wpa_then_open (void) } static void +test_write_wifi_wpa_then_wep_with_perms (void) +{ + NMConnection *connection; + NMConnection *reread; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + NMSettingWirelessSecurity *s_wsec; + NMSettingIP4Config *s_ip4; + NMSettingIP6Config *s_ip6; + char *uuid; + gboolean success; + GError *error = NULL; + char *testfile = NULL; + char *unmanaged = NULL; + char *keyfile = NULL; + char *routefile = NULL; + char *route6file = NULL; + gboolean ignore_error = FALSE; + GByteArray *ssid; + GSList *perm_list = NULL; + const unsigned char ssid_data[] = "SomeSSID"; + + /* Test that writing out a WPA config then changing that to a WEP + * config works and doesn't cause infinite loop or other issues. + */ + + connection = nm_connection_new (); + g_assert (connection); + + /* Connection setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + g_assert (s_con); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + perm_list = g_slist_append (perm_list, "user:superman:"); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "random wifi connection 2", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, + NM_SETTING_CONNECTION_PERMISSIONS, perm_list, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + g_slist_free (perm_list); + ASSERT (nm_setting_connection_get_num_permissions (s_con) == 1, + "test_write_wifi_wpa_then_wep_with_perms", "unexpected failure adding valid user permisson"); + + /* Wifi setting */ + s_wifi = (NMSettingWireless *) nm_setting_wireless_new (); + g_assert (s_wifi); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (sizeof (ssid_data)); + g_byte_array_append (ssid, ssid_data, sizeof (ssid_data)); + + g_object_set (s_wifi, + NM_SETTING_WIRELESS_SSID, ssid, + NM_SETTING_WIRELESS_MODE, "infrastructure", + NM_SETTING_WIRELESS_SEC, NM_SETTING_WIRELESS_SECURITY_SETTING_NAME, + NULL); + + g_byte_array_free (ssid, TRUE); + + /* Wireless security setting */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + g_assert (s_wsec); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "wpa-psk", + NM_SETTING_WIRELESS_SECURITY_PSK, "My cool PSK", + NULL); + + nm_setting_wireless_security_add_proto (s_wsec, "wpa"); + nm_setting_wireless_security_add_pairwise (s_wsec, "tkip"); + nm_setting_wireless_security_add_group (s_wsec, "tkip"); + + nm_setting_wireless_security_add_proto (s_wsec, "rsn"); + nm_setting_wireless_security_add_pairwise (s_wsec, "ccmp"); + nm_setting_wireless_security_add_group (s_wsec, "ccmp"); + + /* IP4 setting */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + g_assert (s_ip4); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + + /* IP6 setting */ + s_ip6 = (NMSettingIP6Config *) nm_setting_ip6_config_new (); + g_assert (s_ip6); + nm_connection_add_setting (connection, NM_SETTING (s_ip6)); + + g_object_set (s_ip6, + NM_SETTING_IP6_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_IGNORE, + NM_SETTING_IP6_CONFIG_MAY_FAIL, TRUE, + NULL); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* Save the ifcfg */ + success = writer_new_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + &testfile, + &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile); + + /* re-read the connection for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_assert_no_error (error); + g_assert (reread); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + g_free (unmanaged); + unmanaged = NULL; + g_free (routefile); + routefile = NULL; + g_free (route6file); + route6file = NULL; + g_object_unref (reread); + + /* Now change the connection to WEP and recheck */ + s_wsec = (NMSettingWirelessSecurity *) nm_setting_wireless_security_new (); + g_assert (s_wsec); + nm_connection_add_setting (connection, NM_SETTING (s_wsec)); + + g_object_set (s_wsec, + NM_SETTING_WIRELESS_SECURITY_KEY_MGMT, "none", + NULL); + nm_setting_wireless_security_set_wep_key (s_wsec, 0, "abraka dabra"); + + /* Write it back out */ + success = writer_update_connection (connection, + TEST_SCRATCH_DIR "/network-scripts/", + testfile, + keyfile, + &error); + g_assert_no_error (error); + g_assert (success); + + g_free (keyfile); + keyfile = NULL; + + /* re-read it for comparison */ + reread = connection_from_file (testfile, + NULL, + TYPE_WIRELESS, + NULL, + &unmanaged, + &keyfile, + &routefile, + &route6file, + &error, + &ignore_error); + g_assert_no_error (error); + + g_assert (reread); + + success = nm_connection_verify (reread, &error); + g_assert_no_error (error); + + success = nm_connection_compare (connection, reread, + NM_SETTING_COMPARE_FLAG_IGNORE_AGENT_OWNED_SECRETS | + NM_SETTING_COMPARE_FLAG_IGNORE_NOT_SAVED_SECRETS); + + ASSERT (success, + "test_write_wifi_wpa_then_wep_with_perms", "failed to compare connections"); + + unlink (keyfile); + unlink (testfile); + + g_free (testfile); + g_free (unmanaged); + g_free (keyfile); + g_free (routefile); + g_free (route6file); + g_object_unref (reread); + + g_object_unref (connection); +} + +static void test_write_wifi_dynamic_wep_leap (void) { NMConnection *connection; @@ -11713,6 +11914,7 @@ int main (int argc, char **argv) test_write_wifi_wpa_eap_ttls_mschapv2 (); test_write_wifi_dynamic_wep_leap (); test_write_wifi_wpa_then_open (); + test_write_wifi_wpa_then_wep_with_perms (); test_write_wired_qeth_dhcp (); test_write_wired_ctc_dhcp (); test_write_permissions (); diff --git a/src/settings/plugins/ifcfg-rh/writer.c b/src/settings/plugins/ifcfg-rh/writer.c index 192226ac..068bcda2 100644 --- a/src/settings/plugins/ifcfg-rh/writer.c +++ b/src/settings/plugins/ifcfg-rh/writer.c @@ -569,6 +569,7 @@ write_wireless_security_setting (NMConnection *connection, svSetValue (ifcfg, "DEFAULTKEY", NULL, FALSE); if (!strcmp (key_mgmt, "none")) { + svSetValue (ifcfg, "KEY_MGMT", NULL, FALSE); wep = TRUE; *no_8021x = TRUE; } else if (!strcmp (key_mgmt, "wpa-none") || !strcmp (key_mgmt, "wpa-psk")) { @@ -1725,7 +1726,7 @@ write_connection (NMConnection *connection, g_free (ifcfg_name); while (idx++ < 500) { - ifcfg_name = g_strdup_printf ("%s/ifcfg-%s %u", ifcfg_dir, escaped, idx); + ifcfg_name = g_strdup_printf ("%s/ifcfg-%s-%u", ifcfg_dir, escaped, idx); if (g_file_test (ifcfg_name, G_FILE_TEST_EXISTS) == FALSE) break; g_free (ifcfg_name); diff --git a/src/settings/plugins/ifcfg-suse/Makefile.in b/src/settings/plugins/ifcfg-suse/Makefile.in index 02e2247a..b8017e24 100644 --- a/src/settings/plugins/ifcfg-suse/Makefile.in +++ b/src/settings/plugins/ifcfg-suse/Makefile.in @@ -215,8 +215,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifnet/Makefile.in b/src/settings/plugins/ifnet/Makefile.in index 2bc7bc32..519e07c0 100644 --- a/src/settings/plugins/ifnet/Makefile.in +++ b/src/settings/plugins/ifnet/Makefile.in @@ -263,8 +263,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifnet/connection_parser.c b/src/settings/plugins/ifnet/connection_parser.c index 982f94f9..b4aaa8d2 100644 --- a/src/settings/plugins/ifnet/connection_parser.c +++ b/src/settings/plugins/ifnet/connection_parser.c @@ -1742,27 +1742,27 @@ ifnet_update_connection_from_config_block (const char *conn_name, GError **error /* IPv4 setting */ make_ip4_setting (connection, conn_name, error); - if (error && *error) - PLUGIN_WARN (IFNET_PLUGIN_NAME, - "Found error: %s", (*error)->message); + if (error && *error) { + PLUGIN_WARN (IFNET_PLUGIN_NAME, "Found error: %s", (*error)->message); + goto error; + } /* IPv6 setting */ make_ip6_setting (connection, conn_name, error); - if (error && *error) - PLUGIN_WARN (IFNET_PLUGIN_NAME, - "Found error: %s", (*error)->message); + if (error && *error) { + PLUGIN_WARN (IFNET_PLUGIN_NAME, "Found error: %s", (*error)->message); + goto error; + } success = nm_connection_verify (connection, error); if (error && *error) - PLUGIN_WARN (IFNET_PLUGIN_NAME, - "Found error: %s", (*error)->message); + PLUGIN_WARN (IFNET_PLUGIN_NAME, "Found error: %s", (*error)->message); PLUGIN_PRINT (IFNET_PLUGIN_NAME, "Connection verified %s:%d", conn_name, success); if (!success) goto error; return connection; error: - g_object_unref (setting); g_object_unref (connection); return NULL; } diff --git a/src/settings/plugins/ifnet/net_utils.c b/src/settings/plugins/ifnet/net_utils.c index 83f86ab5..b533ae3f 100644 --- a/src/settings/plugins/ifnet/net_utils.c +++ b/src/settings/plugins/ifnet/net_utils.c @@ -313,7 +313,7 @@ is_ip4_address (const char *in_address) gboolean result = FALSE; gchar *tmp; GRegex *regex = g_regex_new (pattern, 0, 0, NULL); - GMatchInfo *match_info; + GMatchInfo *match_info = NULL; if (!address) goto done; diff --git a/src/settings/plugins/ifnet/tests/Makefile.in b/src/settings/plugins/ifnet/tests/Makefile.in index 17b80c36..d2cbb871 100644 --- a/src/settings/plugins/ifnet/tests/Makefile.in +++ b/src/settings/plugins/ifnet/tests/Makefile.in @@ -186,8 +186,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifnet/tests/net b/src/settings/plugins/ifnet/tests/net index e7550002..0eef399a 100644 --- a/src/settings/plugins/ifnet/tests/net +++ b/src/settings/plugins/ifnet/tests/net @@ -35,6 +35,8 @@ config_eth6=("192.168.4.{1..101}/24") config_eth7=( "dhcp" ) auto_eth7="true" +# missing config_eth8 +auto_eth8="true" config_myxjtu2=("202.117.16.121/24 brd 202.117.16.255") routes_myxjtu2=("default via 202.117.16.1") diff --git a/src/settings/plugins/ifnet/tests/test_all.c b/src/settings/plugins/ifnet/tests/test_all.c index d114bbba..52d9ce2a 100644 --- a/src/settings/plugins/ifnet/tests/test_all.c +++ b/src/settings/plugins/ifnet/tests/test_all.c @@ -252,25 +252,25 @@ test_is_unmanaged () static void test_new_connection () { - GError **error = NULL; + GError *error = NULL; NMConnection *connection; - connection = ifnet_update_connection_from_config_block ("eth2", error); + connection = ifnet_update_connection_from_config_block ("eth2", &error); ASSERT (connection != NULL, "new connection", "new connection failed: %s", - error == NULL ? "None" : (*error)->message); + error ? error->message : "None"); g_object_unref (connection); - connection = - ifnet_update_connection_from_config_block ("qiaomuf", error); + + connection = ifnet_update_connection_from_config_block ("qiaomuf", &error); ASSERT (connection != NULL, "new connection", - "new connection failed: %s", error - && (*error) ? (*error)->message : "NONE"); + "new connection failed: %s", + error ? error->message : "NONE"); g_object_unref (connection); - connection = - ifnet_update_connection_from_config_block ("myxjtu2", error); + + connection = ifnet_update_connection_from_config_block ("myxjtu2", &error); ASSERT (connection != NULL, "new connection", - "new connection failed: %s", error - && (*error) ? (*error)->message : "NONE"); + "new connection failed: %s", + error ? error->message : "NONE"); g_object_unref (connection); } @@ -280,32 +280,32 @@ test_new_connection () static void test_update_connection () { - GError **error = NULL; + GError *error = NULL; NMConnection *connection; gboolean success; - connection = ifnet_update_connection_from_config_block ("eth0", error); + connection = ifnet_update_connection_from_config_block ("eth0", &error); ASSERT (connection != NULL, "get connection", "get connection failed: %s", - error == NULL ? "None" : (*error)->message); + error ? error->message : "None"); success = ifnet_update_parsers_by_connection (connection, "eth0", NET_GEN_NAME, SUP_GEN_NAME, NULL, - error); + &error); ASSERT (success, "update connection", "update connection failed %s", "eth0"); g_object_unref (connection); - connection = ifnet_update_connection_from_config_block ("0xab3ace", error); + connection = ifnet_update_connection_from_config_block ("0xab3ace", &error); ASSERT (connection != NULL, "get connection", "get connection failed: %s", - error == NULL ? "None" : (*error)->message); + error ? error->message : "None"); success = ifnet_update_parsers_by_connection (connection, "0xab3ace", NET_GEN_NAME, SUP_GEN_NAME, NULL, - error); + &error); ASSERT (success, "update connection", "update connection failed %s", "0xab3ace"); g_object_unref (connection); @@ -357,6 +357,17 @@ test_delete_connection () } static void +test_missing_config () +{ + GError *error = NULL; + NMConnection *connection; + + connection = ifnet_update_connection_from_config_block ("eth8", &error); + ASSERT (connection == NULL && error != NULL, "get connection", + "get connection should fail with 'Unknown config for eth8'"); +} + +static void run_all (gboolean run) { if (run) { @@ -378,6 +389,7 @@ run_all (gboolean run) test_update_connection (); test_add_connection (); test_delete_connection (); + test_missing_config (); } } diff --git a/src/settings/plugins/ifnet/tests/wpa_supplicant.conf b/src/settings/plugins/ifnet/tests/wpa_supplicant.conf index a2595d42..4f5f68cf 100644 --- a/src/settings/plugins/ifnet/tests/wpa_supplicant.conf +++ b/src/settings/plugins/ifnet/tests/wpa_supplicant.conf @@ -859,6 +859,7 @@ network={ identity="user@example.com" anonymous_identity="anonymous@example.com" password="foobar" - ca_cert="blob://exampleblob" + ca_cert="test_ca_cert.pem" + phase2="auth=CHAP" priority=20 } diff --git a/src/settings/plugins/ifupdown/Makefile.in b/src/settings/plugins/ifupdown/Makefile.in index 5f5a456b..b6896b59 100644 --- a/src/settings/plugins/ifupdown/Makefile.in +++ b/src/settings/plugins/ifupdown/Makefile.in @@ -262,8 +262,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/ifupdown/tests/Makefile.in b/src/settings/plugins/ifupdown/tests/Makefile.in index 7412e65d..3c8bf793 100644 --- a/src/settings/plugins/ifupdown/tests/Makefile.in +++ b/src/settings/plugins/ifupdown/tests/Makefile.in @@ -186,8 +186,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/keyfile/Makefile.in b/src/settings/plugins/keyfile/Makefile.in index a2a7d231..cf821e46 100644 --- a/src/settings/plugins/keyfile/Makefile.in +++ b/src/settings/plugins/keyfile/Makefile.in @@ -238,8 +238,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/keyfile/reader.c b/src/settings/plugins/keyfile/reader.c index c4136e05..4128b9f2 100644 --- a/src/settings/plugins/keyfile/reader.c +++ b/src/settings/plugins/keyfile/reader.c @@ -730,10 +730,27 @@ read_hash_of_string (GKeyFile *file, NMSetting *setting, const char *key) g_strfreev (keys); } +static void +unescape_semicolons (char *str) +{ + int i; + gsize len = strlen (str); + + for (i = 0; i < len; i++) { + if (str[i] == '\\' && str[i+1] == ';') { + memmove(str + i, str + i + 1, len - (i + 1)); + len--; + } + str[len] = '\0'; + } +} + static GByteArray * get_uchar_array (GKeyFile *keyfile, const char *setting_name, - const char *key) + const char *key, + gboolean zero_terminate, + gboolean unescape_semicolon) { GByteArray *array = NULL; char *tmp_string; @@ -742,26 +759,28 @@ get_uchar_array (GKeyFile *keyfile, int i; /* New format: just a string - * Old format: integer list; e.g. 11;25;38 + * Old format: integer list; e.g. 11;25;38; */ tmp_string = g_key_file_get_string (keyfile, setting_name, key, NULL); if (tmp_string) { - gboolean new_format = FALSE; GRegex *regex; GMatchInfo *match_info; - const char *pattern = "^[[:space:]]*[[:digit:]]{1,3}[[:space:]]*(;[[:space:]]*[[:digit:]]{1,3}[[:space:]]*)*(;[[:space:]]*)?$"; + const char *pattern = "^[[:space:]]*[[:digit:]]{1,3}[[:space:]]*;([[:space:]]*[[:digit:]]{1,3}[[:space:]]*;)*([[:space:]]*)?$"; regex = g_regex_new (pattern, 0, 0, NULL); g_regex_match (regex, tmp_string, 0, &match_info); - if (!g_match_info_matches (match_info)) - new_format = TRUE; + if (!g_match_info_matches (match_info)) { + /* Handle as a simple string (ie, new format) */ + if (unescape_semicolon) + unescape_semicolons (tmp_string); + length = strlen (tmp_string); + if (zero_terminate) + length++; + array = g_byte_array_sized_new (length); + g_byte_array_append (array, (guint8 *) tmp_string, length); + } g_match_info_free (match_info); g_regex_unref (regex); - - if (new_format) { - array = g_byte_array_sized_new (strlen (tmp_string)); - g_byte_array_append (array, (guint8 *) tmp_string, strlen (tmp_string)); - } g_free (tmp_string); } @@ -796,7 +815,7 @@ ssid_parser (NMSetting *setting, const char *key, GKeyFile *keyfile, const char const char *setting_name = nm_setting_get_name (setting); GByteArray *array; - array = get_uchar_array (keyfile, setting_name, key); + array = get_uchar_array (keyfile, setting_name, key, FALSE, TRUE); if (array) { g_object_set (setting, key, array, NULL); g_byte_array_free (array, TRUE); @@ -837,21 +856,79 @@ get_cert_path (const char *keyfile_path, GByteArray *cert_path) static const char *certext[] = { ".pem", ".cert", ".crt", ".cer", ".p12", ".der", ".key" }; static gboolean -has_cert_ext (GByteArray *array) +has_cert_ext (const char *path) { int i; for (i = 0; i < G_N_ELEMENTS (certext); i++) { - guint32 extlen = strlen (certext[i]); - - if (array->len <= extlen) - continue; - if (memcmp (&array->data[array->len - extlen], certext[i], extlen) == 0) + if (g_str_has_suffix (path, certext[i])) return TRUE; } return FALSE; } +static gboolean +handle_as_scheme (GByteArray *array, NMSetting *setting, const char *key) +{ + /* It's the PATH scheme, can just set plain data */ + if ( (array->len > strlen (SCHEME_PATH)) + && g_str_has_prefix ((const char *) array->data, SCHEME_PATH) + && (array->data[array->len - 1] == '\0')) { + g_object_set (setting, key, array, NULL); + return TRUE; + } + return FALSE; +} + +static gboolean +handle_as_path (GByteArray *array, + NMSetting *setting, + const char *key, + const char *keyfile_path) +{ + gsize validate_len = array->len; + GByteArray *val; + char *path; + gboolean exists, success = FALSE; + + if (array->len > 500 || array->len < 1) + return FALSE; + + /* If there's a trailing NULL tell g_utf8_validate() to to until the NULL */ + if (array->data[array->len - 1] == '\0') + validate_len = -1; + + if (g_utf8_validate ((const char *) array->data, validate_len, NULL) == FALSE) + return FALSE; + + /* Might be a bare path without the file:// prefix; in that case + * if it's an absolute path, use that, otherwise treat it as a + * relative path to the current directory. + */ + + path = get_cert_path (keyfile_path, array); + exists = g_file_test (path, G_FILE_TEST_EXISTS); + if ( exists + || memchr (array->data, '/', array->len) + || has_cert_ext (path)) { + /* Construct the proper value as required for the PATH scheme */ + val = g_byte_array_sized_new (strlen (SCHEME_PATH) + strlen (path) + 1); + g_byte_array_append (val, (const guint8 *) SCHEME_PATH, strlen (SCHEME_PATH)); + g_byte_array_append (val, (const guint8 *) path, strlen (path)); + g_byte_array_append (val, (const guint8 *) "\0", 1); + g_object_set (setting, key, val, NULL); + g_byte_array_free (val, TRUE); + success = TRUE; + + /* Warn if the certificate didn't exist */ + if (exists == FALSE) + PLUGIN_WARN (KEYFILE_PLUGIN_NAME, " certificate or key %s does not exist", path); + } + g_free (path); + + return success; +} + static void cert_parser (NMSetting *setting, const char *key, GKeyFile *keyfile, const char *keyfile_path) { @@ -859,62 +936,25 @@ cert_parser (NMSetting *setting, const char *key, GKeyFile *keyfile, const char GByteArray *array; gboolean success = FALSE; - array = get_uchar_array (keyfile, setting_name, key); - if (array) { - /* Value could be either: - * 1) the raw key/cert data as a blob - * 2) a path scheme (ie, starts with "file://") - * 3) a plain path - */ - if ( (array->len > strlen (SCHEME_PATH)) - && g_str_has_prefix ((const char *) array->data, SCHEME_PATH) - && (array->data[array->len - 1] == '\0')) { - /* It's the PATH scheme, can just set plain data */ - g_object_set (setting, key, array, NULL); - success = TRUE; - } else if ( (array->len < 500) - && g_utf8_validate ((const char *) array->data, array->len, NULL)) { - GByteArray *val; - char *path; - gboolean exists; - - /* Might be a bare path without the file:// prefix; in that case - * if it's an absolute path, use that, otherwise treat it as a - * relative path to the current directory. - */ - - path = get_cert_path (keyfile_path, array); - exists = g_file_test (path, G_FILE_TEST_EXISTS); - if ( exists - || memchr (array->data, '/', array->len) - || has_cert_ext (array)) { - /* Construct the proper value as required for the PATH scheme */ - val = g_byte_array_sized_new (strlen (SCHEME_PATH) + array->len + 1); - g_byte_array_append (val, (const guint8 *) SCHEME_PATH, strlen (SCHEME_PATH)); - g_byte_array_append (val, (const guint8 *) path, strlen (path)); - g_byte_array_append (val, (const guint8 *) "\0", 1); - g_object_set (setting, key, val, NULL); - g_byte_array_free (val, TRUE); - success = TRUE; - - /* Warn if the certificate didn't exist */ - if (exists == FALSE) { - PLUGIN_WARN (KEYFILE_PLUGIN_NAME, " certificate or key %s does not exist", path); - } - } - g_free (path); - } + array = get_uchar_array (keyfile, setting_name, key, TRUE, FALSE); + if (array && array->len > 0) { + /* Try as a path + scheme (ie, starts with "file://") */ + success = handle_as_scheme (array, setting, key); - if (!success) { - /* Assume it's a simple blob value of the certificate or private key's data */ - g_object_set (setting, key, array, NULL); - } + /* If not, it might be a plain path */ + if (success == FALSE) + success = handle_as_path (array, setting, key, keyfile_path); - g_byte_array_free (array, TRUE); + /* If neither of those two, assume blob with certificate data */ + if (success == FALSE) + g_object_set (setting, key, array, NULL); } else { g_warning ("%s: ignoring invalid key/cert value for %s / %s", __func__, setting_name, key); } + + if (array) + g_byte_array_free (array, TRUE); } typedef struct { diff --git a/src/settings/plugins/keyfile/tests/Makefile.in b/src/settings/plugins/keyfile/tests/Makefile.in index 05ed3a61..9d4f478d 100644 --- a/src/settings/plugins/keyfile/tests/Makefile.in +++ b/src/settings/plugins/keyfile/tests/Makefile.in @@ -224,8 +224,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am index 302db866..55dda7ee 100644 --- a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am +++ b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.am @@ -8,6 +8,8 @@ KEYFILES = \ ATT_Data_Connect_Plain \ Test_String_SSID \ Test_Intlist_SSID \ + Test_Intlike_SSID \ + Test_Intlike_SSID_2 \ Test_Wired_TLS_Old \ Test_Wired_TLS_New \ Test_Wired_TLS_Blob \ diff --git a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in index 083615b0..3408cb15 100644 --- a/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in +++ b/src/settings/plugins/keyfile/tests/keyfiles/Makefile.in @@ -152,8 +152,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ @@ -278,6 +286,8 @@ KEYFILES = \ ATT_Data_Connect_Plain \ Test_String_SSID \ Test_Intlist_SSID \ + Test_Intlike_SSID \ + Test_Intlike_SSID_2 \ Test_Wired_TLS_Old \ Test_Wired_TLS_New \ Test_Wired_TLS_Blob \ diff --git a/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID b/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID new file mode 100644 index 00000000..2bacb725 --- /dev/null +++ b/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID @@ -0,0 +1,11 @@ +[connection] +id=Test +uuid=2f962388-e5f3-45af-a62c-ac220b8f7baa +type=802-11-wireless + +[802-11-wireless] +ssid=101 + +[ipv4] +method=auto + diff --git a/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID_2 b/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID_2 new file mode 100644 index 00000000..20240251 --- /dev/null +++ b/src/settings/plugins/keyfile/tests/keyfiles/Test_Intlike_SSID_2 @@ -0,0 +1,11 @@ +[connection] +id=Test SSID - escaping semicolon in string +uuid=2f962388-e5f3-45af-a62c-ac220b8f7baa +type=802-11-wireless + +[802-11-wireless] +ssid=11\\;12\\;13\\; + +[ipv4] +method=auto + diff --git a/src/settings/plugins/keyfile/tests/test-keyfile.c b/src/settings/plugins/keyfile/tests/test-keyfile.c index 3bbaaaec..2859cb3e 100644 --- a/src/settings/plugins/keyfile/tests/test-keyfile.c +++ b/src/settings/plugins/keyfile/tests/test-keyfile.c @@ -1563,6 +1563,246 @@ test_write_intlist_ssid (void) g_object_unref (connection); } +#define TEST_INTLIKE_SSID_FILE TEST_KEYFILES_DIR"/Test_Intlike_SSID" + +static void +test_read_intlike_ssid (void) +{ + NMConnection *connection; + NMSettingWireless *s_wifi; + GError *error = NULL; + gboolean success; + const GByteArray *array; + const char *expected_ssid = "101"; + + connection = nm_keyfile_plugin_connection_from_file (TEST_INTLIKE_SSID_FILE, &error); + g_assert_no_error (error); + g_assert (connection); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* SSID */ + s_wifi = nm_connection_get_setting_wireless (connection); + g_assert (s_wifi); + + array = nm_setting_wireless_get_ssid (s_wifi); + g_assert (array != NULL); + g_assert_cmpint (array->len, ==, strlen (expected_ssid)); + g_assert_cmpint (memcmp (array->data, expected_ssid, strlen (expected_ssid)), ==, 0); + + g_object_unref (connection); +} + +#define TEST_INTLIKE_SSID_2_FILE TEST_KEYFILES_DIR"/Test_Intlike_SSID_2" + +static void +test_read_intlike_ssid_2 (void) +{ + NMConnection *connection; + NMSettingWireless *s_wifi; + GError *error = NULL; + gboolean success; + const GByteArray *array; + const char *expected_ssid = "11;12;13;"; + + connection = nm_keyfile_plugin_connection_from_file (TEST_INTLIKE_SSID_2_FILE, &error); + g_assert_no_error (error); + g_assert (connection); + + success = nm_connection_verify (connection, &error); + g_assert_no_error (error); + g_assert (success); + + /* SSID */ + s_wifi = nm_connection_get_setting_wireless (connection); + g_assert (s_wifi); + + array = nm_setting_wireless_get_ssid (s_wifi); + g_assert (array != NULL); + g_assert_cmpint (array->len, ==, strlen (expected_ssid)); + g_assert_cmpint (memcmp (array->data, expected_ssid, strlen (expected_ssid)), ==, 0); + + g_object_unref (connection); +} + +static void +test_write_intlike_ssid (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + NMSettingIP4Config *s_ip4; + char *uuid, *testfile = NULL; + GByteArray *ssid; + unsigned char tmpssid[] = { 49, 48, 49 }; + gboolean success; + NMConnection *reread; + GError *error = NULL; + pid_t owner_grp; + uid_t owner_uid; + GKeyFile *keyfile; + char *tmp; + + connection = nm_connection_new (); + g_assert (connection); + + /* Connection setting */ + + s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); + g_assert (s_con); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Intlike SSID Test", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + + /* Wireless setting */ + s_wifi = NM_SETTING_WIRELESS (nm_setting_wireless_new ()); + g_assert (s_wifi); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (sizeof (tmpssid)); + g_byte_array_append (ssid, &tmpssid[0], sizeof (tmpssid)); + g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NULL); + g_byte_array_free (ssid, TRUE); + + /* IP4 setting */ + s_ip4 = NM_SETTING_IP4_CONFIG (nm_setting_ip4_config_new ()); + g_assert (s_ip4); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + + /* Write out the connection */ + owner_uid = geteuid (); + owner_grp = getegid (); + success = nm_keyfile_plugin_write_test_connection (connection, TEST_SCRATCH_DIR, owner_uid, owner_grp, &testfile, &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile != NULL); + + /* Ensure the SSID was written out as a plain "101" */ + keyfile = g_key_file_new (); + success = g_key_file_load_from_file (keyfile, testfile, 0, &error); + g_assert_no_error (error); + g_assert (success); + + tmp = g_key_file_get_string (keyfile, NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID, &error); + g_assert_no_error (error); + g_assert (tmp); + g_assert_cmpstr (tmp, ==, "101"); + + g_key_file_free (keyfile); + + /* Read the connection back in and compare it to the one we just wrote out */ + reread = nm_keyfile_plugin_connection_from_file (testfile, &error); + g_assert_no_error (error); + g_assert (reread); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + g_clear_error (&error); + unlink (testfile); + g_free (testfile); + + g_object_unref (reread); + g_object_unref (connection); +} + +static void +test_write_intlike_ssid_2 (void) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWireless *s_wifi; + NMSettingIP4Config *s_ip4; + char *uuid, *testfile = NULL; + GByteArray *ssid; + unsigned char tmpssid[] = { 49, 49, 59, 49, 50, 59, 49, 51, 59}; + gboolean success; + NMConnection *reread; + GError *error = NULL; + pid_t owner_grp; + uid_t owner_uid; + GKeyFile *keyfile; + char *tmp; + + connection = nm_connection_new (); + g_assert (connection); + + /* Connection setting */ + + s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); + g_assert (s_con); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + uuid = nm_utils_uuid_generate (); + g_object_set (s_con, + NM_SETTING_CONNECTION_ID, "Intlike SSID Test 2", + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_TYPE, NM_SETTING_WIRELESS_SETTING_NAME, + NULL); + g_free (uuid); + + /* Wireless setting */ + s_wifi = NM_SETTING_WIRELESS (nm_setting_wireless_new ()); + g_assert (s_wifi); + nm_connection_add_setting (connection, NM_SETTING (s_wifi)); + + ssid = g_byte_array_sized_new (sizeof (tmpssid)); + g_byte_array_append (ssid, &tmpssid[0], sizeof (tmpssid)); + g_object_set (s_wifi, NM_SETTING_WIRELESS_SSID, ssid, NULL); + g_byte_array_free (ssid, TRUE); + + /* IP4 setting */ + s_ip4 = NM_SETTING_IP4_CONFIG (nm_setting_ip4_config_new ()); + g_assert (s_ip4); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + g_object_set (s_ip4, NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, NULL); + + /* Write out the connection */ + owner_uid = geteuid (); + owner_grp = getegid (); + success = nm_keyfile_plugin_write_test_connection (connection, TEST_SCRATCH_DIR, owner_uid, owner_grp, &testfile, &error); + g_assert_no_error (error); + g_assert (success); + g_assert (testfile != NULL); + + /* Ensure the SSID was written out as a plain "11;12;13;" */ + keyfile = g_key_file_new (); + success = g_key_file_load_from_file (keyfile, testfile, 0, &error); + g_assert_no_error (error); + g_assert (success); + + tmp = g_key_file_get_string (keyfile, NM_SETTING_WIRELESS_SETTING_NAME, NM_SETTING_WIRELESS_SSID, &error); + g_assert_no_error (error); + g_assert (tmp); + g_assert_cmpstr (tmp, ==, "11\\;12\\;13\\;"); + + g_key_file_free (keyfile); + + /* Read the connection back in and compare it to the one we just wrote out */ + reread = nm_keyfile_plugin_connection_from_file (testfile, &error); + g_assert_no_error (error); + g_assert (reread); + + success = nm_connection_compare (connection, reread, NM_SETTING_COMPARE_FLAG_EXACT); + g_assert (success); + + g_clear_error (&error); + unlink (testfile); + g_free (testfile); + + g_object_unref (reread); + g_object_unref (connection); +} + #define TEST_BT_DUN_FILE TEST_KEYFILES_DIR"/ATT_Data_Connect_BT" static void @@ -2616,6 +2856,12 @@ int main (int argc, char **argv) test_read_intlist_ssid (); test_write_intlist_ssid (); + test_read_intlike_ssid (); + test_write_intlike_ssid (); + + test_read_intlike_ssid_2 (); + test_write_intlike_ssid_2 (); + test_read_bt_dun_connection (); test_write_bt_dun_connection (); diff --git a/src/settings/plugins/keyfile/writer.c b/src/settings/plugins/keyfile/writer.c index 060093ce..db43b233 100644 --- a/src/settings/plugins/keyfile/writer.c +++ b/src/settings/plugins/keyfile/writer.c @@ -44,6 +44,7 @@ #include <ctype.h> #include "nm-dbus-glib-types.h" +#include "nm-glib-compat.h" #include "writer.h" #include "common.h" @@ -483,6 +484,7 @@ ssid_writer (GKeyFile *file, GByteArray *array; const char *setting_name = nm_setting_get_name (setting); gboolean new_format = TRUE; + unsigned int semicolons = 0; int i, *tmp_array; char *ssid; @@ -501,11 +503,24 @@ ssid_writer (GKeyFile *file, new_format = FALSE; break; } + if (c == ';') + semicolons++; } if (new_format) { - ssid = g_malloc0 (array->len + 1); - memcpy (ssid, array->data, array->len); + ssid = g_malloc0 (array->len + semicolons + 1); + if (semicolons == 0) + memcpy (ssid, array->data, array->len); + else { + /* Escape semicolons with backslashes to make strings + * containing ';', such as '16;17;' unambiguous */ + int j = 0; + for (i = 0; i < array->len; i++) { + if (array->data[i] == ';') + ssid[j++] = '\\'; + ssid[j++] = array->data[i]; + } + } g_key_file_set_string (file, setting_name, key, ssid); g_free (ssid); } else { @@ -876,7 +891,7 @@ write_setting_value (NMSetting *setting, } else if (type == G_TYPE_BOOLEAN) { g_key_file_set_boolean (info->keyfile, setting_name, key, g_value_get_boolean (value)); } else if (type == G_TYPE_CHAR) { - g_key_file_set_integer (info->keyfile, setting_name, key, (int) g_value_get_char (value)); + g_key_file_set_integer (info->keyfile, setting_name, key, (int) g_value_get_schar (value)); } else if (type == DBUS_TYPE_G_UCHAR_ARRAY) { GByteArray *array; @@ -993,15 +1008,27 @@ _internal_write_connection (NMConnection *connection, path = g_strdup_printf ("%s/%s-%s", keyfile_dir, filename, nm_connection_get_uuid (connection)); if (g_file_test (path, G_FILE_TEST_EXISTS)) { - /* Hmm, this is odd. Give up. */ - g_set_error (error, KEYFILE_PLUGIN_ERROR, 0, - "%s.%d: could not find suitable keyfile file name (%s already used)", - __FILE__, __LINE__, path); - g_free (path); - goto out; + if (existing_path == NULL || g_strcmp0 (path, existing_path) != 0) { + /* This should not happen. But, it actually occurs when + * two connections have the same UUID, and one of the connections + * is edited to contain the same ID as the other one. + * Give up. + */ + g_set_error (error, KEYFILE_PLUGIN_ERROR, 0, + "%s.%d: could not find suitable keyfile file name (%s already used)", + __FILE__, __LINE__, path); + g_free (path); + goto out; + } } } + /* In case of updating the connection and changing the file path, + * we need to remove the old one, not to end up with two connections. + */ + if (existing_path != NULL && strcmp (path, existing_path) != 0) + unlink (existing_path); + g_file_set_contents (path, data, len, error); if (chown (path, owner_uid, owner_grp) < 0) { g_set_error (error, KEYFILE_PLUGIN_ERROR, 0, diff --git a/src/settings/tests/Makefile.in b/src/settings/tests/Makefile.in index 33c4bd38..94ae4830 100644 --- a/src/settings/tests/Makefile.in +++ b/src/settings/tests/Makefile.in @@ -188,8 +188,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/supplicant-manager/Makefile.in b/src/supplicant-manager/Makefile.in index 729917d3..3a9c43f4 100644 --- a/src/supplicant-manager/Makefile.in +++ b/src/supplicant-manager/Makefile.in @@ -229,8 +229,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/supplicant-manager/nm-supplicant-config.c b/src/supplicant-manager/nm-supplicant-config.c index c651e0fa..4860314b 100644 --- a/src/supplicant-manager/nm-supplicant-config.c +++ b/src/supplicant-manager/nm-supplicant-config.c @@ -123,7 +123,7 @@ nm_supplicant_config_add_option_with_type (NMSupplicantConfig *self, char buf[255]; memset (&buf[0], 0, sizeof (buf)); memcpy (&buf[0], value, len > 254 ? 254 : len); - nm_log_warn (LOGD_SUPPLICANT, "Key '%s' and/or value '%s' invalid.", key, buf); + nm_log_warn (LOGD_SUPPLICANT, "Key '%s' and/or value '%s' invalid.", key, secret ? "<omitted>" : buf); return FALSE; } } diff --git a/src/supplicant-manager/nm-supplicant-manager.c b/src/supplicant-manager/nm-supplicant-manager.c index 8209da21..349f722a 100644 --- a/src/supplicant-manager/nm-supplicant-manager.c +++ b/src/supplicant-manager/nm-supplicant-manager.c @@ -45,8 +45,10 @@ typedef struct { NMDBusManager * dbus_mgr; guint name_owner_id; DBusGProxy * proxy; + DBusGProxy * props_proxy; gboolean running; GHashTable * ifaces; + gboolean fast_supported; guint die_count_reset_id; guint die_count; gboolean disposed; @@ -122,6 +124,56 @@ nm_supplicant_manager_iface_release (NMSupplicantManager *self, g_hash_table_remove (priv->ifaces, ifname); } +static void +get_eap_methods_reply (DBusGProxy *proxy, + DBusGProxyCall *call, + gpointer user_data) +{ + NMSupplicantManager *self = NM_SUPPLICANT_MANAGER (user_data); + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + GError *error = NULL; + GValue value = { 0 }; + const char **iter; + + if (dbus_g_proxy_end_call (proxy, call, &error, + G_TYPE_VALUE, &value, + G_TYPE_INVALID)) { + if (G_VALUE_HOLDS (&value, G_TYPE_STRV)) { + iter = g_value_get_boxed (&value); + while (iter && *iter) { + if (strcasecmp (*iter++, "FAST") == 0) { + priv->fast_supported = TRUE; + break; + } + } + } else { + nm_log_warn (LOGD_SUPPLICANT, "Unexpected EapMethods property type %s", + G_VALUE_TYPE_NAME (&value)); + } + g_value_unset (&value); + } else { + nm_log_warn (LOGD_SUPPLICANT, "Unexpected error requesting EapMethods: (%d) %s", + error ? error->code : -1, + error && error->message ? error->message : "(unknown)"); + g_clear_error (&error); + } + + nm_log_dbg (LOGD_SUPPLICANT, "EAP-FAST is %ssupported", + priv->fast_supported ? "" : "not "); +} + +static void +check_supported_eap_methods (NMSupplicantManager *self) +{ + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + + dbus_g_proxy_begin_call (priv->props_proxy, "Get", + get_eap_methods_reply, self, NULL, + G_TYPE_STRING, WPAS_DBUS_INTERFACE, + G_TYPE_STRING, "EapMethods", + G_TYPE_INVALID); +} + gboolean nm_supplicant_manager_available (NMSupplicantManager *self) { @@ -187,6 +239,7 @@ name_owner_changed (NMDBusManager *dbus_mgr, if (!old_owner_good && new_owner_good) { nm_log_info (LOGD_SUPPLICANT, "wpa_supplicant started"); set_running (self, TRUE); + check_supported_eap_methods (self); } else if (old_owner_good && !new_owner_good) { nm_log_info (LOGD_SUPPLICANT, "wpa_supplicant stopped"); @@ -207,6 +260,8 @@ name_owner_changed (NMDBusManager *dbus_mgr, } set_running (self, FALSE); + + priv->fast_supported = FALSE; } } @@ -227,7 +282,7 @@ nm_supplicant_manager_get (void) } static void -nm_supplicant_manager_init (NMSupplicantManager * self) +nm_supplicant_manager_init (NMSupplicantManager *self) { NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); DBusGConnection *bus; @@ -245,7 +300,16 @@ nm_supplicant_manager_init (NMSupplicantManager * self) WPAS_DBUS_PATH, WPAS_DBUS_INTERFACE); + priv->props_proxy = dbus_g_proxy_new_for_name (bus, + WPAS_DBUS_SERVICE, + WPAS_DBUS_PATH, + DBUS_INTERFACE_PROPERTIES); + priv->ifaces = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + + /* Grab list of supported EAP methods */ + if (priv->running) + check_supported_eap_methods (self); } static void @@ -290,6 +354,9 @@ dispose (GObject *object) if (priv->proxy) g_object_unref (priv->proxy); + if (priv->props_proxy) + g_object_unref (priv->props_proxy); + out: /* Chain up to the parent class */ G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object); diff --git a/src/supplicant-manager/tests/Makefile.in b/src/supplicant-manager/tests/Makefile.in index 18288c6e..e0fa89e6 100644 --- a/src/supplicant-manager/tests/Makefile.in +++ b/src/supplicant-manager/tests/Makefile.in @@ -188,8 +188,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in index 0f19b712..a60ca43f 100644 --- a/src/tests/Makefile.in +++ b/src/tests/Makefile.in @@ -205,8 +205,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/vpn-manager/Makefile.in b/src/vpn-manager/Makefile.in index 3785667e..8999e831 100644 --- a/src/vpn-manager/Makefile.in +++ b/src/vpn-manager/Makefile.in @@ -190,8 +190,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/vpn-manager/nm-vpn-connection-base.c b/src/vpn-manager/nm-vpn-connection-base.c index c7373627..bc2cffb2 100644 --- a/src/vpn-manager/nm-vpn-connection-base.c +++ b/src/vpn-manager/nm-vpn-connection-base.c @@ -36,6 +36,7 @@ typedef struct { NMConnection *connection; char *ac_path; + char *specific_object; gboolean is_default; gboolean is_default6; NMActiveConnectionState state; @@ -91,9 +92,16 @@ nm_vpn_connection_base_get_ac_path (NMVpnConnectionBase *self) return NM_VPN_CONNECTION_BASE_GET_PRIVATE (self)->ac_path; } +const char * +nm_vpn_connection_base_get_specific_object (NMVpnConnectionBase *self) +{ + return NM_VPN_CONNECTION_BASE_GET_PRIVATE (self)->specific_object; +} + void nm_vpn_connection_base_export (NMVpnConnectionBase *self, - NMConnection *connection) + NMConnection *connection, + const char *specific_object) { NMVpnConnectionBasePrivate *priv = NM_VPN_CONNECTION_BASE_GET_PRIVATE (self); NMDBusManager *dbus_mgr; @@ -101,6 +109,7 @@ nm_vpn_connection_base_export (NMVpnConnectionBase *self, g_return_if_fail (priv->connection == NULL); priv->connection = g_object_ref (connection); + priv->specific_object = g_strdup (specific_object); dbus_mgr = nm_dbus_manager_get (); dbus_g_connection_register_g_object (nm_dbus_manager_get_connection (dbus_mgr), @@ -128,6 +137,7 @@ dispose (GObject *object) priv->disposed = TRUE; g_free (priv->ac_path); + g_free (priv->specific_object); g_object_unref (priv->connection); } @@ -145,10 +155,10 @@ get_property (GObject *object, guint prop_id, g_value_set_boxed (value, nm_connection_get_path (priv->connection)); break; case PROP_UUID: - g_value_set_boxed (value, nm_connection_get_uuid (priv->connection)); + g_value_set_string (value, nm_connection_get_uuid (priv->connection)); break; case PROP_SPECIFIC_OBJECT: - g_value_set_boxed (value, priv->ac_path); + g_value_set_boxed (value, priv->specific_object); break; case PROP_DEVICES: g_value_take_boxed (value, g_ptr_array_new ()); diff --git a/src/vpn-manager/nm-vpn-connection-base.h b/src/vpn-manager/nm-vpn-connection-base.h index 0c17d9e8..6f19e7c5 100644 --- a/src/vpn-manager/nm-vpn-connection-base.h +++ b/src/vpn-manager/nm-vpn-connection-base.h @@ -44,8 +44,11 @@ GType nm_vpn_connection_base_get_type (void); const char *nm_vpn_connection_base_get_ac_path (NMVpnConnectionBase *self); +const char *nm_vpn_connection_base_get_specific_object (NMVpnConnectionBase *self); + void nm_vpn_connection_base_export (NMVpnConnectionBase *self, - NMConnection *connection); + NMConnection *connection, + const char *specific_object); void nm_vpn_connection_base_set_state (NMVpnConnectionBase *self, NMVPNConnectionState vpn_state); diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c index 067b2dce..73f2b553 100644 --- a/src/vpn-manager/nm-vpn-connection.c +++ b/src/vpn-manager/nm-vpn-connection.c @@ -46,6 +46,7 @@ #include "NetworkManagerUtils.h" #include "nm-dns-manager.h" #include "nm-netlink-monitor.h" +#include "nm-netlink-utils.h" #include "nm-glib-compat.h" #include "settings/nm-settings-connection.h" @@ -86,6 +87,7 @@ typedef struct { NMIP4Config *ip4_config; guint32 ip4_internal_gw; char *ip_iface; + int ip_ifindex; char *banner; struct rtnl_route *gw_route; @@ -219,6 +221,7 @@ device_ip4_config_changed (NMDevice *device, NMVPNConnection * nm_vpn_connection_new (NMConnection *connection, NMDevice *parent_device, + const char *specific_object, gboolean user_requested, gulong user_uid) { @@ -247,7 +250,7 @@ nm_vpn_connection_new (NMConnection *connection, G_CALLBACK (device_ip4_config_changed), self); - nm_vpn_connection_base_export (NM_VPN_CONNECTION_BASE (self), connection); + nm_vpn_connection_base_export (NM_VPN_CONNECTION_BASE (self), connection, specific_object); return self; } @@ -283,6 +286,28 @@ plugin_failed (DBusGProxy *proxy, } } +static const char * +vpn_state_to_string (NMVPNServiceState state) +{ + switch (state) { + case NM_VPN_SERVICE_STATE_INIT: + return "init"; + case NM_VPN_SERVICE_STATE_SHUTDOWN: + return "shutdown"; + case NM_VPN_SERVICE_STATE_STARTING: + return "starting"; + case NM_VPN_SERVICE_STATE_STARTED: + return "started"; + case NM_VPN_SERVICE_STATE_STOPPING: + return "stopping"; + case NM_VPN_SERVICE_STATE_STOPPED: + return "stopped"; + default: + break; + } + return "unknown"; +} + static void plugin_state_changed (DBusGProxy *proxy, NMVPNServiceState state, @@ -291,7 +316,8 @@ plugin_state_changed (DBusGProxy *proxy, NMVPNConnection *connection = NM_VPN_CONNECTION (user_data); NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection); - nm_log_info (LOGD_VPN, "VPN plugin state changed: %d", state); + nm_log_info (LOGD_VPN, "VPN plugin state changed: %s (%d)", + vpn_state_to_string (state), state); if (state == NM_VPN_SERVICE_STATE_STOPPED) { /* Clear connection secrets to ensure secrets get requested each time the @@ -424,6 +450,13 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy, goto error; } + /* Grab the interface index for address/routing operations */ + priv->ip_ifindex = nm_netlink_iface_to_index (priv->ip_iface); + if (!priv->ip_ifindex) { + nm_log_err (LOGD_VPN, "(%s): failed to look up VPN interface index", priv->ip_iface); + goto error; + } + addr = nm_ip4_address_new (); nm_ip4_address_set_prefix (addr, 24); /* default to class C */ @@ -529,9 +562,9 @@ nm_vpn_connection_ip4_config_get (DBusGProxy *proxy, s_ip4 = NM_SETTING_IP4_CONFIG (nm_connection_get_setting (priv->connection, NM_TYPE_SETTING_IP4_CONFIG)); nm_utils_merge_ip4_config (config, s_ip4); - nm_system_device_set_up_down_with_iface (priv->ip_iface, TRUE, NULL); + nm_system_iface_set_up (priv->ip_ifindex, TRUE, NULL); - if (nm_system_apply_ip4_config (priv->ip_iface, config, 0, NM_IP4_COMPARE_FLAG_ALL)) { + if (nm_system_apply_ip4_config (priv->ip_ifindex, config, 0, NM_IP4_COMPARE_FLAG_ALL)) { NMDnsManager *dns_mgr; /* Add any explicit route to the VPN gateway through the parent device */ @@ -765,6 +798,14 @@ nm_vpn_connection_get_ip_iface (NMVPNConnection *connection) return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip_iface; } +int +nm_vpn_connection_get_ip_ifindex (NMVPNConnection *connection) +{ + g_return_val_if_fail (NM_IS_VPN_CONNECTION (connection), -1); + + return NM_VPN_CONNECTION_GET_PRIVATE (connection)->ip_ifindex; +} + NMDevice * nm_vpn_connection_get_parent_device (NMVPNConnection *connection) { @@ -940,11 +981,11 @@ vpn_cleanup (NMVPNConnection *connection) { NMVPNConnectionPrivate *priv = NM_VPN_CONNECTION_GET_PRIVATE (connection); - if (priv->ip_iface) { - nm_system_device_set_up_down_with_iface (priv->ip_iface, FALSE, NULL); + if (priv->ip_ifindex) { + nm_system_iface_set_up (priv->ip_ifindex, FALSE, NULL); /* FIXME: use AF_UNSPEC here when we have IPv6 support */ - nm_system_device_flush_routes_with_iface (priv->ip_iface, AF_INET); - nm_system_device_flush_addresses_with_iface (priv->ip_iface); + nm_system_iface_flush_routes (priv->ip_ifindex, AF_INET); + nm_system_iface_flush_addresses (priv->ip_ifindex, AF_UNSPEC); } if (priv->ip4_config) { @@ -958,12 +999,12 @@ vpn_cleanup (NMVPNConnection *connection) /* Remove any previously added VPN gateway host route */ if (priv->gw_route) - rtnl_route_del (nm_netlink_get_default_handle (), priv->gw_route, 0); + nm_netlink_route_delete (priv->gw_route); /* Reset routes and addresses of the currently active device */ parent_config = nm_device_get_ip4_config (priv->parent_dev); if (parent_config) { - if (!nm_system_apply_ip4_config (nm_device_get_ip_iface (priv->parent_dev), + if (!nm_system_apply_ip4_config (nm_device_get_ip_ifindex (priv->parent_dev), nm_device_get_ip4_config (priv->parent_dev), nm_device_get_priority (priv->parent_dev), NM_IP4_COMPARE_FLAG_ADDRESSES | NM_IP4_COMPARE_FLAG_ROUTES)) { @@ -982,6 +1023,7 @@ vpn_cleanup (NMVPNConnection *connection) g_free (priv->ip_iface); priv->ip_iface = NULL; + priv->ip_ifindex = 0; /* Clear out connection secrets to ensure that the settings service * gets asked for them next time the connection is activated. diff --git a/src/vpn-manager/nm-vpn-connection.h b/src/vpn-manager/nm-vpn-connection.h index ee8eb5b6..c0d15f8a 100644 --- a/src/vpn-manager/nm-vpn-connection.h +++ b/src/vpn-manager/nm-vpn-connection.h @@ -57,12 +57,14 @@ GType nm_vpn_connection_get_type (void); NMVPNConnection * nm_vpn_connection_new (NMConnection *connection, NMDevice *parent_device, + const char *specific_object, gboolean user_requested, gulong user_uid); void nm_vpn_connection_activate (NMVPNConnection *connection); NMConnection * nm_vpn_connection_get_connection (NMVPNConnection *connection); const char * nm_vpn_connection_get_active_connection_path (NMVPNConnection *connection); +const char * nm_vpn_connection_get_specific_object_path (NMVPNConnection *connection); const char * nm_vpn_connection_get_name (NMVPNConnection *connection); NMVPNConnectionState nm_vpn_connection_get_vpn_state (NMVPNConnection *connection); const char * nm_vpn_connection_get_banner (NMVPNConnection *connection); @@ -72,6 +74,7 @@ void nm_vpn_connection_disconnect (NMVPNConnection *connect NMVPNConnectionStateReason reason); NMIP4Config * nm_vpn_connection_get_ip4_config (NMVPNConnection *connection); const char * nm_vpn_connection_get_ip_iface (NMVPNConnection *connection); +int nm_vpn_connection_get_ip_ifindex (NMVPNConnection *connection); NMDevice * nm_vpn_connection_get_parent_device (NMVPNConnection *connection); guint32 nm_vpn_connection_get_ip4_internal_gateway (NMVPNConnection *connection); diff --git a/src/vpn-manager/nm-vpn-manager.c b/src/vpn-manager/nm-vpn-manager.c index 6772bb18..41e96c0b 100644 --- a/src/vpn-manager/nm-vpn-manager.c +++ b/src/vpn-manager/nm-vpn-manager.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) 2005 - 2010 Red Hat, Inc. + * Copyright (C) 2005 - 2011 Red Hat, Inc. * Copyright (C) 2006 - 2008 Novell, Inc. */ @@ -162,6 +162,7 @@ NMVPNConnection * nm_vpn_manager_activate_connection (NMVPNManager *manager, NMConnection *connection, NMDevice *device, + const char *specific_object, gboolean user_requested, gulong user_uid, GError **error) @@ -209,7 +210,7 @@ nm_vpn_manager_activate_connection (NMVPNManager *manager, return NULL; } - vpn = nm_vpn_service_activate (service, connection, device, user_requested, user_uid, error); + vpn = nm_vpn_service_activate (service, connection, device, specific_object, user_requested, user_uid, error); if (vpn) { g_signal_connect (vpn, "vpn-state-changed", G_CALLBACK (connection_vpn_state_changed), @@ -306,9 +307,9 @@ nm_vpn_manager_get_active_connections (NMVPNManager *self) return list; } -NMConnection * -nm_vpn_manager_get_connection_for_active (NMVPNManager *manager, - const char *active_path) +NMVPNConnection * +nm_vpn_manager_get_vpn_connection_for_active (NMVPNManager *manager, + const char *active_path) { NMVPNManagerPrivate *priv; GHashTableIter iter; @@ -327,13 +328,24 @@ nm_vpn_manager_get_connection_for_active (NMVPNManager *manager, ac_path = nm_vpn_connection_get_active_connection_path (vpn); if (ac_path && !strcmp (ac_path, active_path)) - return nm_vpn_connection_get_connection (vpn); + return vpn; } } return NULL; } +NMConnection * +nm_vpn_manager_get_connection_for_active (NMVPNManager *manager, + const char *active_path) +{ + NMVPNConnection *vpn_con; + + vpn_con = nm_vpn_manager_get_vpn_connection_for_active (manager, active_path); + + return vpn_con ? nm_vpn_connection_get_connection (vpn_con) : NULL; +} + static char * service_name_from_file (const char *path) { diff --git a/src/vpn-manager/nm-vpn-manager.h b/src/vpn-manager/nm-vpn-manager.h index a899122c..78a5220b 100644 --- a/src/vpn-manager/nm-vpn-manager.h +++ b/src/vpn-manager/nm-vpn-manager.h @@ -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) 2005 - 2008 Red Hat, Inc. + * Copyright (C) 2005 - 2011 Red Hat, Inc. * Copyright (C) 2006 - 2008 Novell, Inc. */ @@ -69,6 +69,7 @@ NMVPNManager *nm_vpn_manager_get (void); NMVPNConnection *nm_vpn_manager_activate_connection (NMVPNManager *manager, NMConnection *connection, NMDevice *device, + const char *specific_object, gboolean user_requested, gulong user_uid, GError **error); @@ -83,7 +84,10 @@ void nm_vpn_manager_add_active_connections (NMVPNManager *manager, GSList *nm_vpn_manager_get_active_connections (NMVPNManager *manager); +NMVPNConnection *nm_vpn_manager_get_vpn_connection_for_active (NMVPNManager *manager, + const char *active_path); + NMConnection *nm_vpn_manager_get_connection_for_active (NMVPNManager *manager, const char *active_path); -#endif /* NM_VPN_VPN_MANAGER_H */ +#endif /* NM_VPN_MANAGER_H */ diff --git a/src/vpn-manager/nm-vpn-service.c b/src/vpn-manager/nm-vpn-service.c index ed08a40a..95e4f2b1 100644 --- a/src/vpn-manager/nm-vpn-service.c +++ b/src/vpn-manager/nm-vpn-service.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) 2005 - 2010 Red Hat, Inc. + * Copyright (C) 2005 - 2011 Red Hat, Inc. * Copyright (C) 2005 - 2008 Novell, Inc. */ @@ -324,6 +324,7 @@ NMVPNConnection * nm_vpn_service_activate (NMVPNService *service, NMConnection *connection, NMDevice *device, + const char *specific_object, gboolean user_requested, gulong user_uid, GError **error) @@ -341,7 +342,7 @@ nm_vpn_service_activate (NMVPNService *service, clear_quit_timeout (service); - vpn = nm_vpn_connection_new (connection, device, user_requested, user_uid); + vpn = nm_vpn_connection_new (connection, device, specific_object, user_requested, user_uid); g_signal_connect (vpn, "vpn-state-changed", G_CALLBACK (connection_vpn_state_changed), service); diff --git a/src/vpn-manager/nm-vpn-service.h b/src/vpn-manager/nm-vpn-service.h index cbe394ca..e8b1cfc4 100644 --- a/src/vpn-manager/nm-vpn-service.h +++ b/src/vpn-manager/nm-vpn-service.h @@ -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) 2005 - 2008 Red Hat, Inc. + * Copyright (C) 2005 - 2011 Red Hat, Inc. * Copyright (C) 2005 - 2008 Novell, Inc. */ @@ -57,6 +57,7 @@ const char *nm_vpn_service_get_name_file (NMVPNService *service); NMVPNConnection * nm_vpn_service_activate (NMVPNService *service, NMConnection *connection, NMDevice *device, + const char *specific_object, gboolean user_requested, gulong user_uid, GError **error); diff --git a/src/wimax/Makefile.in b/src/wimax/Makefile.in index e6064bc6..1be78482 100644 --- a/src/wimax/Makefile.in +++ b/src/wimax/Makefile.in @@ -186,8 +186,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/src/wimax/iwmxsdk.c b/src/wimax/iwmxsdk.c index dd78d5a4..9c3a78bb 100644 --- a/src/wimax/iwmxsdk.c +++ b/src/wimax/iwmxsdk.c @@ -27,7 +27,8 @@ #include <stdlib.h> #include <errno.h> #include <string.h> -#include <net/if.h> +#include <sys/socket.h> +#include <linux/if.h> #include <glib.h> @@ -190,6 +191,7 @@ typedef struct { WIMAX_API_DEVICE_STATUS new_status; WIMAX_API_DEVICE_STATUS old_status; WIMAX_API_STATUS_REASON reason; + WIMAX_API_CONNECTION_PROGRESS_INFO progress; } StateChangeInfo; static gboolean @@ -202,6 +204,7 @@ state_change_handler(gpointer user_data) info->new_status, info->old_status, info->reason, + info->progress, info->wmxsdk->callback_data); } wmxsdk_unref(info->wmxsdk); @@ -214,7 +217,8 @@ static void _schedule_state_change(struct wmxsdk *wmxsdk, WIMAX_API_DEVICE_STATUS new_status, WIMAX_API_DEVICE_STATUS old_status, - WIMAX_API_STATUS_REASON reason) + WIMAX_API_STATUS_REASON reason, + WIMAX_API_CONNECTION_PROGRESS_INFO progress) { StateChangeInfo *info; @@ -227,6 +231,7 @@ _schedule_state_change(struct wmxsdk *wmxsdk, info->new_status = new_status; info->old_status = old_status; info->reason = reason; + info->progress = progress; wmxsdk_ref(wmxsdk); g_idle_add(state_change_handler, info); @@ -476,6 +481,48 @@ const char *iwmx_sdk_media_status_to_str(WIMAX_API_MEDIA_STATUS status) } } +const char * +iwmx_sdk_con_progress_to_str(WIMAX_API_CONNECTION_PROGRESS_INFO progress) +{ + switch (progress) { + + /**< Device is in Ranging */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_Ranging: + return "ranging"; + + /**< Device is in SBC */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_SBC: + return "sbc"; + + /**< Device is in EAP authentication Device */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_EAP_authentication_Device: + return "eap-auth-device"; + + /**< Device is in EAP authentication User */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_EAP_authentication_User: + return "eap-auth-user"; + + /**< Device is in 3-way-handshake */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_3_way_handshake: + return "3way-handshake"; + + /**< Device is in Registration */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_Registration: + return "registration"; + + /**< Device is in De-registration */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_De_registration: + return "deregistration"; + + /**< Device is registered (operational) */ + case WIMAX_API_DEVICE_CONNECTION_PROGRESS_Registered: + return "registered"; + + default: + return "unknown"; + } +} + /* * Get the device's status from the device * @@ -982,7 +1029,7 @@ static void __iwmx_sdk_state_change_cb(WIMAX_API_DEVICE_ID *device_id, wmxsdk->status = status; g_mutex_unlock(wmxsdk->status_mutex); - _schedule_state_change(wmxsdk, status, old_status, reason); + _schedule_state_change(wmxsdk, status, old_status, reason, pi); } /* @@ -1170,7 +1217,8 @@ static int iwmx_sdk_setup(struct wmxsdk *wmxsdk) _schedule_state_change(wmxsdk, status, WIMAX_API_DEVICE_STATUS_UnInitialized, - WIMAX_API_STATUS_REASON_Normal); + WIMAX_API_STATUS_REASON_Normal, + WIMAX_API_DEVICE_CONNECTION_PROGRESS_Ranging); return 0; @@ -1268,23 +1316,22 @@ void wmxsdk_unref(struct wmxsdk *wmxsdk) static void iwmx_sdk_dev_add(unsigned idx, unsigned api_idx, const char *name) { - int ifindex; struct wmxsdk *wmxsdk; const char *s; if (idx >= IWMX_SDK_DEV_MAX) { nm_log_err(LOGD_WIMAX, "BUG! idx (%u) >= IWMX_SDK_DEV_MAX (%u)", idx, IWMX_SDK_DEV_MAX); - goto error_bug; + return; } if (g_iwmx_sdk_devs[idx] != NULL) { nm_log_err(LOGD_WIMAX, "BUG! device index %u already enumerated?", idx); - goto error_bug; + return; } wmxsdk = wmxsdk_new(); if (wmxsdk == NULL) { nm_log_err(LOGD_WIMAX, "Can't allocate %zu bytes", sizeof(*wmxsdk)); - goto error_bug; + return; } /* @@ -1297,23 +1344,17 @@ static void iwmx_sdk_dev_add(unsigned idx, unsigned api_idx, const char *name) || sscanf(s, "if:%15[^ \f\n\r\t\v]", wmxsdk->ifname) != 1) { nm_log_err(LOGD_WIMAX, "Cannot extract network interface name off '%s'", name); - goto error_noifname; + goto error; } nm_log_dbg(LOGD_WIMAX, "network interface name: '%s'", wmxsdk->ifname); - ifindex = if_nametoindex(wmxsdk->ifname); - if (ifindex <= 0) { - nm_log_err(LOGD_WIMAX, "wxmsdk: %s: cannot find interface index", wmxsdk->ifname); - goto error_noifname; - } - strncpy(wmxsdk->name, name, sizeof(wmxsdk->name)); wmxsdk->device_id.privilege = WIMAX_API_PRIVILEGE_READ_WRITE; wmxsdk->device_id.deviceIndex = api_idx; if (iwmx_sdk_setup(wmxsdk) != 0) { nm_log_err(LOGD_WIMAX, "wxmsdk: %s: cannot set up interface", wmxsdk->ifname); - goto error_setup; + goto error; } g_iwmx_sdk_devs[idx] = wmxsdk; @@ -1322,10 +1363,8 @@ static void iwmx_sdk_dev_add(unsigned idx, unsigned api_idx, const char *name) iwmx_sdk_call_new_callbacks (wmxsdk); return; -error_setup: -error_noifname: +error: wmxsdk_unref(wmxsdk); -error_bug: return; } diff --git a/src/wimax/iwmxsdk.h b/src/wimax/iwmxsdk.h index bd55679a..1888b709 100644 --- a/src/wimax/iwmxsdk.h +++ b/src/wimax/iwmxsdk.h @@ -34,6 +34,7 @@ typedef void (*WimaxStateChangeFunc) (struct wmxsdk *wmxsdk, WIMAX_API_DEVICE_STATUS new_status, WIMAX_API_DEVICE_STATUS old_status, WIMAX_API_STATUS_REASON reason, + WIMAX_API_CONNECTION_PROGRESS_INFO info, void *user_data); typedef void (*WimaxMediaStatusFunc) (struct wmxsdk *wmxsdk, @@ -101,6 +102,7 @@ WIMAX_API_LINK_STATUS_INFO_EX *iwmx_sdk_get_link_status_info(struct wmxsdk *wmxs const char *iwmx_sdk_dev_status_to_str(WIMAX_API_DEVICE_STATUS status); const char *iwmx_sdk_reason_to_str(WIMAX_API_STATUS_REASON reason); const char *iwmx_sdk_media_status_to_str(WIMAX_API_MEDIA_STATUS status); +const char *iwmx_sdk_con_progress_to_str(WIMAX_API_CONNECTION_PROGRESS_INFO progress); int iwmx_sdk_rf_state_set(struct wmxsdk *wmxsdk, WIMAX_API_RF_STATE rf_state); int iwmx_sdk_get_networks(struct wmxsdk *wmxsdk); int iwmx_sdk_api_init(void); diff --git a/src/wimax/nm-device-wimax.c b/src/wimax/nm-device-wimax.c index 9dff503d..2d8553a0 100644 --- a/src/wimax/nm-device-wimax.c +++ b/src/wimax/nm-device-wimax.c @@ -23,7 +23,8 @@ #include <unistd.h> #include <sys/ioctl.h> #include <net/ethernet.h> -#include <net/if.h> +#include <sys/socket.h> +#include <linux/if.h> #include <WiMaxAPI.h> #include <WiMaxAPIEx.h> @@ -91,6 +92,9 @@ typedef struct { struct ether_addr hw_addr; guint activation_timeout_id; + /* Track whether stage1 (Prepare) is completed yet or not */ + gboolean prepare_done; + guint sdk_action_defer_id; guint link_timeout_id; @@ -231,27 +235,25 @@ set_current_nsp (NMDeviceWimax *self, NMWimaxNsp *new_nsp) { NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); NMWimaxNsp *old_nsp; - char *old_path = NULL; + gboolean path_changed = FALSE; old_nsp = priv->current_nsp; - if (old_nsp) { - old_path = g_strdup (nm_wimax_nsp_get_dbus_path (old_nsp)); - priv->current_nsp = NULL; - } + priv->current_nsp = NULL; if (new_nsp) priv->current_nsp = g_object_ref (new_nsp); - if (old_nsp) - g_object_unref (old_nsp); + if (old_nsp && new_nsp) { + path_changed = (g_strcmp0 (nm_wimax_nsp_get_dbus_path (old_nsp), + nm_wimax_nsp_get_dbus_path (new_nsp)) != 0); + } /* Only notify if it's really changed */ - if ( (!old_path && new_nsp) - || (old_path && !new_nsp) - || (old_path && new_nsp && strcmp (old_path, nm_wimax_nsp_get_dbus_path (new_nsp)))) + if (old_nsp != new_nsp || path_changed) g_object_notify (G_OBJECT (self), NM_DEVICE_WIMAX_ACTIVE_NSP); - g_free (old_path); + if (old_nsp) + g_object_unref (old_nsp); } NMWimaxNsp * @@ -390,7 +392,7 @@ real_take_down (NMDevice *device) static gboolean real_hw_is_up (NMDevice *device) { - return nm_system_device_is_up (device); + return nm_system_iface_is_up (nm_device_get_ip_ifindex (device)); } static gboolean @@ -401,13 +403,13 @@ real_hw_bring_up (NMDevice *dev, gboolean *no_firmware) if (!priv->enabled || !priv->wimaxd_enabled) return FALSE; - return nm_system_device_set_up_down (dev, TRUE, no_firmware); + return nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), TRUE, no_firmware); } static void real_hw_take_down (NMDevice *dev) { - nm_system_device_set_up_down (dev, FALSE, NULL); + nm_system_iface_set_up (nm_device_get_ip_ifindex (dev), FALSE, NULL); } static void @@ -749,6 +751,8 @@ real_act_stage1_prepare (NMDevice *device, NMDeviceStateReason *reason) set_current_nsp (NM_DEVICE_WIMAX (device), nsp); + priv->prepare_done = TRUE; + /* If the device is scanning, it won't connect, so we have to wait until * it's not scanning to proceed to stage 2. */ @@ -853,6 +857,7 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, WIMAX_API_DEVICE_STATUS new_status, WIMAX_API_DEVICE_STATUS old_status, WIMAX_API_STATUS_REASON reason, + WIMAX_API_CONNECTION_PROGRESS_INFO progress, void *user_data) { NMDeviceWimax *self = NM_DEVICE_WIMAX (user_data); @@ -862,10 +867,17 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, gboolean old_available = FALSE; const char *nsp_name = NULL; + iface = nm_device_get_iface (NM_DEVICE (self)); + nm_log_info (LOGD_WIMAX, "(%s): wimax state change %s -> %s (%s (%d))", + iface, + iwmx_sdk_dev_status_to_str (old_status), + iwmx_sdk_dev_status_to_str (new_status), + iwmx_sdk_con_progress_to_str (progress), + progress); + if (new_status == old_status) return; - iface = nm_device_get_iface (NM_DEVICE (self)); state = nm_device_interface_get_state (NM_DEVICE_INTERFACE (self)); old_available = nm_device_is_available (NM_DEVICE (self)); @@ -873,12 +885,6 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, if (priv->current_nsp) nsp_name = nm_wimax_nsp_get_name (priv->current_nsp); - 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: case WIMAX_API_DEVICE_STATUS_RF_OFF_HW_SW: @@ -936,7 +942,7 @@ wmx_state_change_cb (struct wmxsdk *wmxsdk, * then check if we need to move to stage2 now that the device might be * ready. */ - if (state == NM_DEVICE_STATE_PREPARE) { + if (state == NM_DEVICE_STATE_PREPARE && priv->prepare_done) { 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)); @@ -1003,7 +1009,7 @@ wmx_media_status_cb (struct wmxsdk *wmxsdk, break; case WIMAX_API_MEDIA_STATUS_LINK_DOWN: nm_log_dbg (LOGD_WIMAX, "(%s): starting link timeout", iface); - priv->link_timeout_id = g_timeout_add (15, link_timeout_cb, self); + priv->link_timeout_id = g_timeout_add_seconds (15, link_timeout_cb, self); break; case WIMAX_API_MEDIA_STATUS_LINK_RENEW: nm_log_dbg (LOGD_WIMAX, "(%s): renewing DHCP lease", iface); @@ -1130,18 +1136,22 @@ wmx_removed_cb (struct wmxsdk *wmxsdk, void *user_data) NMDeviceWimax *self = NM_DEVICE_WIMAX (user_data); NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - if (priv->sdk) { - /* Clear callbacks just in case we don't hold the last reference */ - iwmx_sdk_set_callbacks (priv->sdk, NULL, NULL, NULL, NULL, NULL, NULL); + if (!priv->sdk) { + nm_log_dbg (LOGD_WIMAX, "(%s): removed unhandled WiMAX interface", wmxsdk->ifname); + return; + } - wmxsdk_unref (priv->sdk); - priv->sdk = NULL; + nm_log_dbg (LOGD_WIMAX, "(%s): removed WiMAX interface", wmxsdk->ifname); - priv->status = WIMAX_API_DEVICE_STATUS_UnInitialized; - nm_device_state_changed (NM_DEVICE (self), - NM_DEVICE_STATE_UNAVAILABLE, - NM_DEVICE_STATE_REASON_NONE); - } + /* Clear callbacks just in case we don't hold the last reference */ + iwmx_sdk_set_callbacks (priv->sdk, NULL, NULL, NULL, NULL, NULL, NULL); + wmxsdk_unref (priv->sdk); + priv->sdk = NULL; + + priv->status = WIMAX_API_DEVICE_STATUS_UnInitialized; + nm_device_state_changed (NM_DEVICE (self), + NM_DEVICE_STATE_UNAVAILABLE, + NM_DEVICE_STATE_REASON_NONE); } /*************************************************************************/ @@ -1277,6 +1287,9 @@ device_state_changed (NMDevice *device, NMDeviceWimax *self = NM_DEVICE_WIMAX (device); NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); + /* Reset our stage1 (Prepare) done marker since it's only valid while in stage1 */ + priv->prepare_done = FALSE; + if (new_state < NM_DEVICE_STATE_DISCONNECTED) remove_all_nsps (self); @@ -1323,21 +1336,27 @@ wmx_new_sdk_cb (struct wmxsdk *sdk, void *user_data) NMDeviceWimax *self = NM_DEVICE_WIMAX (user_data); NMDeviceWimaxPrivate *priv = NM_DEVICE_WIMAX_GET_PRIVATE (self); - /* If we now have the SDK, schedule an idle handler to start the device up */ - if (!priv->sdk) { - priv->sdk = wmxsdk_ref (sdk); - iwmx_sdk_set_callbacks(priv->sdk, - wmx_state_change_cb, - wmx_media_status_cb, - wmx_connect_result_cb, - wmx_scan_result_cb, - wmx_removed_cb, - self); - iwmx_sdk_set_fast_reconnect_enabled (priv->sdk, 0); - - if (!priv->sdk_action_defer_id) - priv->sdk_action_defer_id = g_idle_add (sdk_action_defer_cb, self); + /* We only track one wmxsdk at a time because the WiMAX SDK is pretty stupid */ + if (priv->sdk) { + nm_log_dbg (LOGD_WIMAX, "(%s): WiMAX interface already known", sdk->ifname); + return; } + + nm_log_dbg (LOGD_WIMAX, "(%s): new WiMAX interface (%s)", sdk->ifname, sdk->name); + + /* Now that we have an SDK, schedule an idle handler to start the device up */ + priv->sdk = wmxsdk_ref (sdk); + iwmx_sdk_set_callbacks(priv->sdk, + wmx_state_change_cb, + wmx_media_status_cb, + wmx_connect_result_cb, + wmx_scan_result_cb, + wmx_removed_cb, + self); + iwmx_sdk_set_fast_reconnect_enabled (priv->sdk, 0); + + if (!priv->sdk_action_defer_id) + priv->sdk_action_defer_id = g_idle_add (sdk_action_defer_cb, self); } /*************************************************************************/ diff --git a/test/Makefile.in b/test/Makefile.in index 852e33b2..456a2648 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -205,8 +205,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ diff --git a/tools/Makefile.in b/tools/Makefile.in index 2ff9f088..5f0ecb3b 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -152,8 +152,16 @@ LIBGCRYPT_LIBS = @LIBGCRYPT_LIBS@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBM = @LIBM@ +LIBNL1_CFLAGS = @LIBNL1_CFLAGS@ +LIBNL1_LIBS = @LIBNL1_LIBS@ +LIBNL2_CFLAGS = @LIBNL2_CFLAGS@ +LIBNL2_LIBS = @LIBNL2_LIBS@ +LIBNL3_CFLAGS = @LIBNL3_CFLAGS@ +LIBNL3_LIBS = @LIBNL3_LIBS@ LIBNL_CFLAGS = @LIBNL_CFLAGS@ LIBNL_LIBS = @LIBNL_LIBS@ +LIBNL_ROUTE3_CFLAGS = @LIBNL_ROUTE3_CFLAGS@ +LIBNL_ROUTE3_LIBS = @LIBNL_ROUTE3_LIBS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ |