diff --git a/cli/src/connections.c b/cli/src/connections.c index 606fddade..1dd70c164 100644 --- a/cli/src/connections.c +++ b/cli/src/connections.c @@ -657,10 +657,11 @@ check_ethernet_compatible (NMDeviceEthernet *device, NMConnection *connection, G if (s_wired) { const GByteArray *mac; const char *device_mac_str; - struct ether_addr *device_mac; + struct ether_addr *device_mac = NULL; device_mac_str = nm_device_ethernet_get_permanent_hw_address (device); - device_mac = ether_aton (device_mac_str); + if (device_mac_str) + device_mac = ether_aton (device_mac_str); if (!device_mac) { g_set_error (error, 0, 0, "Invalid device MAC address."); return FALSE; @@ -706,10 +707,11 @@ check_wifi_compatible (NMDeviceWifi *device, NMConnection *connection, GError ** if (s_wireless) { const GByteArray *mac; const char *device_mac_str; - struct ether_addr *device_mac; + struct ether_addr *device_mac = NULL; device_mac_str = nm_device_wifi_get_permanent_hw_address (device); - device_mac = ether_aton (device_mac_str); + if (device_mac_str) + device_mac = ether_aton (device_mac_str); if (!device_mac) { g_set_error (error, 0, 0, "Invalid device MAC address."); return FALSE; diff --git a/configure.ac b/configure.ac index db2881578..e66a1f490 100644 --- a/configure.ac +++ b/configure.ac @@ -84,7 +84,7 @@ dnl Make sha1.c happy on big endian systems dnl AC_C_BIGENDIAN -AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, suse, gentoo, debian, arch, slackware, paldo, mandriva or pardus])) +AC_ARG_WITH(distro, AS_HELP_STRING([--with-distro=DISTRO], [Specify the Linux distribution to target: One of redhat, suse, gentoo, debian, arch, slackware, paldo, mandriva, pardus or linexa])) if test "z$with_distro" = "z"; then AC_CHECK_FILE(/etc/redhat-release,with_distro="redhat") AC_CHECK_FILE(/etc/SuSE-release,with_distro="suse") @@ -96,6 +96,7 @@ if test "z$with_distro" = "z"; then AC_CHECK_FILE(/etc/frugalware-release,with_distro="frugalware") AC_CHECK_FILE(/etc/mandriva-release,with_distro="mandriva") AC_CHECK_FILE(/etc/pardus-release,with_distro="pardus") + AC_CHECK_FILE(/etc/linexa-release,with_distro="linexa") if test "z$with_distro" = "z"; then with_distro=`lsb_release -is` fi @@ -107,7 +108,7 @@ if test "z$with_distro" = "z"; then exit 1 else case $with_distro in - redhat|suse|gentoo|debian|slackware|arch|paldo|frugalware|mandriva|pardus) ;; + redhat|suse|gentoo|debian|slackware|arch|paldo|frugalware|mandriva|pardus|linexa) ;; *) echo "Your distribution (${with_distro}) is not yet supported! (patches welcome)" exit 1 @@ -165,6 +166,11 @@ if test x"$with_distro" = xpardus; then AC_DEFINE(TARGET_PARDUS, 1, [Define if you have Pardus]) fi +AM_CONDITIONAL(TARGET_LINEXA, test x"$with_distro" = xlinexa) +if test x"$with_distro" = xlinexa; then + AC_DEFINE(TARGET_LINEXA, 1, [Define if you have linexa]) +fi + dnl dnl Distribution version string dnl @@ -543,6 +549,8 @@ initscript/paldo/Makefile initscript/paldo/NetworkManager initscript/Mandriva/Makefile initscript/Mandriva/networkmanager +initscript/linexa/Makefile +initscript/linexa/networkmanager introspection/Makefile man/Makefile man/NetworkManager.8 @@ -560,6 +568,7 @@ docs/libnm-util/Makefile NetworkManager.pc examples/Makefile examples/python/Makefile +examples/C/Makefile ]) AC_OUTPUT diff --git a/docs/Makefile.am b/docs/Makefile.am index fe7451102..5a3da7e06 100644 --- a/docs/Makefile.am +++ b/docs/Makefile.am @@ -1,7 +1,7 @@ -SUBDIRS = libnm-glib libnm-util - if WITH_DOCS +SUBDIRS = libnm-glib libnm-util + INCLUDES = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/libnm-util diff --git a/examples/C/Makefile.am b/examples/C/Makefile.am new file mode 100644 index 000000000..68c0697b0 --- /dev/null +++ b/examples/C/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = \ + add-connection-glib.c diff --git a/examples/C/add-connection-glib.c b/examples/C/add-connection-glib.c new file mode 100644 index 000000000..0e8dc1803 --- /dev/null +++ b/examples/C/add-connection-glib.c @@ -0,0 +1,112 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * (C) Copyright 2010 Red Hat, Inc. + */ + +/* + * The example shows how to call AddConnection() D-Bus method to add + * a connection to system settings service. It uses dbus-glib and libnm-util + * libraries. + * + * Compile with: + * gcc -Wall `pkg-config --libs --cflags glib-2.0 dbus-glib-1 libnm-util` add-connection-glib.c -o add-connection-glib + */ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#define DBUS_TYPE_G_MAP_OF_VARIANT (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE)) +#define DBUS_TYPE_G_MAP_OF_MAP_OF_VARIANT (dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, DBUS_TYPE_G_MAP_OF_VARIANT)) + +void add_connection (DBusGProxy *proxy, const char *con_name) +{ + NMConnection *connection; + NMSettingConnection *s_con; + NMSettingWired *s_wired; + NMSettingIP4Config *s_ip4; + char *uuid; + GHashTable *hash; + GError *error = NULL; + + /* Create a new connection object */ + connection = (NMConnection *) nm_connection_new (); + + /* Build up the 'connection' Setting */ + s_con = (NMSettingConnection *) nm_setting_connection_new (); + uuid = nm_utils_uuid_generate (); + g_object_set (G_OBJECT (s_con), + NM_SETTING_CONNECTION_UUID, uuid, + NM_SETTING_CONNECTION_ID, con_name, + NM_SETTING_CONNECTION_TYPE, "802-3-ethernet", + NULL); + g_free (uuid); + nm_connection_add_setting (connection, NM_SETTING (s_con)); + + /* Build up the 'wired' Setting */ + s_wired = (NMSettingWired *) nm_setting_wired_new (); + nm_connection_add_setting (connection, NM_SETTING (s_wired)); + + /* Build up the 'ipv4' Setting */ + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + g_object_set (G_OBJECT (s_ip4), + NM_SETTING_IP4_CONFIG_METHOD, NM_SETTING_IP4_CONFIG_METHOD_AUTO, + NULL); + nm_connection_add_setting (connection, NM_SETTING (s_ip4)); + + hash = nm_connection_to_hash (connection); + + /* Call AddConnection with the hash as argument */ + dbus_g_proxy_call (proxy, "AddConnection", &error, + DBUS_TYPE_G_MAP_OF_MAP_OF_VARIANT, hash, + G_TYPE_INVALID); + + g_hash_table_destroy (hash); + g_object_unref (connection); +} + + +int main (int argc, char *argv[]) +{ + DBusGConnection *bus; + DBusGProxy *proxy; + + /* Initialize GType system */ + g_type_init (); + + /* Get system bus */ + bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, NULL); + + /* Create a D-Bus proxy; NM_DBUS_* defined in NetworkManager.h */ + proxy = dbus_g_proxy_new_for_name (bus, + NM_DBUS_SERVICE_SYSTEM_SETTINGS, + NM_DBUS_PATH_SETTINGS, + NM_DBUS_IFACE_SETTINGS); + + /* Add a connection */ + add_connection (proxy, "__Test connection__"); + + g_object_unref (proxy); + dbus_g_connection_unref (bus); + + return 0; +} diff --git a/examples/Makefile.am b/examples/Makefile.am index c2ddf781c..643959b14 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1 +1,3 @@ -SUBDIRS=python +SUBDIRS= \ + python \ + C diff --git a/initscript/Makefile.am b/initscript/Makefile.am index 4cc710eba..65555e3ef 100644 --- a/initscript/Makefile.am +++ b/initscript/Makefile.am @@ -23,3 +23,6 @@ endif if TARGET_MANDRIVA SUBDIRS += Mandriva endif +if TARGET_LINEXA +SUBDIRS += linexa +endif diff --git a/initscript/linexa/Makefile.am b/initscript/linexa/Makefile.am new file mode 100644 index 000000000..0a0cc2bb3 --- /dev/null +++ b/initscript/linexa/Makefile.am @@ -0,0 +1,6 @@ +EXTRA_DIST = networkmanager +DISTCLEANFILES = networkmanager + +initddir = $(sysconfdir)/rc.d/init.d +initd_SCRIPTS = networkmanager + diff --git a/initscript/linexa/networkmanager.in b/initscript/linexa/networkmanager.in new file mode 100644 index 000000000..0d754c360 --- /dev/null +++ b/initscript/linexa/networkmanager.in @@ -0,0 +1,59 @@ +#!/bin/bash +# Start the networkmanager daemon +# +# Author: Elias +# [2010-08-20] + +# Information about the daemon +title="networkmanager" # No spaces allowed in here +start_after="dbus" # dependencies for start-up +stop_after="xinetd" # dependencies for stop +runlevel="2" # start/stop in this runlevel +sequence="25" # "checkinstall networkmanager enable" + # will create links to: + # /etc/rc.d/rc${runlevel}.d/S${sequence}${title} + # /etc/rc.d/rc${runlevel}.d/S$((100 - ${sequence}))${title} + +# check whether daemon is running +# returns 0 if running, >0 if not +check() { + [ -f /var/run/NetworkManager.pid ] +} + +# start procedure +start() { + if check ; then + warning "${title} is already running. Type 'service restart ${title}'" # Issue a warning + else + /usr/sbin/NetworkManager & + evaluate_retval "Starting ${title}. " # Print [ done ] or [ failed ] depending on outcome + fi +} + +# stop procedure +stop() { + if check ; then # daemon is running + kill $(cat /var/run/NetworkManager.pid) + evaluate_retval "Stopping ${title}." # Print [ done ] or [ failed ] depending on outcome + else # daemon not running + warning "${title} is not running." # Issue a warning + fi +} + +# restart procedure +restart() { + stop + sleep 1 + start +} + +# reload action +reload() { + if check ; then # daemon is running + kill -HUP $(cat /var/run/NetworkManager.pid) &>/dev/null + evaluate_retval "Reloading ${title}." # Print [ done ] or [ failed ] depending on outcome + else # daemon not running + warning "${title} is not running." # Issue a warning + fi +} + diff --git a/libnm-glib/Makefile.am b/libnm-glib/Makefile.am index feb6c05eb..aa6f95960 100644 --- a/libnm-glib/Makefile.am +++ b/libnm-glib/Makefile.am @@ -117,7 +117,7 @@ libnm_glib_la_LIBADD = \ $(GUDEV_LIBS) libnm_glib_la_LDFLAGS = -Wl,--version-script=$(srcdir)/libnm-glib.ver \ - -version-info "6:1:4" + -version-info "6:2:4" noinst_PROGRAMS = libnm-glib-test diff --git a/libnm-glib/nm-object.c b/libnm-glib/nm-object.c index 72ea05005..85cb6b78a 100644 --- a/libnm-glib/nm-object.c +++ b/libnm-glib/nm-object.c @@ -527,12 +527,17 @@ _nm_object_set_property (NMObject *object, g_return_if_fail (prop_name != NULL); g_return_if_fail (G_IS_VALUE (value)); - dbus_g_proxy_call_no_reply (NM_OBJECT_GET_PRIVATE (object)->properties_proxy, - "Set", - G_TYPE_STRING, interface, - G_TYPE_STRING, prop_name, - G_TYPE_VALUE, value, - G_TYPE_INVALID); + if (!dbus_g_proxy_call_with_timeout (NM_OBJECT_GET_PRIVATE (object)->properties_proxy, + "Set", 2000, NULL, + G_TYPE_STRING, interface, + G_TYPE_STRING, prop_name, + G_TYPE_VALUE, value, + G_TYPE_INVALID)) { + + /* Ignore errors. dbus_g_proxy_call_with_timeout() is called instead of + * dbus_g_proxy_call_no_reply() to give NM chance to authenticate the caller. + */ + } } char * diff --git a/libnm-util/crypto.c b/libnm-util/crypto.c index 813cbc8ee..70872db41 100644 --- a/libnm-util/crypto.c +++ b/libnm-util/crypto.c @@ -23,6 +23,7 @@ #include #include +#include #include #include #include diff --git a/libnm-util/nm-setting-wireless-security.c b/libnm-util/nm-setting-wireless-security.c index 678a6fad8..ca789b422 100644 --- a/libnm-util/nm-setting-wireless-security.c +++ b/libnm-util/nm-setting-wireless-security.c @@ -19,10 +19,11 @@ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA. * - * (C) Copyright 2007 - 2008 Red Hat, Inc. + * (C) Copyright 2007 - 2010 Red Hat, Inc. * (C) Copyright 2007 - 2008 Novell, Inc. */ +#include #include #include #include diff --git a/libnm-util/nm-setting-wireless.c b/libnm-util/nm-setting-wireless.c index 99af8f2a3..ec7d53ad7 100644 --- a/libnm-util/nm-setting-wireless.c +++ b/libnm-util/nm-setting-wireless.c @@ -24,6 +24,7 @@ */ #include +#include #include #include diff --git a/po/bg.po b/po/bg.po index 7c8ad028e..5a1e7c1c0 100644 --- a/po/bg.po +++ b/po/bg.po @@ -2,68 +2,1837 @@ # Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the NetworkManager package. # Alexander Shopov , 2005, 2007, 2008. +# Damyan Ivanov , 2010. # msgid "" msgstr "" "Project-Id-Version: NetworkManager trunk\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-08-02 08:52+0300\n" -"PO-Revision-Date: 2008-08-01 07:30+0300\n" -"Last-Translator: Alexander Shopov \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=NetworkManager&component=general\n" +"POT-Creation-Date: 2010-09-20 15:25+0000\n" +"PO-Revision-Date: 2010-09-29 23:55+0300\n" +"Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \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" -#: ../src/nm-netlink-monitor.c:193 ../src/nm-netlink-monitor.c:471 +#: ../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 +msgid "NAME" +msgstr "ИМЕ" + +#. 0 +#: ../cli/src/connections.c:61 ../cli/src/connections.c:76 +msgid "UUID" +msgstr "УНИВЕРСАЛЕН ИДЕНТИФИКАТОР" + +#. 1 +#: ../cli/src/connections.c:62 +msgid "DEVICES" +msgstr "УСТРОЙСТВА" + +#. 2 +#: ../cli/src/connections.c:63 ../cli/src/connections.c:78 +msgid "SCOPE" +msgstr "ОБСЕГ" + +#. 3 +#: ../cli/src/connections.c:64 +msgid "DEFAULT" +msgstr "ПОДРАЗ." + +#. 4 +#: ../cli/src/connections.c:65 +msgid "DBUS-SERVICE" +msgstr "УСЛУГА-DBUS" + +#. 5 +#: ../cli/src/connections.c:66 +msgid "SPEC-OBJECT" +msgstr "СПЕЦИФИКАЦ." + +#. 6 +#: ../cli/src/connections.c:67 +msgid "VPN" +msgstr "ВЧМ" + +#. 1 +#. 0 +#. 1 +#: ../cli/src/connections.c:77 ../cli/src/devices.c:62 ../cli/src/devices.c:90 +msgid "TYPE" +msgstr "ВИД" + +# Заглавие за датата и часа, когато последно е използвана връзката. +# Използва се вътрешният формат (секунди от фиксирана дата през 1700г). +#. 3 +#: ../cli/src/connections.c:79 +msgid "TIMESTAMP" +msgstr "ПОСЛ. АКТ." + +# Заглавие за датата и часа, когато последно е използвана връзката. +# Използва се локализиран формат за дата и час. +#. 4 +#: ../cli/src/connections.c:80 +msgid "TIMESTAMP-REAL" +msgstr "ПОСЛЕДНО АКТИВНА" + +#. 5 +#: ../cli/src/connections.c:81 +msgid "AUTOCONNECT" +msgstr "АВТОМАТИЧНА" + +#. 6 +#: ../cli/src/connections.c:82 +msgid "READONLY" +msgstr "САМО ЧЕТ." + +#. 7 +#: ../cli/src/connections.c:83 +msgid "DBUS-PATH" +msgstr "ПЪТ-DBUS" + +#: ../cli/src/connections.c:159 +#, c-format +msgid "" +"Usage: nmcli con { COMMAND | help }\n" +" COMMAND := { list | status | up | down }\n" +"\n" +" list [id | uuid | system | user]\n" +" status\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +"]\n" +" down id | uuid \n" +msgstr "" +"Употреба: nmcli con { КОМАНДА | help }\n" +" КОМАНДА := { list | status | up | down }\n" +"\n" +" list [id <ид> | uuid <ид> | system | user]\n" +" status\n" +" up id <ид> | uuid <ид> [iface <интерфейс>] [ap <хардуерен адрес>] [--" +"nowait] [--timeout <изчакване>]\n" +" down id <ид> | uuid <ид>\n" + +#: ../cli/src/connections.c:199 ../cli/src/connections.c:540 +#, c-format +msgid "Error: 'con list': %s" +msgstr "Грешка при „con list“ – %s" + +#: ../cli/src/connections.c:201 ../cli/src/connections.c:542 +#, c-format +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "Грешка при „con list“ – %s; допустимите полета са %s" + +#: ../cli/src/connections.c:209 +#| msgid "Connection Established" +msgid "Connection details" +msgstr "Информация за връзката" + +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "system" +msgstr "система" + +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "user" +msgstr "потреб." + +#: ../cli/src/connections.c:386 +msgid "never" +msgstr "никога" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +msgid "yes" +msgstr "да" + +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +#| msgid "none" +msgid "no" +msgstr "не" + +#: ../cli/src/connections.c:461 ../cli/src/connections.c:504 +#| msgid "No active connections!" +msgid "System connections" +msgstr "Системни връзки" + +#: ../cli/src/connections.c:466 ../cli/src/connections.c:517 +#| msgid "VPN Connections" +msgid "User connections" +msgstr "Потребителски връзки" + +#: ../cli/src/connections.c:478 ../cli/src/connections.c:1338 +#: ../cli/src/connections.c:1354 ../cli/src/connections.c:1363 +#: ../cli/src/connections.c:1374 ../cli/src/connections.c:1459 +#: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074 +#: ../cli/src/devices.c:1081 +#, c-format +msgid "Error: %s argument is missing." +msgstr "Липсва аргумент за „%s“." + +#: ../cli/src/connections.c:491 +#, c-format +msgid "Error: %s - no such connection." +msgstr "Няма връзка „%s“." + +#: ../cli/src/connections.c:523 ../cli/src/connections.c:1387 +#: ../cli/src/connections.c:1477 ../cli/src/devices.c:785 +#: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087 +#, c-format +msgid "Unknown parameter: %s\n" +msgstr "Непознат параметър „%s“\n" + +#: ../cli/src/connections.c:532 +#, c-format +msgid "Error: no valid parameter specified." +msgstr "Няма указани параметри." + +#: ../cli/src/connections.c:547 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:359 +#, c-format +msgid "Error: %s." +msgstr "Грешка – %s." + +#: ../cli/src/connections.c:653 +#, c-format +msgid "Error: 'con status': %s" +msgstr "Грешка при „con status“ – %s" + +#: ../cli/src/connections.c:655 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "Грешка при „con status“ – %s. Допустимите полета са %s" + +#: ../cli/src/connections.c:662 +#| msgid "No active connections!" +msgid "Active connections" +msgstr "Активни връзки" + +#: ../cli/src/connections.c:1030 +#, c-format +#| msgid "No active connections!" +msgid "no active connection on device '%s'" +msgstr "няма активна връзка, използваща устройството „%s“" + +#: ../cli/src/connections.c:1038 +#, c-format +#| msgid "No active connections!" +msgid "no active connection or device" +msgstr "няма активна връзка или устройство" + +#: ../cli/src/connections.c:1088 +#, c-format +msgid "device '%s' not compatible with connection '%s'" +msgstr "устройството „%s“ не е съвместимо с връзката „%s“" + +#: ../cli/src/connections.c:1090 +#, c-format +#| msgid "Error retrieving VPN connection '%s'" +msgid "no device found for connection '%s'" +msgstr "не е открито устройство за връзката „%s“" + +#: ../cli/src/connections.c:1101 +msgid "activating" +msgstr "включване" + +#: ../cli/src/connections.c:1103 +msgid "activated" +msgstr "включена" + +#: ../cli/src/connections.c:1106 ../cli/src/connections.c:1129 +#: ../cli/src/connections.c:1162 ../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 +#| msgid "(unknown)" +msgid "unknown" +msgstr "неизвестно" + +#: ../cli/src/connections.c:1115 +#| msgid "VPN connecting to '%s'" +msgid "VPN connecting (prepare)" +msgstr "Свързване към ВЧМ (подготовка)" + +#: ../cli/src/connections.c:1117 +msgid "VPN connecting (need authentication)" +msgstr "Свързване към ВЧМ (нужна е идентификация)" + +#: ../cli/src/connections.c:1119 +#| msgid "VPN Connections" +msgid "VPN connecting" +msgstr "Свързване към ВЧМ" + +#: ../cli/src/connections.c:1121 +msgid "VPN connecting (getting IP configuration)" +msgstr "Свързване към ВЧМ (получаване на настройките за IP)" + +#: ../cli/src/connections.c:1123 +#| msgid "Disconnected" +msgid "VPN connected" +msgstr "Свързан към ВЧМ" + +#: ../cli/src/connections.c:1125 +#| msgid "VPN Connect Failure" +msgid "VPN connection failed" +msgstr "Неуспешно свързване към ВЧМ" + +#: ../cli/src/connections.c:1127 +#| msgid "Disconnected" +msgid "VPN disconnected" +msgstr "Връзката към ВЧМ е прекъсната" + +#: ../cli/src/connections.c:1138 +#| msgid "(unknown)" +msgid "unknown reason" +msgstr "неизвестна причина" + +#: ../cli/src/connections.c:1140 +msgid "none" +msgstr "липсва" + +#: ../cli/src/connections.c:1142 +#| msgid "The network connection has been disconnected." +msgid "the user was disconnected" +msgstr "потребителят е изключен" + +#: ../cli/src/connections.c:1144 +#| msgid "The network connection has been disconnected." +msgid "the base network connection was interrupted" +msgstr "основната връзка към мрежата е прекъсната" + +#: ../cli/src/connections.c:1146 +msgid "the VPN service stopped unexpectedly" +msgstr "услугата за ВЧМ спря неочаквано" + +#: ../cli/src/connections.c:1148 +msgid "the VPN service returned invalid configuration" +msgstr "услугата за ВЧМ предостави неправилни настройки" + +#: ../cli/src/connections.c:1150 +msgid "the connection attempt timed out" +msgstr "времето за свързване изтече" + +#: ../cli/src/connections.c:1152 +msgid "the VPN service did not start in time" +msgstr "услугата за ВЧМ не успя да тръгне в определеното време" + +#: ../cli/src/connections.c:1154 +msgid "the VPN service failed to start" +msgstr "услугата за ВЧМ не успя да тръгне" + +#: ../cli/src/connections.c:1156 +msgid "no valid VPN secrets" +msgstr "няма правилни пароли за ВЧМ" + +#: ../cli/src/connections.c:1158 +msgid "invalid VPN secrets" +msgstr "неправилни пароли за ВЧМ" + +#: ../cli/src/connections.c:1160 +msgid "the connection was removed" +msgstr "връзката е премахната" + +#: ../cli/src/connections.c:1174 +#, c-format +msgid "state: %s\n" +msgstr "състояние: %s\n" + +#: ../cli/src/connections.c:1177 ../cli/src/connections.c:1203 +#, c-format +#| msgid "Connection Established" +msgid "Connection activated\n" +msgstr "Връзката е активирана\n" + +#: ../cli/src/connections.c:1180 +#, c-format +#| msgid "Connection to the wired network failed." +msgid "Error: Connection activation failed." +msgstr "Грешка при активиране на връзката." + +#: ../cli/src/connections.c:1199 +#, c-format +msgid "state: %s (%d)\n" +msgstr "състояние: %s (%d)\n" + +#: ../cli/src/connections.c:1209 +#, c-format +msgid "Error: Connection activation failed: %s." +msgstr "Грешка при активиране на връзката: %s." + +#: ../cli/src/connections.c:1226 ../cli/src/devices.c:909 +#, c-format +msgid "Error: Timeout %d sec expired." +msgstr "Просрочено е времето от %d сек." + +#: ../cli/src/connections.c:1269 +#, c-format +msgid "Error: Connection activation failed: %s" +msgstr "Грешка при активиране на връзката: %s" + +#: ../cli/src/connections.c:1283 +#, c-format +#| msgid "Error retrieving VPN connection '%s'" +msgid "Error: Obtaining active connection for '%s' failed." +msgstr "Грешка при получаване на активната връзка за „%s“." + +#: ../cli/src/connections.c:1292 +#, c-format +#| msgid "No active connections!" +msgid "Active connection state: %s\n" +msgstr "Състояние на активната връзка: %s\n" + +#: ../cli/src/connections.c:1293 +#, c-format +#| msgid "No active connections!" +msgid "Active connection path: %s\n" +msgstr "Път на активната връзка: %s\n" + +#: ../cli/src/connections.c:1347 ../cli/src/connections.c:1468 +#, c-format +#| msgid "Error retrieving VPN connection '%s'" +msgid "Error: Unknown connection: %s." +msgstr "Непозната връзка „%s“." + +#: ../cli/src/connections.c:1382 ../cli/src/devices.c:980 +#, c-format +msgid "Error: timeout value '%s' is not valid." +msgstr "Ограничението на времето „%s“ не е правилно." + +#: ../cli/src/connections.c:1395 ../cli/src/connections.c:1485 +#, c-format +msgid "Error: id or uuid has to be specified." +msgstr "" +"Указването на идентификатор или универсален идентификатор (uuid) е " +"задължително." + +#: ../cli/src/connections.c:1415 +#, c-format +msgid "Error: No suitable device found: %s." +msgstr "Не е намерено подходящо устройство – %s." + +#: ../cli/src/connections.c:1417 +#, c-format +msgid "Error: No suitable device found." +msgstr "Не е намерено подходящо устройство." + +#: ../cli/src/connections.c:1512 +#, c-format +#| msgid "Connection Information" +msgid "Warning: Connection not active\n" +msgstr "Предупреждение: Връзката не е активна\n" + +#: ../cli/src/connections.c:1569 +#, c-format +msgid "Error: 'con' command '%s' is not valid." +msgstr "„con“ не поддържа команда „%s“." + +#: ../cli/src/connections.c:1605 +#, c-format +msgid "Error: could not connect to D-Bus." +msgstr "Грешка при свързване с D-Bus." + +#: ../cli/src/connections.c:1612 +#, c-format +msgid "Error: Could not get system settings." +msgstr "Грешка при получаване на системните настройки." + +#: ../cli/src/connections.c:1620 +#, c-format +msgid "Error: Could not get user settings." +msgstr "Грешка при получаване на потребителските настройки." + +#: ../cli/src/connections.c:1630 +#, c-format +msgid "Error: Can't obtain connections: settings services are not running." +msgstr "" +"Грешка при получаване на списъка с връзки – услугите за настройки не са " +"налични." + +#. 0 +#. 9 +#: ../cli/src/devices.c:61 ../cli/src/devices.c:89 ../cli/src/devices.c:184 +msgid "DEVICE" +msgstr "УСТРОЙСТВО" + +#. 1 +#. 4 +#. 0 +#: ../cli/src/devices.c:63 ../cli/src/devices.c:93 +#: ../cli/src/network-manager.c:36 +msgid "STATE" +msgstr "СЪСТОЯНИЕ" + +#: ../cli/src/devices.c:72 +msgid "GENERAL" +msgstr "ОБЩИ" + +#. 0 +#: ../cli/src/devices.c:73 +msgid "CAPABILITIES" +msgstr "ВЪЗМОЖНОСТИ" + +#. 1 +#: ../cli/src/devices.c:74 +msgid "WIFI-PROPERTIES" +msgstr "БЕЗЖИЧНИ-ХАРАКТЕРИСТИКИ" + +#. 2 +#: ../cli/src/devices.c:75 +#| msgid "PEAP" +msgid "AP" +msgstr "ТД" + +#. 3 +#: ../cli/src/devices.c:76 +msgid "WIRED-PROPERTIES" +msgstr "ЖИЧНИ-ХАРАКТЕРИСТИКИ" + +#. 4 +#: ../cli/src/devices.c:77 +msgid "IP4-SETTINGS" +msgstr "ПАРАМЕТРИ-IP4" + +#. 5 +#: ../cli/src/devices.c:78 +msgid "IP4-DNS" +msgstr "IP4-DNS" + +#. 6 +#: ../cli/src/devices.c:79 +msgid "IP6-SETTINGS" +msgstr "ПАРАМЕТРИ-IP6" + +#. 7 +#: ../cli/src/devices.c:80 +msgid "IP6-DNS" +msgstr "IP6-DNS" + +#. 2 +#: ../cli/src/devices.c:91 +msgid "DRIVER" +msgstr "ДРАЙВЕР" + +#. 3 +#: ../cli/src/devices.c:92 +msgid "HWADDR" +msgstr "ХАРДУЕРЕН-АДРЕС" + +#. 0 +#: ../cli/src/devices.c:102 +msgid "CARRIER-DETECT" +msgstr "СИГНАЛ-ОТКР." + +#. 1 +#: ../cli/src/devices.c:103 +msgid "SPEED" +msgstr "СКОРОСТ" + +#. 0 +#: ../cli/src/devices.c:112 +msgid "CARRIER" +msgstr "СИГНАЛ" + +#. 0 +#: ../cli/src/devices.c:122 +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:123 +msgid "WPA" +msgstr "WPA" + +#. 2 +#: ../cli/src/devices.c:124 +#| msgid "WPA2 TKIP" +msgid "WPA2" +msgstr "WPA2" + +#. 3 +#: ../cli/src/devices.c:125 +msgid "TKIP" +msgstr "TKIP" + +#. 4 +#: ../cli/src/devices.c:126 +#| msgid "AES-CCMP" +msgid "CCMP" +msgstr "CCMP" + +#. 0 +#: ../cli/src/devices.c:135 ../cli/src/devices.c:146 +msgid "ADDRESS" +msgstr "АДРЕС" + +#. 1 +#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +msgid "PREFIX" +msgstr "ПРЕФИКС" + +#. 2 +#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +msgid "GATEWAY" +msgstr "ШЛЮЗ" + +#. 0 +#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:175 +msgid "SSID" +msgstr "SSID" + +#. 1 +#: ../cli/src/devices.c:176 +msgid "BSSID" +msgstr "BSSID" + +#. 2 +#: ../cli/src/devices.c:177 +msgid "MODE" +msgstr "РЕЖИМ" + +#. 3 +#: ../cli/src/devices.c:178 +msgid "FREQ" +msgstr "ЧЕСТОТА" + +#. 4 +#: ../cli/src/devices.c:179 +msgid "RATE" +msgstr "СКОРОСТ-ПРЕДАВАНЕ" + +#. 5 +#: ../cli/src/devices.c:180 +msgid "SIGNAL" +msgstr "СИГНАЛ" + +#. 6 +#: ../cli/src/devices.c:181 +msgid "SECURITY" +msgstr "СИГУРНОСТ" + +#. 7 +#: ../cli/src/devices.c:182 +msgid "WPA-FLAGS" +msgstr "ФЛАГОВЕ-WPA" + +#. 8 +#: ../cli/src/devices.c:183 +msgid "RSN-FLAGS" +msgstr "ФЛАГОВЕ-RSN" + +#. 10 +#: ../cli/src/devices.c:185 +msgid "ACTIVE" +msgstr "АКТИВНА" + +#: ../cli/src/devices.c:208 +#, c-format +msgid "" +"Usage: nmcli dev { COMMAND | help }\n" +"\n" +" COMMAND := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [hwaddr ]]\n" +"\n" +msgstr "" +"Употреба: nmcli dev { КОМАНДА | help }\n" +"\n" +" КОМАНДА := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [ iface <интерфейс>]\n" +" disconnect iface <интерфейс> [--nowait] [--timeout <време>]\n" +" wifi [list [iface <интерфейс>] [hwaddr <хардуерен адрес>]]\n" +"\n" + +#: ../cli/src/devices.c:228 +msgid "unmanaged" +msgstr "не се управлява" + +#: ../cli/src/devices.c:230 +msgid "unavailable" +msgstr "не е налично" + +# става дума за устройство +# или за общото състояние на N-M +#: ../cli/src/devices.c:232 ../cli/src/network-manager.c:91 +#| msgid "Disconnected" +msgid "disconnected" +msgstr "без връзка" + +#: ../cli/src/devices.c:234 +msgid "connecting (prepare)" +msgstr "свързване (подготовка)" + +#: ../cli/src/devices.c:236 +#| msgid "Connection Information" +msgid "connecting (configuring)" +msgstr "свързване (настройка)" + +#: ../cli/src/devices.c:238 +msgid "connecting (need authentication)" +msgstr "свързване (нужна е идентификация)" + +#: ../cli/src/devices.c:240 +#| msgid "Connection Information" +msgid "connecting (getting IP configuration)" +msgstr "свързване (получаване на настройките за IP)" + +# става дума и за конкретно устройство, +# и за NM като цяло +#: ../cli/src/devices.c:242 ../cli/src/network-manager.c:89 +#| msgid "Disconnected" +msgid "connected" +msgstr "има връзка" + +#: ../cli/src/devices.c:244 +#| msgid "Connection Established" +msgid "connection failed" +msgstr "неуспешно свързване" + +# вид устройство (жично, безжично, телефон, bluetooth) или вид мрежа (инфраструктура, ad-hoc) +#: ../cli/src/devices.c:267 ../cli/src/devices.c:424 +msgid "Unknown" +msgstr "Непознат" + +# низът се използва когато дадена безжична мрежа няма флагове от рода на pair_ccmp, pair_wpe140 и т.н. +#: ../cli/src/devices.c:299 +#| msgid "none" +msgid "(none)" +msgstr "(без)" + +#: ../cli/src/devices.c:324 +#, c-format +msgid "%s: error converting IP4 address 0x%X" +msgstr "%s: грешка при преобразуване на адрес IP4 0x%X" + +#: ../cli/src/devices.c:393 +#, c-format +msgid "%u MHz" +msgstr "%u МХц" + +#: ../cli/src/devices.c:394 +#, c-format +#| msgid "%d Mb/s" +msgid "%u MB/s" +msgstr "%u МБ/с" + +#: ../cli/src/devices.c:403 +msgid "Encrypted: " +msgstr "Шифроване: " + +#: ../cli/src/devices.c:408 +msgid "WEP " +msgstr "WEP" + +#: ../cli/src/devices.c:410 +#| msgid "WPA TKIP" +msgid "WPA " +msgstr "WPA" + +#: ../cli/src/devices.c:412 +#| msgid "WPA2 TKIP" +msgid "WPA2 " +msgstr "WPA2" + +#: ../cli/src/devices.c:415 +#| msgid "WPA Enterprise" +msgid "Enterprise " +msgstr "Индустр." + +# Режима на мрежата +#: ../cli/src/devices.c:424 +msgid "Ad-Hoc" +msgstr "Специален" + +# Режима на мрежата +#: ../cli/src/devices.c:424 +msgid "Infrastructure" +msgstr "Инфраструктурен" + +#: ../cli/src/devices.c:486 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "Грешка при „dev list“ – %s" + +#: ../cli/src/devices.c:488 +#, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "Грешка при „dev list“ – %s; допустимите полета са %s" + +#: ../cli/src/devices.c:497 +msgid "Device details" +msgstr "Информация за устройството" + +# или е драйвер, +# или е грешка при прекъсване на връзката +#: ../cli/src/devices.c:527 ../cli/src/devices.c:925 +msgid "(unknown)" +msgstr "(няма информация)" + +# хардуерен адрес +#: ../cli/src/devices.c:528 +#| msgid "(unknown)" +msgid "unknown)" +msgstr "(няма информация)" + +#: ../cli/src/devices.c:554 +#, c-format +#| msgid "%d Mb/s" +msgid "%u Mb/s" +msgstr "%u Мб/с" + +# дадено устройство има сигнал по жицата +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:627 +#| msgid "None" +msgid "on" +msgstr "свързано" + +#: ../cli/src/devices.c:627 +msgid "off" +msgstr "без връзка" + +#: ../cli/src/devices.c:808 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "Грешка при „dev status“ – %s" + +#: ../cli/src/devices.c:810 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "Грешка при „dev status“ – %s; допустимите полета са %s" + +#: ../cli/src/devices.c:817 +msgid "Status of devices" +msgstr "Състояние на устройствата" + +#: ../cli/src/devices.c:845 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "Липсва аргумент за „%s“." + +#: ../cli/src/devices.c:874 ../cli/src/devices.c:1013 +#: ../cli/src/devices.c:1136 +#, c-format +msgid "Error: Device '%s' not found." +msgstr "Устройството „%s“ не е намерено." + +#: ../cli/src/devices.c:897 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "Връзката на устройството „%s“ е прекъсната." + +#: ../cli/src/devices.c:922 +#, c-format +msgid "Error: Device '%s' (%s) disconnecting failed: %s" +msgstr "Грешка при прекъсване на връзката на устройството „%s“ (%s) – %s" + +#: ../cli/src/devices.c:930 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Състояние на устройството: %d (%s)\n" + +#: ../cli/src/devices.c:994 +#, c-format +msgid "Error: iface has to be specified." +msgstr "Указването на „iface“ е задължително." + +#: ../cli/src/devices.c:1112 +#, c-format +msgid "Error: 'dev wifi': %s" +msgstr "Грешка при „dev wifi“ – %s" + +#: ../cli/src/devices.c:1114 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "Грешка при „dev wifi“ – %s; допустимите полета са %s" + +#: ../cli/src/devices.c:1121 +msgid "WiFi scan list" +msgstr "Открити безжични мрежи" + +#: ../cli/src/devices.c:1156 ../cli/src/devices.c:1210 +#, c-format +msgid "Error: Access point with hwaddr '%s' not found." +msgstr "Не е открита точка за достъп с хардуерен адрес „%s“." + +#: ../cli/src/devices.c:1173 +#, c-format +msgid "Error: Device '%s' is not a WiFi device." +msgstr "„%s“ не е устройство за безжична мрежа." + +#: ../cli/src/devices.c:1237 +#, c-format +msgid "Error: 'dev wifi' command '%s' is not valid." +msgstr "„%s“ не е правилна команда за „dev wifi“." + +#: ../cli/src/devices.c:1284 +#, c-format +msgid "Error: 'dev' command '%s' is not valid." +msgstr "„%s“ не е правилна команда за „dev“." + +#: ../cli/src/network-manager.c:35 +msgid "RUNNING" +msgstr "ВКЛЮЧЕН" + +#. 1 +#: ../cli/src/network-manager.c:37 +msgid "NET-ENABLED" +msgstr "МРЕЖА-ВКЛЮЧ" + +#. 2 +#: ../cli/src/network-manager.c:38 +msgid "WIFI-HARDWARE" +msgstr "БЕЗЖ. ХАРДУЕР" + +#. 3 +#: ../cli/src/network-manager.c:39 +msgid "WIFI" +msgstr "БЕЗЖ.МРЕЖА" + +#. 4 +#: ../cli/src/network-manager.c:40 +msgid "WWAN-HARDWARE" +msgstr "МОБ. ХАРДУЕР" + +#. 5 +#: ../cli/src/network-manager.c:41 +msgid "WWAN" +msgstr "МОБ. МРЕЖА" + +#: ../cli/src/network-manager.c:64 +#, c-format +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 "" +"Употреба: nmcli nm { КОМАНДА | help }\n" +"\n" +" КОМАНДА := { 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" + +#: ../cli/src/network-manager.c:85 +msgid "asleep" +msgstr "спящ" + +#: ../cli/src/network-manager.c:87 +#| msgid "C_onnect" +msgid "connecting" +msgstr "свързване" + +#: ../cli/src/network-manager.c:128 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "Грешка при „nm status“ – %s" + +#: ../cli/src/network-manager.c:130 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "Грешка при „nm status“ – %s; допустимите полета са %s" + +#: ../cli/src/network-manager.c:137 +#| msgid "NetworkManager Applet" +msgid "NetworkManager status" +msgstr "Състояние на NetworkManager" + +#. Print header +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "enabled" +msgstr "включено" + +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "disabled" +msgstr "изключено" + +#: ../cli/src/network-manager.c:152 +msgid "running" +msgstr "включен" + +#: ../cli/src/network-manager.c:152 +msgid "not running" +msgstr "изключен" + +#: ../cli/src/network-manager.c:175 +#, c-format +msgid "Error: Couldn't connect to system bus: %s" +msgstr "Грешка при свързване към системната шина – %s" + +#: ../cli/src/network-manager.c:186 +#, c-format +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "Грешка при създаване на обект-посредник за D-Bus." + +#: ../cli/src/network-manager.c:192 +#, c-format +msgid "Error in sleep: %s" +msgstr "Грешка при приспиване – %s" + +#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286 +#: ../cli/src/network-manager.c:318 +#, c-format +msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" +msgstr "Стойността „%s“ за „--fields“ не е правилна; допустимите полета са %s" + +#: ../cli/src/network-manager.c:245 +#| msgid "Networking disabled" +msgid "Networking enabled" +msgstr "Мрежата е включена" + +#: ../cli/src/network-manager.c:256 +#, c-format +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"Недопустим аргумент на „enable“ – „%s“. Използвайте „true“ или „false“." + +#: ../cli/src/network-manager.c:265 +#, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "NetworkManager не предоставя информация за приспиването." + +#: ../cli/src/network-manager.c:273 +#, c-format +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "" +"„%s“ не е правилен параметър за „sleep“. Използвайте „true“ или „false“." + +#: ../cli/src/network-manager.c:294 +msgid "WiFi enabled" +msgstr "Безжичната мрежа е включена" + +#: ../cli/src/network-manager.c:305 +#, c-format +msgid "Error: invalid 'wifi' parameter: '%s'." +msgstr "„%s“ не е правилен параметър за „wifi“." + +#: ../cli/src/network-manager.c:326 +msgid "WWAN enabled" +msgstr "Мобилната мрежа е включена" + +#: ../cli/src/network-manager.c:337 +#, c-format +msgid "Error: invalid 'wwan' parameter: '%s'." +msgstr "„%s“ не е правилен параметър за „wwan“." + +#: ../cli/src/network-manager.c:348 +#, c-format +msgid "Error: 'nm' command '%s' is not valid." +msgstr "„%s“ не е правилна команда за „nm“." + +#: ../cli/src/nmcli.c:69 +#, 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] |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 "" +"Употреба: %s [ОПЦИИ] ОБЕКТ { КОМАНДА | help }\n" +"\n" +"ОПЦИИ\n" +" -t[erse] сбит изход\n" +" -p[retty] красив изход\n" +" -m[ode] tabular|multiline режим на изхода\n" +" -f[ields] <поле1,поле2,…>|all|common извеждани полета\n" +" -е[scape] yes|no кодиране на разделителите между " +"колоните в стойностите\n" +" -v[ersion] показване на версията на " +"програмата\n" +" -h[elp] показване на тази помощна " +"информация\n" +"\n" +"OBJECT\n" +" nm състояние на NetworkManager\n" +" con връзки на NetworkManager\n" +" dev устройства, управлявани от NetworkManager\n" +"\n" + +#: ../cli/src/nmcli.c:113 +#, c-format +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "Обектът „%s“ е непознат. Опитайте с „nmcli help“." + +#: ../cli/src/nmcli.c:143 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "Опцията „--terse“ е указана втори път." + +#: ../cli/src/nmcli.c:148 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "Опцията „--terse“ е несъвместима с „--pretty“." + +#: ../cli/src/nmcli.c:156 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "Опцията „--pretty“ е указана втори път." + +#: ../cli/src/nmcli.c:161 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "Опцията „--pretty“ е несъвместима с „--terse“." + +#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187 +#, c-format +msgid "Error: missing argument for '%s' option." +msgstr "Липсва аргумент на опцията „%s“." + +#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196 +#, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "„%s“ не е правилен аргумент за опцията „%s“." + +#: ../cli/src/nmcli.c:203 +#, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "Липсват полета за опциите „%s“." + +#: ../cli/src/nmcli.c:209 +#, c-format +msgid "nmcli tool, version %s\n" +msgstr "nmcli, версия %s\n" + +#: ../cli/src/nmcli.c:215 +#, c-format +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "Опцията „%s“ е непозната. Опитайте с „nmcli -help“." + +#: ../cli/src/nmcli.c:234 +#, c-format +msgid "Caught signal %d, shutting down..." +msgstr "Получен е сигнал %d, спиране…" + +#: ../cli/src/nmcli.c:259 +#, c-format +msgid "Error: Could not connect to NetworkManager." +msgstr "Грешка при свързване с NetworkManager." + +#: ../cli/src/nmcli.c:275 +msgid "Success" +msgstr "Успех" + +#: ../cli/src/settings.c:411 +#, c-format +msgid "%d (hex-ascii-key)" +msgstr "%d (ключ в шестнайсетичен запис)" + +#: ../cli/src/settings.c:413 +#, c-format +#| msgid "WEP 128-bit Passphrase" +msgid "%d (104/128-bit passphrase)" +msgstr "%d (104/128 битова парола)" + +#: ../cli/src/settings.c:416 +#, c-format +#| msgid "(unknown)" +msgid "%d (unknown)" +msgstr "%d (неизвестен)" + +#: ../cli/src/settings.c:442 +#| msgid "(unknown)" +msgid "0 (unknown)" +msgstr "0 (неизвестно)" + +#: ../cli/src/settings.c:448 +msgid "any, " +msgstr "всяка, " + +#: ../cli/src/settings.c:450 +msgid "900 MHz, " +msgstr "900 МХц, " + +#: ../cli/src/settings.c:452 +msgid "1800 MHz, " +msgstr "1800 МХц, " + +#: ../cli/src/settings.c:454 +msgid "1900 MHz, " +msgstr "1900 МХц, " + +#: ../cli/src/settings.c:456 +msgid "850 MHz, " +msgstr "850 МХц, " + +#: ../cli/src/settings.c:458 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 МХц, " + +#: ../cli/src/settings.c:460 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "WCDMA 3GPP UMTS 1800 МХц, " + +#: ../cli/src/settings.c:462 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "WCDMA 3GPP UMTS 1700/2100 МХц, " + +#: ../cli/src/settings.c:464 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "WCDMA 3GPP UMTS 800 МХц, " + +#: ../cli/src/settings.c:466 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "WCDMA 3GPP UMTS 850 МХц, " + +#: ../cli/src/settings.c:468 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "WCDMA 3GPP UMTS 900 МХц, " + +#: ../cli/src/settings.c:470 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "WCDMA 3GPP UMTS 1700 МХц, " + +#: ../cli/src/settings.c:554 ../cli/src/settings.c:721 +msgid "auto" +msgstr "автоматично" + +#: ../cli/src/settings.c:716 ../cli/src/settings.c:719 +#: ../cli/src/settings.c:720 ../cli/src/utils.c:172 +msgid "not set" +msgstr "не е зададено" + +#: ../cli/src/utils.c:124 +#, c-format +msgid "field '%s' has to be alone" +msgstr "полето „%s“ трябва да е единствено" + +#: ../cli/src/utils.c:127 +#, c-format +msgid "invalid field '%s'" +msgstr "грешно поле „%s“" + +#: ../cli/src/utils.c:146 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "Опцията „--terse“ изисква указването на „--fields“" + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "Опцията „--terse“ изисква конкретни стойности за „--fields“, а не „%s“" + +#: ../libnm-util/crypto.c:120 +#, c-format +msgid "PEM key file had no end tag '%s'." +msgstr "Крайният етикет „%s“ липсва в сертификат във формат PEM." + +#: ../libnm-util/crypto.c:130 +#, c-format +msgid "Doesn't look like a PEM private key file." +msgstr "Това не изглежда да е сертификат във формат PEM с частен ключ." + +#: ../libnm-util/crypto.c:138 +#, c-format +msgid "Not enough memory to store PEM file data." +msgstr "" +"Няма достатъчно памет за запазването на данните от сертификата във формат " +"PEM." + +#: ../libnm-util/crypto.c:154 +#, c-format +msgid "Malformed PEM file: Proc-Type was not first tag." +msgstr "" +"Неправилен сертификат във формат PEM – първият етикет не е „Proc-Type“." + +#: ../libnm-util/crypto.c:162 +#, c-format +msgid "Malformed PEM file: unknown Proc-Type tag '%s'." +msgstr "" +"Неправилен сертификат във формат PEM: непознат етикет „Proc-Type“ — „%s“." + +#: ../libnm-util/crypto.c:172 +#, c-format +msgid "Malformed PEM file: DEK-Info was not the second tag." +msgstr "Неправилен сертификат във формат PEM – вторият етикет не е „DEK-Info“." + +#: ../libnm-util/crypto.c:183 +#, c-format +msgid "Malformed PEM file: no IV found in DEK-Info tag." +msgstr "" +"Неправилен сертификат във формат PEM – в етикета „DEK-Info“ липсва начален " +"вектор." + +#: ../libnm-util/crypto.c:190 +#, c-format +msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." +msgstr "" +"Неправилен сертификат във формат PEM – неправилен начален вектор в етикета " +"„DEK-Info“." + +#: ../libnm-util/crypto.c:203 +#, c-format +msgid "Malformed PEM file: unknown private key cipher '%s'." +msgstr "" +"Неправилен сертификат във формат PEM – непознат шифър „%s“ за частния ключ." + +#: ../libnm-util/crypto.c:222 +#, c-format +msgid "Could not decode private key." +msgstr "Грешка при декодиране на частния ключ." + +#: ../libnm-util/crypto.c:267 +#, c-format +msgid "PEM certificate '%s' had no end tag '%s'." +msgstr "Крайният етикет „%2$s“ липсва в сертификата във формат PEM — „%1$s“." + +#: ../libnm-util/crypto.c:277 +#, c-format +msgid "Failed to decode certificate." +msgstr "Грешка при декодиране на сертификата." + +#: ../libnm-util/crypto.c:286 +#, c-format +msgid "Not enough memory to store certificate data." +msgstr "Няма достатъчно памет за съхраняване на данните от сертификата." + +#: ../libnm-util/crypto.c:294 +#, c-format +#| msgid "Not enough memory to store PEM file data." +msgid "Not enough memory to store file data." +msgstr "Няма достатъчно памет за съхраняване на данните от файла." + +#: ../libnm-util/crypto.c:324 +#, c-format +msgid "IV must be an even number of bytes in length." +msgstr "Началният вектор трябва да е с размер четен брой байта." + +#: ../libnm-util/crypto.c:333 +#, c-format +msgid "Not enough memory to store the IV." +msgstr "Няма достатъчно памет за съхраняване на началния вектор." + +#: ../libnm-util/crypto.c:344 +#, c-format +msgid "IV contains non-hexadecimal digits." +msgstr "Началният вектор съдържа низ, който не е шестнайсетично число." + +#: ../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 +#, c-format +msgid "Private key cipher '%s' was unknown." +msgstr "Шифърът за частен ключ „%s“ е непознат." + +#: ../libnm-util/crypto.c:391 +#, c-format +#| msgid "Not enough memory to store decrypted private key." +msgid "Not enough memory to decrypt private key." +msgstr "Няма достатъчно памет за разшифроване на частния ключ." + +#: ../libnm-util/crypto.c:511 +#, c-format +#| msgid "Failed to decrypt the private key: %d." +msgid "Unable to determine private key type." +msgstr "Видът на частния ключ не може да се определи." + +#: ../libnm-util/crypto.c:530 +#, c-format +msgid "Not enough memory to store decrypted private key." +msgstr "Няма достатъчно памет за съхраняване на разшифрования частен ключ." + +#: ../libnm-util/crypto_gnutls.c:49 +#| msgid "Failed to initialize the decryption context." +msgid "Failed to initialize the crypto engine." +msgstr "Грешка при инициализиране на модула за шифроване." + +#: ../libnm-util/crypto_gnutls.c:93 +#, c-format +msgid "Failed to initialize the MD5 engine: %s / %s." +msgstr "Грешка при инициализиране на модула за MD5 – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:156 +#, c-format +msgid "Invalid IV length (must be at least %zd)." +msgstr "Неправилен начален вектор (трябва да е поне %zd)." + +#: ../libnm-util/crypto_gnutls.c:165 ../libnm-util/crypto_nss.c:188 +#, c-format +msgid "Not enough memory for decrypted key buffer." +msgstr "Няма достатъчно памет за буфера за разшифрования ключ." + +#: ../libnm-util/crypto_gnutls.c:173 +#, c-format +msgid "Failed to initialize the decryption cipher context: %s / %s." +msgstr "Грешка при инициализиране на контекста за разшифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:182 +#, c-format +msgid "Failed to set symmetric key for decryption: %s / %s." +msgstr "Грешка при задаване на симетричния ключ за разшифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:191 +#, c-format +msgid "Failed to set IV for decryption: %s / %s." +msgstr "Грешка при задаване на началния вектор за разшифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:200 +#, c-format +msgid "Failed to decrypt the private key: %s / %s." +msgstr "Грешка при разшифроване на частния ключ – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:267 +#, c-format +#| msgid "Failed to decrypt the private key: %d." +msgid "Failed to decrypt the private key: unexpected padding length." +msgstr "" +"Грешка при разшифроване на частния ключ – неочаквана дължина на " +"подравняването." + +#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:278 +#, c-format +#| msgid "Failed to decrypt the private key: %d." +msgid "Failed to decrypt the private key." +msgstr "Грешка при разшифроване на частния ключ." + +#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:356 +#, c-format +msgid "Could not allocate memory for encrypting." +msgstr "Няма достатъчно памет за буфер при шифроване." + +#: ../libnm-util/crypto_gnutls.c:294 +#, c-format +#| msgid "Failed to initialize the decryption cipher context: %s / %s." +msgid "Failed to initialize the encryption cipher context: %s / %s." +msgstr "Грешка при инициализиране на контекста за шифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:303 +#, c-format +#| msgid "Failed to set symmetric key for decryption: %s / %s." +msgid "Failed to set symmetric key for encryption: %s / %s." +msgstr "Грешка при задаване на симетричния ключ за шифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:313 +#, c-format +#| msgid "Failed to set IV for decryption: %s / %s." +msgid "Failed to set IV for encryption: %s / %s." +msgstr "Грешка при задаване на началния вектор за шифроване – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:322 +#, c-format +#| msgid "Failed to decrypt the private key: %s / %s." +msgid "Failed to encrypt the data: %s / %s." +msgstr "Грешка при шифроване на данните – %s / %s." + +#: ../libnm-util/crypto_gnutls.c:362 +#, c-format +msgid "Error initializing certificate data: %s" +msgstr "Грешка при инициализиране на данните от сертификата – %s" + +#: ../libnm-util/crypto_gnutls.c:384 +#, c-format +msgid "Couldn't decode certificate: %s" +msgstr "Грешка при декодиране на сертификата – %s" + +#: ../libnm-util/crypto_gnutls.c:408 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %s" +msgstr "Грешка при инициализиране на модула за декодиране на PKCS#12 – %s" + +#: ../libnm-util/crypto_gnutls.c:421 +#, c-format +#| msgid "Couldn't decode certificate: %s" +msgid "Couldn't decode PKCS#12 file: %s" +msgstr "Грешка при декодиране на файла PKCS#12 – %s" + +#: ../libnm-util/crypto_gnutls.c:433 +#, c-format +#| msgid "Couldn't decode certificate: %s" +msgid "Couldn't verify PKCS#12 file: %s" +msgstr "Грешка при проверка на файла PKCS#12 – %s" + +#: ../libnm-util/crypto_nss.c:56 +#, c-format +#| msgid "Failed to initialize the MD5 engine: %s / %s." +msgid "Failed to initialize the crypto engine: %d." +msgstr "Грешка при инициализиране на модула за шифроване – %d." + +#: ../libnm-util/crypto_nss.c:111 +#, c-format +msgid "Failed to initialize the MD5 context: %d." +msgstr "Грешка при инициализиране на контекста за MD5 – %d." + +#: ../libnm-util/crypto_nss.c:179 +#, c-format +msgid "Invalid IV length (must be at least %d)." +msgstr "Неправилна дължина на началния вектор (трябва да е поне %d)." + +#: ../libnm-util/crypto_nss.c:196 +#, c-format +msgid "Failed to initialize the decryption cipher slot." +msgstr "Грешка при инициализиране на буфер за шифъра за разшифроване." + +#: ../libnm-util/crypto_nss.c:206 +#, c-format +msgid "Failed to set symmetric key for decryption." +msgstr "Грешка при задаване на симетричния ключ за разшифроване." + +#: ../libnm-util/crypto_nss.c:216 +#, c-format +msgid "Failed to set IV for decryption." +msgstr "Грешка при задаване на началния вектор за разшифроване." + +#: ../libnm-util/crypto_nss.c:224 +#, c-format +msgid "Failed to initialize the decryption context." +msgstr "Грешка при инициализиране на контекста за разшифроване." + +#: ../libnm-util/crypto_nss.c:237 +#, c-format +msgid "Failed to decrypt the private key: %d." +msgstr "Грешка при разшифроване на частния ключ – %d." + +#: ../libnm-util/crypto_nss.c:245 +#, c-format +#| msgid "Failed to decrypt the private key: %d." +msgid "Failed to decrypt the private key: decrypted data too large." +msgstr "" +"Грешка при разшифроване на частния ключ – твърде много разшифровани данни." + +#: ../libnm-util/crypto_nss.c:256 +#, c-format +msgid "Failed to finalize decryption of the private key: %d." +msgstr "Грешка при завършване на разшифроването на частния ключ – %d." + +#: ../libnm-util/crypto_nss.c:364 +#, c-format +#| msgid "Failed to initialize the decryption cipher slot." +msgid "Failed to initialize the encryption cipher slot." +msgstr "Грешка при инициализиране на буфер за шифъра за шифроване." + +#: ../libnm-util/crypto_nss.c:372 +#, c-format +#| msgid "Failed to set symmetric key for decryption." +msgid "Failed to set symmetric key for encryption." +msgstr "Грешка при задаване на симетричния ключ за шифроване." + +#: ../libnm-util/crypto_nss.c:380 +#, c-format +#| msgid "Failed to set IV for decryption." +msgid "Failed to set IV for encryption." +msgstr "Грешка при задаване на началния вектор за шифроване." + +#: ../libnm-util/crypto_nss.c:388 +#, c-format +#| msgid "Failed to initialize the decryption context." +msgid "Failed to initialize the encryption context." +msgstr "Грешка при инициализиране на контекста за шифроване." + +#: ../libnm-util/crypto_nss.c:396 +#, c-format +#| msgid "Failed to decrypt the private key: %d." +msgid "Failed to encrypt: %d." +msgstr "Грешка при шифроване – %d." + +#: ../libnm-util/crypto_nss.c:404 +#, c-format +msgid "Unexpected amount of data after encrypting." +msgstr "Неочакван обем данни след шифроване." + +#: ../libnm-util/crypto_nss.c:447 +#, c-format +msgid "Couldn't decode certificate: %d" +msgstr "Грешка при декодиране на сертификата – %d" + +#: ../libnm-util/crypto_nss.c:482 +#, c-format +msgid "Couldn't convert password to UCS2: %d" +msgstr "Грешка при преобразуване на паролата в UCS2 – %d" + +#: ../libnm-util/crypto_nss.c:510 +#, c-format +msgid "Couldn't initialize PKCS#12 decoder: %d" +msgstr "Грешка при инициализиране на модула за декодиране на PKCS#12 – %d" + +#: ../libnm-util/crypto_nss.c:519 +#, c-format +#| msgid "Couldn't decode certificate: %d" +msgid "Couldn't decode PKCS#12 file: %d" +msgstr "Грешка при декодиране на файла с PKCS#12 – %d" + +#: ../libnm-util/crypto_nss.c:528 +#, c-format +#| msgid "Couldn't decode certificate: %d" +msgid "Couldn't verify PKCS#12 file: %d" +msgstr "Грешка при проверка на файла с PKCS#12 – %d" + +#: ../libnm-util/crypto_nss.c:557 +#| msgid "Could not decode private key." +msgid "Could not generate random data." +msgstr "Грешка при генериране на случайни числа." + +#: ../libnm-util/nm-utils.c:1975 +#, c-format +#| msgid "Not enough memory to create private key decryption key." +msgid "Not enough memory to make encryption key." +msgstr "Няма достатъчно памет за създаването на ключ за шифроване." + +#: ../libnm-util/nm-utils.c:2085 +#| msgid "Not enough memory to store PEM file data." +msgid "Could not allocate memory for PEM file creation." +msgstr "Няма достатъчно памет за създаването на файл във формат PEM." + +#: ../libnm-util/nm-utils.c:2097 +#, c-format +msgid "Could not allocate memory for writing IV to PEM file." +msgstr "" +"Няма достатъчно памет за записването на началния вектор във файл във формат " +"PEM." + +#: ../libnm-util/nm-utils.c:2109 +#, c-format +msgid "Could not allocate memory for writing encrypted key to PEM file." +msgstr "" +"Няма достатъчно памет за записване на ключа за шифроване във файл във формат " +"PEM." + +#: ../libnm-util/nm-utils.c:2128 +#, c-format +#| msgid "Not enough memory to store PEM file data." +msgid "Could not allocate memory for PEM file data." +msgstr "Няма достатъчно памет за данните за файла във формат PEM." + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 +msgid "Connection sharing via a protected WiFi network" +msgstr "Споделяне на връзката през защитена безжична мрежа" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:2 +msgid "Connection sharing via an open WiFi network" +msgstr "Споделяне на връзката през отворена безжична мрежа" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:3 +msgid "Modify persistent system hostname" +msgstr "Промяна на името на хоста" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:4 +#| msgid "No active connections!" +msgid "Modify system connections" +msgstr "Промяна на системни връзки" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:5 +msgid "System policy prevents modification of system settings" +msgstr "Политиката на системата не позволява промяна на системните настройки" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 +msgid "System policy prevents modification of the persistent system hostname" +msgstr "Политиката на системата не позволява промяна на името на хоста" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 +msgid "System policy prevents sharing connections via a protected WiFi network" +msgstr "" +"Политиката на системата не позволява споделяне на връзки през защитена " +"безжична мрежа" + +#: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 +msgid "System policy prevents sharing connections via an open WiFi network" +msgstr "" +"Политиката на системата не позволява споделяне на връзки през отворена " +"безжична мрежа" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +#| msgid "No network connection" +msgid "Allow control of network connections" +msgstr "Разрешаване на управлението на мрежовите връзки" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +msgid "Allow use of user-specific connections" +msgstr "Разрешаване на използването на потребителски връзки" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Enable or disable WiFi devices" +msgstr "Включване и изключване на устройства за безжични мрежи" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable mobile broadband devices" +msgstr "Включване и изключване на устройства за достъп до мобилни мрежи" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +#| msgid "Enable _Networking" +msgid "Enable or disable system networking" +msgstr "Включване и изключване на мрежата на системно ниво" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "" +"Put NetworkManager to sleep or wake it up (should only be used by system " +"power management)" +msgstr "" +"Приспиване и събуждане на NetworkManager (за целите на модула за управление " +"на захранването на системата)" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "System policy prevents control of network connections" +msgstr "Политиката на системата не позволява управляване на мрежовите връзки" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "" +"Политиката на системата не позволява включване и изключване на устройства за " +"безжични мрежи" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "" +"Политиката на системата не позволява включване и изключване на устройства за " +"мобилни мрежи" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "System policy prevents enabling or disabling system networking" +msgstr "" +"Политиката на системата не позволява включване и изключване на мрежата на " +"системно ниво" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "" +"Политиката на системата не позволява приспиване и събуждане на NetworkManager" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +msgid "System policy prevents use of user-specific connections" +msgstr "" +"Политиката на системата не позволява използване на потребителски връзки" + +#: ../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 "грешка при обработката на следното съобщение от мрежовия слой: %s" +msgstr "грешка при обработката на съобщение от мрежовия слой – %s" -#: ../src/nm-netlink-monitor.c:250 -#, c-format -msgid "unable to allocate netlink handle for monitoring link status: %s" -msgstr "" -"не може да се зададе модул в мрежовия слой за наблюдение на състоянието на " -"връзката — %s" - -#: ../src/nm-netlink-monitor.c:260 -#, c-format -msgid "unable to connect to netlink for monitoring link status: %s" -msgstr "" -"не може да се осъществи връзка с мрежовия слой за наблюдение на състоянието " -"на връзката — %s" - -#: ../src/nm-netlink-monitor.c:268 -#, c-format -msgid "unable to join netlink group for monitoring link status: %s" -msgstr "" -"не може да се осъществи присъединяване към групата на мрежовия слой за " -"наблюдение на състоянието на връзката — %s" - -#: ../src/nm-netlink-monitor.c:276 -#, c-format -msgid "unable to allocate netlink link cache for monitoring link status: %s" -msgstr "" -"не може да се зададе временна памет в мрежовия слой за наблюдение на " -"състоянието на връзката — %s" - -#: ../src/nm-netlink-monitor.c:494 -#, c-format +#: ../src/nm-netlink-monitor.c:214 msgid "error occurred while waiting for data on socket" msgstr "грешка при изчакване за данни през гнездо" -#: ../src/NetworkManager.c:250 +#: ../src/nm-netlink-monitor.c:254 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "" +"грешка при свързване с мрежовия слой за наблюдение на състоянието на " +"връзката — %s" + +#: ../src/nm-netlink-monitor.c:265 +#, c-format +#| msgid "unable to allocate netlink handle for monitoring link status: %s" +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" +"грешка при включване на предаването на удостоверения в модула на мрежовия " +"слой — %s" + +#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "" +"грешка при задаване на модул в мрежовия слой за наблюдение на състоянието на " +"връзката — %s" + +#: ../src/nm-netlink-monitor.c:376 +#, c-format +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" +"грешка при заделяне на временна памет в мрежовия слой за наблюдение на " +"състоянието на връзката — %s" + +#: ../src/nm-netlink-monitor.c:502 +#, c-format +#| msgid "unable to join netlink group for monitoring link status: %s" +msgid "unable to join netlink group: %s" +msgstr "грешка при присъединяване към групата на мрежовия слой — %s" + +#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#, c-format +#| msgid "error processing netlink message: %s" +msgid "error updating link cache: %s" +msgstr "грешка при обновяване на информацията за връзките – %s" + +#: ../src/main.c:499 #, c-format msgid "Invalid option. Please use --help to see a list of valid options.\n" msgstr "Неправилна опция. Ползвайте --help, за да видите списъка с опции.\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:87 +#: ../src/main.c:570 +#, c-format +#| msgid "Invalid option. Please use --help to see a list of valid options.\n" +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "%s. Ползвайте --help, за да видите списъка с опции.\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 msgid "# Created by NetworkManager\n" msgstr "# Създаден от NetworkManager\n" -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:93 +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 #, c-format msgid "" "# Merged from %s\n" @@ -72,204 +1841,52 @@ msgstr "" "# Слят от %s\n" "\n" -#: ../src/dns-manager/nm-dns-manager.c:117 -msgid "NOTE: the glibc resolver does not support more than 3 nameservers." -msgstr "БЕЛЕЖКА: стандартно glibc поддържа максимум 3 сървъра за имена." +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "не е намерен подходящ клиент за DHCP." -#: ../src/dns-manager/nm-dns-manager.c:119 +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "Не е намерен „dhclient“." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "Не е намерен „dhcpcd“." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "Клиентът за DHCP „%s“ не се поддържа" + +#: ../src/logging/nm-logging.c:146 +#, c-format +msgid "Unknown log level '%s'" +msgstr "Непознат праг за съобщенията в журнала „%s“" + +#: ../src/logging/nm-logging.c:171 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "Непознат домейн за съобщенията в журнала „%s“" + +#: ../src/dns-manager/nm-dns-manager.c:384 +#| msgid "NOTE: the glibc resolver does not support more than 3 nameservers." +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "ЗАБЕЛЕЖКА: libc може да не поддържа повече от 3 сървъра за имена." + +#: ../src/dns-manager/nm-dns-manager.c:386 msgid "The nameservers listed below may not be recognized." -msgstr "Сървърите за имена отдолу могат да не бъдат разпознати." +msgstr "Долните сървъри за имена може да не бъдат разпознати." -#: ../system-settings/src/main.c:365 +#: ../src/system-settings/nm-default-wired-connection.c:157 #, c-format msgid "Auto %s" msgstr "Автоматично %s" -#: ../libnm-util/crypto.c:125 -#, c-format -msgid "PEM key file had no end tag '%s'." -msgstr "Крайният етикет „%s“ липсва в сертификат във формат PEM." - -#: ../libnm-util/crypto.c:135 -#, c-format -msgid "Doesn't look like a PEM private key file." -msgstr "Това не изглежда да е сертификат във формат PEM с частен ключ." - -#: ../libnm-util/crypto.c:143 -#, c-format -msgid "Not enough memory to store PEM file data." -msgstr "" -"Няма достатъчно памет за запазването на данните от сертификата във формат " -"PEM." - -#: ../libnm-util/crypto.c:159 -#, c-format -msgid "Malformed PEM file: Proc-Type was not first tag." -msgstr "" -"Неправилен сертификат във формат PEM: първият етикет не беше „Proc-Type“." - -#: ../libnm-util/crypto.c:167 -#, c-format -msgid "Malformed PEM file: unknown Proc-Type tag '%s'." -msgstr "" -"Неправилен сертификат във формат PEM: непознат етикет „Proc-Type“ — „%s“." - -#: ../libnm-util/crypto.c:177 -#, c-format -msgid "Malformed PEM file: DEK-Info was not the second tag." -msgstr "" -"Неправилен сертификат във формат PEM: вторият етикет не беше „DEK-Info“." - -#: ../libnm-util/crypto.c:188 -#, c-format -msgid "Malformed PEM file: no IV found in DEK-Info tag." -msgstr "" -"Неправилен сертификат във формат PEM: липсва първоначален вектор в етикета " -"„DEK-Info“." - -#: ../libnm-util/crypto.c:195 -#, c-format -msgid "Malformed PEM file: invalid format of IV in DEK-Info tag." -msgstr "" -"Неправилен сертификат във формат PEM: неправилен първоначален вектор в " -"етикета „DEK-Info“." - -#: ../libnm-util/crypto.c:208 -#, c-format -msgid "Malformed PEM file: unknown private key cipher '%s'." -msgstr "" -"Неправилен сертификат във формат PEM: непознат шифър за частен ключ „%s“." - -#: ../libnm-util/crypto.c:227 -#, c-format -msgid "Could not decode private key." -msgstr "Частният ключ не може да бъде декодиран." - -#: ../libnm-util/crypto.c:271 -#, c-format -msgid "PEM certificate '%s' had no end tag '%s'." -msgstr "Крайният етикет „1$%s“ липсва в сертификата във формат PEM — „2$%s“." - -#: ../libnm-util/crypto.c:281 -#, c-format -msgid "Failed to decode certificate." -msgstr "Сертификатът не може да бъде декодиран." - -#: ../libnm-util/crypto.c:290 ../libnm-util/crypto.c:298 -#, c-format -msgid "Not enough memory to store certificate data." -msgstr "Няма памет за запазването на данните от сертификат." - -#: ../libnm-util/crypto.c:328 -#, c-format -msgid "IV must be an even number of bytes in length." -msgstr "Началният вектор трябва да е четен брой байта на дължина." - -#: ../libnm-util/crypto.c:337 -#, c-format -msgid "Not enough memory to store the IV." -msgstr "Няма достатъчно памет за запазването на началния вектор." - -#: ../libnm-util/crypto.c:348 -#, c-format -msgid "IV contains non-hexadecimal digits." -msgstr "Началният вектор съдържа низ, който не е шестнайсетично число." - -#: ../libnm-util/crypto.c:386 ../libnm-util/crypto_gnutls.c:126 -#: ../libnm-util/crypto_nss.c:136 -#, c-format -msgid "Private key cipher '%s' was unknown." -msgstr "Шифърът за частен ключ „%s“ е непознат." - -#: ../libnm-util/crypto.c:395 -#, c-format -msgid "Not enough memory to create private key decryption key." -msgstr "Няма достатъчно памет за създаването на частен ключ за дешифриране." - -#: ../libnm-util/crypto.c:513 -#, c-format -msgid "Not enough memory to store decrypted private key." -msgstr "Няма достатъчно памет за запазването на частен ключ за дешифриране." - -#: ../libnm-util/crypto_gnutls.c:73 -#, c-format -msgid "Failed to initialize the MD5 engine: %s / %s." -msgstr "Модулът за MD5 не може да бъде инициализиран: %s / %s." - -#: ../libnm-util/crypto_gnutls.c:135 ../libnm-util/crypto_nss.c:145 -#, c-format -msgid "Not enough memory for decrypted key buffer." -msgstr "Няма достатъчно памет за буфера за дешифриране." - -#: ../libnm-util/crypto_gnutls.c:143 -#, c-format -msgid "Failed to initialize the decryption cipher context: %s / %s." -msgstr "Контекстът за дешифриране не може да бъде инициализиран: %s / %s." - -#: ../libnm-util/crypto_gnutls.c:152 -#, c-format -msgid "Failed to set symmetric key for decryption: %s / %s." -msgstr "Симетричният ключ за дешифриране не може да бъде зададен: %s / %s." - -#: ../libnm-util/crypto_gnutls.c:161 -#, c-format -msgid "Failed to set IV for decryption: %s / %s." -msgstr "Началният вектор за дешифриране не може да бъде зададен: %s / %s." - -#: ../libnm-util/crypto_gnutls.c:170 -#, c-format -msgid "Failed to decrypt the private key: %s / %s." -msgstr "Частният ключ не може да бъде дешифриран: %s / %s." - -#: ../libnm-util/crypto_gnutls.c:208 -#, c-format -msgid "Error initializing certificate data: %s" -msgstr "Грешка при инициализиране на данните от сертификата: %s" - -#: ../libnm-util/crypto_gnutls.c:220 -#, c-format -msgid "Couldn't decode certificate: %s" -msgstr "Сертификатът не може да бъде декодиран: %s" - -#: ../libnm-util/crypto_nss.c:78 -#, c-format -msgid "Failed to initialize the MD5 context: %d." -msgstr "Контекстът за MD5 не може да бъде инициализиран: %d." - -#: ../libnm-util/crypto_nss.c:153 -#, c-format -msgid "Failed to initialize the decryption cipher slot." -msgstr "Буферът за шифъра за дешифриране не може да бъде инициализиран." - -#: ../libnm-util/crypto_nss.c:163 -#, c-format -msgid "Failed to set symmetric key for decryption." -msgstr "Симетричният ключ за дешифриране не може да бъде зададен." - -#: ../libnm-util/crypto_nss.c:173 -#, c-format -msgid "Failed to set IV for decryption." -msgstr "Началният вектор за дешифриране не може да бъде зададен." - -#: ../libnm-util/crypto_nss.c:181 -#, c-format -msgid "Failed to initialize the decryption context." -msgstr "Контекстът за дешифриране не може да бъде инициализиран." - -#: ../libnm-util/crypto_nss.c:194 -#, c-format -msgid "Failed to decrypt the private key: %d." -msgstr "Частният ключ не може да бъде дешифриран: %d." - -#: ../libnm-util/crypto_nss.c:206 -#, c-format -msgid "Failed to finalize decryption of the private key: %d." -msgstr "Дешифрирането на частния ключ не може да приключи: %d." - -#: ../libnm-util/crypto_nss.c:250 -#, c-format -msgid "Couldn't decode certificate: %d" -msgstr "Сертификатът не може да бъде дешифриран: %d" +#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 +#: ../system-settings/plugins/ifnet/connection_parser.c:49 +#| msgid "Open System" +msgid "System" +msgstr "Системна" #~ msgid "Passphrase for wireless network %s" #~ msgstr "Парола за безжичната мрежа %s" @@ -277,33 +1894,18 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "Connection to the wireless network '%s' failed." #~ msgstr "Неуспешно свързване към безжичната мрежа „%s“." -#~ msgid "Connection to the wired network failed." -#~ msgstr "Неуспешно свързване към кабелната мрежа." - #~ msgid "Error displaying connection information:" #~ msgstr "Грешка при показване на информацията за връзката:" #~ msgid "Could not find some required resources (the glade file)!" #~ msgstr "Някои ресурси не бяха открити (файлът на glade)!" -#~ msgid "No active connections!" -#~ msgstr "Няма действащи връзки!" - -#~ msgid "%d Mb/s" -#~ msgstr "%d Mb/s" - #~ msgid "Wired Ethernet (%s)" #~ msgstr "Кабелен Етернет (%s)" #~ msgid "Wireless Ethernet (%s)" #~ msgstr "Безжичен Етернет (%s)" -#~ msgid "Unknown" -#~ msgstr "неопределима" - -#~ msgid "NetworkManager Applet" -#~ msgstr "Аплетът NetworkManager" - #~ msgid "" #~ "Copyright © 2004-2006 Red Hat, Inc.\n" #~ "Copyright © 2005-2006 Novell, Inc." @@ -351,9 +1953,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ "Връзката към ВЧМ „%s“ се провали поради грешка при стартиране на " #~ "програмата за ВЧМ." -#~ msgid "VPN Connect Failure" -#~ msgstr "Грешка при свързване към ВЧМ" - #~ msgid "Could not start the VPN connection '%s' due to a connection error." #~ msgstr "Връзката към ВЧМ „%s“ се провали поради грешка при свързването." @@ -386,9 +1985,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "The network device \"%s (%s)\" does not support link detection." #~ msgstr "Мрежовото устройство „%s (%s)“ не поддържа засичане на връзка." -#~ msgid "(unknown)" -#~ msgstr "(не се знае)" - #~ msgid "Preparing device %s for the wired network..." #~ msgstr "Подготвяне на устройството „%s“ за кабелната мрежа…" @@ -419,12 +2015,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "NetworkManager is not running" #~ msgstr "NetworkManager не е включен" -#~ msgid "Networking disabled" -#~ msgstr "Мрежата е изключена" - -#~ msgid "No network connection" -#~ msgstr "Няма връзка към мрежа" - #~ msgid "Wired network connection" #~ msgstr "Връзка към кабелна мрежа" @@ -437,9 +2027,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "VPN connection to '%s'" #~ msgstr "Връзка по ВЧМ към „%s“" -#~ msgid "VPN connecting to '%s'" -#~ msgstr "Свързване по ВЧМ към „%s“" - #~ msgid "_Connect to Other Wireless Network..." #~ msgstr "_Свързване към други безжични мрежи…" @@ -470,9 +2057,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "NetworkManager is not running..." #~ msgstr "NetworkManager не е включен…" -#~ msgid "Enable _Networking" -#~ msgstr "_Включване на мрежата" - #~ msgid "Enable _Wireless" #~ msgstr "Включване на _безжичната мрежа" @@ -492,39 +2076,21 @@ msgstr "Сертификатът не може да бъде дешифрира #~ "Аплетът NetworkManager не може да открие необходим ресурс. Програмата не " #~ "може да продължи работа.\n" -#~ msgid "Open System" -#~ msgstr "Открита система" - #~ msgid "Shared Key" #~ msgstr "Споделен ключ" #~ msgid "Automatic (Default)" #~ msgstr "Автоматично (по подразбиране)" -#~ msgid "AES-CCMP" -#~ msgstr "AES-CCMP" - -#~ msgid "TKIP" -#~ msgstr "TKIP" - #~ msgid "Dynamic WEP" #~ msgstr "Динамичен WEP" -#~ msgid "None" -#~ msgstr "Без" - #~ msgid "WEP 64/128-bit ASCII" #~ msgstr "40/128-битов ключ за WEP в ASCII" #~ msgid "WEP 64/128-bit Hex" #~ msgstr "40/128-битов шестнадесетичен ключ за WEP" -#~ msgid "WEP 128-bit Passphrase" -#~ msgstr "128 битова парола WEP" - -#~ msgid "PEAP" -#~ msgstr "PEAP" - #~ msgid "TLS" #~ msgstr "TLS" @@ -534,9 +2100,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "WPA2 Enterprise" #~ msgstr "WPA2 Enterprise" -#~ msgid "WPA Enterprise" -#~ msgstr "WPA Enterprise" - #~ msgid "WPA2 Personal" #~ msgstr "WPA2 Personal" @@ -683,15 +2246,9 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "CA Certificate File:" #~ msgstr "Файл със сертификатите на сертифициращите организации:" -#~ msgid "C_onnect" -#~ msgstr "_Свързване" - #~ msgid "Client Certificate File:" #~ msgstr "Файл с клиентските сертификати:" -#~ msgid "Connection Information" -#~ msgstr "Информация за връзката" - #~ msgid "Default Route:" #~ msgstr "Маршрут по подразбиране:" @@ -842,9 +2399,6 @@ msgstr "Сертификатът не може да бъде дешифрира #~ "софтуер за връзка към ВЧМ от вида „%1$s“. Свържете се със системния " #~ "администратор." -#~ msgid "Error retrieving VPN connection '%s'" -#~ msgstr "Грешка при получаване на информация за връзката към ВЧМ „%s“" - #~ msgid "" #~ "Could not find the UI files for VPN connection type '%s'. Contact your " #~ "system administrator." @@ -897,36 +2451,24 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "Manage Virtual Private Network Connections" #~ msgstr "Управление на връзките към ВЧМ" -#~ msgid "VPN Connections" -#~ msgstr "Връзки към ВЧМ" - #~ msgid "40-bit WEP" #~ msgstr "40-битов WEP" #~ msgid "104-bit WEP" #~ msgstr "104-битов WEP" -#~ msgid "WPA TKIP" -#~ msgstr "WPA TKIP" - #~ msgid "WPA CCMP" #~ msgstr "WPA CCMP" #~ msgid "WPA Automatic" #~ msgstr "Автоматичен WPA" -#~ msgid "WPA2 TKIP" -#~ msgstr "WPA2 TKIP" - #~ msgid "WPA2 CCMP" #~ msgstr "WPA2 CCMP" #~ msgid "WPA2 Automatic" #~ msgstr "Автоматичен WPA2" -#~ msgid "none" -#~ msgstr "липсва" - #~ msgid "operation took too long" #~ msgstr "операцията продължи прекалено дълго" @@ -949,14 +2491,5 @@ msgstr "Сертификатът не може да бъде дешифрира #~ msgid "You are now connected to the wired network." #~ msgstr "Свързани сте към кабелната мрежа." -#~ msgid "Connection Established" -#~ msgstr "Връзката е осъществена" - -#~ msgid "Disconnected" -#~ msgstr "Без връзка" - -#~ msgid "The network connection has been disconnected." -#~ msgstr "Връзката към мрежата е прекъсната." - #~ msgid "LEAP" #~ msgstr "LEAP" diff --git a/po/es.po b/po/es.po index d002f7751..74746f4a4 100644 --- a/po/es.po +++ b/po/es.po @@ -1,5 +1,5 @@ # translation of es.po to Spanish -# translation of NetworkManager.HEAD.po to +# translation of NetworkManager.master.po to # Traducción de NetworkManager al español. # Copyright (C) Spanish translation for NetworkManager # This file is distributed under the same license as the NetworkManager package. @@ -12,11 +12,11 @@ # msgid "" msgstr "" -"Project-Id-Version: es\n" +"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-17 15:25+0000\n" -"PO-Revision-Date: 2010-09-18 11:01+0200\n" +"POT-Creation-Date: 2010-09-21 03:25+0000\n" +"PO-Revision-Date: 2010-09-25 11:36+0200\n" "Last-Translator: Jorge González \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -94,7 +94,12 @@ msgstr "AUTOCONECTAR" msgid "READONLY" msgstr "SÓLOLECTURA" -#: ../cli/src/connections.c:158 +#. 7 +#: ../cli/src/connections.c:83 +msgid "DBUS-PATH" +msgstr "RUTA-DBUS" + +#: ../cli/src/connections.c:159 #, c-format msgid "" "Usage: nmcli con { COMMAND | help }\n" @@ -115,37 +120,37 @@ msgstr "" "]\n" " down id | uuid \n" -#: ../cli/src/connections.c:198 ../cli/src/connections.c:537 +#: ../cli/src/connections.c:199 ../cli/src/connections.c:540 #, c-format msgid "Error: 'con list': %s" msgstr "Error: «con list»: %s" -#: ../cli/src/connections.c:200 ../cli/src/connections.c:539 +#: ../cli/src/connections.c:201 ../cli/src/connections.c:542 #, c-format msgid "Error: 'con list': %s; allowed fields: %s" msgstr "Error: «con list»: %s; campos permitidos: %s" -#: ../cli/src/connections.c:208 +#: ../cli/src/connections.c:209 msgid "Connection details" msgstr "Detalles de conexiones" -#: ../cli/src/connections.c:382 ../cli/src/connections.c:602 +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 msgid "system" msgstr "sistema" -#: ../cli/src/connections.c:382 ../cli/src/connections.c:602 +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 msgid "user" msgstr "usuario" -#: ../cli/src/connections.c:384 +#: ../cli/src/connections.c:386 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/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 #: ../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 @@ -164,8 +169,8 @@ msgstr "nunca" msgid "yes" msgstr "sí" -#: ../cli/src/connections.c:385 ../cli/src/connections.c:386 -#: ../cli/src/connections.c:603 ../cli/src/connections.c:606 +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 #: ../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 @@ -184,272 +189,272 @@ msgstr "sí" msgid "no" msgstr "no" -#: ../cli/src/connections.c:458 ../cli/src/connections.c:501 +#: ../cli/src/connections.c:461 ../cli/src/connections.c:504 msgid "System connections" msgstr "Conexiones de sistema" -#: ../cli/src/connections.c:463 ../cli/src/connections.c:514 +#: ../cli/src/connections.c:466 ../cli/src/connections.c:517 msgid "User connections" msgstr "Conexiones de 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/connections.c:478 ../cli/src/connections.c:1338 +#: ../cli/src/connections.c:1354 ../cli/src/connections.c:1363 +#: ../cli/src/connections.c:1374 ../cli/src/connections.c:1459 #: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074 #: ../cli/src/devices.c:1081 #, c-format msgid "Error: %s argument is missing." msgstr "Error: falta el argumento %s." -#: ../cli/src/connections.c:488 +#: ../cli/src/connections.c:491 #, c-format msgid "Error: %s - no such connection." msgstr "Error: %s - no hay tal conexión." -#: ../cli/src/connections.c:520 ../cli/src/connections.c:1384 -#: ../cli/src/connections.c:1474 ../cli/src/devices.c:785 +#: ../cli/src/connections.c:523 ../cli/src/connections.c:1387 +#: ../cli/src/connections.c:1477 ../cli/src/devices.c:785 #: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087 #, c-format msgid "Unknown parameter: %s\n" msgstr "Parámetro desconocido: %s\n" -#: ../cli/src/connections.c:529 +#: ../cli/src/connections.c:532 #, c-format msgid "Error: no valid parameter specified." msgstr "Error: no se especificó un parámetro válido." -#: ../cli/src/connections.c:544 ../cli/src/connections.c:1577 +#: ../cli/src/connections.c:547 ../cli/src/connections.c:1580 #: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:359 #, c-format msgid "Error: %s." msgstr "Error: %s." -#: ../cli/src/connections.c:650 +#: ../cli/src/connections.c:653 #, c-format msgid "Error: 'con status': %s" msgstr "Error: «con status»: %s" -#: ../cli/src/connections.c:652 +#: ../cli/src/connections.c:655 #, c-format msgid "Error: 'con status': %s; allowed fields: %s" msgstr "Error: «con status»: %s; campos permitidos: %s" -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:662 msgid "Active connections" msgstr "Conexiones activas" -#: ../cli/src/connections.c:1027 +#: ../cli/src/connections.c:1030 #, c-format msgid "no active connection on device '%s'" msgstr "conexión no activa en el dispositivo «%s»" -#: ../cli/src/connections.c:1035 +#: ../cli/src/connections.c:1038 #, c-format msgid "no active connection or device" msgstr "conexión o dispositivo no activo" -#: ../cli/src/connections.c:1085 +#: ../cli/src/connections.c:1088 #, c-format msgid "device '%s' not compatible with connection '%s'" msgstr "dispositivo «%s» incompatible con conexión «%s»" -#: ../cli/src/connections.c:1087 +#: ../cli/src/connections.c:1090 #, c-format msgid "no device found for connection '%s'" msgstr "no se encontró dispositivo para conexión «%s»" -#: ../cli/src/connections.c:1098 +#: ../cli/src/connections.c:1101 msgid "activating" msgstr "activando" -#: ../cli/src/connections.c:1100 +#: ../cli/src/connections.c:1103 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/connections.c:1106 ../cli/src/connections.c:1129 +#: ../cli/src/connections.c:1162 ../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 msgid "unknown" msgstr "desconocido" -#: ../cli/src/connections.c:1112 +#: ../cli/src/connections.c:1115 msgid "VPN connecting (prepare)" msgstr "Conectando VPN (preparar)" -#: ../cli/src/connections.c:1114 +#: ../cli/src/connections.c:1117 msgid "VPN connecting (need authentication)" msgstr "Conectando VPN (necesita autenticación)" -#: ../cli/src/connections.c:1116 +#: ../cli/src/connections.c:1119 msgid "VPN connecting" msgstr "Conectando VPN" -#: ../cli/src/connections.c:1118 +#: ../cli/src/connections.c:1121 msgid "VPN connecting (getting IP configuration)" msgstr "Conectando VPN (obteniendo configuración IP)" -#: ../cli/src/connections.c:1120 +#: ../cli/src/connections.c:1123 msgid "VPN connected" msgstr "VPN conectada" -#: ../cli/src/connections.c:1122 +#: ../cli/src/connections.c:1125 msgid "VPN connection failed" msgstr "Falló la conexión VPN" -#: ../cli/src/connections.c:1124 +#: ../cli/src/connections.c:1127 msgid "VPN disconnected" msgstr "VPN desconectada" -#: ../cli/src/connections.c:1135 +#: ../cli/src/connections.c:1138 msgid "unknown reason" msgstr "razón desconocida" -#: ../cli/src/connections.c:1137 +#: ../cli/src/connections.c:1140 msgid "none" msgstr "ninguna" -#: ../cli/src/connections.c:1139 +#: ../cli/src/connections.c:1142 msgid "the user was disconnected" msgstr "el usuario estaba desconectado" -#: ../cli/src/connections.c:1141 +#: ../cli/src/connections.c:1144 msgid "the base network connection was interrupted" msgstr "se interrumpió la conexión de red de base" -#: ../cli/src/connections.c:1143 +#: ../cli/src/connections.c:1146 msgid "the VPN service stopped unexpectedly" msgstr "el servicio VPN se detuvo inesperadamente" -#: ../cli/src/connections.c:1145 +#: ../cli/src/connections.c:1148 msgid "the VPN service returned invalid configuration" msgstr "el servicio VPN retornó una configuración no válida" -#: ../cli/src/connections.c:1147 +#: ../cli/src/connections.c:1150 msgid "the connection attempt timed out" msgstr "se agotaron los intentos de conexión" -#: ../cli/src/connections.c:1149 +#: ../cli/src/connections.c:1152 msgid "the VPN service did not start in time" msgstr "el servicio VPN no inició a tiempo" -#: ../cli/src/connections.c:1151 +#: ../cli/src/connections.c:1154 msgid "the VPN service failed to start" msgstr "el servicio VPN falló en el inicio" -#: ../cli/src/connections.c:1153 +#: ../cli/src/connections.c:1156 msgid "no valid VPN secrets" msgstr "secretos VPN inválidos" -#: ../cli/src/connections.c:1155 +#: ../cli/src/connections.c:1158 msgid "invalid VPN secrets" msgstr "secretos VPN válidos" -#: ../cli/src/connections.c:1157 +#: ../cli/src/connections.c:1160 msgid "the connection was removed" msgstr "se eliminó la conexión" -#: ../cli/src/connections.c:1171 +#: ../cli/src/connections.c:1174 #, c-format msgid "state: %s\n" msgstr "estado: %s\n" -#: ../cli/src/connections.c:1174 ../cli/src/connections.c:1200 +#: ../cli/src/connections.c:1177 ../cli/src/connections.c:1203 #, c-format msgid "Connection activated\n" msgstr "Conexión activada\n" -#: ../cli/src/connections.c:1177 +#: ../cli/src/connections.c:1180 #, c-format msgid "Error: Connection activation failed." msgstr "Error: falló la activación de la conexión." -#: ../cli/src/connections.c:1196 +#: ../cli/src/connections.c:1199 #, c-format msgid "state: %s (%d)\n" msgstr "estado: %s (%d)\n" -#: ../cli/src/connections.c:1206 +#: ../cli/src/connections.c:1209 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Error: falló la activación de la conexión: %s." -#: ../cli/src/connections.c:1223 ../cli/src/devices.c:909 +#: ../cli/src/connections.c:1226 ../cli/src/devices.c:909 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Error: expiró la pausa de %d segundos." -#: ../cli/src/connections.c:1266 +#: ../cli/src/connections.c:1269 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Error: falló la activación de la conexión: %s" -#: ../cli/src/connections.c:1280 +#: ../cli/src/connections.c:1283 #, c-format msgid "Error: Obtaining active connection for '%s' failed." msgstr "Error: falló la obtención de conexión activa para «%s»." -#: ../cli/src/connections.c:1289 +#: ../cli/src/connections.c:1292 #, c-format msgid "Active connection state: %s\n" msgstr "Estado de la conexión activa: %s\n" -#: ../cli/src/connections.c:1290 +#: ../cli/src/connections.c:1293 #, c-format msgid "Active connection path: %s\n" msgstr "Ruta de la conexión activa: %s\n" -#: ../cli/src/connections.c:1344 ../cli/src/connections.c:1465 +#: ../cli/src/connections.c:1347 ../cli/src/connections.c:1468 #, c-format msgid "Error: Unknown connection: %s." msgstr "Error: conexión desconocida: %s." -#: ../cli/src/connections.c:1379 ../cli/src/devices.c:980 +#: ../cli/src/connections.c:1382 ../cli/src/devices.c:980 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Error: valor de pausa «%s» inválido." -#: ../cli/src/connections.c:1392 ../cli/src/connections.c:1482 +#: ../cli/src/connections.c:1395 ../cli/src/connections.c:1485 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Error: se debe especificar un id o uuid." -#: ../cli/src/connections.c:1412 +#: ../cli/src/connections.c:1415 #, c-format msgid "Error: No suitable device found: %s." msgstr "Error: no se encontró un dispositivo apropiado: %s." -#: ../cli/src/connections.c:1414 +#: ../cli/src/connections.c:1417 #, c-format msgid "Error: No suitable device found." msgstr "Error: no se encontró un dispositivo apropiado." -#: ../cli/src/connections.c:1509 +#: ../cli/src/connections.c:1512 #, c-format msgid "Warning: Connection not active\n" msgstr "Advertencia: conexión inactiva\n" -#: ../cli/src/connections.c:1566 +#: ../cli/src/connections.c:1569 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Error: comando «con» «%s» no es válido." -#: ../cli/src/connections.c:1602 +#: ../cli/src/connections.c:1605 #, c-format msgid "Error: could not connect to D-Bus." msgstr "Error: no se pudo conectar con D-Bus." -#: ../cli/src/connections.c:1609 +#: ../cli/src/connections.c:1612 #, c-format msgid "Error: Could not get system settings." msgstr "Error: no se pudo obtener configuración de sistema." -#: ../cli/src/connections.c:1617 +#: ../cli/src/connections.c:1620 #, c-format msgid "Error: Could not get user settings." msgstr "Error: No se pudo obtener configuración de usuario." -#: ../cli/src/connections.c:1627 +#: ../cli/src/connections.c:1630 #, c-format msgid "Error: Can't obtain connections: settings services are not running." msgstr "" @@ -891,17 +896,6 @@ msgstr "WWAN" #: ../cli/src/network-manager.c:64 #, 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" @@ -973,19 +967,16 @@ msgstr "no ejecutando" #: ../cli/src/network-manager.c:175 #, c-format -#| msgid "Error: could not connect to D-Bus." 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:186 #, c-format -#| msgid "Error: could not connect to D-Bus." 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:192 #, c-format -#| msgid "Error: 'con list': %s" msgid "Error in sleep: %s" msgstr "Error al dormir: %s" @@ -996,25 +987,21 @@ 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:245 -#| msgid "WiFi enabled" msgid "Networking enabled" msgstr "Red activada" #: ../cli/src/network-manager.c:256 #, c-format -#| msgid "Error: invalid 'wwan' parameter: '%s'." 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:265 #, c-format -#| msgid "Error: Could not connect to NetworkManager." msgid "Error: Sleeping status is not exported by NetworkManager." msgstr "Error: NetworkManager no exporta el estado para dormir." #: ../cli/src/network-manager.c:273 #, c-format -#| msgid "Error: invalid 'wifi' parameter: '%s'." msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." msgstr "Error: parámetro «wifi» inválido: «%s»." diff --git a/po/hu.po b/po/hu.po index f71625495..0ca4386f2 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,16 +7,1234 @@ 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: 2009-09-29 03:25+0000\n" -"PO-Revision-Date: 2010-01-03 14:57+0100\n" +"POT-Creation-Date: 2010-09-22 03:25+0000\n" +"PO-Revision-Date: 2010-10-02 20:50+0200\n" "Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \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-10-02 18:28+0000\n" "X-Generator: KBabel 1.11.4\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 +msgid "NAME" +msgstr "NÉV" + +#. 0 +#: ../cli/src/connections.c:61 ../cli/src/connections.c:76 +msgid "UUID" +msgstr "UUID" + +#. 1 +#: ../cli/src/connections.c:62 +msgid "DEVICES" +msgstr "ESZKÖZÖK" + +#. 2 +#: ../cli/src/connections.c:63 ../cli/src/connections.c:78 +msgid "SCOPE" +msgstr "HATÓKÖR" + +#. 3 +#: ../cli/src/connections.c:64 +msgid "DEFAULT" +msgstr "ALAPÉRTELMEZETT" + +#. 4 +#: ../cli/src/connections.c:65 +msgid "DBUS-SERVICE" +msgstr "DBUS-SZOLGÁLTATÁS" + +#. 5 +#: ../cli/src/connections.c:66 +msgid "SPEC-OBJECT" +msgstr "SPEC-OBJEKTUM" + +#. 6 +#: ../cli/src/connections.c:67 +msgid "VPN" +msgstr "VPN" + +#. 1 +#. 0 +#. 1 +#: ../cli/src/connections.c:77 ../cli/src/devices.c:62 ../cli/src/devices.c:90 +msgid "TYPE" +msgstr "TÍPUS" + +#. 3 +#: ../cli/src/connections.c:79 +msgid "TIMESTAMP" +msgstr "IDŐBÉLYEG" + +#. 4 +#: ../cli/src/connections.c:80 +msgid "TIMESTAMP-REAL" +msgstr "IDŐBÉLYEG-VALÓDI" + +#. 5 +#: ../cli/src/connections.c:81 +msgid "AUTOCONNECT" +msgstr "AUTO-CSATLAKOZÁS" + +#. 6 +#: ../cli/src/connections.c:82 +msgid "READONLY" +msgstr "CSAK OLVASHATÓ" + +#. 7 +#: ../cli/src/connections.c:83 +msgid "DBUS-PATH" +msgstr "DBUS-ÚTVONAL" + +#: ../cli/src/connections.c:159 +#, c-format +msgid "" +"Usage: nmcli con { COMMAND | help }\n" +" COMMAND := { list | status | up | down }\n" +"\n" +" list [id | uuid | system | user]\n" +" status\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +"]\n" +" down id | uuid \n" +msgstr "" +"Használat: nmcli con { PARANCS | help }\n" +" PARANCS := { list | status | up | down }\n" +"\n" +" list [id | uuid | system | user]\n" +" status\n" +" up id | uuid [iface ] [ap ] [--" +"nowait] [--timeout ]\n" +" down id | uuid \n" + +#: ../cli/src/connections.c:199 ../cli/src/connections.c:540 +#, c-format +msgid "Error: 'con list': %s" +msgstr "Hiba: „con list”: %s" + +#: ../cli/src/connections.c:201 ../cli/src/connections.c:542 +#, c-format +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "Hiba: „con list”: %s; engedélyezett mezők: %s" + +#: ../cli/src/connections.c:209 +msgid "Connection details" +msgstr "Kapcsolat részletei" + +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "system" +msgstr "rendszer" + +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "user" +msgstr "felhasználó" + +#: ../cli/src/connections.c:386 +msgid "never" +msgstr "soha" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +msgid "yes" +msgstr "igen" + +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +msgid "no" +msgstr "nem" + +#: ../cli/src/connections.c:461 ../cli/src/connections.c:504 +msgid "System connections" +msgstr "Rendszerkapcsolatok" + +#: ../cli/src/connections.c:466 ../cli/src/connections.c:517 +msgid "User connections" +msgstr "Felhasználói kapcsolatok" + +#: ../cli/src/connections.c:478 ../cli/src/connections.c:1338 +#: ../cli/src/connections.c:1354 ../cli/src/connections.c:1363 +#: ../cli/src/connections.c:1374 ../cli/src/connections.c:1459 +#: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074 +#: ../cli/src/devices.c:1081 +#, c-format +msgid "Error: %s argument is missing." +msgstr "Hiba: az argumentum (%s) hiányzik." + +#: ../cli/src/connections.c:491 +#, c-format +msgid "Error: %s - no such connection." +msgstr "Hiba: nincs ilyen kapcsolat: %s." + +#: ../cli/src/connections.c:523 ../cli/src/connections.c:1387 +#: ../cli/src/connections.c:1477 ../cli/src/devices.c:785 +#: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087 +#, c-format +msgid "Unknown parameter: %s\n" +msgstr "Ismeretlen paraméter: %s\n" + +#: ../cli/src/connections.c:532 +#, c-format +msgid "Error: no valid parameter specified." +msgstr "Hiba: nincs megadva érvényes paraméter." + +#: ../cli/src/connections.c:547 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:359 +#, c-format +msgid "Error: %s." +msgstr "Hiba: %s." + +#: ../cli/src/connections.c:653 +#, c-format +msgid "Error: 'con status': %s" +msgstr "Hiba: „con status”: %s" + +#: ../cli/src/connections.c:655 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "Hiba: „con status”: %s; engedélyezett mezők: %s" + +#: ../cli/src/connections.c:662 +msgid "Active connections" +msgstr "Aktív kapcsolatok" + +#: ../cli/src/connections.c:1030 +#, c-format +msgid "no active connection on device '%s'" +msgstr "nincs aktív kapcsolat a(z) „%s” eszközön" + +#: ../cli/src/connections.c:1038 +#, c-format +msgid "no active connection or device" +msgstr "nincs aktív kapcsolat vagy eszköz" + +#: ../cli/src/connections.c:1088 +#, c-format +msgid "device '%s' not compatible with connection '%s'" +msgstr "a(z) „%s” eszköz nem kompatibilis a(z) „%s” kapcsolattal" + +#: ../cli/src/connections.c:1090 +#, c-format +msgid "no device found for connection '%s'" +msgstr "nem található eszköz a(z) „%s” kapcsolathoz" + +#: ../cli/src/connections.c:1101 +msgid "activating" +msgstr "aktiválás" + +#: ../cli/src/connections.c:1103 +msgid "activated" +msgstr "aktiválva" + +#: ../cli/src/connections.c:1106 ../cli/src/connections.c:1129 +#: ../cli/src/connections.c:1162 ../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 +msgid "unknown" +msgstr "ismeretlen" + +#: ../cli/src/connections.c:1115 +msgid "VPN connecting (prepare)" +msgstr "VPN kapcsolódás (előkészítés)" + +#: ../cli/src/connections.c:1117 +msgid "VPN connecting (need authentication)" +msgstr "VPN csatlakozás (hitelesítés szükséges)" + +#: ../cli/src/connections.c:1119 +msgid "VPN connecting" +msgstr "VPN csatlakozás" + +#: ../cli/src/connections.c:1121 +msgid "VPN connecting (getting IP configuration)" +msgstr "VPN kapcsolódás (IP-beállítások lekérése)" + +#: ../cli/src/connections.c:1123 +msgid "VPN connected" +msgstr "VPN csatlakozott" + +#: ../cli/src/connections.c:1125 +msgid "VPN connection failed" +msgstr "VPN csatlakozás sikertelen" + +#: ../cli/src/connections.c:1127 +msgid "VPN disconnected" +msgstr "VPN leválasztva" + +#: ../cli/src/connections.c:1138 +msgid "unknown reason" +msgstr "ismeretlen ok" + +#: ../cli/src/connections.c:1140 +msgid "none" +msgstr "nincs" + +#: ../cli/src/connections.c:1142 +msgid "the user was disconnected" +msgstr "felhasználó leválasztva" + +#: ../cli/src/connections.c:1144 +msgid "the base network connection was interrupted" +msgstr "az alap hálózati kapcsolat megszakadt" + +#: ../cli/src/connections.c:1146 +msgid "the VPN service stopped unexpectedly" +msgstr "a VPN szolgáltatás váratlanul leállt" + +#: ../cli/src/connections.c:1148 +msgid "the VPN service returned invalid configuration" +msgstr "a VPN szolgáltatás érvénytelen beállításokat adott" + +#: ../cli/src/connections.c:1150 +msgid "the connection attempt timed out" +msgstr "a csatlakozási kísérlet túllépte az időkorlátot" + +#: ../cli/src/connections.c:1152 +msgid "the VPN service did not start in time" +msgstr "a VPN szolgáltatás nem indult el időben" + +#: ../cli/src/connections.c:1154 +msgid "the VPN service failed to start" +msgstr "a VPN szolgáltatás nem indult el" + +#: ../cli/src/connections.c:1156 +msgid "no valid VPN secrets" +msgstr "nincsenek érvényes VPN titkok" + +#: ../cli/src/connections.c:1158 +msgid "invalid VPN secrets" +msgstr "érvénytelen VPN titkok" + +#: ../cli/src/connections.c:1160 +msgid "the connection was removed" +msgstr "a kapcsolat eltávolításra került" + +#: ../cli/src/connections.c:1174 +#, c-format +msgid "state: %s\n" +msgstr "állapot: %s\n" + +#: ../cli/src/connections.c:1177 ../cli/src/connections.c:1203 +#, c-format +msgid "Connection activated\n" +msgstr "Kapcsolat aktiválva\n" + +#: ../cli/src/connections.c:1180 +#, c-format +msgid "Error: Connection activation failed." +msgstr "Hiba: a kapcsolat aktiválása meghiúsult." + +#: ../cli/src/connections.c:1199 +#, c-format +msgid "state: %s (%d)\n" +msgstr "állapot: %s (%d)\n" + +#: ../cli/src/connections.c:1209 +#, c-format +msgid "Error: Connection activation failed: %s." +msgstr "Hiba: a kapcsolat aktiválása meghiúsult: %s." + +#: ../cli/src/connections.c:1226 ../cli/src/devices.c:909 +#, c-format +msgid "Error: Timeout %d sec expired." +msgstr "Hiba: az időkorlát (%d mp) lejárt." + +#: ../cli/src/connections.c:1269 +#, c-format +msgid "Error: Connection activation failed: %s" +msgstr "Hiba: a kapcsolat aktiválása meghiúsult: %s" + +#: ../cli/src/connections.c:1283 +#, c-format +msgid "Error: Obtaining active connection for '%s' failed." +msgstr "Hiba: az aktív kapcsolat létrehozása meghiúsult ehhez: „%s”." + +#: ../cli/src/connections.c:1292 +#, c-format +msgid "Active connection state: %s\n" +msgstr "Aktív kapcsolat állapota: %s\n" + +#: ../cli/src/connections.c:1293 +#, c-format +msgid "Active connection path: %s\n" +msgstr "Aktív kapcsolat útvonala: %s\n" + +#: ../cli/src/connections.c:1347 ../cli/src/connections.c:1468 +#, c-format +msgid "Error: Unknown connection: %s." +msgstr "Hiba: ismeretlen kapcsolat: %s." + +#: ../cli/src/connections.c:1382 ../cli/src/devices.c:980 +#, c-format +msgid "Error: timeout value '%s' is not valid." +msgstr "Hiba: a(z) „%s” időkorlát érvénytelen." + +#: ../cli/src/connections.c:1395 ../cli/src/connections.c:1485 +#, c-format +msgid "Error: id or uuid has to be specified." +msgstr "Hiba: meg kell adni az id vagy uuid egyikét." + +#: ../cli/src/connections.c:1415 +#, c-format +msgid "Error: No suitable device found: %s." +msgstr "Hiba: nem található megfelelő eszköz: %s." + +#: ../cli/src/connections.c:1417 +#, c-format +msgid "Error: No suitable device found." +msgstr "Hiba: nem található megfelelő eszköz." + +#: ../cli/src/connections.c:1512 +#, c-format +msgid "Warning: Connection not active\n" +msgstr "Figyelmeztetés: a kapcsolat nem aktív\n" + +#: ../cli/src/connections.c:1569 +#, c-format +msgid "Error: 'con' command '%s' is not valid." +msgstr "Hiba: a(z) „%s” „con” parancs nem érvényes." + +#: ../cli/src/connections.c:1605 +#, c-format +msgid "Error: could not connect to D-Bus." +msgstr "Hiba: nem lehet a D-Bushoz kapcsolódni." + +#: ../cli/src/connections.c:1612 +#, c-format +msgid "Error: Could not get system settings." +msgstr "Hiba: a rendszer beállításai nem kérhetők le." + +#: ../cli/src/connections.c:1620 +#, c-format +msgid "Error: Could not get user settings." +msgstr "Hiba: a felhasználó beállításai nem kérhetők le." + +#: ../cli/src/connections.c:1630 +#, c-format +msgid "Error: Can't obtain connections: settings services are not running." +msgstr "Hiba: nem kérhetők le a kapcsolatok: a beállítószolgáltatások nem futnak." + +#. 0 +#. 9 +#: ../cli/src/devices.c:61 ../cli/src/devices.c:89 ../cli/src/devices.c:184 +msgid "DEVICE" +msgstr "ESZKÖZ" + +#. 1 +#. 4 +#. 0 +#: ../cli/src/devices.c:63 ../cli/src/devices.c:93 +#: ../cli/src/network-manager.c:36 +msgid "STATE" +msgstr "ÁLLAPOT" + +#: ../cli/src/devices.c:72 +msgid "GENERAL" +msgstr "ÁLTALÁNOS" + +#. 0 +#: ../cli/src/devices.c:73 +msgid "CAPABILITIES" +msgstr "KÉPESSÉGEK" + +#. 1 +#: ../cli/src/devices.c:74 +msgid "WIFI-PROPERTIES" +msgstr "WIFI-KÉPESSÉGEK" + +#. 2 +#: ../cli/src/devices.c:75 +msgid "AP" +msgstr "AP" + +#. 3 +#: ../cli/src/devices.c:76 +msgid "WIRED-PROPERTIES" +msgstr "VEZETÉKES-TULAJDONSÁGOK" + +#. 4 +#: ../cli/src/devices.c:77 +msgid "IP4-SETTINGS" +msgstr "IP4-BEÁLLÍTÁSOK" + +#. 5 +#: ../cli/src/devices.c:78 +msgid "IP4-DNS" +msgstr "IP4-DNS" + +#. 6 +#: ../cli/src/devices.c:79 +msgid "IP6-SETTINGS" +msgstr "IP6-BEÁLLÍTÁSOK" + +#. 7 +#: ../cli/src/devices.c:80 +msgid "IP6-DNS" +msgstr "IP6-DNS" + +#. 2 +#: ../cli/src/devices.c:91 +msgid "DRIVER" +msgstr "ILLESZTŐPROGRAM" + +#. 3 +#: ../cli/src/devices.c:92 +msgid "HWADDR" +msgstr "HWCÍM" + +#. 0 +#: ../cli/src/devices.c:102 +msgid "CARRIER-DETECT" +msgstr "HORDOZÓ-FELISMERÉS" + +#. 1 +#: ../cli/src/devices.c:103 +msgid "SPEED" +msgstr "SEBESSÉG" + +#. 0 +#: ../cli/src/devices.c:112 +msgid "CARRIER" +msgstr "HORDOZÓ" + +#. 0 +#: ../cli/src/devices.c:122 +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:123 +msgid "WPA" +msgstr "WPA" + +#. 2 +#: ../cli/src/devices.c:124 +msgid "WPA2" +msgstr "WPA2" + +#. 3 +#: ../cli/src/devices.c:125 +msgid "TKIP" +msgstr "TKIP" + +#. 4 +#: ../cli/src/devices.c:126 +msgid "CCMP" +msgstr "CCMP" + +#. 0 +#: ../cli/src/devices.c:135 ../cli/src/devices.c:146 +msgid "ADDRESS" +msgstr "CÍM" + +#. 1 +#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +msgid "PREFIX" +msgstr "ELŐTAG" + +#. 2 +#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +msgid "GATEWAY" +msgstr "ÁTJÁRÓ" + +#. 0 +#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:175 +msgid "SSID" +msgstr "SSID" + +#. 1 +#: ../cli/src/devices.c:176 +msgid "BSSID" +msgstr "BSSID" + +#. 2 +#: ../cli/src/devices.c:177 +msgid "MODE" +msgstr "MÓD" + +#. 3 +#: ../cli/src/devices.c:178 +msgid "FREQ" +msgstr "FREK" + +#. 4 +#: ../cli/src/devices.c:179 +msgid "RATE" +msgstr "SEBESSÉG" + +#. 5 +#: ../cli/src/devices.c:180 +msgid "SIGNAL" +msgstr "SZIGNÁL" + +#. 6 +#: ../cli/src/devices.c:181 +msgid "SECURITY" +msgstr "BIZTONSÁG" + +#. 7 +#: ../cli/src/devices.c:182 +msgid "WPA-FLAGS" +msgstr "WPA-JELZŐK" + +#. 8 +#: ../cli/src/devices.c:183 +msgid "RSN-FLAGS" +msgstr "RSN-JELZŐK" + +#. 10 +#: ../cli/src/devices.c:185 +msgid "ACTIVE" +msgstr "AKTÍV" + +#: ../cli/src/devices.c:208 +#, c-format +msgid "" +"Usage: nmcli dev { COMMAND | help }\n" +"\n" +" COMMAND := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [hwaddr ]]\n" +"\n" +msgstr "" +"Használat: nmcli dev { PARANCS | help }\n" +"\n" +" PARANCS := { status | list | disconnect | wifi }\n" +"\n" +" status\n" +" list [iface ]\n" +" disconnect iface [--nowait] [--timeout ]\n" +" wifi [list [iface ] [hwaddr ]]\n" +"\n" + +#: ../cli/src/devices.c:228 +msgid "unmanaged" +msgstr "kezeletlen" + +#: ../cli/src/devices.c:230 +msgid "unavailable" +msgstr "elérhetetlen" + +#: ../cli/src/devices.c:232 ../cli/src/network-manager.c:91 +msgid "disconnected" +msgstr "leválasztva" + +#: ../cli/src/devices.c:234 +msgid "connecting (prepare)" +msgstr "kapcsolódás (előkészítés)" + +#: ../cli/src/devices.c:236 +msgid "connecting (configuring)" +msgstr "kapcsolódás (konfigurálás)" + +#: ../cli/src/devices.c:238 +msgid "connecting (need authentication)" +msgstr "kapcsolódás (hitelesítés szükséges)" + +#: ../cli/src/devices.c:240 +msgid "connecting (getting IP configuration)" +msgstr "kapcsolódás (IP-beállítások lekérése)" + +#: ../cli/src/devices.c:242 ../cli/src/network-manager.c:89 +msgid "connected" +msgstr "kapcsolódva" + +#: ../cli/src/devices.c:244 +msgid "connection failed" +msgstr "kapcsolódás sikertelen" + +#: ../cli/src/devices.c:267 ../cli/src/devices.c:424 +msgid "Unknown" +msgstr "Ismeretlen" + +#: ../cli/src/devices.c:299 +msgid "(none)" +msgstr "(semmi)" + +#: ../cli/src/devices.c:324 +#, c-format +msgid "%s: error converting IP4 address 0x%X" +msgstr "%s: hiba az IP4 cím (0x%X) konvertálásakor" + +#: ../cli/src/devices.c:393 +#, c-format +msgid "%u MHz" +msgstr "%u MHz" + +#: ../cli/src/devices.c:394 +#, c-format +msgid "%u MB/s" +msgstr "%u MB/s" + +#: ../cli/src/devices.c:403 +msgid "Encrypted: " +msgstr "Titkosított: " + +#: ../cli/src/devices.c:408 +msgid "WEP " +msgstr "WEP " + +#: ../cli/src/devices.c:410 +msgid "WPA " +msgstr "WPA " + +#: ../cli/src/devices.c:412 +msgid "WPA2 " +msgstr "WPA2 " + +#: ../cli/src/devices.c:415 +msgid "Enterprise " +msgstr "Enterprise " + +#: ../cli/src/devices.c:424 +msgid "Ad-Hoc" +msgstr "Eseti" + +#: ../cli/src/devices.c:424 +msgid "Infrastructure" +msgstr "Infrastruktúra" + +#: ../cli/src/devices.c:486 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "Hiba: „dev list”: %s" + +#: ../cli/src/devices.c:488 +#, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "Hiba: „dev list”: %s; engedélyezett mezők: %s" + +#: ../cli/src/devices.c:497 +msgid "Device details" +msgstr "Eszköz részletei" + +#: ../cli/src/devices.c:527 ../cli/src/devices.c:925 +msgid "(unknown)" +msgstr "(ismeretlen)" + +#: ../cli/src/devices.c:528 +msgid "unknown)" +msgstr "ismeretlen)" + +#: ../cli/src/devices.c:554 +#, c-format +msgid "%u Mb/s" +msgstr "%u Mb/s" + +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:627 +msgid "on" +msgstr "be" + +#: ../cli/src/devices.c:627 +msgid "off" +msgstr "ki" + +#: ../cli/src/devices.c:808 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "Hiba: „dev status”: %s" + +#: ../cli/src/devices.c:810 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "Hiba: „dev status”: %s; engedélyezett mezők: %s" + +#: ../cli/src/devices.c:817 +msgid "Status of devices" +msgstr "Eszközök állapota" + +#: ../cli/src/devices.c:845 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "Hiba: „%s” argumentum hiányzik." + +#: ../cli/src/devices.c:874 ../cli/src/devices.c:1013 +#: ../cli/src/devices.c:1136 +#, c-format +msgid "Error: Device '%s' not found." +msgstr "Hiba: a(z) „%s” eszköz nem található." + +#: ../cli/src/devices.c:897 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "Siker: a(z) „%s” eszköz sikeresen leválasztva." + +#: ../cli/src/devices.c:922 +#, c-format +msgid "Error: Device '%s' (%s) disconnecting failed: %s" +msgstr "Hiba: a(z) „%s” (%s) eszköz leválasztása meghiúsult: %s" + +#: ../cli/src/devices.c:930 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Eszköz állapota: %d (%s)\n" + +#: ../cli/src/devices.c:994 +#, c-format +msgid "Error: iface has to be specified." +msgstr "Hiba: meg kell adni a csatolót." + +#: ../cli/src/devices.c:1112 +#, c-format +msgid "Error: 'dev wifi': %s" +msgstr "Hiba: „dev wifi”: %s" + +#: ../cli/src/devices.c:1114 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "Hiba: „dev wifi”: %s; engedélyezett mezők: %s" + +#: ../cli/src/devices.c:1121 +msgid "WiFi scan list" +msgstr "WiFi-keresési lista" + +#: ../cli/src/devices.c:1156 ../cli/src/devices.c:1210 +#, c-format +msgid "Error: Access point with hwaddr '%s' not found." +msgstr "Hiba: nem található a(z) „%s” hwcímű hozzáférési pont," + +#: ../cli/src/devices.c:1173 +#, c-format +msgid "Error: Device '%s' is not a WiFi device." +msgstr "Hiba: a(z) „%s” eszköz nem WiFi-eszköz." + +#: ../cli/src/devices.c:1237 +#, c-format +msgid "Error: 'dev wifi' command '%s' is not valid." +msgstr "Hiba: a „dev wifi” parancs („%s) nem érvényes." + +#: ../cli/src/devices.c:1284 +#, c-format +msgid "Error: 'dev' command '%s' is not valid." +msgstr "Hiba: a „dev” parancs („%s) nem érvényes." + +#: ../cli/src/network-manager.c:35 +msgid "RUNNING" +msgstr "FUT" + +#. 1 +#: ../cli/src/network-manager.c:37 +msgid "NET-ENABLED" +msgstr "NET-KÉPES" + +#. 2 +#: ../cli/src/network-manager.c:38 +msgid "WIFI-HARDWARE" +msgstr "WIFI-HARDVER" + +#. 3 +#: ../cli/src/network-manager.c:39 +msgid "WIFI" +msgstr "WIFI" + +#. 4 +#: ../cli/src/network-manager.c:40 +msgid "WWAN-HARDWARE" +msgstr "WWAN-HARDVER" + +#. 5 +#: ../cli/src/network-manager.c:41 +msgid "WWAN" +msgstr "WWAN" + +#: ../cli/src/network-manager.c:64 +#, 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 | 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 "" +"Használat: nmcli nm { PARANCS | help }\n" +"\n" +" PARANCS := { 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" + +#: ../cli/src/network-manager.c:85 +msgid "asleep" +msgstr "alszik" + +#: ../cli/src/network-manager.c:87 +msgid "connecting" +msgstr "csatlakozás" + +#: ../cli/src/network-manager.c:128 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "Hiba: „nm status”: %s" + +#: ../cli/src/network-manager.c:130 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "Hiba: „nm status”: %s; engedélyezett mezők: %s" + +#: ../cli/src/network-manager.c:137 +msgid "NetworkManager status" +msgstr "Hálózatkezelő állapota" + +#. Print header +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "enabled" +msgstr "engedélyezve" + +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "disabled" +msgstr "letiltva" + +#: ../cli/src/network-manager.c:152 +msgid "running" +msgstr "fut" + +#: ../cli/src/network-manager.c:152 +msgid "not running" +msgstr "nem fut" + +#: ../cli/src/network-manager.c:175 +#, c-format +#| msgid "Error: could not connect to D-Bus." +msgid "Error: Couldn't connect to system bus: %s" +msgstr "Hiba: nem lehet a rendszerbuszhoz kapcsolódni: %s" + +#: ../cli/src/network-manager.c:186 +#, c-format +#| msgid "Error: could not connect to D-Bus." +msgid "Error: Couldn't create D-Bus object proxy." +msgstr "Hiba: nem lehet a D-Bus objektumproxyhoz kapcsolódni." + +#: ../cli/src/network-manager.c:192 +#, c-format +#| msgid "Error: 'con list': %s" +msgid "Error in sleep: %s" +msgstr "Hiba az alváskor: %s" + +#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286 +#: ../cli/src/network-manager.c:318 +#, c-format +msgid "Error: '--fields' value '%s' is not valid here; allowed fields: %s" +msgstr "Hiba: a(z) „%s” „--fields” érték itt nem érvényes; engedélyezett mezők: %s" + +#: ../cli/src/network-manager.c:245 +#| msgid "WiFi enabled" +msgid "Networking enabled" +msgstr "Hálózatkezelés engedélyezve" + +#: ../cli/src/network-manager.c:256 +#, c-format +#| msgid "Error: invalid 'wwan' parameter: '%s'." +msgid "Error: invalid 'enable' parameter: '%s'; use 'true' or 'false'." +msgstr "Hiba: érvénytelen „enable” paraméter: „%s”; használja a „true” vagy „false” egyikét." + +#: ../cli/src/network-manager.c:265 +#, c-format +#| msgid "Error: Could not connect to NetworkManager." +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "Hiba: a Hálózatkezelő nem exportálta az alvási állapotot." + +#: ../cli/src/network-manager.c:273 +#, c-format +#| msgid "Error: invalid 'wifi' parameter: '%s'." +msgid "Error: invalid 'sleep' parameter: '%s'; use 'true' or 'false'." +msgstr "Hiba: érvénytelen „sleep” paraméter: „%s”; használja a „true” vagy „false” egyikét." + +#: ../cli/src/network-manager.c:294 +msgid "WiFi enabled" +msgstr "WiFi engedélyezve" + +#: ../cli/src/network-manager.c:305 +#, c-format +msgid "Error: invalid 'wifi' parameter: '%s'." +msgstr "Hiba: érvénytelen „wifi” paraméter: „%s”." + +#: ../cli/src/network-manager.c:326 +msgid "WWAN enabled" +msgstr "WWAN engedélyezve" + +#: ../cli/src/network-manager.c:337 +#, c-format +msgid "Error: invalid 'wwan' parameter: '%s'." +msgstr "Hiba: érvénytelen „wwan” paraméter: „%s”." + +#: ../cli/src/network-manager.c:348 +#, c-format +msgid "Error: 'nm' command '%s' is not valid." +msgstr "Hiba: a(z) „%s” „nm” parancs nem érvényes." + +#: ../cli/src/nmcli.c:69 +#, 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] |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 "" +"Használat: %s [KAPCSOLÓK] OBJEKTUM { PARANCS | help }\n" +"\n" +"KAPCSOLÓK\n" +" -t[erse] tömör kimenet\n" +" -p[retty] szép kimenet\n" +" -m[ode] tabular|multiline kimeneti mód\n" +" -f[ields] |all|common kiírandó mezők megadása\n" +" -e[scape] yes|no oszlopelválasztók escape-lése " +"az értékekben\n" +" -v[ersion] programverzió kiírása\n" +" -h[elp] ezen súgó kiírása\n" +"\n" +"OBJEKTUM\n" +" nm Hálózatkezelő állapota\n" +" con Hálózatkezelő kapcsolatai\n" +" dev A Hálózatkezelő által kezelt eszközök\n" +"\n" + +#: ../cli/src/nmcli.c:113 +#, c-format +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "Hiba: a(z) „%s” objektum ismeretlen, adja ki az „nmcli help” parancsot." + +#: ../cli/src/nmcli.c:143 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "Hiba: a „--terse” kapcsoló másodszor lett megadva." + +#: ../cli/src/nmcli.c:148 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "Hiba: a „--terse” és a „--pretty” kapcsolók kölcsönösen kizáróak." + +#: ../cli/src/nmcli.c:156 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "Hiba: a „--pretty” kapcsoló másodszor lett megadva." + +#: ../cli/src/nmcli.c:161 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "Hiba: a „--pretty” és „--terse” kapcsolók kölcsönösen kizáróak." + +#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187 +#, c-format +msgid "Error: missing argument for '%s' option." +msgstr "Hiba: a(z) „%s” kapcsoló argumentuma hiányzik." + +#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196 +#, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "Hiba: „%s” nem érvényes argumentum a(z) „%s” kapcsolóhoz." + +#: ../cli/src/nmcli.c:203 +#, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "Hiba: a(z) „%s” kapcsoló mezői hiányoznak." + +#: ../cli/src/nmcli.c:209 +#, c-format +msgid "nmcli tool, version %s\n" +msgstr "nmcli eszköz, %s verzió\n" + +#: ../cli/src/nmcli.c:215 +#, c-format +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "Hiba: a(z) „%s” kapcsoló ismeretlen, adja ki az „nmcli-help” parancsot." + +#: ../cli/src/nmcli.c:234 +#, c-format +msgid "Caught signal %d, shutting down..." +msgstr "%d szignál érkezett, leállítás…" + +#: ../cli/src/nmcli.c:259 +#, c-format +msgid "Error: Could not connect to NetworkManager." +msgstr "Hiba: nem lehet kapcsolódni a Hálózatkezelőhöz." + +#: ../cli/src/nmcli.c:275 +msgid "Success" +msgstr "Siker" + +#: ../cli/src/settings.c:411 +#, c-format +msgid "%d (hex-ascii-key)" +msgstr "%d (hex-ascii-kulcs)" + +#: ../cli/src/settings.c:413 +#, c-format +msgid "%d (104/128-bit passphrase)" +msgstr "%d (104/128 bites jelmondat)" + +#: ../cli/src/settings.c:416 +#, c-format +msgid "%d (unknown)" +msgstr "%d (ismeretlen)" + +#: ../cli/src/settings.c:442 +msgid "0 (unknown)" +msgstr "0 (ismeretlen)" + +#: ../cli/src/settings.c:448 +msgid "any, " +msgstr "bármely, " + +#: ../cli/src/settings.c:450 +msgid "900 MHz, " +msgstr "900 MHz, " + +#: ../cli/src/settings.c:452 +msgid "1800 MHz, " +msgstr "1800 MHz, " + +#: ../cli/src/settings.c:454 +msgid "1900 MHz, " +msgstr "1900 MHz, " + +#: ../cli/src/settings.c:456 +msgid "850 MHz, " +msgstr "850 MHz, " + +#: ../cli/src/settings.c:458 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 MHz, " + +#: ../cli/src/settings.c:460 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "WCDMA 3GPP UMTS 1800 MHz, " + +#: ../cli/src/settings.c:462 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " + +#: ../cli/src/settings.c:464 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "WCDMA 3GPP UMTS 800 MHz, " + +#: ../cli/src/settings.c:466 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "WCDMA 3GPP UMTS 850 MHz, " + +#: ../cli/src/settings.c:468 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "WCDMA 3GPP UMTS 900 MHz, " + +#: ../cli/src/settings.c:470 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "WCDMA 3GPP UMTS 1700 MHz, " + +#: ../cli/src/settings.c:554 ../cli/src/settings.c:721 +msgid "auto" +msgstr "auto" + +#: ../cli/src/settings.c:716 ../cli/src/settings.c:719 +#: ../cli/src/settings.c:720 ../cli/src/utils.c:172 +msgid "not set" +msgstr "nincs beállítva" + +#: ../cli/src/utils.c:124 +#, c-format +msgid "field '%s' has to be alone" +msgstr "a(z) „%s” mezőnek önállónak kell lennie" + +#: ../cli/src/utils.c:127 +#, c-format +msgid "invalid field '%s'" +msgstr "érvénytelen mező: „%s”" + +#: ../cli/src/utils.c:146 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "A „--terse” megköveteli a „--fields” megadását." + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "A „--terse” adott „--fields” kapcsolóértékeket követel meg, nem ezt: „%s”." + #: ../libnm-util/crypto.c:120 #, c-format msgid "PEM key file had no end tag '%s'." @@ -104,7 +1322,7 @@ msgstr "Az IV nem hexadecimális számjegyeket tartalmaz." #: ../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:335 +#: ../libnm-util/crypto_nss.c:336 #, c-format msgid "Private key cipher '%s' was unknown." msgstr "A(z) „%s” személyeskulcs-titkosító ismeretlen." @@ -163,17 +1381,17 @@ msgstr "Az IV beállítása meghiúsult a visszafejtéshez: %s / %s." msgid "Failed to decrypt the private key: %s / %s." msgstr "A személyes kulcs visszafejtése meghiúsult: %s / %s." -#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:266 +#: ../libnm-util/crypto_gnutls.c:210 ../libnm-util/crypto_nss.c:267 #, c-format msgid "Failed to decrypt the private key: unexpected padding length." msgstr "A személyes kulcs visszafejtése meghiúsult: váratlan kitöltéshossz." -#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:277 +#: ../libnm-util/crypto_gnutls.c:221 ../libnm-util/crypto_nss.c:278 #, c-format msgid "Failed to decrypt the private key." msgstr "A személyes kulcs visszafejtése meghiúsult." -#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:355 +#: ../libnm-util/crypto_gnutls.c:286 ../libnm-util/crypto_nss.c:356 #, c-format msgid "Could not allocate memory for encrypting." msgstr "Nem sikerült memóriát foglalni a titkosításhoz." @@ -223,7 +1441,7 @@ msgstr "A PKCS#12 fájl nem fejthető vissza: %s" msgid "Couldn't verify PKCS#12 file: %s" msgstr "A PKCS#12 fájl nem ellenőrizhető: %s" -#: ../libnm-util/crypto_nss.c:57 +#: ../libnm-util/crypto_nss.c:56 #, c-format msgid "Failed to initialize the crypto engine: %d." msgstr "A titkosító alrendszer előkészítése meghiúsult: %d." @@ -266,193 +1484,98 @@ msgstr "A személyes kulcs visszafejtése meghiúsult: %d." #: ../libnm-util/crypto_nss.c:245 #, c-format msgid "Failed to decrypt the private key: decrypted data too large." -msgstr "A személyes kulcs visszafejtése meghiúsult: a visszafejtett adatok túl nagyok." +msgstr "" +"A személyes kulcs visszafejtése meghiúsult: a visszafejtett adatok túl " +"nagyok." #: ../libnm-util/crypto_nss.c:256 #, c-format msgid "Failed to finalize decryption of the private key: %d." msgstr "A személyes kulcs visszafejtésének befejezése meghiúsult: %d." -#: ../libnm-util/crypto_nss.c:363 +#: ../libnm-util/crypto_nss.c:364 #, c-format msgid "Failed to initialize the encryption cipher slot." msgstr "A titkosítóhely előkészítése meghiúsult." -#: ../libnm-util/crypto_nss.c:371 +#: ../libnm-util/crypto_nss.c:372 #, c-format msgid "Failed to set symmetric key for encryption." msgstr "A szimmetrikus kulcs nem állítható be a titkosításhoz." -#: ../libnm-util/crypto_nss.c:379 +#: ../libnm-util/crypto_nss.c:380 #, c-format msgid "Failed to set IV for encryption." msgstr "Az IV nem állítható be a titkosításhoz." -#: ../libnm-util/crypto_nss.c:387 +#: ../libnm-util/crypto_nss.c:388 #, c-format msgid "Failed to initialize the encryption context." msgstr "A titkosítási kontextus előkészítése meghiúsult." -#: ../libnm-util/crypto_nss.c:395 +#: ../libnm-util/crypto_nss.c:396 #, c-format msgid "Failed to encrypt: %d." msgstr "A titkosítás meghiúsult: %d." -#: ../libnm-util/crypto_nss.c:403 +#: ../libnm-util/crypto_nss.c:404 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Váratlan mennyiségű adat a titkosítás után." -#: ../libnm-util/crypto_nss.c:446 +#: ../libnm-util/crypto_nss.c:447 #, c-format msgid "Couldn't decode certificate: %d" msgstr "A tanúsítvány nem fejthető vissza: %d" -#: ../libnm-util/crypto_nss.c:481 +#: ../libnm-util/crypto_nss.c:482 #, c-format msgid "Couldn't convert password to UCS2: %d" msgstr "A jelszó nem alakítható UCS2 formátumra: %d" -#: ../libnm-util/crypto_nss.c:509 +#: ../libnm-util/crypto_nss.c:510 #, c-format msgid "Couldn't initialize PKCS#12 decoder: %d" msgstr "A PKCS#12 dekódoló nem készíthető elő: %d" -#: ../libnm-util/crypto_nss.c:518 +#: ../libnm-util/crypto_nss.c:519 #, c-format msgid "Couldn't decode PKCS#12 file: %d" msgstr "A PKCS#12 fájl nem fejthető vissza: %d" -#: ../libnm-util/crypto_nss.c:527 +#: ../libnm-util/crypto_nss.c:528 #, c-format msgid "Couldn't verify PKCS#12 file: %d" msgstr "A PKCS#12 fájl nem ellenőrizhető: %d" -#: ../libnm-util/crypto_nss.c:556 +#: ../libnm-util/crypto_nss.c:557 msgid "Could not generate random data." msgstr "Nem sikerült a véletlen adatok előállítása." -#: ../libnm-util/nm-utils.c:1522 +#: ../libnm-util/nm-utils.c:1975 #, c-format msgid "Not enough memory to make encryption key." msgstr "Nincs elég memória titkosítási kulcs készítéséhez." -#: ../libnm-util/nm-utils.c:1633 +#: ../libnm-util/nm-utils.c:2085 msgid "Could not allocate memory for PEM file creation." msgstr "Nem sikerült memóriát foglalni PEM fájl készítéséhez." -#: ../libnm-util/nm-utils.c:1645 +#: ../libnm-util/nm-utils.c:2097 #, c-format msgid "Could not allocate memory for writing IV to PEM file." msgstr "Nem sikerült memóriát foglalni az IV írásához PEM fájlba." -#: ../libnm-util/nm-utils.c:1657 +#: ../libnm-util/nm-utils.c:2109 #, c-format msgid "Could not allocate memory for writing encrypted key to PEM file." msgstr "Nem sikerült memóriát foglalni a titkosított kulcs PEM fájlba írásához." -#: ../libnm-util/nm-utils.c:1676 +#: ../libnm-util/nm-utils.c:2128 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Nem sikerült memóriát foglalni a PEM fájl adatainak." -#: ../src/nm-netlink-monitor.c:194 ../src/nm-netlink-monitor.c:464 -#: ../src/nm-netlink-monitor.c:569 -#: ../src/ip6-manager/nm-netlink-listener.c:352 -#, c-format -msgid "error processing netlink message: %s" -msgstr "hiba a netlink üzenet feldolgozásakor: %s" - -#: ../src/nm-netlink-monitor.c:260 -#, c-format -msgid "unable to allocate netlink handle for monitoring link status: %s" -msgstr "" -"nem lehet netlink kezelőt lefoglalni a kapcsolat állapotának megfigyelése " -"érdekében: %s" - -#: ../src/nm-netlink-monitor.c:270 -#, c-format -msgid "unable to connect to netlink for monitoring link status: %s" -msgstr "" -"nem lehet kapcsolódni a netlinkhez a kapcsolat állapotának megfigyelése " -"érdekében: %s" - -#: ../src/nm-netlink-monitor.c:278 -#, c-format -msgid "unable to join netlink group for monitoring link status: %s" -msgstr "" -"nem lehet csatlakozni a netlink csoporthoz a kapcsolat állapotának " -"megfigyelése érdekében: %s" - -#: ../src/nm-netlink-monitor.c:286 -#, c-format -msgid "unable to allocate netlink link cache for monitoring link status: %s" -msgstr "" -"nem lehet netlink kapcsolat-gyorsítótárat lefoglalni a kapcsolat állapotának " -"megfigyelése érdekében: %s" - -#: ../src/nm-netlink-monitor.c:494 -#: ../src/ip6-manager/nm-netlink-listener.c:382 -msgid "error occurred while waiting for data on socket" -msgstr "hiba lépett fel adatokra várakozás közben a foglalaton" - -#: ../src/nm-netlink-monitor.c:558 -#, c-format -msgid "error updating link cache: %s" -msgstr "hiba a kapcsolat gyorsítótárának frissítésekor: %s" - -#: ../src/NetworkManager.c:330 -#, c-format -msgid "Invalid option. Please use --help to see a list of valid options.\n" -msgstr "" -"Érvénytelen kapcsoló. Az érvényes kapcsolók listájáért használja a --help " -"kapcsolót.\n" - -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:304 -msgid "# Created by NetworkManager\n" -msgstr "# Készítette a NetworkManager\n" - -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:310 -#, c-format -msgid "" -"# Merged from %s\n" -"\n" -msgstr "" -"# Összefésülve ebből: %s\n" -"\n" - -#: ../src/ip6-manager/nm-netlink-listener.c:200 -#, c-format -msgid "unable to allocate netlink handle: %s" -msgstr "nem lehet netlink kezelőt lefoglalni: %s" - -#: ../src/ip6-manager/nm-netlink-listener.c:210 -#, c-format -msgid "unable to connect to netlink: %s" -msgstr "nem lehet kapcsolódni a netlinkhez: %s" - -#: ../src/ip6-manager/nm-netlink-listener.c:307 -#, c-format -msgid "unable to join netlink group: %s" -msgstr "nem lehet csatlakozni a netlink csoporthoz: %s" - -#: ../src/dns-manager/nm-dns-manager.c:315 -msgid "NOTE: the libc resolver may not support more than 3 nameservers." -msgstr "MEGJEGYZÉS: a libc feloldó nem támogat háromnál több névkiszolgálót." - -#: ../src/dns-manager/nm-dns-manager.c:317 -msgid "The nameservers listed below may not be recognized." -msgstr "Az alább felsorolt névkiszolgálók lehet, hogy nem kerülnek felismerésre." - -#: ../src/system-settings/nm-default-wired-connection.c:194 -#, c-format -msgid "Auto %s" -msgstr "Automatikus %s" - -#: ../system-settings/plugins/ifcfg-rh/reader.c:2406 -msgid "System" -msgstr "Rendszer" - #: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 msgid "Connection sharing via a protected WiFi network" msgstr "Kapcsolatmegosztás védett WiFi hálózaton" @@ -491,3 +1614,179 @@ msgstr "" "A rendszer házirendje megakadályozza a kapcsolatok megosztását nyílt WiFi " "hálózaton" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +msgid "Allow control of network connections" +msgstr "Hálózati kapcsolatok felügyeletének engedélyezése" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +msgid "Allow use of user-specific connections" +msgstr "Felhasználói szintű kapcsolatok engedélyezése" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Enable or disable WiFi devices" +msgstr "WiFi eszközök be- és kikapcsolása" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable mobile broadband devices" +msgstr "Mobil széles sávú eszközök be- és kikapcsolása" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable system networking" +msgstr "Rendszer hálózatkezelésének be- és kikapcsolása" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "" +"Put NetworkManager to sleep or wake it up (should only be used by system " +"power management)" +msgstr "" +"Hálózatkezelő elaltatása vagy felébresztése (csak a rendszer " +"energiagazdálkodása által használandó)" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "System policy prevents control of network connections" +msgstr "A rendszer házirendje megakadályozza a hálózati kapcsolatok felügyeletét" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "A rendszer házirendje megakadályozza a WiFi eszközök be- vagy kikapcsolását" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "" +"A rendszer házirendje megakadályozza a mobil széles sávú eszközök be- vagy " +"kikapcsolását" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "System policy prevents enabling or disabling system networking" +msgstr "" +"A rendszer házirendje megakadályozza a rendszer hálózatkezelésének be- vagy " +"kikapcsolását" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "" +"A rendszer házirendje megakadályozza a Hálózatkezelő elaltatását vagy " +"felébresztését" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +msgid "System policy prevents use of user-specific connections" +msgstr "A rendszer házirendje megakadályozza a felhasználói kapcsolatok használatát" + +#: ../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 "hiba a netlink üzenet feldolgozásakor: %s" + +#: ../src/nm-netlink-monitor.c:214 +msgid "error occurred while waiting for data on socket" +msgstr "hiba lépett fel adatokra várakozás közben a foglalaton" + +#: ../src/nm-netlink-monitor.c:254 +#, c-format +msgid "unable to connect to netlink for monitoring link status: %s" +msgstr "" +"nem lehet kapcsolódni a netlinkhez a kapcsolat állapotának megfigyelése " +"érdekében: %s" + +#: ../src/nm-netlink-monitor.c:265 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" +"nem engedélyezhető a hálózati kapcsolatkezelő hitelesítési adatainak " +"átadása: %s" + +#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "" +"nem lehet netlink kezelőt lefoglalni a kapcsolat állapotának megfigyelése " +"érdekében: %s" + +#: ../src/nm-netlink-monitor.c:376 +#, c-format +msgid "unable to allocate netlink link cache for monitoring link status: %s" +msgstr "" +"nem lehet netlink kapcsolat-gyorsítótárat lefoglalni a kapcsolat állapotának " +"megfigyelése érdekében: %s" + +#: ../src/nm-netlink-monitor.c:502 +#, c-format +msgid "unable to join netlink group: %s" +msgstr "nem lehet csatlakozni a netlink csoporthoz: %s" + +#: ../src/nm-netlink-monitor.c:629 ../src/nm-netlink-monitor.c:642 +#, c-format +msgid "error updating link cache: %s" +msgstr "hiba a kapcsolat gyorsítótárának frissítésekor: %s" + +#: ../src/main.c:499 +#, c-format +msgid "Invalid option. Please use --help to see a list of valid options.\n" +msgstr "" +"Érvénytelen kapcsoló. Az érvényes kapcsolók listájáért használja a --help " +"kapcsolót.\n" + +#: ../src/main.c:570 +#, c-format +msgid "%s. Please use --help to see a list of valid options.\n" +msgstr "%s. Használja a --help kapcsolót az érvényes kapcsolókért.\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 +msgid "# Created by NetworkManager\n" +msgstr "# Készítette a Hálózatkezelő\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 +#, c-format +msgid "" +"# Merged from %s\n" +"\n" +msgstr "" +"# Összefésülve ebből: %s\n" +"\n" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "nem található használható DHCP-kliens." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "A „dhclient” nem használható." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "A „dhcpd” nem használható." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "nem támogatott DHCP-kliens („%s”)" + +#: ../src/logging/nm-logging.c:146 +#, c-format +msgid "Unknown log level '%s'" +msgstr "Ismeretlen naplózási szint: „%s”" + +#: ../src/logging/nm-logging.c:171 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "Ismeretlen naplózási tartomány: „%s”" + +#: ../src/dns-manager/nm-dns-manager.c:384 +msgid "NOTE: the libc resolver may not support more than 3 nameservers." +msgstr "MEGJEGYZÉS: a libc feloldó nem támogat háromnál több névkiszolgálót." + +#: ../src/dns-manager/nm-dns-manager.c:386 +msgid "The nameservers listed below may not be recognized." +msgstr "Az alább felsorolt névkiszolgálók lehet, hogy nem kerülnek felismerésre." + +#: ../src/system-settings/nm-default-wired-connection.c:157 +#, c-format +msgid "Auto %s" +msgstr "Automatikus %s" + +#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 +#: ../system-settings/plugins/ifnet/connection_parser.c:49 +msgid "System" +msgstr "Rendszer" + diff --git a/po/pl.po b/po/pl.po index cfa994a29..f1b0650d0 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,20 +7,96 @@ 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: 2010-02-26 03:24+0000\n" -"PO-Revision-Date: 2010-03-08 11:52+0100\n" -"Last-Translator: Tomasz Dominikowski \n" -"Language-Team: Polish \n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" +"product=NetworkManager&component=general\n" +"POT-Creation-Date: 2010-09-22 03:25+0000\n" +"PO-Revision-Date: 2010-09-22 17:43+0200\n" +"Last-Translator: Piotr Drąg \n" +"Language-Team: Polish \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" +"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: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 +msgid "NAME" +msgstr "NAZWA" -#: ../cli/src/connections.c:86 +#. 0 +#: ../cli/src/connections.c:61 ../cli/src/connections.c:76 +msgid "UUID" +msgstr "UUID" + +#. 1 +#: ../cli/src/connections.c:62 +msgid "DEVICES" +msgstr "URZĄDZENIA" + +#. 2 +#: ../cli/src/connections.c:63 ../cli/src/connections.c:78 +msgid "SCOPE" +msgstr "ZAKRES" + +#. 3 +#: ../cli/src/connections.c:64 +msgid "DEFAULT" +msgstr "DOMYŚLNE" + +#. 4 +#: ../cli/src/connections.c:65 +msgid "DBUS-SERVICE" +msgstr "USŁUGA-DBUS" + +#. 5 +#: ../cli/src/connections.c:66 +msgid "SPEC-OBJECT" +msgstr "KONKRETNY-OBIEKT" + +#. 6 +#: ../cli/src/connections.c:67 +msgid "VPN" +msgstr "VPN" + +#. 1 +#. 0 +#. 1 +#: ../cli/src/connections.c:77 ../cli/src/devices.c:62 ../cli/src/devices.c:90 +msgid "TYPE" +msgstr "TYP" + +#. 3 +#: ../cli/src/connections.c:79 +msgid "TIMESTAMP" +msgstr "OKRES-CZASU" + +#. 4 +#: ../cli/src/connections.c:80 +msgid "TIMESTAMP-REAL" +msgstr "RZECZYWISTY-OKRES-CZASU" + +#. 5 +#: ../cli/src/connections.c:81 +msgid "AUTOCONNECT" +msgstr "ŁĄCZENIE-AUTOMATYCZNE" + +#. 6 +#: ../cli/src/connections.c:82 +msgid "READONLY" +msgstr "TYLKO-DO-ODCZYTU" + +#. 7 +#: ../cli/src/connections.c:83 +msgid "DBUS-PATH" +msgstr "ŚCIEŻKA-DO-DBUS" + +#: ../cli/src/connections.c:159 #, c-format msgid "" "Usage: nmcli con { COMMAND | help }\n" @@ -28,7 +104,8 @@ msgid "" "\n" " list [id | uuid | system | user]\n" " status\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--nowait] [--timeout " +"]\n" " down id | uuid \n" msgstr "" "Użycie: nmcli con { POLECENIE | help }\n" @@ -36,418 +113,528 @@ msgstr "" "\n" " list [id | uuid | system | user]\n" " status\n" -" up id | uuid [iface ] [ap ] [--nowait] [--timeout ]\n" +" up id | uuid [iface ] [ap ] [--" +"nowait] [--timeout ]\n" " down id | uuid \n" - -#: ../cli/src/connections.c:158 -msgid "Connections" -msgstr "Połączenia" - - -#: ../cli/src/connections.c:158 -#: ../cli/src/connections.c:160 -#: ../cli/src/connections.c:196 -#: ../cli/src/connections.c:198 -#: ../cli/src/connections.c:205 -#: ../cli/src/connections.c:207 -#: ../cli/src/devices.c:298 -#: ../cli/src/devices.c:458 -#: ../cli/src/devices.c:460 -msgid "Type" -msgstr "Typ" - - -#: ../cli/src/connections.c:158 -#: ../cli/src/connections.c:160 -#: ../cli/src/connections.c:196 -#: ../cli/src/connections.c:198 -#: ../cli/src/connections.c:205 -#: ../cli/src/connections.c:207 -#: ../cli/src/connections.c:297 -#: ../cli/src/connections.c:299 -msgid "UUID" -msgstr "UUID" - - -#: ../cli/src/connections.c:158 -#: ../cli/src/connections.c:160 -#: ../cli/src/connections.c:196 -#: ../cli/src/connections.c:198 -#: ../cli/src/connections.c:205 -#: ../cli/src/connections.c:207 -#: ../cli/src/connections.c:297 -#: ../cli/src/connections.c:299 -msgid "Name" -msgstr "Nazwa" - - -#: ../cli/src/connections.c:163 +#: ../cli/src/connections.c:199 ../cli/src/connections.c:540 #, c-format -msgid "System connections:\n" -msgstr "Połączenia systemowe:\n" +msgid "Error: 'con list': %s" +msgstr "Błąd: \"con list\": %s" - -#: ../cli/src/connections.c:167 +#: ../cli/src/connections.c:201 ../cli/src/connections.c:542 #, c-format -msgid "User connections:\n" -msgstr "Połączenia użytkownika:\n" +msgid "Error: 'con list': %s; allowed fields: %s" +msgstr "Błąd: \"con list\": %s; dozwolone pola: %s" +#: ../cli/src/connections.c:209 +msgid "Connection details" +msgstr "Szczegóły połączenia" -#: ../cli/src/connections.c:178 -#: ../cli/src/connections.c:967 -#: ../cli/src/connections.c:983 -#: ../cli/src/connections.c:992 -#: ../cli/src/connections.c:1003 -#: ../cli/src/connections.c:1085 -#: ../cli/src/devices.c:604 -#: ../cli/src/devices.c:614 -#: ../cli/src/devices.c:699 -#: ../cli/src/devices.c:785 -#: ../cli/src/devices.c:792 +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "system" +msgstr "systemowe" + +#: ../cli/src/connections.c:384 ../cli/src/connections.c:605 +msgid "user" +msgstr "użytkownika" + +#: ../cli/src/connections.c:386 +msgid "never" +msgstr "nigdy" + +#. "CAPABILITIES" +#. Print header +#. "WIFI-PROPERTIES" +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +msgid "yes" +msgstr "tak" + +#: ../cli/src/connections.c:387 ../cli/src/connections.c:388 +#: ../cli/src/connections.c:606 ../cli/src/connections.c:609 +#: ../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 +msgid "no" +msgstr "nie" + +#: ../cli/src/connections.c:461 ../cli/src/connections.c:504 +msgid "System connections" +msgstr "Połączenia systemowe" + +#: ../cli/src/connections.c:466 ../cli/src/connections.c:517 +msgid "User connections" +msgstr "Połączenia użytkownika" + +#: ../cli/src/connections.c:478 ../cli/src/connections.c:1338 +#: ../cli/src/connections.c:1354 ../cli/src/connections.c:1363 +#: ../cli/src/connections.c:1374 ../cli/src/connections.c:1459 +#: ../cli/src/devices.c:962 ../cli/src/devices.c:972 ../cli/src/devices.c:1074 +#: ../cli/src/devices.c:1081 #, c-format msgid "Error: %s argument is missing." msgstr "Błąd: brak parametru %s." - -#: ../cli/src/connections.c:189 +#: ../cli/src/connections.c:491 #, c-format msgid "Error: %s - no such connection." msgstr "Błąd: %s - nie ma takiego połączenia." - -#: ../cli/src/connections.c:196 -msgid "System-wide connections" -msgstr "Połączenia systemowe" - - -#: ../cli/src/connections.c:205 -msgid "User connections" -msgstr "Połączenia użytkownika" - - -#: ../cli/src/connections.c:212 -#: ../cli/src/connections.c:1016 -#: ../cli/src/connections.c:1103 -#: ../cli/src/devices.c:446 -#: ../cli/src/devices.c:494 -#: ../cli/src/devices.c:628 -#: ../cli/src/devices.c:706 -#: ../cli/src/devices.c:798 +#: ../cli/src/connections.c:523 ../cli/src/connections.c:1387 +#: ../cli/src/connections.c:1477 ../cli/src/devices.c:785 +#: ../cli/src/devices.c:852 ../cli/src/devices.c:986 ../cli/src/devices.c:1087 #, c-format msgid "Unknown parameter: %s\n" msgstr "Nieznany parametr: %s\n" - -#: ../cli/src/connections.c:221 +#: ../cli/src/connections.c:532 #, c-format msgid "Error: no valid parameter specified." msgstr "Błąd: nie podano prawidłowego parametru." +#: ../cli/src/connections.c:547 ../cli/src/connections.c:1580 +#: ../cli/src/devices.c:1293 ../cli/src/network-manager.c:359 +#, c-format +msgid "Error: %s." +msgstr "Błąd: %s." -#. FIXME: Fix the output -#: ../cli/src/connections.c:268 -#: ../cli/src/devices.c:302 -#: ../cli/src/devices.c:321 -#: ../cli/src/devices.c:353 -#: ../cli/src/devices.c:355 -#: ../cli/src/devices.c:357 -#: ../cli/src/devices.c:359 -#: ../cli/src/devices.c:361 -msgid "yes" -msgstr "tak" +#: ../cli/src/connections.c:653 +#, c-format +msgid "Error: 'con status': %s" +msgstr "Błąd: \"con status\": %s" +#: ../cli/src/connections.c:655 +#, c-format +msgid "Error: 'con status': %s; allowed fields: %s" +msgstr "Błąd: \"con status\": %s; dozwolone pola: %s" -#: ../cli/src/connections.c:268 -#: ../cli/src/devices.c:304 -msgid "no" -msgstr "nie" - - -#: ../cli/src/connections.c:297 +#: ../cli/src/connections.c:662 msgid "Active connections" msgstr "Aktywne połączenia" - -#: ../cli/src/connections.c:297 -#: ../cli/src/connections.c:299 -#: ../cli/src/devices.c:302 -#: ../cli/src/devices.c:304 -msgid "Default" -msgstr "Domyślne" - - -#: ../cli/src/connections.c:297 -#: ../cli/src/connections.c:299 -msgid "Service" -msgstr "Usługa" - - -#: ../cli/src/connections.c:297 -#: ../cli/src/connections.c:299 -msgid "Devices" -msgstr "Urządzenia" - - -#: ../cli/src/connections.c:659 +#: ../cli/src/connections.c:1030 #, c-format msgid "no active connection on device '%s'" msgstr "brak aktywnych połączeń na urządzeniu \"%s\"" - -#: ../cli/src/connections.c:667 +#: ../cli/src/connections.c:1038 #, c-format msgid "no active connection or device" msgstr "brak aktywnych połączeń na urządzeń" +#: ../cli/src/connections.c:1088 +#, 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:730 +#: ../cli/src/connections.c:1090 +#, c-format +msgid "no device found for connection '%s'" +msgstr "nie odnaleziono urządzenia dla połączenia \"%s\"" + +#: ../cli/src/connections.c:1101 msgid "activating" msgstr "aktywowanie" - -#: ../cli/src/connections.c:732 +#: ../cli/src/connections.c:1103 msgid "activated" msgstr "aktywowano" - -#: ../cli/src/connections.c:735 -#: ../cli/src/connections.c:758 -#: ../cli/src/connections.c:791 -#: ../cli/src/devices.c:111 -#: ../cli/src/network-manager.c:76 -#: ../cli/src/network-manager.c:98 +#: ../cli/src/connections.c:1106 ../cli/src/connections.c:1129 +#: ../cli/src/connections.c:1162 ../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 msgid "unknown" msgstr "nieznane" - -#: ../cli/src/connections.c:744 +#: ../cli/src/connections.c:1115 msgid "VPN connecting (prepare)" msgstr "Łączenie z VPN (przygotowanie)" - -#: ../cli/src/connections.c:746 +#: ../cli/src/connections.c:1117 msgid "VPN connecting (need authentication)" msgstr "Łączenie z VPN (wymaga uwierzytelnienia)" - -#: ../cli/src/connections.c:748 +#: ../cli/src/connections.c:1119 msgid "VPN connecting" msgstr "Łączenie z VPN" - -#: ../cli/src/connections.c:750 +#: ../cli/src/connections.c:1121 msgid "VPN connecting (getting IP configuration)" msgstr "Łączenie z VPN (pobieranie konfiguracji adresu IP)" - -#: ../cli/src/connections.c:752 +#: ../cli/src/connections.c:1123 msgid "VPN connected" msgstr "Połączono z VPN" - -#: ../cli/src/connections.c:754 +#: ../cli/src/connections.c:1125 msgid "VPN connection failed" msgstr "Połączenie z VPN się nie powiodło" - -#: ../cli/src/connections.c:756 +#: ../cli/src/connections.c:1127 msgid "VPN disconnected" msgstr "Rozłączono z VPN" - -#: ../cli/src/connections.c:767 +#: ../cli/src/connections.c:1138 msgid "unknown reason" msgstr "nieznany powód" - -#: ../cli/src/connections.c:769 +#: ../cli/src/connections.c:1140 msgid "none" msgstr "brak" - -#: ../cli/src/connections.c:771 +#: ../cli/src/connections.c:1142 msgid "the user was disconnected" msgstr "użytkownik został rozłączony" - -#: ../cli/src/connections.c:773 +#: ../cli/src/connections.c:1144 msgid "the base network connection was interrupted" msgstr "podstawowe połączenie sieciowe zostało przerwane" - -#: ../cli/src/connections.c:775 +#: ../cli/src/connections.c:1146 msgid "the VPN service stopped unexpectedly" msgstr "usługa VPN została nieoczekiwanie zatrzymana" - -#: ../cli/src/connections.c:777 +#: ../cli/src/connections.c:1148 msgid "the VPN service returned invalid configuration" msgstr "usługa VPN zwróciła nieprawidłową konfigurację" - -#: ../cli/src/connections.c:779 +#: ../cli/src/connections.c:1150 msgid "the connection attempt timed out" msgstr "próba połączenia przekroczyła czas oczekiwania" - -#: ../cli/src/connections.c:781 +#: ../cli/src/connections.c:1152 msgid "the VPN service did not start in time" msgstr "usługa VPN nie została uruchomiona w czasie" - -#: ../cli/src/connections.c:783 +#: ../cli/src/connections.c:1154 msgid "the VPN service failed to start" msgstr "uruchomienie usługi VPN się nie powiodło" - -#: ../cli/src/connections.c:785 +#: ../cli/src/connections.c:1156 msgid "no valid VPN secrets" msgstr "brak prawidłowych haseł VPN" - -#: ../cli/src/connections.c:787 +#: ../cli/src/connections.c:1158 msgid "invalid VPN secrets" msgstr "nieprawidłowe hasła VPN" - -#: ../cli/src/connections.c:789 +#: ../cli/src/connections.c:1160 msgid "the connection was removed" msgstr "połączenie zostało usunięte" - -#: ../cli/src/connections.c:803 +#: ../cli/src/connections.c:1174 #, c-format msgid "state: %s\n" msgstr "stan: %s\n" - -#: ../cli/src/connections.c:806 -#: ../cli/src/connections.c:832 +#: ../cli/src/connections.c:1177 ../cli/src/connections.c:1203 #, c-format msgid "Connection activated\n" msgstr "Aktywowano połączenie\n" - -#: ../cli/src/connections.c:809 +#: ../cli/src/connections.c:1180 #, c-format msgid "Error: Connection activation failed." msgstr "Błąd: aktywacja połączenia się nie powiodła." - -#: ../cli/src/connections.c:828 +#: ../cli/src/connections.c:1199 #, c-format msgid "state: %s (%d)\n" msgstr "stan: %s (%d)\n" - -#: ../cli/src/connections.c:838 +#: ../cli/src/connections.c:1209 #, c-format msgid "Error: Connection activation failed: %s." msgstr "Błąd: aktywacja połączenia się nie powiodła: %s." - -#: ../cli/src/connections.c:855 -#: ../cli/src/devices.c:551 +#: ../cli/src/connections.c:1226 ../cli/src/devices.c:909 #, c-format msgid "Error: Timeout %d sec expired." msgstr "Błąd: przekroczono czas oczekiwania o %d sekund." - -#: ../cli/src/connections.c:898 +#: ../cli/src/connections.c:1269 #, c-format msgid "Error: Connection activation failed: %s" msgstr "Błąd: aktywacja połączenia się nie powiodła: %s" - -#: ../cli/src/connections.c:912 +#: ../cli/src/connections.c:1283 #, 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:921 +#: ../cli/src/connections.c:1292 #, c-format msgid "Active connection state: %s\n" msgstr "Stan aktywnego połączenia: %s\n" - -#: ../cli/src/connections.c:922 +#: ../cli/src/connections.c:1293 #, c-format msgid "Active connection path: %s\n" msgstr "Ścieżka aktywnego połączenia: %s\n" - -#: ../cli/src/connections.c:976 -#: ../cli/src/connections.c:1094 +#: ../cli/src/connections.c:1347 ../cli/src/connections.c:1468 #, c-format msgid "Error: Unknown connection: %s." msgstr "Błąd: nieznane połączenie: %s." - -#: ../cli/src/connections.c:1011 -#: ../cli/src/devices.c:622 +#: ../cli/src/connections.c:1382 ../cli/src/devices.c:980 #, c-format msgid "Error: timeout value '%s' is not valid." msgstr "Błąd: wartość czasu oczekiwania \"%s\" jest nieprawidłowa." - -#: ../cli/src/connections.c:1024 -#: ../cli/src/connections.c:1111 +#: ../cli/src/connections.c:1395 ../cli/src/connections.c:1485 #, c-format msgid "Error: id or uuid has to be specified." msgstr "Błąd: należy podać identyfikator lub UUID." - -#: ../cli/src/connections.c:1044 +#: ../cli/src/connections.c:1415 #, c-format msgid "Error: No suitable device found: %s." msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia: %s" - -#: ../cli/src/connections.c:1046 +#: ../cli/src/connections.c:1417 #, c-format msgid "Error: No suitable device found." msgstr "Błąd: nie odnaleziono odpowiedniego urządzenia." - -#: ../cli/src/connections.c:1138 +#: ../cli/src/connections.c:1512 #, c-format msgid "Warning: Connection not active\n" msgstr "Ostrzeżenie: połączenie nie jest aktywne\n" - -#: ../cli/src/connections.c:1189 +#: ../cli/src/connections.c:1569 #, c-format msgid "Error: 'con' command '%s' is not valid." msgstr "Błąd: polecenie \"con\" \"%s\" jest nieprawidłowe." - -#: ../cli/src/connections.c:1216 +#: ../cli/src/connections.c:1605 #, 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:1223 +#: ../cli/src/connections.c:1612 #, c-format msgid "Error: Could not get system settings." msgstr "Błąd: nie można uzyskać ustawień systemu." - -#: ../cli/src/connections.c:1231 +#: ../cli/src/connections.c:1620 #, c-format msgid "Error: Could not get user settings." msgstr "Błąd: nie można uzyskać ustawień użytkownika." - -#: ../cli/src/connections.c:1241 +#: ../cli/src/connections.c:1630 #, c-format msgid "Error: Can't obtain connections: settings services are not running." msgstr "Błąd: nie można uzyskać połączeń: usługi ustawień nie są uruchomione." +#. 0 +#. 9 +#: ../cli/src/devices.c:61 ../cli/src/devices.c:89 ../cli/src/devices.c:184 +msgid "DEVICE" +msgstr "URZĄDZENIE" +#. 1 +#. 4 +#. 0 +#: ../cli/src/devices.c:63 ../cli/src/devices.c:93 +#: ../cli/src/network-manager.c:36 +msgid "STATE" +msgstr "STAN" + +#: ../cli/src/devices.c:72 +msgid "GENERAL" +msgstr "OGÓLNE" + +#. 0 #: ../cli/src/devices.c:73 +msgid "CAPABILITIES" +msgstr "MOŻLIWOŚCI" + +#. 1 +#: ../cli/src/devices.c:74 +msgid "WIFI-PROPERTIES" +msgstr "WŁAŚCIWOŚCI-WIFI" + +#. 2 +#: ../cli/src/devices.c:75 +msgid "AP" +msgstr "PUNKT-DOSTĘPOWY" + +#. 3 +#: ../cli/src/devices.c:76 +msgid "WIRED-PROPERTIES" +msgstr "WŁAŚCIWOŚCI-POŁĄCZENIA-PRZEWODOWEGO" + +#. 4 +#: ../cli/src/devices.c:77 +msgid "IP4-SETTINGS" +msgstr "USTAWIENIA-IP4" + +#. 5 +#: ../cli/src/devices.c:78 +msgid "IP4-DNS" +msgstr "IP4-DNS" + +#. 6 +#: ../cli/src/devices.c:79 +msgid "IP6-SETTINGS" +msgstr "USTAWIENIA-IP6" + +#. 7 +#: ../cli/src/devices.c:80 +msgid "IP6-DNS" +msgstr "IP6-DNS" + +#. 2 +#: ../cli/src/devices.c:91 +msgid "DRIVER" +msgstr "STEROWNIK" + +#. 3 +#: ../cli/src/devices.c:92 +msgid "HWADDR" +msgstr "ADRES-SPRZĘTOWY" + +#. 0 +#: ../cli/src/devices.c:102 +msgid "CARRIER-DETECT" +msgstr "WYKRYWANIE-OPERATORA" + +#. 1 +#: ../cli/src/devices.c:103 +msgid "SPEED" +msgstr "PRĘDKOŚĆ" + +#. 0 +#: ../cli/src/devices.c:112 +msgid "CARRIER" +msgstr "OPERATOR" + +#. 0 +#: ../cli/src/devices.c:122 +msgid "WEP" +msgstr "WEP" + +#. 1 +#: ../cli/src/devices.c:123 +msgid "WPA" +msgstr "WPA" + +#. 2 +#: ../cli/src/devices.c:124 +msgid "WPA2" +msgstr "WPA2" + +#. 3 +#: ../cli/src/devices.c:125 +msgid "TKIP" +msgstr "TKIP" + +#. 4 +#: ../cli/src/devices.c:126 +msgid "CCMP" +msgstr "CCMP" + +#. 0 +#: ../cli/src/devices.c:135 ../cli/src/devices.c:146 +msgid "ADDRESS" +msgstr "ADRES" + +#. 1 +#: ../cli/src/devices.c:136 ../cli/src/devices.c:147 +msgid "PREFIX" +msgstr "PRZEDROSTEK" + +#. 2 +#: ../cli/src/devices.c:137 ../cli/src/devices.c:148 +msgid "GATEWAY" +msgstr "BRAMA" + +#. 0 +#: ../cli/src/devices.c:157 ../cli/src/devices.c:166 +msgid "DNS" +msgstr "DNS" + +#. 0 +#: ../cli/src/devices.c:175 +msgid "SSID" +msgstr "SSID" + +#. 1 +#: ../cli/src/devices.c:176 +msgid "BSSID" +msgstr "BSSID" + +#. 2 +#: ../cli/src/devices.c:177 +msgid "MODE" +msgstr "TRYB" + +#. 3 +#: ../cli/src/devices.c:178 +msgid "FREQ" +msgstr "CZĘSTOTLIWOŚĆ" + +#. 4 +#: ../cli/src/devices.c:179 +msgid "RATE" +msgstr "OCENA" + +#. 5 +#: ../cli/src/devices.c:180 +msgid "SIGNAL" +msgstr "SYGNAŁ" + +#. 6 +#: ../cli/src/devices.c:181 +msgid "SECURITY" +msgstr "ZABEZPIECZENIA" + +#. 7 +#: ../cli/src/devices.c:182 +msgid "WPA-FLAGS" +msgstr "FLAGI-WPA" + +#. 8 +#: ../cli/src/devices.c:183 +msgid "RSN-FLAGS" +msgstr "FLAGI-RSN" + +#. 10 +#: ../cli/src/devices.c:185 +msgid "ACTIVE" +msgstr "AKTYWNOŚĆ" + +#: ../cli/src/devices.c:208 #, c-format msgid "" "Usage: nmcli dev { COMMAND | help }\n" @@ -457,581 +644,404 @@ msgid "" " status\n" " list [iface ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] | apinfo iface hwaddr ]\n" +" wifi [list [iface ] [hwaddr ]]\n" "\n" msgstr "" "Użycie: nmcli dev { POLECENIE | help }\n" "\n" -" COMMAND := { status | list | disconnect | wifi }\n" +" POLECENIE := { status | list | disconnect | wifi }\n" "\n" " status\n" " list [iface ]\n" " disconnect iface [--nowait] [--timeout ]\n" -" wifi [list [iface ] | apinfo iface hwaddr ]\n" +" wifi [list [iface ] [hwaddr ]]\n" "\n" - -#: ../cli/src/devices.c:93 +#: ../cli/src/devices.c:228 msgid "unmanaged" msgstr "niezarządzane" - -#: ../cli/src/devices.c:95 +#: ../cli/src/devices.c:230 msgid "unavailable" msgstr "niedostępne" - -#: ../cli/src/devices.c:97 -#: ../cli/src/network-manager.c:73 +#: ../cli/src/devices.c:232 ../cli/src/network-manager.c:91 msgid "disconnected" msgstr "rozłączono" - -#: ../cli/src/devices.c:99 +#: ../cli/src/devices.c:234 msgid "connecting (prepare)" msgstr "łączenie (przygotowanie)" - -#: ../cli/src/devices.c:101 +#: ../cli/src/devices.c:236 msgid "connecting (configuring)" msgstr "łączenie (konfigurowanie)" - -#: ../cli/src/devices.c:103 +#: ../cli/src/devices.c:238 msgid "connecting (need authentication)" msgstr "łączenie (wymaga uwierzytelnienia)" - -#: ../cli/src/devices.c:105 +#: ../cli/src/devices.c:240 msgid "connecting (getting IP configuration)" msgstr "łączenie (pobieranie konfiguracji adresu IP)" - -#: ../cli/src/devices.c:107 -#: ../cli/src/network-manager.c:71 +#: ../cli/src/devices.c:242 ../cli/src/network-manager.c:89 msgid "connected" msgstr "połączono" - -#: ../cli/src/devices.c:109 +#: ../cli/src/devices.c:244 msgid "connection failed" msgstr "połączenie się nie powiodło" - -#: ../cli/src/devices.c:132 -#: ../cli/src/devices.c:876 +#: ../cli/src/devices.c:267 ../cli/src/devices.c:424 msgid "Unknown" msgstr "Nieznane" - -#. print them -#: ../cli/src/devices.c:164 -#: ../cli/src/devices.c:266 -#: ../cli/src/devices.c:861 -#: ../cli/src/devices.c:879 +#: ../cli/src/devices.c:299 msgid "(none)" msgstr "(brak)" - -#: ../cli/src/devices.c:209 +#: ../cli/src/devices.c:324 #, c-format msgid "%s: error converting IP4 address 0x%X" msgstr "%s: błąd podczas konwertowania adresu IPv4 0x%X" - -#: ../cli/src/devices.c:238 -#, c-format -msgid "%s, %s, Freq %d MHz, Rate %d Mb/s, Strength %d" -msgstr "%s, %s, częstotliwość %d MHz, prędkość %d Mb/s, siła sygnału %d" - - -#: ../cli/src/devices.c:239 -msgid "Ad-Hoc" -msgstr "Ad-hoc" - - -#: ../cli/src/devices.c:248 -msgid ", Encrypted: " -msgstr ", zaszyfrowane: " - - -#: ../cli/src/devices.c:253 -msgid " WEP" -msgstr " WEP" - - -#: ../cli/src/devices.c:255 -msgid " WPA" -msgstr " WPA" - - -#: ../cli/src/devices.c:257 -msgid " WPA2" -msgstr " WPA2" - - -#: ../cli/src/devices.c:260 -msgid " Enterprise" -msgstr " Enterprise" - - -#: ../cli/src/devices.c:294 -#: ../cli/src/devices.c:458 -#: ../cli/src/devices.c:460 -msgid "Device" -msgstr "Urządzenie" - - -#: ../cli/src/devices.c:299 -msgid "Driver" -msgstr "Sterownik" - - -#: ../cli/src/devices.c:299 -#: ../cli/src/devices.c:567 -msgid "(unknown)" -msgstr "(nieznane)" - - -#: ../cli/src/devices.c:300 -#: ../cli/src/devices.c:458 -#: ../cli/src/devices.c:460 -msgid "State" -msgstr "Stan" - - -#: ../cli/src/devices.c:313 -msgid "HW Address" -msgstr "Adres sprzętowy" - - -#: ../cli/src/devices.c:319 -#, c-format -msgid "" -"\n" -" Capabilities:\n" -msgstr "" -"\n" -" Możliwości:\n" - - -#: ../cli/src/devices.c:321 -msgid "Carrier Detect" -msgstr "Wykrywanie operatora" - - -#: ../cli/src/devices.c:336 -#, c-format -msgid "%u Mb/s" -msgstr "%u Mb/s" - - -#: ../cli/src/devices.c:337 -msgid "Speed" -msgstr "Prędkość" - - -#: ../cli/src/devices.c:348 -#, c-format -msgid "" -"\n" -" Wireless Properties\n" -msgstr "" -"\n" -" Właściwości sieci bezprzewodowej\n" - - -#: ../cli/src/devices.c:353 -msgid "WEP Encryption" -msgstr "Szyfrowanie WEP" - - -#: ../cli/src/devices.c:355 -msgid "WPA Encryption" -msgstr "Szyfrowanie WPA" - - -#: ../cli/src/devices.c:357 -msgid "WPA2 Encryption" -msgstr "Szyfrowanie WPA2" - - -#: ../cli/src/devices.c:359 -msgid "TKIP cipher" -msgstr "Szyfr TKIP" - - -#: ../cli/src/devices.c:361 -msgid "CCMP cipher" -msgstr "Szyfr CCMP" - - -#: ../cli/src/devices.c:368 -#, c-format -msgid "" -"\n" -" Wireless Access Points %s\n" -msgstr "" -"\n" -" Bezprzewodowe punkty dostępowe %s\n" - - -#: ../cli/src/devices.c:368 -msgid "(* = current AP)" -msgstr "(* = bieżący punkt dostępowy)" - - -#: ../cli/src/devices.c:374 -#, c-format -msgid "" -"\n" -" Wired Properties\n" -msgstr "" -"\n" -" Właściwości sieci przewodowej\n" - - -#: ../cli/src/devices.c:377 -#: ../cli/src/devices.c:379 -msgid "Carrier" -msgstr "Operator" - - -#: ../cli/src/devices.c:377 -msgid "on" -msgstr "włączone" - - -#: ../cli/src/devices.c:379 -msgid "off" -msgstr "wyłączone" - - -#: ../cli/src/devices.c:387 -#, c-format -msgid "" -"\n" -" IPv4 Settings:\n" -msgstr "" -"\n" -" Ustawienia IPv4:\n" - - -#: ../cli/src/devices.c:395 -msgid "Address" -msgstr "Adres" - - -#: ../cli/src/devices.c:401 -msgid "Prefix" -msgstr "Przedrostek" - - -#: ../cli/src/devices.c:405 -msgid "Gateway" -msgstr "Brama" - - -#: ../cli/src/devices.c:416 -msgid "DNS" -msgstr "DNS" - - -#: ../cli/src/devices.c:458 -msgid "Status of devices" -msgstr "Stan urządzenia" - - -#: ../cli/src/devices.c:487 -#, c-format -msgid "Error: '%s' argument is missing." -msgstr "Błąd: brak parametru \"%s\"." - - -#: ../cli/src/devices.c:516 -#: ../cli/src/devices.c:655 -#: ../cli/src/devices.c:729 -#, c-format -msgid "Error: Device '%s' not found." -msgstr "Błąd: nie odnaleziono urządzenia \"%s\"." - - -#: ../cli/src/devices.c:539 -#, c-format -msgid "Success: Device '%s' successfully disconnected." -msgstr "Powodzenie: urządzenie \"%s\" zostało rozłączone." - - -#: ../cli/src/devices.c:564 -#, 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:572 -#, c-format -msgid "Device state: %d (%s)\n" -msgstr "Stan urządzenia: %d (%s)\n" - - -#: ../cli/src/devices.c:636 -#, c-format -msgid "Error: iface has to be specified." -msgstr "Błąd: należy podać interfejs." - - -#: ../cli/src/devices.c:736 -#: ../cli/src/devices.c:746 -msgid "WiFi scan list" -msgstr "Lista skanowania sieci WiFi" - - -#: ../cli/src/devices.c:740 -#, 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:754 -msgid "Device:" -msgstr "Urządzenie:" - - -#: ../cli/src/devices.c:806 -#, c-format -msgid "Error: hwaddr has to be specified." -msgstr "Błąd: należy podać adres sprzętowy." - - -#: ../cli/src/devices.c:844 -#, c-format -msgid "Error: Access point with hwaddr '%s' not found." -msgstr "Błąd: nie odnaleziono punktu dostępowego z adresem sprzętowym \"%s\"." - - -#: ../cli/src/devices.c:862 +#: ../cli/src/devices.c:393 #, c-format msgid "%u MHz" msgstr "%u MHz" - -#: ../cli/src/devices.c:863 +#: ../cli/src/devices.c:394 #, c-format msgid "%u MB/s" msgstr "%u MB/s" +#: ../cli/src/devices.c:403 +msgid "Encrypted: " +msgstr "Zaszyfrowane: " -#: ../cli/src/devices.c:869 -#: ../cli/src/devices.c:871 -msgid "AP parameters" -msgstr "Parametry punkty dostępowego" +#: ../cli/src/devices.c:408 +msgid "WEP " +msgstr "WEP " +#: ../cli/src/devices.c:410 +msgid "WPA " +msgstr "WPA " -#: ../cli/src/devices.c:873 -msgid "SSID:" -msgstr "SSID:" +#: ../cli/src/devices.c:412 +msgid "WPA2 " +msgstr "WPA2 " +#: ../cli/src/devices.c:415 +msgid "Enterprise " +msgstr "Enterprise " -#: ../cli/src/devices.c:874 -msgid "BSSID:" -msgstr "BSSID:" - - -#: ../cli/src/devices.c:875 -msgid "Frequency:" -msgstr "Częstotliwość:" - - -#: ../cli/src/devices.c:876 -msgid "Mode:" -msgstr "Tryb:" - - -#: ../cli/src/devices.c:876 -msgid "Ad-hoc" +#: ../cli/src/devices.c:424 +msgid "Ad-Hoc" msgstr "Ad-hoc" - -#: ../cli/src/devices.c:876 +#: ../cli/src/devices.c:424 msgid "Infrastructure" msgstr "Infrastruktura" +#: ../cli/src/devices.c:486 +#, c-format +msgid "Error: 'dev list': %s" +msgstr "Błąd: \"dev list\": %s" -#: ../cli/src/devices.c:877 -msgid "Maximal bitrate:" -msgstr "Maksymalna prędkość:" +#: ../cli/src/devices.c:488 +#, c-format +msgid "Error: 'dev list': %s; allowed fields: %s" +msgstr "Błąd: \"dev list\": %s; dozwolone pola: %s" +#: ../cli/src/devices.c:497 +msgid "Device details" +msgstr "Informacje o urządzeniu" -#: ../cli/src/devices.c:878 -msgid "Strength:" -msgstr "Siła sygnału:" +#: ../cli/src/devices.c:527 ../cli/src/devices.c:925 +msgid "(unknown)" +msgstr "(nieznane)" +#: ../cli/src/devices.c:528 +msgid "unknown)" +msgstr "nieznane)" -#: ../cli/src/devices.c:879 -msgid "Flags:" -msgstr "Flagi:" +#: ../cli/src/devices.c:554 +#, c-format +msgid "%u Mb/s" +msgstr "%u Mb/s" +#. Print header +#. "WIRED-PROPERTIES" +#: ../cli/src/devices.c:627 +msgid "on" +msgstr "włączone" -#: ../cli/src/devices.c:879 -msgid "privacy" -msgstr "prywatne" +#: ../cli/src/devices.c:627 +msgid "off" +msgstr "wyłączone" +#: ../cli/src/devices.c:808 +#, c-format +msgid "Error: 'dev status': %s" +msgstr "Błąd: \"dev status\": %s" -#: ../cli/src/devices.c:880 -msgid "WPA flags:" -msgstr "Flagi WPA:" +#: ../cli/src/devices.c:810 +#, c-format +msgid "Error: 'dev status': %s; allowed fields: %s" +msgstr "Błąd: \"dev status\": %s; dozwolone pola: %s" +#: ../cli/src/devices.c:817 +msgid "Status of devices" +msgstr "Stan urządzenia" -#: ../cli/src/devices.c:881 -msgid "RSN flags:" -msgstr "Flagi RSN:" +#: ../cli/src/devices.c:845 +#, c-format +msgid "Error: '%s' argument is missing." +msgstr "Błąd: brak parametru \"%s\"." +#: ../cli/src/devices.c:874 ../cli/src/devices.c:1013 +#: ../cli/src/devices.c:1136 +#, c-format +msgid "Error: Device '%s' not found." +msgstr "Błąd: nie odnaleziono urządzenia \"%s\"." -#: ../cli/src/devices.c:907 +#: ../cli/src/devices.c:897 +#, c-format +msgid "Success: Device '%s' successfully disconnected." +msgstr "Powodzenie: urządzenie \"%s\" zostało rozłączone." + +#: ../cli/src/devices.c:922 +#, 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:930 +#, c-format +msgid "Device state: %d (%s)\n" +msgstr "Stan urządzenia: %d (%s)\n" + +#: ../cli/src/devices.c:994 +#, c-format +msgid "Error: iface has to be specified." +msgstr "Błąd: należy podać interfejs." + +#: ../cli/src/devices.c:1112 +#, c-format +msgid "Error: 'dev wifi': %s" +msgstr "Błąd: \"dev wifi\": %s" + +#: ../cli/src/devices.c:1114 +#, c-format +msgid "Error: 'dev wifi': %s; allowed fields: %s" +msgstr "Błąd: \"dev wifi\": %s; dozwolone pola: %s" + +#: ../cli/src/devices.c:1121 +msgid "WiFi scan list" +msgstr "Lista skanowania sieci WiFi" + +#: ../cli/src/devices.c:1156 ../cli/src/devices.c:1210 +#, c-format +msgid "Error: Access point with hwaddr '%s' not found." +msgstr "Błąd: nie odnaleziono punktu dostępowego z adresem sprzętowym \"%s\"." + +#: ../cli/src/devices.c:1173 +#, 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:1237 #, 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:943 +#: ../cli/src/devices.c:1284 #, 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 +msgid "RUNNING" +msgstr "URUCHOMIONE" -#: ../cli/src/network-manager.c:46 +#. 1 +#: ../cli/src/network-manager.c:37 +msgid "NET-ENABLED" +msgstr "SIEĆ-WŁĄCZONA" + +#. 2 +#: ../cli/src/network-manager.c:38 +msgid "WIFI-HARDWARE" +msgstr "SPRZĘT-WIFI" + +#. 3 +#: ../cli/src/network-manager.c:39 +msgid "WIFI" +msgstr "WIFI" + +#. 4 +#: ../cli/src/network-manager.c:40 +msgid "WWAN-HARDWARE" +msgstr "SPRZĘT-WWAN" + +#. 5 +#: ../cli/src/network-manager.c:41 +msgid "WWAN" +msgstr "WWAN" + +#: ../cli/src/network-manager.c:64 #, c-format msgid "" "Usage: nmcli nm { COMMAND | help }\n" "\n" -" COMMAND := { status | sleep | wakeup | wifi | wwan }\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" "\n" msgstr "" "Użycie: nmcli nm { POLECENIE | help }\n" "\n" -" POLECENIE := { status | sleep | wakeup | wifi | wwan }\n" +" POLECENIE := { 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" "\n" - -#: ../cli/src/network-manager.c:67 +#: ../cli/src/network-manager.c:85 msgid "asleep" msgstr "wstrzymane" - -#: ../cli/src/network-manager.c:69 +#: ../cli/src/network-manager.c:87 msgid "connecting" msgstr "łączenie" +#: ../cli/src/network-manager.c:128 +#, c-format +msgid "Error: 'nm status': %s" +msgstr "Błąd: \"nm status\": %s" -#: ../cli/src/network-manager.c:93 -#: ../cli/src/network-manager.c:94 -#: ../cli/src/network-manager.c:95 -#: ../cli/src/network-manager.c:96 -#: ../cli/src/network-manager.c:143 -#: ../cli/src/network-manager.c:160 -msgid "enabled" -msgstr "włączone" +#: ../cli/src/network-manager.c:130 +#, c-format +msgid "Error: 'nm status': %s; allowed fields: %s" +msgstr "Błąd: \"nm status\": %s; dozwolone pola: %s" - -#: ../cli/src/network-manager.c:93 -#: ../cli/src/network-manager.c:94 -#: ../cli/src/network-manager.c:95 -#: ../cli/src/network-manager.c:96 -#: ../cli/src/network-manager.c:143 -#: ../cli/src/network-manager.c:160 -msgid "disabled" -msgstr "wyłączone" - - -#: ../cli/src/network-manager.c:102 +#: ../cli/src/network-manager.c:137 msgid "NetworkManager status" msgstr "Stan programu NetworkManager" +#. Print header +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "enabled" +msgstr "włączone" -#: ../cli/src/network-manager.c:104 -msgid "NM running:" -msgstr "Program NetworkManager jest uruchomiony:" +#: ../cli/src/network-manager.c:144 ../cli/src/network-manager.c:145 +#: ../cli/src/network-manager.c:146 ../cli/src/network-manager.c:147 +#: ../cli/src/network-manager.c:154 ../cli/src/network-manager.c:247 +#: ../cli/src/network-manager.c:296 ../cli/src/network-manager.c:328 +msgid "disabled" +msgstr "wyłączone" - -#: ../cli/src/network-manager.c:104 +#: ../cli/src/network-manager.c:152 msgid "running" msgstr "uruchamiany" - -#: ../cli/src/network-manager.c:104 +#: ../cli/src/network-manager.c:152 msgid "not running" msgstr "nieuruchomiony" +#: ../cli/src/network-manager.c:175 +#, 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:105 -msgid "NM state:" -msgstr "Stan programu NetworkManager:" +#: ../cli/src/network-manager.c:186 +#, 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:192 +#, c-format +msgid "Error in sleep: %s" +msgstr "Błąd w poleceniu sleep: %s" -#: ../cli/src/network-manager.c:106 -msgid "NM wireless hardware:" -msgstr "Adres sprzętowy programu NetworkManager:" +#: ../cli/src/network-manager.c:237 ../cli/src/network-manager.c:286 +#: ../cli/src/network-manager.c:318 +#, 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." +#: ../cli/src/network-manager.c:245 +msgid "Networking enabled" +msgstr "Sieć jest włączona" -#. no argument, show current state -#: ../cli/src/network-manager.c:107 -#: ../cli/src/network-manager.c:143 -msgid "NM wireless:" -msgstr "Sieć bezprzewodowa programu NetworkManager:" +#: ../cli/src/network-manager.c:256 +#, 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:265 +#, c-format +msgid "Error: Sleeping status is not exported by NetworkManager." +msgstr "Błąd: stan snu nie jest eksportowany przez program NetworkManager." -#: ../cli/src/network-manager.c:108 -msgid "NM WWAN hardware:" -msgstr "WWAM sprzętu programu NetworkManager:" +#: ../cli/src/network-manager.c:273 +#, 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:294 +msgid "WiFi enabled" +msgstr "WiFi jest włączone" -#. no argument, show current state -#: ../cli/src/network-manager.c:109 -#: ../cli/src/network-manager.c:160 -msgid "NM WWAN:" -msgstr "WWAN programu NetworkManager:" - - -#: ../cli/src/network-manager.c:150 +#: ../cli/src/network-manager.c:305 #, c-format msgid "Error: invalid 'wifi' parameter: '%s'." msgstr "Błąd: nieprawidłowy parametr \"wifi\": \"%s\"." +#: ../cli/src/network-manager.c:326 +msgid "WWAN enabled" +msgstr "WWAN jest włączone" -#: ../cli/src/network-manager.c:167 +#: ../cli/src/network-manager.c:337 #, c-format msgid "Error: invalid 'wwan' parameter: '%s'." msgstr "Błąd: nieprawidłowy parametr \"wwan\": \"%s\"." - -#: ../cli/src/network-manager.c:178 +#: ../cli/src/network-manager.c:348 #, c-format msgid "Error: 'nm' command '%s' is not valid." msgstr "Błąd: parametr \"nm\" \"%s\" jest nieprawidłowy." - -#: ../cli/src/nmcli.c:65 +#: ../cli/src/nmcli.c:69 #, c-format msgid "" "Usage: %s [OPTIONS] OBJECT { COMMAND | help }\n" "\n" "OPTIONS\n" -" -t[erse] terse output\n" -" -p[retty] pretty output\n" -" -v[ersion] show program version\n" -" -h[elp] print this help\n" +" -t[erse] terse output\n" +" -p[retty] pretty output\n" +" -m[ode] tabular|multiline output mode\n" +" -f[ields] |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" @@ -1042,10 +1052,14 @@ msgstr "" "Użycie: %s [OPCJE] OBIEKT { POLECENIE | help }\n" "\n" "OPCJE\n" -" -t[erse] zwięzłe wyjście\n" -" -p[retty] sformatowane wyjście\n" -" -v[ersion] wyświetla wersję programu\n" -" -h[elp] wyświetla tę opcję\n" +" -t[erse] zwięzłe wyjście\n" +" -p[retty] sformatowane wyjście\n" +" -m[ode] tabulatory|wielowierszowe tryb wyjścia\n" +" -f[ields] |all|common określa pola do wyjścia\n" +" -e[scape] yes|no modyfikuje separatory kolumn w " +"wartościach\n" +" -v[ersion] wyświetla wersję programu\n" +" -h[elp] wyświetla tę opcję\n" "\n" "OBIEKT\n" " nm stan programu NetworkManager\n" @@ -1053,41 +1067,170 @@ msgstr "" " dev urządzenia zarządzane przez program NetworkManager\n" "\n" - -#: ../cli/src/nmcli.c:106 +#: ../cli/src/nmcli.c:113 #, c-format -msgid "Object '%s' is unknown, try 'nmcli help'." -msgstr "Obiekt \"%s\" jest nieznany. Można spróbować polecenie \"nmcli help\"." +msgid "Error: Object '%s' is unknown, try 'nmcli help'." +msgstr "" +"Błąd: obiekt \"%s\" jest nieznany, można spróbować polecenie \"nmcli help\"." +#: ../cli/src/nmcli.c:143 +#, c-format +msgid "Error: Option '--terse' is specified the second time." +msgstr "Błąd: opcja \"--terse\" został podana po raz drugi." -#: ../cli/src/nmcli.c:139 +#: ../cli/src/nmcli.c:148 +#, c-format +msgid "Error: Option '--terse' is mutually exclusive with '--pretty'." +msgstr "" +"Błąd: opcja \"--terse\" jest wzajemnie wykluczająca z opcją \"--pretty\"." + +#: ../cli/src/nmcli.c:156 +#, c-format +msgid "Error: Option '--pretty' is specified the second time." +msgstr "Błąd: opcja \"--pretty\" został podana po raz drugi." + +#: ../cli/src/nmcli.c:161 +#, c-format +msgid "Error: Option '--pretty' is mutually exclusive with '--terse'." +msgstr "" +"Błąd: opcja \"--pretty\" jest wzajemnie wykluczająca z opcją \"--terse\"." + +#: ../cli/src/nmcli.c:171 ../cli/src/nmcli.c:187 +#, c-format +msgid "Error: missing argument for '%s' option." +msgstr "Błąd: brak parametru dla opcji \"%s\"." + +#: ../cli/src/nmcli.c:180 ../cli/src/nmcli.c:196 +#, c-format +msgid "Error: '%s' is not valid argument for '%s' option." +msgstr "Błąd: \"%s\" nie jest prawidłowym parametrem dla opcji \"%s\"." + +#: ../cli/src/nmcli.c:203 +#, c-format +msgid "Error: fields for '%s' options are missing." +msgstr "Błąd: brak pól dla opcji \"%s\"." + +#: ../cli/src/nmcli.c:209 #, c-format msgid "nmcli tool, version %s\n" msgstr "narzędzie nmcli, wersja %s\n" - -#: ../cli/src/nmcli.c:145 +#: ../cli/src/nmcli.c:215 #, c-format -msgid "Option '%s' is unknown, try 'nmcli -help'." -msgstr "Opcja \"%s\" jest nieznana. Można spróbować polecenie \"nmcli help\"." +msgid "Error: Option '%s' is unknown, try 'nmcli -help'." +msgstr "" +"Błąd: opcja \"%s\" jest nieznana. Można spróbować polecenie \"nmcli help\"." - -#: ../cli/src/nmcli.c:164 +#: ../cli/src/nmcli.c:234 #, c-format msgid "Caught signal %d, shutting down..." msgstr "Przechwycono sygnał %d, wyłączanie..." - -#: ../cli/src/nmcli.c:189 +#: ../cli/src/nmcli.c:259 #, c-format msgid "Error: Could not connect to NetworkManager." msgstr "Błąd: nie można połączyć się z programem NetworkManager." - -#: ../cli/src/nmcli.c:205 +#: ../cli/src/nmcli.c:275 msgid "Success" msgstr "Powodzenie" +#: ../cli/src/settings.c:411 +#, c-format +msgid "%d (hex-ascii-key)" +msgstr "%d (klucz-szesnastkowy-acsii))" + +#: ../cli/src/settings.c:413 +#, c-format +msgid "%d (104/128-bit passphrase)" +msgstr "%d (104/128-bitowe hasło)" + +#: ../cli/src/settings.c:416 +#, c-format +msgid "%d (unknown)" +msgstr "%d (nieznane)" + +#: ../cli/src/settings.c:442 +msgid "0 (unknown)" +msgstr "0 (nieznane)" + +#: ../cli/src/settings.c:448 +msgid "any, " +msgstr "dowolne, " + +#: ../cli/src/settings.c:450 +msgid "900 MHz, " +msgstr "900 MHz, " + +#: ../cli/src/settings.c:452 +msgid "1800 MHz, " +msgstr "1800 MHz, " + +#: ../cli/src/settings.c:454 +msgid "1900 MHz, " +msgstr "1900 MHz, " + +#: ../cli/src/settings.c:456 +msgid "850 MHz, " +msgstr "850 MHz, " + +#: ../cli/src/settings.c:458 +msgid "WCDMA 3GPP UMTS 2100 MHz, " +msgstr "WCDMA 3GPP UMTS 2100 MHz, " + +#: ../cli/src/settings.c:460 +msgid "WCDMA 3GPP UMTS 1800 MHz, " +msgstr "WCDMA 3GPP UMTS 1800 MHz, " + +#: ../cli/src/settings.c:462 +msgid "WCDMA 3GPP UMTS 1700/2100 MHz, " +msgstr "WCDMA 3GPP UMTS 1700/2100 MHz, " + +#: ../cli/src/settings.c:464 +msgid "WCDMA 3GPP UMTS 800 MHz, " +msgstr "WCDMA 3GPP UMTS 800 MHz, " + +#: ../cli/src/settings.c:466 +msgid "WCDMA 3GPP UMTS 850 MHz, " +msgstr "WCDMA 3GPP UMTS 850 MHz, " + +#: ../cli/src/settings.c:468 +msgid "WCDMA 3GPP UMTS 900 MHz, " +msgstr "WCDMA 3GPP UMTS 900 MHz, " + +#: ../cli/src/settings.c:470 +msgid "WCDMA 3GPP UMTS 1700 MHz, " +msgstr "WCDMA 3GPP UMTS 1700 MHz, " + +#: ../cli/src/settings.c:554 ../cli/src/settings.c:721 +msgid "auto" +msgstr "automatyczne" + +#: ../cli/src/settings.c:716 ../cli/src/settings.c:719 +#: ../cli/src/settings.c:720 ../cli/src/utils.c:172 +msgid "not set" +msgstr "nieustawione" + +#: ../cli/src/utils.c:124 +#, c-format +msgid "field '%s' has to be alone" +msgstr "pole \"%s\" musi być same" + +#: ../cli/src/utils.c:127 +#, c-format +msgid "invalid field '%s'" +msgstr "nieprawidłowe pole \"%s\"" + +#: ../cli/src/utils.c:146 +#, c-format +msgid "Option '--terse' requires specifying '--fields'" +msgstr "Opcja \"--terse\" wymaga podania opcji \"--fields\"" + +#: ../cli/src/utils.c:150 +#, c-format +msgid "Option '--terse' requires specific '--fields' option values , not '%s'" +msgstr "" +"Opcja \"--terse\" wymaga konkretnej wartości opcji \"--fields\", nie \"%s\"" #: ../libnm-util/crypto.c:120 #, c-format @@ -1099,7 +1242,6 @@ msgstr "Plik klucza PEM nie zawiera znacznika końcowego \"%s\"." msgid "Doesn't look like a PEM private key file." msgstr "Nie wygląda na plik klucza prywatnego PEM." - #: ../libnm-util/crypto.c:138 #, c-format msgid "Not enough memory to store PEM file data." @@ -1145,7 +1287,6 @@ msgstr "Nie można zdekodować klucza prywatnego." msgid "PEM certificate '%s' had no end tag '%s'." msgstr "Certyfikat PEM \"%s\" nie zawiera kończącego znacznika \"%s\"." - #: ../libnm-util/crypto.c:277 #, c-format msgid "Failed to decode certificate." @@ -1161,7 +1302,6 @@ msgstr "Brak wystarczającej ilości pamięci do przechowania danych certyfikatu msgid "Not enough memory to store file data." msgstr "Brak wystarczającej ilości pamięci do przechowania danych pliku." - #: ../libnm-util/crypto.c:324 #, c-format msgid "IV must be an even number of bytes in length." @@ -1172,16 +1312,13 @@ msgstr "Liczba bajtów w IV musi być liczbą parzystą." msgid "Not enough memory to store the IV." msgstr "Brak wystarczającej ilości pamięci do przechowania IV." - #: ../libnm-util/crypto.c:344 #, c-format msgid "IV contains non-hexadecimal digits." msgstr "IV zawiera nieszesnastkowe cyfry." -#: ../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.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 #, c-format msgid "Private key cipher '%s' was unknown." @@ -1192,7 +1329,6 @@ msgstr "Nieznany szyfr klucza prywatnego \"%s\"." msgid "Not enough memory to decrypt private key." msgstr "Brak wystarczającej ilości pamięci do odszyfrowania klucza prywatnego." - #: ../libnm-util/crypto.c:511 #, c-format msgid "Unable to determine private key type." @@ -1201,95 +1337,85 @@ msgstr "Nie można określić typu klucza prywatnego." #: ../libnm-util/crypto.c:530 #, c-format msgid "Not enough memory to store decrypted private key." -msgstr "Brak wystarczającej ilości pamięci do przechowania odszyfrowanego klucza prywatnego." - +msgstr "" +"Brak wystarczającej ilości pamięci do przechowania odszyfrowanego klucza " +"prywatnego." #: ../libnm-util/crypto_gnutls.c:49 msgid "Failed to initialize the crypto engine." msgstr "Zainicjowanie modułu szyfrowania się nie powiodło." - #: ../libnm-util/crypto_gnutls.c:93 #, 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 #, 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:165 ../libnm-util/crypto_nss.c:188 #, 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 #, c-format msgid "Failed to initialize the decryption cipher context: %s / %s." -msgstr "Zainicjowanie kontekstu szyfru do odszyfrowania się nie powiodło: %s / %s." - +msgstr "" +"Zainicjowanie kontekstu szyfru do odszyfrowania się nie powiodło: %s / %s." #: ../libnm-util/crypto_gnutls.c:182 #, c-format msgid "Failed to set symmetric key for decryption: %s / %s." -msgstr "Ustawienie klucza symetrycznego do odszyfrowania się nie powiodło: %s / %s." - +msgstr "" +"Ustawienie klucza symetrycznego do odszyfrowania się nie powiodło: %s / %s." #: ../libnm-util/crypto_gnutls.c:191 #, 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 #, 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:210 ../libnm-util/crypto_nss.c:267 #, 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." +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:221 ../libnm-util/crypto_nss.c:278 #, 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:286 ../libnm-util/crypto_nss.c:356 #, c-format msgid "Could not allocate memory for encrypting." msgstr "Nie można przydzielić pamięci do szyfrowania." - #: ../libnm-util/crypto_gnutls.c:294 #, c-format msgid "Failed to initialize the encryption cipher context: %s / %s." -msgstr "Zainicjowanie kontekstu szyfru do szyfrowania się nie powiodło: %s / %s." - +msgstr "" +"Zainicjowanie kontekstu szyfru do szyfrowania się nie powiodło: %s / %s." #: ../libnm-util/crypto_gnutls.c:303 #, c-format msgid "Failed to set symmetric key for encryption: %s / %s." -msgstr "Ustawienie klucza symetrycznego do szyfrowania się nie powiodło: %s / %s." - +msgstr "" +"Ustawienie klucza symetrycznego do szyfrowania się nie powiodło: %s / %s." #: ../libnm-util/crypto_gnutls.c:313 #, 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 #, c-format msgid "Failed to encrypt the data: %s / %s." @@ -1300,7 +1426,6 @@ msgstr "Zaszyfrowanie danych się nie powiodło: %s / %s." msgid "Error initializing certificate data: %s" msgstr "Błąd podczas inicjowania danych certyfikatu: %s" - #: ../libnm-util/crypto_gnutls.c:384 #, c-format msgid "Couldn't decode certificate: %s" @@ -1311,121 +1436,103 @@ msgstr "Nie można zdekodować certyfikatu: %s" msgid "Couldn't initialize PKCS#12 decoder: %s" msgstr "Nie można zainicjować dekodera PKCS#12: %s" - #: ../libnm-util/crypto_gnutls.c:421 #, 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 #, c-format msgid "Couldn't verify PKCS#12 file: %s" msgstr "Nie można zweryfikować pliku PKCS#12: %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 #, 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 #, 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 #, 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 #, 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 #, c-format msgid "Failed to set IV for decryption." msgstr "Ustawienie IV do odszyfrowania się nie powiodło." - #: ../libnm-util/crypto_nss.c:224 #, c-format msgid "Failed to initialize the decryption context." msgstr "Zainicjowanie kontekstu odszyfrowania się nie powiodło." - #: ../libnm-util/crypto_nss.c:237 #, 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 #, 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." - +msgstr "" +"Odszyfrowanie klucza prywatnego się nie powiodło: odszyfrowane dane są za " +"duże." #: ../libnm-util/crypto_nss.c:256 #, 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 #, 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 #, 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 #, c-format msgid "Failed to set IV for encryption." msgstr "Ustawienie IV do szyfrowania się nie powiodło." - #: ../libnm-util/crypto_nss.c:388 #, c-format msgid "Failed to initialize the encryption context." msgstr "Zainicjowanie kontekstu szyfrowania się nie powiodło." - #: ../libnm-util/crypto_nss.c:396 #, c-format msgid "Failed to encrypt: %d." msgstr "Zaszyfrowanie się nie powiodło: %d." - #: ../libnm-util/crypto_nss.c:404 #, c-format msgid "Unexpected amount of data after encrypting." msgstr "Nieoczekiwana ilość danych po zaszyfrowaniu." - #: ../libnm-util/crypto_nss.c:447 #, c-format msgid "Couldn't decode certificate: %d" msgstr "Nie można zdekodować certyfikatu: %d" - #: ../libnm-util/crypto_nss.c:482 #, c-format msgid "Couldn't convert password to UCS2: %d" @@ -1436,152 +1543,46 @@ msgstr "Nie można przekonwertować hasła do UCS2: %d" msgid "Couldn't initialize PKCS#12 decoder: %d" msgstr "Nie można zainicjować dekodera PKCS#12: %d" - #: ../libnm-util/crypto_nss.c:519 #, 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 #, 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 msgid "Could not generate random data." msgstr "Nie można utworzyć losowych danych." - -#: ../libnm-util/nm-utils.c:1545 +#: ../libnm-util/nm-utils.c:1975 #, 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:1655 +#: ../libnm-util/nm-utils.c:2085 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:1667 +#: ../libnm-util/nm-utils.c:2097 #, 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:1679 +#: ../libnm-util/nm-utils.c:2109 #, 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." +msgstr "" +"Nie można przydzielić pamięci do zapisywania zaszyfrowanego klucza do pliku " +"PEM." - -#: ../libnm-util/nm-utils.c:1698 +#: ../libnm-util/nm-utils.c:2128 #, c-format msgid "Could not allocate memory for PEM file data." msgstr "Nie można przydzielić pamięci dla danych pliku PEM." -#: ../src/nm-netlink-monitor.c:194 -#: ../src/nm-netlink-monitor.c:464 -#: ../src/nm-netlink-monitor.c:582 -#: ../src/ip6-manager/nm-netlink-listener.c:352 -#, c-format -msgid "error processing netlink message: %s" -msgstr "błąd podczas przetwarzania komunikatu netlink: %s" - - -#: ../src/nm-netlink-monitor.c:260 -#, 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:270 -#, 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:278 -#, c-format -msgid "unable to join netlink group for monitoring link status: %s" -msgstr "nie można dołączyć do grupy netlink dla monitorowania stanu połączenia: %s" - - -#: ../src/nm-netlink-monitor.c:286 -#, 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:494 -#: ../src/ip6-manager/nm-netlink-listener.c:382 -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:558 -#: ../src/nm-netlink-monitor.c:571 -#, c-format -msgid "error updating link cache: %s" -msgstr "błąd podczas aktualizowania pamięci podręcznej połączenia: %s" - - -#: ../src/NetworkManager.c:494 -#, 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/dhcp-manager/nm-dhcp-dhclient.c:300 -msgid "# Created by NetworkManager\n" -msgstr "# Utworzony przez program NetworkManager\n" - -#: ../src/dhcp-manager/nm-dhcp-dhclient.c:316 -#, c-format -msgid "" -"# Merged from %s\n" -"\n" -msgstr "" -"# Scalony od %s\n" -"\n" - - -#: ../src/ip6-manager/nm-netlink-listener.c:200 -#, c-format -msgid "unable to allocate netlink handle: %s" -msgstr "nie można przydzielić uchwytu netlink: %s" - -#: ../src/ip6-manager/nm-netlink-listener.c:210 -#, c-format -msgid "unable to connect to netlink: %s" -msgstr "nie można połączyć się z netlink: %s" - -#: ../src/ip6-manager/nm-netlink-listener.c:307 -#, c-format -msgid "unable to join netlink group: %s" -msgstr "nie można dołączyć do grupy netlink: %s" - -#: ../src/dns-manager/nm-dns-manager.c:315 -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:317 -msgid "The nameservers listed below may not be recognized." -msgstr "Poniższe serwery nazw nie mogą nie zostać rozpoznane." - - -#: ../src/system-settings/nm-default-wired-connection.c:157 -#, c-format -msgid "Auto %s" -msgstr "Automatyczne %s" - - -#: ../system-settings/plugins/ifcfg-rh/reader.c:3213 -msgid "System" -msgstr "Systemowe" - #: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:1 msgid "Connection sharing via a protected WiFi network" msgstr "Współdzielenie połączenia przez chronioną sieć WiFi" @@ -1604,13 +1605,187 @@ msgstr "Polityka systemu powstrzymuje modyfikację ustawień systemowych" #: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:6 msgid "System policy prevents modification of the persistent system hostname" -msgstr "Polityka systemu powstrzymuje modyfikację trwałej systemowej nazwy komputera" +msgstr "" +"Polityka systemu powstrzymuje modyfikację trwałej systemowej nazwy komputera" #: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:7 msgid "System policy prevents sharing connections via a protected WiFi network" -msgstr "Polityka systemu powstrzymuje współdzielenie połączeń przez chronioną sieć WiFi" +msgstr "" +"Polityka systemu powstrzymuje współdzielenie połączeń przez chronioną sieć " +"WiFi" #: ../policy/org.freedesktop.network-manager-settings.system.policy.in.h:8 msgid "System policy prevents sharing connections via an open WiFi network" -msgstr "Polityka systemu powstrzymuje współdzielenie połączeń przez otwartą sieć WiFi" +msgstr "" +"Polityka systemu powstrzymuje współdzielenie połączeń przez otwartą sieć WiFi" +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:1 +msgid "Allow control of network connections" +msgstr "Umożliwienie kontroli połączeń sieciowych" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:2 +msgid "Allow use of user-specific connections" +msgstr "Umożliwienie użycia połączeń użytkowników" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:3 +msgid "Enable or disable WiFi devices" +msgstr "Włączenie lub wyłączenie urządzeń WiFi" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:4 +msgid "Enable or disable mobile broadband devices" +msgstr "Włączenie lub wyłączenie urządzeń komórkowych" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:5 +msgid "Enable or disable system networking" +msgstr "Włączenie lub wyłączenie sieci systemowej" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:6 +msgid "" +"Put NetworkManager to sleep or wake it up (should only be used by system " +"power management)" +msgstr "" +"Umieszczenie programu NetworkManager w stanie uśpienia lub przebudzenie go " +"(powinno być używane tylko przez systemowe zarządzanie zasilaniem)" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:7 +msgid "System policy prevents control of network connections" +msgstr "Polityka systemu powstrzymuje kontrolę połączeń sieciowych" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:8 +msgid "System policy prevents enabling or disabling WiFi devices" +msgstr "Polityka systemu powstrzymuje włączanie lub wyłączanie urządzeń WiFi" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:9 +msgid "System policy prevents enabling or disabling mobile broadband devices" +msgstr "" +"Polityka systemu powstrzymuje włączenie lub wyłączenie urządzeń komórkowych" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:10 +msgid "System policy prevents enabling or disabling system networking" +msgstr "" +"Polityka systemu powstrzymuje włączanie lub wyłączanie sieci systemowej" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:11 +msgid "System policy prevents putting NetworkManager to sleep or waking it up" +msgstr "" +"Polityka systemu powstrzymuje umieszczenie programu NetworkManager w stanie " +"uśpienia lub przebudzenie go" + +#: ../policy/org.freedesktop.NetworkManager.policy.in.h:12 +msgid "System policy prevents use of user-specific connections" +msgstr "Polityka systemu powstrzymuje użycie połączeń użytkownika" + +#: ../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 "błąd podczas przetwarzania komunikatu netlink: %s" + +#: ../src/nm-netlink-monitor.c:214 +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 +#, 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 +#, c-format +msgid "unable to enable netlink handle credential passing: %s" +msgstr "" +"nie można włączyć przekazywania danych uwierzytelniających uchwytu netlink: " +"%s" + +#: ../src/nm-netlink-monitor.c:291 ../src/nm-netlink-monitor.c:353 +#, c-format +msgid "unable to allocate netlink handle for monitoring link status: %s" +msgstr "" +"nie można przydzielić uchwytu netlink dla monitorowania stanu połączenia: %s" + +#: ../src/nm-netlink-monitor.c:376 +#, 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 +#, 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 +#, c-format +msgid "error updating link cache: %s" +msgstr "błąd podczas aktualizowania pamięci podręcznej połączenia: %s" + +#: ../src/main.c:499 +#, 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:570 +#, 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" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:328 +msgid "# Created by NetworkManager\n" +msgstr "# Utworzony przez program NetworkManager\n" + +#: ../src/dhcp-manager/nm-dhcp-dhclient.c:344 +#, c-format +msgid "" +"# Merged from %s\n" +"\n" +msgstr "" +"# Scalony od %s\n" +"\n" + +#: ../src/dhcp-manager/nm-dhcp-manager.c:284 +msgid "no usable DHCP client could be found." +msgstr "nie odnaleziono używalnego klienta DHCP." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:293 +msgid "'dhclient' could be found." +msgstr "nie można odnaleźć polecenia \"dhclient\"." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:303 +msgid "'dhcpcd' could be found." +msgstr "nie można odnaleźć usługi \"dhcpcd\"." + +#: ../src/dhcp-manager/nm-dhcp-manager.c:311 +#, c-format +msgid "unsupported DHCP client '%s'" +msgstr "nieobsługiwany klient DHCP \"%s\"" + +#: ../src/logging/nm-logging.c:146 +#, c-format +msgid "Unknown log level '%s'" +msgstr "Nieznany poziom dziennika \"%s\"" + +#: ../src/logging/nm-logging.c:171 +#, c-format +msgid "Unknown log domain '%s'" +msgstr "Nieznana domena dziennika \"%s\"" + +#: ../src/dns-manager/nm-dns-manager.c:384 +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:386 +msgid "The nameservers listed below may not be recognized." +msgstr "Poniższe serwery nazw nie mogą nie zostać rozpoznane." + +#: ../src/system-settings/nm-default-wired-connection.c:157 +#, c-format +msgid "Auto %s" +msgstr "Automatyczne %s" + +#: ../system-settings/plugins/ifcfg-rh/reader.c:3412 +#: ../system-settings/plugins/ifnet/connection_parser.c:49 +msgid "System" +msgstr "Systemowe" diff --git a/src/NetworkManager.conf b/src/NetworkManager.conf index afaef2179..fbbeb935d 100644 --- a/src/NetworkManager.conf +++ b/src/NetworkManager.conf @@ -57,6 +57,18 @@ + + + + + + @@ -76,7 +88,19 @@ send_interface="org.freedesktop.NetworkManager" send_member="SetLogging"/> - diff --git a/src/backends/Makefile.am b/src/backends/Makefile.am index b35fafd72..036dc6de3 100644 --- a/src/backends/Makefile.am +++ b/src/backends/Makefile.am @@ -53,6 +53,10 @@ if TARGET_PARDUS libnmbackend_la_SOURCES += NetworkManagerPardus.c endif +if TARGET_LINEXA +libnmbackend_la_SOURCES += NetworkManagerLinexa.c +endif + libnmbackend_la_LIBADD += \ $(top_builddir)/src/logging/libnm-logging.la \ $(DBUS_LIBS) \ diff --git a/src/backends/NetworkManagerLinexa.c b/src/backends/NetworkManagerLinexa.c new file mode 100644 index 000000000..015aa17c6 --- /dev/null +++ b/src/backends/NetworkManagerLinexa.c @@ -0,0 +1,66 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */ +/* NetworkManager -- Network link manager + * + * Matthew Garrett + * + * Heavily based on NetworkManagerRedhat.c by Dan Williams + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * (C) Copyright 2004 Tom Parker + * (C) Copyright 2004 Matthew Garrett + * (C) Copyright 2004 Red Hat, Inc. + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include + +#include "NetworkManagerGeneric.h" +#include "nm-system.h" +#include "NetworkManagerUtils.h" +#include "nm-logging.h" + +/* + * nm_system_enable_loopback + * + * Bring up the loopback interface + * + */ +void nm_system_enable_loopback (void) +{ + nm_generic_enable_loopback (); +} + +/* + * nm_system_update_dns + * + * Invalidate the nscd host cache, if it exists, since + * we changed resolv.conf. + * + */ +void nm_system_update_dns (void) +{ + if (g_file_test ("/usr/sbin/nscd", G_FILE_TEST_IS_EXECUTABLE)) { + nm_log_info (LOGD_DNS, "Clearing nscd hosts cache."); + nm_spawn_process ("/usr/sbin/nscd -i hosts"); + } +} + + diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index 1d50d4221..28b2c78fe 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include diff --git a/src/dhcp-manager/nm-dhcp-dhclient.c b/src/dhcp-manager/nm-dhcp-dhclient.c index 2f25fca98..091ae2f98 100644 --- a/src/dhcp-manager/nm-dhcp-dhclient.c +++ b/src/dhcp-manager/nm-dhcp-dhclient.c @@ -512,6 +512,8 @@ dhclient_start (NMDHCPClient *client, uuid = nm_dhcp_client_get_uuid (client); ipv6 = nm_dhcp_client_get_ipv6 (client); + log_domain = ipv6 ? LOGD_DHCP6 : LOGD_DHCP4; + #if defined(DHCLIENT_V3) if (ipv6) { nm_log_warn (log_domain, "(%s): ISC dhcp3 does not support IPv6", iface); @@ -521,8 +523,6 @@ dhclient_start (NMDHCPClient *client, g_return_val_if_fail (ip_opt != NULL, -1); #endif - log_domain = ipv6 ? LOGD_DHCP6 : LOGD_DHCP4; - priv->pid_file = g_strdup_printf (LOCALSTATEDIR "/run/dhclient%s-%s.pid", ipv6 ? "6" : "", iface); diff --git a/src/dns-manager/nm-dns-bind.c b/src/dns-manager/nm-dns-bind.c index 2e1ec67de..9e3fc1739 100644 --- a/src/dns-manager/nm-dns-bind.c +++ b/src/dns-manager/nm-dns-bind.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/src/dns-manager/nm-dns-dnsmasq.c b/src/dns-manager/nm-dns-dnsmasq.c index 254e2ffbb..41c8e2a64 100644 --- a/src/dns-manager/nm-dns-dnsmasq.c +++ b/src/dns-manager/nm-dns-dnsmasq.c @@ -18,6 +18,7 @@ * */ +#include #include #include #include diff --git a/src/dns-manager/nm-dns-manager.c b/src/dns-manager/nm-dns-manager.c index 71adbc526..7a6fbbc9d 100644 --- a/src/dns-manager/nm-dns-manager.c +++ b/src/dns-manager/nm-dns-manager.c @@ -572,7 +572,7 @@ update_dns (NMDnsManager *self, priv = NM_DNS_MANAGER_GET_PRIVATE (self); - if (iface) { + if (iface && (iface != priv->last_iface)) { g_free (priv->last_iface); priv->last_iface = g_strdup (iface); } diff --git a/src/dns-manager/nm-dns-plugin.c b/src/dns-manager/nm-dns-plugin.c index d47640b1c..f7d65a529 100644 --- a/src/dns-manager/nm-dns-plugin.c +++ b/src/dns-manager/nm-dns-plugin.c @@ -17,6 +17,7 @@ * */ +#include #include #include #include @@ -106,7 +107,7 @@ kill_existing (const char *progname, const char *pidfile, const char *kill_match goto out; if (strstr (cmdline_contents, kill_match)) { - if (kill (pid, 0)) { + if (kill (pid, 0) == 0) { nm_log_dbg (LOGD_DNS, "Killing stale %s child process %ld", progname, pid); kill (pid, SIGKILL); } diff --git a/src/dnsmasq-manager/nm-dnsmasq-manager.c b/src/dnsmasq-manager/nm-dnsmasq-manager.c index e6c67a1e3..701c07826 100644 --- a/src/dnsmasq-manager/nm-dnsmasq-manager.c +++ b/src/dnsmasq-manager/nm-dnsmasq-manager.c @@ -18,6 +18,7 @@ * Copyright (C) 2008 - 2010 Red Hat, Inc. */ +#include #include #include #include @@ -385,7 +386,7 @@ kill_existing_for_iface (const char *iface, const char *pidfile) goto out; if (strstr (cmdline_contents, "bin/dnsmasq")) { - if (kill (pid, 0)) { + if (kill (pid, 0) == 0) { nm_log_dbg (LOGD_SHARING, "Killing stale dnsmasq process %ld", pid); kill (pid, SIGKILL); } diff --git a/src/nm-device-ethernet.c b/src/nm-device-ethernet.c index 08bbc5011..13139542f 100644 --- a/src/nm-device-ethernet.c +++ b/src/nm-device-ethernet.c @@ -78,30 +78,17 @@ typedef enum #define NM_ETHERNET_ERROR (nm_ethernet_error_quark ()) #define NM_TYPE_ETHERNET_ERROR (nm_ethernet_error_get_type ()) -typedef struct SupplicantStateTask { - NMDeviceEthernet *self; - guint32 new_state; - guint32 old_state; - gboolean mgr_task; - guint source_id; -} SupplicantStateTask; - typedef struct Supplicant { NMSupplicantManager *mgr; NMSupplicantInterface *iface; /* signal handler ids */ - guint mgr_state_id; guint iface_error_id; guint iface_state_id; - guint iface_con_state_id; /* Timeouts and idles */ guint iface_con_error_cb_id; guint con_timeout_id; - - GSList *iface_tasks; - GSList *mgr_tasks; } Supplicant; typedef struct { @@ -996,30 +983,6 @@ remove_supplicant_timeouts (NMDeviceEthernet *self) } } -static void -finish_supplicant_task (SupplicantStateTask *task, gboolean remove_source) -{ - NMDeviceEthernet *self = task->self; - NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self); - - /* idle/timeout handlers should pass FALSE for remove_source, since they - * will tell glib to remove their source from the mainloop by returning - * FALSE when they exit. When called from this NMDevice's dispose handler, - * remove_source should be TRUE to cancel all outstanding idle/timeout - * handlers asynchronously. - */ - if (task->source_id && remove_source) - g_source_remove (task->source_id); - - if (task->mgr_task) - priv->supplicant.mgr_tasks = g_slist_remove (priv->supplicant.mgr_tasks, task); - else - priv->supplicant.iface_tasks = g_slist_remove (priv->supplicant.iface_tasks, task); - - memset (task, 0, sizeof (SupplicantStateTask)); - g_slice_free (SupplicantStateTask, task); -} - static void remove_supplicant_interface_error_handler (NMDeviceEthernet *self) { @@ -1044,28 +1007,14 @@ supplicant_interface_release (NMDeviceEthernet *self) remove_supplicant_timeouts (self); remove_supplicant_interface_error_handler (self); - /* Clean up all pending supplicant interface state idle tasks */ - while (priv->supplicant.iface_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.iface_tasks->data, TRUE); - - if (priv->supplicant.iface_con_state_id) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_con_state_id); - priv->supplicant.iface_con_state_id = 0; - } - if (priv->supplicant.iface_state_id > 0) { g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_state_id); priv->supplicant.iface_state_id = 0; } - if (priv->supplicant.mgr_state_id) { - g_signal_handler_disconnect (priv->supplicant.mgr, priv->supplicant.mgr_state_id); - priv->supplicant.mgr_state_id = 0; - } - if (priv->supplicant.iface) { nm_supplicant_interface_disconnect (priv->supplicant.iface); - nm_supplicant_manager_release_iface (priv->supplicant.mgr, priv->supplicant.iface); + nm_supplicant_manager_iface_release (priv->supplicant.mgr, priv->supplicant.iface); priv->supplicant.iface = NULL; } } @@ -1127,77 +1076,6 @@ time_out: return FALSE; } -static gboolean -schedule_state_handler (NMDeviceEthernet *self, - GSourceFunc handler, - guint32 new_state, - guint32 old_state, - gboolean mgr_task) -{ - NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self); - SupplicantStateTask *task; - - if (new_state == old_state) - return TRUE; - - task = g_slice_new0 (SupplicantStateTask); - if (!task) { - nm_log_err (LOGD_DEVICE, "Not enough memory to process supplicant manager state change."); - return FALSE; - } - - task->self = self; - task->new_state = new_state; - task->old_state = old_state; - task->mgr_task = mgr_task; - - task->source_id = g_idle_add (handler, task); - if (mgr_task) - priv->supplicant.mgr_tasks = g_slist_append (priv->supplicant.mgr_tasks, task); - else - priv->supplicant.iface_tasks = g_slist_append (priv->supplicant.iface_tasks, task); - return TRUE; -} - -static gboolean -supplicant_mgr_state_cb_handler (gpointer user_data) -{ - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDevice *device = NM_DEVICE (task->self); - - /* If the supplicant went away, release the supplicant interface */ - if (task->new_state == NM_SUPPLICANT_MANAGER_STATE_DOWN) { - supplicant_interface_release (task->self); - - if (nm_device_get_state (device) > NM_DEVICE_STATE_UNAVAILABLE) { - nm_device_state_changed (device, NM_DEVICE_STATE_UNAVAILABLE, - NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - } - } - - finish_supplicant_task (task, FALSE); - return FALSE; -} - -static void -supplicant_mgr_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - gpointer user_data) -{ - nm_log_info (LOGD_DEVICE | LOGD_ETHER, - "(%s): supplicant manager state: %s -> %s", - nm_device_get_iface (NM_DEVICE (user_data)), - nm_supplicant_manager_state_to_string (old_state), - nm_supplicant_manager_state_to_string (new_state)); - - schedule_state_handler (NM_DEVICE_ETHERNET (user_data), - supplicant_mgr_state_cb_handler, - new_state, - old_state, - TRUE); -} - static NMSupplicantConfig * build_supplicant_config (NMDeviceEthernet *self) { @@ -1224,20 +1102,33 @@ build_supplicant_config (NMDeviceEthernet *self) return config; } -static gboolean -supplicant_iface_state_cb_handler (gpointer user_data) +static void +supplicant_iface_state_cb (NMSupplicantInterface *iface, + guint32 new_state, + guint32 old_state, + gpointer user_data) { - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (task->self); - NMDevice *device = NM_DEVICE (task->self); + NMDeviceEthernet *self = NM_DEVICE_ETHERNET (user_data); + NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (self); + NMDevice *device = NM_DEVICE (self); + NMSupplicantConfig *config; + gboolean success = FALSE; + NMDeviceState devstate; - if (task->new_state == NM_SUPPLICANT_INTERFACE_STATE_READY) { - NMSupplicantConfig *config; - const char *iface; - gboolean success = FALSE; + if (new_state == old_state) + return; - iface = nm_device_get_iface (device); - config = build_supplicant_config (task->self); + nm_log_info (LOGD_DEVICE | LOGD_ETHER, + "(%s): supplicant interface state: %s -> %s", + nm_device_get_iface (device), + nm_supplicant_interface_state_to_string (old_state), + nm_supplicant_interface_state_to_string (new_state)); + + devstate = nm_device_get_state (device); + + switch (new_state) { + case NM_SUPPLICANT_INTERFACE_STATE_READY: + config = build_supplicant_config (self); if (config) { success = nm_supplicant_interface_set_config (priv->supplicant.iface, config); g_object_unref (config); @@ -1246,99 +1137,54 @@ supplicant_iface_state_cb_handler (gpointer user_data) nm_log_err (LOGD_DEVICE | LOGD_ETHER, "Activation (%s/wired): couldn't send security " "configuration to the supplicant.", - iface); + nm_device_get_iface (device)); } } else { nm_log_warn (LOGD_DEVICE | LOGD_ETHER, "Activation (%s/wired): couldn't build security configuration.", - iface); + nm_device_get_iface (device)); } - if (!success) - nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED); - } else if (task->new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) { - NMDeviceState state = nm_device_get_state (device); - - supplicant_interface_release (task->self); - - if (nm_device_is_activating (device) || state == NM_DEVICE_STATE_ACTIVATED) - nm_device_state_changed (device, NM_DEVICE_STATE_FAILED, NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - } - - finish_supplicant_task (task, FALSE); - return FALSE; -} - -static void -supplicant_iface_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - gpointer user_data) -{ - - nm_log_info (LOGD_DEVICE | LOGD_ETHER, - "(%s): supplicant interface state: %s -> %s", - nm_device_get_iface (NM_DEVICE (user_data)), - nm_supplicant_interface_state_to_string (old_state), - nm_supplicant_interface_state_to_string (new_state)); - - schedule_state_handler (NM_DEVICE_ETHERNET (user_data), - supplicant_iface_state_cb_handler, - new_state, - old_state, - FALSE); -} - -static gboolean -supplicant_iface_connection_state_cb_handler (gpointer user_data) -{ - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDevice *dev = NM_DEVICE (task->self); - - if (task->new_state == NM_SUPPLICANT_INTERFACE_CON_STATE_COMPLETED) { - remove_supplicant_interface_error_handler (task->self); - remove_supplicant_timeouts (task->self); + if (!success) { + nm_device_state_changed (device, + NM_DEVICE_STATE_FAILED, + NM_DEVICE_STATE_REASON_SUPPLICANT_CONFIG_FAILED); + } + break; + case NM_SUPPLICANT_INTERFACE_STATE_COMPLETED: + remove_supplicant_interface_error_handler (self); + remove_supplicant_timeouts (self); /* If this is the initial association during device activation, * schedule the next activation stage. */ - if (nm_device_get_state (dev) == NM_DEVICE_STATE_CONFIG) { + if (devstate == NM_DEVICE_STATE_CONFIG) { nm_log_info (LOGD_DEVICE | LOGD_ETHER, "Activation (%s/wired) Stage 2 of 5 (Device Configure) successful.", - nm_device_get_iface (dev)); - nm_device_activate_schedule_stage3_ip_config_start (dev); + nm_device_get_iface (device)); + nm_device_activate_schedule_stage3_ip_config_start (device); } - } else if (task->new_state == NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED) { - if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED || nm_device_is_activating (dev)) { - NMDeviceEthernetPrivate *priv = NM_DEVICE_ETHERNET_GET_PRIVATE (task->self); - + break; + case NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED: + if ((devstate == NM_DEVICE_STATE_ACTIVATED) || nm_device_is_activating (device)) { /* Start the link timeout so we allow some time for reauthentication */ if (!priv->supplicant_timeout_id) - priv->supplicant_timeout_id = g_timeout_add_seconds (15, link_timeout_cb, dev); + priv->supplicant_timeout_id = g_timeout_add_seconds (15, link_timeout_cb, device); } + break; + case NM_SUPPLICANT_INTERFACE_STATE_DOWN: + supplicant_interface_release (self); + remove_supplicant_timeouts (self); + + if ((devstate == NM_DEVICE_STATE_ACTIVATED) || nm_device_is_activating (device)) { + nm_device_state_changed (device, + NM_DEVICE_STATE_FAILED, + NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); + } + break; + default: + break; } - - finish_supplicant_task (task, FALSE); - return FALSE; -} - -static void -supplicant_iface_connection_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - gpointer user_data) -{ - nm_log_info (LOGD_DEVICE | LOGD_ETHER, - "(%s) supplicant connection state: %s -> %s", - nm_device_get_iface (NM_DEVICE (user_data)), - nm_supplicant_interface_connection_state_to_string (old_state), - nm_supplicant_interface_connection_state_to_string (new_state)); - - schedule_state_handler (NM_DEVICE_ETHERNET (user_data), - supplicant_iface_connection_state_cb_handler, - new_state, - old_state, - FALSE); } static gboolean @@ -1456,38 +1302,26 @@ supplicant_interface_init (NMDeviceEthernet *self) iface = nm_device_get_iface (NM_DEVICE (self)); /* Create supplicant interface */ - priv->supplicant.iface = nm_supplicant_manager_get_iface (priv->supplicant.mgr, iface, FALSE); + priv->supplicant.iface = nm_supplicant_manager_iface_get (priv->supplicant.mgr, iface, FALSE); if (!priv->supplicant.iface) { nm_log_err (LOGD_DEVICE | LOGD_ETHER, "Couldn't initialize supplicant interface for %s.", iface); supplicant_interface_release (self); - return FALSE; } /* Listen for it's state signals */ priv->supplicant.iface_state_id = g_signal_connect (priv->supplicant.iface, - "state", - G_CALLBACK (supplicant_iface_state_cb), - self); + "state", + G_CALLBACK (supplicant_iface_state_cb), + self); /* Hook up error signal handler to capture association errors */ priv->supplicant.iface_error_id = g_signal_connect (priv->supplicant.iface, - "connection-error", - G_CALLBACK (supplicant_iface_connection_error_cb), - self); - - priv->supplicant.iface_con_state_id = g_signal_connect (priv->supplicant.iface, - "connection-state", - G_CALLBACK (supplicant_iface_connection_state_cb), - self); - - /* Listen for supplicant manager state changes */ - priv->supplicant.mgr_state_id = g_signal_connect (priv->supplicant.mgr, - "state", - G_CALLBACK (supplicant_mgr_state_cb), - self); + "connection-error", + G_CALLBACK (supplicant_iface_connection_error_cb), + self); /* Set up a timeout on the connection attempt to fail it after 25 seconds */ priv->supplicant.con_timeout_id = g_timeout_add_seconds (25, supplicant_connection_timeout_cb, self); @@ -2047,12 +1881,6 @@ dispose (GObject *object) priv->disposed = TRUE; - /* Clean up all pending supplicant tasks */ - while (priv->supplicant.iface_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.iface_tasks->data, TRUE); - while (priv->supplicant.mgr_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.mgr_tasks->data, TRUE); - if (priv->link_connected_id) { g_signal_handler_disconnect (priv->monitor, priv->link_connected_id); priv->link_connected_id = 0; diff --git a/src/nm-device-wifi.c b/src/nm-device-wifi.c index b09d11254..49529708b 100644 --- a/src/nm-device-wifi.c +++ b/src/nm-device-wifi.c @@ -113,34 +113,18 @@ typedef enum { #define NM_WIFI_ERROR (nm_wifi_error_quark ()) #define NM_TYPE_WIFI_ERROR (nm_wifi_error_get_type ()) -typedef struct SupplicantStateTask { - NMDeviceWifi *self; - guint32 new_state; - guint32 old_state; - gboolean mgr_task; - guint source_id; -} SupplicantStateTask; +#define SUP_SIG_ID_LEN 5 typedef struct Supplicant { NMSupplicantManager *mgr; NMSupplicantInterface *iface; - /* signal handler ids */ - guint mgr_state_id; + guint sig_ids[SUP_SIG_ID_LEN]; guint iface_error_id; - guint iface_state_id; - guint iface_scanned_ap_id; - guint iface_scan_request_result_id; - guint iface_scan_results_id; - guint iface_con_state_id; - guint iface_notify_scanning_id; /* Timeouts and idles */ guint iface_con_error_cb_id; guint con_timeout_id; - - GSList *mgr_tasks; - GSList *iface_tasks; } Supplicant; struct _NMDeviceWifiPrivate { @@ -199,15 +183,10 @@ static void cleanup_association_attempt (NMDeviceWifi * self, static void remove_supplicant_timeouts (NMDeviceWifi *self); -static void supplicant_iface_state_cb (NMSupplicantInterface * iface, +static void supplicant_iface_state_cb (NMSupplicantInterface *iface, guint32 new_state, guint32 old_state, - NMDeviceWifi *self); - -static void supplicant_iface_connection_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - NMDeviceWifi *self); + gpointer user_data); static void supplicant_iface_scanned_ap_cb (NMSupplicantInterface * iface, GHashTable *properties, @@ -221,11 +200,6 @@ static void supplicant_iface_scan_results_cb (NMSupplicantInterface * iface, guint32 num_bssids, NMDeviceWifi * self); -static void supplicant_mgr_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - NMDeviceWifi *self); - static void supplicant_iface_notify_scanning_cb (NMSupplicantInterface * iface, GParamSpec * pspec, NMDeviceWifi * self); @@ -625,10 +599,7 @@ constructor (GType type, /* Connect to the supplicant manager */ priv->supplicant.mgr = nm_supplicant_manager_get (); - priv->supplicant.mgr_state_id = g_signal_connect (priv->supplicant.mgr, - "state", - G_CALLBACK (supplicant_mgr_state_cb), - self); + g_assert (priv->supplicant.mgr); /* The ipw2x00 drivers don't integrate with the kernel rfkill subsystem until * 2.6.33. Thus all our nice libgudev magic is useless. So we get to poll. @@ -657,17 +628,13 @@ static gboolean supplicant_interface_acquire (NMDeviceWifi *self) { NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - guint id, mgr_state; + guint id, i = 0; g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (priv->supplicant.mgr != NULL, FALSE); /* interface already acquired? */ g_return_val_if_fail (priv->supplicant.iface == NULL, TRUE); - mgr_state = nm_supplicant_manager_get_state (priv->supplicant.mgr); - g_return_val_if_fail (mgr_state == NM_SUPPLICANT_MANAGER_STATE_IDLE, FALSE); - - priv->supplicant.iface = nm_supplicant_manager_get_iface (priv->supplicant.mgr, + priv->supplicant.iface = nm_supplicant_manager_iface_get (priv->supplicant.mgr, nm_device_get_iface (NM_DEVICE (self)), TRUE); if (priv->supplicant.iface == NULL) { @@ -676,69 +643,41 @@ supplicant_interface_acquire (NMDeviceWifi *self) return FALSE; } + memset (priv->supplicant.sig_ids, 0, sizeof (priv->supplicant.sig_ids)); + id = g_signal_connect (priv->supplicant.iface, "state", G_CALLBACK (supplicant_iface_state_cb), self); - priv->supplicant.iface_state_id = id; + priv->supplicant.sig_ids[i++] = id; id = g_signal_connect (priv->supplicant.iface, "scanned-ap", G_CALLBACK (supplicant_iface_scanned_ap_cb), self); - priv->supplicant.iface_scanned_ap_id = id; + priv->supplicant.sig_ids[i++] = id; id = g_signal_connect (priv->supplicant.iface, "scan-req-result", G_CALLBACK (supplicant_iface_scan_request_result_cb), self); - priv->supplicant.iface_scan_request_result_id = id; + priv->supplicant.sig_ids[i++] = id; id = g_signal_connect (priv->supplicant.iface, "scan-results", G_CALLBACK (supplicant_iface_scan_results_cb), self); - priv->supplicant.iface_scan_results_id = id; - - id = g_signal_connect (priv->supplicant.iface, - "connection-state", - G_CALLBACK (supplicant_iface_connection_state_cb), - self); - priv->supplicant.iface_con_state_id = id; + priv->supplicant.sig_ids[i++] = id; id = g_signal_connect (priv->supplicant.iface, "notify::scanning", G_CALLBACK (supplicant_iface_notify_scanning_cb), self); - priv->supplicant.iface_notify_scanning_id = id; + priv->supplicant.sig_ids[i++] = id; return TRUE; } -static void -finish_supplicant_task (SupplicantStateTask *task, gboolean remove_source) -{ - NMDeviceWifi *self = task->self; - NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - - /* idle/timeout handlers should pass FALSE for remove_source, since they - * will tell glib to remove their source from the mainloop by returning - * FALSE when they exit. When called from this NMDevice's dispose handler, - * remove_source should be TRUE to cancel all outstanding idle/timeout - * handlers asynchronously. - */ - if (task->source_id && remove_source) - g_source_remove (task->source_id); - - if (task->mgr_task) - priv->supplicant.mgr_tasks = g_slist_remove (priv->supplicant.mgr_tasks, task); - else - priv->supplicant.iface_tasks = g_slist_remove (priv->supplicant.iface_tasks, task); - - memset (task, 0, sizeof (SupplicantStateTask)); - g_slice_free (SupplicantStateTask, task); -} - static void remove_supplicant_interface_error_handler (NMDeviceWifi *self) { @@ -762,6 +701,7 @@ static void supplicant_interface_release (NMDeviceWifi *self) { NMDeviceWifiPrivate *priv; + guint i; g_return_if_fail (self != NULL); @@ -776,45 +716,18 @@ supplicant_interface_release (NMDeviceWifi *self) remove_supplicant_interface_error_handler (self); - /* Clean up all pending supplicant interface state idle tasks */ - while (priv->supplicant.iface_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.iface_tasks->data, TRUE); - - if (priv->supplicant.iface_state_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_state_id); - priv->supplicant.iface_state_id = 0; - } - - if (priv->supplicant.iface_scanned_ap_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_scanned_ap_id); - priv->supplicant.iface_scanned_ap_id = 0; - } - - if (priv->supplicant.iface_scan_request_result_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_scan_request_result_id); - priv->supplicant.iface_scan_request_result_id = 0; - } - - if (priv->supplicant.iface_scan_results_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_scan_results_id); - priv->supplicant.iface_scan_results_id = 0; - } - - if (priv->supplicant.iface_con_state_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_con_state_id); - priv->supplicant.iface_con_state_id = 0; - } - - if (priv->supplicant.iface_notify_scanning_id > 0) { - g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.iface_notify_scanning_id); - priv->supplicant.iface_notify_scanning_id = 0; + /* Clear supplicant interface signal handlers */ + for (i = 0; i < SUP_SIG_ID_LEN; i++) { + if (priv->supplicant.sig_ids[i] > 0) + g_signal_handler_disconnect (priv->supplicant.iface, priv->supplicant.sig_ids[i]); } + memset (priv->supplicant.sig_ids, 0, sizeof (priv->supplicant.sig_ids)); if (priv->supplicant.iface) { /* Tell the supplicant to disconnect from the current AP */ nm_supplicant_interface_disconnect (priv->supplicant.iface); - nm_supplicant_manager_release_iface (priv->supplicant.mgr, priv->supplicant.iface); + nm_supplicant_manager_iface_release (priv->supplicant.mgr, priv->supplicant.iface); priv->supplicant.iface = NULL; } } @@ -1837,11 +1750,11 @@ scanning_allowed (NMDeviceWifi *self) } /* Don't scan if the supplicant is busy */ - sup_state = nm_supplicant_interface_get_connection_state (priv->supplicant.iface); - if ( sup_state == NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATING - || sup_state == NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATED - || sup_state == NM_SUPPLICANT_INTERFACE_CON_STATE_4WAY_HANDSHAKE - || sup_state == NM_SUPPLICANT_INTERFACE_CON_STATE_GROUP_HANDSHAKE + sup_state = nm_supplicant_interface_get_state (priv->supplicant.iface); + if ( sup_state == NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATING + || sup_state == NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED + || sup_state == NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE + || sup_state == NM_SUPPLICANT_INTERFACE_STATE_GROUP_HANDSHAKE || nm_supplicant_interface_get_scanning (priv->supplicant.iface)) return FALSE; @@ -2441,253 +2354,97 @@ time_out: return FALSE; } -static gboolean -schedule_state_handler (NMDeviceWifi *self, - GSourceFunc handler, - guint32 new_state, - guint32 old_state, - gboolean mgr_task) +static void +supplicant_iface_state_cb (NMSupplicantInterface *iface, + guint32 new_state, + guint32 old_state, + gpointer user_data) { - NMDeviceWifiPrivate *priv; - SupplicantStateTask *task; - - g_return_val_if_fail (self != NULL, FALSE); - g_return_val_if_fail (handler != NULL, FALSE); + NMDeviceWifi *self = NM_DEVICE_WIFI (user_data); + NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); + NMDevice *device = NM_DEVICE (self); + NMDeviceState devstate; + gboolean scanning; if (new_state == old_state) - return TRUE; + return; - priv = NM_DEVICE_WIFI_GET_PRIVATE (self); + nm_log_info (LOGD_DEVICE | LOGD_WIFI, + "(%s): supplicant interface state: %s -> %s", + nm_device_get_iface (device), + nm_supplicant_interface_state_to_string (old_state), + nm_supplicant_interface_state_to_string (new_state)); - task = g_slice_new0 (SupplicantStateTask); - if (!task) { - nm_log_err (LOGD_WIFI, "Not enough memory to process supplicant manager state change."); - return FALSE; - } + devstate = nm_device_get_state (device); + scanning = nm_supplicant_interface_get_scanning (iface); - task->self = self; - task->new_state = new_state; - task->old_state = old_state; - task->mgr_task = mgr_task; - - task->source_id = g_idle_add (handler, task); - if (mgr_task) - priv->supplicant.mgr_tasks = g_slist_append (priv->supplicant.mgr_tasks, task); - else - priv->supplicant.iface_tasks = g_slist_append (priv->supplicant.iface_tasks, task); - - return TRUE; -} - -static gboolean -supplicant_iface_state_cb_handler (gpointer user_data) -{ - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDeviceWifi *self; - NMDeviceWifiPrivate *priv; - - g_return_val_if_fail (task != NULL, FALSE); - - self = task->self; - priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - - nm_log_info (LOGD_WIFI, "(%s): supplicant interface state: %s -> %s", - nm_device_get_iface (NM_DEVICE (self)), - nm_supplicant_interface_state_to_string (task->old_state), - nm_supplicant_interface_state_to_string (task->new_state)); - - if (task->new_state == NM_SUPPLICANT_INTERFACE_STATE_READY) { + switch (new_state) { + case NM_SUPPLICANT_INTERFACE_STATE_READY: priv->scan_interval = SCAN_INTERVAL_MIN; /* If the interface can now be activated because the supplicant is now * available, transition to DISCONNECTED. */ - if ( (nm_device_get_state (NM_DEVICE (self)) == NM_DEVICE_STATE_UNAVAILABLE) - && nm_device_is_available (NM_DEVICE (self))) { - nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_DISCONNECTED, + if ((devstate == NM_DEVICE_STATE_UNAVAILABLE) && nm_device_is_available (device)) { + nm_device_state_changed (device, + NM_DEVICE_STATE_DISCONNECTED, NM_DEVICE_STATE_REASON_SUPPLICANT_AVAILABLE); } - nm_log_dbg (LOGD_WIFI_SCAN, "(%s): supplicant ready, requesting initial scan", - nm_device_get_iface (NM_DEVICE (self))); + nm_log_dbg (LOGD_WIFI_SCAN, + "(%s): supplicant ready, requesting initial scan", + nm_device_get_iface (device)); /* Request a scan to get latest results */ cancel_pending_scan (self); request_wireless_scan (self); - } else if (task->new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) { - cleanup_association_attempt (self, FALSE); - supplicant_interface_release (self); - nm_device_state_changed (NM_DEVICE (self), NM_DEVICE_STATE_UNAVAILABLE, - NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - } - - finish_supplicant_task (task, FALSE); - return FALSE; -} - - -static void -supplicant_iface_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - NMDeviceWifi *self) -{ - g_return_if_fail (self != NULL); - - schedule_state_handler (self, - supplicant_iface_state_cb_handler, - new_state, - old_state, - FALSE); -} - - -static gboolean -supplicant_iface_connection_state_cb_handler (gpointer user_data) -{ - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDeviceWifi *self = task->self; - NMDeviceWifiPrivate *priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - NMDevice *dev = NM_DEVICE (self); - gboolean scanning; - - if (!nm_device_get_act_request (dev)) { - /* The device is not activating or already activated; do nothing. */ - goto out; - } - - nm_log_info (LOGD_WIFI, "(%s): supplicant connection state: %s -> %s", - nm_device_get_iface (dev), - nm_supplicant_interface_connection_state_to_string (task->old_state), - nm_supplicant_interface_connection_state_to_string (task->new_state)); - - scanning = nm_supplicant_interface_get_scanning (priv->supplicant.iface); - - if (task->new_state == NM_SUPPLICANT_INTERFACE_CON_STATE_COMPLETED) { + break; + case NM_SUPPLICANT_INTERFACE_STATE_COMPLETED: remove_supplicant_interface_error_handler (self); remove_supplicant_timeouts (self); /* If this is the initial association during device activation, * schedule the next activation stage. */ - if (nm_device_get_state (dev) == NM_DEVICE_STATE_CONFIG) { + if (devstate == NM_DEVICE_STATE_CONFIG) { NMAccessPoint *ap = nm_device_wifi_get_activation_ap (self); - const GByteArray * ssid = nm_ap_get_ssid (ap); + const GByteArray *ssid = nm_ap_get_ssid (ap); nm_log_info (LOGD_DEVICE | LOGD_WIFI, "Activation (%s/wireless) Stage 2 of 5 (Device Configure) " "successful. Connected to wireless network '%s'.", - nm_device_get_iface (dev), + nm_device_get_iface (device), ssid ? nm_utils_escape_ssid (ssid->data, ssid->len) : "(none)"); - nm_device_activate_schedule_stage3_ip_config_start (dev); + nm_device_activate_schedule_stage3_ip_config_start (device); } - } else if (task->new_state == NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED) { - if (nm_device_get_state (dev) == NM_DEVICE_STATE_ACTIVATED || nm_device_is_activating (dev)) { + break; + case NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED: + if ((devstate == NM_DEVICE_STATE_ACTIVATED) || nm_device_is_activating (device)) { /* Start the link timeout so we allow some time for reauthentication, * use a longer timeout if we are scanning since some cards take a * while to scan. */ if (!priv->link_timeout_id) { priv->link_timeout_id = g_timeout_add_seconds (scanning ? 30 : 15, - link_timeout_cb, self); + link_timeout_cb, self); } } + break; + case NM_SUPPLICANT_INTERFACE_STATE_DOWN: + cleanup_association_attempt (self, FALSE); + supplicant_interface_release (self); + nm_device_state_changed (device, + NM_DEVICE_STATE_UNAVAILABLE, + NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); + break; + default: + break; } -out: /* Signal scanning state changes */ - if ( task->new_state == NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING - || task->old_state == NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING) + if ( new_state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING + || old_state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING) g_object_notify (G_OBJECT (self), "scanning"); - - finish_supplicant_task (task, FALSE); - return FALSE; -} - - -static void -supplicant_iface_connection_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - NMDeviceWifi *self) -{ - g_return_if_fail (self != NULL); - - schedule_state_handler (self, - supplicant_iface_connection_state_cb_handler, - new_state, - old_state, - FALSE); -} - - -static gboolean -supplicant_mgr_state_cb_handler (gpointer user_data) -{ - SupplicantStateTask *task = (SupplicantStateTask *) user_data; - NMDeviceWifi *self; - NMDeviceWifiPrivate *priv; - NMDevice *dev; - NMDeviceState dev_state; - - g_return_val_if_fail (task != NULL, FALSE); - - self = task->self; - priv = NM_DEVICE_WIFI_GET_PRIVATE (self); - dev = NM_DEVICE (self); - - nm_log_info (LOGD_WIFI, "(%s): supplicant manager state: %s -> %s", - nm_device_get_iface (NM_DEVICE (self)), - nm_supplicant_manager_state_to_string (task->old_state), - nm_supplicant_manager_state_to_string (task->new_state)); - - /* If the supplicant went away, release the supplicant interface */ - if (task->new_state == NM_SUPPLICANT_MANAGER_STATE_DOWN) { - if (priv->supplicant.iface) { - cleanup_association_attempt (self, FALSE); - supplicant_interface_release (self); - } - - if (nm_device_get_state (dev) > NM_DEVICE_STATE_UNAVAILABLE) { - nm_device_state_changed (dev, NM_DEVICE_STATE_UNAVAILABLE, - NM_DEVICE_STATE_REASON_SUPPLICANT_FAILED); - } - } else if (task->new_state == NM_SUPPLICANT_MANAGER_STATE_IDLE) { - dev_state = nm_device_get_state (dev); - if ( priv->enabled - && !priv->supplicant.iface - && (dev_state >= NM_DEVICE_STATE_UNAVAILABLE) - && (nm_device_get_firmware_missing (NM_DEVICE (self)) == FALSE)) { - /* request a supplicant interface from the supplicant manager */ - supplicant_interface_acquire (self); - - /* if wireless is enabled and we have a supplicant interface, - * we can transition to the DISCONNECTED state. - */ - if (priv->supplicant.iface) { - nm_device_state_changed (dev, NM_DEVICE_STATE_DISCONNECTED, - NM_DEVICE_STATE_REASON_NONE); - } - } - } - - finish_supplicant_task (task, FALSE); - return FALSE; -} - -static void -supplicant_mgr_state_cb (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state, - NMDeviceWifi *self) -{ - g_return_if_fail (self != NULL); - - schedule_state_handler (self, - supplicant_mgr_state_cb_handler, - new_state, - old_state, - TRUE); } struct iface_con_error_cb_data { @@ -3845,20 +3602,9 @@ dispose (GObject *object) priv->periodic_source_id = 0; } - /* Clean up all pending supplicant tasks */ - while (priv->supplicant.iface_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.iface_tasks->data, TRUE); - while (priv->supplicant.mgr_tasks) - finish_supplicant_task ((SupplicantStateTask *) priv->supplicant.mgr_tasks->data, TRUE); - cleanup_association_attempt (self, TRUE); supplicant_interface_release (self); - if (priv->supplicant.mgr_state_id) { - g_signal_handler_disconnect (priv->supplicant.mgr, priv->supplicant.mgr_state_id); - priv->supplicant.mgr_state_id = 0; - } - if (priv->supplicant.mgr) { g_object_unref (priv->supplicant.mgr); priv->supplicant.mgr = NULL; diff --git a/src/nm-device.c b/src/nm-device.c index 68d62bc19..27604e523 100644 --- a/src/nm-device.c +++ b/src/nm-device.c @@ -19,6 +19,7 @@ * Copyright (C) 2006 - 2008 Novell, Inc. */ +#include #include #include #include diff --git a/src/nm-manager.c b/src/nm-manager.c index b674c4f85..b98600d62 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -2472,6 +2472,7 @@ _internal_sleep (NMManager *self, gboolean do_sleep) g_object_notify (G_OBJECT (self), NM_MANAGER_SLEEPING); } +#if 0 static void sleep_auth_done_cb (NMAuthChain *chain, GError *error, @@ -2510,6 +2511,7 @@ sleep_auth_done_cb (NMAuthChain *chain, nm_auth_chain_unref (chain); } +#endif static void impl_manager_sleep (NMManager *self, @@ -2517,10 +2519,12 @@ impl_manager_sleep (NMManager *self, DBusGMethodInvocation *context) { NMManagerPrivate *priv; - NMAuthChain *chain; GError *error = NULL; +#if 0 + NMAuthChain *chain; gulong sender_uid = G_MAXULONG; const char *error_desc = NULL; +#endif g_return_if_fail (NM_IS_MANAGER (self)); @@ -2535,6 +2539,19 @@ impl_manager_sleep (NMManager *self, return; } + /* Unconditionally allow the request. Previously it was polkit protected + * but unfortunately that doesn't work for short-lived processes like + * pm-utils. It uses dbus-send without --print-reply, which quits + * immediately after sending the request, and NM is unable to obtain the + * sender's UID as dbus-send has already dropped off the bus. Thus NM + * fails the request. Instead, don't validate the request, but rely on + * D-Bus permissions to restrict the call to root. + */ + _internal_sleep (self, do_sleep); + dbus_g_method_return (context); + return; + +#if 0 if (!nm_auth_get_caller_uid (context, priv->dbus_mgr, &sender_uid, &error_desc)) { error = g_error_new_literal (NM_MANAGER_ERROR, NM_MANAGER_ERROR_PERMISSION_DENIED, @@ -2560,6 +2577,7 @@ impl_manager_sleep (NMManager *self, nm_auth_chain_set_data (chain, "sleep", GUINT_TO_POINTER (do_sleep), NULL); nm_auth_chain_add_call (chain, NM_AUTH_PERMISSION_SLEEP_WAKE, TRUE); +#endif } static void diff --git a/src/nm-policy-hostname.c b/src/nm-policy-hostname.c index 0a49f9e2e..42a2e0f9a 100644 --- a/src/nm-policy-hostname.c +++ b/src/nm-policy-hostname.c @@ -217,7 +217,7 @@ nm_policy_set_system_hostname (const char *new_hostname, char old_hostname[HOST_NAME_MAX + 1]; int ret = 0; const char *name; - gboolean set_hostname = TRUE, changed = FALSE; + gboolean set_hostname = TRUE, changed = FALSE, old_valid = TRUE; if (new_hostname) g_warn_if_fail (strlen (new_hostname)); @@ -230,11 +230,15 @@ nm_policy_set_system_hostname (const char *new_hostname, if (ret != 0) { nm_log_warn (LOGD_DNS, "couldn't get the system hostname: (%d) %s", errno, strerror (errno)); + old_valid = FALSE; } else { /* Don't set the hostname if it isn't actually changing */ if ( (new_hostname && !strcmp (old_hostname, new_hostname)) || (!new_hostname && !strcmp (old_hostname, FALLBACK_HOSTNAME4))) set_hostname = FALSE; + + if (old_hostname[0] == '\0') + old_valid = FALSE; } if (set_hostname) { @@ -255,6 +259,7 @@ nm_policy_set_system_hostname (const char *new_hostname, * /etc/hosts at all. */ if (!nm_policy_hosts_update_etc_hosts (name, + old_valid ? old_hostname : NULL, FALLBACK_HOSTNAME4, FALLBACK_HOSTNAME6, ip4_addr, diff --git a/src/nm-policy-hosts.c b/src/nm-policy-hosts.c index 0403b0372..7f9cff807 100644 --- a/src/nm-policy-hosts.c +++ b/src/nm-policy-hosts.c @@ -18,6 +18,7 @@ * Copyright (C) 2004 - 2010 Red Hat, Inc. */ +#include #include #include #include @@ -28,6 +29,9 @@ #include "nm-policy-hosts.h" #include "nm-logging.h" +#define IP4_LH "127.0.0.1" +#define IP6_LH "::1" + gboolean nm_policy_hosts_find_token (const char *line, const char *token) { @@ -56,13 +60,28 @@ nm_policy_hosts_find_token (const char *line, const char *token) static gboolean is_local_mapping (const char *str, gboolean ip6, const char *hostname) { - const char *addr = ip6 ? "::1" : "127.0.0.1"; + const char *addr = ip6 ? IP6_LH : IP4_LH; const char *fallback = ip6 ? "localhost6" : "localhost"; return ( !strncmp (str, addr, strlen (addr)) && nm_policy_hosts_find_token (str, hostname ? hostname : fallback)); } +static gboolean +is_ip4_addr (const char *str) +{ + struct in_addr found; + char buf[INET_ADDRSTRLEN + 2]; + const char *p = str; + guint32 i = 0; + + memset (buf, 0, sizeof (buf)); + while (*p && !isblank (*p) && (i < sizeof (buf))) + buf[i++] = *p++; + + return inet_pton (AF_INET, buf, &found) == 1 ? TRUE : FALSE; +} + static gboolean ip4_addr_matches (const char *str, const char *ip4_addr) { @@ -85,6 +104,21 @@ ip4_addr_matches (const char *str, const char *ip4_addr) return memcmp (&found, &given, sizeof (found)) == 0; } +static gboolean +is_ip6_addr (const char *str) +{ + struct in6_addr found; + char buf[INET6_ADDRSTRLEN + 2]; + const char *p = str; + guint32 i = 0; + + memset (buf, 0, sizeof (buf)); + while (*p && !isblank (*p) && (i < sizeof (buf))) + buf[i++] = *p++; + + return inet_pton (AF_INET6, buf, &found) == 1 ? TRUE : FALSE; +} + static gboolean ip6_addr_matches (const char *str, const char *ip6_addr) { @@ -107,12 +141,77 @@ ip6_addr_matches (const char *str, const char *ip6_addr) return memcmp (&found, &given, sizeof (found)) == 0; } +static char * +get_custom_hostnames (const char *line, + const char *hostname, + const char *old_hostname, + const char *short_hostname, + const char *fallback_hostname) +{ + char **items = NULL, **iter; + guint start = 0; + GString *str = NULL; + char *custom = NULL; + + g_return_val_if_fail (line != NULL, NULL); + + if (!strncmp (line, IP4_LH, strlen (IP4_LH))) + start = strlen (IP4_LH); + else if (!strncmp (line, IP6_LH, strlen (IP6_LH))) + start = strlen (IP6_LH); + + g_return_val_if_fail (start > 0, NULL); + + /* Split the line into tokens */ + items = g_strsplit_set (line + start, " \t", -1); + if (!items) + return NULL; + + str = g_string_sized_new (50); + /* Ignore current & old hostnames, and localhost-anything */ + for (iter = items; iter && *iter; iter++) { + if (*iter[0] == '\0') + continue; + if (hostname && !strcmp (*iter, hostname)) + continue; + if (old_hostname && !strcmp (*iter, old_hostname)) + continue; + if (short_hostname && !strcmp (*iter, short_hostname)) + continue; + if (fallback_hostname && !strcmp (*iter, fallback_hostname)) + continue; + if (!strcmp (*iter, "localhost")) + continue; + if (!strcmp (*iter, "localhost6")) + continue; + if (!strcmp (*iter, "localhost.localdomain")) + continue; + if (!strcmp (*iter, "localhost4.localdomain4")) + continue; + if (!strcmp (*iter, "localhost6.localdomain6")) + continue; + + /* Found a custom hostname */ + g_string_append_c (str, '\t'); + g_string_append (str, *iter); + } + + if (str->len) + custom = g_string_free (str, FALSE); + else + g_string_free (str, TRUE); + + g_strfreev (items); + return custom; +} + #define ADDED_TAG "# Added by NetworkManager" GString * nm_policy_get_etc_hosts (const char **lines, gsize existing_len, const char *hostname, + const char *old_hostname, const char *fallback_hostname4, const char *fallback_hostname6, const char *ip4_addr, @@ -133,7 +232,10 @@ nm_policy_get_etc_hosts (const char **lines, gboolean hostname6_is_fallback; gboolean host4_before = FALSE; gboolean host6_before = FALSE; + gboolean no_stale = TRUE; char *short_hostname = NULL; + char *custom4 = NULL; + char *custom6 = NULL; g_return_val_if_fail (lines != NULL, FALSE); g_return_val_if_fail (hostname != NULL, FALSE); @@ -141,72 +243,6 @@ nm_policy_get_etc_hosts (const char **lines, hostname4_is_fallback = !strcmp (hostname, fallback_hostname4); hostname6_is_fallback = !strcmp (hostname, fallback_hostname6); - /* We need the following in /etc/hosts: - * - * 1) current hostname mapped to current IPv4 addresses if IPv4 is active - * 2) current hostname mapped to current IPv6 addresses if IPv6 is active - * 3) 'localhost' mapped to 127.0.0.1 - * 4) 'localhost6' mapped to ::1 - * - * If all these things exist we don't need to bother updating the file. - */ - - if (!ip4_addr) { - found_host4 = TRUE; - host4_before = TRUE; - } - if (!ip6_addr) { - found_host6 = TRUE; - host6_before = TRUE; - } - - /* Look for the four cases from above */ - for (line = lines; lines && *line; line++) { - if (!strlen (*line) || (*line[0] == '#')) - continue; - - if (nm_policy_hosts_find_token (*line, hostname)) { - /* Found the current hostname on this line */ - if (ip4_addr && ip4_addr_matches (*line, ip4_addr)) { - found_host4 = TRUE; - if (strstr (*line, ADDED_TAG)) { - if (!host4_before) - host4_before = !found_localhost4; - } else { - found_user_host4 = TRUE; - host4_before = TRUE; /* Ignore if user added mapping manually */ - } - } - if (ip6_addr && ip6_addr_matches (*line, ip6_addr)) { - found_host6 = TRUE; - if (strstr (*line, ADDED_TAG)) { - if (!host6_before) - host6_before = !found_localhost6; - } else { - found_user_host6 = TRUE; - host6_before = TRUE; /* Ignore if user added mapping manually */ - } - } - } - - if (is_local_mapping (*line, FALSE, "localhost")) { - /* a 127.0.0.1 line containing 'localhost' */ - found_localhost4 = TRUE; - } else if (is_local_mapping (*line, TRUE, "localhost6")) { - /* a ::1 line containing 'localhost6' */ - found_localhost6 = TRUE; - } - - if (found_localhost4 && found_host4 && found_localhost6 && found_host6 && host4_before && host6_before) - return NULL; /* No update required */ - } - - contents = g_string_sized_new (existing_len ? existing_len + 100 : 200); - if (!contents) { - g_set_error_literal (error, 0, 0, "not enough memory"); - return NULL; - } - /* Find the short hostname, like 'foo' from 'foo.bar.baz'; we want to * make sure that the entries we add for this host also include the short * hostname too so that if the resolver does not answer queries for the @@ -225,6 +261,112 @@ nm_policy_get_etc_hosts (const char **lines, } } + /* We need the following in /etc/hosts: + * + * 1) current hostname mapped to current IPv4 addresses if IPv4 is active + * 2) current hostname mapped to current IPv6 addresses if IPv6 is active + * 3) 'localhost' mapped to 127.0.0.1 + * 4) 'localhost6' mapped to ::1 + * + * If all these things exist we don't need to bother updating the file. + */ + + if (!ip4_addr) + host4_before = TRUE; + if (!ip6_addr) + host6_before = TRUE; + + /* Look for the four cases from above */ + for (line = lines; lines && *line; line++) { + gboolean found_hostname = FALSE; + + if ((*line[0] == '\0') || (*line[0] == '#')) + continue; + + found_hostname = nm_policy_hosts_find_token (*line, hostname); + if (found_hostname) { + /* Found the current hostname on this line */ + if (ip4_addr && ip4_addr_matches (*line, ip4_addr)) { + found_host4 = TRUE; + if (strstr (*line, ADDED_TAG)) { + if (!host4_before) + host4_before = !found_localhost4; + } else { + found_user_host4 = TRUE; + host4_before = TRUE; /* Ignore if user added mapping manually */ + } + } else if (!ip4_addr && strstr (*line, ADDED_TAG)) { + /* If this is a stale NM-added IPv4 entry we need to remove it, + * so make sure we update /etc/hosts. + */ + if (is_ip4_addr (*line)) + no_stale = FALSE; + } + + if (ip6_addr && ip6_addr_matches (*line, ip6_addr)) { + found_host6 = TRUE; + if (strstr (*line, ADDED_TAG)) { + if (!host6_before) + host6_before = !found_localhost6; + } else { + found_user_host6 = TRUE; + host6_before = TRUE; /* Ignore if user added mapping manually */ + } + } else if (!ip6_addr && strstr (*line, ADDED_TAG)) { + /* If this is a stale NM-added IPv6 entry we need to remove it, + * so make sure we update /etc/hosts. + */ + if (is_ip6_addr (*line)) + no_stale = FALSE; + } + } + + if (is_local_mapping (*line, FALSE, "localhost")) { + /* a 127.0.0.1 line containing 'localhost' */ + found_localhost4 = TRUE; + custom4 = get_custom_hostnames (*line, hostname, old_hostname, short_hostname, fallback_hostname4); + if (!ip4_addr) { + /* If there's no IP-specific mapping for the current hostname + * but that hostname is present on in the local mapping line, + * we've found our IPv4 hostname mapping. If the hostname is + * the fallback *IPv6* hostname it's not going to show up in + * the IPv4 local mapping though, so fake it. + */ + if (hostname6_is_fallback || found_hostname) + found_host4 = TRUE; + } + } else if (is_local_mapping (*line, TRUE, "localhost6")) { + /* a ::1 line containing 'localhost6' */ + found_localhost6 = TRUE; + custom6 = get_custom_hostnames (*line, hostname, old_hostname, short_hostname, fallback_hostname6); + if (!ip6_addr) { + /* If there's no IP-specific mapping for the current hostname + * but that hostname is present on in the local mapping line, + * we've found our IPv6 hostname mapping. If the hostname is + * the fallback *IPv4* hostname it's not going to show up in + * the IPv6 local mapping though, so fake it. + */ + if (hostname4_is_fallback || found_hostname) + found_host6 = TRUE; + } + } + + if ( found_localhost4 + && found_host4 + && found_localhost6 + && found_host6 + && host4_before + && host6_before + && no_stale) + goto out; /* No update required */ + } + + contents = g_string_sized_new (existing_len ? existing_len + 100 : 200); + if (!contents) { + g_set_error_literal (error, 0, 0, "not enough memory"); + goto out; + } + /* Construct the new hosts file; replace any 127.0.0.1/::1 entry that is * at the beginning of the file or right after initial comments and contains * the string 'localhost' (for IPv4) or 'localhost6' (for IPv6). If there @@ -234,8 +376,6 @@ nm_policy_get_etc_hosts (const char **lines, * 'localhost6'. */ for (line = lines, initial_comments = TRUE; lines && *line; line++) { - gboolean add_line = TRUE; - /* This is the first line after the initial comments */ if (strlen (*line) && initial_comments && (*line[0] != '#')) { initial_comments = FALSE; @@ -268,7 +408,10 @@ nm_policy_get_etc_hosts (const char **lines, if (short_hostname) g_string_append_printf (contents, "\t%s", short_hostname); } - g_string_append_printf (contents, "\t%s\tlocalhost\n", fallback_hostname4); + g_string_append_printf (contents, "\t%s\tlocalhost", fallback_hostname4); + if (custom4) + g_string_append (contents, custom4); + g_string_append_c (contents, '\n'); /* IPv6 localhost line */ g_string_append (contents, "::1"); @@ -277,26 +420,23 @@ nm_policy_get_etc_hosts (const char **lines, if (short_hostname) g_string_append_printf (contents, "\t%s", short_hostname); } - g_string_append_printf (contents, "\t%s\tlocalhost6\n", fallback_hostname6); + g_string_append_printf (contents, "\t%s\tlocalhost6", fallback_hostname6); + if (custom6) + g_string_append (contents, custom6); + g_string_append_c (contents, '\n'); added = TRUE; } /* Don't add the original line if it is a localhost mapping */ - if (is_local_mapping (*line, FALSE, "localhost")) - add_line = FALSE; - else if (is_local_mapping (*line, FALSE, fallback_hostname4)) - add_line = FALSE; - else if (is_local_mapping (*line, FALSE, hostname)) - add_line = FALSE; - else if (is_local_mapping (*line, TRUE, "localhost6")) - add_line = FALSE; - else if (is_local_mapping (*line, TRUE, fallback_hostname6)) - add_line = FALSE; - else if (is_local_mapping (*line, TRUE, hostname)) - add_line = FALSE; + if ( !is_local_mapping (*line, FALSE, "localhost") + && !is_local_mapping (*line, FALSE, fallback_hostname4) + && !is_local_mapping (*line, FALSE, hostname) + && !is_local_mapping (*line, TRUE, "localhost6") + && !is_local_mapping (*line, TRUE, fallback_hostname6) + && !is_local_mapping (*line, TRUE, hostname) + && !strstr (*line, ADDED_TAG)) { - if (add_line && !strstr (*line, ADDED_TAG)) { g_string_append (contents, *line); /* Only append the new line if this isn't the last line in the file */ if (*(line+1)) @@ -327,12 +467,16 @@ nm_policy_get_etc_hosts (const char **lines, g_string_append_printf (contents, "::1\t%s\tlocalhost6\n", fallback_hostname6); } +out: + g_free (custom4); + g_free (custom6); g_free (short_hostname); return contents; } gboolean nm_policy_hosts_update_etc_hosts (const char *hostname, + const char *old_hostname, const char *fallback_hostname4, const char *fallback_hostname6, const char *ip4_addr, @@ -362,6 +506,7 @@ nm_policy_hosts_update_etc_hosts (const char *hostname, new_contents = nm_policy_get_etc_hosts ((const char **) lines, contents_len, hostname, + old_hostname, fallback_hostname4, fallback_hostname6, ip4_addr, diff --git a/src/nm-policy-hosts.h b/src/nm-policy-hosts.h index 76288bf56..ebaaf0fd4 100644 --- a/src/nm-policy-hosts.h +++ b/src/nm-policy-hosts.h @@ -24,6 +24,7 @@ #include gboolean nm_policy_hosts_update_etc_hosts (const char *hostname, + const char *old_hostname, const char *fallback_hostname4, const char *fallback_hostname6, const char *ip4_addr, @@ -36,6 +37,7 @@ gboolean nm_policy_hosts_find_token (const char *line, const char *token); GString *nm_policy_get_etc_hosts (const char **lines, gsize existing_len, const char *hostname, + const char *old_hostname, const char *fallback_hostname4, const char *fallback_hostname6, const char *ip4_addr, diff --git a/src/nm-policy.c b/src/nm-policy.c index 013c691a2..df7689b72 100644 --- a/src/nm-policy.c +++ b/src/nm-policy.c @@ -19,6 +19,7 @@ * Copyright (C) 2007 - 2008 Novell, Inc. */ +#include #include #include #include @@ -1226,6 +1227,15 @@ nm_policy_destroy (NMPolicy *policy) } g_slist_free (policy->dev_signal_ids); + /* Rewrite /etc/hosts on exit to ensure we don't leave stale IP addresses + * lying around. FIXME: this will take out a valid IP address of an + * ethernet device we're leaving active (ie, a connection we can "assume" + * when NM starts again). + */ + policy->default_device4 = NULL; + policy->default_device6 = NULL; + update_system_hostname (policy, NULL, NULL); + g_free (policy->orig_hostname); g_free (policy->cur_hostname); diff --git a/src/nm-system.c b/src/nm-system.c index 0911b8218..7921fec65 100644 --- a/src/nm-system.c +++ b/src/nm-system.c @@ -1254,11 +1254,11 @@ dump_route (struct rtnl_route *route) memset (buf4, 0, sizeof (buf4)); nl = rtnl_route_get_dst (route); if (nl) { - if (rtnl_route_get_family (route) == AF_INET) { + 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 (rtnl_route_get_family (route) == AF_INET6) { + } 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)); diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index 148ad2cf6..efa660b03 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -19,6 +19,7 @@ * Copyright (C) 2008 - 2010 Red Hat, Inc. */ +#include #include #include #include diff --git a/src/supplicant-manager/nm-supplicant-interface.c b/src/supplicant-manager/nm-supplicant-interface.c index a65a458f5..bad8f2663 100644 --- a/src/supplicant-manager/nm-supplicant-interface.c +++ b/src/supplicant-manager/nm-supplicant-interface.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) 2006 - 2008 Red Hat, Inc. + * Copyright (C) 2006 - 2010 Red Hat, Inc. * Copyright (C) 2006 - 2008 Novell, Inc. */ @@ -40,37 +40,22 @@ #define WPAS_ERROR_EXISTS_ERROR WPAS_DBUS_INTERFACE ".ExistsError" -G_DEFINE_TYPE (NMSupplicantInterface, nm_supplicant_interface, G_TYPE_OBJECT) +static void wpas_iface_handle_state_change (DBusGProxy *proxy, + const char *str_new_state, + const char *str_old_state, + gpointer user_data); +static void wpas_iface_handle_scanning (DBusGProxy *proxy, + gboolean scanning, + gpointer user_data); + + +G_DEFINE_TYPE (NMSupplicantInterface, nm_supplicant_interface, G_TYPE_OBJECT) #define NM_SUPPLICANT_INTERFACE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ NM_TYPE_SUPPLICANT_INTERFACE, \ NMSupplicantInterfacePrivate)) -static void nm_supplicant_interface_set_property (GObject * object, - guint prop_id, - const GValue * value, - GParamSpec * pspec); - -static void nm_supplicant_interface_get_property (GObject * object, - guint prop_id, - GValue * value, - GParamSpec * pspec); - -static void nm_supplicant_interface_start (NMSupplicantInterface *self); - -static void nm_supplicant_interface_add_to_supplicant (NMSupplicantInterface *self, - gboolean get_only); - -static void nm_supplicant_interface_smgr_state_changed (NMSupplicantManager *smgr, - guint32 new_state, - guint32 old_state, - gpointer user_data); - -static void nm_supplicant_interface_set_state (NMSupplicantInterface *self, - guint32 new_state); - - /* Signals */ enum { STATE, /* change in the interface's state */ @@ -78,29 +63,24 @@ enum { SCANNED_AP, /* interface saw a new access point from a scan */ SCAN_REQ_RESULT, /* result of a wireless scan request */ SCAN_RESULTS, /* scan results returned from supplicant */ - CONNECTION_STATE, /* link state of the device's connection */ CONNECTION_ERROR, /* an error occurred during a connection request */ LAST_SIGNAL }; -static guint nm_supplicant_interface_signals[LAST_SIGNAL] = { 0 }; +static guint signals[LAST_SIGNAL] = { 0 }; /* Properties */ enum { PROP_0 = 0, - PROP_SUPPLICANT_MANAGER, - PROP_DEVICE, PROP_STATE, - PROP_CONNECTION_STATE, PROP_SCANNING, LAST_PROP }; -typedef struct -{ +typedef struct { NMSupplicantManager * smgr; - gulong smgr_state_sig_handler; + gulong smgr_avail_id; NMDBusManager * dbus_mgr; char * dev; gboolean is_wireless; @@ -110,9 +90,9 @@ typedef struct NMCallStore * assoc_pcalls; NMCallStore * other_pcalls; - guint32 con_state; gboolean scanning; + DBusGProxy * wpas_proxy; DBusGProxy * iface_proxy; DBusGProxy * net_proxy; @@ -121,7 +101,7 @@ typedef struct NMSupplicantConfig * cfg; - gboolean dispose_has_run; + gboolean disposed; } NMSupplicantInterfacePrivate; static gboolean @@ -203,294 +183,6 @@ nm_supplicant_info_destroy (gpointer user_data) } } - -NMSupplicantInterface * -nm_supplicant_interface_new (NMSupplicantManager * smgr, const char *ifname, gboolean is_wireless) -{ - NMSupplicantInterface * iface; - - g_return_val_if_fail (NM_IS_SUPPLICANT_MANAGER (smgr), NULL); - g_return_val_if_fail (ifname != NULL, NULL); - - iface = g_object_new (NM_TYPE_SUPPLICANT_INTERFACE, - "supplicant-manager", smgr, - "device", ifname, - NULL); - if (iface) { - NM_SUPPLICANT_INTERFACE_GET_PRIVATE (iface)->is_wireless = is_wireless; - nm_supplicant_interface_start (iface); - } - - return iface; -} - -static void -nm_supplicant_interface_init (NMSupplicantInterface * self) -{ - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); - - priv->state = NM_SUPPLICANT_INTERFACE_STATE_INIT; - priv->con_state = NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED; - priv->assoc_pcalls = nm_call_store_new (); - priv->other_pcalls = nm_call_store_new (); - - priv->dispose_has_run = FALSE; - - priv->dbus_mgr = nm_dbus_manager_get (); -} - - -static void -nm_supplicant_interface_set_property (GObject * object, - guint prop_id, - const GValue * value, - GParamSpec * pspec) -{ - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object); - gulong id; - - switch (prop_id) { - case PROP_SUPPLICANT_MANAGER: - priv->smgr = NM_SUPPLICANT_MANAGER (g_value_get_object (value)); - g_object_ref (G_OBJECT (priv->smgr)); - - id = g_signal_connect (priv->smgr, - "state", - G_CALLBACK (nm_supplicant_interface_smgr_state_changed), - object); - priv->smgr_state_sig_handler = id; - break; - case PROP_DEVICE: - /* Construct-only */ - priv->dev = g_strdup (g_value_get_string (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -nm_supplicant_interface_get_property (GObject * object, - guint prop_id, - GValue * value, - GParamSpec * pspec) -{ - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object); - - switch (prop_id) { - case PROP_SUPPLICANT_MANAGER: - g_value_set_object (value, G_OBJECT (priv->smgr)); - break; - case PROP_DEVICE: - g_value_set_string (value, priv->dev); - break; - case PROP_STATE: - g_value_set_uint (value, priv->state); - break; - case PROP_CONNECTION_STATE: - g_value_set_uint (value, priv->con_state); - break; - case PROP_SCANNING: - g_value_set_boolean (value, priv->scanning); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -try_remove_iface (DBusGConnection *g_connection, - const char *path) -{ - DBusGProxy *proxy; - - g_return_if_fail (g_connection != NULL); - g_return_if_fail (path != NULL); - - proxy = dbus_g_proxy_new_for_name (g_connection, - WPAS_DBUS_SERVICE, - WPAS_DBUS_PATH, - WPAS_DBUS_INTERFACE); - if (!proxy) - return; - - dbus_g_proxy_call_no_reply (proxy, "removeInterface", - DBUS_TYPE_G_OBJECT_PATH, path, - G_TYPE_INVALID); - g_object_unref (proxy); -} - -static void -nm_supplicant_interface_dispose (GObject *object) -{ - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object); - guint32 sm_state; - - if (priv->dispose_has_run) { - G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object); - return; - } - - priv->dispose_has_run = TRUE; - - /* Ask wpa_supplicant to remove this interface */ - sm_state = nm_supplicant_manager_get_state (priv->smgr); - if (sm_state == NM_SUPPLICANT_MANAGER_STATE_IDLE) { - if (priv->object_path) { - try_remove_iface (nm_dbus_manager_get_connection (priv->dbus_mgr), - priv->object_path); - } - } - - if (priv->iface_proxy) - g_object_unref (priv->iface_proxy); - - if (priv->net_proxy) - g_object_unref (priv->net_proxy); - - if (priv->scan_results_timeout) - g_source_remove (priv->scan_results_timeout); - - if (priv->smgr) { - g_signal_handler_disconnect (priv->smgr, - priv->smgr_state_sig_handler); - g_object_unref (priv->smgr); - } - - g_free (priv->dev); - - /* Cancel pending calls before unrefing the dbus manager */ - cancel_all_callbacks (priv->other_pcalls); - nm_call_store_destroy (priv->other_pcalls); - - cancel_all_callbacks (priv->assoc_pcalls); - nm_call_store_destroy (priv->assoc_pcalls); - - if (priv->dbus_mgr) - g_object_unref (priv->dbus_mgr); - - if (priv->cfg) - g_object_unref (priv->cfg); - - g_free (priv->object_path); - - /* Chain up to the parent class */ - G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object); -} - -static void -nm_supplicant_interface_class_init (NMSupplicantInterfaceClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - g_type_class_add_private (object_class, sizeof (NMSupplicantInterfacePrivate)); - - object_class->dispose = nm_supplicant_interface_dispose; - object_class->set_property = nm_supplicant_interface_set_property; - object_class->get_property = nm_supplicant_interface_get_property; - - /* Properties */ - g_object_class_install_property (object_class, - PROP_SUPPLICANT_MANAGER, - g_param_spec_object ("supplicant-manager", - "Supplicant Manager", - "Supplicant manager to which this interface belongs", - NM_TYPE_SUPPLICANT_MANAGER, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - - g_object_class_install_property (object_class, - PROP_DEVICE, - g_param_spec_string ("device", - "Device", - "Device which this interface represents to the supplicant", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - - g_object_class_install_property (object_class, - PROP_STATE, - g_param_spec_uint ("state", - "State", - "State of the supplicant interface; INIT, READY, or DOWN", - NM_SUPPLICANT_INTERFACE_STATE_INIT, - NM_SUPPLICANT_INTERFACE_STATE_LAST - 1, - NM_SUPPLICANT_INTERFACE_STATE_INIT, - G_PARAM_READABLE)); - - g_object_class_install_property (object_class, - PROP_SCANNING, - g_param_spec_boolean ("scanning", - "Scanning", - "Scanning", - FALSE, - G_PARAM_READABLE)); - - /* Signals */ - nm_supplicant_interface_signals[STATE] = - g_signal_new ("state", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, state), - NULL, NULL, - _nm_marshal_VOID__UINT_UINT, - G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); - - nm_supplicant_interface_signals[REMOVED] = - g_signal_new ("removed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, removed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - nm_supplicant_interface_signals[SCANNED_AP] = - g_signal_new ("scanned-ap", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scanned_ap), - NULL, NULL, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, G_TYPE_POINTER); - - nm_supplicant_interface_signals[SCAN_REQ_RESULT] = - g_signal_new ("scan-req-result", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scan_req_result), - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, 1, G_TYPE_BOOLEAN); - - nm_supplicant_interface_signals[SCAN_RESULTS] = - g_signal_new ("scan-results", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scan_results), - NULL, NULL, - g_cclosure_marshal_VOID__UINT, - G_TYPE_NONE, 1, G_TYPE_UINT); - - nm_supplicant_interface_signals[CONNECTION_STATE] = - g_signal_new ("connection-state", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, connection_state), - NULL, NULL, - _nm_marshal_VOID__UINT_UINT, - G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); - - nm_supplicant_interface_signals[CONNECTION_ERROR] = - g_signal_new ("connection-error", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantInterfaceClass, connection_error), - NULL, NULL, - _nm_marshal_VOID__STRING_STRING, - G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); -} - static void emit_error_helper (NMSupplicantInterface *self, GError *err) @@ -500,11 +192,7 @@ emit_error_helper (NMSupplicantInterface *self, if (err->domain == DBUS_GERROR && err->code == DBUS_GERROR_REMOTE_EXCEPTION) name = dbus_g_error_get_name (err); - g_signal_emit (self, - nm_supplicant_interface_signals[CONNECTION_ERROR], - 0, - name, - err->message); + g_signal_emit (self, signals[CONNECTION_ERROR], 0, name, err->message); } static void @@ -523,11 +211,7 @@ bssid_properties_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_ } g_error_free (err); } else { - g_signal_emit (info->interface, - nm_supplicant_interface_signals[SCANNED_AP], - 0, - hash); - + g_signal_emit (info->interface, signals[SCANNED_AP], 0, hash); g_hash_table_destroy (hash); } } @@ -571,10 +255,7 @@ scan_results_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) NMSupplicantInfo *info = (NMSupplicantInfo *) user_data; /* Notify listeners of the result of the scan */ - g_signal_emit (info->interface, - nm_supplicant_interface_signals[SCAN_RESULTS], - 0, - array->len); + g_signal_emit (info->interface, signals[SCAN_RESULTS], 0, array->len); /* Fire off a "properties" call for each returned BSSID */ for (i = 0; i < array->len; i++) { @@ -637,58 +318,102 @@ wpas_iface_query_scan_results (DBusGProxy *proxy, gpointer user_data) } } -static guint32 -wpas_state_string_to_enum (const char * str_state) +static int +wpas_state_string_to_enum (const char *str_state) { - guint32 enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED; - if (!strcmp (str_state, "DISCONNECTED")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED; + return NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED; else if (!strcmp (str_state, "INACTIVE")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_INACTIVE; + return NM_SUPPLICANT_INTERFACE_STATE_INACTIVE; else if (!strcmp (str_state, "SCANNING")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING; + return NM_SUPPLICANT_INTERFACE_STATE_SCANNING; else if (!strcmp (str_state, "ASSOCIATING")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATING; + return NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATING; else if (!strcmp (str_state, "ASSOCIATED")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATED; + return NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED; else if (!strcmp (str_state, "4WAY_HANDSHAKE")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_4WAY_HANDSHAKE; + return NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE; else if (!strcmp (str_state, "GROUP_HANDSHAKE")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_GROUP_HANDSHAKE; + return NM_SUPPLICANT_INTERFACE_STATE_GROUP_HANDSHAKE; else if (!strcmp (str_state, "COMPLETED")) - enum_state = NM_SUPPLICANT_INTERFACE_CON_STATE_COMPLETED; + return NM_SUPPLICANT_INTERFACE_STATE_COMPLETED; - return enum_state; + return -1; } +static void +set_state (NMSupplicantInterface *self, guint32 new_state) +{ + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); + guint32 old_state = priv->state; + + g_return_if_fail (new_state < NM_SUPPLICANT_INTERFACE_STATE_LAST); + + if (new_state == priv->state) + return; + + /* DOWN is a terminal state */ + g_return_if_fail (priv->state != NM_SUPPLICANT_INTERFACE_STATE_DOWN); + + /* Cannot regress to READY or INIT from higher states */ + if (priv->state <= NM_SUPPLICANT_INTERFACE_STATE_READY) + g_return_if_fail (new_state > priv->state); + + if (new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) { + /* Cancel all pending calls when going down */ + cancel_all_callbacks (priv->other_pcalls); + cancel_all_callbacks (priv->assoc_pcalls); + + /* Disconnect supplicant manager state listeners since we're done */ + if (priv->smgr_avail_id) { + g_signal_handler_disconnect (priv->smgr, priv->smgr_avail_id); + priv->smgr_avail_id = 0; + } + + if (priv->iface_proxy) { + dbus_g_proxy_disconnect_signal (priv->iface_proxy, + "StateChange", + G_CALLBACK (wpas_iface_handle_state_change), + self); + + dbus_g_proxy_disconnect_signal (priv->iface_proxy, + "ScanResultsAvailable", + G_CALLBACK (wpas_iface_query_scan_results), + self); + + dbus_g_proxy_disconnect_signal (priv->iface_proxy, + "Scanning", + G_CALLBACK (wpas_iface_handle_scanning), + self); + } + } + + priv->state = new_state; + g_signal_emit (self, signals[STATE], 0, priv->state, old_state); +} + +/* Supplicant state signal handler */ static void wpas_iface_handle_state_change (DBusGProxy *proxy, const char *str_new_state, const char *str_old_state, gpointer user_data) { - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (user_data); - guint32 old_state, enum_new_state; + int enum_state = wpas_state_string_to_enum (str_new_state); - enum_new_state = wpas_state_string_to_enum (str_new_state); - old_state = priv->con_state; - priv->con_state = enum_new_state; - if (priv->con_state != old_state) { - g_signal_emit (user_data, - nm_supplicant_interface_signals[CONNECTION_STATE], - 0, - priv->con_state, - old_state); - } + g_return_if_fail (enum_state > 0); + + set_state (NM_SUPPLICANT_INTERFACE (user_data), (guint32) enum_state); } - +/* Explicit state request reply handler */ static void iface_state_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) { + NMSupplicantInfo *info = (NMSupplicantInfo *) user_data; GError *err = NULL; char *state_str = NULL; + int enum_state; if (!dbus_g_proxy_end_call (proxy, call_id, &err, G_TYPE_STRING, &state_str, @@ -696,12 +421,12 @@ iface_state_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) nm_log_warn (LOGD_SUPPLICANT, "could not get interface state: %s.", err->message); g_error_free (err); } else { - NMSupplicantInfo *info = (NMSupplicantInfo *) user_data; - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (info->interface); + enum_state = wpas_state_string_to_enum (state_str); + g_warn_if_fail (enum_state > 0); - priv->con_state = wpas_state_string_to_enum (state_str); + if (enum_state > 0) + set_state (info->interface, (guint32) enum_state); g_free (state_str); - nm_supplicant_interface_set_state (info->interface, NM_SUPPLICANT_INTERFACE_STATE_READY); } } @@ -778,229 +503,184 @@ nm_supplicant_interface_get_scanning (NMSupplicantInterface *self) priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); if (priv->scanning) return TRUE; - if (priv->con_state == NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING) + if (priv->state == NM_SUPPLICANT_INTERFACE_STATE_SCANNING) return TRUE; return FALSE; } static void -nm_supplicant_interface_add_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) +interface_add_done (NMSupplicantInterface *self, char *path) +{ + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); + + nm_log_dbg (LOGD_SUPPLICANT, "(%s): interface added to supplicant", priv->dev); + + priv->object_path = path; + + priv->iface_proxy = dbus_g_proxy_new_for_name (nm_dbus_manager_get_connection (priv->dbus_mgr), + WPAS_DBUS_SERVICE, + path, + WPAS_DBUS_IFACE_INTERFACE); + + dbus_g_object_register_marshaller (_nm_marshal_VOID__STRING_STRING, + G_TYPE_NONE, + G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_INVALID); + dbus_g_proxy_add_signal (priv->iface_proxy, "StateChange", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); + dbus_g_proxy_connect_signal (priv->iface_proxy, "StateChange", + G_CALLBACK (wpas_iface_handle_state_change), + self, + NULL); + + dbus_g_proxy_add_signal (priv->iface_proxy, "ScanResultsAvailable", G_TYPE_INVALID); + dbus_g_proxy_connect_signal (priv->iface_proxy, "ScanResultsAvailable", + G_CALLBACK (wpas_iface_query_scan_results), + self, + NULL); + + dbus_g_proxy_add_signal (priv->iface_proxy, "Scanning", G_TYPE_BOOLEAN, G_TYPE_INVALID); + dbus_g_proxy_connect_signal (priv->iface_proxy, "Scanning", + G_CALLBACK (wpas_iface_handle_scanning), + self, + NULL); + + /* Interface added to the supplicant; get its initial state. */ + wpas_iface_get_state (self); + wpas_iface_get_scanning (self); + + set_state (self, NM_SUPPLICANT_INTERFACE_STATE_READY); +} + +static void +interface_get_cb (DBusGProxy *proxy, + DBusGProxyCall *call_id, + gpointer user_data) { NMSupplicantInfo *info = (NMSupplicantInfo *) user_data; NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (info->interface); - GError *err = NULL; + GError *error = NULL; char *path = NULL; - if (!dbus_g_proxy_end_call (proxy, call_id, &err, - DBUS_TYPE_G_OBJECT_PATH, &path, - G_TYPE_INVALID)) { - - if (dbus_g_error_has_name (err, WPAS_ERROR_INVALID_IFACE)) { - /* Interface not added, try to add it */ - nm_supplicant_interface_add_to_supplicant (info->interface, FALSE); - } else if (dbus_g_error_has_name (err, WPAS_ERROR_EXISTS_ERROR)) { - /* Interface already added, just try to get the interface */ - nm_supplicant_interface_add_to_supplicant (info->interface, TRUE); - } else { - nm_log_err (LOGD_SUPPLICANT, "(%s): error getting interface: %s", - priv->dev, err->message); - } - - g_error_free (err); + if (dbus_g_proxy_end_call (proxy, call_id, &error, + DBUS_TYPE_G_OBJECT_PATH, &path, + G_TYPE_INVALID)) { + interface_add_done (info->interface, path); } else { - nm_log_dbg (LOGD_SUPPLICANT, "(%s): interface added to supplicant", priv->dev); - - priv->object_path = path; - - priv->iface_proxy = dbus_g_proxy_new_for_name (nm_dbus_manager_get_connection (priv->dbus_mgr), - WPAS_DBUS_SERVICE, - path, - WPAS_DBUS_IFACE_INTERFACE); - - dbus_g_proxy_add_signal (priv->iface_proxy, "ScanResultsAvailable", G_TYPE_INVALID); - - dbus_g_object_register_marshaller (_nm_marshal_VOID__STRING_STRING, - G_TYPE_NONE, - G_TYPE_STRING, G_TYPE_STRING, - G_TYPE_INVALID); - - dbus_g_proxy_add_signal (priv->iface_proxy, "StateChange", G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal (priv->iface_proxy, "ScanResultsAvailable", - G_CALLBACK (wpas_iface_query_scan_results), - info->interface, - NULL); - - dbus_g_proxy_connect_signal (priv->iface_proxy, "StateChange", - G_CALLBACK (wpas_iface_handle_state_change), - info->interface, - NULL); - - dbus_g_proxy_add_signal (priv->iface_proxy, "Scanning", G_TYPE_BOOLEAN, G_TYPE_INVALID); - - dbus_g_proxy_connect_signal (priv->iface_proxy, "Scanning", - G_CALLBACK (wpas_iface_handle_scanning), - info->interface, - NULL); - - /* Interface added to the supplicant; get its initial state. */ - wpas_iface_get_state (info->interface); - wpas_iface_get_scanning (info->interface); + nm_log_err (LOGD_SUPPLICANT, "(%s): error adding interface: %s", + priv->dev, error->message); + g_clear_error (&error); } } static void -nm_supplicant_interface_add_to_supplicant (NMSupplicantInterface * self, - gboolean get_only) +interface_get (NMSupplicantInterface *self) { NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); NMSupplicantInfo *info; - DBusGProxy *proxy; DBusGProxyCall *call; - proxy = dbus_g_proxy_new_for_name (nm_dbus_manager_get_connection (priv->dbus_mgr), - WPAS_DBUS_SERVICE, - WPAS_DBUS_PATH, - WPAS_DBUS_INTERFACE); - info = nm_supplicant_info_new (self, proxy, priv->other_pcalls); - - if (get_only) { - call = dbus_g_proxy_begin_call (proxy, "getInterface", - nm_supplicant_interface_add_cb, - info, - nm_supplicant_info_destroy, - G_TYPE_STRING, priv->dev, - G_TYPE_INVALID); - } else { - GHashTable *hash = g_hash_table_new (g_str_hash, g_str_equal); - GValue *driver; - - driver = g_new0 (GValue, 1); - g_value_init (driver, G_TYPE_STRING); - g_value_set_string (driver, priv->is_wireless ? "wext" : "wired"); - g_hash_table_insert (hash, "driver", driver); - - call = dbus_g_proxy_begin_call (proxy, "addInterface", - nm_supplicant_interface_add_cb, - info, - nm_supplicant_info_destroy, - G_TYPE_STRING, priv->dev, - DBUS_TYPE_G_MAP_OF_VARIANT, hash, - G_TYPE_INVALID); - - g_value_unset (driver); - g_free (driver); - g_hash_table_destroy (hash); - } - - g_object_unref (proxy); - + info = nm_supplicant_info_new (self, priv->wpas_proxy, priv->other_pcalls); + call = dbus_g_proxy_begin_call (priv->wpas_proxy, "getInterface", + interface_get_cb, + info, + nm_supplicant_info_destroy, + G_TYPE_STRING, priv->dev, + G_TYPE_INVALID); nm_supplicant_info_set_call (info, call); } static void -nm_supplicant_interface_start (NMSupplicantInterface * self) +interface_add_cb (DBusGProxy *proxy, + DBusGProxyCall *call_id, + gpointer user_data) +{ + NMSupplicantInfo *info = (NMSupplicantInfo *) user_data; + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (info->interface); + GError *error = NULL; + char *path = NULL; + + if (dbus_g_proxy_end_call (proxy, call_id, &error, + DBUS_TYPE_G_OBJECT_PATH, &path, + G_TYPE_INVALID)) { + interface_add_done (info->interface, path); + } else { + if (dbus_g_error_has_name (error, WPAS_ERROR_EXISTS_ERROR)) { + /* Interface already added, just get its object path */ + interface_get (info->interface); + } else { + nm_log_err (LOGD_SUPPLICANT, "(%s): error adding interface: %s", + priv->dev, error->message); + } + g_clear_error (&error); + } +} + +static void +interface_add (NMSupplicantInterface *self, gboolean is_wireless) { NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); - guint32 state; + DBusGProxyCall *call; + NMSupplicantInfo *info; + GHashTable *hash; + GValue *driver; /* Can only start the interface from INIT state */ g_return_if_fail (priv->state == NM_SUPPLICANT_INTERFACE_STATE_INIT); nm_log_dbg (LOGD_SUPPLICANT, "(%s): adding interface to supplicant", priv->dev); - state = nm_supplicant_manager_get_state (priv->smgr); - if (state == NM_SUPPLICANT_MANAGER_STATE_IDLE) { - nm_supplicant_interface_set_state (self, NM_SUPPLICANT_INTERFACE_STATE_STARTING); - nm_supplicant_interface_add_to_supplicant (self, FALSE); - } else if (state == NM_SUPPLICANT_MANAGER_STATE_DOWN) { - /* Don't do anything; wait for signal from supplicant manager - * that its state has changed. + /* Move to starting to prevent double-calls of interface_add() */ + set_state (self, NM_SUPPLICANT_INTERFACE_STATE_STARTING); + + /* Try to add the interface to the supplicant. If the supplicant isn't + * running, this will start it via D-Bus activation and return the response + * when the supplicant has started. + */ + + info = nm_supplicant_info_new (self, priv->wpas_proxy, priv->other_pcalls); + + driver = g_new0 (GValue, 1); + g_value_init (driver, G_TYPE_STRING); + g_value_set_string (driver, is_wireless ? "wext" : "wired"); + + hash = g_hash_table_new (g_str_hash, g_str_equal); + g_hash_table_insert (hash, "driver", driver); + + call = dbus_g_proxy_begin_call (priv->wpas_proxy, "addInterface", + interface_add_cb, + info, + nm_supplicant_info_destroy, + G_TYPE_STRING, priv->dev, + DBUS_TYPE_G_MAP_OF_VARIANT, hash, + G_TYPE_INVALID); + + g_hash_table_destroy (hash); + g_value_unset (driver); + g_free (driver); + + nm_supplicant_info_set_call (info, call); +} + +static void +smgr_avail_cb (NMSupplicantManager *smgr, + GParamSpec *pspec, + gpointer user_data) +{ + NMSupplicantInterface *self = NM_SUPPLICANT_INTERFACE (user_data); + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (user_data); + + if (nm_supplicant_manager_available (smgr)) { + /* This can happen if the supplicant couldn't be activated but + * for some reason was started after the activation failure. */ - } else - nm_log_warn (LOGD_SUPPLICANT, "Unknown supplicant manager state!"); -} - -static void -nm_supplicant_interface_handle_supplicant_manager_idle_state (NMSupplicantInterface * self) -{ - switch (NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->state) { - case NM_SUPPLICANT_INTERFACE_STATE_INIT: - /* Move to STARTING state when supplicant is ready */ - nm_supplicant_interface_start (self); - break; - case NM_SUPPLICANT_INTERFACE_STATE_STARTING: - /* Don't do anything here, though we should never hit this */ - break; - case NM_SUPPLICANT_INTERFACE_STATE_READY: - /* Don't do anything here, though we should never hit this */ - break; - case NM_SUPPLICANT_INTERFACE_STATE_DOWN: - /* Don't do anything here; interface can't get out of DOWN state */ - break; - default: - nm_log_warn (LOGD_SUPPLICANT, "Unknown supplicant interface state!"); - break; + if (priv->state == NM_SUPPLICANT_INTERFACE_STATE_INIT) + interface_add (self, priv->is_wireless); + } else { + /* The supplicant stopped; so we must tear down the interface */ + set_state (self, NM_SUPPLICANT_INTERFACE_STATE_DOWN); } } - -static void -nm_supplicant_interface_set_state (NMSupplicantInterface * self, - guint32 new_state) -{ - NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); - guint32 old_state; - - g_return_if_fail (new_state < NM_SUPPLICANT_INTERFACE_STATE_LAST); - - if (new_state == priv->state) - return; - - old_state = priv->state; - if (new_state == NM_SUPPLICANT_INTERFACE_STATE_DOWN) { - /* If the interface is transitioning to DOWN and there's are - * in-progress pending calls, cancel them. - */ - cancel_all_callbacks (priv->other_pcalls); - cancel_all_callbacks (priv->assoc_pcalls); - } - - priv->state = new_state; - g_signal_emit (self, - nm_supplicant_interface_signals[STATE], - 0, - priv->state, - old_state); -} - -static void -nm_supplicant_interface_smgr_state_changed (NMSupplicantManager * smgr, - guint32 new_state, - guint32 old_state, - gpointer user_data) -{ - NMSupplicantInterface * self = NM_SUPPLICANT_INTERFACE (user_data); - - switch (new_state) { - case NM_SUPPLICANT_MANAGER_STATE_DOWN: - /* The supplicant went away, likely the connection to it is also - * gone. Therefore, this interface must move to the DOWN state - * and be disposed of. - */ - nm_supplicant_interface_set_state (self, NM_SUPPLICANT_INTERFACE_STATE_DOWN); - break; - case NM_SUPPLICANT_MANAGER_STATE_IDLE: - /* Handle the supplicant now being available. */ - nm_supplicant_interface_handle_supplicant_manager_idle_state (self); - break; - default: - nm_log_warn (LOGD_SUPPLICANT, "Unknown supplicant manager state!"); - break; - } -} - - static void remove_network_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) { @@ -1045,16 +725,13 @@ nm_supplicant_interface_disconnect (NMSupplicantInterface * self) if (!priv->iface_proxy) return; - /* Don't try to disconnect if the supplicant interface is already - * disconnected. - */ - if (priv->con_state == NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED - || priv->con_state == NM_SUPPLICANT_INTERFACE_CON_STATE_INACTIVE) { + /* Don't try to disconnect if the supplicant interface is already disconnected */ + if ( priv->state == NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED + || priv->state == NM_SUPPLICANT_INTERFACE_STATE_INACTIVE) { if (priv->net_proxy) { g_object_unref (priv->net_proxy); priv->net_proxy = NULL; } - return; } @@ -1194,9 +871,7 @@ call_set_blobs (NMSupplicantInfo *info, GHashTable *orig_blobs) const char *msg = "Not enough memory to create blob table."; nm_log_warn (LOGD_SUPPLICANT, "%s", msg); - g_signal_emit (info->interface, - nm_supplicant_interface_signals[CONNECTION_ERROR], - 0, "SendBlobError", msg); + g_signal_emit (info->interface, signals[CONNECTION_ERROR], 0, "SendBlobError", msg); return; } @@ -1316,14 +991,6 @@ nm_supplicant_interface_set_config (NMSupplicantInterface * self, return call != NULL; } -const char * -nm_supplicant_interface_get_device (NMSupplicantInterface * self) -{ - g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), NULL); - - return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->dev; -} - static void scan_request_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) { @@ -1339,10 +1006,7 @@ scan_request_cb (DBusGProxy *proxy, DBusGProxyCall *call_id, gpointer user_data) } /* Notify listeners of the result of the scan */ - g_signal_emit (info->interface, - nm_supplicant_interface_signals[SCAN_REQ_RESULT], - 0, - success ? TRUE : FALSE); + g_signal_emit (info->interface, signals[SCAN_REQ_RESULT], 0, !!success); } gboolean @@ -1375,14 +1039,6 @@ nm_supplicant_interface_get_state (NMSupplicantInterface * self) return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->state; } -guint32 -nm_supplicant_interface_get_connection_state (NMSupplicantInterface * self) -{ - g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED); - - return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->con_state; -} - const char * nm_supplicant_interface_state_to_string (guint32 state) { @@ -1393,6 +1049,22 @@ nm_supplicant_interface_state_to_string (guint32 state) return "starting"; case NM_SUPPLICANT_INTERFACE_STATE_READY: return "ready"; + case NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED: + return "disconnected"; + case NM_SUPPLICANT_INTERFACE_STATE_INACTIVE: + return "inactive"; + case NM_SUPPLICANT_INTERFACE_STATE_SCANNING: + return "scanning"; + case NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATING: + return "associating"; + case NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED: + return "associated"; + case NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE: + return "4-way handshake"; + case NM_SUPPLICANT_INTERFACE_STATE_GROUP_HANDSHAKE: + return "group handshake"; + case NM_SUPPLICANT_INTERFACE_STATE_COMPLETED: + return "completed"; case NM_SUPPLICANT_INTERFACE_STATE_DOWN: return "down"; default: @@ -1402,28 +1074,249 @@ nm_supplicant_interface_state_to_string (guint32 state) } const char * -nm_supplicant_interface_connection_state_to_string (guint32 state) +nm_supplicant_interface_get_device (NMSupplicantInterface * self) { - switch (state) { - case NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED: - return "disconnected"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_INACTIVE: - return "inactive"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING: - return "scanning"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATING: - return "associating"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATED: - return "associated"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_4WAY_HANDSHAKE: - return "4-way handshake"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_GROUP_HANDSHAKE: - return "group handshake"; - case NM_SUPPLICANT_INTERFACE_CON_STATE_COMPLETED: - return "completed"; - default: - break; - } - return "unknown"; + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), NULL); + + return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->dev; +} + +const char * +nm_supplicant_interface_get_object_path (NMSupplicantInterface *self) +{ + g_return_val_if_fail (self != NULL, NULL); + g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), NULL); + + return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->object_path; +} + +const char * +nm_supplicant_interface_get_ifname (NMSupplicantInterface *self) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (NM_IS_SUPPLICANT_INTERFACE (self), FALSE); + + return NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self)->dev; +} + +/*******************************************************************/ + +NMSupplicantInterface * +nm_supplicant_interface_new (NMSupplicantManager *smgr, + const char *ifname, + gboolean is_wireless, + gboolean start_now) +{ + NMSupplicantInterface *self; + NMSupplicantInterfacePrivate *priv; + guint id; + + g_return_val_if_fail (NM_IS_SUPPLICANT_MANAGER (smgr), NULL); + g_return_val_if_fail (ifname != NULL, NULL); + + self = g_object_new (NM_TYPE_SUPPLICANT_INTERFACE, NULL); + if (self) { + priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); + + priv->smgr = g_object_ref (smgr); + id = g_signal_connect (priv->smgr, + "notify::" NM_SUPPLICANT_MANAGER_AVAILABLE, + G_CALLBACK (smgr_avail_cb), + self); + priv->smgr_avail_id = id; + + priv->dev = g_strdup (ifname); + priv->is_wireless = is_wireless; + + if (start_now) + interface_add (self, priv->is_wireless); + } + + return self; +} + +static void +nm_supplicant_interface_init (NMSupplicantInterface * self) +{ + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (self); + DBusGConnection *bus; + + priv->state = NM_SUPPLICANT_INTERFACE_STATE_INIT; + priv->assoc_pcalls = nm_call_store_new (); + priv->other_pcalls = nm_call_store_new (); + priv->dbus_mgr = nm_dbus_manager_get (); + + bus = nm_dbus_manager_get_connection (priv->dbus_mgr); + priv->wpas_proxy = dbus_g_proxy_new_for_name (bus, + WPAS_DBUS_SERVICE, + WPAS_DBUS_PATH, + WPAS_DBUS_INTERFACE); +} + +static void +set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_STATE: + g_value_set_uint (value, NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object)->state); + break; + case PROP_SCANNING: + g_value_set_boolean (value, NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object)->scanning); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +dispose (GObject *object) +{ + NMSupplicantInterfacePrivate *priv = NM_SUPPLICANT_INTERFACE_GET_PRIVATE (object); + + if (priv->disposed) { + G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object); + return; + } + priv->disposed = TRUE; + + /* Cancel pending calls before unrefing the dbus manager */ + cancel_all_callbacks (priv->other_pcalls); + nm_call_store_destroy (priv->other_pcalls); + + cancel_all_callbacks (priv->assoc_pcalls); + nm_call_store_destroy (priv->assoc_pcalls); + + if (priv->iface_proxy) + g_object_unref (priv->iface_proxy); + + if (priv->net_proxy) + g_object_unref (priv->net_proxy); + + if (priv->wpas_proxy) + g_object_unref (priv->wpas_proxy); + + if (priv->scan_results_timeout) + g_source_remove (priv->scan_results_timeout); + + if (priv->smgr) { + if (priv->smgr_avail_id) + g_signal_handler_disconnect (priv->smgr, priv->smgr_avail_id); + g_object_unref (priv->smgr); + } + + g_free (priv->dev); + + if (priv->dbus_mgr) + g_object_unref (priv->dbus_mgr); + + if (priv->cfg) + g_object_unref (priv->cfg); + + g_free (priv->object_path); + + /* Chain up to the parent class */ + G_OBJECT_CLASS (nm_supplicant_interface_parent_class)->dispose (object); +} + +static void +nm_supplicant_interface_class_init (NMSupplicantInterfaceClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (object_class, sizeof (NMSupplicantInterfacePrivate)); + + object_class->dispose = dispose; + object_class->set_property = set_property; + object_class->get_property = get_property; + + /* Properties */ + g_object_class_install_property (object_class, PROP_STATE, + g_param_spec_uint ("state", + "State", + "State of the supplicant interface", + NM_SUPPLICANT_INTERFACE_STATE_INIT, + NM_SUPPLICANT_INTERFACE_STATE_LAST - 1, + NM_SUPPLICANT_INTERFACE_STATE_INIT, + G_PARAM_READABLE)); + + g_object_class_install_property (object_class, PROP_SCANNING, + g_param_spec_boolean ("scanning", + "Scanning", + "Scanning", + FALSE, + G_PARAM_READABLE)); + + /* Signals */ + signals[STATE] = + g_signal_new ("state", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, state), + NULL, NULL, + _nm_marshal_VOID__UINT_UINT, + G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); + + signals[REMOVED] = + g_signal_new ("removed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, removed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + signals[SCANNED_AP] = + g_signal_new ("scanned-ap", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scanned_ap), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, G_TYPE_POINTER); + + signals[SCAN_REQ_RESULT] = + g_signal_new ("scan-req-result", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scan_req_result), + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + + signals[SCAN_RESULTS] = + g_signal_new ("scan-results", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, scan_results), + NULL, NULL, + g_cclosure_marshal_VOID__UINT, + G_TYPE_NONE, 1, G_TYPE_UINT); + + signals[CONNECTION_ERROR] = + g_signal_new ("connection-error", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NMSupplicantInterfaceClass, connection_error), + NULL, NULL, + _nm_marshal_VOID__STRING_STRING, + G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); } diff --git a/src/supplicant-manager/nm-supplicant-interface.h b/src/supplicant-manager/nm-supplicant-interface.h index bee5436f5..9471bd771 100644 --- a/src/supplicant-manager/nm-supplicant-interface.h +++ b/src/supplicant-manager/nm-supplicant-interface.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) 2006 - 2008 Red Hat, Inc. + * Copyright (C) 2006 - 2010 Red Hat, Inc. * Copyright (C) 2007 - 2008 Novell, Inc. */ @@ -26,47 +26,26 @@ #include #include "nm-supplicant-types.h" -G_BEGIN_DECLS - /* * Supplicant interface states - * The states are linear, ie INIT -> READY -> DOWN and state may only be - * changed in one direction. If an interface reaches the DOWN state, it - * cannot be re-initialized; it must be torn down and a new one created. - * - * INIT: interface has been created, but cannot be used yet; it is waiting - * for pending requests of the supplicant to complete. - * READY: interface is ready for use - * DOWN: interface has been removed or has otherwise been made invalid; it - * must be torn down. - * - * Note: LAST is an invalid state and only used for boundary checking. + * A mix of wpa_supplicant interface states and internal states. */ enum { NM_SUPPLICANT_INTERFACE_STATE_INIT = 0, NM_SUPPLICANT_INTERFACE_STATE_STARTING, NM_SUPPLICANT_INTERFACE_STATE_READY, + NM_SUPPLICANT_INTERFACE_STATE_DISCONNECTED, + NM_SUPPLICANT_INTERFACE_STATE_INACTIVE, + NM_SUPPLICANT_INTERFACE_STATE_SCANNING, + NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATING, + NM_SUPPLICANT_INTERFACE_STATE_ASSOCIATED, + NM_SUPPLICANT_INTERFACE_STATE_4WAY_HANDSHAKE, + NM_SUPPLICANT_INTERFACE_STATE_GROUP_HANDSHAKE, + NM_SUPPLICANT_INTERFACE_STATE_COMPLETED, NM_SUPPLICANT_INTERFACE_STATE_DOWN, NM_SUPPLICANT_INTERFACE_STATE_LAST }; - -/* - * Supplicant interface connection states - * The wpa_supplicant state for the connection. - */ -enum { - NM_SUPPLICANT_INTERFACE_CON_STATE_DISCONNECTED = 0, - NM_SUPPLICANT_INTERFACE_CON_STATE_INACTIVE, - NM_SUPPLICANT_INTERFACE_CON_STATE_SCANNING, - NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATING, - NM_SUPPLICANT_INTERFACE_CON_STATE_ASSOCIATED, - NM_SUPPLICANT_INTERFACE_CON_STATE_4WAY_HANDSHAKE, - NM_SUPPLICANT_INTERFACE_CON_STATE_GROUP_HANDSHAKE, - NM_SUPPLICANT_INTERFACE_CON_STATE_COMPLETED, - NM_SUPPLICANT_INTERFACE_CON_STATE_LAST -}; - #define NM_TYPE_SUPPLICANT_INTERFACE (nm_supplicant_interface_get_type ()) #define NM_SUPPLICANT_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SUPPLICANT_INTERFACE, NMSupplicantInterface)) #define NM_SUPPLICANT_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SUPPLICANT_INTERFACE, NMSupplicantInterfaceClass)) @@ -103,11 +82,6 @@ typedef struct { void (*scan_results) (NMSupplicantInterface * iface, guint num_bssids); - /* link state of the device's connection */ - void (*connection_state) (NMSupplicantInterface * iface, - guint32 new_state, - guint32 old_state); - /* an error occurred during a connection request */ void (*connection_error) (NMSupplicantInterface * iface, const char * name, @@ -119,7 +93,8 @@ GType nm_supplicant_interface_get_type (void); NMSupplicantInterface * nm_supplicant_interface_new (NMSupplicantManager * smgr, const char *ifname, - gboolean is_wireless); + gboolean is_wireless, + gboolean start_now); gboolean nm_supplicant_interface_set_config (NMSupplicantInterface * iface, NMSupplicantConfig * cfg); @@ -128,18 +103,16 @@ void nm_supplicant_interface_disconnect (NMSupplicantInterface * iface); const char * nm_supplicant_interface_get_device (NMSupplicantInterface * iface); +const char *nm_supplicant_interface_get_object_path (NMSupplicantInterface * iface); + gboolean nm_supplicant_interface_request_scan (NMSupplicantInterface * self); guint32 nm_supplicant_interface_get_state (NMSupplicantInterface * self); -guint32 nm_supplicant_interface_get_connection_state (NMSupplicantInterface * self); - const char *nm_supplicant_interface_state_to_string (guint32 state); -const char *nm_supplicant_interface_connection_state_to_string (guint32 state); - gboolean nm_supplicant_interface_get_scanning (NMSupplicantInterface *self); -G_END_DECLS +const char *nm_supplicant_interface_get_ifname (NMSupplicantInterface *self); #endif /* NM_SUPPLICANT_INTERFACE_H */ diff --git a/src/supplicant-manager/nm-supplicant-manager.c b/src/supplicant-manager/nm-supplicant-manager.c index a2cf58eb8..35ef749cb 100644 --- a/src/supplicant-manager/nm-supplicant-manager.c +++ b/src/supplicant-manager/nm-supplicant-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) 2006 - 2008 Red Hat, Inc. + * Copyright (C) 2006 - 2010 Red Hat, Inc. * Copyright (C) 2007 - 2008 Novell, Inc. */ @@ -26,19 +26,7 @@ #include "nm-supplicant-manager.h" #include "nm-supplicant-interface.h" #include "nm-dbus-manager.h" -#include "nm-marshal.h" #include "nm-logging.h" -#include "nm-glib-compat.h" - -#define SUPPLICANT_POKE_INTERVAL 120 - -typedef struct { - NMDBusManager * dbus_mgr; - guint32 state; - GSList * ifaces; - gboolean dispose_has_run; - guint poke_id; -} NMSupplicantManagerPrivate; #define NM_SUPPLICANT_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), \ NM_TYPE_SUPPLICANT_MANAGER, \ @@ -46,252 +34,59 @@ typedef struct { G_DEFINE_TYPE (NMSupplicantManager, nm_supplicant_manager, G_TYPE_OBJECT) - -static void nm_supplicant_manager_name_owner_changed (NMDBusManager *dbus_mgr, - const char *name, - const char *old, - const char *new, - gpointer user_data); - -static void nm_supplicant_manager_set_state (NMSupplicantManager * self, - guint32 new_state); - -static gboolean nm_supplicant_manager_startup (NMSupplicantManager * self); - - -/* Signals */ +/* Properties */ enum { - STATE, /* change in the manager's state */ - LAST_SIGNAL + PROP_0 = 0, + PROP_AVAILABLE, + LAST_PROP }; -static guint nm_supplicant_manager_signals[LAST_SIGNAL] = { 0 }; +typedef struct { + NMDBusManager * dbus_mgr; + guint name_owner_id; + DBusGProxy * proxy; + gboolean running; + GHashTable * ifaces; + guint die_count_reset_id; + guint die_count; + gboolean disposed; +} NMSupplicantManagerPrivate; -NMSupplicantManager * -nm_supplicant_manager_get (void) +/********************************************************************/ + +static inline gboolean +die_count_exceeded (guint32 count) { - static NMSupplicantManager * singleton = NULL; - - if (!singleton) { - singleton = NM_SUPPLICANT_MANAGER (g_object_new (NM_TYPE_SUPPLICANT_MANAGER, NULL)); - } else { - g_object_ref (singleton); - } - - g_assert (singleton); - return singleton; -} - -static gboolean -poke_supplicant_cb (gpointer user_data) -{ - NMSupplicantManager *self = NM_SUPPLICANT_MANAGER (user_data); - NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - DBusGConnection *g_connection; - DBusGProxy *proxy; - const char *tmp = "ignoreme"; - - g_connection = nm_dbus_manager_get_connection (priv->dbus_mgr); - proxy = dbus_g_proxy_new_for_name (g_connection, - WPAS_DBUS_SERVICE, - WPAS_DBUS_PATH, - WPAS_DBUS_INTERFACE); - if (!proxy) { - nm_log_warn (LOGD_SUPPLICANT, "Error: could not init wpa_supplicant proxy"); - goto out; - } - - nm_log_info (LOGD_SUPPLICANT, "Trying to start the supplicant..."); - dbus_g_proxy_call_no_reply (proxy, "getInterface", G_TYPE_STRING, tmp, G_TYPE_INVALID); - g_object_unref (proxy); - -out: - /* Reschedule the poke */ - priv->poke_id = g_timeout_add_seconds (SUPPLICANT_POKE_INTERVAL, - poke_supplicant_cb, - (gpointer) self); - - return FALSE; -} - -static void -nm_supplicant_manager_init (NMSupplicantManager * self) -{ - NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - gboolean running; - - priv->dispose_has_run = FALSE; - priv->state = NM_SUPPLICANT_MANAGER_STATE_DOWN; - priv->dbus_mgr = nm_dbus_manager_get (); - priv->poke_id = 0; - - running = nm_supplicant_manager_startup (self); - - g_signal_connect (priv->dbus_mgr, - "name-owner-changed", - G_CALLBACK (nm_supplicant_manager_name_owner_changed), - self); - - if (!running) { - /* Try to activate the supplicant */ - priv->poke_id = g_idle_add (poke_supplicant_cb, (gpointer) self); - } -} - -static void -nm_supplicant_manager_dispose (GObject *object) -{ - NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (object); - - if (priv->dispose_has_run) { - G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object); - return; - } - - priv->dispose_has_run = TRUE; - - if (priv->poke_id) { - g_source_remove (priv->poke_id); - priv->poke_id = 0; - } - - if (priv->dbus_mgr) { - g_object_unref (G_OBJECT (priv->dbus_mgr)); - priv->dbus_mgr = NULL; - } - - /* Chain up to the parent class */ - G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object); -} - -static void -nm_supplicant_manager_class_init (NMSupplicantManagerClass *klass) -{ - GObjectClass * object_class = G_OBJECT_CLASS (klass); - - g_type_class_add_private (object_class, sizeof (NMSupplicantManagerPrivate)); - - object_class->dispose = nm_supplicant_manager_dispose; - - /* Signals */ - nm_supplicant_manager_signals[STATE] = - g_signal_new ("state", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NMSupplicantManagerClass, state), - NULL, NULL, - _nm_marshal_VOID__UINT_UINT, - G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); -} - -static void -nm_supplicant_manager_name_owner_changed (NMDBusManager *dbus_mgr, - const char *name, - const char *old_owner, - const char *new_owner, - gpointer user_data) -{ - NMSupplicantManager * self = (NMSupplicantManager *) user_data; - NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - gboolean old_owner_good = (old_owner && strlen (old_owner)); - gboolean new_owner_good = (new_owner && strlen (new_owner)); - - /* Can't handle the signal if its not from the supplicant service */ - if (strcmp (WPAS_DBUS_SERVICE, name) != 0) - return; - - if (!old_owner_good && new_owner_good) { - gboolean running; - - running = nm_supplicant_manager_startup (self); - - if (running && priv->poke_id) { - g_source_remove (priv->poke_id); - priv->poke_id = 0; - } - } else if (old_owner_good && !new_owner_good) { - nm_supplicant_manager_set_state (self, NM_SUPPLICANT_MANAGER_STATE_DOWN); - - if (priv->poke_id) - g_source_remove (priv->poke_id); - - /* Poke the supplicant so that it gets activated by dbus system bus - * activation. - */ - priv->poke_id = g_idle_add (poke_supplicant_cb, (gpointer) self); - } -} - - -guint32 -nm_supplicant_manager_get_state (NMSupplicantManager * self) -{ - g_return_val_if_fail (NM_IS_SUPPLICANT_MANAGER (self), FALSE); - - return NM_SUPPLICANT_MANAGER_GET_PRIVATE (self)->state; -} - -static void -nm_supplicant_manager_set_state (NMSupplicantManager * self, guint32 new_state) -{ - NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - guint32 old_state; - - if (new_state == priv->state) - return; - - old_state = priv->state; - priv->state = new_state; - g_signal_emit (self, - nm_supplicant_manager_signals[STATE], - 0, - priv->state, - old_state); -} - -static gboolean -nm_supplicant_manager_startup (NMSupplicantManager * self) -{ - gboolean running; - - /* FIXME: convert to pending call */ - running = nm_dbus_manager_name_has_owner (NM_SUPPLICANT_MANAGER_GET_PRIVATE (self)->dbus_mgr, - WPAS_DBUS_SERVICE); - if (running) - nm_supplicant_manager_set_state (self, NM_SUPPLICANT_MANAGER_STATE_IDLE); - - return running; + return count > 2; } NMSupplicantInterface * -nm_supplicant_manager_get_iface (NMSupplicantManager * self, - const char *ifname, - gboolean is_wireless) +nm_supplicant_manager_iface_get (NMSupplicantManager * self, + const char *ifname, + gboolean is_wireless) { NMSupplicantManagerPrivate *priv; - NMSupplicantInterface * iface = NULL; - GSList * elt; + NMSupplicantInterface *iface = NULL; + gboolean start_now; g_return_val_if_fail (NM_IS_SUPPLICANT_MANAGER (self), NULL); g_return_val_if_fail (ifname != NULL, NULL); priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - /* Ensure we don't already have this interface */ - for (elt = priv->ifaces; elt; elt = g_slist_next (elt)) { - NMSupplicantInterface * if_tmp = (NMSupplicantInterface *) elt->data; - - if (!strcmp (ifname, nm_supplicant_interface_get_device (if_tmp))) { - iface = if_tmp; - break; - } - } - + iface = g_hash_table_lookup (priv->ifaces, ifname); if (!iface) { + /* If we're making the supplicant take a time out for a bit, don't + * let the supplicant interface start immediately, just let it hang + * around in INIT state until we're ready to talk to the supplicant + * again. + */ + start_now = !die_count_exceeded (priv->die_count); + nm_log_dbg (LOGD_SUPPLICANT, "(%s): creating new supplicant interface", ifname); - iface = nm_supplicant_interface_new (self, ifname, is_wireless); + iface = nm_supplicant_interface_new (self, ifname, is_wireless, start_now); if (iface) - priv->ifaces = g_slist_append (priv->ifaces, iface); + g_hash_table_insert (priv->ifaces, g_strdup (ifname), iface); } else { nm_log_dbg (LOGD_SUPPLICANT, "(%s): returning existing supplicant interface", ifname); } @@ -300,44 +95,222 @@ nm_supplicant_manager_get_iface (NMSupplicantManager * self, } void -nm_supplicant_manager_release_iface (NMSupplicantManager * self, - NMSupplicantInterface * iface) +nm_supplicant_manager_iface_release (NMSupplicantManager *self, + NMSupplicantInterface *iface) { NMSupplicantManagerPrivate *priv; - GSList * elt; + const char *ifname, *op; g_return_if_fail (NM_IS_SUPPLICANT_MANAGER (self)); g_return_if_fail (NM_IS_SUPPLICANT_INTERFACE (iface)); + ifname = nm_supplicant_interface_get_ifname (iface); + g_assert (ifname); + priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); - for (elt = priv->ifaces; elt; elt = g_slist_next (elt)) { - NMSupplicantInterface * if_tmp = (NMSupplicantInterface *) elt->data; + g_return_if_fail (g_hash_table_lookup (priv->ifaces, ifname) == iface); - if (if_tmp == iface) { - /* Remove the iface from the supplicant manager's list and - * dereference to match additional reference in get_iface. - */ - priv->ifaces = g_slist_remove_link (priv->ifaces, elt); - g_slist_free_1 (elt); - g_object_unref (iface); - break; + /* Ask wpa_supplicant to remove this interface */ + op = nm_supplicant_interface_get_object_path (iface); + if (priv->running && priv->proxy && op) { + dbus_g_proxy_call_no_reply (priv->proxy, "removeInterface", + DBUS_TYPE_G_OBJECT_PATH, op, + G_TYPE_INVALID); + } + + g_hash_table_remove (priv->ifaces, ifname); +} + +gboolean +nm_supplicant_manager_available (NMSupplicantManager *self) +{ + g_return_val_if_fail (self != NULL, FALSE); + g_return_val_if_fail (NM_IS_SUPPLICANT_MANAGER (self), FALSE); + + if (die_count_exceeded (NM_SUPPLICANT_MANAGER_GET_PRIVATE (self)->die_count)) + return FALSE; + return NM_SUPPLICANT_MANAGER_GET_PRIVATE (self)->running; +} + +static void +set_running (NMSupplicantManager *self, gboolean now_running) +{ + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + gboolean old_available = nm_supplicant_manager_available (self); + + priv->running = now_running; + if (old_available != nm_supplicant_manager_available (self)) + g_object_notify (G_OBJECT (self), NM_SUPPLICANT_MANAGER_AVAILABLE); +} + +static void +set_die_count (NMSupplicantManager *self, guint new_die_count) +{ + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + gboolean old_available = nm_supplicant_manager_available (self); + + priv->die_count = new_die_count; + if (old_available != nm_supplicant_manager_available (self)) + g_object_notify (G_OBJECT (self), NM_SUPPLICANT_MANAGER_AVAILABLE); +} + +static gboolean +wpas_die_count_reset_cb (gpointer user_data) +{ + NMSupplicantManager *self = NM_SUPPLICANT_MANAGER (user_data); + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + + /* Reset the die count back to zero, which allows use of the supplicant again */ + priv->die_count_reset_id = 0; + set_die_count (self, 0); + nm_log_info (LOGD_SUPPLICANT, "wpa_supplicant die count reset"); + return FALSE; +} + +static void +name_owner_changed (NMDBusManager *dbus_mgr, + const char *name, + const char *old_owner, + const char *new_owner, + gpointer user_data) +{ + NMSupplicantManager *self = NM_SUPPLICANT_MANAGER (user_data); + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + gboolean old_owner_good = (old_owner && strlen (old_owner)); + gboolean new_owner_good = (new_owner && strlen (new_owner)); + + /* We only care about the supplicant here */ + if (strcmp (WPAS_DBUS_SERVICE, name) != 0) + return; + + if (!old_owner_good && new_owner_good) { + nm_log_info (LOGD_SUPPLICANT, "wpa_supplicant started"); + set_running (self, TRUE); + } else if (old_owner_good && !new_owner_good) { + nm_log_info (LOGD_SUPPLICANT, "wpa_supplicant stopped"); + + /* Reschedule the die count reset timeout. Every time the supplicant + * dies we wait 10 seconds before resetting the counter. If the + * supplicant died more than twice before the timer is reset, then + * we don't try to talk to the supplicant for a while. + */ + if (priv->die_count_reset_id) + g_source_remove (priv->die_count_reset_id); + priv->die_count_reset_id = g_timeout_add_seconds (10, wpas_die_count_reset_cb, self); + set_die_count (self, priv->die_count + 1); + + if (die_count_exceeded (priv->die_count)) { + nm_log_info (LOGD_SUPPLICANT, + "wpa_supplicant die count %d; ignoring for 10 seconds", + priv->die_count); } + + set_running (self, FALSE); } } -const char * -nm_supplicant_manager_state_to_string (guint32 state) +/*******************************************************************/ + +NMSupplicantManager * +nm_supplicant_manager_get (void) { - switch (state) { - case NM_SUPPLICANT_MANAGER_STATE_DOWN: - return "down"; - case NM_SUPPLICANT_MANAGER_STATE_IDLE: - return "idle"; + static NMSupplicantManager *singleton = NULL; + + if (!singleton) + singleton = NM_SUPPLICANT_MANAGER (g_object_new (NM_TYPE_SUPPLICANT_MANAGER, NULL)); + else + g_object_ref (singleton); + + g_assert (singleton); + return singleton; +} + +static void +nm_supplicant_manager_init (NMSupplicantManager * self) +{ + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (self); + DBusGConnection *bus; + + priv->dbus_mgr = nm_dbus_manager_get (); + priv->name_owner_id = g_signal_connect (priv->dbus_mgr, + "name-owner-changed", + G_CALLBACK (name_owner_changed), + self); + priv->running = nm_dbus_manager_name_has_owner (priv->dbus_mgr, WPAS_DBUS_SERVICE); + + bus = nm_dbus_manager_get_connection (priv->dbus_mgr); + priv->proxy = dbus_g_proxy_new_for_name (bus, + WPAS_DBUS_SERVICE, + WPAS_DBUS_PATH, + WPAS_DBUS_INTERFACE); + + priv->ifaces = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); +} + +static void +set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +{ + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); +} + +static void +get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +{ + switch (prop_id) { + case PROP_AVAILABLE: + g_value_set_boolean (value, nm_supplicant_manager_available (NM_SUPPLICANT_MANAGER (object))); + break; default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } - return "unknown"; } +static void +dispose (GObject *object) +{ + NMSupplicantManagerPrivate *priv = NM_SUPPLICANT_MANAGER_GET_PRIVATE (object); + + if (priv->disposed) + goto out; + priv->disposed = TRUE; + + if (priv->die_count_reset_id) + g_source_remove (priv->die_count_reset_id); + + if (priv->dbus_mgr) { + if (priv->name_owner_id) + g_signal_handler_disconnect (priv->dbus_mgr, priv->name_owner_id); + g_object_unref (G_OBJECT (priv->dbus_mgr)); + } + + g_hash_table_destroy (priv->ifaces); + + if (priv->proxy) + g_object_unref (priv->proxy); + +out: + /* Chain up to the parent class */ + G_OBJECT_CLASS (nm_supplicant_manager_parent_class)->dispose (object); +} + +static void +nm_supplicant_manager_class_init (NMSupplicantManagerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + g_type_class_add_private (object_class, sizeof (NMSupplicantManagerPrivate)); + + object_class->get_property = get_property; + object_class->set_property = set_property; + object_class->dispose = dispose; + + g_object_class_install_property (object_class, PROP_AVAILABLE, + g_param_spec_boolean (NM_SUPPLICANT_MANAGER_AVAILABLE, + "Available", + "Available", + FALSE, + G_PARAM_READABLE)); +} diff --git a/src/supplicant-manager/nm-supplicant-manager.h b/src/supplicant-manager/nm-supplicant-manager.h index fef2a7744..e9c31a997 100644 --- a/src/supplicant-manager/nm-supplicant-manager.h +++ b/src/supplicant-manager/nm-supplicant-manager.h @@ -33,23 +33,6 @@ G_BEGIN_DECLS -/* - * Supplicant manager states - * Either state may transition to the other state at any time. - * - * DOWN: supplicant manager has been created, but cannot be used; the supplicant - * is either not running or has not yet been fully initialized. - * IDLE: supplicant manager is ready for use - * - * Note: LAST is an invalid state and only used for boundary checking. - */ -enum { - NM_SUPPLICANT_MANAGER_STATE_DOWN = 0, - NM_SUPPLICANT_MANAGER_STATE_IDLE, - NM_SUPPLICANT_MANAGER_STATE_LAST -}; - - #define NM_TYPE_SUPPLICANT_MANAGER (nm_supplicant_manager_get_type ()) #define NM_SUPPLICANT_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SUPPLICANT_MANAGER, NMSupplicantManager)) #define NM_SUPPLICANT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SUPPLICANT_MANAGER, NMSupplicantManagerClass)) @@ -57,6 +40,8 @@ enum { #define NM_IS_SUPPLICANT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SUPPLICANT_MANAGER)) #define NM_SUPPLICANT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SUPPLICANT_MANAGER, NMSupplicantManagerClass)) +#define NM_SUPPLICANT_MANAGER_AVAILABLE "available" + struct _NMSupplicantManager { GObject parent; @@ -65,24 +50,19 @@ struct _NMSupplicantManager typedef struct { GObjectClass parent; - - /* class members */ - void (* state) (NMSupplicantManager * mgr, guint32 new_state, guint32 old_state); } NMSupplicantManagerClass; GType nm_supplicant_manager_get_type (void); -NMSupplicantManager * nm_supplicant_manager_get (void); +NMSupplicantManager *nm_supplicant_manager_get (void); -guint32 nm_supplicant_manager_get_state (NMSupplicantManager * mgr); +NMSupplicantInterface *nm_supplicant_manager_iface_get (NMSupplicantManager *mgr, + const char *ifname, + gboolean is_wireless); -NMSupplicantInterface * nm_supplicant_manager_get_iface (NMSupplicantManager * mgr, - const char *ifname, - gboolean is_wireless); +void nm_supplicant_manager_iface_release (NMSupplicantManager *mgr, + NMSupplicantInterface *iface); -void nm_supplicant_manager_release_iface (NMSupplicantManager * mgr, - NMSupplicantInterface * iface); - -const char *nm_supplicant_manager_state_to_string (guint32 state); +gboolean nm_supplicant_manager_available (NMSupplicantManager *mgr); #endif /* NM_SUPPLICANT_MANAGER_H */ diff --git a/src/supplicant-manager/nm-supplicant-settings-verify.c b/src/supplicant-manager/nm-supplicant-settings-verify.c index 283346559..c65af4dee 100644 --- a/src/supplicant-manager/nm-supplicant-settings-verify.c +++ b/src/supplicant-manager/nm-supplicant-settings-verify.c @@ -123,6 +123,7 @@ static const struct Opt opt_table[] = { { "engine_id", TYPE_BYTES, 0, 0, FALSE, NULL }, { "key_id", TYPE_BYTES, 0, 0, FALSE, NULL }, { "fragment_size", TYPE_INT, 1, 2000, FALSE, NULL }, + { "proactive_key_caching", TYPE_INT, 0, 1, FALSE, NULL }, }; diff --git a/src/system-settings/nm-default-wired-connection.c b/src/system-settings/nm-default-wired-connection.c index 365589259..b2c22baf3 100644 --- a/src/system-settings/nm-default-wired-connection.c +++ b/src/system-settings/nm-default-wired-connection.c @@ -149,6 +149,7 @@ constructor (GType type, NM_SETTING_CONNECTION_AUTOCONNECT, TRUE, NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_READ_ONLY, priv->read_only, + NM_SETTING_CONNECTION_TIMESTAMP, time (NULL), NULL); g_free (id); diff --git a/src/tests/test-policy-hosts.c b/src/tests/test-policy-hosts.c index e6775f35e..8865c4264 100644 --- a/src/tests/test-policy-hosts.c +++ b/src/tests/test-policy-hosts.c @@ -26,6 +26,8 @@ #define FALLBACK_HOSTNAME4 "localhost.localdomain" #define FALLBACK_HOSTNAME6 "localhost6.localdomain6" +#define DEBUG 0 + static void test_generic (const char *before, const char *after, @@ -43,6 +45,7 @@ test_generic (const char *before, newc = nm_policy_get_etc_hosts ((const char **) lines, strlen (before), hostname, + NULL, FALLBACK_HOSTNAME4, FALLBACK_HOSTNAME6, ip4_addr, @@ -56,11 +59,11 @@ test_generic (const char *before, g_clear_error (&error); } else if (after == NULL) { /* No change to /etc/hosts required */ -#if 0 +#if DEBUG if (newc != NULL) { g_message ("\n- NEW ---------------------------------\n" "%s" - "- EXPECTED NONE -------------------------\n", + "+ EXPECTED NONE +++++++++++++++++++++++++\n", newc->str); } #endif @@ -70,10 +73,10 @@ test_generic (const char *before, g_assert (newc != NULL); g_assert (error == NULL); -#if 0 +#if DEBUG g_message ("\n- NEW ---------------------------------\n" "%s" - "- EXPECTED ------------------------------\n" + "+ EXPECTED ++++++++++++++++++++++++++++++\n" "%s" "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", newc->str, after); @@ -167,10 +170,17 @@ static const char *named_generic_before = \ "::1 localhost6.localdomain6 localhost6\n" "127.0.0.1 lcmd.us.intellitxt.com\n"; +static const char *named_generic_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 playboy localhost.localdomain localhost\n" + "::1 playboy localhost6.localdomain6 localhost6\n" + "127.0.0.1 lcmd.us.intellitxt.com\n"; + static void test_hosts_named_generic (void) { - test_generic (named_generic_before, NULL, "playboy", NULL, NULL, FALSE); + test_generic (named_generic_before, named_generic_after, "playboy", NULL, NULL, FALSE); } /*******************************************/ @@ -609,24 +619,178 @@ static const char *long_before = \ "127.0.0.1 ad.doubleclick.net\n" "127.0.0.1 oascentral.movietickets.com\n" "127.0.0.1 view.atdmt.com\n" - "127.0.0.1 ads.chumcity.com\n" - "127.0.0.1 ads.as4x.tmcs.net\n" - "127.0.0.1 n4403ad.doubleclick.net\n" - "127.0.0.1 www.assoc-amazon.com\n" - "127.0.0.1 s25.sitemeter.com\n" - "127.0.0.1 adlog.com.com\n" - "127.0.0.1 ahs.laptopmag.com\n" - "127.0.0.1 altfarm.mediaplex.com\n" - "127.0.0.1 ads.addynamix.com\n" - "127.0.0.1 srx.main.ebayrtm.com\n" - "127.0.0.1 cdn5.tribalfusion.com\n" - "127.0.0.1 a.tribalfusion.com\n"; + "127.0.0.1 ads.chumcity.com\n"; +static const char *long_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6\n" + "\n" + "127.0.0.1 lcmd.us.intellitxt.com\n" + "127.0.0.1 adserver.adtech.de\n" + "127.0.0.1 a.as-us.falkag.net\n" + "127.0.0.1 a.as-eu.falkag.net\n" + "127.0.0.1 ads.doubleclick.com\n" + "\n" + "# random comment\n" + "127.0.0.1 m1.2mdn.net\n" + "127.0.0.1 ds.serving-sys.com\n" + "127.0.0.1 pagead2.googlesyndication.com\n" + "127.0.0.1 ad.doubleclick.com\n" + "127.0.0.1 ad.doubleclick.net\n" + "127.0.0.1 oascentral.movietickets.com\n" + "127.0.0.1 view.atdmt.com\n" + "127.0.0.1 ads.chumcity.com\n"; static void test_hosts_long (void) { - test_generic (long_before, NULL, "comet", NULL, NULL, FALSE); + test_generic (long_before, long_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *custom4_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 localhost.localdomain localhost pintglass\n" + "::1 localhost6.localdomain6 localhost6\n"; + +static const char *custom4_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost pintglass\n" + "::1 comet localhost6.localdomain6 localhost6\n"; + +static void +test_hosts_custom4 (void) +{ + test_generic (custom4_before, custom4_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *custom6_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 localhost.localdomain localhost\n" + "::1 localhost6.localdomain6 localhost6 pintglass\n"; + +static const char *custom6_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6 pintglass\n"; + +static void +test_hosts_custom6 (void) +{ + test_generic (custom6_before, custom6_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *custom46_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 localhost.localdomain localhost shotglass\n" + "::1 localhost6.localdomain6 localhost6 pintglass\n"; + +static const char *custom46_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost shotglass\n" + "::1 comet localhost6.localdomain6 localhost6 pintglass\n"; + +static void +test_hosts_custom46 (void) +{ + test_generic (custom46_before, custom46_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *custom46_mixed_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 localhost.localdomain localhost shotglass\n" + "::1 localhost6.localdomain6 localhost6 pintglass\n"; + +static const char *custom46_mixed_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost shotglass\n" + "::1 comet localhost6.localdomain6 localhost6 pintglass\n"; + +static void +test_hosts_custom46_mixed (void) +{ + test_generic (custom46_mixed_before, custom46_mixed_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *stale4_removed_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "1.2.3.4 comet # Added by NetworkManager\n" + "127.0.0.1 localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6\n"; + +static const char *stale4_removed_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6\n"; + +static void +test_hosts_stale4_removed (void) +{ + test_generic (stale4_removed_before, stale4_removed_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *stale6_removed_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "3001:abba::3234 comet # Added by NetworkManager\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 localhost6.localdomain6 localhost6\n"; + +static const char *stale6_removed_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6\n"; + +static void +test_hosts_stale6_removed (void) +{ + test_generic (stale6_removed_before, stale6_removed_after, "comet", NULL, NULL, FALSE); +} + +/*******************************************/ + +static const char *stale46_removed_before = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "1.2.3.4 comet # Added by NetworkManager\n" + "3001:abba::3234 comet # Added by NetworkManager\n" + "127.0.0.1 localhost.localdomain localhost\n" + "::1 localhost6.localdomain6 localhost6\n"; + +static const char *stale46_removed_after = \ + "# Do not remove the following line, or various programs\n" + "# that require network functionality will fail.\n" + "127.0.0.1 comet localhost.localdomain localhost\n" + "::1 comet localhost6.localdomain6 localhost6\n"; + +static void +test_hosts_stale46_removed (void) +{ + test_generic (stale46_removed_before, stale46_removed_after, "comet", NULL, NULL, FALSE); } /*******************************************/ @@ -712,6 +876,13 @@ int main (int argc, char **argv) g_test_suite_add (suite, TESTCASE (test_hosts_no_host4, NULL)); g_test_suite_add (suite, TESTCASE (test_hosts_no_host6, NULL)); g_test_suite_add (suite, TESTCASE (test_hosts_long, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_custom4, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_custom6, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_custom46, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_custom46_mixed, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_stale4_removed, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_stale6_removed, NULL)); + g_test_suite_add (suite, TESTCASE (test_hosts_stale46_removed, NULL)); return g_test_run (); } diff --git a/src/vpn-manager/nm-vpn-service.c b/src/vpn-manager/nm-vpn-service.c index 37bd75d4e..3d44d9004 100644 --- a/src/vpn-manager/nm-vpn-service.c +++ b/src/vpn-manager/nm-vpn-service.c @@ -19,6 +19,7 @@ * Copyright (C) 2005 - 2008 Novell, Inc. */ +#include #include #include #include diff --git a/system-settings/plugins/ifcfg-rh/reader.c b/system-settings/plugins/ifcfg-rh/reader.c index 9aefa9c5e..f25acc892 100644 --- a/system-settings/plugins/ifcfg-rh/reader.c +++ b/system-settings/plugins/ifcfg-rh/reader.c @@ -18,6 +18,7 @@ * Copyright (C) 2008 - 2010 Red Hat, Inc. */ +#include #include #include #include diff --git a/system-settings/plugins/ifcfg-rh/writer.c b/system-settings/plugins/ifcfg-rh/writer.c index 75fbca69e..cf1e2663a 100644 --- a/system-settings/plugins/ifcfg-rh/writer.c +++ b/system-settings/plugins/ifcfg-rh/writer.c @@ -1021,6 +1021,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) guint32 i, num; GString *searches; gboolean success = FALSE; + gboolean fake_ip4 = FALSE; const char *method = NULL; s_ip4 = (NMSettingIP4Config *) nm_connection_get_setting (connection, NM_TYPE_SETTING_IP4_CONFIG); @@ -1058,15 +1059,19 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) return TRUE; } - value = nm_setting_ip4_config_get_method (s_ip4); - g_assert (value); - if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) + /* Temporarily create fake IP4 setting if missing; method set to DHCP above */ + if (!s_ip4) { + s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); + fake_ip4 = TRUE; + } + + if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) svSetValue (ifcfg, "BOOTPROTO", "dhcp", FALSE); - else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) + else if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_MANUAL)) svSetValue (ifcfg, "BOOTPROTO", "none", FALSE); - else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL)) + else if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_LINK_LOCAL)) svSetValue (ifcfg, "BOOTPROTO", "autoip", FALSE); - else if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) + else if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_SHARED)) svSetValue (ifcfg, "BOOTPROTO", "shared", FALSE); num = nm_setting_ip4_config_get_num_addresses (s_ip4); @@ -1156,7 +1161,7 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) svSetValue (ifcfg, "PEERROUTES", NULL, FALSE); svSetValue (ifcfg, "DHCP_HOSTNAME", NULL, FALSE); svSetValue (ifcfg, "DHCP_CLIENT_ID", NULL, FALSE); - if (!strcmp (value, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) { + if (!strcmp (method, NM_SETTING_IP4_CONFIG_METHOD_AUTO)) { svSetValue (ifcfg, "PEERDNS", nm_setting_ip4_config_get_ignore_auto_dns (s_ip4) ? "no" : "yes", FALSE); @@ -1264,6 +1269,9 @@ write_ip4_setting (NMConnection *connection, shvarFile *ifcfg, GError **error) success = TRUE; out: + if (fake_ip4) + g_object_unref (s_ip4); + return success; } diff --git a/system-settings/plugins/ifnet/net_utils.c b/system-settings/plugins/ifnet/net_utils.c index 8f1b81b0b..8a541979d 100644 --- a/system-settings/plugins/ifnet/net_utils.c +++ b/system-settings/plugins/ifnet/net_utils.c @@ -19,6 +19,7 @@ * Copyright (C) 1999-2010 Gentoo Foundation, Inc. */ +#include #include #include #include