-diff -urN NetworkManager/ChangeLog NetworkManager-SVN/ChangeLog
---- NetworkManager/ChangeLog 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/ChangeLog 2007-09-08 00:07:08.000000000 +0200
-@@ -1,3 +1,104 @@
+diff -urN NetworkManager-0.6.5/ChangeLog NetworkManager-SVNr3284/ChangeLog
+--- NetworkManager-0.6.5/ChangeLog 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/ChangeLog 2008-02-04 16:01:02.000000000 +0100
+@@ -1,3 +1,337 @@
++2008-01-30 Tambet Ingo <tambet@ximian.com>
++
++ * src/named-manager/nm-named-manager.c (rewrite_resolv_conf): Add some
++ information on what produced the content (process name and pid).
++
++2008-01-30 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-3-ethernet.c
++ - (real_update_link): factor common link checking code out into
++ poll_link_state()
++ - (real_deactivate_quickly): schedule link state change in an idle
++ handler rather than doing it immediately to prevent deadlocks
++
++2008-01-30 Tambet Ingo <tambet@ximian.com>
++
++ Implement 802.1x wired authentication.
++
++2008-01-30 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-11-wireless.c
++ - (set_inactive_scan_timeout): be sure to clear the source since the
++ timeout doesn't always get rescheduled
++
++2008-01-29 Tambet Ingo <tambet@gmail.com>
++
++ * src/vpn-manager/nm-dbus-vpn.c (nm_dbus_vpn_connections_update_cb): Don't
++ try to merge the VPN connections, just add everything.
++ (nm_dbus_vpn_connections_update_from_nmi): Remove the existing VPN connections
++ when a new instance of NMI service appears.
++
++ * src/vpn-manager/nm-vpn-manager.c (nm_vpn_manager_vpn_connection_list_copy):
++ Remove.
++ (nm_vpn_manager_clear_connections): Implement.
++
++2008-01-29 Tambet Ingo <tambet@gmail.com>
++
++ * src/backends/NetworkManagerSuSE.c (nm_system_device_get_system_config):
++ Fix the issue where NM doesn't honor YaST static IP settings.
++ (bugzilla.novell.com #271757).
++
++2008-01-23 Dan Williams <dcbw@redhat.com>
++
++ * libnm-glib/libnm_glib.c
++ - (libnm_glib_init): make thread joinable
++ - (libnm_glib_ctx_free): join thread on exit to clean up memory
++
++2008-01-23 Dan Williams <dcbw@redhat.com>
++
++ * test/libnm_glib_test.c
++ - (signal_handler, setup_signals): trap SIGINT and SIGTERM
++ - (main): set up signal handlers; call libnm_glib_shutdown
++
++2008-01-23 Dan Williams <dcbw@redhat.com>
++
++ Fix gnome.org #511323
++
++ * src/NetworkManagerAPList.c
++ - (nm_ap_list_merge_scanned_ap): if the AP being merged is hiding its
++ SSID, but there's an AP in the device's list with the same BSSID
++ that is not hidden, only update the strength and last-seen
++ attributes of the devlist AP and keep the existing SSID.
++
++2008-01-23 Dan Williams <dcbw@redhat.com>
++
++ Fix up the scan algorithm to help gnome.org #498887.
++
++ * src/nm-device-802-11-wireless.c
++ src/nm-device-802-11-wireless.h
++ - (nm_device_802_11_wireless_set_scan_interval): make static, and
++ only change a specific device's scan interval. If the scan interval
++ is now ACTIVE, schedule a scan at the earliest possible opportunity
++ as long as the last scan was at least 20 seconds ago
++ - (real_init, real_deactivate,
++ - (real_start): use schedule_scan() instead of rolling the scan
++ scheduling code manually
++ - (set_scan_interval_cb -> set_inactive_scan_interval_cb): call
++ nm_device_802_11_wireless_ui_activated() instead of
++ nm_device_802_11_wireless_set_scan_interval() because the change is
++ really global to all wireless devices
++ - (set_inactive_scan_timeout): new function; reset the INVACTIVE scan
++ interval timeout
++ - (nm_device_802_11_wireless_ui_activated): reset the scan interval
++ for all wireless devices
++ - (request_and_convert_scan_results): don't set last_scan here
++ - (scan_results_timeout): set last_scan here instead, and after the
++ first successful scan, set the scan interval from INIT -> ACTIVE
++ - (nm_device_802_11_wireless_scan): cleanups
++ - (schedule_scan): take a new argument so that callers can specify the
++ scan interval if they desire
++
++ * src/NetworkManagerDbus.c
++ - (nm_dbus_signal_filter): call nm_device_802_11_wireless_ui_activated()
++ instead of nm_device_802_11_wireless_set_scan_interval()
++
++2008-01-16 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-11-wireless.c
++ - (real_act_stage4_ip_config_timeout): clean up the supplicant to ensure
++ that the connection attempt starts fresh. Otherwise, when the key
++ comes back, NM pukes and fails the new attempt because the
++ supplicant can't terminate and start up again quickly enough
++
++2008-01-16 Tambet Ingo <tambet@gmail.com>
++
++ Shuffle the code a bit in preparation for wired 802.1X authentication.
++
++ * src/nm-device-802-11-wireless.c: Remove the supplicant driving code and use
++ NMSuppicant instead.
++
++ * src/nm-supplicant.[ch]: New files. The wpa_supplicant driving code is moved
++ here from nm-device-802-11-wireless.c and refactored a bit so it can be shared
++ by wired cards as well.
++
++2008-01-10 Dan Williams <dcbw@redhat.com>
++
++ Fix gnome.org #464215. Requires the kernel patch titled
++ "Introduce WEXT scan capabilities" but will handle the patch not being
++ present, you'll just continue to have problems with hidden SSIDs when
++ using mac80211-based drivers.
++
++ * src/nm-device-802-11-wireless.c
++ - (real_init): check whether or not the driver supports SSID scans
++ - (supplicant_send_network_config): if the driver supports SSID scans,
++ and the AP is hidden, use ap_scan=1 instead of ap_scan=2
++
++2008-01-10 Dan Williams <dcbw@redhat.com>
++
++ * src/NetworkManager.c
++ - (nm_killswitch_getpower_reply_cb): ensure DBusErrors are initialized
++ before using them
++
++2008-01-09 Dan Williams <dcbw@redhat.com>
++
++ * src/NetworkManager.c
++ - (nm_killswitch_getpower_reply_cb): handle different HAL versions
++ better by matching the variable type with the D-Bus argument type
++
++2008-01-09 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-ap-security-wpa-eap.c
++ - (real_write_supplicant_config): send the 'fragment_size' option (but
++ don't fail if it's not supported)
++
++2008-01-06 Dan Williams <dcbw@redhat.com>
++
++ * src/dhcp-manager/nm-dhcp-manager.c
++ - (nm_dhcp_manager_get_ip4_config): handle DHCP-provided MTU
++ (gnome.org #332953)
++
++2008-01-06 Dan Williams <dcbw@redhat.com>
++
++ Fixes gnome.org #466954
++
++ * src/nm-device-802-11-wireless.c
++ - (find_supported_frequency): new function; find the first frequency the
++ card appears to support from a given list
++ - (supplicant_send_network_config): explicitly send a frequency the
++ Ad-Hoc config should use, some cards require it. If the version
++ of wpa_supplicant being used does not support the 'frequency' option,
++ NetworkManager will ignore the error and proceed.
++
++2008-01-04 Dan Williams <dcbw@redhat.com>
++
++ * src/named-manager/nm-named-manager.c
++ - (rewrite_resolv_conf, add_ip4_config_to_named): use primary IP4Config's
++ nameservers if the secondary config doesn't have any
++ (gnome.org #346833)
++
++2008-01-04 Dan Williams <dcbw@redhat.com>
++
++ * configure.in
++ - Bump libnl requirement to 1.0-pre8
++
++ * src/NetworkManagerSystem.c
++ - (new_nl_handle, destroy_nl_handle): port to libnl-1.0-pre8
++ - (iface_to_rtnl_index, iface_to_rtnl_link,
++ nm_system_get_rtnl_index_from_iface,
++ nm_system_get_iface_from_rtnl_index,
++ nm_system_device_set_from_ip4_config,
++ nm_system_vpn_device_set_from_ip4_config,
++ nm_system_device_set_up_down_with_iface,
++ nm_system_set_mtu): update for libnl-1.0-pre8
++
++ * src/nm-netlink-monitor.c
++ - (nm_netlink_monitor_open_connection,
++ nm_netlink_monitor_request_status): don't use netlink pids that
++ conflict with libnl
++
++2007-12-14 Dan Williams <dcbw@redhat.com>
++
++ * src/vpn-properties/nm-vpn-properties.c
++ - (init_app): hook up a double-click handler; select first item in the
++ list if there is one (gnome.org #334883)
++
++2007-12-09 Dan Williams <dcbw@redhat.com>
++
++ * src/NetworkManager.c
++ - (nm_killswitch_getpower_reply_cb): don't repeat errors too often
++ (rh #246106)
++
++2007-12-07 Dan Williams <dcbw@redhat.com>
++
++ * src/NetworkManagerSystem.c
++ - (new_nl_handle): ensure that the same netlink pid is never chosen
++ twice (gnome.org #491047)
++
++2007-12-07 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-11-wireless.c
++ - (nm_device_802_11_wireless_set_essid): don't lock the SSID in the
++ driver when setting a NULL ESSID (gnome.org #499565)
++
++2007-12-07 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-11-wireless.c
++ - Wrap #include of linux/mii.h to fix redefined structures due to
++ incorrect kernel headers (gnome.org #350061)
++
++2007-12-02 Dan Williams <dcbw@redhat.com>
++
++ * src/NetworkManager.c
++ - (nm_data_free): clean up dbus connection on exit
++
++2007-12-02 Dan Williams <dcbw@redhat.com>
++
++ * src/nm-device-802-11-wireless.c
++ - (nm_device_802_11_wireless_get_mode): backport fix from trunk/r3015
++ for getting mode
++
++2007-10-28 Priit Laes <plaes@svn.gnome.org>
++
++ * configure.in: Added "et" (Estonian) to ALL_LINGUAS.
++
+2007-08-30 Dan Williams <dcbw@redhat.com>
+
+ * libnm-util/sha1.c
2007-04-18 Tambet Ingo <tambet@ximian.com>
* src/nm-dbus-nmi.c (nm_dbus_get_user_key_for_network_cb): Update the security
-diff -urN NetworkManager/libnm-util/sha1.c NetworkManager-SVN/libnm-util/sha1.c
---- NetworkManager/libnm-util/sha1.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/libnm-util/sha1.c 2007-09-08 00:07:00.000000000 +0200
-@@ -12,6 +12,10 @@
- * See README and COPYING for more details.
- */
+diff -urN NetworkManager-0.6.5/configure.in NetworkManager-SVNr3284/configure.in
+--- NetworkManager-0.6.5/configure.in 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/configure.in 2008-02-04 16:01:02.000000000 +0100
+@@ -46,7 +46,7 @@
+ GETTEXT_PACKAGE=NetworkManager
+ AC_SUBST(GETTEXT_PACKAGE)
+ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])
+-ALL_LINGUAS="ar be@latin bg bs ca cs da de dz el en_CA en_GB es fi fr gl gu hr hu it ja ka ko lt pl mk nb ne nl pa pt_BR rw sk sq sr@Latn sr sv uk vi wa zh_CN zh_TW"
++ALL_LINGUAS="ar be@latin bg bs ca cs da de dz el en_CA en_GB es et fi fr gl gu hr hu it ja ka ko lt pl mk nb ne nl pa pt_BR rw sk sq sr@Latn sr sv uk vi wa zh_CN zh_TW"
+ AC_PROG_INTLTOOL([0.27.2])
+ AM_GLIB_GNU_GETTEXT
-+#ifdef HAVE_CONFIG_H
-+#include <config.h>
-+#endif
+@@ -154,7 +154,7 @@
+ PKG_CHECK_MODULES(GNOME_KEYRING, gnome-keyring-1)
+ fi
+
+-PKG_CHECK_MODULES(LIBNL, libnl-1)
++PKG_CHECK_MODULES(LIBNL, libnl-1 >= 1.0-pre8)
+
+ AC_ARG_WITH(gcrypt, AC_HELP_STRING([--with-gcrypt], [Use gcrypt library]), ac_gcrypt=$withval, ac_gcrypt=auto)
+ if test x"$ac_gcrypt" != xno; then
+@@ -341,8 +341,8 @@
+ initscript/Arch/networkmanager
+ initscript/Arch/networkmanager-dispatcher
+ man/Makefile
+-man/NetworkManager.1
+-man/NetworkManagerDispatcher.1
++man/NetworkManager.8
++man/NetworkManagerDispatcher.8
+ man/nm-tool.1
+ po/Makefile.in
+ NetworkManager.pc
+diff -urN NetworkManager-0.6.5/gnome/libnm_glib/libnm_glib.c NetworkManager-SVNr3284/gnome/libnm_glib/libnm_glib.c
+--- NetworkManager-0.6.5/gnome/libnm_glib/libnm_glib.c 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/gnome/libnm_glib/libnm_glib.c 2008-02-04 16:00:46.000000000 +0100
+@@ -40,8 +40,10 @@
+ DBusConnection * dbus_con;
+ guint dbus_watcher;
+ guint dbus_watch_interval;
+
- #include <stdlib.h>
- #include <string.h>
+ gboolean thread_done;
+ gboolean thread_inited;
++ GThread * thread;
-diff -urN NetworkManager/src/NetworkManager.c NetworkManager-SVN/src/NetworkManager.c
---- NetworkManager/src/NetworkManager.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManager.c 2007-09-08 00:06:44.000000000 +0200
-@@ -67,6 +67,7 @@
+ GSList * callbacks;
+ GMutex * callbacks_lock;
+@@ -458,6 +460,9 @@
+ g_slist_foreach (ctx->callbacks, (GFunc)g_free, NULL);
+ g_slist_free (ctx->callbacks);
- static gboolean sigterm_pipe_handler (GIOChannel *src, GIOCondition condition, gpointer data);
- static void nm_data_free (NMData *data);
-+static gboolean nm_poll_killswitches(gpointer user_data);
++ if (ctx->thread)
++ g_thread_join (ctx->thread);
++
+ memset (ctx, 0, sizeof (libnm_glib_ctx));
+ memset (&(ctx->check), 0xDD, sizeof (ctx->check));
+ g_free (ctx);
+@@ -488,7 +493,6 @@
+ libnm_glib_ctx *
+ libnm_glib_init (void)
+ {
+- GError *error = NULL;
+ libnm_glib_ctx *ctx = NULL;
- /*
- * nm_get_device_interface_from_hal
-@@ -274,6 +275,183 @@
- }
+ g_type_init ();
+@@ -496,15 +500,12 @@
+ g_thread_init (NULL);
+ dbus_g_thread_init ();
+- if (!(ctx = libnm_glib_ctx_new()))
++ if (!(ctx = libnm_glib_ctx_new ()))
+ return NULL;
-+static void handle_killswitch_pcall_done (NMData *data, DBusPendingCall * pcall)
+- if (!g_thread_create (libnm_glib_dbus_worker, ctx, FALSE, &error))
+- {
+- if (error)
+- g_error_free (error);
++ ctx->thread = g_thread_create (libnm_glib_dbus_worker, ctx, TRUE, NULL);
++ if (!ctx->thread)
+ goto error;
+- }
+
+ /* Wait until initialization of the thread */
+ while (!ctx->thread_inited)
+diff -urN NetworkManager-0.6.5/gnome/vpn-properties/Makefile.am NetworkManager-SVNr3284/gnome/vpn-properties/Makefile.am
+--- NetworkManager-0.6.5/gnome/vpn-properties/Makefile.am 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/gnome/vpn-properties/Makefile.am 2008-02-04 16:00:45.000000000 +0100
+@@ -26,8 +26,7 @@
+ -DGLADEDIR=\""$(gladedir)"\" \
+ -DG_DISABLE_DEPRECATED \
+ -DGDK_DISABLE_DEPRECATED \
+- -DGNOME_DISABLE_DEPRECATED \
+- -DGNOMELOCALEDIR=\"$(datadir)/locale\" \
++ -DGNOMELOCALEDIR=\"$(datadir)/locale\" \
+ -DVERSION=\"$(VERSION)\" \
+ $(NULL)
+
+diff -urN NetworkManager-0.6.5/gnome/vpn-properties/nm-vpn-properties.c NetworkManager-SVNr3284/gnome/vpn-properties/nm-vpn-properties.c
+--- NetworkManager-0.6.5/gnome/vpn-properties/nm-vpn-properties.c 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/gnome/vpn-properties/nm-vpn-properties.c 2008-02-04 16:00:45.000000000 +0100
+@@ -1,5 +1,5 @@
+ /***************************************************************************
+- * CVSID: $Id$
++ * CVSID: $Id$
+ *
+ * nm-vpn-properties.c : GNOME UI dialogs for manipulating VPN connections
+ *
+@@ -868,6 +868,15 @@
+ update_edit_del_sensitivity ();
+ }
+
++static void
++vpn_list_row_activated_cb (GtkTreeView *treeview,
++ GtkTreePath *path,
++ GtkTreeViewColumn *column,
++ gpointer user_data)
+{
-+ GSource * source;
-+ gboolean now_enabled = FALSE;
-+ gboolean now_disabled = FALSE;
++ edit_cb (NULL, NULL);
++}
+
-+ data->ks_pcall_list = g_slist_remove (data->ks_pcall_list, pcall);
-+ if (g_slist_length (data->ks_pcall_list) > 0)
-+ return; /* not done with all killswitches yet */
+ /* TODO: remove these once we get the GModule thing going */
+ //extern NetworkManagerVpnUI* vpn_ui_factory_vpnc (void);
+ extern NetworkManagerVpnUI* vpn_ui_factory_dummy (void);
+@@ -942,6 +951,7 @@
+ GtkHBox *vpn_type_hbox1;
+ GtkWidget *toplevel;
+ GDir *dir;
++ GtkTreeIter tree_iter;
+
+ if (!vpn_get_clipboard ())
+ return FALSE;
+@@ -1005,13 +1015,13 @@
+ vpn_type_details = GTK_VBOX (glade_xml_get_widget (xml, "vpn-connection-druid-details-box"));
+
+ w = glade_xml_get_widget (xml, "add");
+- gtk_signal_connect (GTK_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (add_cb), NULL);
++ g_signal_connect (G_OBJECT (w), "clicked", GTK_SIGNAL_FUNC (add_cb), NULL);
+ vpn_edit = glade_xml_get_widget (xml, "edit");
+- gtk_signal_connect (GTK_OBJECT (vpn_edit), "clicked", GTK_SIGNAL_FUNC (edit_cb), NULL);
++ g_signal_connect (G_OBJECT (vpn_edit), "clicked", GTK_SIGNAL_FUNC (edit_cb), NULL);
+ vpn_export = glade_xml_get_widget (xml, "export");
+- gtk_signal_connect (GTK_OBJECT (vpn_export), "clicked", GTK_SIGNAL_FUNC (export_cb), NULL);
++ g_signal_connect (G_OBJECT (vpn_export), "clicked", GTK_SIGNAL_FUNC (export_cb), NULL);
+ vpn_delete = glade_xml_get_widget (xml, "delete");
+- gtk_signal_connect (GTK_OBJECT (vpn_delete), "clicked", GTK_SIGNAL_FUNC (delete_cb), NULL);
++ g_signal_connect (G_OBJECT (vpn_delete), "clicked", GTK_SIGNAL_FUNC (delete_cb), NULL);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (response_cb), NULL);
+ g_signal_connect (dialog, "delete_event",
+@@ -1029,9 +1039,12 @@
+ VPNCONN_NAME_COLUMN,
+ GTK_SORT_ASCENDING);
+
+- gtk_signal_connect_after (GTK_OBJECT (vpn_conn_view), "cursor-changed",
++ g_signal_connect_after (G_OBJECT (vpn_conn_view), "cursor-changed",
+ GTK_SIGNAL_FUNC (vpn_list_cursor_changed_cb), NULL);
+
++ g_signal_connect (G_OBJECT (vpn_conn_view), "row-activated",
++ GTK_SIGNAL_FUNC (vpn_list_row_activated_cb), NULL);
+
-+ if (data->hw_rf_enabled != data->tmp_hw_rf_enabled) {
-+ nm_info ("Wireless now %s by radio killswitch",
-+ data->tmp_hw_rf_enabled ? "enabled" : "disabled");
-+ if (data->tmp_hw_rf_enabled)
-+ now_enabled = TRUE;
-+ else
-+ now_disabled = TRUE;
+ get_all_vpn_connections ();
+
+ column = gtk_tree_view_column_new ();
+@@ -1045,6 +1058,12 @@
+ gtk_tree_view_set_model (vpn_conn_view, GTK_TREE_MODEL (vpn_conn_list));
+ gtk_tree_view_expand_all (vpn_conn_view);
+
++ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (vpn_conn_list), &tree_iter)) {
++ GtkTreeSelection *selection = gtk_tree_view_get_selection (vpn_conn_view);
+
-+ data->hw_rf_enabled = data->tmp_hw_rf_enabled;
++ gtk_tree_selection_select_iter (selection, &tree_iter);
+ }
+
-+ if (data->hw_rf_enabled == data->wireless_enabled)
-+ goto out;
-+
-+ /* Only re-enabled wireless if killswitch just changed, otherwise
-+ * ignore hardware rf enabled state.
-+ */
-+ if (now_enabled && !data->wireless_enabled) {
-+ data->wireless_enabled = TRUE;
-+ nm_policy_schedule_device_change_check (data);
-+ nm_dbus_signal_wireless_enabled (data);
-+ } else if (!data->hw_rf_enabled && data->wireless_enabled) {
-+ GSList * elt;
-+
-+ /* Deactivate all wireless devices and force them down so they
-+ * turn off their radios.
-+ */
-+ nm_lock_mutex (data->dev_list_mutex, __FUNCTION__);
-+ for (elt = data->dev_list; elt; elt = g_slist_next (elt)) {
-+ NMDevice * dev = (NMDevice *) elt->data;
-+ if (nm_device_is_802_11_wireless (dev)) {
-+ nm_device_deactivate (dev);
-+ nm_device_bring_down (dev);
-+ }
-+ }
-+ nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
+ gtk_widget_show_all (dialog);
+
+ /* fill in possibly choices in the druid when adding a connection */
+@@ -1059,20 +1078,20 @@
+
+ /* Druid */
+ druid = GNOME_DRUID (glade_xml_get_widget (xml, "vpn-create-connection-druid"));
+- gtk_signal_connect (GTK_OBJECT (druid), "cancel", GTK_SIGNAL_FUNC (vpn_druid_cancel), NULL);
++ g_signal_connect (GTK_OBJECT (druid), "cancel", GTK_SIGNAL_FUNC (vpn_druid_cancel), NULL);
+ druid_confirm_page = GNOME_DRUID_PAGE_EDGE (glade_xml_get_widget (xml, "vpn-druid-vpn-confirm-page"));
+ /* use connect_after, otherwise gnome_druid_set_buttons_sensitive() won't work in prepare handlers */
+ w = glade_xml_get_widget (xml, "vpn-druid-vpn-type-page");
+- gtk_signal_connect_after (GTK_OBJECT (w), "next", GTK_SIGNAL_FUNC (vpn_druid_vpn_type_page_next), NULL);
++ g_signal_connect_after (G_OBJECT (w), "next", GTK_SIGNAL_FUNC (vpn_druid_vpn_type_page_next), NULL);
+ w = glade_xml_get_widget (xml, "vpn-druid-vpn-details-page");
+- gtk_signal_connect_after (GTK_OBJECT (w), "prepare", GTK_SIGNAL_FUNC (vpn_druid_vpn_details_page_prepare), NULL);
+- gtk_signal_connect_after (GTK_OBJECT (w), "next", GTK_SIGNAL_FUNC (vpn_druid_vpn_details_page_next), NULL);
++ g_signal_connect_after (G_OBJECT (w), "prepare", GTK_SIGNAL_FUNC (vpn_druid_vpn_details_page_prepare), NULL);
++ g_signal_connect_after (G_OBJECT (w), "next", GTK_SIGNAL_FUNC (vpn_druid_vpn_details_page_next), NULL);
+ w = glade_xml_get_widget (xml, "vpn-druid-vpn-confirm-page");
+- gtk_signal_connect_after (GTK_OBJECT (w), "prepare", GTK_SIGNAL_FUNC (vpn_druid_vpn_confirm_page_prepare), NULL);
+- gtk_signal_connect_after (GTK_OBJECT (w), "finish", GTK_SIGNAL_FUNC (vpn_druid_vpn_confirm_page_finish), NULL);
++ g_signal_connect_after (G_OBJECT (w), "prepare", GTK_SIGNAL_FUNC (vpn_druid_vpn_confirm_page_prepare), NULL);
++ g_signal_connect_after (G_OBJECT (w), "finish", GTK_SIGNAL_FUNC (vpn_druid_vpn_confirm_page_finish), NULL);
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (druid));
+- gtk_signal_connect (GTK_OBJECT (toplevel), "delete_event", GTK_SIGNAL_FUNC (vpn_window_close), NULL);
++ g_signal_connect (G_OBJECT (toplevel), "delete_event", GTK_SIGNAL_FUNC (vpn_window_close), NULL);
+
+ druid_window = GTK_WINDOW (glade_xml_get_widget (xml, "vpn-create-connection"));
+
+diff -urN NetworkManager-0.6.5/include/NetworkManager.h NetworkManager-SVNr3284/include/NetworkManager.h
+--- NetworkManager-0.6.5/include/NetworkManager.h 2007-04-18 20:13:03.000000000 +0200
++++ NetworkManager-SVNr3284/include/NetworkManager.h 2008-02-04 15:59:52.000000000 +0100
+@@ -173,7 +173,8 @@
+ NETWORK_TYPE_UNKNOWN = 0,
+ NETWORK_TYPE_ALLOWED,
+ NETWORK_TYPE_INVALID,
+- NETWORK_TYPE_DEVICE
++ NETWORK_TYPE_DEVICE,
++ NETWORK_TYPE_WIRED
+ } NMNetworkType;
+
+
+diff -urN NetworkManager-0.6.5/libnm-util/dbus-helpers.h NetworkManager-SVNr3284/libnm-util/dbus-helpers.h
+--- NetworkManager-0.6.5/libnm-util/dbus-helpers.h 2007-04-18 20:13:09.000000000 +0200
++++ NetworkManager-SVNr3284/libnm-util/dbus-helpers.h 2008-02-04 16:00:48.000000000 +0100
+@@ -100,6 +100,7 @@
+ char **client_cert_file,
+ char **ca_cert_file,
+ int *wpa_version);
+
-+ data->wireless_enabled = FALSE;
-+ nm_policy_schedule_device_change_check (data);
-+ nm_dbus_signal_wireless_enabled (data);
-+ }
+ dbus_bool_t nmu_security_serialize_leap (DBusMessageIter *iter,
+ const char *username,
+ const char *passwd,
+diff -urN NetworkManager-0.6.5/libnm-util/sha1.c NetworkManager-SVNr3284/libnm-util/sha1.c
+--- NetworkManager-0.6.5/libnm-util/sha1.c 2007-04-18 20:13:09.000000000 +0200
++++ NetworkManager-SVNr3284/libnm-util/sha1.c 2008-02-04 16:00:48.000000000 +0100
+@@ -12,6 +12,10 @@
+ * See README and COPYING for more details.
+ */
+
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
+
-+out:
-+ /* Schedule another killswitch poll */
-+ source = g_timeout_source_new (6000);
-+ g_source_set_callback (source, nm_poll_killswitches, data, NULL);
-+ g_source_attach (source, data->main_context);
-+ g_source_unref (source);
-+}
+ #include <stdlib.h>
+ #include <string.h>
+
+diff -urN NetworkManager-0.6.5/man/Makefile.am NetworkManager-SVNr3284/man/Makefile.am
+--- NetworkManager-0.6.5/man/Makefile.am 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/man/Makefile.am 2008-02-04 16:00:46.000000000 +0100
+@@ -1,10 +1,10 @@
+ man_MANS = \
+- NetworkManager.1 \
+- NetworkManagerDispatcher.1 \
++ NetworkManager.8 \
++ NetworkManagerDispatcher.8 \
+ nm-tool.1
+
+ EXTRA_DIST = \
+ $(man_MANS) \
+- NetworkManager.1.in \
+- NetworkManagerDispatcher.1.in \
++ NetworkManager.8.in \
++ NetworkManagerDispatcher.8.in \
+ nm-tool.1.in
+diff -urN NetworkManager-0.6.5/man/NetworkManager.1 NetworkManager-SVNr3284/man/NetworkManager.1
+--- NetworkManager-0.6.5/man/NetworkManager.1 2007-04-18 22:28:16.000000000 +0200
++++ NetworkManager-SVNr3284/man/NetworkManager.1 1970-01-01 01:00:00.000000000 +0100
+@@ -1,27 +0,0 @@
+-.\" NetworkManager(1) manual page
+-.\"
+-.\" Copyright (C) 2005 Robert Love
+-.\"
+-.TH NETWORKMANAGER "1"
+-.SH NAME
+-NetworkManager \- network management daemon
+-.SH SYNOPSIS
+-.B NetworkManager [\-\-no-daemon] [\-\-enable-test-devices]
+-.SH DESCRIPTION
+-The \fINetworkManager\fP daemon attempts to keep an active network connection
+-available at all times. The point of NetworkManager is to make networking
+-configuration and setup as painless and automatic as possible. If using DHCP,
+-NetworkManager is intended to replace default routes, obtain IP addresses from
+-a DHCP server, and change nameservers whenever it sees fit, with the aim of
+-making networking Just Work.
+-.SH OPTIONS
+-The following options are supported:
+-.TP
+-.I "--no-daemon"
+-Do not daemonize. This is useful for debugging.
+-.TP
+-.I "--enable-test-devices"
+-Enable support for virtual test devices. These are useful for debugging.
+-.SH SEE ALSO
+-.BR NetworkManagerDispatcher (1),
+-.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/NetworkManager.1.in NetworkManager-SVNr3284/man/NetworkManager.1.in
+--- NetworkManager-0.6.5/man/NetworkManager.1.in 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/man/NetworkManager.1.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1,27 +0,0 @@
+-.\" NetworkManager(1) manual page
+-.\"
+-.\" Copyright (C) 2005 Robert Love
+-.\"
+-.TH NETWORKMANAGER "1"
+-.SH NAME
+-NetworkManager \- network management daemon
+-.SH SYNOPSIS
+-.B NetworkManager [\-\-no-daemon] [\-\-enable-test-devices]
+-.SH DESCRIPTION
+-The \fINetworkManager\fP daemon attempts to keep an active network connection
+-available at all times. The point of NetworkManager is to make networking
+-configuration and setup as painless and automatic as possible. If using DHCP,
+-NetworkManager is intended to replace default routes, obtain IP addresses from
+-a DHCP server, and change nameservers whenever it sees fit, with the aim of
+-making networking Just Work.
+-.SH OPTIONS
+-The following options are supported:
+-.TP
+-.I "--no-daemon"
+-Do not daemonize. This is useful for debugging.
+-.TP
+-.I "--enable-test-devices"
+-Enable support for virtual test devices. These are useful for debugging.
+-.SH SEE ALSO
+-.BR NetworkManagerDispatcher (1),
+-.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/NetworkManager.8.in NetworkManager-SVNr3284/man/NetworkManager.8.in
+--- NetworkManager-0.6.5/man/NetworkManager.8.in 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/man/NetworkManager.8.in 2008-02-04 16:00:46.000000000 +0100
+@@ -0,0 +1,27 @@
++.\" NetworkManager(8) manual page
++.\"
++.\" Copyright (C) 2005 Robert Love
++.\"
++.TH NETWORKMANAGER "8"
++.SH NAME
++NetworkManager \- network management daemon
++.SH SYNOPSIS
++.B NetworkManager [\-\-no-daemon] [\-\-enable-test-devices]
++.SH DESCRIPTION
++The \fINetworkManager\fP daemon attempts to keep an active network connection
++available at all times. The point of NetworkManager is to make networking
++configuration and setup as painless and automatic as possible. If using DHCP,
++NetworkManager is intended to replace default routes, obtain IP addresses from
++a DHCP server, and change nameservers whenever it sees fit, with the aim of
++making networking Just Work.
++.SH OPTIONS
++The following options are supported:
++.TP
++.I "--no-daemon"
++Do not daemonize. This is useful for debugging.
++.TP
++.I "--enable-test-devices"
++Enable support for virtual test devices. These are useful for debugging.
++.SH SEE ALSO
++.BR NetworkManagerDispatcher (8),
++.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/NetworkManagerDispatcher.1 NetworkManager-SVNr3284/man/NetworkManagerDispatcher.1
+--- NetworkManager-0.6.5/man/NetworkManagerDispatcher.1 2007-04-18 22:28:16.000000000 +0200
++++ NetworkManager-SVNr3284/man/NetworkManagerDispatcher.1 1970-01-01 01:00:00.000000000 +0100
+@@ -1,29 +0,0 @@
+-.\" NetworkManager(1) manual page
+-.\"
+-.\" Copyright (C) 2005 Robert Love
+-.\"
+-.TH NETWORKMANAGERDISPATCHER "1"
+-.SH NAME
+-NetworkManagerDispatcher \- daemon that runs commands in response to off/online
+-.SH SYNOPSIS
+-.B NetworkManagerDispatcher [\-\-no-daemon]
+-.SH DESCRIPTION
+-The \fINetworkManagerDispatcher\fP daemon runs commands in the
+-.I ${prefix}/etc/NetworkManager/dispatcher.d
+-directory in response to interfaces coming up and down. The scripts are run
+-alphabetically. The first parameter is the network interface name. The second
+-parameter is
+-.I up
+-if the interface is now up and
+-.I down
+-if the interface is now down.
+-.SH OPTIONS
+-The following options are supported:
+-.TP
+-.I "--no-daemon"
+-Do not daemonize. This is useful for debugging.
+-.SH FILES
+-${prefix}/etc/NetworkManager/dispatcher.d
+-.SH SEE ALSO
+-.BR NetworkManager (1),
+-.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/NetworkManagerDispatcher.1.in NetworkManager-SVNr3284/man/NetworkManagerDispatcher.1.in
+--- NetworkManager-0.6.5/man/NetworkManagerDispatcher.1.in 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/man/NetworkManagerDispatcher.1.in 1970-01-01 01:00:00.000000000 +0100
+@@ -1,29 +0,0 @@
+-.\" NetworkManager(1) manual page
+-.\"
+-.\" Copyright (C) 2005 Robert Love
+-.\"
+-.TH NETWORKMANAGERDISPATCHER "1"
+-.SH NAME
+-NetworkManagerDispatcher \- daemon that runs commands in response to off/online
+-.SH SYNOPSIS
+-.B NetworkManagerDispatcher [\-\-no-daemon]
+-.SH DESCRIPTION
+-The \fINetworkManagerDispatcher\fP daemon runs commands in the
+-.I @sysconfdir@/NetworkManager/dispatcher.d
+-directory in response to interfaces coming up and down. The scripts are run
+-alphabetically. The first parameter is the network interface name. The second
+-parameter is
+-.I up
+-if the interface is now up and
+-.I down
+-if the interface is now down.
+-.SH OPTIONS
+-The following options are supported:
+-.TP
+-.I "--no-daemon"
+-Do not daemonize. This is useful for debugging.
+-.SH FILES
+-@sysconfdir@/NetworkManager/dispatcher.d
+-.SH SEE ALSO
+-.BR NetworkManager (1),
+-.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/NetworkManagerDispatcher.8.in NetworkManager-SVNr3284/man/NetworkManagerDispatcher.8.in
+--- NetworkManager-0.6.5/man/NetworkManagerDispatcher.8.in 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/man/NetworkManagerDispatcher.8.in 2008-02-04 16:00:46.000000000 +0100
+@@ -0,0 +1,29 @@
++.\" NetworkManager(8) manual page
++.\"
++.\" Copyright (C) 2005 Robert Love
++.\"
++.TH NETWORKMANAGERDISPATCHER "8"
++.SH NAME
++NetworkManagerDispatcher \- daemon that runs commands in response to off/online
++.SH SYNOPSIS
++.B NetworkManagerDispatcher [\-\-no-daemon]
++.SH DESCRIPTION
++The \fINetworkManagerDispatcher\fP daemon runs commands in the
++.I @sysconfdir@/NetworkManager/dispatcher.d
++directory in response to interfaces coming up and down. The scripts are run
++alphabetically. The first parameter is the network interface name. The second
++parameter is
++.I up
++if the interface is now up and
++.I down
++if the interface is now down.
++.SH OPTIONS
++The following options are supported:
++.TP
++.I "--no-daemon"
++Do not daemonize. This is useful for debugging.
++.SH FILES
++@sysconfdir@/NetworkManager/dispatcher.d
++.SH SEE ALSO
++.BR NetworkManager (8),
++.BR nm-tool (1)
+diff -urN NetworkManager-0.6.5/man/nm-tool.1 NetworkManager-SVNr3284/man/nm-tool.1
+--- NetworkManager-0.6.5/man/nm-tool.1 2007-04-18 22:28:16.000000000 +0200
++++ NetworkManager-SVNr3284/man/nm-tool.1 1970-01-01 01:00:00.000000000 +0100
+@@ -1,14 +0,0 @@
+-.\" nm-tool(1) manual page
+-.\"
+-.\" Copyright (C) 2005 Robert Love
+-.\"
+-.TH NM-TOOL "1"
+-nm-tool \- utility to report NetworkManager state
+-.SH SYNOPSIS
+-.B nm-tool
+-.SH DESCRIPTION
+-The \fInm-tool\fP utility provides information about NetworkManager, device,
+-and wireless networks.
+-.SH SEE ALSO
+-.BR NetworkManager (1),
+-.BR NetworkManagerDispatcher (1)
+diff -urN NetworkManager-0.6.5/man/nm-tool.1.in NetworkManager-SVNr3284/man/nm-tool.1.in
+--- NetworkManager-0.6.5/man/nm-tool.1.in 2007-04-18 20:13:08.000000000 +0200
++++ NetworkManager-SVNr3284/man/nm-tool.1.in 2008-02-04 16:00:46.000000000 +0100
+@@ -3,6 +3,7 @@
+ .\" Copyright (C) 2005 Robert Love
+ .\"
+ .TH NM-TOOL "1"
++.SH NAME
+ nm-tool \- utility to report NetworkManager state
+ .SH SYNOPSIS
+ .B nm-tool
+@@ -10,5 +11,5 @@
+ The \fInm-tool\fP utility provides information about NetworkManager, device,
+ and wireless networks.
+ .SH SEE ALSO
+-.BR NetworkManager (1),
+-.BR NetworkManagerDispatcher (1)
++.BR NetworkManager (8),
++.BR NetworkManagerDispatcher (8)
+diff -urN NetworkManager-0.6.5/po/ChangeLog NetworkManager-SVNr3284/po/ChangeLog
+--- NetworkManager-0.6.5/po/ChangeLog 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/ChangeLog 2008-02-04 16:01:02.000000000 +0100
+@@ -1,3 +1,44 @@
++2007-11-02 Priit Laes <plaes@svn.gnome.org>
+
-+static void nm_killswitch_getpower_reply_cb (DBusPendingCall *pcall, NMData * data)
-+{
-+ DBusError err;
-+ DBusMessage * reply = NULL;
-+ guint32 status;
++ * et.po: Translation updated by Mattias Põldaru.
+
-+ g_return_if_fail (pcall != NULL);
-+ g_return_if_fail (data != NULL);
++2007-10-28 Priit Laes <plaes@svn.gnome.org>
+
-+ if (!dbus_pending_call_get_completed (pcall))
-+ goto out;
++ * et.po: Translation updated by Priit Laes.
+
-+ if (!(reply = dbus_pending_call_steal_reply (pcall)))
-+ goto out;
++2007-10-28 Priit Laes <plaes@svn.gnome.org>
+
-+ if (message_is_error (reply)) {
-+ dbus_error_init (&err);
-+ dbus_set_error_from_message (&err, reply);
-+ nm_info ("Error getting killswitch power: %s - %s", err.name, err.message);
-+ dbus_error_free (&err);
-+ goto out;
-+ }
++ * et.po: Translation updated by Mattias Põldaru.
++ * Forgot to add file :(
+
-+ if (!dbus_message_get_args (reply, &err, DBUS_TYPE_UINT32, &status, DBUS_TYPE_INVALID)) {
-+ nm_info ("Error getting killswitch power arguments: %s - %s", err.name, err.message);
-+ dbus_error_free (&err);
-+ goto out;
-+ }
++2007-09-14 Clytie Siddall <clytie@riverland.net.au>
+
-+ if (status == 0)
-+ data->tmp_hw_rf_enabled = FALSE;
++ * vi.po: Updated Vietnamese translation.
+
-+out:
-+ if (reply)
-+ dbus_message_unref (reply);
++2007-08-26 Satoru SATOH <ss@gnome.gr.jp>
+
-+ handle_killswitch_pcall_done (data, pcall);
-+ dbus_pending_call_unref (pcall);
-+}
++ * ja.po: Updated Japanese translation.
+
++2007-08-22 Jorge Gonzalez <jorgegonz@svn.gnome.org>
+
-+static gboolean nm_poll_killswitches (gpointer user_data)
-+{
-+ NMData * data = (NMData *) user_data;
-+ DBusConnection * connection = data->dbus_connection;
-+ GSList * elt;
++ * es.po: Updated Spanish translation.
+
-+ g_return_val_if_fail (data != NULL, FALSE);
++2007-08-16 Ilkka Tuohela <hile@iki.fi>
+
-+ data->tmp_hw_rf_enabled = TRUE;
++ * fi.po: Updated Finnish translation.
+
-+ for (elt = data->killswitch_list; elt; elt = g_slist_next (elt))
-+ {
-+ DBusPendingCall * pcall;
-+ DBusMessage * message;
++2007-07-03 Takeshi AIHANA <takeshi.aihana@gmail.com>
+
-+ message = dbus_message_new_method_call ("org.freedesktop.Hal",
-+ elt->data,
-+ "org.freedesktop.Hal.Device.KillSwitch",
-+ "GetPower");
-+ if (!dbus_connection_send_with_reply (connection, message, &pcall, 5000)) {
-+ nm_warning ("%s(): could not send dbus message", __func__);
-+ } else if (!pcall) {
-+ nm_warning ("%s(): could not send dbus message; pcall was NULL", __func__);
-+ } else {
-+ dbus_pending_call_set_notify (pcall,
-+ (DBusPendingCallNotifyFunction) nm_killswitch_getpower_reply_cb,
-+ data,
-+ NULL);
-+ data->ks_pcall_list = g_slist_append (data->ks_pcall_list, pcall);
-+ }
-+ dbus_message_unref (message);
-+ }
-+ return FALSE;
-+}
++ * ja.po: Fixed #Bug 453314.
+
++2007-06-04 Kjartan Maraas <kmaraas@gnome.org>
+
-+/*
-+ * nm_add_killswitch_device
-+ *
-+ * Adds a killswitch device to the list
-+ *
-+ */
-+static void nm_add_killswitch_device (NMData * data, const char * udi)
-+{
-+ char * type;
-+ GSList * elt;
++ * nb.po: Update Norwegian bokmål translation.
+
-+ type = libhal_device_get_property_string (data->hal_ctx, udi, "killswitch.type", NULL);
-+ if (!type)
-+ return;
++2007-04-23 Luca Ferretti <elle.uca@libero.it>
+
-+ if (strcmp (type, "wlan") != 0)
-+ goto out;
++ * it.po: Updated Italian translation by Francesco Marletta.
+
-+ /* see if it's already in the list */
-+ for (elt = data->killswitch_list; elt; elt = g_slist_next (elt)) {
-+ const char * list_udi = (const char *) elt->data;
-+ if (strcmp (list_udi, udi) == 0)
-+ goto out;
-+ }
-+
-+ /* Start polling switches if this is the first switch we've found */
-+ if (g_slist_length (data->killswitch_list) == 0) {
-+ GSource * source = g_idle_source_new ();
-+ g_source_set_callback (source, nm_poll_killswitches, data, NULL);
-+ g_source_attach (source, data->main_context);
-+ g_source_unref (source);
-+ }
-+
-+ data->killswitch_list = g_slist_append (data->killswitch_list, g_strdup (udi));
-+ nm_info ("Found radio killswitch %s", udi);
-+
-+out:
-+ libhal_free_string (type);
-+}
-+
- /*
- * nm_hal_device_new_capability
- *
-@@ -283,10 +461,9 @@
- NMData *data = (NMData *)libhal_ctx_get_user_data (ctx);
+ 2007-04-16 Ihar Hrachyshka <iharh@gnome.org>
- g_return_if_fail (data != NULL);
-+ g_return_if_fail (capability != NULL);
+ * be@latin.po: Added Belarusian Latin translation.
+diff -urN NetworkManager-0.6.5/po/es.po NetworkManager-SVNr3284/po/es.po
+--- NetworkManager-0.6.5/po/es.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/es.po 2008-02-04 16:01:02.000000000 +0100
+@@ -2,735 +2,30 @@
+ # 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.
++#
+ # Antonio Ognio <antonio@linux.org.pe>, 2004.
+ # Francisco Javier F. Serrador <serrador@cvs.gnome.org>, 2004, 2005.
+ # Lucas Vieites Fariña <lucas@asixinformatica.com>, 2005, 2006.
+-#
++# Jorge González <jorgegonz@svn.gnome.org>, 2007.
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: NetworkManager.HEAD\n"
++"Project-Id-Version: NetworkManager.NETWORKMANAGER_0_6_0_RELEASE.es\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
+-"PO-Revision-Date: 2006-05-16 13:58\n"
+-"Last-Translator: Novell Language <language@novell.com>\n"
+-"Language-Team: Novell Language <language@novell.com>\n"
++"POT-Creation-Date: 2007-03-03 03:27+0000\n"
++"PO-Revision-Date: 2007-08-22 14:57+0200\n"
++"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
++"Language-Team: Spanish <traductores@es.gnome.org>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"X-Generator: KBabel 1.11\n"
++"X-Generator: KBabel 1.11.4\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-- /*nm_debug ("nm_hal_device_new_capability() called with udi = %s, capability = %s", udi, capability );*/
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "Frase de paso para la red inalámbrica %s"
-
-- if (capability && ((strcmp (capability, "net.80203") == 0) || (strcmp (capability, "net.80211") == 0)))
-+ if (((strcmp (capability, "net.80203") == 0) || (strcmp (capability, "net.80211") == 0)))
- {
- char *iface;
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "La conexión a la red inalámbrica «%s» ha fallado."
+-
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "La conexión a la red cableada ha fallado."
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "Ha ocurrido un error al mostrar información de conexión:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr ""
+-"No se han podido encontrar algunos recursos necesarios (el archivo glade)."
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "No hay conexiones activas."
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "Red Ethernet cableada (%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "Red Ethernet inalámbrica (%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "Miniaplicación NetworkManager"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Copyright © 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr ""
+-"Miniaplicación del área de notificación para administrar sus dispositivos de "
+-"red y conexiones."
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr "Lucas Vieites <lucas@asixinformatica.com>, 2005"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "Error de acceso de VPN"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr "No se pudo iniciar la conexión VPN «%s» debido a un error de acceso."
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "Error de inicio de VPN"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"No se pudo iniciar la conexión VPN «%s» debido a un error al iniciar el "
+-"programa VPN."
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "Error de conexión VPN"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr ""
+-"No se puede iniciar la conexión VPN «%s» debido a un error de conexión."
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "Error de configuración VPN"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "La conexión VPN «%s» no estaba configurada correctamente."
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"No se pudo iniciar la conexión VPN «%s» porque el servidor VPN no ha "
+-"devuelto una configuración de red adecuada."
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "Mensaje de acceso VPN"
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"La miniaplicación NetworkManager no pudo encontrar algunos archivos de "
+-"recursos (No se encontró el archivo de glade)."
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr ""
+-"El dispositivo de red «%s (%s)» no puede inspeccionar redes inalámbricas."
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr ""
+-"El dispositivo de red \"%s (%s)\" no puede realizar detección de enlaces."
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "Preparando el dispositivo %s para la red cableada..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr "Preparando el dispositivo %s para la red inalámbrica «%s»..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "Configurando el dispositivo %s para la red cableada..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "Intentando conectar con la red inalámbrica «%s»..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "Esperando la contraseña de red para la red inalámbrica «%s»..."
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "Solicitando una dirección de red a la red cableada..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr "Solicitando una dirección de red a la red inalámbrica «%s»..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "Deteniendo la conexión a la red cableada..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "Deteniendo la conexión a la red inalámbrica «%s»..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "NetworkManager no se está ejecutando"
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "Red desactivada"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "Sin conexión de red"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "Conexión de red cableada"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Conectado con una red inalámbrica Ad-Hoc"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "Conexión de red inalámbrica a «%s» (%d%%)"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "Conexión VPN a «%s»"
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "VPN conectando a «%s»"
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "_Conectar a otra red inalámbrica..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "Crear una red inalámbrica _nueva..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "Conexiones _VPN"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "_Configurar VPN..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "_Desconectar VPN..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "Conexiones de _marcado"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "Conectar a %s..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "Desconectar de %s..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "No se ha encontrado ningún dispositivo de red"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "NetworkManager no se está ejecutando..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "Activar _red"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "Activar _inalámbrico"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "_Información de la conexión"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "A_yuda"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "A_cerca de"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"La miniaplicación NetworkManager no pudo encontrar algunos recursos "
+-"necesarios. No se puede continuar.\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "Sistema abierto"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "Clave compartida"
+-
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "Automático (Predeterminado)"
+-
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "WEP dinámico"
+-
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "Ninguno"
+-
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "ASCII WEP de 64/128 bits"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "Hexadecimal WEP de 64/128 bits"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "Frase de contraseña WEP de 128 bits"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA2 empresarial"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA empresarial"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA2 Personal"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA Personal"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "Orientación"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "La orientación del área de notificación."
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "Red cableada (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "Red _cableada"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "Red inalámbrica (%s)"
+-msgstr[1] "Redes inalámbricas (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "Red inalámbrica"
+-msgstr[1] "Redes inalámbricas"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (Unicode inválido)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"Por omisión, el nombre de la red inalámbrica se establece al nombre de su "
+-"equipo, %s, sin ninguna encriptación activada"
+-
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "Crea una red inalámbricas nueva"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr ""
+-"Introduzca el nombre y las opciones de seguridad de la red inalámbrica que "
+-"quiere crear."
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "Crear una red inalámbrica nueva"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "Red inalámbrica existente"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr ""
+-"Introduzca el nombre de la red inalámbrica con la que quiere conectarse."
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "Conectar a otra red inalámbrica"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "Error al conectar a la red inalámbrica"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"La red inalámbrica solicitada requiere capacidades de seguridad que su "
+-"hardware no proporciona."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "No se puede iniciar la conexión VPN «%s»"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"No se ha podido encontrar el diálogo de autenticación para el tipo de "
+-"conexión VPN «%s». Póngase en contacto con su administrador de sistemas."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"Ha habido un problema al iniciar el diálogo de autenticación para el tipo de "
+-"conexión VPN «%s». Póngase en contacto con su administrador de sistemas."
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Información de la conexión activa</"
+-"span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Contraseña requerida por red "
+-"inalámbrica</span>\n"
+-"\n"
+-"Se requiere una frase de paso o clave de encriptación para acceder a la red "
+-"inalámbrica «%s»."
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Funcionalidad de red reducida</span>\n"
+-"\n"
+-"%s No será completamente funcional."
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Confirmación de entrada a la red "
+-"inalámbrica</span>\n"
+-"\n"
+-"Ha escogido entrar en la red inalámbrica «%s». Si está seguro de que esta "
+-"red es segura, marque la casilla de abajo y NetworkManager no le volverá a "
+-"solicitar confirmación en los siguientes accesos."
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "Identidad anónima:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "Autenticación:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "Dirección de difusión:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "Archivo de certificado de CA:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "_Conectar"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "Archivo de certificado de cliente:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "Información de la conexión"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "Ruta predeterminada:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "Dirección de destino:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "Controlador:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "Método EAP:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "Dirección hardware:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "Dirección IP:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "Identidad:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "Interfaz:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "Tipo de clave:"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "Clave:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"Ninguna\n"
+-"Frase de contraseña WEP de 128 bits\n"
+-"Hexadecimal WEP de 64/128 bits\n"
+-"ASCII WEP de 64/128 bits\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"Sistema abierto\n"
+-"Clave compartida"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "Otras redes inalámbricas..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "Contraseña:"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "Contraseña:"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "DNS primario:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "Archivo de clave privada:"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "Contraseña de clave privada:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "DNS secundario:"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Seleccione el archivo de certificado de CA"
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "Seleccione el archivo de certificado de cliente"
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "Seleccione el archivo de clave privada"
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "Mostrar clave"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "Mostrar frase de contraseña"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "Mostrar contraseña"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "Mostrar contraseñas"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "Velocidad:"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "Máscara de subred:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "Tipo:"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "Nombre de usuario:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "Clave requerida para la red inalámbrica"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "_Adaptador inalámbrico:"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "_Siempre confiar en esta red inalámbrica"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "_No volver a recordar"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "_Entrar en la red"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "Nombre de _red:"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "_Seguridad inalámbrica:"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+ msgstr "No se puede añadir una conexión VPN"
-@@ -296,6 +473,10 @@
- g_free (iface);
- }
- }
-+ else if (strcmp (capability, "killswitch") == 0)
-+ {
-+ nm_add_killswitch_device (data, udi);
-+ }
- }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+@@ -738,11 +33,11 @@
+ "No se ha encontrado software VPN adecuado en su sistema. Póngase en contacto "
+ "con su administrador de sistemas."
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+ msgstr "No se puede importar la conexión VPN"
-@@ -340,6 +521,30 @@
- libhal_free_string_array (net_devices);
- }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+@@ -752,12 +47,12 @@
+ "s» para importar el archivo «%s». Póngase en contacto con su administrador "
+ "de sistemas."
-+void nm_add_initial_killswitch_devices (NMData * data)
-+{
-+ char ** udis;
-+ int num_udis, i;
-+ DBusError error;
-+
-+ g_return_if_fail (data != NULL);
-+
-+ dbus_error_init (&error);
-+ udis = libhal_find_device_by_capability (data->hal_ctx, "killswitch", &num_udis, &error);
-+ if (!udis)
-+ return;
-+
-+ if (dbus_error_is_set (&error)) {
-+ nm_warning("Could not find killswitch devices: %s", error.message);
-+ dbus_error_free (&error);
-+ return;
-+ }
-+
-+ for (i = 0; i < num_udis; i++)
-+ nm_add_killswitch_device (data, udis[i]);
-+ libhal_free_string_array (udis);
-+}
-+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+ msgstr "Ha ocurrido un error al recuperar la conexión VPN «%s»"
- /*
- * nm_state_change_signal_broadcast
-@@ -616,28 +821,39 @@
- g_return_if_fail (data != NULL);
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+@@ -766,12 +61,12 @@
+ "No se han encontrado los archivos de la IU para la conexión VPN de tipo «%"
+ "s». Póngase en contacto con su administrador de sistemas."
- if ((data->hal_ctx = nm_get_hal_ctx (data)))
-+ {
-+ nm_add_initial_killswitch_devices (data);
- nm_add_initial_devices (data);
-+ }
-+
-+ /* If there weren't any killswitches, mark hardware RF to on */
-+ if (g_slist_length (data->killswitch_list) == 0)
-+ data->hw_rf_enabled = TRUE;
- }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+ msgstr "¿Desea eliminar la conexión VPN «%s»?"
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+@@ -781,16 +76,16 @@
+ "Se perderá toda la información de la conexión VPN «%s» y necesitará que su "
+ "administrador de sistemas le proporcione información para crear una conexión."
- void nm_hal_deinit (NMData *data)
- {
-+ DBusError error;
-+
- g_return_if_fail (data != NULL);
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+ msgstr "No se puede cargar"
-- if (data->hal_ctx)
-- {
-- DBusError error;
-+ if (!data->hal_ctx)
-+ return;
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+ msgstr "No se pueden encontrar algunos recursos necesarios (el archivo glade)."
-- dbus_error_init (&error);
-- libhal_ctx_shutdown (data->hal_ctx, &error);
-- if (dbus_error_is_set (&error))
-- {
-- nm_warning ("libhal shutdown failed - %s", error.message);
-- dbus_error_free (&error);
-- }
-- libhal_ctx_free (data->hal_ctx);
-- data->hal_ctx = NULL;
-+ g_slist_foreach (data->killswitch_list, (GFunc) g_free, NULL);
-+ g_slist_free (data->killswitch_list);
-+ data->killswitch_list = NULL;
-+
-+ dbus_error_init (&error);
-+ libhal_ctx_shutdown (data->hal_ctx, &error);
-+ if (dbus_error_is_set (&error))
-+ {
-+ nm_warning ("libhal shutdown failed - %s", error.message);
-+ dbus_error_free (&error);
- }
-+ libhal_ctx_free (data->hal_ctx);
-+ data->hal_ctx = NULL;
- }
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ msgid "Edit VPN Connection"
+ msgstr "Editar conexión VPN"
+@@ -896,105 +191,53 @@
+ msgid "WPA2 Automatic"
+ msgstr "WPA2 automática"
-diff -urN NetworkManager/src/NetworkManagerDbus.c NetworkManager-SVN/src/NetworkManagerDbus.c
---- NetworkManager/src/NetworkManagerDbus.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManagerDbus.c 2007-09-08 00:06:44.000000000 +0200
-@@ -434,6 +434,29 @@
- }
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "ninguna"
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+-msgid ""
+-"unable to create netlink socket for monitoring wired ethernet devices - %s"
++msgid "unable to create netlink socket for monitoring wired ethernet devices - %s"
+ msgstr ""
+ "no puede crear un socket netlink para monitorizar dispositivos ethernet con "
+ "cable - %s"
-+void nm_dbus_signal_wireless_enabled (NMData * data)
-+{
-+ DBusMessage * message;
-+
-+ g_return_if_fail (data != NULL);
-+ g_return_if_fail (data->dbus_connection != NULL);
-+
-+ if (!(message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, "WirelessEnabled")))
-+ {
-+ nm_warning ("%s(): Not enough memory for new dbus message!", __func__);
-+ return;
-+ }
-+
-+ dbus_message_append_args (message,
-+ DBUS_TYPE_BOOLEAN, &data->wireless_enabled,
-+ DBUS_TYPE_BOOLEAN, &data->hw_rf_enabled,
-+ DBUS_TYPE_INVALID);
-+ if (!dbus_connection_send (data->dbus_connection, message, NULL))
-+ nm_warning ("%s(): Could not emit the WirelessEnabled signal!", __func__);
-+
-+ dbus_message_unref (message);
-+}
-+
- /*
- * nm_dbus_signal_filter
- *
-diff -urN NetworkManager/src/NetworkManagerDbus.h NetworkManager-SVN/src/NetworkManagerDbus.h
---- NetworkManager/src/NetworkManagerDbus.h 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManagerDbus.h 2007-09-08 00:06:44.000000000 +0200
-@@ -68,6 +68,7 @@
-
- void nm_dbus_signal_wireless_network_change (DBusConnection *connection, NMDevice80211Wireless *dev, NMAccessPoint *ap, NMNetworkStatus status, gint strength);
- void nm_dbus_signal_device_strength_change (DBusConnection *connection, NMDevice80211Wireless *dev, gint strength);
-+void nm_dbus_signal_wireless_enabled (NMData * data);
-
- NMDevice * nm_dbus_get_device_from_escaped_object_path (NMData *data, const char *path);
-
-diff -urN NetworkManager/src/NetworkManagerMain.h NetworkManager-SVN/src/NetworkManagerMain.h
---- NetworkManager/src/NetworkManagerMain.h 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManagerMain.h 2007-09-08 00:06:44.000000000 +0200
-@@ -82,6 +82,7 @@
- GSList * dev_list;
- GMutex * dev_list_mutex;
-
-+ gboolean hw_rf_enabled;
- gboolean wireless_enabled;
- gboolean modem_active;
- gboolean asleep;
-@@ -90,6 +91,10 @@
- GSList * dialup_list;
- GMutex * dialup_list_mutex;
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+-msgid ""
+-"unable to bind to netlink socket for monitoring wired ethernet devices - %s"
++msgid "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+ msgstr ""
+ "no se puede asociar al socket netlink para monitorizar dispositivos ethernet "
+ "con cable - %s"
-+ GSList * killswitch_list;
-+ GSList * ks_pcall_list; /* track killswitch D-Bus pending calls */
-+ gboolean tmp_hw_rf_enabled;
-+
- struct NMAccessPointList *allowed_ap_list;
- struct NMAccessPointList *invalid_ap_list;
- } NMData;
-diff -urN NetworkManager/src/NetworkManagerPolicy.c NetworkManager-SVN/src/NetworkManagerPolicy.c
---- NetworkManager/src/NetworkManagerPolicy.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManagerPolicy.c 2007-09-08 00:06:44.000000000 +0200
-@@ -52,6 +52,7 @@
- NMDevice *dev = NULL;
- NMData *data = NULL;
- NMAccessPoint * ap = NULL;
-+ NMActRequest * dev_req;
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
+ msgid "operation took too long"
+ msgstr "la operación duró demasiado"
- g_return_val_if_fail (req != NULL, FALSE);
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
+ msgid "received data from wrong type of sender"
+ msgstr "se han recibido datos con un tipo de emisor incorrecto"
-@@ -61,6 +62,13 @@
- dev = nm_act_request_get_dev (req);
- g_assert (dev);
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
+ msgid "received data from unexpected sender"
+ msgstr "se han recibido datos de un emisor inesperado"
-+ /* Ensure that inactive devices don't get the activated signal
-+ * sent due to race conditions.
-+ */
-+ dev_req = nm_device_get_act_request (dev);
-+ if (!dev_req || (dev_req != req))
-+ return FALSE;
-+
- if (nm_device_is_802_11_wireless (dev))
- ap = nm_act_request_get_ap (req);
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
+ msgid "too much data was sent over socket and some of it was lost"
+-msgstr ""
+-"se han enviado demasiados datos a través del socket y algunos de perdieron"
++msgstr "se han enviado demasiados datos a través del socket y algunos de perdieron"
-@@ -265,14 +273,16 @@
- }
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
+ msgid "error occurred while waiting for data on socket"
+ msgstr "ha ocurrido un error mientras esperaban datos en un socket"
- #if 0
-- nm_info ("AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (best_wired_dev) : "(null)",
-- best_wireless_dev ? nm_device_get_iface (best_wireless_dev) : "(null)", (best_wireless_dev && *ap) ? nm_ap_get_essid (*ap) : "null" );
-+ nm_info ("AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (NM_DEVICE (best_wired_dev)) : "(null)",
-+ best_wireless_dev ? nm_device_get_iface (NM_DEVICE (best_wireless_dev)) : "(null)", (best_wireless_dev && *ap) ? nm_ap_get_essid (*ap) : "null" );
- #endif
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Ahora está conectado a la red inalámbrica Ad Hoc %s."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "Ahora está conectado a la red inalámbrica %s."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "Ahora está conectado a la red fija."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "Conexión establecida"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "Desconectado"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "La conexión de red se ha desconectado."
+-
+-#~ msgid "Stop automatically running the networking applet?"
+-#~ msgstr "¿Desea detener la ejecución automática del applet de red?"
+-
+-#~ msgid ""
+-#~ "The networking applet will now terminate, but will automatically launch "
+-#~ "the next time you login. Would you like to stop automatically running "
+-#~ "the networking applet on login?"
+-#~ msgstr ""
+-#~ "El applet de red se cerrará ahora, pero se iniciará automáticamente la "
+-#~ "próxima vez que inicie sesión. ¿Desea detener la ejecución automática del "
+-#~ "applet de red al inicio de sesión?"
+-
+-#~ msgid "_Remove"
+-#~ msgstr "_Eliminar"
+-
+-#~ msgid "VPN Error"
+-#~ msgstr "Error de VPN"
+-
+-#~ msgid "The VPN service said: \"%s\""
+-#~ msgstr "El servicio VPN ha devuelto el mensaje:«%s»"
+-
+-#~ msgid "VPN connection '%s' said:"
+-#~ msgstr "La conexión VPN «%s» ha devuelto el siguiente mensaje:"
+-
+-#~ msgid "leap_subwindow"
+-#~ msgstr "leap_subwindow"
++#: ../src/nm-ap-security-wpa-eap.c:96 ../src/nm-ap-security-wpa-eap.c:120
++msgid "WPA2 Enterprise"
++msgstr "WPA2 empresarial"
- return highest_priority_dev;
- }
+-#~ msgid "wep_key_subwindow"
+-#~ msgstr "wep_key_subwindow"
++#: ../src/nm-ap-security-wpa-eap.c:98 ../src/nm-ap-security-wpa-eap.c:125
++msgid "WPA Enterprise"
++msgstr "WPA empresarial"
+-#~ msgid "wep_passphrase_subwindow"
+-#~ msgstr "wep_passphrase_subwindow"
++#: ../src/nm-ap-security-leap.c:66 ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
-+static GStaticMutex dcc_mutex = G_STATIC_MUTEX_INIT;
+-#~ msgid "wpa_psk_subwindow"
+-#~ msgstr "wpa_psk_subwindow"
+diff -urN NetworkManager-0.6.5/po/et.po NetworkManager-SVNr3284/po/et.po
+--- NetworkManager-0.6.5/po/et.po 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/po/et.po 2008-02-04 16:01:02.000000000 +0100
+@@ -0,0 +1,215 @@
++# GNOME NetworkManager
++# Copyright (C) 2007 The GNOME Project.
++# This file is distributed under the same license as the NetworkManager package.
++# Priit Laes <amd@store20.com>, 2007.
++# Mattias Põldaru <mattias@gmail.com>, 2007.
++#
++msgid ""
++msgstr ""
++"Project-Id-Version: NetworkManager 0.6\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2007-10-28 16:09+0000\n"
++"PO-Revision-Date: 2007-10-31 23:13+0300\n"
++"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
++"Language-Team: Estonian <gnome-et@linux.ee>\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=utf-8\n"
++"Content-Transfer-Encoding: 8bit\n"
+
- /*
- * nm_policy_device_change_check
- *
-@@ -294,7 +304,9 @@
-
- g_return_val_if_fail (data != NULL, FALSE);
-
-+ g_static_mutex_lock (&dcc_mutex);
- data->dev_change_check_idle_id = 0;
-+ g_static_mutex_unlock (&dcc_mutex);
-
- old_dev = nm_get_active_device (data);
-
-@@ -303,11 +315,19 @@
-
- if (old_dev)
- {
-+ gboolean has_link = TRUE;
- guint32 caps = nm_device_get_capabilities (old_dev);
-
-+ /* Ensure ethernet devices have a link before starting activation,
-+ * partially works around Fedora #194124.
-+ */
-+ if (nm_device_is_802_3_ethernet (old_dev))
-+ has_link = nm_device_has_active_link (old_dev);
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
++msgid "Cannot add VPN connection"
++msgstr "VPN ühendust ei saa lisada"
+
- /* Don't interrupt a currently activating device. */
- if ( nm_device_is_activating (old_dev)
-- && !nm_device_can_interrupt_activation (old_dev))
-+ && !nm_device_can_interrupt_activation (old_dev)
-+ && has_link)
- {
- nm_info ("Old device '%s' activating, won't change.", nm_device_get_iface (old_dev));
- goto out;
-@@ -425,12 +445,35 @@
- if (do_switch && (nm_device_is_802_3_ethernet (new_dev) || (nm_device_is_802_11_wireless (new_dev) && ap)))
- {
- NMActRequest * act_req = NULL;
-+ gboolean has_link = TRUE;
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
++msgid "No suitable VPN software was found on your system. Contact your system administrator."
++msgstr "Arvutist ei leitud sobilikku VPN tarkvara. Võta ühendus oma süsteemi administraatoriga."
+
-+ /* Ensure ethernet devices have a link before starting activation,
-+ * partially works around Fedora #194124.
-+ */
-+ if (nm_device_is_802_3_ethernet (new_dev))
-+ has_link = nm_device_has_active_link (new_dev);
-
-- if ((act_req = nm_act_request_new (data, new_dev, ap, FALSE)))
-+ if (has_link)
-+ {
-+ if ((act_req = nm_act_request_new (data, new_dev, ap, FALSE)))
-+ {
-+ nm_info ("Will activate connection '%s%s%s'.",
-+ nm_device_get_iface (new_dev),
-+ ap ? "/" : "",
-+ ap ? nm_ap_get_essid (ap) : "");
-+ nm_policy_schedule_device_activation (act_req);
-+ nm_act_request_unref (act_req);
-+ }
-+ else
-+ {
-+ nm_info ("Error creating activation request for %s",
-+ nm_device_get_iface (new_dev));
-+ }
-+ }
-+ else
- {
-- nm_info ("Will activate connection '%s%s%s'.", nm_device_get_iface (new_dev), ap ? "/" : "", ap ? nm_ap_get_essid (ap) : "");
-- nm_policy_schedule_device_activation (act_req);
-- nm_act_request_unref (act_req);
-+ nm_info ("Won't activate %s because it no longer has a link.",
-+ nm_device_get_iface (new_dev));
- }
- }
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
++msgid "Cannot import VPN connection"
++msgstr "VPN ühendust ei saa importida"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
++#, c-format
++msgid "Cannot find suitable software for VPN connection type '%s' to import the file '%s'. Contact your system administrator."
++msgstr "'%s' tüüpi VPN ühenduse tarkvara ei leitud, et importida faili '%s'. Võta ühendust oma süsteemi administraatoriga."
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
++#, c-format
++msgid "Error retrieving VPN connection '%s'"
++msgstr "Viga VPN ühenduse '%s' otsimisel"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
++#, c-format
++msgid "Could not find the UI files for VPN connection type '%s'. Contact your system administrator."
++msgstr "'%s' tüüpi VPN ühenduse jaoks ei leitud kasutajaliidese faile. Võta ühendust oma süsteemi administraatoriga."
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
++#, c-format
++msgid "Delete VPN connection \"%s\"?"
++msgstr "Kas kustutada VPN ühendus \"%s\"?"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
++#, c-format
++msgid "All information about the VPN connection \"%s\" will be lost and you may need your system administrator to provide information to create a new connection."
++msgstr "Kõik VPN ühendusega \"%s\" seotud info läheb kaotsi ja sul võib vaja minna süsteemi administraatori abi uue ühenduse loomisel."
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
++msgid "Unable to load"
++msgstr "Ei saa laadida"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
++msgid "Cannot find some needed resources (the glade file)!"
++msgstr "Ei leia vajalikke allikaid (glade fail)!"
++
++#. Edit dialog
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
++msgid "Edit VPN Connection"
++msgstr "Muuda VPN ühendust"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:1
++msgid "Add a new VPN connection"
++msgstr "Lisa uus VPN ühendus"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:2
++msgid "Choose which type of VPN connection you wish to create."
++msgstr "Vali mis tüüpi VPN ühendust sa tahad luua."
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:3
++msgid "Connect to:"
++msgstr "Ühendu kuhu:"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:4
++msgid "Create VPN Connection"
++msgstr "VPN ühenduse loomine"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:5
++msgid "Create VPN Connection - 1 of 2"
++msgstr "VPN ühenduse loomine - 1 / 2"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:6
++msgid "Create VPN Connection - 2 of 2"
++msgstr "VPN ühenduse loomine - 2 / 2"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:7
++msgid "Delete the selected VPN connection"
++msgstr "Kustuta valitud VPN ühendus"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:8
++msgid "E_xport"
++msgstr "E_kspordi"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:9
++msgid "Edit the selected VPN connection"
++msgstr "Muuda valitud VPN ühendust"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:10
++msgid "Export the VPN settings to a file"
++msgstr "VPN-i seadete eksportimine faili"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:11
++msgid "Export the selected VPN connection to a file"
++msgstr "Valitud VPN-i eksportimine faili"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:12
++msgid "Finish Creating VPN Connection"
++msgstr "Lõpeta VPN ühenduse loomine"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:13
++msgid "Manage Virtual Private Network Connections"
++msgstr "Virtuaalsete eravõrkude ühenduste haldamine"
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:14
++msgid ""
++"This assistant will guide you through the creation of a connection to a Virtual Private Network (VPN).\n"
++"\n"
++"It will require some information, such as IP addresses and secrets. Please see your system administrator to obtain this information."
++msgstr ""
++"See assistent juhatab sind Virtuaalse eravõrgu loomisel.\n"
++"\n"
++"See vajab infot nagu IP aadressid ja salasõnad. Selle info hankimiseks võta ühendust oma süsteemi administraatoriga."
++
++#: ../gnome/vpn-properties/nm-vpn-properties.glade.h:17
++msgid "VPN Connections"
++msgstr "VPN ühendused"
++
++#: ../src/nm-ap-security-wep.c:52
++msgid "40-bit WEP"
++msgstr "40 bitine WEP"
++
++#: ../src/nm-ap-security-wep.c:54
++msgid "104-bit WEP"
++msgstr "104 bitine WEP"
++
++#: ../src/nm-ap-security-wpa-psk.c:50
++msgid "WPA TKIP"
++msgstr "WPA TKIP"
++
++#: ../src/nm-ap-security-wpa-psk.c:52
++msgid "WPA CCMP"
++msgstr "WPA CCMP"
++
++#: ../src/nm-ap-security-wpa-psk.c:54
++msgid "WPA Automatic"
++msgstr "Automaatne WPA"
++
++#: ../src/nm-ap-security-wpa-psk.c:59
++msgid "WPA2 TKIP"
++msgstr "WPA2 TKIP"
++
++#: ../src/nm-ap-security-wpa-psk.c:61
++msgid "WPA2 CCMP"
++msgstr "WPA2 CCMP"
++
++#: ../src/nm-ap-security-wpa-psk.c:63
++msgid "WPA2 Automatic"
++msgstr "Automaatne WPA2"
++
++#: ../src/nm-ap-security.c:338
++msgid "none"
++msgstr "ei ükski"
++
++#: ../src/nm-netlink-monitor.c:170
++#, c-format
++msgid "unable to create netlink socket for monitoring wired ethernet devices - %s"
++msgstr "ei suudeta luua netlink soklit juhtmega võrguühenduse monitoorimiseks - %s"
++
++#: ../src/nm-netlink-monitor.c:188
++#, c-format
++msgid "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
++msgstr "ei suudeta luua netlink soklit juhtmega võrguühenduse sidumiseks - %s"
++
++#: ../src/nm-netlink-monitor.c:426
++msgid "operation took too long"
++msgstr "operatsiooniks kulus liiga palju aega"
++
++#: ../src/nm-netlink-monitor.c:523
++msgid "received data from wrong type of sender"
++msgstr "vastuvõetud andmed on valet tüüpi saatjalt"
++
++#: ../src/nm-netlink-monitor.c:536
++msgid "received data from unexpected sender"
++msgstr "vastuvõetud andmed on ootamatult saatjalt"
++
++#: ../src/nm-netlink-monitor.c:665
++msgid "too much data was sent over socket and some of it was lost"
++msgstr "sokli kaudu saadeti liiga palju andmeid ning osa sellest läks kaotsi"
++
++#: ../src/nm-netlink-monitor.c:775
++msgid "error occurred while waiting for data on socket"
++msgstr "soklist andmete ootamisel tekkis viga"
++
++#: ../src/nm-ap-security-wpa-eap.c:95
++#: ../src/nm-ap-security-wpa-eap.c:119
++msgid "WPA2 Enterprise"
++msgstr "Enterprise WPA2"
++
++#: ../src/nm-ap-security-wpa-eap.c:97
++#: ../src/nm-ap-security-wpa-eap.c:124
++msgid "WPA Enterprise"
++msgstr "Enterprise WPA"
++
++#: ../src/nm-ap-security-leap.c:66
++#: ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
++
+diff -urN NetworkManager-0.6.5/po/fi.po NetworkManager-SVNr3284/po/fi.po
+--- NetworkManager-0.6.5/po/fi.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/fi.po 2008-02-04 16:01:02.000000000 +0100
+@@ -8,7 +8,7 @@
+ msgstr ""
+ "Project-Id-Version: NetworkManager\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
++"POT-Creation-Date: 2007-08-16 17:52+0300\n"
+ "PO-Revision-Date: 2006-02-28 22:15+0200\n"
+ "Last-Translator: Ilkka Tuohela <hile@iki.fi>\n"
+ "Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
+@@ -17,709 +17,11 @@
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-@@ -452,11 +495,9 @@
- */
- void nm_policy_schedule_device_change_check (NMData *data)
- {
-- static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "Langattoman verkon %s tunnuslause"
-
- g_return_if_fail (data != NULL);
-
-- g_static_mutex_lock (&mutex);
-+ g_static_mutex_lock (&dcc_mutex);
-
- if (data->dev_change_check_idle_id == 0)
- {
-@@ -466,8 +507,7 @@
- data->dev_change_check_idle_id = g_source_attach (source, data->main_context);
- g_source_unref (source);
- }
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "Yhteys langattomaan verkkoon \"%s\" epäonnistui."
-
-- g_static_mutex_unlock (&mutex);
-+ g_static_mutex_unlock (&dcc_mutex);
- }
-
-
-diff -urN NetworkManager/src/NetworkManagerSystem.c NetworkManager-SVN/src/NetworkManagerSystem.c
---- NetworkManager/src/NetworkManagerSystem.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/NetworkManagerSystem.c 2007-09-08 00:06:44.000000000 +0200
-@@ -64,6 +64,7 @@
- struct sockaddr_in *p;
- const char * iface;
- int err;
-+ NMIP4Config * config = NULL;
-
- iface = nm_device_get_iface (dev);
-
-@@ -75,6 +76,15 @@
- if (ip4_gateway == 0)
- return TRUE;
-
-+ /*
-+ * Do not add the route if the destination is on the same subnet.
-+ */
-+ config = nm_device_get_ip4_config(dev);
-+ if (config &&
-+ ((guint32)ip4_dest & nm_ip4_config_get_netmask(config)) ==
-+ (nm_ip4_config_get_address(config) & nm_ip4_config_get_netmask(config)))
-+ return TRUE;
-+
- if ((sk = nm_dev_sock_open (dev, NETWORK_CONTROL, __FUNCTION__, NULL)) == NULL)
- return FALSE;
-
-diff -urN NetworkManager/src/nm-ap-security-wpa-eap.c NetworkManager-SVN/src/nm-ap-security-wpa-eap.c
---- NetworkManager/src/nm-ap-security-wpa-eap.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/nm-ap-security-wpa-eap.c 2007-09-08 00:06:44.000000000 +0200
-@@ -57,7 +57,6 @@
- NMAPSecurityWPA_EAP * security = NULL;
- int eap_method;
- int key_type;
-- int phase2_type;
- int wpa_version;
- char * identity = NULL;
- char * passwd = NULL;
-diff -urN NetworkManager/src/nm-dbus-nm.c NetworkManager-SVN/src/nm-dbus-nm.c
---- NetworkManager/src/nm-dbus-nm.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/nm-dbus-nm.c 2007-09-08 00:06:44.000000000 +0200
-@@ -483,52 +483,83 @@
- return (reply);
- }
-
--static DBusMessage *nm_dbus_nm_set_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *data)
-+static DBusMessage *nm_dbus_nm_set_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *cb_data)
- {
- gboolean enabled = FALSE;
- DBusError err;
-- NMData *app_data;
-+ NMData * data;
-+ DBusMessage * ret = NULL;
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "Yhteys kiinteään verkkoon epäonnistui."
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "Virhe näytettäessä yhteyden tietoja:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr "Joitain vaadittuja osia ei löytynyt (glade-tiedostoa)!"
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "Ei aktiivisia yhteyksiä!"
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "Kiinteä Ethernet-yhteys (%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "Langaton Ethernet (%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "NetworkManager-sovelma"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Copyright © 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr "Ilmoitusalueen sovelma verkkolaitteiden ja yhteyksien hallintaan."
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr ""
+-"Ilkka Tuohela, 2005.\n"
+-"\n"
+-"http://www.gnome.fi/"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "Virhe kirjauduttaessa VPN:ään"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr "VPN-yhteyttä \"%s\" ei voitu käynnistää kirjautumisvirheen takia."
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "VPN-yhteyden käynnistysvirhe"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"VPN-yhteyttä \"%s\" ei voitu käynnistää, koska VPN-ohjelman suorittaminen "
+-"epäonnistui."
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "VPN-yhteyden yhteydenottovirhe"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr "VPN-yhteyttä \"%s\" ei voitu käynnistää, koska tapahtui yhteysvirhe."
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "VPN-yhteyden asetusvirhe"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "VPN-yhteyden \"%s\" asetukset ovat virheelliset."
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"VPN-yhteyttä \"%s\" ei voitu käynnistää, koska VPN-palvelin ei palauttanut "
+-"kelvollista verkkomäärittelyä."
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "VPN-yhteyden kirjautumisviesti"
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"NetworkManager-sovelma ei voinut ladata jotain vaadituista resursseista "
+-"(glade-tiedostoa ei löytynyt)."
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr "Verkkolaite \"%s (%s)\" ei tue langattomien verkkojen etsimistä."
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr "Verkkolaite \"%s (%s)\" ei tue verkkoyhteyden havaitsemista."
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "Valmistellaan laitetta %s kiinteälle verkkoyhteydelle..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr "Valmistellaan laitetta %s langattomalle verkolle \"%s\"..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "Määritellään laitetta %s kiinteälle verkkoyhteydelle..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "Yritetään liittyä langattomaan verkkoon \"%s\"..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "Odotetaan verkon avainta langattomalle verkolle \"%s\""
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "Pyydetään verkko-osoitetta kiinteästä verkosta..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr "Pyydetään verkko-osoitettta langattomasta verkosta \"%s\"..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "Viimeistellään yhteyttä kiinteään verkkoon..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "Viimeistellään yhteyttä langattomaan verkkoon \"%s\"..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "NetworkManager ei ole käytössä"
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "Verkko ei ole käytössä"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "Ei verkkoyhteyttä"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "Kiinteä verkkoyhteys"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Yhteys langattomaan Ad-Hoc-verkkoon"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "Langaton verkkoyhteys \"%s\" (%d%%)"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "VPN-yhteys \"%s\""
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "VPN-yhteyttä \"%s\" avataan"
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "_Yhdistä muihin langattomiin verkkoihin..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "Luo _uusi langaton verkko..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "_VPN-yhteydet"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "_Määrittele VPN-yhteys..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "_Katkaise VPN-yhteys..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "_Modeemiyhteydet"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "Ota yhteyttä kohteeseen %s..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "Katkaise yhteys kohteeseen %s..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "Verkkolaitteita ei löytynyt"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "NetworkManager ei ole käytössä..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "Ota _verkko käyttöön"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "Ota _langaton käyttöön"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "Tietoja _yhteydestä"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "O_hje"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "_Tietoja"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"NetworkManager-sovelma ei löytänyt joitain vaadituista resursseista eikä "
+-"pysty jatkamaan.\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "Avoin järjestelmä"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "Jaettu avain"
+-
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "Automaattinen (oletus)"
+-
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "Dynaaminen WEP"
+-
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "Ei mitään"
+-
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "WEP 64/128-bittinen ASCII"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "WEP 64/128-bittinen heksadesimaali"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "WEP 128-bittinen tunnuslause"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA2 Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA2 (henkilökohtainen)"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA (henkilökohtainen)"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "Suunta"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "Ilmoitusalueen suunta."
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "Kiinteä verkkoyhteys (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "_Kiinteä verkkoyhteys"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "Langaton verkko (%s)"
+-msgstr[1] "Langattomat verkot (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "Langaton verkko"
+-msgstr[1] "Langattomat verkot"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (virheellistä Unicodea)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"Oletuksena langattoman verkon nimi asetetaan samaksi kuin tietokoneesi nimi "
+-"\"%s\" ja salaus on poissa käytöstä"
+-
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "Luo uusi langaton verkko"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr "Syötä luotavan langattoman verkon nimi ja turva-asetukset."
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "Luo uusi langaton verkko"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "Olemassaoleva langaton verkko"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr "Syötä sen langattoman verkon nimi, johon haluat ottaa yhteyttä."
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "Ota yhteyttä muuhun langattomaan verkkoon"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "Virhe yhdistettäessä langattomaan verkkoon"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"Pyydetty langaton verkko vaatii tietoturvakykyjä, joita laitteistosi ei tue."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "VPN-yhteyttä \"%s\" ei voida käynnistää"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"Kirjautumisikkunaa VPN-yhteyden tyypille \"%s\" ei löydy. Ota yhteyttä "
+-"järjestelmäsi ylläpitäjään."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"Virhe käynnistettäessä kirjatumisikkunaa VPN-yhteyden tyypille \"%s\". Ota "
+-"yhteyttä järjestelmäsi ylläpitäjään."
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Tietoja aktiivisesta yhteydestä</span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Langaton verkko vaatii tunnuslausetta</"
+-"span>\n"
+-"\n"
+-"Tunnuslause tai salausavain vaaditaan, jotta voit ottaa yhteyttä "
+-"langattomaan verkkoon %s."
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Rajattu verkon toiminnallisuus</span>\n"
+-"\n"
+-"%s Verkkoyhteys ei ole täysin toimiva."
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Langattoman yhteyden kirjatumisen "
+-"vahvistus</span>\n"
+-"\n"
+-"Olet ottamassa yhteyttä langattomaan verkkoon \"%s\". Jos olet varma, että "
+-"tämä langaton verkko on turvallinen, napsauta alla olevaa ruutua ja "
+-"NetworkManager ei kysy tätä vahvistusikkunaa enää uudestaan."
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "Anonyymi tunniste:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "Tunnistautuminen:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "Broadcast-osoite:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "CA-varmenteen tiedosto:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "_Yhdistä"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "Asiakasvarmenteen tiedosto:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "Tietoja yhteydestä"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "Oletusyhdyskäytävä:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "Kohdeosoite:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "Ajuri:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "EPA-menetelmä:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "Laiteosoite:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "IP-osoite:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "Tunniste:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "Verkkolaite:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "Avaimen tyyppi:"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "Avain:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"Ei mitään\n"
+-"WEP 128-bittinen tunnuslause\n"
+-"WEP 64/128-bittinen heksadesimaali\n"
+-"WEP 64/128-bittinen ASCII\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"Avoin järjestelmä\n"
+-"Jaettu avain"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "Muu langaton verkko..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "Tunnuslause:"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "Salasana:"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "Ensisijainen DNS:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "Salausavaimen tiedosto"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "Salausavaimen salasana:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "Toissijainen DNS:"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Valise CA-varmenteen tiedosto"
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "Valitse asiakasvarmenteen tiedosto"
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "Valitse salaisen avaimen tiedosto"
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "Näytä avain"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "Näytä tunnuslause:"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "Näytä salasana"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "Näytä salasanat"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "Nopeus:"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "Aliverkkopeite:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "Tyyppi:"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "Käyttäjätunnus:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "Langattoman verkon salausavain vaaditaan"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "Langaton _verkkolaite:"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "_Luota aina tähän langattomaan verkkoon"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "_Älä huomauta uudestaan"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "_Kirjaudu verkkoon"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "_Verkon nimi:"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "_Langaton tietoturva:"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+ msgstr "VPN-yhteyttä ei voitu lisätä"
-- g_return_val_if_fail (data && data->data && connection && message, NULL);
-+ g_return_val_if_fail (cb_data && cb_data->data && connection && message, NULL);
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+@@ -727,11 +29,11 @@
+ "Sopivaa VPN-ohjelmistoa ei löytynyt järjestelmästäsi. Ota yhteyttä "
+ "järjestelmäsi ylläpitäjään."
- dbus_error_init (&err);
- if (!dbus_message_get_args (message, &err, DBUS_TYPE_BOOLEAN, &enabled, DBUS_TYPE_INVALID))
-- return NULL;
-+ goto out;
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+ msgstr "VPN-yhteyttä ei voida tuoda"
-- app_data = data->data;
-- app_data->wireless_enabled = enabled;
-+ data = cb_data->data;
-+ if (enabled == data->wireless_enabled)
-+ goto out;
-+
-+ /* Hardware rfkill overrides whatever user wants */
-+ if (!data->hw_rf_enabled) {
-+ nm_info ("User request to %s wireless overridden by radio killswitch.",
-+ enabled ? "enable" : "disable");
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+@@ -740,12 +42,12 @@
+ "Sopivaa VPN-ohjelmistoa VPN-yhteyden tyypille \"%s\" ei löydy tuotaessa "
+ "asetustiedostoa \"%s\". Ota yhteyttä järjestelmäsi ylläpitäjään."
-- if (!enabled)
-- {
-- GSList *elt;
-+ /* Return error if user tries to re-enable wireless, or just ignore
-+ * a disable wireless request when wireless is already disabled.
-+ */
-+ if (enabled) {
-+ ret = nm_dbus_create_error_message (message,
-+ NM_DBUS_INTERFACE,
-+ "DisabledBySystem",
-+ "Wireless disabled by hardware switch.");
-+ }
-+ goto out;
-+ }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+ msgstr "Virhe haettaessa VPN-yhteyttä \"%s\""
-- /* Physically down all wireless devices */
-- nm_lock_mutex (app_data->dev_list_mutex, __FUNCTION__);
-- for (elt = app_data->dev_list; elt; elt = g_slist_next (elt))
-- {
-- NMDevice *dev = (NMDevice *)(elt->data);
-- if (nm_device_is_802_11_wireless (dev))
-- {
-+ nm_info ("User request to %s wireless.", enabled ? "enable" : "disable");
-+
-+ data->wireless_enabled = enabled;
-+ if (!data->wireless_enabled) {
-+ GSList * elt;
-+
-+ /* Deactivate all wireless devices and force them down so they
-+ * turn off their radios.
-+ */
-+ nm_lock_mutex (data->dev_list_mutex, __FUNCTION__);
-+ for (elt = data->dev_list; elt; elt = g_slist_next (elt)) {
-+ NMDevice * dev = (NMDevice *) elt->data;
-+ if (nm_device_is_802_11_wireless (dev)) {
- nm_device_deactivate (dev);
- nm_device_bring_down (dev);
- }
- }
-- nm_unlock_mutex (app_data->dev_list_mutex, __FUNCTION__);
-+ nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
- }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+@@ -754,12 +56,12 @@
+ "VPN-yhteyden tyypille \"%s\" ei löydy käyttöliittymää. Ota yhteyttä "
+ "järjestelmäsi ylläpitäjään."
-- nm_policy_schedule_device_change_check (data->data);
-+ nm_policy_schedule_device_change_check (data);
-+ nm_dbus_signal_wireless_enabled (data);
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+ msgstr "Poistetaanko VPN-yhteys \"%s\"?"
-- return NULL;
-+out:
-+ return ret;
- }
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+@@ -770,16 +72,16 @@
+ "yhteyttä järjestelmäsiylläpitäjään, jotta saat uuden yhteyden luomiseen "
+ "tarvittavat tiedot."
--static DBusMessage *nm_dbus_nm_get_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *data)
-+static DBusMessage *nm_dbus_nm_get_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *cb_data)
- {
-+ NMData * data;
- DBusMessage *reply = NULL;
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+ msgstr "Ei voitu ladata"
-- g_return_val_if_fail (data && data->data && connection && message, NULL);
-+ g_return_val_if_fail (cb_data && connection && message, NULL);
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+ msgstr "Jotain tarvittavista resursseista ei löydy (glade-tiedosto)!"
-- if ((reply = dbus_message_new_method_return (message)))
-- dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &data->data->wireless_enabled, DBUS_TYPE_INVALID);
-+ data = cb_data->data;
-+ g_return_val_if_fail (data != NULL, NULL);
-+
-+ if ((reply = dbus_message_new_method_return (message))) {
-+ dbus_message_append_args (reply,
-+ DBUS_TYPE_BOOLEAN, &data->wireless_enabled,
-+ DBUS_TYPE_BOOLEAN, &data->hw_rf_enabled,
-+ DBUS_TYPE_INVALID);
-+ }
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ msgid "Edit VPN Connection"
+ msgstr "Muokkaa VPN-yhteyttä"
- return reply;
- }
-diff -urN NetworkManager/src/nm-device-802-11-wireless.c NetworkManager-SVN/src/nm-device-802-11-wireless.c
---- NetworkManager/src/nm-device-802-11-wireless.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/nm-device-802-11-wireless.c 2007-09-08 00:06:44.000000000 +0200
-@@ -617,7 +617,10 @@
- /* Start the scanning timeout for devices that can do scanning */
- if (nm_device_get_capabilities (dev) & NM_DEVICE_CAP_WIRELESS_SCAN)
- {
-- self->priv->pending_scan = g_idle_source_new ();
-+ /* Stupid orinoco has problems scanning immediately after being up,
-+ * so wait a bit before triggering a scan.
-+ */
-+ self->priv->pending_scan = g_timeout_source_new (600);
- g_source_set_callback (self->priv->pending_scan,
- nm_device_802_11_wireless_scan,
- self,
-@@ -2981,6 +2984,9 @@
- return NM_ACT_STAGE_RETURN_POSTPONE;
- }
+@@ -884,11 +186,11 @@
+ msgid "WPA2 Automatic"
+ msgstr "WPA2 (automaattinen)"
+
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "ei mitään"
+
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+ msgid ""
+ "unable to create netlink socket for monitoring wired ethernet devices - %s"
+@@ -896,7 +198,7 @@
+ "Netlink-pistoketta kiinteiden verkkoyhteyksien tarkkailuun ei voida luoda - %"
+ "s"
+
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+ msgid ""
+ "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+@@ -904,51 +206,569 @@
+ "Netlink-pistoketta ei voida sitoa kiinteiden verkkoyhteyksien tarkkailua "
+ "varten - %s"
+
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
++#, c-format
+ msgid "operation took too long"
+ msgstr "toimenpide kesti liian pitkään"
+
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
++#, c-format
+ msgid "received data from wrong type of sender"
+ msgstr "vastaanotettiin tietoa väärän tyyppiseltä lähettäjältä"
+
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
++#, c-format
+ msgid "received data from unexpected sender"
+ msgstr "vastaanotettiin tietoja odottamattomalta lähettäjältä"
+
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
++#, c-format
+ msgid "too much data was sent over socket and some of it was lost"
+ msgstr "lähetettiin liian paljon tietoja pistekkeeseen ja osaa siitä hukkui"
+
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
++#, c-format
+ msgid "error occurred while waiting for data on socket"
+ msgstr "virhe odotettaessa tietoja pistokkeesta"
+
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Yhteys langattomaan Ad-Hoc-verkkoon \"%s\" on nyt muodostettu."
++#: ../src/nm-ap-security-wpa-eap.c:95 ../src/nm-ap-security-wpa-eap.c:119
++msgid "WPA2 Enterprise"
++msgstr "WPA2 Enterprise"
+
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "Yhteys langattomaan verkkoon \"%s\" on nyt muodostettu."
++#: ../src/nm-ap-security-wpa-eap.c:97 ../src/nm-ap-security-wpa-eap.c:124
++msgid "WPA Enterprise"
++msgstr "WPA Enterprise"
++
++#: ../src/nm-ap-security-leap.c:66 ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
++
++#~ msgid "Passphrase for wireless network %s"
++#~ msgstr "Langattoman verkon %s tunnuslause"
++
++#~ msgid "Connection to the wireless network '%s' failed."
++#~ msgstr "Yhteys langattomaan verkkoon \"%s\" epäonnistui."
++
++#~ msgid "Connection to the wired network failed."
++#~ msgstr "Yhteys kiinteään verkkoon epäonnistui."
++
++#~ msgid "Error displaying connection information:"
++#~ msgstr "Virhe näytettäessä yhteyden tietoja:"
++
++#~ msgid "Could not find some required resources (the glade file)!"
++#~ msgstr "Joitain vaadittuja osia ei löytynyt (glade-tiedostoa)!"
++
++#~ msgid "No active connections!"
++#~ msgstr "Ei aktiivisia yhteyksiä!"
++
++#~ msgid "Wired Ethernet (%s)"
++#~ msgstr "Kiinteä Ethernet-yhteys (%s)"
++
++#~ msgid "Wireless Ethernet (%s)"
++#~ msgstr "Langaton Ethernet (%s)"
++
++#~ msgid "NetworkManager Applet"
++#~ msgstr "NetworkManager-sovelma"
++
++#~ msgid "Copyright © 2004-2005 Red Hat, Inc."
++#~ msgstr "Copyright © 2004-2005 Red Hat, Inc."
++
++#~ msgid ""
++#~ "Notification area applet for managing your network devices and "
++#~ "connections."
++#~ msgstr "Ilmoitusalueen sovelma verkkolaitteiden ja yhteyksien hallintaan."
++
++#~ msgid "translator-credits"
++#~ msgstr ""
++#~ "Ilkka Tuohela, 2005.\n"
++#~ "\n"
++#~ "http://www.gnome.fi/"
++
++#~ msgid "VPN Login Failure"
++#~ msgstr "Virhe kirjauduttaessa VPN:ään"
++
++#~ msgid "Could not start the VPN connection '%s' due to a login failure."
++#~ msgstr "VPN-yhteyttä \"%s\" ei voitu käynnistää kirjautumisvirheen takia."
++
++#~ msgid "VPN Start Failure"
++#~ msgstr "VPN-yhteyden käynnistysvirhe"
++
++#~ msgid ""
++#~ "Could not start the VPN connection '%s' due to a failure launching the "
++#~ "VPN program."
++#~ msgstr ""
++#~ "VPN-yhteyttä \"%s\" ei voitu käynnistää, koska VPN-ohjelman suorittaminen "
++#~ "epäonnistui."
++
++#~ msgid "VPN Connect Failure"
++#~ msgstr "VPN-yhteyden yhteydenottovirhe"
++
++#~ msgid "Could not start the VPN connection '%s' due to a connection error."
++#~ msgstr ""
++#~ "VPN-yhteyttä \"%s\" ei voitu käynnistää, koska tapahtui yhteysvirhe."
++
++#~ msgid "VPN Configuration Error"
++#~ msgstr "VPN-yhteyden asetusvirhe"
++
++#~ msgid "The VPN connection '%s' was not correctly configured."
++#~ msgstr "VPN-yhteyden \"%s\" asetukset ovat virheelliset."
++
++#~ msgid ""
++#~ "Could not start the VPN connection '%s' because the VPN server did not "
++#~ "return an adequate network configuration."
++#~ msgstr ""
++#~ "VPN-yhteyttä \"%s\" ei voitu käynnistää, koska VPN-palvelin ei "
++#~ "palauttanut kelvollista verkkomäärittelyä."
++
++#~ msgid "VPN Login Message"
++#~ msgstr "VPN-yhteyden kirjautumisviesti"
++
++#~ msgid ""
++#~ "The NetworkManager Applet could not find some required resources (the "
++#~ "glade file was not found)."
++#~ msgstr ""
++#~ "NetworkManager-sovelma ei voinut ladata jotain vaadituista resursseista "
++#~ "(glade-tiedostoa ei löytynyt)."
++
++#~ msgid "The network device \"%s (%s)\" does not support wireless scanning."
++#~ msgstr "Verkkolaite \"%s (%s)\" ei tue langattomien verkkojen etsimistä."
++
++#~ msgid "The network device \"%s (%s)\" does not support link detection."
++#~ msgstr "Verkkolaite \"%s (%s)\" ei tue verkkoyhteyden havaitsemista."
++
++#~ msgid "Preparing device %s for the wired network..."
++#~ msgstr "Valmistellaan laitetta %s kiinteälle verkkoyhteydelle..."
++
++#~ msgid "Preparing device %s for the wireless network '%s'..."
++#~ msgstr "Valmistellaan laitetta %s langattomalle verkolle \"%s\"..."
++
++#~ msgid "Configuring device %s for the wired network..."
++#~ msgstr "Määritellään laitetta %s kiinteälle verkkoyhteydelle..."
++
++#~ msgid "Attempting to join the wireless network '%s'..."
++#~ msgstr "Yritetään liittyä langattomaan verkkoon \"%s\"..."
++
++#~ msgid "Waiting for Network Key for the wireless network '%s'..."
++#~ msgstr "Odotetaan verkon avainta langattomalle verkolle \"%s\""
++
++#~ msgid "Requesting a network address from the wired network..."
++#~ msgstr "Pyydetään verkko-osoitetta kiinteästä verkosta..."
++
++#~ msgid "Requesting a network address from the wireless network '%s'..."
++#~ msgstr "Pyydetään verkko-osoitettta langattomasta verkosta \"%s\"..."
++
++#~ msgid "Finishing connection to the wired network..."
++#~ msgstr "Viimeistellään yhteyttä kiinteään verkkoon..."
++
++#~ msgid "Finishing connection to the wireless network '%s'..."
++#~ msgstr "Viimeistellään yhteyttä langattomaan verkkoon \"%s\"..."
++
++#~ msgid "NetworkManager is not running"
++#~ msgstr "NetworkManager ei ole käytössä"
++
++#~ msgid "Networking disabled"
++#~ msgstr "Verkko ei ole käytössä"
++
++#~ msgid "No network connection"
++#~ msgstr "Ei verkkoyhteyttä"
++
++#~ msgid "Wired network connection"
++#~ msgstr "Kiinteä verkkoyhteys"
++
++#~ msgid "Connected to an Ad-Hoc wireless network"
++#~ msgstr "Yhteys langattomaan Ad-Hoc-verkkoon"
++
++#~ msgid "Wireless network connection to '%s' (%d%%)"
++#~ msgstr "Langaton verkkoyhteys \"%s\" (%d%%)"
++
++#~ msgid "VPN connection to '%s'"
++#~ msgstr "VPN-yhteys \"%s\""
++
++#~ msgid "VPN connecting to '%s'"
++#~ msgstr "VPN-yhteyttä \"%s\" avataan"
++
++#~ msgid "_Connect to Other Wireless Network..."
++#~ msgstr "_Yhdistä muihin langattomiin verkkoihin..."
++
++#~ msgid "Create _New Wireless Network..."
++#~ msgstr "Luo _uusi langaton verkko..."
++
++#~ msgid "_VPN Connections"
++#~ msgstr "_VPN-yhteydet"
++
++#~ msgid "_Configure VPN..."
++#~ msgstr "_Määrittele VPN-yhteys..."
++
++#~ msgid "_Disconnect VPN..."
++#~ msgstr "_Katkaise VPN-yhteys..."
++
++#~ msgid "_Dial Up Connections"
++#~ msgstr "_Modeemiyhteydet"
++
++#~ msgid "Connect to %s..."
++#~ msgstr "Ota yhteyttä kohteeseen %s..."
++
++#~ msgid "Disconnect from %s..."
++#~ msgstr "Katkaise yhteys kohteeseen %s..."
++
++#~ msgid "No network devices have been found"
++#~ msgstr "Verkkolaitteita ei löytynyt"
++
++#~ msgid "NetworkManager is not running..."
++#~ msgstr "NetworkManager ei ole käytössä..."
++
++#~ msgid "Enable _Networking"
++#~ msgstr "Ota _verkko käyttöön"
++
++#~ msgid "Enable _Wireless"
++#~ msgstr "Ota _langaton käyttöön"
++
++#~ msgid "Connection _Information"
++#~ msgstr "Tietoja _yhteydestä"
++
++#~ msgid "_Help"
++#~ msgstr "O_hje"
++
++#~ msgid "_About"
++#~ msgstr "_Tietoja"
++
++#~ msgid ""
++#~ "The NetworkManager applet could not find some required resources. It "
++#~ "cannot continue.\n"
++#~ msgstr ""
++#~ "NetworkManager-sovelma ei löytänyt joitain vaadituista resursseista eikä "
++#~ "pysty jatkamaan.\n"
++
++#~ msgid "Open System"
++#~ msgstr "Avoin järjestelmä"
++
++#~ msgid "Shared Key"
++#~ msgstr "Jaettu avain"
++
++#~ msgid "Automatic (Default)"
++#~ msgstr "Automaattinen (oletus)"
++
++#~ msgid "AES-CCMP"
++#~ msgstr "AES-CCMP"
++
++#~ msgid "TKIP"
++#~ msgstr "TKIP"
++
++#~ msgid "Dynamic WEP"
++#~ msgstr "Dynaaminen WEP"
++
++#~ msgid "None"
++#~ msgstr "Ei mitään"
++
++#~ msgid "WEP 64/128-bit ASCII"
++#~ msgstr "WEP 64/128-bittinen ASCII"
++
++#~ msgid "WEP 64/128-bit Hex"
++#~ msgstr "WEP 64/128-bittinen heksadesimaali"
++
++#~ msgid "WEP 128-bit Passphrase"
++#~ msgstr "WEP 128-bittinen tunnuslause"
++
++#~ msgid "TLS"
++#~ msgstr "TLS"
++
++#~ msgid "TTLS"
++#~ msgstr "TTLS"
++
++#~ msgid "WPA2 Personal"
++#~ msgstr "WPA2 (henkilökohtainen)"
++
++#~ msgid "WPA Personal"
++#~ msgstr "WPA (henkilökohtainen)"
++
++#~ msgid "Orientation"
++#~ msgstr "Suunta"
++
++#~ msgid "The orientation of the tray."
++#~ msgstr "Ilmoitusalueen suunta."
++
++#~ msgid "Wired Network (%s)"
++#~ msgstr "Kiinteä verkkoyhteys (%s)"
++
++#~ msgid "_Wired Network"
++#~ msgstr "_Kiinteä verkkoyhteys"
++
++#~ msgid "Wireless Network (%s)"
++#~ msgid_plural "Wireless Networks (%s)"
++#~ msgstr[0] "Langaton verkko (%s)"
++#~ msgstr[1] "Langattomat verkot (%s)"
++
++#~ msgid "Wireless Network"
++#~ msgid_plural "Wireless Networks"
++#~ msgstr[0] "Langaton verkko"
++#~ msgstr[1] "Langattomat verkot"
++
++#~ msgid " (invalid Unicode)"
++#~ msgstr " (virheellistä Unicodea)"
++
++#~ msgid ""
++#~ "By default, the wireless network's name is set to your computer's name, %"
++#~ "s, with no encryption enabled"
++#~ msgstr ""
++#~ "Oletuksena langattoman verkon nimi asetetaan samaksi kuin tietokoneesi "
++#~ "nimi \"%s\" ja salaus on poissa käytöstä"
++
++#~ msgid "Create new wireless network"
++#~ msgstr "Luo uusi langaton verkko"
++
++#~ msgid ""
++#~ "Enter the name and security settings of the wireless network you wish to "
++#~ "create."
++#~ msgstr "Syötä luotavan langattoman verkon nimi ja turva-asetukset."
++
++#~ msgid "Create New Wireless Network"
++#~ msgstr "Luo uusi langaton verkko"
++
++#~ msgid "Existing wireless network"
++#~ msgstr "Olemassaoleva langaton verkko"
++
++#~ msgid "Enter the name of the wireless network to which you wish to connect."
++#~ msgstr "Syötä sen langattoman verkon nimi, johon haluat ottaa yhteyttä."
++
++#~ msgid "Connect to Other Wireless Network"
++#~ msgstr "Ota yhteyttä muuhun langattomaan verkkoon"
++
++#~ msgid "Error connecting to wireless network"
++#~ msgstr "Virhe yhdistettäessä langattomaan verkkoon"
++
++#~ msgid ""
++#~ "The requested wireless network requires security capabilities unsupported "
++#~ "by your hardware."
++#~ msgstr ""
++#~ "Pyydetty langaton verkko vaatii tietoturvakykyjä, joita laitteistosi ei "
++#~ "tue."
++
++#~ msgid "Cannot start VPN connection '%s'"
++#~ msgstr "VPN-yhteyttä \"%s\" ei voida käynnistää"
++
++#~ msgid ""
++#~ "Could not find the authentication dialog for VPN connection type '%s'. "
++#~ "Contact your system administrator."
++#~ msgstr ""
++#~ "Kirjautumisikkunaa VPN-yhteyden tyypille \"%s\" ei löydy. Ota yhteyttä "
++#~ "järjestelmäsi ylläpitäjään."
++
++#~ msgid ""
++#~ "There was a problem launching the authentication dialog for VPN "
++#~ "connection type '%s'. Contact your system administrator."
++#~ msgstr ""
++#~ "Virhe käynnistettäessä kirjatumisikkunaa VPN-yhteyden tyypille \"%s\". "
++#~ "Ota yhteyttä järjestelmäsi ylläpitäjään."
++
++#~ msgid " "
++#~ msgstr " "
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Tietoja aktiivisesta yhteydestä</"
++#~ "span>"
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
++#~ "Network</span>\n"
++#~ "\n"
++#~ "A passphrase or encryption key is required to access the wireless network "
++#~ "'%s'."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Langaton verkko vaatii "
++#~ "tunnuslausetta</span>\n"
++#~ "\n"
++#~ "Tunnuslause tai salausavain vaaditaan, jotta voit ottaa yhteyttä "
++#~ "langattomaan verkkoon %s."
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</"
++#~ "span>\n"
++#~ "\n"
++#~ "%s It will not be completely functional."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Rajattu verkon toiminnallisuus</"
++#~ "span>\n"
++#~ "\n"
++#~ "%s Verkkoyhteys ei ole täysin toimiva."
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Wireless Network Login "
++#~ "Confirmation</span>\n"
++#~ "\n"
++#~ "You have chosen to log in to the wireless network '%s'. If you are sure "
++#~ "that this wireless network is secure, click the checkbox below and "
++#~ "NetworkManager will not require confirmation on subsequent log ins."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Langattoman yhteyden kirjatumisen "
++#~ "vahvistus</span>\n"
++#~ "\n"
++#~ "Olet ottamassa yhteyttä langattomaan verkkoon \"%s\". Jos olet varma, "
++#~ "että tämä langaton verkko on turvallinen, napsauta alla olevaa ruutua ja "
++#~ "NetworkManager ei kysy tätä vahvistusikkunaa enää uudestaan."
++
++#~ msgid "Anonymous Identity:"
++#~ msgstr "Anonyymi tunniste:"
++
++#~ msgid "Authentication:"
++#~ msgstr "Tunnistautuminen:"
++
++#~ msgid "Broadcast Address:"
++#~ msgstr "Broadcast-osoite:"
++
++#~ msgid "CA Certificate File:"
++#~ msgstr "CA-varmenteen tiedosto:"
++
++#~ msgid "C_onnect"
++#~ msgstr "_Yhdistä"
++
++#~ msgid "Client Certificate File:"
++#~ msgstr "Asiakasvarmenteen tiedosto:"
++
++#~ msgid "Connection Information"
++#~ msgstr "Tietoja yhteydestä"
++
++#~ msgid "Default Route:"
++#~ msgstr "Oletusyhdyskäytävä:"
++
++#~ msgid "Destination Address:"
++#~ msgstr "Kohdeosoite:"
++
++#~ msgid "Driver:"
++#~ msgstr "Ajuri:"
++
++#~ msgid "EAP Method:"
++#~ msgstr "EPA-menetelmä:"
++
++#~ msgid "Hardware Address:"
++#~ msgstr "Laiteosoite:"
++
++#~ msgid "IP Address:"
++#~ msgstr "IP-osoite:"
++
++#~ msgid "Identity:"
++#~ msgstr "Tunniste:"
++
++#~ msgid "Interface:"
++#~ msgstr "Verkkolaite:"
++
++#~ msgid "Key Type:"
++#~ msgstr "Avaimen tyyppi:"
++
++#~ msgid "Key:"
++#~ msgstr "Avain:"
++
++#~ msgid ""
++#~ "None\n"
++#~ "WEP 128-bit Passphrase\n"
++#~ "WEP 64/128-bit Hex\n"
++#~ "WEP 64/128-bit ASCII\n"
++#~ msgstr ""
++#~ "Ei mitään\n"
++#~ "WEP 128-bittinen tunnuslause\n"
++#~ "WEP 64/128-bittinen heksadesimaali\n"
++#~ "WEP 64/128-bittinen ASCII\n"
++
++#~ msgid ""
++#~ "Open System\n"
++#~ "Shared Key"
++#~ msgstr ""
++#~ "Avoin järjestelmä\n"
++#~ "Jaettu avain"
++
++#~ msgid "Other Wireless Network..."
++#~ msgstr "Muu langaton verkko..."
++
++#~ msgid "Passphrase:"
++#~ msgstr "Tunnuslause:"
++
++#~ msgid "Password:"
++#~ msgstr "Salasana:"
++
++#~ msgid "Primary DNS:"
++#~ msgstr "Ensisijainen DNS:"
++
++#~ msgid "Private Key File:"
++#~ msgstr "Salausavaimen tiedosto"
++
++#~ msgid "Private Key Password:"
++#~ msgstr "Salausavaimen salasana:"
++
++#~ msgid "Secondary DNS:"
++#~ msgstr "Toissijainen DNS:"
++
++#~ msgid "Select the CA Certificate File"
++#~ msgstr "Valise CA-varmenteen tiedosto"
++
++#~ msgid "Select the Client Certificate File"
++#~ msgstr "Valitse asiakasvarmenteen tiedosto"
++
++#~ msgid "Select the Private Key File"
++#~ msgstr "Valitse salaisen avaimen tiedosto"
++
++#~ msgid "Show key"
++#~ msgstr "Näytä avain"
++
++#~ msgid "Show passphrase"
++#~ msgstr "Näytä tunnuslause:"
++
++#~ msgid "Show password"
++#~ msgstr "Näytä salasana"
++
++#~ msgid "Show passwords"
++#~ msgstr "Näytä salasanat"
++
++#~ msgid "Speed:"
++#~ msgstr "Nopeus:"
++
++#~ msgid "Subnet Mask:"
++#~ msgstr "Aliverkkopeite:"
++
++#~ msgid "Type:"
++#~ msgstr "Tyyppi:"
++
++#~ msgid "User Name:"
++#~ msgstr "Käyttäjätunnus:"
++
++#~ msgid "Wireless Network Key Required"
++#~ msgstr "Langattoman verkon salausavain vaaditaan"
++
++#~ msgid "Wireless _adapter:"
++#~ msgstr "Langaton _verkkolaite:"
++
++#~ msgid "_Always Trust this Wireless Network"
++#~ msgstr "_Luota aina tähän langattomaan verkkoon"
++
++#~ msgid "_Don't remind me again"
++#~ msgstr "_Älä huomauta uudestaan"
++
++#~ msgid "_Login to Network"
++#~ msgstr "_Kirjaudu verkkoon"
++
++#~ msgid "_Network Name:"
++#~ msgstr "_Verkon nimi:"
++
++#~ msgid "_Wireless Security:"
++#~ msgstr "_Langaton tietoturva:"
++
++#~ msgid "You are now connected to the Ad-Hoc wireless network '%s'."
++#~ msgstr "Yhteys langattomaan Ad-Hoc-verkkoon \"%s\" on nyt muodostettu."
++
++#~ msgid "You are now connected to the wireless network '%s'."
++#~ msgstr "Yhteys langattomaan verkkoon \"%s\" on nyt muodostettu."
++
++#~ msgid "You are now connected to the wired network."
++#~ msgstr "Yhteys kiinteään verkkoon on nyt muodostettu."
++
++#~ msgid "Connection Established"
++#~ msgstr "Yhteys muodostettu"
++
++#~ msgid "Disconnected"
++#~ msgstr "Yhteys katkaistu"
+
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "Yhteys kiinteään verkkoon on nyt muodostettu."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "Yhteys muodostettu"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "Yhteys katkaistu"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "Yhteys verkkoon on katkaistu."
++#~ msgid "The network connection has been disconnected."
++#~ msgstr "Yhteys verkkoon on katkaistu."
+
+ #~ msgid "WEP 40/128-bit ASCII"
+ #~ msgstr "WEP 40/128-bittinen ASCII"
+diff -urN NetworkManager-0.6.5/po/it.po NetworkManager-SVNr3284/po/it.po
+--- NetworkManager-0.6.5/po/it.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/it.po 2008-02-04 16:01:02.000000000 +0100
+@@ -1,14 +1,14 @@
+ # Italian translation for NetworkManager
+ # Copyright (C) 2004-2005 THE NetworkManager CopyRight Holder
+ # This file is distributed under the same license as the NetworkManager package.
+-# Francesco Marletta <francesco.marletta@tiscali.it>, 2004-2005.
++# Francesco Marletta <francesco.marletta@tiscali.it>, 2004-2007.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: NetworkManager 0.1\n"
++"Project-Id-Version: NetworkManager 0.6\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
+-"PO-Revision-Date: 2006-06-09 09:52\n"
++"POT-Creation-Date: 2007-04-23 16:32+0200\n"
++"PO-Revision-Date: 2007-03-11 21:54+0100\n"
+ "Last-Translator: Novell Language <language@novell.com>\n"
+ "Language-Team: Novell Language <language@novell.com>\n"
+ "MIME-Version: 1.0\n"
+@@ -16,726 +16,11 @@
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+-# [NdT] è il titolo della finestra
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "Frase di accesso per la rete wireless %s"
+-
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "Connessione alla rete wireless \"%s\" fallita."
+-
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "Connessione alla rete cablata fallita."
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "Errore nel visualizzare le informazioni di connessione:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr "Impossibile trovare alcune risorse richieste (il file glade)!"
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "Nessuna connessione attiva!"
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "Ethernet cablata (%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "Ethernet wireless (%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "Applet NetworkManager"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Copyright © 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr ""
+-"Un'applet per l'aerea di notifica per la gestione delle interfacce e delle "
+-"connessioni di rete"
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr "Francesco Marletta <francesco.marletta@tiscali.it>"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "Accesso VPN fallito"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr ""
+-"Impossibile avviare la connessione VPN “%s” a causa di un fallimento "
+-"nell'accesso."
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "Avvio VPN fallito"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"Impossibile avviare la connessione VPN “%s” a causa di un fallimento "
+-"nell'avvio del programma VPN."
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "Connessione VPN fallita"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr ""
+-"Impossibile avviare la connessione VPN “%s” a causa di un errore nella "
+-"connessione."
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "Errore di configurazione VPN"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "La connessione VPN “%s” non è stata configurata correttamente."
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"Impossibile avviare la connessione “%s” perché il server VPN non ha "
+-"restituito una configurazione di rete adeguata."
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "Messaggio di accesso VPN"
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"L'applet NetworkManager non è riuscita a trovare alcune risorse richieste "
+-"(il file glade non è stato trovato)."
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr "Il dispositivo di rete “%s (%s)” non supporta la scansione wireless."
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr ""
+-"Il dispositivo di rete “%s (%s)” non supporta il riconoscimento del "
+-"collegamento."
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "Preparazione del dispositivo %s per la rete cablata in corso..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr ""
+-"Preparazione del dispositivo %s per la rete wireless \"%s\" in corso..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "Configurazione del dispositivo %s per la rete cablata in corso..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "Tentativo di unirsi alla rete wireless \"%s\" in corso..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "In attesa della chiave di rete per la rete wireless \"%s\"..."
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "Richiesta di un indirizzo di rete dalla rete cablata in corso..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr ""
+-"Richiesta di un indirizzo di rete dalla rete wireless \"%s\" in corso..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "Chiusura della connessione alla rete cablata in corso..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "Chiusura della connessione alla rete wireless \"%s\" in corso..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "NetworkManager non è in esecuzione"
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "Funzionalità di rete disabilitate"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "Nessuna connessione di rete"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "Connessione di rete cablata"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Connesso ad una rete wireless ad-hoc"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "Connessione di rete wireless a \"%s\" (%d%%)"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "Connessione VPN a “%s”"
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "Connessione VPN a “%s” in corso"
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "_Connetti ad altre reti wireless..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "Crea _nuova rete wireless..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "Connessioni _VPN"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "_Configura VPN..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "_Disconnetti VPN..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "Connessioni mo_dem"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "Connetti a %s..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "Disconnetti da %s..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "Non è stata trovata alcuna interfaccia di rete"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "NetworkManager non è in esecuzione..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "Abilita _rete"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "Abilita _wireless"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "_Informazioni connessione"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "A_iuto"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "I_nformazioni"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"L'applet NetworkManager non è riuscita a trovare alcune risorse richieste. "
+-"Non può continuare l'esecuzione.\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "Sistema aperto"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "Chiave condivisa"
+-
+-# o Automatica?
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "Automatica (predefinito)"
+-
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "WEP dinamico"
+-
+-# Dovrebbe riferirsi a "sicurezza"
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "Nessuna"
+-
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "ASCII 128 bit/WEP 40"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "Esadecimale 128 bit/WEP 40"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "Frase di accesso WEP 128 bit"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-# [NdT] va tradotto?
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA2 Enterprise"
+-
+-# [NdT] va tradotto?
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA2 personale"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA personale"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "Orientamento"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "L'orientamento del vassoio."
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "Rete cablata (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "Rete _cablata"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "Rete wireless (%s)"
+-msgstr[1] "Reti wireless (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "Rete wireless"
+-msgstr[1] "Reti wireless"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (Unicode non valido)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"Come impostazione predefinita, il nome della rete wireless è impostata con "
+-"il nome del computer, %s, senza cifratura abilitata"
+-
+-# [NdT] è il titolo della finestra
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "Creazione nuova rete wireless"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr ""
+-"Inserire il nome e le impostazioni di sicurezza della rete wireless che si "
+-"desidera creare."
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "Crea nuova rete wireless"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "Rete wireless esistente"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr "Inserire il nome delle rete wireless a cui ci si vuole connettere."
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "Connetti ad altre reti wireless"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "Errore nella connessione alla rete wireless"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"La rete wireless richiesta richiede funzionalità di sicurezza non supportate "
+-"dall'hardware presente."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "Impossibile avviare la connessione VPN \"%s\""
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"Impossibile trovare la finestra di dialogo per la connessione VPN di tipo \"%"
+-"s\". Contattare l'amministratore di sistema."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"Si è verificato un problema avviando la finestra di dialogo di "
+-"autenticazione per la connessione VPN di tipo \"%s\". Contattare "
+-"l'amministratore di sistema."
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Informazioni connessione attiva</span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Frase chiave richiesta dalla rete "
+-"wireless</span>\n"
+-"\n"
+-"È richiesta una frase chiave o una chiave di cifratura per accedere alla "
+-"rete wireless \"%s\"."
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Funzionalità di rete ridotta</span>\n"
+-"\n"
+-"%s Non sarà del funzionale."
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Conferma accesso a rete wireless</"
+-"span>\n"
+-"\n"
+-"Si è scelto di accedere alla rete wireless \"%s\". Se si ha la certezza che "
+-"questa rete wireless è sicura, selezionare la casella di spunta sottostante "
+-"e NetworkManager non chiederà la conferma ai successivi accessi."
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "Identità anonima:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "Autenticazione:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "Indirizzo broadcast:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "File del certificato della CA:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "C_onnetti"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "File del certificato del client:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "Informazioni connessione"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "Rotta predefinita:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "Indirizzo destinazione:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "Driver:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "Metodo EAP:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "Indirizzo hardware:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "Indirizzo IP:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "Identità:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "Interfaccia:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "Tipo di chiave:"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "Chiave:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"Nessuna\n"
+-"Frase di accesso WEP 128 bit\n"
+-"WEP 64/128 bit esadecimale\n"
+-"WEP 64/128 bit ASCII\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"Sistema aperto\n"
+-"Chiave condivisa"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "Altra rete wireless..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "Frase chiave:"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "Password:"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "DNS primario:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "File della chiave privata:"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "Password della chiave privata:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "DNS secondario:"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Selezionare il file con il certificato della CA"
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "Selezionare il file con il certificato del client"
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "Selezionare il file con la chiave privata"
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "Mostra chiave"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "Mostra frase chiave"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "Mostra password"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "Mostra le password"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "Velocità:"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "Maschera di rete:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "Tipo:"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "Nome utente:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "Richiesta chiave per rete wireless"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "_Adattatore wireless:"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "Dare _sempre fiducia a questa rete wireless"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "_Non ricordarlo più"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "_Login alla rete"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "_Nome rete:"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "Sicurezza _wireless:"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+ msgstr "Impossibile aggiungere una connessione VPN"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+@@ -743,59 +28,59 @@
+ "Non è stato trovato un software VPN adatto nel sistema. Contattare "
+ "l'amministratore di sistema."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+ msgstr "Impossibile importare la connessione VPN"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+ "file '%s'. Contact your system administrator."
+ msgstr ""
+-"Impossibile trovare un software adatto ad importare il file \"%2$s\" per la "
+-"connessione VPN di tipo \"%1$s\". Contattare l'amministratore di sistema."
++"Impossibile trovare un software adatto ad importare il file “%2$s” per la "
++"connessione VPN di tipo “%1$s”. Contattare l'amministratore di sistema."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+-msgstr "Errore nel recuperare la connessione VPN \"%s\""
++msgstr "Errore nel recuperare la connessione VPN “%s”"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+ "system administrator."
+ msgstr ""
+-"Impossibile trovare il file di interfaccia per la connessione VPN di tipo \"%"
+-"s\". Contattare l'amministratore di sistema."
++"Impossibile trovare il file di interfaccia per la connessione VPN di tipo “%"
++"s”. Contattare l'amministratore di sistema."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+-msgstr "Eliminare la connessione VPN \"%s\"?"
++msgstr "Eliminare la connessione VPN “%s”?"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+ "need your system administrator to provide information to create a new "
+ "connection."
+ msgstr ""
+-"Tutte le informazioni sulla connessione VPN \"%s\" verranno perse e sarà "
++"Tutte le informazioni sulla connessione VPN “%s” verranno perse e sarà "
+ "necessario chiedere informazioni all'amministratore di sistema per creare "
+ "una nuova connessione."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+ msgstr "Impossibile caricare"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+ msgstr "Impossibile trovare alcune risorse richieste (il file glade)!"
+
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ msgid "Edit VPN Connection"
+ msgstr "Modifica connessione VPN"
+
+@@ -849,7 +134,7 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:13
+ msgid "Manage Virtual Private Network Connections"
+-msgstr "Gestione delle connessioni alle reti private virtuali (VPN)"
++msgstr "Gestione connessioni Reti Private Virtuali (VPN)"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:14
+ msgid ""
+@@ -859,8 +144,8 @@
+ "It will require some information, such as IP addresses and secrets. Please "
+ "see your system administrator to obtain this information."
+ msgstr ""
+-"Questo assistente vi guiderà nella creazione di una connessione ad una rete "
+-"privata virtuale (VPN).\n"
++"Questo assistente vi guiderà nella creazione di una connessione ad una Rete "
++"Privata Virtuale (VPN).\n"
+ "\n"
+ "Richiederà alcune informazioni, come indirizzi IP e dati segreti. Contattare "
+ "l'amministratore di sistema per ottenere queste informazioni."
+@@ -901,11 +186,11 @@
+ msgid "WPA2 Automatic"
+ msgstr "WPA2 automatica"
+
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "nessuna"
+
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+ msgid ""
+ "unable to create netlink socket for monitoring wired ethernet devices - %s"
+@@ -913,7 +198,7 @@
+ "impossibile creare un socket netlink per monitorare i dispositivi di rete "
+ "cablata ethernet - %s"
+
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+ msgid ""
+ "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+@@ -921,166 +206,35 @@
+ "impossibile effettuare il bind al socket netlink per monitorare i "
+ "dispositivi di rete cablata ethernet - %s"
+
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
+ msgid "operation took too long"
+ msgstr "l'operazione ha impiegato troppo tempo"
+
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
+ msgid "received data from wrong type of sender"
+ msgstr "dati ricevuti dal tipo di mittente errato"
+
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
+ msgid "received data from unexpected sender"
+ msgstr "dati ricevuti da un mittente inatteso"
+
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
+ msgid "too much data was sent over socket and some of it was lost"
+ msgstr ""
+ "sono stati inviati troppi dati sul socket e una loro parte è stata persa"
+
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
+ msgid "error occurred while waiting for data on socket"
+ msgstr "si è verificato un errore durante l'attesa dei dati sul socket"
+
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Adesso si è connessi alla rete wireless ad-hoc \"%s\"."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "Adesso si è connessi alla rete wireless \"%s\"."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "Adesso si è connessi alla rete cablata."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "Connessione stabilita"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "Disconnesso"
+-
+-# [NdT] certo che l'originare era proprio brutto
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "La connessione di rete è stata interrotta."
+-
+-#~ msgid "Modify Wireless Networks"
+-#~ msgstr "Modifica le reti wireless"
+-
+-#~ msgid "*"
+-#~ msgstr "*"
+-
+-#~ msgid ""
+-#~ "128-bit Passphrase (WEP)\n"
+-#~ "Ascii Key (WEP)\n"
+-#~ "Hex Key (WEP)"
+-#~ msgstr ""
+-#~ "Frase chiave a 128-bit (WEP)\n"
+-#~ "Chiave Ascii (WEP)\n"
+-#~ "Chiave Esadecimale (WEP)"
+-
+-#~ msgid "Ascii Key:"
+-#~ msgstr "Chiave ascii:"
+-
+-#~ msgid "You must log in to access the private network %s"
+-#~ msgstr "È necessario effettuare il login per accedere alla rete privata %s"
+-
+-#~ msgid "Scanning for wireless networks..."
+-#~ msgstr "Scansione di reti wireless..."
+-
+-#~ msgid "Pause Wireless Scanning"
+-#~ msgstr "Sospendere la scansione wireless"
+-
+-#~ msgid "Resume Wireless Scanning"
+-#~ msgstr "Riprendere la scansione wireless"
+-
+-#~ msgid "Stop All Wireless Devices"
+-#~ msgstr "Ferma tutti i dispositivi wireless"
+-
+-#~ msgid "Start All Wireless Devices"
+-#~ msgstr "Avvia tutti i dispositivi wireless"
+-
+-#~ msgid ""
+-#~ "128-bit passphrase (WEP)\n"
+-#~ "Ascii key (WEP)\n"
+-#~ "Hex key (WEP)"
+-#~ msgstr ""
+-#~ "Frase chiave a 128-bit (WEP)\n"
+-#~ "Chiave ASCII (WEP)\n"
+-#~ "Chiave esadecimale (WEP)"
+-
+-#~ msgid "Key type:"
+-#~ msgstr "Tipo di chiave:"
+-
+-#~ msgid "Wireless _network:"
+-#~ msgstr "_Rete wireless:"
+-
+-#~ msgid "Stop automatically running the networking applet?"
+-#~ msgstr "Fermare l'avvio automatico dell'applet di rete?"
+-
+-#~ msgid ""
+-#~ "The networking applet will now terminate, but will automatically launch "
+-#~ "the next time you login. Would you like to stop automatically running "
+-#~ "the networking applet on login?"
+-#~ msgstr ""
+-#~ "L'applet di rete terminerà adesso, ma verrà avviata automaticamente al "
+-#~ "prossimo accesso al sistema. Si vuole fermare l'avvio automatico "
+-#~ "dell'applet di rete all'accesso?"
+-
+-#~ msgid "_Remove"
+-#~ msgstr "_Rimuovi"
+-
+-#~ msgid "<span weight=\"bold\">Wireless Networks:</span>"
+-#~ msgstr "<span weight=\"bold\">Reti wireless:</span>"
+-
+-#~ msgid "Hex Key:"
+-#~ msgstr "Chiave esadecimale:"
+-
+-#~ msgid "Copyright (C) 2004-2005 Red Hat, Inc."
+-#~ msgstr "Copyright © 2004-2005 Red Hat, Inc."
+-
+-#~ msgid "Connecting to a wired network..."
+-#~ msgstr "Connessione ad una rete cablata in corso..."
+-
+-#~ msgid "Wireless network connection"
+-#~ msgstr "Connessione di rete wireless"
+-
+-#~ msgid "Connecting to wireless network '%s'..."
+-#~ msgstr "Connessione alla rete wireless \"%s\" in corso..."
+-
+-#~ msgid "Other Wireless Networks..."
+-#~ msgstr "Altre reti wireless..."
+-
+-#~ msgid "Create new Wireless Network..."
+-#~ msgstr "Crea nuova rete wireless..."
+-
+-#~ msgid "Help"
+-#~ msgstr "Aiuto"
+-
+-#~ msgid "About"
+-#~ msgstr "Informazioni"
+-
+-#~ msgid ""
+-#~ "Enter the ESSID and security settings of the wireless network you wish to "
+-#~ "create."
+-#~ msgstr ""
+-#~ "Inserire l'ESSID e le impostazioni di sicurezza della rete wireless che "
+-#~ "si desidera creare."
+-
+-#~ msgid "Custom wireless network"
+-#~ msgstr "Rete wireless personalizzata"
+-
+-#~ msgid ""
+-#~ "Enter the ESSID of the wireless network to which you wish to connect."
+-#~ msgstr "Inserire l'ESSID della rete wireless a cui ci si vuole connettere."
++#: ../src/nm-ap-security-wpa-eap.c:96 ../src/nm-ap-security-wpa-eap.c:120
++msgid "WPA2 Enterprise"
++msgstr "WPA2 aziendale"
+
+-#~ msgid "Connect with encryption enabled"
+-#~ msgstr "Connessione con cifratura attiva"
++#: ../src/nm-ap-security-wpa-eap.c:98 ../src/nm-ap-security-wpa-eap.c:125
++msgid "WPA Enterprise"
++msgstr "WPA aziendale"
+
+-#~ msgid "Wired Network"
+-#~ msgstr "Rete cablata"
++#: ../src/nm-ap-security-leap.c:66 ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
+diff -urN NetworkManager-0.6.5/po/ja.po NetworkManager-SVNr3284/po/ja.po
+--- NetworkManager-0.6.5/po/ja.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/ja.po 2008-02-04 16:01:02.000000000 +0100
+@@ -1,793 +1,95 @@
+ # Japanese translation for NetworkManager
+ # Copyright (C) 2005 Dan Williams <dcbw@redhat.com>
+ # This file is distributed under the same license as the NetworkManager package.
+-# Satoru SATOH <ss@gnome.gr.jp>, 2005.
++# Satoru SATOH <ss@gnome.gr.jp>, 2005 - 2007.
+ #
+ msgid ""
+ msgstr ""
+-"Project-Id-Version: NetworkManager 0.3.1\n"
++"Project-Id-Version: NetworkManager NETWORKMANAGER_0_6_0_RELEASE\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
+-"PO-Revision-Date: 2006-06-16 14:06\n"
+-"Last-Translator: Novell Language <language@novell.com>\n"
+-"Language-Team: Novell Language <language@novell.com>\n"
++"POT-Creation-Date: 2007-08-27 00:21+0900\n"
++"PO-Revision-Date: 2007-08-26 23:34+0900\n"
++"Last-Translator: Satoru SATOH <ss@gnome.gr.jp>\n"
++"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0;\n"
+
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "ワイヤレスネットワーク %s のパスフレーズ"
+-
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "ワイヤレスネットワーク「%s」への接続に失敗しました。 "
+-
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "有線ネットワークへの接続に失敗しました。"
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "接続情報の表示エラー:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr "必要なリソース(グレードファイル)を見つけることができませんでした。"
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "有効な接続がありません。"
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "有線イーサネット(%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "ワイヤレスイーサネット(%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "NetworkManagerアプレット"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Copyright © 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr "ネットワークデバイスと接続を管理する通知領域アプレット。"
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr ""
+-"相花 毅 <aihana@gnome.gr.jp>\n"
+-"Akira TAGOH <tagoh@gnome.gr.jp>\n"
+-"Yukihiro Nakai <nakai@gnome.gr.jp>\n"
+-"Takuo KITAME <kitame@debian.org>\n"
+-"日本GNOMEユーザー会 http://www.gnome.gr.jp"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "VPNログインの失敗"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr "ログインの失敗により、VPN接続「%s」を起動できませんでした。"
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "VPNの起動の失敗"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"VPNプログラムの起動の失敗により、VPN接続「%s」を起動できませんでした。 "
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "VPN接続の失敗"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr "接続エラーにより、VPN接続「%s」を起動できませんでした。"
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "VPN設定エラー"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "VPN接続「%s」は正しく設定されていません。"
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"VPNサーバーが適切なネットワーク設定を返さなかったため、VPN接続「%s」を起動で"
+-"きませんでした。"
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "VPNログインメッセージ "
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"NetworkManager アプレットはいくつかの必要なリソースglade ファイル)をみつける"
+-"ことができませんでした"
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr ""
+-"ネットワークデバイス「%s (%s)」はワイヤレススキャニングをサポートしません。 "
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr "ネットワークデバイス「%s (%s)」はリンク検索をサポートしません。"
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "有線ネットワークのデバイス %s を準備中..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr "ワイヤレスネットワーク「%s」のデバイス %s を準備中..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "有線ネットワークにデバイス %s を設定中..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "ワイヤレスネットワーク「%s」に接続中..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "ワイヤレスネットワーク「%s」のネットワークキーを待機中...."
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "有線ネットワークからネットワークアドレスをリクエスト中..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr "ワイヤレスネットワーク「%s」からネットワークアドレスをリクエスト中..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "有線ネットワークへの接続完了..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "ワイヤレスネットワーク「%s」への接続完了..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "NetworkManager は実行されていません"
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "ネットワークが無効です"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "ネットワーク接続なし"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "無線ネットワーク接続"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Ad-Hoc 無線ネットワークに接続しました"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "「%s」(%d%%)へのワイヤレスネットワーク接続"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "「%s」へのVPN接続"
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "「%s」へのVPN接続"
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "他のワイヤレスネットワークへの接続(_C)..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "新しいワイヤレスネットワークを作成(_N)..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "VPN接続(_V)"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "VPNの設定(_C)..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "VPNの切断(_D)..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "ダイヤルアップ接続(_D)"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "%s に接続します..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "%s から接続解除します..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "ネットワークデバイスがみつかりませんでした"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "NetworkManager は実行されていません..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "ネットワークの有効化(_N)"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "ワイヤレスの有効化(_W)"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "接続情報(_I)"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "ヘルプ(_H)"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "情報(_A)"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"NetworkManagerアプレットは必要なリソースを見つけることができませんでした。続"
+-"行できません。\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "オープンシステム"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "共有キー"
+-
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "自動(デフォルト)"
+-
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "動的WEP"
+-
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "なし"
+-
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "WEP 64/128ビットASCII"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "WEP 64/128ビット16進数"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "WEP 128-ビットパラフレーズ"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA Personal"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA Personal"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "向き"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "トレイの向き"
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "無線ネットワーク (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "有線ネットワーク(_W)"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "無線ネットワーク (%s)"
+-msgstr[1] "無線ネットワーク (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "無線ネットワーク"
+-msgstr[1] "無線ネットワーク"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (不正な Unicode)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"デフォルトでは、暗号化が無効の状態で、ワイヤレスネットワーク名がコンピュータ"
+-"名 %s に設定されます。"
+-
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "新しい無線ネットワークを作成"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr "作成するワイヤレスネットワークの名前とセキュリティ設定を入力します。"
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "新しい無線ネットワークを作成"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "既存のワイヤレスネットワーク"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr "接続するワイヤレスネットワークの名前を入力します。"
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "他のワイヤレスネットワークへの接続"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "ワイヤレスネットワークへの接続エラー"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"リクエストされたワイヤレスネットワークには、ハードウェアでサポートされていな"
+-"いセキュリティ機能が必要です。"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "VPN接続「%s」を起動できません"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"VPN接続タイプ「%s」の認証ダイアログを見つけることができませんでした。システム"
+-"管理者にご連絡ください。 "
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"VPN接続タイプ「%s」の認証ダイアログを起動する際に問題が発生しました。システム"
+-"管理者にご連絡ください。 "
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr "<span weight=\"bold\" size=\"larger\">有効な接続情報</span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">無線ネットワークにはパスフレーズが必要"
+-"です</span>\n"
+-"\n"
+-"無線ネットワーク '%s' にアクセスするにはパスフレーズか暗号化鍵が必要です"
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">縮小されたネットワーク機能</span>\n"
+-"\n"
+-"%s 完全には機能しません。"
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login 確認</span>\n"
+-"\n"
+-"ワイヤレスネットワーク「%s」にログインするように選択しました。このワイヤレス"
+-"ネットワークがセキュアである場合、次のチェックボックスを有効にすると、"
+-"NetworkManagerは次回以降のログインで確認を要求しません。"
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "匿名識別情報:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "認証:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "ブロードキャストアドレス:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "CA認定ファイル:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "接続(_O)"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "クライアント認定ファイル:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "接続情報"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "デフォルトルート:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "送信先アドレス:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "ドライバ:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "EAPメソッド:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "ハードウェアアドレス:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "IPアドレス:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "識別情報:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "インタフェース:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "鍵の種別"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "キー:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"なし\n"
+-"WEP 128-ビットパスフレーズ\n"
+-"WEP 64/128-16ビット\n"
+-"WEP 64/128-ビット ASCII\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"システム\n"
+-"共有キーを開く"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "他のワイヤレスネットワーク..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "パスフレーズ:"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "パスワード:"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "プライマリDNS:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "プライベートキーファイル:"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "プライベートキーパスワード:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "セカンダリDNS:"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Ca証明書ファイルを選択する"
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "クライアント証明書ファイルを選択する"
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "プライベートキーファイルを選択する"
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "キーを表示する"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "パスフレーズを表示する"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "パスワードを表示する"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "パスワードを表示する"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "速度:"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "サブネットマスク:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "種別:"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "ユーザ名:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "無線ネットワーク鍵が必要です"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "無線アダプタ(_A):"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "このワイヤレスネットワークを常に信頼する(_A)"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "このダイアログを再表示しない(_D)"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "ネットワークにログイン(_L)"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "ネットワーク名(_N):"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "ワイヤレスセキュリティ(_W):"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+-msgstr "VPN接続を追加できません"
++msgstr "VPN 接続を追加できません"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+ msgstr ""
+-"システムに適切なVPNソフトウェアが見つかりませんでした。システム管理者にご連絡"
+-"ください。"
++"システムに適切な VPN ソフトウェアがみつかりませんでした。システム管理者にご連"
++"絡ください。"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+-msgstr "VPN接続をインポートできません"
++msgstr "VPN 接続をインポートできません"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+ "file '%s'. Contact your system administrator."
+ msgstr ""
+-"VPN接続タイプ「%s」がファイル「%s」をインポートするために適切なソフトウェアが"
+-"見つかりません。システム管理者にご連絡ください。"
++"VPN 接続タイプ「%s」がファイル「%s」をインポートするために適切なソフトウェア"
++"が見つかりません。システム管理者にご連絡ください。"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+-msgstr "VPN接続「%s」の取得エラー"
++msgstr "VPN 接続「%s」の取得エラー"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+ "system administrator."
+ msgstr ""
+-"VPN接続タイプ「%s」のUIファイルが見つかりませんでした。システム管理者にご連絡"
+-"ください。"
++"VPN 接続タイプ「%s」の UI ファイルがみつかりませんでした。システム管理者にご"
++"連絡ください。"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+-msgstr "VPN接続「%s」を削除しますか?"
++msgstr "VPN 接続「%s」を削除しますか?"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+ "need your system administrator to provide information to create a new "
+ "connection."
+ msgstr ""
+-"VPN接続「%s」に関する情報はすべて失われます。システム管理者が新しい接続を作成"
+-"するための情報を提供する必要があります。"
++"VPN 接続「%s」に関する情報はすべて失われます。システム管理者が新しい接続を作"
++"成するための情報を提供する必要があります。"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+ msgstr "ロードできません"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+ msgstr "必要なリソースが見つかりません(グレードファイル)。"
+
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ msgid "Edit VPN Connection"
+-msgstr "VPN接続を編集します"
++msgstr "VPN 接続を編集します"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:1
+ msgid "Add a new VPN connection"
+-msgstr "新しいVPN接続を追加します"
++msgstr "新しい VPN 接続を追加します"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:2
+ msgid "Choose which type of VPN connection you wish to create."
+-msgstr "作成するVPN接続のタイプを選択します。"
++msgstr "作成する VPN 接続のタイプを選択します。"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:3
+ msgid "Connect to:"
+@@ -795,19 +97,19 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:4
+ msgid "Create VPN Connection"
+-msgstr "VPN接続を作成する"
++msgstr "VPN 接続を作成する"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:5
+ msgid "Create VPN Connection - 1 of 2"
+-msgstr "VPN接続を作成します - 1/2"
++msgstr "VPN 接続を作成します - 1/2"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:6
+ msgid "Create VPN Connection - 2 of 2"
+-msgstr "VPN接続を作成します - 2/2"
++msgstr "VPN 接続を作成します - 2/2"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:7
+ msgid "Delete the selected VPN connection"
+-msgstr "選択したVPN接続を削除します "
++msgstr "選択した VPN 接続を削除します "
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:8
+ msgid "E_xport"
+@@ -815,19 +117,19 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:9
+ msgid "Edit the selected VPN connection"
+-msgstr "選択したVPN接続を編集する"
++msgstr "選択した VPN 接続を編集する"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:10
+ msgid "Export the VPN settings to a file"
+-msgstr "VPN設定をファイルにエクスポートする"
++msgstr "VPN 設定をファイルにエクスポートする"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:11
+ msgid "Export the selected VPN connection to a file"
+-msgstr "選択したVPN接続をファイルにエクスポートする"
++msgstr "選択した VPN 接続をファイルにエクスポートする"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:12
+ msgid "Finish Creating VPN Connection"
+-msgstr "VPN接続の作成を完了する"
++msgstr "VPN 接続の作成を完了する"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:13
+ msgid "Manage Virtual Private Network Connections"
+@@ -841,22 +143,22 @@
+ "It will require some information, such as IP addresses and secrets. Please "
+ "see your system administrator to obtain this information."
+ msgstr ""
+-"このアシスタントに従って、仮想プライベートネットワーク(VPN)への接続を作成でき"
+-"ます。\n"
++"このアシスタントに従って、仮想プライベートネットワーク (VPN) への接続を作成で"
++"きます。\n"
+ "\n"
+-"IPアドレスなどの情報が必要です。"
++"IP アドレスなどの情報が必要です。"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:17
+ msgid "VPN Connections"
+-msgstr "VPN接続"
++msgstr "VPN 接続"
+
+ #: ../src/nm-ap-security-wep.c:52
+ msgid "40-bit WEP"
+-msgstr "40-ビットWEP"
++msgstr "40-ビット WEP"
+
+ #: ../src/nm-ap-security-wep.c:54
+ msgid "104-bit WEP"
+-msgstr "104-ビットWEP"
++msgstr "104-ビット WEP"
+
+ #: ../src/nm-ap-security-wpa-psk.c:50
+ msgid "WPA TKIP"
+@@ -868,7 +170,7 @@
+
+ #: ../src/nm-ap-security-wpa-psk.c:54
+ msgid "WPA Automatic"
+-msgstr "WPA自動"
++msgstr "WPA 自動"
+
+ #: ../src/nm-ap-security-wpa-psk.c:59
+ msgid "WPA2 TKIP"
+@@ -880,13 +182,13 @@
+
+ #: ../src/nm-ap-security-wpa-psk.c:63
+ msgid "WPA2 Automatic"
+-msgstr "WPA2自動"
++msgstr "WPA2 自動"
+
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "なし"
+
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+ msgid ""
+ "unable to create netlink socket for monitoring wired ethernet devices - %s"
+@@ -894,7 +196,7 @@
+ "有線イーサネットデバイスをモニターするネットリンクソケットを作成できません - "
+ "%s"
+
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+ msgid ""
+ "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+@@ -902,84 +204,39 @@
+ "有線イーサネットデバイスをモニターするネットリンクソケットをバインドできませ"
+ "ん - %s "
+
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
++#, c-format
+ msgid "operation took too long"
+ msgstr "操作に時間がかかり過ぎました"
+
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
++#, c-format
+ msgid "received data from wrong type of sender"
+ msgstr "不正な送信者からデータを受信しました"
+
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
++#, c-format
+ msgid "received data from unexpected sender"
+ msgstr "予期せぬ送信者からデータを受信しました"
+
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
++#, c-format
+ msgid "too much data was sent over socket and some of it was lost"
+ msgstr "ソケット上に送信されたデータが多過ぎ、その一部は失われました"
+
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
++#, c-format
+ msgid "error occurred while waiting for data on socket"
+ msgstr "ソケット上でデータを待機中にエラーが発生しました"
+
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Ad-Hocワイヤレスネットワーク「%s」に現在接続されています。"
++#: ../src/nm-ap-security-wpa-eap.c:95 ../src/nm-ap-security-wpa-eap.c:119
++msgid "WPA2 Enterprise"
++msgstr "WPA Enterprise"
+
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "ワイヤレスネットワーク「%s」に現在接続されています。"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "有線ネットワークに現在接続されています。"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "接続が確立されました"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "切断しました"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "ネットワーク接続が解除されました。"
+-
+-#~ msgid "Modify Wireless Networks"
+-#~ msgstr "無線ネットワークを変更"
+-
+-#~ msgid "*"
+-#~ msgstr "*"
+-
+-#~ msgid ""
+-#~ "128-bit Passphrase (WEP)\n"
+-#~ "Ascii Key (WEP)\n"
+-#~ "Hex Key (WEP)"
+-#~ msgstr ""
+-#~ "128-bit パスフレーズ (WEP)\n"
+-#~ "ASCII 鍵 (WEP)\n"
+-#~ "16 進鍵 (WEP)"
+-
+-#~ msgid "Ascii Key:"
+-#~ msgstr "ASCII 鍵:"
+-
+-#~ msgid "You must log in to access the private network %s"
+-#~ msgstr ""
+-#~ "プライベートネットワーク %s にアクセスするにはログインしなければいけません"
+-
+-#~ msgid "Stop automatically running the networking applet?"
+-#~ msgstr "ネットワークアップレットの実行を自動的に停止しますか?"
+-
+-#~ msgid ""
+-#~ "The networking applet will now terminate, but will automatically launch "
+-#~ "the next time you login. Would you like to stop automatically running "
+-#~ "the networking applet on login?"
+-#~ msgstr ""
+-#~ "ネットワークアプレットは終了しますが、次にログインする際に自動的に起動しま"
+-#~ "す。ログイン時にネットワークアプレットの自動起動を停止しますか?"
++#: ../src/nm-ap-security-wpa-eap.c:97 ../src/nm-ap-security-wpa-eap.c:124
++msgid "WPA Enterprise"
++msgstr "WPA Enterprise"
+
+-#~ msgid "_Remove"
+-#~ msgstr "削除(_R)"
++#: ../src/nm-ap-security-leap.c:66 ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
+diff -urN NetworkManager-0.6.5/po/nb.po NetworkManager-SVNr3284/po/nb.po
+--- NetworkManager-0.6.5/po/nb.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/nb.po 2008-02-04 16:01:02.000000000 +0100
+@@ -8,8 +8,8 @@
+ msgstr ""
+ "Project-Id-Version: NetworkManager 0.1.x\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
+-"PO-Revision-Date: 2006-03-02 12:59+0100\n"
++"POT-Creation-Date: 2007-06-04 12:37+0200\n"
++"PO-Revision-Date: 2007-06-04 12:38+0200\n"
+ "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+ "Language-Team: Norwegian Bokmal <i18n-nb@lister.ping.uio.no>\n"
+ "MIME-Version: 1.0\n"
+@@ -17,710 +17,11 @@
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "Passord for trådløst nettverk %s"
+-
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "Tilkobling til trådløst nettverk «%s» feilet."
+-
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "Tilkobling til trådløst nettverk feilet."
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "Feil under visning av tilkoblingsinformasjon:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr "Fant ikke nødvendige ressurser (glade-filen)."
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "Ingen aktive tilkoblinger!"
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "Kablet nettverk (%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "Trådløst nettverk (%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "NetworkManager panelprogram"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Opphavsrett © 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr "Et panelprogram for å håndtere nettverksenheter og tilkoblinger."
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr "Kjartan Maraas <kmaraas@gnome.org>"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "Feil ved VPN-pålogging"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr "Kunne ikke starte VPN-tilkobling «%s» pga en feil ved pålogging."
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "Feil ved start av VPN"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"Kunne ikke starte VPN-tilkobling «%s» på grunn av feil ved oppstart av VPN-"
+-"programmet."
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "Feil ved tilkobling av VPN"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr "Kunne ikke starte VPN-tilkobling «%s» pga en feil ved tilkobling."
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "Feil i konfigurasjon av VPN"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "VPN-tilkobling «%s» er ikke korrekt konfigurert."
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"Kunne ikke starte VPN-tilkobling «%s» fordi VPN-tjeneren ikke returnerte "
+-"riktig nettverkskonfigurasjon."
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "Påloggingsmelding for VPN"
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"NetworkManager fant ikke nødvendige ressurser (glade-filen ble ikke funnet)."
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr "Nettverksenheten «%s (%s)» støtter ikke søk etter trådløse nettverk."
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr ""
+-"Nettverksenheten «%s (%s)» støtter ikke informasjon om tilkoblet status."
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "Klargjør enhet %s for det trådløse nettverket..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr "Klargjør enhet %s for trådløst nettverk «%s»..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "Konfigurerer enhet %s for kablet nettverk..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "Forsøker å bruke trådløst nettverk «%s»..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "Venter på nettverksnøkkel for trådløst nettverk «%s»..."
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "Ber om en nettverksadresse fra kablet nettverk..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr "Ber om en nettverksadresse fra trådløst nettverk «%s»..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "Fullfører tilkobling til kablet nettverk..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "Fullfører tilkobling til trådløst nettverk «%s»..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "NetworkManager kjører ikke"
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "Nettverk deaktivert"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "Ingen nettverksforbindelse"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "Kablet nettverkforbindelse"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Kobler til et Ad-Hoc trådløst nettverk"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "Trådløs nettverksforbindelse til «%s» (%d%%)"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "VPN-tilkobling til «%s»"
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "Kobler til «%s» via VPN"
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "_Koble til annet trådløst nettverk..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "Opprett _nytt trådløst nettverk..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "_VPN-tilkoblinger"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "_Konfigurer VPN..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "Ko_ble fra VPN..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "_Oppringte tilkoblinger"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "Koble til %s..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "Koble fra %s..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "Ingen nettverksenheter ble funnet"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "NetworkManager kjører ikke..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "_Aktiver nettverk"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "Aktiver _trådløst nettverk"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "Tilkoblings_informasjon"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "_Hjelp"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "_Om"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"Panelprogrammet for NetworkManager fant ikke noen av de nødvendige "
+-"ressursene. Det kan ikke fortsette.\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "Åpent system"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "Delt nøkkel"
+-
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "Automatisk (forvalgt)"
+-
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "Dynamisk WEP"
+-
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "Ingen"
+-
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "WEP 64/128-bit ASCII"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "WEP 64/128-bit heksadesimal"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "WEP 128-bit passord:"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA2 enterprise"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA enterprise"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA2 personlig"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA personlig"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "Orientering"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "Orientering for trauet."
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "Kablet nettverk (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "_Kablet nettverk"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "Trådløst nettverk (%s)"
+-msgstr[1] "Trådløse nettverk (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "Trådløst nettverk"
+-msgstr[1] "Trådløse nettverk"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (ugyldig Unicode)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"Nettverksnavnet er som standard satt til datamaskinens navn, %s, og "
+-"kryptering er ikke aktivert."
+-
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "Opprett nytt trådløst nettverk"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr ""
+-"Oppgi navn og sikkerhetsinnstillinger for det trådløse nettverket du ønsker "
+-"å opprette."
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "Opprett nytt trådløst nettverk"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "Eksisterende trådløse nettverk"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr "Oppgi navnet til det trådløse nettverket du ønsker å koble deg til."
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "Koble til annet trådløst nettverk"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "Feil under tilkobling til trådløst nettverk"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"Valgt trådløst nettverk krever en type sikkerhet som ikke er støttet av ditt "
+-"nettverkskort."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "Kan ikke starte VPN-tilkobling «%s»"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"Fant ikke autentiseringsdialogen for VPN tilkoblingstypen «%s». Kontakt din "
+-"systemadministrator."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"Det oppstod en feil under oppstart av autentiseringsdialogen for VPN "
+-"tilkoblingstypen «%s». Kontakt din systemadministrator."
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Informasjon om aktiv tilkobling</span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Passord kreves for trådløst nettverk</"
+-"span>\n"
+-"\n"
+-"Ett passord eller en krypteringsnøkkel kreves for å aksessere trådløst "
+-"nettverk «%s»."
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Redusert nettverksfunksjonalitet</"
+-"span>\n"
+-"\n"
+-"%s Ikke fullstendig funksjonell."
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Bekreftelse av pålogging på trådløst "
+-"nettverk</span>\n"
+-"\n"
+-"Du har valgt å logge inn på trådløst nettverk «%s». Hvis du er sikker på at "
+-"dette trådløse nettverket er sikkert kan du be NetworkManager om å slutte å "
+-"spørre spørsmål når du kobler deg til det ved å krysse av i boksen nedenfor."
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "Anonym identitet:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "Autentisering:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "Kringkastingsadresse:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "Sertifikatfil for CA:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "K_oble til"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "Sertifikatfil for klient:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "Tilkoblingsinformasjon"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "Forvalgt rute:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "Måladresse:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "Driver:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "EAP-metode:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "Maskinvareadresse:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "IP adresse:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "Identitet:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "Grensesnitt:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "Nøkkeltype:"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "Nøkkel:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"Ingen\n"
+-"WEP passord\n"
+-"WEP 64/128-bit heksadesimal\n"
+-"WEP 64/128-bit ASCII\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"Åpent system\n"
+-"Delt nøkkel"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "Annet trådløst nettverk..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "Passord:"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "Passord:"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "Primær DNS:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "Privat nøkkelfil:"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "Passord for privat nøkkel:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "Sekundær DNS:"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Velg sertifikatfil for CA"
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "Velg sertifikatfil for klient"
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "Velg fil med privat nøkkel"
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "Vis nøkkel"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "Vis passord"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "Vis passord"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "Vis passord"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "Hastighet:"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "Subnettmaske:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "Type:"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "Brukernavn:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "Nøkkel for trådløst nettverk kreves"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "Trådløst _kort:"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "Stol _alltid på dette trådløse nettverket"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "_Ikke vis påminnelse igjen"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "_Logg på nettverk"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "_Nettverksnavn:"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "Tr_ådløs sikkerhet:"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+ msgstr "Kan ikke legge til VPN-tilkobling"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+@@ -728,11 +29,11 @@
+ "Ingen passende VPN-programvare ble funnet på systemet. Kontakt din "
+ "systemadministrator."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+ msgstr "Kan ikke importere VPN-tilkobling"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+@@ -741,12 +42,12 @@
+ "Kan ikke finne passende programvare for VPN-tilkobling av type «%s» for "
+ "import av fil «%s». Kontakt din sysstemadministrator."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+ msgstr "Feil under henting av VPN tilkobling «%s»"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+@@ -755,12 +56,12 @@
+ "Kunne ikke finne brukergrensesnittfiler for VPN-tilkobling type «%s». "
+ "Kontakt din systemadministrator."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+ msgstr "Slett VPN-tilkobling «%s»?"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+@@ -770,16 +71,16 @@
+ "All informasjon om VPN-tilkobling «%s» vil gå tapt og du vil kanskje trenge "
+ "hjelp fra din systemadministrator for å opprette en ny tilkobling."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+ msgstr "Kunne ikke laste"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+ msgstr "Fant ikke nødvendige ressurser (glade-filen)."
+
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ msgid "Edit VPN Connection"
+ msgstr "Rediger VPN-tilkobling"
+
+@@ -885,11 +186,11 @@
+ msgid "WPA2 Automatic"
+ msgstr "WPA2 automatisk"
+
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "ingen"
+
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+ msgid ""
+ "unable to create netlink socket for monitoring wired ethernet devices - %s"
+@@ -897,7 +198,7 @@
+ "kan ikke opprette netlink-plugg for overvåking av kablede ethernet-enheter - "
+ "%s"
+
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+ msgid ""
+ "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+@@ -905,83 +206,35 @@
+ "kan ikke binde til netlink-plugg for overvåking av kablede ethernet-enheter "
+ "- %s"
+
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
+ msgid "operation took too long"
+ msgstr "operasjonen tok for lang tid"
+
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
+ msgid "received data from wrong type of sender"
+ msgstr "mottok data fra feil type avsender"
+
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
+ msgid "received data from unexpected sender"
+ msgstr "mottok data fra uventet avsender"
+
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
+ msgid "too much data was sent over socket and some of it was lost"
+ msgstr "for mye data ble sendt over pluggen og noe data gikk tapt"
+
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
+ msgid "error occurred while waiting for data on socket"
+ msgstr "det skjedde en feil under venting på data på sokkel"
+
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Du er nå koblet til Ad-Hoc trådløst nettverk «%s»."
++#: ../src/nm-ap-security-wpa-eap.c:96 ../src/nm-ap-security-wpa-eap.c:120
++msgid "WPA2 Enterprise"
++msgstr "WPA2 enterprise"
+
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "Du er nå koblet til trådløst nettverk «%s»."
++#: ../src/nm-ap-security-wpa-eap.c:98 ../src/nm-ap-security-wpa-eap.c:125
++msgid "WPA Enterprise"
++msgstr "WPA enterprise"
+
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "Du er nå koblet til kablet nettverk."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "Tilkobling etablert"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "Frakoblet"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "Nettverksforbindelsen er frakoblet."
+-
+-#~ msgid "WEP 40/128-bit ASCII"
+-#~ msgstr "WEP 40/128-bit ASCII"
+-
+-#~ msgid "WEP 40/128-bit hex"
+-#~ msgstr "WEP 40/128-bit heksadesimal"
+-
+-#~ msgid "WEP Passphrase"
+-#~ msgstr "WEP Passord:"
+-
+-#~ msgid ""
+-#~ "None\n"
+-#~ "WEP Passphrase\n"
+-#~ "WEP 40/128-bit hex\n"
+-#~ "WEP 40/128-bit ASCII\n"
+-#~ msgstr ""
+-#~ "Ingen\n"
+-#~ "WEP passord\n"
+-#~ "WEP 40/128-bit heksadesimal\n"
+-#~ "WEP 40/128-bit ASCII\n"
+-
+-#~ msgid "Stop automatically running the networking applet?"
+-#~ msgstr "Stopp automatisk oppstart av nettverkspanelprogrammet?"
+-
+-#~ msgid ""
+-#~ "The networking applet will now terminate, but will automatically launch "
+-#~ "the next time you login. Would you like to stop automatically running "
+-#~ "the networking applet on login?"
+-#~ msgstr ""
+-#~ "Nettverkspanelprogrammet vil nå avslutte, men automatisk starte opp neste "
+-#~ "gang du logger inn. Vil du stoppe automatisk oppstart av dette "
+-#~ "panelprogrammet?"
++#: ../src/nm-ap-security-leap.c:66 ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
+
+-#~ msgid "_Remove"
+-#~ msgstr "Fje_rn fra panelet"
+diff -urN NetworkManager-0.6.5/po/vi.po NetworkManager-SVNr3284/po/vi.po
+--- NetworkManager-0.6.5/po/vi.po 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/po/vi.po 2008-02-04 16:01:02.000000000 +0100
+@@ -1,790 +1,89 @@
+ # Vietnamese translation for Network Manager.
+-# Copyright © 2006 Gnome i18n Project for Vietnamese.
+-# Clytie Siddall <clytie@riverland.net.au>, 2006.
++# Copyright © 2007 Gnome i18n Project for Vietnamese.
++# Clytie Siddall <clytie@riverland.net.au>, 2006-2007.
+ #
+ msgid ""
+ msgstr ""
+ "Project-Id-Version: NetworkManager HEAD\n"
+ "Report-Msgid-Bugs-To: \n"
+-"POT-Creation-Date: 2006-05-29 18:33+0200\n"
+-"PO-Revision-Date: 2006-02-28 17:28+1030\n"
++"POT-Creation-Date: 2007-03-03 03:27+0000\n"
++"PO-Revision-Date: 2007-09-14 22:38+0930\n"
+ "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n"
+ "Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+-"Plural-Forms: nplurals=1; plural=0\n"
+-"X-Generator: LocFactoryEditor 1.6b36\n"
++"Plural-Forms: nplurals=1; plural=0;\n"
++"X-Generator: LocFactoryEditor 1.7b1\n"
+
+-#: ../gnome/applet/applet-compat.c:171 ../gnome/applet/applet-dbus-info.c:919
+-#, c-format
+-msgid "Passphrase for wireless network %s"
+-msgstr "Cụm từ mật khẩu cho mạng vô tuyến %s"
+-
+-#: ../gnome/applet/applet-dbus.c:265
+-#, c-format
+-msgid "Connection to the wireless network '%s' failed."
+-msgstr "Việc kết nối đến mạng vô tuyến « %s » bị lỗi."
+-
+-#: ../gnome/applet/applet-dbus.c:270
+-msgid "Connection to the wired network failed."
+-msgstr "Việc kết nối đến mạng tuyến bị lỗi."
+-
+-#: ../gnome/applet/applet.c:184
+-msgid "Error displaying connection information:"
+-msgstr "Gặp lỗi khi hiển thị thông tin kết nối:"
+-
+-#: ../gnome/applet/applet.c:202
+-msgid "Could not find some required resources (the glade file)!"
+-msgstr "• Không thể tìm thấy một số tài nguyên cần thiết (tập tin glade). •"
+-
+-#: ../gnome/applet/applet.c:213
+-msgid "No active connections!"
+-msgstr "• Không có kết nối hoạt động. •"
+-
+-#: ../gnome/applet/applet.c:234
+-#, c-format
+-msgid "Wired Ethernet (%s)"
+-msgstr "Ethernet tuyến (%s)"
+-
+-#: ../gnome/applet/applet.c:236
+-#, c-format
+-msgid "Wireless Ethernet (%s)"
+-msgstr "Ethernet vô tuyến (%s)"
+-
+-#: ../gnome/applet/applet.c:337 ../gnome/applet/applet.c:362
+-msgid "NetworkManager Applet"
+-msgstr "Tiểu dụng Quản lý mạng"
+-
+-#: ../gnome/applet/applet.c:339 ../gnome/applet/applet.c:364
+-msgid "Copyright © 2004-2005 Red Hat, Inc."
+-msgstr "Bản quyền © năm 2004-2005 Red Hat, Inc."
+-
+-#: ../gnome/applet/applet.c:340 ../gnome/applet/applet.c:365
+-msgid ""
+-"Notification area applet for managing your network devices and connections."
+-msgstr ""
+-"Tiểu dụng vùng thông báo để quản lý các thiết bị và kết nối mạng của bạn."
+-
+-#: ../gnome/applet/applet.c:343 ../gnome/applet/applet.c:370
+-msgid "translator-credits"
+-msgstr "Nhóm Việt hóa Gnome <gnomevi-list@lists.sourceforge.net>"
+-
+-#: ../gnome/applet/applet.c:426
+-msgid "VPN Login Failure"
+-msgstr "Đăng nhập VPN bị lỗi"
+-
+-#: ../gnome/applet/applet.c:427
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a login failure."
+-msgstr "Không thể khởi chạy kết nối VPN « %s » do việc đăng nhập bị lỗi."
+-
+-#: ../gnome/applet/applet.c:431
+-msgid "VPN Start Failure"
+-msgstr "Khởi chạy VPN bị lỗi"
+-
+-#: ../gnome/applet/applet.c:432
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' due to a failure launching the VPN "
+-"program."
+-msgstr ""
+-"Không thể khởi chạy kết nối VPN « %s » do việc khởi chạy chương trình VPN bị "
+-"lỗi."
+-
+-#: ../gnome/applet/applet.c:436 ../gnome/applet/applet.c:446
+-msgid "VPN Connect Failure"
+-msgstr "Kết nối VPN bị lỗi"
+-
+-#: ../gnome/applet/applet.c:437
+-#, c-format
+-msgid "Could not start the VPN connection '%s' due to a connection error."
+-msgstr "Không thể khởi chạy kết nối VPN « %s » do lỗi kết nối."
+-
+-#: ../gnome/applet/applet.c:441
+-msgid "VPN Configuration Error"
+-msgstr "Lỗi cấu hình VPN"
+-
+-#: ../gnome/applet/applet.c:442
+-#, c-format
+-msgid "The VPN connection '%s' was not correctly configured."
+-msgstr "Chưa cấu hình đúng sự kết nối VPN « %s »."
+-
+-#: ../gnome/applet/applet.c:447
+-#, c-format
+-msgid ""
+-"Could not start the VPN connection '%s' because the VPN server did not "
+-"return an adequate network configuration."
+-msgstr ""
+-"Không thể khởi chạy kết nối VPN « %s » vì trình phục vụ VPN chưa trả gởi cấu "
+-"hình mạng hợp lệ."
+-
+-#: ../gnome/applet/applet.c:517
+-msgid "VPN Login Message"
+-msgstr "Thông điệp đăng nhập VPN"
+-
+-#: ../gnome/applet/applet.c:741 ../gnome/applet/applet.c:2508
+-#: ../gnome/applet/other-network-dialog.c:453
+-#: ../gnome/applet/passphrase-dialog.c:228
+-msgid ""
+-"The NetworkManager Applet could not find some required resources (the glade "
+-"file was not found)."
+-msgstr ""
+-"Tiểu dụng Quản lý mạng không thể tìm một số tài nguyên cần thiết (không tìm "
+-"thấy tập tin glade)."
+-
+-#: ../gnome/applet/applet.c:753
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support wireless scanning."
+-msgstr "Thiết bị mạng « %s (%s) » không hỗ trợ khả năng quét vô tuyến."
+-
+-#: ../gnome/applet/applet.c:761
+-#, c-format
+-msgid "The network device \"%s (%s)\" does not support link detection."
+-msgstr "Thiết bị mạng « %s (%s) » không hỗ trợ khả năng phát hiện liên kết."
+-
+-#: ../gnome/applet/applet.c:908
+-#, c-format
+-msgid "Preparing device %s for the wired network..."
+-msgstr "Đang chuẩn bị thiết bị %s cho mạng tuyến..."
+-
+-#: ../gnome/applet/applet.c:910
+-#, c-format
+-msgid "Preparing device %s for the wireless network '%s'..."
+-msgstr "Đang chuẩn bị thiết bị %s cho mạng vô tuyến « %s »..."
+-
+-#: ../gnome/applet/applet.c:918
+-#, c-format
+-msgid "Configuring device %s for the wired network..."
+-msgstr "Đang cấu hình thiết bị %s cho mạng tuyến..."
+-
+-#: ../gnome/applet/applet.c:920
+-#, c-format
+-msgid "Attempting to join the wireless network '%s'..."
+-msgstr "Đang cố tham gia mạng vô tuyến « %s »..."
+-
+-#: ../gnome/applet/applet.c:928
+-#, c-format
+-msgid "Waiting for Network Key for the wireless network '%s'..."
+-msgstr "Đang đợi Khóa mạng cho mạng vô tuyến « %s »..."
+-
+-#: ../gnome/applet/applet.c:936 ../gnome/applet/applet.c:946
+-msgid "Requesting a network address from the wired network..."
+-msgstr "Đang yêu cầu địa chỉ mạng từ mạng tuyến..."
+-
+-#: ../gnome/applet/applet.c:938 ../gnome/applet/applet.c:948
+-#, c-format
+-msgid "Requesting a network address from the wireless network '%s'..."
+-msgstr "Đang yêu cầu địa chỉ mạng từ mạng vô tuyến « %s »..."
+-
+-#: ../gnome/applet/applet.c:956
+-msgid "Finishing connection to the wired network..."
+-msgstr "Đang kết nối xong tới mạng tuyến..."
+-
+-#: ../gnome/applet/applet.c:958
+-#, c-format
+-msgid "Finishing connection to the wireless network '%s'..."
+-msgstr "Đang kết nối xong tới mạng vô tuyến « %s »..."
+-
+-#: ../gnome/applet/applet.c:1075
+-msgid "NetworkManager is not running"
+-msgstr "Trình NetworkManager chưa chạy."
+-
+-#: ../gnome/applet/applet.c:1083 ../gnome/applet/applet.c:1828
+-msgid "Networking disabled"
+-msgstr "Chạy mạng bị tắt"
+-
+-#: ../gnome/applet/applet.c:1088
+-msgid "No network connection"
+-msgstr "Không có kết nối mạng"
+-
+-#: ../gnome/applet/applet.c:1093
+-msgid "Wired network connection"
+-msgstr "Kết nối mạng tuyến"
+-
+-#: ../gnome/applet/applet.c:1097
+-msgid "Connected to an Ad-Hoc wireless network"
+-msgstr "Đã kết nối tới một mạng vô tuyến Như có"
+-
+-#: ../gnome/applet/applet.c:1099
+-#, c-format
+-msgid "Wireless network connection to '%s' (%d%%)"
+-msgstr "Cách kết nối mạng vô tuyến tới « %s » (%d%%)"
+-
+-#: ../gnome/applet/applet.c:1120
+-#, c-format
+-msgid "VPN connection to '%s'"
+-msgstr "Cách kết nối VPN tới « %s »"
+-
+-#: ../gnome/applet/applet.c:1128
+-#, c-format
+-msgid "VPN connecting to '%s'"
+-msgstr "Đang kết nối VPN tới « %s »..."
+-
+-#: ../gnome/applet/applet.c:1541
+-msgid "_Connect to Other Wireless Network..."
+-msgstr "_Kết nối tới mạng Vô tuyến Khác..."
+-
+-#: ../gnome/applet/applet.c:1562
+-msgid "Create _New Wireless Network..."
+-msgstr "Tạo mạng Vô tuyến _Mới..."
+-
+-#: ../gnome/applet/applet.c:1685
+-msgid "_VPN Connections"
+-msgstr "Kết nối _VPN"
+-
+-#: ../gnome/applet/applet.c:1730
+-msgid "_Configure VPN..."
+-msgstr "_Cấu hình VPN..."
+-
+-#: ../gnome/applet/applet.c:1734
+-msgid "_Disconnect VPN..."
+-msgstr "_Ngắt kết nối VPN..."
+-
+-#: ../gnome/applet/applet.c:1756
+-msgid "_Dial Up Connections"
+-msgstr "Kết nối _quay số"
+-
+-#. FIXME: We should save and then check the state of the devices and show Connect _or_ Disconnect for each item
+-#: ../gnome/applet/applet.c:1767
+-#, c-format
+-msgid "Connect to %s..."
+-msgstr "Kết nối đến %s..."
+-
+-#: ../gnome/applet/applet.c:1773
+-#, c-format
+-msgid "Disconnect from %s..."
+-msgstr "Ngắt kết nối từ %s..."
+-
+-#: ../gnome/applet/applet.c:1822
+-msgid "No network devices have been found"
+-msgstr "Không tìm thấy thiết bị mạng nào"
+-
+-#: ../gnome/applet/applet.c:2014
+-msgid "NetworkManager is not running..."
+-msgstr "Trình NetworkManager chưa chạy..."
+-
+-#. 'Enable Networking' item
+-#: ../gnome/applet/applet.c:2170
+-msgid "Enable _Networking"
+-msgstr "Bật chạy _mạng"
+-
+-#. 'Enable Wireless' item
+-#: ../gnome/applet/applet.c:2176
+-msgid "Enable _Wireless"
+-msgstr "Bật _Vô tuyến"
+-
+-#. 'Connection Information' item
+-#: ../gnome/applet/applet.c:2182
+-msgid "Connection _Information"
+-msgstr "Thông t_in kết nối"
+-
+-#. Help item
+-#: ../gnome/applet/applet.c:2193
+-msgid "_Help"
+-msgstr "Trợ _giúp"
+-
+-#. About item
+-#: ../gnome/applet/applet.c:2202
+-msgid "_About"
+-msgstr "_Giới thiệu"
+-
+-#: ../gnome/applet/applet.c:2667
+-msgid ""
+-"The NetworkManager applet could not find some required resources. It cannot "
+-"continue.\n"
+-msgstr ""
+-"Tiểu dụng Quản lý mạng không thể tìm một số tài nguyên nên không thể tiếp "
+-"tục.\n"
+-
+-#: ../gnome/applet/wireless-security-option.c:157
+-msgid "Open System"
+-msgstr "Hệ thống mở"
+-
+-#: ../gnome/applet/wireless-security-option.c:160
+-msgid "Shared Key"
+-msgstr "Khóa dùng chung"
+-
+-#: ../gnome/applet/wireless-security-option.c:208
+-msgid "Automatic (Default)"
+-msgstr "Tự động (Mặc định)"
+-
+-# Name: don't translate / Tên: đừng dịch
+-#: ../gnome/applet/wireless-security-option.c:215
+-msgid "AES-CCMP"
+-msgstr "AES-CCMP"
+-
+-# Literal: don't translate / Nghĩa chữ: đừng dịch
+-#: ../gnome/applet/wireless-security-option.c:223
+-msgid "TKIP"
+-msgstr "TKIP"
+-
+-#: ../gnome/applet/wireless-security-option.c:231
+-msgid "Dynamic WEP"
+-msgstr "WEP động"
+-
+-#: ../gnome/applet/wso-none.c:53
+-msgid "None"
+-msgstr "Không có"
+-
+-# Name: don't translate / Tên: đừng dịch
+-#: ../gnome/applet/wso-wep-ascii.c:138
+-msgid "WEP 64/128-bit ASCII"
+-msgstr "WEP 64/128-bit ASCII"
+-
+-#: ../gnome/applet/wso-wep-hex.c:135
+-msgid "WEP 64/128-bit Hex"
+-msgstr "WEP 64/128-bit thập lục"
+-
+-#: ../gnome/applet/wso-wep-passphrase.c:135
+-msgid "WEP 128-bit Passphrase"
+-msgstr "WEP 128-bit cụm từ mật khẩu"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:237
+-msgid "PEAP"
+-msgstr "PEAP"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:238
+-msgid "TLS"
+-msgstr "TLS"
+-
+-#: ../gnome/applet/wso-wpa-eap.c:239
+-msgid "TTLS"
+-msgstr "TTLS"
+-
+-# Name: don't translate / Tên: đừng dịch
+-#: ../gnome/applet/wso-wpa-eap.c:247 ../src/nm-ap-security-wpa-eap.c:92
+-#: ../src/nm-ap-security-wpa-eap.c:116
+-msgid "WPA2 Enterprise"
+-msgstr "WPA2 Enterprise"
+-
+-# Name: don't translate / Tên: đừng dịch
+-#: ../gnome/applet/wso-wpa-eap.c:249 ../src/nm-ap-security-wpa-eap.c:94
+-#: ../src/nm-ap-security-wpa-eap.c:121
+-msgid "WPA Enterprise"
+-msgstr "WPA Enterprise"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:178
+-msgid "WPA2 Personal"
+-msgstr "WPA2 Cá nhân"
+-
+-#: ../gnome/applet/wso-wpa-psk.c:180
+-msgid "WPA Personal"
+-msgstr "WPA Cá nhân"
+-
+-#: ../gnome/applet/eggtrayicon.c:134
+-msgid "Orientation"
+-msgstr "Hướng"
+-
+-#: ../gnome/applet/eggtrayicon.c:135
+-msgid "The orientation of the tray."
+-msgstr "Hướng khay."
+-
+-#: ../gnome/applet/menu-items.c:88
+-#, c-format
+-msgid "Wired Network (%s)"
+-msgstr "mạng tuyến (%s)"
+-
+-#: ../gnome/applet/menu-items.c:91
+-msgid "_Wired Network"
+-msgstr "mạng t_uyến"
+-
+-#: ../gnome/applet/menu-items.c:162
+-#, c-format
+-msgid "Wireless Network (%s)"
+-msgid_plural "Wireless Networks (%s)"
+-msgstr[0] "mạng vô tuyến (%s)"
+-
+-#: ../gnome/applet/menu-items.c:164
+-msgid "Wireless Network"
+-msgid_plural "Wireless Networks"
+-msgstr[0] "mạng vô tuyến"
+-
+-#: ../gnome/applet/menu-items.c:343
+-msgid " (invalid Unicode)"
+-msgstr " (Unicode không hợp lệ)"
+-
+-#: ../gnome/applet/other-network-dialog.c:352
+-#, c-format
+-msgid ""
+-"By default, the wireless network's name is set to your computer's name, %s, "
+-"with no encryption enabled"
+-msgstr ""
+-"Mặc định là tên của mạng vô tuyến được đặt thành tên của máy tính bạn, %s, "
+-"không có mật mã được bật."
+-
+-#: ../gnome/applet/other-network-dialog.c:358
+-msgid "Create new wireless network"
+-msgstr "Tạo mạng vô tuyến mới"
+-
+-#: ../gnome/applet/other-network-dialog.c:359
+-msgid ""
+-"Enter the name and security settings of the wireless network you wish to "
+-"create."
+-msgstr "Hãy nhập tên tên và thiết lập bảo mật của mạng vô tuyến bạn muốn thêm."
+-
+-#: ../gnome/applet/other-network-dialog.c:363
+-msgid "Create New Wireless Network"
+-msgstr "Tạo mạng vô tuyến mới"
+-
+-#: ../gnome/applet/other-network-dialog.c:368
+-msgid "Existing wireless network"
+-msgstr "mạng vô tuyến đã có"
+-
+-#: ../gnome/applet/other-network-dialog.c:369
+-msgid "Enter the name of the wireless network to which you wish to connect."
+-msgstr "Hãy gõ tên của mạng vô tuyến đến mà bạn muốn kết nối."
+-
+-#: ../gnome/applet/other-network-dialog.c:371
+-msgid "Connect to Other Wireless Network"
+-msgstr "Kết nối đến mạng Vô tuyến Khác"
+-
+-#: ../gnome/applet/passphrase-dialog.c:215
+-msgid "Error connecting to wireless network"
+-msgstr "Gặp lỗi khi kết nối đến mạng vô tuyến"
+-
+-#: ../gnome/applet/passphrase-dialog.c:216
+-msgid ""
+-"The requested wireless network requires security capabilities unsupported by "
+-"your hardware."
+-msgstr ""
+-"mạng vô tuyến đã yêu cầu cần thiết khả năng bảo mật không được hỗ trợ bởi "
+-"phần cứng của bạn."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:151
+-#: ../gnome/applet/vpn-password-dialog.c:188
+-#, c-format
+-msgid "Cannot start VPN connection '%s'"
+-msgstr "Không thể khởi chạy kết nối VPN tới « %s »"
+-
+-#: ../gnome/applet/vpn-password-dialog.c:154
+-#, c-format
+-msgid ""
+-"Could not find the authentication dialog for VPN connection type '%s'. "
+-"Contact your system administrator."
+-msgstr ""
+-"Không tìm thấy hộp thoại xác thực cho cách kết nối VPN « %s ». Hãy liên lạc "
+-"với quản trị hệ thống."
+-
+-#: ../gnome/applet/vpn-password-dialog.c:191
+-#, c-format
+-msgid ""
+-"There was a problem launching the authentication dialog for VPN connection "
+-"type '%s'. Contact your system administrator."
+-msgstr ""
+-"Gặp lỗi khi khởi chạy hộp thoại xác thực cho cách kết nối VPN « %s ». Hãy "
+-"liên lạc với quản trị hệ thống."
+-
+-#: ../gnome/applet/applet.glade.h:1
+-msgid " "
+-msgstr " "
+-
+-#: ../gnome/applet/applet.glade.h:2
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Thông tin kết nối hoạt động</span>"
+-
+-#: ../gnome/applet/applet.glade.h:4
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
+-"Network</span>\n"
+-"\n"
+-"A passphrase or encryption key is required to access the wireless network '%"
+-"s'."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Cụm từ Mật khẩu Cần thiết cho mạng Vô "
+-"tuyến</span>\n"
+-"\n"
+-"Cần thiết cụm từ mật khẩu hay khóa mật mã để truy cập mạng vô tuyến « %s »."
+-
+-#: ../gnome/applet/applet.glade.h:8
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</span>\n"
+-"\n"
+-"%s It will not be completely functional."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Chức năng mạng bị giảm</span>\n"
+-"\n"
+-"%s Nó sẽ không hoạt động hoàn toàn."
+-
+-#: ../gnome/applet/applet.glade.h:12
+-#, no-c-format
+-msgid ""
+-"<span weight=\"bold\" size=\"larger\">Wireless Network Login Confirmation</"
+-"span>\n"
+-"\n"
+-"You have chosen to log in to the wireless network '%s'. If you are sure "
+-"that this wireless network is secure, click the checkbox below and "
+-"NetworkManager will not require confirmation on subsequent log ins."
+-msgstr ""
+-"<span weight=\"bold\" size=\"larger\">Xác thực Đăng nhập với mạng Vô tuyến</"
+-"span>\n"
+-"\n"
+-"Bạn đã chọn đăng nhập với mạng vô tuyến « %s ». Nếu bạn có chắc là mạng này "
+-"bảo mật, hãy đánh dấu trong hộp chọn bên dưới, vậy trình Quản lý mạng sẽ "
+-"không cần thiết xác thực khi đăng nhập sau."
+-
+-#: ../gnome/applet/applet.glade.h:15
+-msgid "Anonymous Identity:"
+-msgstr "Thực thể vô danh:"
+-
+-#: ../gnome/applet/applet.glade.h:16
+-msgid "Authentication:"
+-msgstr "Xác thực:"
+-
+-#: ../gnome/applet/applet.glade.h:17
+-msgid "Broadcast Address:"
+-msgstr "Địa chỉ phát thanh:"
+-
+-#: ../gnome/applet/applet.glade.h:18
+-msgid "CA Certificate File:"
+-msgstr "Tập tin chứng nhận của CA:"
+-
+-#: ../gnome/applet/applet.glade.h:19
+-msgid "C_onnect"
+-msgstr "_Kết nối"
+-
+-#: ../gnome/applet/applet.glade.h:20
+-msgid "Client Certificate File:"
+-msgstr "Tập tin chứng nhận của ứng dụng khách:"
+-
+-#: ../gnome/applet/applet.glade.h:21
+-msgid "Connection Information"
+-msgstr "Thông tin kết nối"
+-
+-#: ../gnome/applet/applet.glade.h:22
+-msgid "Default Route:"
+-msgstr "Tuyến mặc định:"
+-
+-#: ../gnome/applet/applet.glade.h:23
+-msgid "Destination Address:"
+-msgstr "Địa chỉ đích:"
+-
+-#: ../gnome/applet/applet.glade.h:24
+-msgid "Driver:"
+-msgstr "Trình điều khiển:"
+-
+-#: ../gnome/applet/applet.glade.h:25
+-msgid "EAP Method:"
+-msgstr "Phương pháp EAP:"
+-
+-#: ../gnome/applet/applet.glade.h:26
+-msgid "Hardware Address:"
+-msgstr "Địa chỉ phần cứng:"
+-
+-#: ../gnome/applet/applet.glade.h:27
+-msgid "IP Address:"
+-msgstr "Địa chỉ IP:"
+-
+-#: ../gnome/applet/applet.glade.h:28
+-msgid "Identity:"
+-msgstr "Thực thể:"
+-
+-#: ../gnome/applet/applet.glade.h:29
+-msgid "Interface:"
+-msgstr "Giao diện:"
+-
+-#: ../gnome/applet/applet.glade.h:30
+-msgid "Key Type:"
+-msgstr "Kiểu khoá :"
+-
+-#: ../gnome/applet/applet.glade.h:31
+-msgid "Key:"
+-msgstr "Khóa:"
+-
+-#: ../gnome/applet/applet.glade.h:32
+-msgid ""
+-"None\n"
+-"WEP 128-bit Passphrase\n"
+-"WEP 64/128-bit Hex\n"
+-"WEP 64/128-bit ASCII\n"
+-msgstr ""
+-"Không có\n"
+-"WEP 128-bit cụm từ mật khẩu\n"
+-"WEP 64/128-bit thập lục\n"
+-"WEP 64/128-bit ASCII\n"
+-
+-#: ../gnome/applet/applet.glade.h:37
+-msgid ""
+-"Open System\n"
+-"Shared Key"
+-msgstr ""
+-"Hệ thống mở\n"
+-"Khóa dùng chung"
+-
+-#: ../gnome/applet/applet.glade.h:39
+-msgid "Other Wireless Network..."
+-msgstr "mạng Vô tuyến khác..."
+-
+-#: ../gnome/applet/applet.glade.h:40
+-msgid "Passphrase:"
+-msgstr "Cụm từ mật khẩu :"
+-
+-#: ../gnome/applet/applet.glade.h:41
+-msgid "Password:"
+-msgstr "Mật khẩu :"
+-
+-#: ../gnome/applet/applet.glade.h:42
+-msgid "Primary DNS:"
+-msgstr "DNS chính:"
+-
+-#: ../gnome/applet/applet.glade.h:43
+-msgid "Private Key File:"
+-msgstr "Tập tin khoá riêng:"
+-
+-#: ../gnome/applet/applet.glade.h:44
+-msgid "Private Key Password:"
+-msgstr "Mật khẩu khoá riêng:"
+-
+-#: ../gnome/applet/applet.glade.h:45
+-msgid "Secondary DNS:"
+-msgstr "DNS phụ :"
+-
+-#: ../gnome/applet/applet.glade.h:46
+-msgid "Select the CA Certificate File"
+-msgstr "Chọn tập tin chứng nhận của nhà cầm quyền chứng nhận (CA)."
+-
+-#: ../gnome/applet/applet.glade.h:47
+-msgid "Select the Client Certificate File"
+-msgstr "Chọn tập tin chứng nhận của ứng dụng khách."
+-
+-#: ../gnome/applet/applet.glade.h:48
+-msgid "Select the Private Key File"
+-msgstr "Chọn tập tin là khóa riêng."
+-
+-#: ../gnome/applet/applet.glade.h:49
+-msgid "Show key"
+-msgstr "Hiện khoá"
+-
+-#: ../gnome/applet/applet.glade.h:50
+-msgid "Show passphrase"
+-msgstr "HIện cụm từ mật khẩu"
+-
+-#: ../gnome/applet/applet.glade.h:51
+-msgid "Show password"
+-msgstr "Hiện mật khẩu"
+-
+-#: ../gnome/applet/applet.glade.h:52
+-msgid "Show passwords"
+-msgstr "Hiện các mật khẩu"
+-
+-#: ../gnome/applet/applet.glade.h:53
+-msgid "Speed:"
+-msgstr "Tốc độ :"
+-
+-#: ../gnome/applet/applet.glade.h:54
+-msgid "Subnet Mask:"
+-msgstr "Mặt nạ mạng cấp dưới:"
+-
+-#: ../gnome/applet/applet.glade.h:55
+-msgid "Type:"
+-msgstr "Kiểu :"
+-
+-#: ../gnome/applet/applet.glade.h:56
+-msgid "User Name:"
+-msgstr "Tên người dùng:"
+-
+-#: ../gnome/applet/applet.glade.h:57
+-msgid "Wireless Network Key Required"
+-msgstr "Cần thiết Khóa mạng Vô tuyến:"
+-
+-#: ../gnome/applet/applet.glade.h:58
+-msgid "Wireless _adapter:"
+-msgstr "_Bộ điều hợp vô tuyến"
+-
+-#: ../gnome/applet/applet.glade.h:59
+-msgid "_Always Trust this Wireless Network"
+-msgstr "_Luôn luôn tin cây mạng vô tuyến này"
+-
+-#: ../gnome/applet/applet.glade.h:60
+-msgid "_Don't remind me again"
+-msgstr "_Đừng nhắc nhở tôi lần nữa"
+-
+-#: ../gnome/applet/applet.glade.h:61
+-msgid "_Login to Network"
+-msgstr "_Đăng nhập với mạng"
+-
+-#: ../gnome/applet/applet.glade.h:62
+-msgid "_Network Name:"
+-msgstr "T_ên mạng:"
+-
+-#: ../gnome/applet/applet.glade.h:63
+-msgid "_Wireless Security:"
+-msgstr "_Bảo mật vô tuyến:"
+-
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:383
++#: ../gnome/vpn-properties/nm-vpn-properties.c:405
+ msgid "Cannot add VPN connection"
+ msgstr "Không thể thêm sự kết nối VPN"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:385
++#: ../gnome/vpn-properties/nm-vpn-properties.c:407
+ msgid ""
+ "No suitable VPN software was found on your system. Contact your system "
+ "administrator."
+ msgstr ""
+-"Không tìm thấy phần mềm VPN thích hợp nào trong hệ thống của bạn. Hãy liên "
++"Không tìm thấy phần mềm VPN thích hợp trong hệ thống của bạn. Hãy liên "
+ "lạc với quản trị hệ thống."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:437
++#: ../gnome/vpn-properties/nm-vpn-properties.c:457
+ msgid "Cannot import VPN connection"
+-msgstr "Không thể nhập sự kết nối VPN"
++msgstr "Không thể nhập khẩu sự kết nối VPN"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:439
++#: ../gnome/vpn-properties/nm-vpn-properties.c:459
+ #, c-format
+ msgid ""
+ "Cannot find suitable software for VPN connection type '%s' to import the "
+ "file '%s'. Contact your system administrator."
+ msgstr ""
+-"Không tìm thấy phần mềm thích hợp cho kiểu kết nối VPN « %s » để nhập tập "
+-"tin « %s ». Hãy liên lạc với quản trị hệ thống."
++"Không tìm thấy phần mềm thích hợp cho kết nối VPN kiểu « %s » để nhập khẩu tập tin « %s ». Hãy liên lạc với quản trị hệ thống."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:579
++#: ../gnome/vpn-properties/nm-vpn-properties.c:596
+ #, c-format
+ msgid "Error retrieving VPN connection '%s'"
+ msgstr "Gặp lỗi khi lấy kết nối PN « %s »"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:582
++#: ../gnome/vpn-properties/nm-vpn-properties.c:599
+ #, c-format
+ msgid ""
+ "Could not find the UI files for VPN connection type '%s'. Contact your "
+ "system administrator."
+ msgstr ""
+-"Không tìm thấy những tập tin giao diện người dùng cho kiểu kết nối VPN « %s "
+-"». Hãy liên lạc với quản trị hệ thống."
++"Không tìm thấy những tập tin giao diện người dùng cho kết nối VPN kiểu « %s ». Hãy liên lạc với quản trị hệ thống."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:739
++#: ../gnome/vpn-properties/nm-vpn-properties.c:746
+ #, c-format
+ msgid "Delete VPN connection \"%s\"?"
+-msgstr "Xóa bỏ sự kết nối VPN « %s » không?"
++msgstr "Xóa kết nối VPN « %s » không?"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:742
++#: ../gnome/vpn-properties/nm-vpn-properties.c:749
+ #, c-format
+ msgid ""
+ "All information about the VPN connection \"%s\" will be lost and you may "
+ "need your system administrator to provide information to create a new "
+ "connection."
+ msgstr ""
+-"Mọi thông tin về sự kết nối VPN « %s » sẽ bị mất và có lẽ bạn sẽ cần quản "
++"Mọi thông tin về sự kết nối VPN « %s » sẽ bị mất thì bạn có thể cần phải yêu cầu quản "
+ "trị hệ thống cung cấp thông tin để tạo sự kết nối mới."
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:959
++#: ../gnome/vpn-properties/nm-vpn-properties.c:963
+ msgid "Unable to load"
+-msgstr "Không thể tải"
++msgstr "Không thể nạp"
+
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:961
++#: ../gnome/vpn-properties/nm-vpn-properties.c:965
+ msgid "Cannot find some needed resources (the glade file)!"
+-msgstr "• Không tìm thấy một số tài nguyên cần thiết (tải tập tin glade). •"
++msgstr "Không tìm thấy một số tài nguyên cần thiết (tải tập tin glade) !"
+
++#: ../gnome/vpn-properties/nm-vpn-properties.c:1084
+ #. Edit dialog
+-#: ../gnome/vpn-properties/nm-vpn-properties.c:1071
+ msgid "Edit VPN Connection"
+-msgstr "Sửa đổi sự kết nối VPN"
++msgstr "Sửa kết nối VPN"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:1
+ msgid "Add a new VPN connection"
+-msgstr "Thêm sự kết nối VPN mới"
++msgstr "Thêm kết nối VPN mới"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:2
+ msgid "Choose which type of VPN connection you wish to create."
+@@ -796,19 +95,19 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:4
+ msgid "Create VPN Connection"
+-msgstr "Tạo sự kết nối VPN"
++msgstr "Tạo kết nối VPN"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:5
+ msgid "Create VPN Connection - 1 of 2"
+-msgstr "Tạo sự kết nối VPN — bước 1 trên 2"
++msgstr "Tạo kết nối VPN — bước 1 trên 2"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:6
+ msgid "Create VPN Connection - 2 of 2"
+-msgstr "Tạo sự kết nối VPN — bước 2 trên 2"
++msgstr "Tạo kết nối VPN — bước 2 trên 2"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:7
+ msgid "Delete the selected VPN connection"
+-msgstr "Xóa bỏ kết nối VPN đã chọn"
++msgstr "Xoá kết nối VPN đã chọn"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:8
+ msgid "E_xport"
+@@ -816,11 +115,11 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:9
+ msgid "Edit the selected VPN connection"
+-msgstr "Sửa đổi kết nối VPN đã chọn."
++msgstr "Sửa kết nối VPN đã chọn."
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:10
+ msgid "Export the VPN settings to a file"
+-msgstr "Xuất các thiết lập VPN vào tập tin"
++msgstr "Xuất thiết lập VPN vào tập tin"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:11
+ msgid "Export the selected VPN connection to a file"
+@@ -832,7 +131,7 @@
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:13
+ msgid "Manage Virtual Private Network Connections"
+-msgstr "Quản lý các Kết nối mạng Riêng Ảo (VPN)"
++msgstr "Quản lý các Kết nối Mạng Riêng Ảo (VPN)"
+
+ #: ../gnome/vpn-properties/nm-vpn-properties.glade.h:14
+ msgid ""
+@@ -842,7 +141,7 @@
+ "It will require some information, such as IP addresses and secrets. Please "
+ "see your system administrator to obtain this information."
+ msgstr ""
+-"Trợ lý này sẽ hướng dẫn bạn qua tiến trình tạo kết nối đến một mạng Riêng Ảo "
++"Trợ lý này sẽ hướng dẫn bạn qua tiến trình tạo kết nối đến một Mạng Riêng Ảo "
+ "(VPN).\n"
+ "\n"
+ "Cần thiết một phần thông tin, như địa chỉ IP và điều bí mật. Hãy hỏi quan "
+@@ -890,11 +189,11 @@
+ msgid "WPA2 Automatic"
+ msgstr "WPA2 Tự động"
+
+-#: ../src/nm-ap-security.c:320
++#: ../src/nm-ap-security.c:338
+ msgid "none"
+ msgstr "không có"
+
+-#: ../src/nm-netlink-monitor.c:154
++#: ../src/nm-netlink-monitor.c:170
+ #, c-format
+ msgid ""
+ "unable to create netlink socket for monitoring wired ethernet devices - %s"
+@@ -902,7 +201,7 @@
+ "không thể tạo ổ cắm kiểu liên kết mạng, để theo dõi các thiết bị Ethernet "
+ "tuyến — %s"
+
+-#: ../src/nm-netlink-monitor.c:172
++#: ../src/nm-netlink-monitor.c:188
+ #, c-format
+ msgid ""
+ "unable to bind to netlink socket for monitoring wired ethernet devices - %s"
+@@ -910,51 +209,566 @@
+ "không thể đóng kết tới ổ cắm kiểu liên kết mạng, để theo dõi các thiết bị "
+ "Ethernet tuyến — %s"
+
+-#: ../src/nm-netlink-monitor.c:405
++#: ../src/nm-netlink-monitor.c:426
+ msgid "operation took too long"
+-msgstr "thao tác quá lâu"
++msgstr "thao tác đã chạy quá lâu"
+
+-#: ../src/nm-netlink-monitor.c:502
++#: ../src/nm-netlink-monitor.c:523
+ msgid "received data from wrong type of sender"
+-msgstr "đã nhận dữ liệu từ bộ gởi kiểu không đúng"
++msgstr "đã nhận dữ liệu từ nhà gửi kiểu sai"
+
+-#: ../src/nm-netlink-monitor.c:515
++#: ../src/nm-netlink-monitor.c:536
+ msgid "received data from unexpected sender"
+-msgstr "đã nhận dữ liệu từ bộ gởi bất ngờ"
++msgstr "đã nhận dữ liệu từ nhà gửi bất thường"
+
+-#: ../src/nm-netlink-monitor.c:646
++#: ../src/nm-netlink-monitor.c:665
+ msgid "too much data was sent over socket and some of it was lost"
+-msgstr "quá nhiều dữ liệu đã được gởi qua ổ cắm, và một phần nó bị mất"
++msgstr "quá nhiều dữ liệu đã được gửi qua ổ cắm, thì mất một số dữ liệu"
+
+-#: ../src/nm-netlink-monitor.c:735
++#: ../src/nm-netlink-monitor.c:775
+ msgid "error occurred while waiting for data on socket"
+ msgstr "gặp lỗi khi đợi dữ liệu trên ổ cắm"
+
+-#: ../gnome/applet/applet-dbus-devices.c:898
+-#, c-format
+-msgid "You are now connected to the Ad-Hoc wireless network '%s'."
+-msgstr "Bây giờ bạn có kết nối hoạt động đến mạng vô tuyến Như có « %s »."
++# Name: don't translate / Tên: đừng dịch
++#: ../src/nm-ap-security-wpa-eap.c:96
++#: ../src/nm-ap-security-wpa-eap.c:120
++msgid "WPA2 Enterprise"
++msgstr "WPA2 Enterprise"
+
+-#: ../gnome/applet/applet-dbus-devices.c:903
+-#, c-format
+-msgid "You are now connected to the wireless network '%s'."
+-msgstr "Bây giờ bạn có kết nối hoạt động đến mạng vô tuyến « %s »."
++# Name: don't translate / Tên: đừng dịch
++#: ../src/nm-ap-security-wpa-eap.c:98
++#: ../src/nm-ap-security-wpa-eap.c:125
++msgid "WPA Enterprise"
++msgstr "WPA Enterprise"
++
++#: ../src/nm-ap-security-leap.c:66
++#: ../src/nm-ap-security-leap.c:82
++msgid "LEAP"
++msgstr "LEAP"
++
++#~ msgid "Passphrase for wireless network %s"
++#~ msgstr "Cụm từ mật khẩu cho mạng vô tuyến %s"
++
++#~ msgid "Connection to the wireless network '%s' failed."
++#~ msgstr "Việc kết nối đến mạng vô tuyến « %s » bị lỗi."
++
++#~ msgid "Connection to the wired network failed."
++#~ msgstr "Việc kết nối đến mạng tuyến bị lỗi."
++
++#~ msgid "Error displaying connection information:"
++#~ msgstr "Gặp lỗi khi hiển thị thông tin kết nối:"
++
++#~ msgid "Could not find some required resources (the glade file)!"
++#~ msgstr "• Không thể tìm thấy một số tài nguyên cần thiết (tập tin glade). •"
++
++#~ msgid "No active connections!"
++#~ msgstr "• Không có kết nối hoạt động. •"
++
++#~ msgid "Wired Ethernet (%s)"
++#~ msgstr "Ethernet tuyến (%s)"
++
++#~ msgid "Wireless Ethernet (%s)"
++#~ msgstr "Ethernet vô tuyến (%s)"
++
++#~ msgid "NetworkManager Applet"
++#~ msgstr "Tiểu dụng Quản lý mạng"
++
++#~ msgid "Copyright © 2004-2005 Red Hat, Inc."
++#~ msgstr "Bản quyền © năm 2004-2005 Red Hat, Inc."
++
++#~ msgid ""
++#~ "Notification area applet for managing your network devices and "
++#~ "connections."
++#~ msgstr ""
++#~ "Tiểu dụng vùng thông báo để quản lý các thiết bị và kết nối mạng của bạn."
++
++#~ msgid "translator-credits"
++#~ msgstr "Nhóm Việt hóa Gnome <gnomevi-list@lists.sourceforge.net>"
++
++#~ msgid "VPN Login Failure"
++#~ msgstr "Đăng nhập VPN bị lỗi"
++
++#~ msgid "Could not start the VPN connection '%s' due to a login failure."
++#~ msgstr "Không thể khởi chạy kết nối VPN « %s » do việc đăng nhập bị lỗi."
++
++#~ msgid "VPN Start Failure"
++#~ msgstr "Khởi chạy VPN bị lỗi"
++
++#~ msgid ""
++#~ "Could not start the VPN connection '%s' due to a failure launching the "
++#~ "VPN program."
++#~ msgstr ""
++#~ "Không thể khởi chạy kết nối VPN « %s » do việc khởi chạy chương trình VPN "
++#~ "bị lỗi."
++
++#~ msgid "VPN Connect Failure"
++#~ msgstr "Kết nối VPN bị lỗi"
++
++#~ msgid "Could not start the VPN connection '%s' due to a connection error."
++#~ msgstr "Không thể khởi chạy kết nối VPN « %s » do lỗi kết nối."
++
++#~ msgid "VPN Configuration Error"
++#~ msgstr "Lỗi cấu hình VPN"
++
++#~ msgid "The VPN connection '%s' was not correctly configured."
++#~ msgstr "Chưa cấu hình đúng sự kết nối VPN « %s »."
++
++#~ msgid ""
++#~ "Could not start the VPN connection '%s' because the VPN server did not "
++#~ "return an adequate network configuration."
++#~ msgstr ""
++#~ "Không thể khởi chạy kết nối VPN « %s » vì trình phục vụ VPN chưa trả gởi "
++#~ "cấu hình mạng hợp lệ."
++
++#~ msgid "VPN Login Message"
++#~ msgstr "Thông điệp đăng nhập VPN"
++
++#~ msgid ""
++#~ "The NetworkManager Applet could not find some required resources (the "
++#~ "glade file was not found)."
++#~ msgstr ""
++#~ "Tiểu dụng Quản lý mạng không thể tìm một số tài nguyên cần thiết (không "
++#~ "tìm thấy tập tin glade)."
++
++#~ msgid "The network device \"%s (%s)\" does not support wireless scanning."
++#~ msgstr "Thiết bị mạng « %s (%s) » không hỗ trợ khả năng quét vô tuyến."
++
++#~ msgid "The network device \"%s (%s)\" does not support link detection."
++#~ msgstr "Thiết bị mạng « %s (%s) » không hỗ trợ khả năng phát hiện liên kết."
++
++#~ msgid "Preparing device %s for the wired network..."
++#~ msgstr "Đang chuẩn bị thiết bị %s cho mạng tuyến..."
++
++#~ msgid "Preparing device %s for the wireless network '%s'..."
++#~ msgstr "Đang chuẩn bị thiết bị %s cho mạng vô tuyến « %s »..."
++
++#~ msgid "Configuring device %s for the wired network..."
++#~ msgstr "Đang cấu hình thiết bị %s cho mạng tuyến..."
++
++#~ msgid "Attempting to join the wireless network '%s'..."
++#~ msgstr "Đang cố tham gia mạng vô tuyến « %s »..."
++
++#~ msgid "Waiting for Network Key for the wireless network '%s'..."
++#~ msgstr "Đang đợi Khóa mạng cho mạng vô tuyến « %s »..."
++
++#~ msgid "Requesting a network address from the wired network..."
++#~ msgstr "Đang yêu cầu địa chỉ mạng từ mạng tuyến..."
++
++#~ msgid "Requesting a network address from the wireless network '%s'..."
++#~ msgstr "Đang yêu cầu địa chỉ mạng từ mạng vô tuyến « %s »..."
++
++#~ msgid "Finishing connection to the wired network..."
++#~ msgstr "Đang kết nối xong tới mạng tuyến..."
++
++#~ msgid "Finishing connection to the wireless network '%s'..."
++#~ msgstr "Đang kết nối xong tới mạng vô tuyến « %s »..."
++
++#~ msgid "NetworkManager is not running"
++#~ msgstr "Trình NetworkManager chưa chạy."
++
++#~ msgid "Networking disabled"
++#~ msgstr "Chạy mạng bị tắt"
++
++#~ msgid "No network connection"
++#~ msgstr "Không có kết nối mạng"
++
++#~ msgid "Wired network connection"
++#~ msgstr "Kết nối mạng tuyến"
++
++#~ msgid "Connected to an Ad-Hoc wireless network"
++#~ msgstr "Đã kết nối tới một mạng vô tuyến Như có"
++
++#~ msgid "Wireless network connection to '%s' (%d%%)"
++#~ msgstr "Cách kết nối mạng vô tuyến tới « %s » (%d%%)"
++
++#~ msgid "VPN connection to '%s'"
++#~ msgstr "Cách kết nối VPN tới « %s »"
++
++#~ msgid "VPN connecting to '%s'"
++#~ msgstr "Đang kết nối VPN tới « %s »..."
++
++#~ msgid "_Connect to Other Wireless Network..."
++#~ msgstr "_Kết nối tới mạng Vô tuyến Khác..."
++
++#~ msgid "Create _New Wireless Network..."
++#~ msgstr "Tạo mạng Vô tuyến _Mới..."
++
++#~ msgid "_VPN Connections"
++#~ msgstr "Kết nối _VPN"
++
++#~ msgid "_Configure VPN..."
++#~ msgstr "_Cấu hình VPN..."
++
++#~ msgid "_Disconnect VPN..."
++#~ msgstr "_Ngắt kết nối VPN..."
++
++#~ msgid "_Dial Up Connections"
++#~ msgstr "Kết nối _quay số"
++
++#~ msgid "Connect to %s..."
++#~ msgstr "Kết nối đến %s..."
++
++#~ msgid "Disconnect from %s..."
++#~ msgstr "Ngắt kết nối từ %s..."
++
++#~ msgid "No network devices have been found"
++#~ msgstr "Không tìm thấy thiết bị mạng nào"
++
++#~ msgid "NetworkManager is not running..."
++#~ msgstr "Trình NetworkManager chưa chạy..."
++
++#~ msgid "Enable _Networking"
++#~ msgstr "Bật chạy _mạng"
++
++#~ msgid "Enable _Wireless"
++#~ msgstr "Bật _Vô tuyến"
++
++#~ msgid "Connection _Information"
++#~ msgstr "Thông t_in kết nối"
++
++#~ msgid "_Help"
++#~ msgstr "Trợ _giúp"
++
++#~ msgid "_About"
++#~ msgstr "_Giới thiệu"
++
++#~ msgid ""
++#~ "The NetworkManager applet could not find some required resources. It "
++#~ "cannot continue.\n"
++#~ msgstr ""
++#~ "Tiểu dụng Quản lý mạng không thể tìm một số tài nguyên nên không thể tiếp "
++#~ "tục.\n"
++
++#~ msgid "Open System"
++#~ msgstr "Hệ thống mở"
++
++#~ msgid "Shared Key"
++#~ msgstr "Khóa dùng chung"
++
++#~ msgid "Automatic (Default)"
++#~ msgstr "Tự động (Mặc định)"
++
++# Name: don't translate / Tên: đừng dịch
++#~ msgid "AES-CCMP"
++#~ msgstr "AES-CCMP"
++
++# Literal: don't translate / Nghĩa chữ: đừng dịch
++#~ msgid "TKIP"
++#~ msgstr "TKIP"
++
++#~ msgid "Dynamic WEP"
++#~ msgstr "WEP động"
++
++#~ msgid "None"
++#~ msgstr "Không có"
++
++# Name: don't translate / Tên: đừng dịch
++#~ msgid "WEP 64/128-bit ASCII"
++#~ msgstr "WEP 64/128-bit ASCII"
++
++#~ msgid "WEP 64/128-bit Hex"
++#~ msgstr "WEP 64/128-bit thập lục"
++
++#~ msgid "WEP 128-bit Passphrase"
++#~ msgstr "WEP 128-bit cụm từ mật khẩu"
++
++#~ msgid "TLS"
++#~ msgstr "TLS"
++
++#~ msgid "TTLS"
++#~ msgstr "TTLS"
++
++#~ msgid "WPA2 Personal"
++#~ msgstr "WPA2 Cá nhân"
++
++#~ msgid "WPA Personal"
++#~ msgstr "WPA Cá nhân"
++
++#~ msgid "Orientation"
++#~ msgstr "Hướng"
++
++#~ msgid "The orientation of the tray."
++#~ msgstr "Hướng khay."
++
++#~ msgid "Wired Network (%s)"
++#~ msgstr "mạng tuyến (%s)"
++
++#~ msgid "_Wired Network"
++#~ msgstr "mạng t_uyến"
++
++#~ msgid "Wireless Network (%s)"
++#~ msgid_plural "Wireless Networks (%s)"
++#~ msgstr[0] "mạng vô tuyến (%s)"
++
++#~ msgid "Wireless Network"
++#~ msgid_plural "Wireless Networks"
++#~ msgstr[0] "mạng vô tuyến"
++
++#~ msgid " (invalid Unicode)"
++#~ msgstr " (Unicode không hợp lệ)"
++
++#~ msgid ""
++#~ "By default, the wireless network's name is set to your computer's name, %"
++#~ "s, with no encryption enabled"
++#~ msgstr ""
++#~ "Mặc định là tên của mạng vô tuyến được đặt thành tên của máy tính bạn, %"
++#~ "s, không có mật mã được bật."
++
++#~ msgid "Create new wireless network"
++#~ msgstr "Tạo mạng vô tuyến mới"
++
++#~ msgid ""
++#~ "Enter the name and security settings of the wireless network you wish to "
++#~ "create."
++#~ msgstr ""
++#~ "Hãy nhập tên tên và thiết lập bảo mật của mạng vô tuyến bạn muốn thêm."
++
++#~ msgid "Create New Wireless Network"
++#~ msgstr "Tạo mạng vô tuyến mới"
++
++#~ msgid "Existing wireless network"
++#~ msgstr "mạng vô tuyến đã có"
++
++#~ msgid "Enter the name of the wireless network to which you wish to connect."
++#~ msgstr "Hãy gõ tên của mạng vô tuyến đến mà bạn muốn kết nối."
++
++#~ msgid "Connect to Other Wireless Network"
++#~ msgstr "Kết nối đến mạng Vô tuyến Khác"
++
++#~ msgid "Error connecting to wireless network"
++#~ msgstr "Gặp lỗi khi kết nối đến mạng vô tuyến"
++
++#~ msgid ""
++#~ "The requested wireless network requires security capabilities unsupported "
++#~ "by your hardware."
++#~ msgstr ""
++#~ "mạng vô tuyến đã yêu cầu cần thiết khả năng bảo mật không được hỗ trợ bởi "
++#~ "phần cứng của bạn."
++
++#~ msgid "Cannot start VPN connection '%s'"
++#~ msgstr "Không thể khởi chạy kết nối VPN tới « %s »"
++
++#~ msgid ""
++#~ "Could not find the authentication dialog for VPN connection type '%s'. "
++#~ "Contact your system administrator."
++#~ msgstr ""
++#~ "Không tìm thấy hộp thoại xác thực cho cách kết nối VPN « %s ». Hãy liên "
++#~ "lạc với quản trị hệ thống."
++
++#~ msgid ""
++#~ "There was a problem launching the authentication dialog for VPN "
++#~ "connection type '%s'. Contact your system administrator."
++#~ msgstr ""
++#~ "Gặp lỗi khi khởi chạy hộp thoại xác thực cho cách kết nối VPN « %s ». Hãy "
++#~ "liên lạc với quản trị hệ thống."
++
++#~ msgid " "
++#~ msgstr " "
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Active Connection Information</span>"
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Thông tin kết nối hoạt động</span>"
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Passphrase Required by Wireless "
++#~ "Network</span>\n"
++#~ "\n"
++#~ "A passphrase or encryption key is required to access the wireless network "
++#~ "'%s'."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Cụm từ Mật khẩu Cần thiết cho mạng "
++#~ "Vô tuyến</span>\n"
++#~ "\n"
++#~ "Cần thiết cụm từ mật khẩu hay khóa mật mã để truy cập mạng vô tuyến « %s "
++#~ "»."
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Reduced Network Functionality</"
++#~ "span>\n"
++#~ "\n"
++#~ "%s It will not be completely functional."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Chức năng mạng bị giảm</span>\n"
++#~ "\n"
++#~ "%s Nó sẽ không hoạt động hoàn toàn."
++
++#~ msgid ""
++#~ "<span weight=\"bold\" size=\"larger\">Wireless Network Login "
++#~ "Confirmation</span>\n"
++#~ "\n"
++#~ "You have chosen to log in to the wireless network '%s'. If you are sure "
++#~ "that this wireless network is secure, click the checkbox below and "
++#~ "NetworkManager will not require confirmation on subsequent log ins."
++#~ msgstr ""
++#~ "<span weight=\"bold\" size=\"larger\">Xác thực Đăng nhập với mạng Vô "
++#~ "tuyến</span>\n"
++#~ "\n"
++#~ "Bạn đã chọn đăng nhập với mạng vô tuyến « %s ». Nếu bạn có chắc là mạng "
++#~ "này bảo mật, hãy đánh dấu trong hộp chọn bên dưới, vậy trình Quản lý mạng "
++#~ "sẽ không cần thiết xác thực khi đăng nhập sau."
++
++#~ msgid "Anonymous Identity:"
++#~ msgstr "Thực thể vô danh:"
++
++#~ msgid "Authentication:"
++#~ msgstr "Xác thực:"
++
++#~ msgid "Broadcast Address:"
++#~ msgstr "Địa chỉ phát thanh:"
++
++#~ msgid "CA Certificate File:"
++#~ msgstr "Tập tin chứng nhận của CA:"
++
++#~ msgid "C_onnect"
++#~ msgstr "_Kết nối"
++
++#~ msgid "Client Certificate File:"
++#~ msgstr "Tập tin chứng nhận của ứng dụng khách:"
++
++#~ msgid "Connection Information"
++#~ msgstr "Thông tin kết nối"
++
++#~ msgid "Default Route:"
++#~ msgstr "Tuyến mặc định:"
++
++#~ msgid "Destination Address:"
++#~ msgstr "Địa chỉ đích:"
++
++#~ msgid "Driver:"
++#~ msgstr "Trình điều khiển:"
++
++#~ msgid "EAP Method:"
++#~ msgstr "Phương pháp EAP:"
++
++#~ msgid "Hardware Address:"
++#~ msgstr "Địa chỉ phần cứng:"
++
++#~ msgid "IP Address:"
++#~ msgstr "Địa chỉ IP:"
++
++#~ msgid "Identity:"
++#~ msgstr "Thực thể:"
++
++#~ msgid "Interface:"
++#~ msgstr "Giao diện:"
++
++#~ msgid "Key Type:"
++#~ msgstr "Kiểu khoá :"
++
++#~ msgid "Key:"
++#~ msgstr "Khóa:"
++
++#~ msgid ""
++#~ "None\n"
++#~ "WEP 128-bit Passphrase\n"
++#~ "WEP 64/128-bit Hex\n"
++#~ "WEP 64/128-bit ASCII\n"
++#~ msgstr ""
++#~ "Không có\n"
++#~ "WEP 128-bit cụm từ mật khẩu\n"
++#~ "WEP 64/128-bit thập lục\n"
++#~ "WEP 64/128-bit ASCII\n"
++
++#~ msgid ""
++#~ "Open System\n"
++#~ "Shared Key"
++#~ msgstr ""
++#~ "Hệ thống mở\n"
++#~ "Khóa dùng chung"
++
++#~ msgid "Other Wireless Network..."
++#~ msgstr "mạng Vô tuyến khác..."
++
++#~ msgid "Passphrase:"
++#~ msgstr "Cụm từ mật khẩu :"
++
++#~ msgid "Password:"
++#~ msgstr "Mật khẩu :"
++
++#~ msgid "Primary DNS:"
++#~ msgstr "DNS chính:"
++
++#~ msgid "Private Key File:"
++#~ msgstr "Tập tin khoá riêng:"
++
++#~ msgid "Private Key Password:"
++#~ msgstr "Mật khẩu khoá riêng:"
++
++#~ msgid "Secondary DNS:"
++#~ msgstr "DNS phụ :"
++
++#~ msgid "Select the CA Certificate File"
++#~ msgstr "Chọn tập tin chứng nhận của nhà cầm quyền chứng nhận (CA)."
++
++#~ msgid "Select the Client Certificate File"
++#~ msgstr "Chọn tập tin chứng nhận của ứng dụng khách."
++
++#~ msgid "Select the Private Key File"
++#~ msgstr "Chọn tập tin là khóa riêng."
++
++#~ msgid "Show key"
++#~ msgstr "Hiện khoá"
++
++#~ msgid "Show passphrase"
++#~ msgstr "HIện cụm từ mật khẩu"
++
++#~ msgid "Show password"
++#~ msgstr "Hiện mật khẩu"
++
++#~ msgid "Show passwords"
++#~ msgstr "Hiện các mật khẩu"
++
++#~ msgid "Speed:"
++#~ msgstr "Tốc độ :"
++
++#~ msgid "Subnet Mask:"
++#~ msgstr "Mặt nạ mạng cấp dưới:"
++
++#~ msgid "Type:"
++#~ msgstr "Kiểu :"
++
++#~ msgid "User Name:"
++#~ msgstr "Tên người dùng:"
++
++#~ msgid "Wireless Network Key Required"
++#~ msgstr "Cần thiết Khóa mạng Vô tuyến:"
++
++#~ msgid "Wireless _adapter:"
++#~ msgstr "_Bộ điều hợp vô tuyến"
++
++#~ msgid "_Always Trust this Wireless Network"
++#~ msgstr "_Luôn luôn tin cây mạng vô tuyến này"
++
++#~ msgid "_Don't remind me again"
++#~ msgstr "_Đừng nhắc nhở tôi lần nữa"
++
++#~ msgid "_Login to Network"
++#~ msgstr "_Đăng nhập với mạng"
++
++#~ msgid "_Network Name:"
++#~ msgstr "T_ên mạng:"
++
++#~ msgid "_Wireless Security:"
++#~ msgstr "_Bảo mật vô tuyến:"
++
++#~ msgid "You are now connected to the Ad-Hoc wireless network '%s'."
++#~ msgstr "Bây giờ bạn có kết nối hoạt động đến mạng vô tuyến Như có « %s »."
++
++#~ msgid "You are now connected to the wireless network '%s'."
++#~ msgstr "Bây giờ bạn có kết nối hoạt động đến mạng vô tuyến « %s »."
++
++#~ msgid "You are now connected to the wired network."
++#~ msgstr "Bây giờ bạn có kết nối hoạt động đến mạng tuyến."
++
++#~ msgid "Connection Established"
++#~ msgstr "Kết nối đã được thiết lập"
++
++#~ msgid "Disconnected"
++#~ msgstr "Bị ngắt kết nối"
+
+-#: ../gnome/applet/applet-dbus-devices.c:910
+-msgid "You are now connected to the wired network."
+-msgstr "Bây giờ bạn có kết nối hoạt động đến mạng tuyến."
+-
+-#: ../gnome/applet/applet-dbus-devices.c:916
+-msgid "Connection Established"
+-msgstr "Kết nối đã được thiết lập"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:959
+-msgid "Disconnected"
+-msgstr "Bị ngắt kết nối"
+-
+-#: ../gnome/applet/applet-dbus-devices.c:960
+-msgid "The network connection has been disconnected."
+-msgstr "Kết nối mạng đã bị ngắt."
++#~ msgid "The network connection has been disconnected."
++#~ msgstr "Kết nối mạng đã bị ngắt."
+
+ # Name: don't translate / Tên: đừng dịch
+ #~ msgid "WEP 40/128-bit ASCII"
+diff -urN NetworkManager-0.6.5/README NetworkManager-SVNr3284/README
+--- NetworkManager-0.6.5/README 2007-04-18 20:13:10.000000000 +0200
++++ NetworkManager-SVNr3284/README 2008-02-04 16:01:02.000000000 +0100
+@@ -20,7 +20,8 @@
+ For wireless networking support, NetworkManager keeps a list of wireless
+ networks, the preferred list. Preferred Networks are wireless networks that
+ the user has explicitly made NetworkManager associate with at some previous
+-time. So if the user walks into a Starbucks and explicitly asks NetworkManager to associate with that Starbucks network, NetworkManager will remember the
++time. So if the user walks into a Starbucks and explicitly asks NetworkManager
++to associate with that Starbucks network, NetworkManager will remember the
+ Starbucks network information from that point on. Upon returning to that
+ Starbucks, NetworkManager will attempt to associate _automatically_ with the
+ Starbucks network since it is now in the Preferred Networks list. The point of
+diff -urN NetworkManager-0.6.5/src/dhcp-manager/nm-dhcp-manager.c NetworkManager-SVNr3284/src/dhcp-manager/nm-dhcp-manager.c
+--- NetworkManager-0.6.5/src/dhcp-manager/nm-dhcp-manager.c 2007-04-18 20:13:04.000000000 +0200
++++ NetworkManager-SVNr3284/src/dhcp-manager/nm-dhcp-manager.c 2008-02-04 16:00:00.000000000 +0100
+@@ -476,6 +476,8 @@
+ guint32 * ip4_nis_servers = NULL;
+ struct in_addr temp_addr;
+ nm_completion_args args;
++ guint32 mtu = 0;
++ guint32 * dhcp_mtus = NULL;
+
+ g_return_val_if_fail (manager != NULL, NULL);
+ g_return_val_if_fail (req != NULL, NULL);
+@@ -580,10 +582,19 @@
+ }
+
+ /*
+- * Grab the MTU from the backend. If DHCP servers can send recommended MTU's,
+- * should set that here if the backend returns zero.
++ * MTU from the system backend is preferred; otherwise the DHCP-provided
++ * MTU is used.
+ */
+- nm_ip4_config_set_mtu (ip4_config, nm_system_get_mtu (dev));
++ mtu = nm_system_get_mtu (dev);
++ if (!mtu) {
++ if (get_ip4_uint32s (manager, dev, "interface_mtu", &dhcp_mtus, &count, TRUE)) {
++ if (count)
++ mtu = dhcp_mtus[0];
++ }
++ }
++
++ if (mtu)
++ nm_ip4_config_set_mtu (ip4_config, mtu);
+
+ out:
+ g_free (hostname);
+diff -urN NetworkManager-0.6.5/src/Makefile.am NetworkManager-SVNr3284/src/Makefile.am
+--- NetworkManager-0.6.5/src/Makefile.am 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/Makefile.am 2008-02-04 16:00:13.000000000 +0100
+@@ -64,6 +64,10 @@
+ nm-ap-security-wpa-psk.h \
+ nm-ap-security-leap.c \
+ nm-ap-security-leap.h \
++ nm-supplicant.h \
++ nm-supplicant.c \
++ nm-wired-network.c \
++ nm-wired-network.h \
+ nm-marshal-main.c \
+ kernel-types.h \
+ wpa.c \
+diff -urN NetworkManager-0.6.5/src/named-manager/nm-named-manager.c NetworkManager-SVNr3284/src/named-manager/nm-named-manager.c
+--- NetworkManager-0.6.5/src/named-manager/nm-named-manager.c 2007-04-18 20:13:05.000000000 +0200
++++ NetworkManager-SVNr3284/src/named-manager/nm-named-manager.c 2008-02-04 16:00:05.000000000 +0100
+@@ -352,6 +352,7 @@
+ const char * tmp_resolv_conf = RESOLV_CONF ".tmp";
+ char * searches = NULL;
+ FILE * f;
++ NMIP4Config *ns_config = config;
+
+ /* If no config, we don't have anything to update, so exit silently */
+ if (!config)
+@@ -367,21 +368,35 @@
+ if ((f = fopen (tmp_resolv_conf, "w")) == NULL)
+ goto lose;
+
+- if (fprintf (f, "%s","# generated by NetworkManager, do not edit!\n\n") < 0)
++ if (fprintf (f, "### BEGIN INFO\n#\n") < 0)
++ goto lose;
++ if (fprintf (f, "# Modified_by: NetworkManager\n") < 0)
++ goto lose;
++ if (fprintf (f, "# Process: /usr/bin/NetworkManager\n") < 0)
++ goto lose;
++ if (fprintf (f, "# Process_id: %d\n", getpid ()) < 0)
++ goto lose;
++ if (fprintf (f, "#\n### END INFO\n\n") < 0)
+ goto lose;
+
+- searches = compute_searches (mgr, config);
++ /* If the ip4 config is a secondary config and has no nameservers, use the
++ * nameservers from the primary config.
++ */
++ if ( nm_ip4_config_get_secondary (config)
++ && !nm_ip4_config_get_num_nameservers (config)) {
++ ns_config = mgr->priv->configs->data;
++ }
++ g_return_val_if_fail (ns_config != NULL, FALSE);
+
+- if (mgr->priv->use_named == TRUE)
+- {
++ searches = compute_searches (mgr, ns_config);
++
++ if (mgr->priv->use_named == TRUE) {
+ /* Using caching-nameserver & local DNS */
+ if (fprintf (f, "%s%s%s", "; Use a local caching nameserver controlled by NetworkManager\n\n", searches, "\nnameserver 127.0.0.1\n") < 0)
+ goto lose;
+- }
+- else
+- {
++ } else {
+ /* Using glibc resolver */
+- char *nameservers = compute_nameservers (mgr, config);
++ char *nameservers = compute_nameservers (mgr, ns_config);
+
+ fprintf (f, "%s\n\n", searches);
+ g_free (searches);
+@@ -438,6 +453,7 @@
+ add_ip4_config_to_named (NMNamedManager *mgr, NMIP4Config *config)
+ {
+ const char *domain;
++ NMIP4Config *ns_config = config;
+ int i, num_nameservers;
+ DBusMessage * message;
+ DBusMessage * reply;
+@@ -455,10 +471,18 @@
+
+ dbus_message_append_args (message, DBUS_TYPE_STRING, &domain, DBUS_TYPE_INVALID);
+
+- num_nameservers = nm_ip4_config_get_num_nameservers (config);
+- for (i = 0; i < num_nameservers; i++)
+- {
+- dbus_uint32_t server = nm_ip4_config_get_nameserver (config, i);
++ /* If the ip4 config is a secondary config and has no nameservers, use the
++ * nameservers from the primary config.
++ */
++ if ( nm_ip4_config_get_secondary (config)
++ && !nm_ip4_config_get_num_nameservers (config)) {
++ ns_config = mgr->priv->configs->data;
++ }
++ g_return_val_if_fail (ns_config != NULL, FALSE);
++
++ num_nameservers = nm_ip4_config_get_num_nameservers (ns_config);
++ for (i = 0; i < num_nameservers; i++) {
++ dbus_uint32_t server = nm_ip4_config_get_nameserver (ns_config, i);
+ dbus_uint16_t port = htons (53); /* default DNS port */
+ char fwd_policy = dflt ? 1 : 2; /* 'first' : 'only' */
+
+diff -urN NetworkManager-0.6.5/src/NetworkManagerAPList.c NetworkManager-SVNr3284/src/NetworkManagerAPList.c
+--- NetworkManager-0.6.5/src/NetworkManagerAPList.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerAPList.c 2008-02-04 16:00:13.000000000 +0100
+@@ -463,32 +463,33 @@
+ const char * merge_essid = nm_ap_get_essid (merge_ap);
+ const GTimeVal *merge_ap_seen = nm_ap_get_last_seen (merge_ap);
+
+- /* Did the AP's name change? */
+- if (!devlist_essid || !merge_essid || nm_null_safe_strcmp (devlist_essid, merge_essid))
+- {
+- nm_dbus_signal_wireless_network_change (app_data->dbus_connection,
+- dev, list_ap, NETWORK_STATUS_DISAPPEARED, -1);
+- new = TRUE;
++ /* All attributes should be updated when merging a non-hidden SSID,
++ * but prefer most attributes of existing non-hidden SSIDs when the
++ * merge AP is hidden.
++ */
++ if (merge_essid) {
++ /* Did the AP's name change? */
++ if (!devlist_essid || nm_null_safe_strcmp (devlist_essid, merge_essid)) {
++ nm_dbus_signal_wireless_network_change (app_data->dbus_connection,
++ dev, list_ap, NETWORK_STATUS_DISAPPEARED, -1);
++ new = TRUE;
++ }
++
++ nm_ap_set_capabilities (list_ap, nm_ap_get_capabilities (merge_ap));
++ nm_ap_set_broadcast (list_ap, nm_ap_get_broadcast (merge_ap));
++ nm_ap_set_essid (list_ap, merge_essid);
+ }
+
+- nm_ap_set_capabilities (list_ap, nm_ap_get_capabilities (merge_ap));
+- if (nm_ap_get_strength (merge_ap) != nm_ap_get_strength (list_ap))
+- {
++ if (nm_ap_get_strength (merge_ap) != nm_ap_get_strength (list_ap)) {
+ nm_ap_set_strength (list_ap, nm_ap_get_strength (merge_ap));
+ strength_changed = TRUE;
+ }
+ nm_ap_set_last_seen (list_ap, merge_ap_seen);
+- nm_ap_set_broadcast (list_ap, nm_ap_get_broadcast (merge_ap));
+
+ /* If the AP is noticed in a scan, it's automatically no longer
+ * artificial, since it clearly exists somewhere.
+ */
+ nm_ap_set_artificial (list_ap, FALSE);
+-
+- /* Have to change AP's name _after_ dbus signal for old network name
+- * has gone out.
+- */
+- nm_ap_set_essid (list_ap, merge_essid);
+ }
+ else if ((list_ap = nm_ap_list_get_ap_by_essid (list, nm_ap_get_essid (merge_ap))))
+ {
+diff -urN NetworkManager-0.6.5/src/NetworkManager.c NetworkManager-SVNr3284/src/NetworkManager.c
+--- NetworkManager-0.6.5/src/NetworkManager.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManager.c 2008-02-04 16:00:13.000000000 +0100
+@@ -65,8 +65,11 @@
+ */
+ static NMData *nm_data = NULL;
+
++char *ks_err_message = NULL;
++
+ static gboolean sigterm_pipe_handler (GIOChannel *src, GIOCondition condition, gpointer data);
+ static void nm_data_free (NMData *data);
++static gboolean nm_poll_killswitches(gpointer user_data);
+
+ /*
+ * nm_get_device_interface_from_hal
+@@ -274,6 +277,204 @@
+ }
+
+
++static void handle_killswitch_pcall_done (NMData *data, DBusPendingCall * pcall)
++{
++ GSource * source;
++ gboolean now_enabled = FALSE;
++ gboolean now_disabled = FALSE;
++
++ data->ks_pcall_list = g_slist_remove (data->ks_pcall_list, pcall);
++ if (g_slist_length (data->ks_pcall_list) > 0)
++ return; /* not done with all killswitches yet */
++
++ if (data->hw_rf_enabled != data->tmp_hw_rf_enabled) {
++ nm_info ("Wireless now %s by radio killswitch",
++ data->tmp_hw_rf_enabled ? "enabled" : "disabled");
++ if (data->tmp_hw_rf_enabled)
++ now_enabled = TRUE;
++ else
++ now_disabled = TRUE;
++
++ data->hw_rf_enabled = data->tmp_hw_rf_enabled;
++ }
++
++ if (data->hw_rf_enabled == data->wireless_enabled)
++ goto out;
++
++ /* Only re-enabled wireless if killswitch just changed, otherwise
++ * ignore hardware rf enabled state.
++ */
++ if (now_enabled && !data->wireless_enabled) {
++ data->wireless_enabled = TRUE;
++ nm_policy_schedule_device_change_check (data);
++ nm_dbus_signal_wireless_enabled (data);
++ } else if (!data->hw_rf_enabled && data->wireless_enabled) {
++ GSList * elt;
++
++ /* Deactivate all wireless devices and force them down so they
++ * turn off their radios.
++ */
++ nm_lock_mutex (data->dev_list_mutex, __FUNCTION__);
++ for (elt = data->dev_list; elt; elt = g_slist_next (elt)) {
++ NMDevice * dev = (NMDevice *) elt->data;
++ if (nm_device_is_802_11_wireless (dev)) {
++ nm_device_deactivate (dev);
++ nm_device_bring_down (dev);
++ }
++ }
++ nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
++
++ data->wireless_enabled = FALSE;
++ nm_policy_schedule_device_change_check (data);
++ nm_dbus_signal_wireless_enabled (data);
++ }
++
++out:
++ /* Schedule another killswitch poll */
++ source = g_timeout_source_new (6000);
++ g_source_set_callback (source, nm_poll_killswitches, data, NULL);
++ g_source_attach (source, data->main_context);
++ g_source_unref (source);
++}
++
++static void nm_killswitch_getpower_reply_cb (DBusPendingCall *pcall, NMData * data)
++{
++ DBusError err;
++ DBusMessage * reply = NULL;
++ gint32 int_status = 1;
++ guint32 uint_status = 1;
++
++ g_return_if_fail (pcall != NULL);
++ g_return_if_fail (data != NULL);
++
++ if (!dbus_pending_call_get_completed (pcall))
++ goto out;
++
++ if (!(reply = dbus_pending_call_steal_reply (pcall)))
++ goto out;
++
++ if (message_is_error (reply)) {
++ dbus_error_init (&err);
++ dbus_set_error_from_message (&err, reply);
++ if (!ks_err_message || strcmp (ks_err_message, err.message)) {
++ nm_info ("Error getting killswitch power: %s - %s", err.name, err.message);
++ g_free (ks_err_message);
++ ks_err_message = g_strdup (err.message);
++ }
++ dbus_error_free (&err);
++ goto out;
++ }
++
++ /* Handle both HAL <= 0.5.9 which uses UINT and HAL >= 0.5.10 which
++ * uses INT.
++ */
++ dbus_error_init (&err);
++ if (!dbus_message_get_args (reply, &err, DBUS_TYPE_UINT32, &uint_status, DBUS_TYPE_INVALID)) {
++ dbus_error_free (&err);
++
++ dbus_error_init (&err);
++ if (!dbus_message_get_args (reply, &err, DBUS_TYPE_INT32, &int_status, DBUS_TYPE_INVALID)) {
++ if (!ks_err_message || strcmp (ks_err_message, err.message)) {
++ nm_info ("Error getting killswitch power arguments: %s - %s", err.name, err.message);
++ g_free (ks_err_message);
++ ks_err_message = g_strdup (err.message);
++ }
++ dbus_error_free (&err);
++ goto out;
++ } else {
++ if (int_status == 0)
++ data->tmp_hw_rf_enabled = FALSE;
++ }
++ } else {
++ if (uint_status == 0)
++ data->tmp_hw_rf_enabled = FALSE;
++ }
++
++out:
++ if (reply)
++ dbus_message_unref (reply);
++
++ handle_killswitch_pcall_done (data, pcall);
++ dbus_pending_call_unref (pcall);
++}
++
++
++static gboolean nm_poll_killswitches (gpointer user_data)
++{
++ NMData * data = (NMData *) user_data;
++ DBusConnection * connection = data->dbus_connection;
++ GSList * elt;
++
++ g_return_val_if_fail (data != NULL, FALSE);
++
++ data->tmp_hw_rf_enabled = TRUE;
++
++ for (elt = data->killswitch_list; elt; elt = g_slist_next (elt))
++ {
++ DBusPendingCall * pcall;
++ DBusMessage * message;
++
++ message = dbus_message_new_method_call ("org.freedesktop.Hal",
++ elt->data,
++ "org.freedesktop.Hal.Device.KillSwitch",
++ "GetPower");
++ if (!dbus_connection_send_with_reply (connection, message, &pcall, 5000)) {
++ nm_warning ("%s(): could not send dbus message", __func__);
++ } else if (!pcall) {
++ nm_warning ("%s(): could not send dbus message; pcall was NULL", __func__);
++ } else {
++ dbus_pending_call_set_notify (pcall,
++ (DBusPendingCallNotifyFunction) nm_killswitch_getpower_reply_cb,
++ data,
++ NULL);
++ data->ks_pcall_list = g_slist_append (data->ks_pcall_list, pcall);
++ }
++ dbus_message_unref (message);
++ }
++ return FALSE;
++}
++
++
++/*
++ * nm_add_killswitch_device
++ *
++ * Adds a killswitch device to the list
++ *
++ */
++static void nm_add_killswitch_device (NMData * data, const char * udi)
++{
++ char * type;
++ GSList * elt;
++
++ type = libhal_device_get_property_string (data->hal_ctx, udi, "killswitch.type", NULL);
++ if (!type)
++ return;
++
++ if (strcmp (type, "wlan") != 0)
++ goto out;
++
++ /* see if it's already in the list */
++ for (elt = data->killswitch_list; elt; elt = g_slist_next (elt)) {
++ const char * list_udi = (const char *) elt->data;
++ if (strcmp (list_udi, udi) == 0)
++ goto out;
++ }
++
++ /* Start polling switches if this is the first switch we've found */
++ if (g_slist_length (data->killswitch_list) == 0) {
++ GSource * source = g_idle_source_new ();
++ g_source_set_callback (source, nm_poll_killswitches, data, NULL);
++ g_source_attach (source, data->main_context);
++ g_source_unref (source);
++ }
++
++ data->killswitch_list = g_slist_append (data->killswitch_list, g_strdup (udi));
++ nm_info ("Found radio killswitch %s", udi);
++
++out:
++ libhal_free_string (type);
++}
++
+ /*
+ * nm_hal_device_new_capability
+ *
+@@ -283,10 +484,9 @@
+ NMData *data = (NMData *)libhal_ctx_get_user_data (ctx);
+
+ g_return_if_fail (data != NULL);
++ g_return_if_fail (capability != NULL);
+
+- /*nm_debug ("nm_hal_device_new_capability() called with udi = %s, capability = %s", udi, capability );*/
+-
+- if (capability && ((strcmp (capability, "net.80203") == 0) || (strcmp (capability, "net.80211") == 0)))
++ if (((strcmp (capability, "net.80203") == 0) || (strcmp (capability, "net.80211") == 0)))
+ {
+ char *iface;
+
+@@ -296,6 +496,10 @@
+ g_free (iface);
+ }
+ }
++ else if (strcmp (capability, "killswitch") == 0)
++ {
++ nm_add_killswitch_device (data, udi);
++ }
+ }
+
+
+@@ -340,6 +544,30 @@
+ libhal_free_string_array (net_devices);
+ }
+
++void nm_add_initial_killswitch_devices (NMData * data)
++{
++ char ** udis;
++ int num_udis, i;
++ DBusError error;
++
++ g_return_if_fail (data != NULL);
++
++ dbus_error_init (&error);
++ udis = libhal_find_device_by_capability (data->hal_ctx, "killswitch", &num_udis, &error);
++ if (!udis)
++ return;
++
++ if (dbus_error_is_set (&error)) {
++ nm_warning("Could not find killswitch devices: %s", error.message);
++ dbus_error_free (&error);
++ return;
++ }
++
++ for (i = 0; i < num_udis; i++)
++ nm_add_killswitch_device (data, udis[i]);
++ libhal_free_string_array (udis);
++}
++
+
+ /*
+ * nm_state_change_signal_broadcast
+@@ -548,6 +776,9 @@
+
+ nm_hal_deinit (data);
+
++ if (data->dbus_connection)
++ dbus_connection_unref (data->dbus_connection);
++
+ memset (data, 0, sizeof (NMData));
+ }
+
+@@ -582,7 +813,7 @@
+ nm_hal_mainloop_integration (ctx, data->dbus_connection);
+ libhal_ctx_set_dbus_connection (ctx, data->dbus_connection);
+ dbus_error_init (&error);
+- if(!libhal_ctx_init (ctx, &error))
++ if (!libhal_ctx_init (ctx, &error))
+ {
+ nm_error ("libhal_ctx_init() failed: %s\n"
+ "Make sure the hal daemon is running?",
+@@ -616,28 +847,39 @@
+ g_return_if_fail (data != NULL);
+
+ if ((data->hal_ctx = nm_get_hal_ctx (data)))
++ {
++ nm_add_initial_killswitch_devices (data);
+ nm_add_initial_devices (data);
++ }
++
++ /* If there weren't any killswitches, mark hardware RF to on */
++ if (g_slist_length (data->killswitch_list) == 0)
++ data->hw_rf_enabled = TRUE;
+ }
+
+
+ void nm_hal_deinit (NMData *data)
+ {
++ DBusError error;
++
+ g_return_if_fail (data != NULL);
+
+- if (data->hal_ctx)
+- {
+- DBusError error;
++ if (!data->hal_ctx)
++ return;
+
+- dbus_error_init (&error);
+- libhal_ctx_shutdown (data->hal_ctx, &error);
+- if (dbus_error_is_set (&error))
+- {
+- nm_warning ("libhal shutdown failed - %s", error.message);
+- dbus_error_free (&error);
+- }
+- libhal_ctx_free (data->hal_ctx);
+- data->hal_ctx = NULL;
++ g_slist_foreach (data->killswitch_list, (GFunc) g_free, NULL);
++ g_slist_free (data->killswitch_list);
++ data->killswitch_list = NULL;
++
++ dbus_error_init (&error);
++ libhal_ctx_shutdown (data->hal_ctx, &error);
++ if (dbus_error_is_set (&error))
++ {
++ nm_warning ("libhal shutdown failed - %s", error.message);
++ dbus_error_free (&error);
+ }
++ libhal_ctx_free (data->hal_ctx);
++ data->hal_ctx = NULL;
+ }
+
+
+diff -urN NetworkManager-0.6.5/src/NetworkManagerDbus.c NetworkManager-SVNr3284/src/NetworkManagerDbus.c
+--- NetworkManager-0.6.5/src/NetworkManagerDbus.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerDbus.c 2008-02-04 16:00:13.000000000 +0100
+@@ -174,7 +174,7 @@
+ {
+ NMData * data;
+ NMDevice * dev;
+- NMAccessPoint * ap;
++ char *essid;
+ DeviceStatus status;
+ } NMStatusChangeData;
+
+@@ -232,11 +232,9 @@
+ }
+
+ /* If the device was wireless, attach the name of the wireless network that failed to activate */
+- if (cb_data->ap)
++ if (cb_data->essid)
+ {
+- const char *essid = nm_ap_get_essid (cb_data->ap);
+- if (essid)
+- dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_STRING, &essid, DBUS_TYPE_INVALID);
++ dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_STRING, &cb_data->essid, DBUS_TYPE_INVALID);
+ }
+ else
+ dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path, DBUS_TYPE_INVALID);
+@@ -248,8 +246,7 @@
+ if (message)
+ dbus_message_unref (message);
+
+- if (cb_data->ap)
+- nm_ap_unref (cb_data->ap);
++ g_free (cb_data->essid);
+
+ g_free (dev_path);
+ g_object_unref (G_OBJECT (cb_data->dev));
+@@ -259,7 +256,7 @@
+ }
+
+
+-void nm_dbus_schedule_device_status_change_signal (NMData *data, NMDevice *dev, NMAccessPoint *ap, DeviceStatus status)
++void nm_dbus_schedule_device_status_change_signal (NMData *data, NMDevice *dev, const char *essid, DeviceStatus status)
+ {
+ NMStatusChangeData *cb_data = NULL;
+ GSource *source;
+@@ -271,11 +268,9 @@
+ g_object_ref (G_OBJECT (dev));
+ cb_data->data = data;
+ cb_data->dev = dev;
+- if (ap)
+- {
+- nm_ap_ref (ap);
+- cb_data->ap = ap;
+- }
++ if (essid)
++ cb_data->essid = g_strdup (essid);
++
+ cb_data->status = status;
+
+ source = g_idle_source_new ();
+@@ -434,6 +429,29 @@
+ }
+
+
++void nm_dbus_signal_wireless_enabled (NMData * data)
++{
++ DBusMessage * message;
++
++ g_return_if_fail (data != NULL);
++ g_return_if_fail (data->dbus_connection != NULL);
++
++ if (!(message = dbus_message_new_signal (NM_DBUS_PATH, NM_DBUS_INTERFACE, "WirelessEnabled")))
++ {
++ nm_warning ("%s(): Not enough memory for new dbus message!", __func__);
++ return;
++ }
++
++ dbus_message_append_args (message,
++ DBUS_TYPE_BOOLEAN, &data->wireless_enabled,
++ DBUS_TYPE_BOOLEAN, &data->hw_rf_enabled,
++ DBUS_TYPE_INVALID);
++ if (!dbus_connection_send (data->dbus_connection, message, NULL))
++ nm_warning ("%s(): Could not emit the WirelessEnabled signal!", __func__);
++
++ dbus_message_unref (message);
++}
++
+ /*
+ * nm_dbus_signal_filter
+ *
+@@ -490,7 +508,7 @@
+ }
+ else if (dbus_message_is_signal (message, NMI_DBUS_INTERFACE, "UserInterfaceActivated"))
+ {
+- nm_device_802_11_wireless_set_scan_interval (data, NULL, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
++ nm_device_802_11_wireless_ui_activated (data, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
+ handled = TRUE;
+ }
+ }
+diff -urN NetworkManager-0.6.5/src/NetworkManagerDbus.h NetworkManager-SVNr3284/src/NetworkManagerDbus.h
+--- NetworkManager-0.6.5/src/NetworkManagerDbus.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerDbus.h 2008-02-04 16:00:13.000000000 +0100
+@@ -62,12 +62,13 @@
+ char * nm_dbus_get_object_path_for_device (NMDevice *dev);
+ char * nm_dbus_get_object_path_for_network (NMDevice *dev, NMAccessPoint *ap);
+
+-void nm_dbus_schedule_device_status_change_signal (NMData *data, NMDevice *dev, NMAccessPoint *ap, DeviceStatus status);
++void nm_dbus_schedule_device_status_change_signal (NMData *data, NMDevice *dev, const char *essid, DeviceStatus status);
+
+ void nm_dbus_signal_state_change (DBusConnection *connection, NMData *data);
+
+ void nm_dbus_signal_wireless_network_change (DBusConnection *connection, NMDevice80211Wireless *dev, NMAccessPoint *ap, NMNetworkStatus status, gint strength);
+ void nm_dbus_signal_device_strength_change (DBusConnection *connection, NMDevice80211Wireless *dev, gint strength);
++void nm_dbus_signal_wireless_enabled (NMData * data);
+
+ NMDevice * nm_dbus_get_device_from_escaped_object_path (NMData *data, const char *path);
+
+diff -urN NetworkManager-0.6.5/src/NetworkManagerMain.h NetworkManager-SVNr3284/src/NetworkManagerMain.h
+--- NetworkManager-0.6.5/src/NetworkManagerMain.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerMain.h 2008-02-04 16:00:13.000000000 +0100
+@@ -82,6 +82,7 @@
+ GSList * dev_list;
+ GMutex * dev_list_mutex;
+
++ gboolean hw_rf_enabled;
+ gboolean wireless_enabled;
+ gboolean modem_active;
+ gboolean asleep;
+@@ -90,6 +91,10 @@
+ GSList * dialup_list;
+ GMutex * dialup_list_mutex;
+
++ GSList * killswitch_list;
++ GSList * ks_pcall_list; /* track killswitch D-Bus pending calls */
++ gboolean tmp_hw_rf_enabled;
++
+ struct NMAccessPointList *allowed_ap_list;
+ struct NMAccessPointList *invalid_ap_list;
+ } NMData;
+diff -urN NetworkManager-0.6.5/src/NetworkManagerPolicy.c NetworkManager-SVNr3284/src/NetworkManagerPolicy.c
+--- NetworkManager-0.6.5/src/NetworkManagerPolicy.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerPolicy.c 2008-02-04 16:00:13.000000000 +0100
+@@ -51,7 +51,8 @@
+ {
+ NMDevice *dev = NULL;
+ NMData *data = NULL;
+- NMAccessPoint * ap = NULL;
++ NMActRequest * dev_req;
++ const char *network_id = NULL;
+
+ g_return_val_if_fail (req != NULL, FALSE);
+
+@@ -61,14 +62,26 @@
+ dev = nm_act_request_get_dev (req);
+ g_assert (dev);
+
+- if (nm_device_is_802_11_wireless (dev))
+- ap = nm_act_request_get_ap (req);
++ /* Ensure that inactive devices don't get the activated signal
++ * sent due to race conditions.
++ */
++ dev_req = nm_device_get_act_request (dev);
++ if (!dev_req || (dev_req != req))
++ return FALSE;
++
++ if (NM_IS_DEVICE_802_11_WIRELESS (dev))
++ network_id = nm_ap_get_essid (nm_act_request_get_ap (req));
++ else if (NM_IS_DEVICE_802_3_ETHERNET (dev)) {
++ NMWiredNetwork *wired_net = nm_act_request_get_wired_network (req);
++ if (wired_net)
++ network_id = nm_wired_network_get_network_id (wired_net);
++ }
+
+ nm_device_activation_success_handler (dev, req);
+
+ nm_act_request_unref (req);
+ nm_info ("Activation (%s) successful, device activated.", nm_device_get_iface (dev));
+- nm_dbus_schedule_device_status_change_signal (data, dev, ap, DEVICE_NOW_ACTIVE);
++ nm_dbus_schedule_device_status_change_signal (data, dev, network_id, DEVICE_NOW_ACTIVE);
+ nm_schedule_state_change_signal_broadcast (data);
+
+ return FALSE;
+@@ -115,7 +128,7 @@
+ {
+ NMDevice * dev = NULL;
+ NMData * data = NULL;
+- NMAccessPoint *ap = NULL;
++ const char *network_id = NULL;
+
+ g_return_val_if_fail (req != NULL, FALSE);
+
+@@ -127,11 +140,16 @@
+
+ nm_device_activation_failure_handler (dev, req);
+
+- if (nm_device_is_802_11_wireless (dev))
+- ap = nm_act_request_get_ap (req);
++ if (NM_IS_DEVICE_802_11_WIRELESS (dev))
++ network_id = nm_ap_get_essid (nm_act_request_get_ap (req));
++ else if (NM_IS_DEVICE_802_3_ETHERNET (dev)) {
++ NMWiredNetwork *wired_net = nm_act_request_get_wired_network (req);
++ if (wired_net)
++ network_id = nm_wired_network_get_network_id (wired_net);
++ }
+
+ nm_info ("Activation (%s) failed.", nm_device_get_iface (dev));
+- nm_dbus_schedule_device_status_change_signal (data, dev, ap, DEVICE_ACTIVATION_FAILED);
++ nm_dbus_schedule_device_status_change_signal (data, dev, network_id, DEVICE_ACTIVATION_FAILED);
+
+ nm_device_deactivate (dev);
+ nm_schedule_state_change_signal_broadcast (data);
+@@ -265,14 +283,16 @@
+ }
+
+ #if 0
+- nm_info ("AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (best_wired_dev) : "(null)",
+- best_wireless_dev ? nm_device_get_iface (best_wireless_dev) : "(null)", (best_wireless_dev && *ap) ? nm_ap_get_essid (*ap) : "null" );
++ nm_info ("AUTO: Best wired device = %s, best wireless device = %s (%s)", best_wired_dev ? nm_device_get_iface (NM_DEVICE (best_wired_dev)) : "(null)",
++ best_wireless_dev ? nm_device_get_iface (NM_DEVICE (best_wireless_dev)) : "(null)", (best_wireless_dev && *ap) ? nm_ap_get_essid (*ap) : "null" );
+ #endif
+
+ return highest_priority_dev;
+ }
+
+
++static GStaticMutex dcc_mutex = G_STATIC_MUTEX_INIT;
++
+ /*
+ * nm_policy_device_change_check
+ *
+@@ -294,7 +314,9 @@
+
+ g_return_val_if_fail (data != NULL, FALSE);
+
++ g_static_mutex_lock (&dcc_mutex);
+ data->dev_change_check_idle_id = 0;
++ g_static_mutex_unlock (&dcc_mutex);
+
+ old_dev = nm_get_active_device (data);
+
+@@ -303,11 +325,19 @@
+
+ if (old_dev)
+ {
++ gboolean has_link = TRUE;
+ guint32 caps = nm_device_get_capabilities (old_dev);
+
++ /* Ensure ethernet devices have a link before starting activation,
++ * partially works around Fedora #194124.
++ */
++ if (nm_device_is_802_3_ethernet (old_dev))
++ has_link = nm_device_has_active_link (old_dev);
++
+ /* Don't interrupt a currently activating device. */
+ if ( nm_device_is_activating (old_dev)
+- && !nm_device_can_interrupt_activation (old_dev))
++ && !nm_device_can_interrupt_activation (old_dev)
++ && has_link)
+ {
+ nm_info ("Old device '%s' activating, won't change.", nm_device_get_iface (old_dev));
+ goto out;
+@@ -425,12 +455,41 @@
+ if (do_switch && (nm_device_is_802_3_ethernet (new_dev) || (nm_device_is_802_11_wireless (new_dev) && ap)))
+ {
+ NMActRequest * act_req = NULL;
++ gboolean has_link = TRUE;
+
+- if ((act_req = nm_act_request_new (data, new_dev, ap, FALSE)))
++ /* Ensure ethernet devices have a link before starting activation,
++ * partially works around Fedora #194124.
++ */
++ if (nm_device_is_802_3_ethernet (new_dev))
++ has_link = nm_device_has_active_link (new_dev);
++
++ if (has_link)
+ {
+- nm_info ("Will activate connection '%s%s%s'.", nm_device_get_iface (new_dev), ap ? "/" : "", ap ? nm_ap_get_essid (ap) : "");
+- nm_policy_schedule_device_activation (act_req);
+- nm_act_request_unref (act_req);
++ if ((act_req = nm_act_request_new (data, new_dev, FALSE)))
++ {
++ nm_info ("Will activate connection '%s%s%s'.",
++ nm_device_get_iface (new_dev),
++ ap ? "/" : "",
++ ap ? nm_ap_get_essid (ap) : "");
++
++ if (ap) {
++ nm_act_request_set_ap (act_req, ap);
++ nm_ap_unref (ap);
++ }
++
++ nm_policy_schedule_device_activation (act_req);
++ nm_act_request_unref (act_req);
++ }
++ else
++ {
++ nm_info ("Error creating activation request for %s",
++ nm_device_get_iface (new_dev));
++ }
++ }
++ else
++ {
++ nm_info ("Won't activate %s because it no longer has a link.",
++ nm_device_get_iface (new_dev));
+ }
+ }
+
+@@ -452,11 +511,9 @@
+ */
+ void nm_policy_schedule_device_change_check (NMData *data)
+ {
+- static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
+-
+ g_return_if_fail (data != NULL);
+
+- g_static_mutex_lock (&mutex);
++ g_static_mutex_lock (&dcc_mutex);
+
+ if (data->dev_change_check_idle_id == 0)
+ {
+@@ -466,8 +523,7 @@
+ data->dev_change_check_idle_id = g_source_attach (source, data->main_context);
+ g_source_unref (source);
+ }
+-
+- g_static_mutex_unlock (&mutex);
++ g_static_mutex_unlock (&dcc_mutex);
+ }
+
+
+diff -urN NetworkManager-0.6.5/src/NetworkManagerSystem.c NetworkManager-SVNr3284/src/NetworkManagerSystem.c
+--- NetworkManager-0.6.5/src/NetworkManagerSystem.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/NetworkManagerSystem.c 2008-02-04 16:00:13.000000000 +0100
+@@ -64,6 +64,7 @@
+ struct sockaddr_in *p;
+ const char * iface;
+ int err;
++ NMIP4Config * config = NULL;
+
+ iface = nm_device_get_iface (dev);
+
+@@ -75,6 +76,15 @@
+ if (ip4_gateway == 0)
+ return TRUE;
+
++ /*
++ * Do not add the route if the destination is on the same subnet.
++ */
++ config = nm_device_get_ip4_config(dev);
++ if (config &&
++ ((guint32)ip4_dest & nm_ip4_config_get_netmask(config)) ==
++ (nm_ip4_config_get_address(config) & nm_ip4_config_get_netmask(config)))
++ return TRUE;
++
+ if ((sk = nm_dev_sock_open (dev, NETWORK_CONTROL, __FUNCTION__, NULL)) == NULL)
+ return FALSE;
+
+@@ -167,24 +177,6 @@
+ }
+
+
+-static struct nl_cache * get_link_cache (struct nl_handle *nlh)
+-{
+- static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
+- static struct nl_cache * link_cache = NULL;
+-
+- g_static_mutex_lock (&mutex);
+- if (!link_cache)
+- link_cache = rtnl_link_alloc_cache (nlh);
+- if (!link_cache)
+- nm_warning ("ERROR: couldn't allocate rtnl link cache!");
+- else
+- nl_cache_update (nlh, link_cache);
+- g_static_mutex_unlock (&mutex);
+-
+- return link_cache;
+-}
+-
+-
+ static void iface_to_rtnl_index (const char *iface, struct nl_handle *nlh, struct rtnl_addr *addr)
+ {
+ struct nl_cache * cache = NULL;
+@@ -194,14 +186,17 @@
+ g_return_if_fail (nlh != NULL);
+ g_return_if_fail (addr != NULL);
+
+- if ((cache = get_link_cache (nlh)))
+- {
+- i = rtnl_link_name2i (cache, iface);
+- if (RTNL_LINK_NOT_FOUND != i)
+- rtnl_addr_set_ifindex (addr, i);
++ cache = rtnl_link_alloc_cache (nlh);
++ if (!cache) {
++ nm_warning ("%s: couldn't allocate link cache.", __func__);
++ return;
+ }
+- else
+- nm_warning ("iface_to_rtnl_link() couldn't allocate link cache.");
++
++ nl_cache_update (nlh, cache);
++ i = rtnl_link_name2i (cache, iface);
++ if (RTNL_LINK_NOT_FOUND != i)
++ rtnl_addr_set_ifindex (addr, i);
++ nl_cache_free (cache);
+ }
+
+
+@@ -213,45 +208,85 @@
+ g_return_val_if_fail (iface != NULL, NULL);
+ g_return_val_if_fail (nlh != NULL, NULL);
+
+- if ((cache = get_link_cache (nlh)))
+- have_link = rtnl_link_get_by_name (cache, iface);
+- else
+- nm_warning ("iface_to_rtnl_link() couldn't allocate link cache.");
++ cache = rtnl_link_alloc_cache (nlh);
++ if (!cache) {
++ nm_warning ("%s: couldn't allocate link cache.", __func__);
++ return NULL;
++ }
++
++ nl_cache_update (nlh, cache);
++ have_link = rtnl_link_get_by_name (cache, iface);
++ nl_cache_free (cache);
+
+ return have_link;
+ }
+
+-
+-static struct nl_handle * new_nl_handle (void)
++static struct
++nl_handle *new_nl_handle (gboolean recursive)
+ {
+- struct nl_handle * nlh = NULL;
++ struct nl_handle *nlh = NULL;
++ struct nl_cb *cb;
+
+- nlh = nl_handle_alloc_nondefault(NL_CB_VERBOSE);
+- nl_handle_set_pid (nlh, (pthread_self() << 16 | getpid()));
+- if (nl_connect(nlh, NETLINK_ROUTE) < 0)
+- {
+- nm_warning ("%s: couldn't connecto to netlink: %s", __func__, nl_geterror());
++ cb = nl_cb_alloc (NL_CB_VERBOSE);
++ nlh = nl_handle_alloc_cb (cb);
++ if (!nlh) {
++ nm_warning ("%s: couldn't allocate netlink handle: %s", __func__, nl_geterror ());
++ return NULL;
++ }
++
++ if (nl_connect (nlh, NETLINK_ROUTE) < 0) {
++ /* HACK: try one more time. Because the netlink monitor for link state
++ * inits before we get here, it grabs the port that matches the PID
++ * of the NM process, which also happens to be the PID that libnl uses
++ * the first time too. The real fix is to convert nm-netlink-monitor.c
++ * over to use libnl.
++ */
+ nl_handle_destroy (nlh);
+- nlh = NULL;
++ if (recursive)
++ return NULL;
++
++ nlh = new_nl_handle (TRUE);
++ if (!nlh) {
++ nm_warning ("%s: couldn't connect to netlink: %s", __func__, nl_geterror ());
++ return NULL;
++ }
+ }
+
+ return nlh;
+ }
+
++static void
++destroy_nl_handle (struct nl_handle *nlh)
++{
++ g_return_if_fail (nlh != NULL);
++
++ nl_close (nlh);
++ nl_handle_destroy (nlh);
++}
+
+ int
+ nm_system_get_rtnl_index_from_iface (const char *iface)
+ {
+ struct nl_handle * nlh = NULL;
+- struct nl_cache * cache = NULL;
++ struct nl_cache * cache;
+ int i = RTNL_LINK_NOT_FOUND;
+
+- nlh = new_nl_handle ();
+- if (nlh && (cache = get_link_cache (nlh)))
+- i = rtnl_link_name2i (cache, iface);
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
++ nlh = new_nl_handle (FALSE);
++ if (!nlh)
++ return RTNL_LINK_NOT_FOUND;
++
++ cache = rtnl_link_alloc_cache (nlh);
++ if (!cache) {
++ nm_warning ("%s: couldn't allocate link cache.", iface);
++ goto out;
++ }
++
++ nl_cache_update (nlh, cache);
++ i = rtnl_link_name2i (cache, iface);
++ nl_cache_free (cache);
+
++out:
++ destroy_nl_handle (nlh);
+ return i;
+ }
+
+@@ -264,19 +299,32 @@
+ struct nl_cache * cache = NULL;
+ char * buf = NULL;
+
+- nlh = new_nl_handle ();
+- if (nlh && (cache = get_link_cache (nlh)))
+- {
+- buf = g_malloc0 (MAX_IFACE_LEN);
+- if (!rtnl_link_i2name (cache, rtnl_index, buf, MAX_IFACE_LEN - 1))
+- {
+- g_free (buf);
+- buf = NULL;
+- }
++ nlh = new_nl_handle (FALSE);
++ if (!nlh)
++ return NULL;
++
++ cache = rtnl_link_alloc_cache (nlh);
++ if (!cache) {
++ nm_warning ("Couldn't allocate link cache.");
++ goto out;
++ }
++
++ nl_cache_update (nlh, cache);
++
++ buf = g_malloc0 (MAX_IFACE_LEN);
++ if (!buf)
++ goto destroy_cache;
++
++ if (!rtnl_link_i2name (cache, rtnl_index, buf, MAX_IFACE_LEN - 1)) {
++ g_free (buf);
++ buf = NULL;
+ }
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
+
++destroy_cache:
++ nl_cache_free (cache);
++
++out:
++ destroy_nl_handle (nlh);
+ return buf;
+ }
+
+@@ -303,13 +351,15 @@
+ config = nm_device_get_ip4_config (dev);
+ g_return_val_if_fail (config != NULL, FALSE);
+
++ nlh = new_nl_handle (FALSE);
++ if (!nlh)
++ return FALSE;
++
+ nm_system_delete_default_route ();
+ nm_system_device_flush_addresses (dev);
+ nm_system_device_flush_routes (dev);
+ nm_system_flush_arp_cache ();
+
+- nlh = new_nl_handle ();
+-
+ if ((addr = nm_ip4_config_to_rtnl_addr (config, NM_RTNL_ADDR_DEFAULT)))
+ {
+ iface_to_rtnl_index (nm_device_get_iface (dev), nlh, addr);
+@@ -320,8 +370,7 @@
+ else
+ nm_warning ("nm_system_device_set_from_ip4_config(): couldn't create rtnl address!\n");
+
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
++ destroy_nl_handle (nlh);
+
+ sleep (1);
+ nm_system_device_set_ip4_route (dev, nm_ip4_config_get_gateway (config), 0, 0, nm_ip4_config_get_mss (config));
+@@ -414,7 +463,13 @@
+ * Set IPv4 configuration of a VPN device from an NMIP4Config object.
+ *
+ */
+-gboolean nm_system_vpn_device_set_from_ip4_config (NMNamedManager *named, NMDevice *active_device, const char *iface, NMIP4Config *config, char **routes, int num_routes)
++gboolean
++nm_system_vpn_device_set_from_ip4_config (NMNamedManager *named,
++ NMDevice *active_device,
++ const char *iface,
++ NMIP4Config *config,
++ char **routes,
++ int num_routes)
+ {
+ NMIP4Config * ad_config = NULL;
+ struct nl_handle * nlh = NULL;
+@@ -427,71 +482,73 @@
+ if (active_device && (ad_config = nm_device_get_ip4_config (active_device)))
+ nm_system_device_set_ip4_route (active_device, nm_ip4_config_get_gateway (ad_config), nm_ip4_config_get_gateway (config), 0xFFFFFFFF, nm_ip4_config_get_mss (config));
+
+- if (iface != NULL && strlen (iface))
+- {
+- nm_system_device_set_up_down_with_iface (iface, TRUE);
++ if (!iface || !strlen (iface))
++ goto done;
+
+- nlh = new_nl_handle ();
++ nlh = new_nl_handle (FALSE);
++ if (!nlh)
++ goto done;
+
+- if ((addr = nm_ip4_config_to_rtnl_addr (config, NM_RTNL_ADDR_PTP_DEFAULT)))
+- {
+- int err = 0;
+- iface_to_rtnl_index (iface, nlh, addr);
+- if ((err = rtnl_addr_add (nlh, addr, 0)) < 0)
+- nm_warning ("nm_system_device_set_from_ip4_config(): error %d returned from rtnl_addr_add():\n%s", err, nl_geterror());
+- rtnl_addr_put (addr);
+- }
+- else
+- nm_warning ("nm_system_vpn_device_set_from_ip4_config(): couldn't create rtnl address!\n");
++ nm_system_device_set_up_down_with_iface (iface, TRUE);
+
+- /* Set the MTU */
+- if ((request = rtnl_link_alloc ()))
+- {
+- struct rtnl_link * old;
++ if ((addr = nm_ip4_config_to_rtnl_addr (config, NM_RTNL_ADDR_PTP_DEFAULT)))
++ {
++ int err = 0;
++ iface_to_rtnl_index (iface, nlh, addr);
++ if ((err = rtnl_addr_add (nlh, addr, 0)) < 0)
++ nm_warning ("nm_system_device_set_from_ip4_config(): error %d returned from rtnl_addr_add():\n%s", err, nl_geterror());
++ rtnl_addr_put (addr);
++ }
++ else
++ nm_warning ("nm_system_vpn_device_set_from_ip4_config(): couldn't create rtnl address!\n");
+
+- old = iface_to_rtnl_link (iface, nlh);
+- rtnl_link_set_mtu (request, 1412);
+- rtnl_link_change (nlh, old, request, 0);
++ /* Set the MTU */
++ if ((request = rtnl_link_alloc ()))
++ {
++ struct rtnl_link * old;
+
+- rtnl_link_put (old);
+- rtnl_link_put (request);
+- }
++ old = iface_to_rtnl_link (iface, nlh);
++ rtnl_link_set_mtu (request, 1412);
++ rtnl_link_change (nlh, old, request, 0);
+
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
++ rtnl_link_put (old);
++ rtnl_link_put (request);
++ }
+
+- sleep (1);
++ destroy_nl_handle (nlh);
+
+- nm_system_device_flush_routes_with_iface (iface);
+- if (num_routes <= 0)
+- {
+- nm_system_delete_default_route ();
+- nm_system_device_add_default_route_via_device_with_iface (iface);
+- }
+- else
++ sleep (1);
++
++ nm_system_device_flush_routes_with_iface (iface);
++ if (num_routes <= 0)
++ {
++ nm_system_delete_default_route ();
++ nm_system_device_add_default_route_via_device_with_iface (iface);
++ }
++ else
++ {
++ int i;
++ for (i = 0; i < num_routes; i++)
+ {
+- int i;
+- for (i = 0; i < num_routes; i++)
+- {
+- char *valid_ip4_route;
++ char *valid_ip4_route;
+
+- /* Make sure the route is valid, otherwise it's a security risk as the route
+- * text is simply taken from the user, and passed directly to system(). If
+- * we did not check the route, think of:
+- *
+- * system("/sbin/ip route add `rm -rf /` dev eth0")
+- *
+- * where `rm -rf /` was the route text. As UID 0 (root), we have to be careful.
+- */
+- if ((valid_ip4_route = validate_ip4_route (routes[i])))
+- {
+- nm_system_device_add_route_via_device_with_iface (iface, valid_ip4_route);
+- g_free (valid_ip4_route);
+- }
++ /* Make sure the route is valid, otherwise it's a security risk as the route
++ * text is simply taken from the user, and passed directly to system(). If
++ * we did not check the route, think of:
++ *
++ * system("/sbin/ip route add `rm -rf /` dev eth0")
++ *
++ * where `rm -rf /` was the route text. As UID 0 (root), we have to be careful.
++ */
++ if ((valid_ip4_route = validate_ip4_route (routes[i])))
++ {
++ nm_system_device_add_route_via_device_with_iface (iface, valid_ip4_route);
++ g_free (valid_ip4_route);
+ }
+ }
+ }
+
++done:
+ nm_named_manager_add_ip4_config (named, config);
+
+ return TRUE;
+@@ -538,7 +595,8 @@
+
+ g_return_val_if_fail (iface != NULL, FALSE);
+
+- if (!(nlh = new_nl_handle ()))
++ nlh = new_nl_handle (FALSE);
++ if (!nlh)
+ return FALSE;
+
+ if (!(request = rtnl_link_alloc ()))
+@@ -559,9 +617,7 @@
+ success = TRUE;
+
+ out:
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
+-
++ destroy_nl_handle (nlh);
+ return success;
+ }
+
+@@ -583,7 +639,7 @@
+ if (!mtu)
+ return;
+
+- nlh = new_nl_handle ();
++ nlh = new_nl_handle (FALSE);
+ if (!nlh)
+ return;
+
+@@ -604,6 +660,6 @@
+ out_request:
+ rtnl_link_put (request);
+ out_nl_close:
+- nl_close (nlh);
+- nl_handle_destroy (nlh);
++ destroy_nl_handle (nlh);
+ }
++
+diff -urN NetworkManager-0.6.5/src/nm-activation-request.c NetworkManager-SVNr3284/src/nm-activation-request.c
+--- NetworkManager-0.6.5/src/nm-activation-request.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-activation-request.c 2008-02-04 16:00:13.000000000 +0100
+@@ -36,6 +36,7 @@
+ NMData * data;
+ NMDevice * dev;
+ NMAccessPoint * ap;
++ NMWiredNetwork *wired_net;
+ NMIP4Config * ip4_config;
+
+ gboolean user_requested;
+@@ -48,16 +49,13 @@
+ };
+
+
+-NMActRequest * nm_act_request_new (NMData *data, NMDevice *dev, NMAccessPoint *ap, gboolean user_requested)
++NMActRequest * nm_act_request_new (NMData *data, NMDevice *dev, gboolean user_requested)
+ {
+ NMActRequest * req;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (dev != NULL, NULL);
+
+- if (nm_device_is_802_11_wireless (dev))
+- g_return_val_if_fail (ap != NULL, NULL);
+-
+ req = g_malloc0 (sizeof (NMActRequest));
+ req->refcount = 1;
+ req->data = data;
+@@ -65,10 +63,6 @@
+ g_object_ref (G_OBJECT (dev));
+ req->dev = dev;
+
+- if (ap)
+- nm_ap_ref (ap);
+- req->ap = ap;
+-
+ req->user_requested = user_requested;
+ req->dhcp_state = nm_dhcp_manager_get_state_for_device (data->dhcp_manager, dev);
+
+@@ -103,6 +97,9 @@
+ g_source_destroy (source);
+ }
+
++ if (req->wired_net)
++ g_object_unref (req->wired_net);
++
+ memset (req, 0, sizeof (NMActRequest));
+ g_free (req);
+ }
+@@ -124,6 +121,14 @@
+ }
+
+
++gboolean nm_act_request_get_user_requested (NMActRequest *req)
++{
++ g_return_val_if_fail (req != NULL, FALSE);
++
++ return req->user_requested;
++}
++
++
+ NMAccessPoint * nm_act_request_get_ap (NMActRequest *req)
+ {
+ g_return_val_if_fail (req != NULL, NULL);
+@@ -132,11 +137,42 @@
+ }
+
+
+-gboolean nm_act_request_get_user_requested (NMActRequest *req)
++void nm_act_request_set_ap (NMActRequest *req, NMAccessPoint *ap)
+ {
+- g_return_val_if_fail (req != NULL, FALSE);
++ g_return_if_fail (req != NULL);
+
+- return req->user_requested;
++ if (req->ap)
++ {
++ nm_ap_unref (req->ap);
++ req->ap = NULL;
++ }
++ if (ap)
++ {
++ nm_ap_ref (ap);
++ req->ap = ap;
++ }
++}
++
++
++NMWiredNetwork *nm_act_request_get_wired_network (NMActRequest *req)
++{
++ g_return_val_if_fail (req != NULL, NULL);
++
++ return req->wired_net;
++}
++
++
++void nm_act_request_set_wired_network (NMActRequest *req, NMWiredNetwork *wired_net)
++{
++ g_return_if_fail (req != NULL);
++
++ if (req->wired_net)
++ {
++ g_object_unref (req->wired_net);
++ req->wired_net = NULL;
++ }
++ if (wired_net)
++ req->wired_net = g_object_ref (wired_net);
+ }
+
+
+@@ -242,4 +278,3 @@
+
+ req->dhcp_timeout = dhcp_timeout;
+ }
+-
+diff -urN NetworkManager-0.6.5/src/nm-activation-request.h NetworkManager-SVNr3284/src/nm-activation-request.h
+--- NetworkManager-0.6.5/src/nm-activation-request.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-activation-request.h 2008-02-04 16:00:13.000000000 +0100
+@@ -28,19 +28,25 @@
+ #include "NetworkManagerMain.h"
+ #include "nm-device.h"
+ #include "NetworkManagerAP.h"
++#include "nm-wired-network.h"
+ #include "nm-ip4-config.h"
+
+
+
+-NMActRequest * nm_act_request_new (NMData *data, NMDevice *dev, NMAccessPoint *ap, gboolean user_requested);
++NMActRequest * nm_act_request_new (NMData *data, NMDevice *dev, gboolean user_requested);
+ void nm_act_request_ref (NMActRequest *req);
+ void nm_act_request_unref (NMActRequest *req);
+
+ NMDevice * nm_act_request_get_dev (NMActRequest *req);
+ NMData * nm_act_request_get_data (NMActRequest *req);
+-NMAccessPoint * nm_act_request_get_ap (NMActRequest *req);
+ gboolean nm_act_request_get_user_requested (NMActRequest *req);
+
++NMAccessPoint * nm_act_request_get_ap (NMActRequest *req);
++void nm_act_request_set_ap (NMActRequest *req, NMAccessPoint *ap);
++
++NMWiredNetwork *nm_act_request_get_wired_network (NMActRequest *req);
++void nm_act_request_set_wired_network (NMActRequest *req, NMWiredNetwork *network);
++
+ NMIP4Config * nm_act_request_get_ip4_config (NMActRequest *req);
+ void nm_act_request_set_ip4_config (NMActRequest *req, NMIP4Config *ip4_config);
+
+diff -urN NetworkManager-0.6.5/src/nm-ap-security.c NetworkManager-SVNr3284/src/nm-ap-security.c
+--- NetworkManager-0.6.5/src/nm-ap-security.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security.c 2008-02-04 16:00:13.000000000 +0100
+@@ -171,7 +171,7 @@
+ nm_ap_security_write_supplicant_config (NMAPSecurity *self,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc)
++ NMAPSecurityWriteFlags flag)
+ {
+ g_return_val_if_fail (self != NULL, FALSE);
+ g_return_val_if_fail (ctrl != NULL, FALSE);
+@@ -181,7 +181,7 @@
+ return FALSE;
+
+ return NM_AP_SECURITY_GET_CLASS (self)->write_supplicant_config_func (self,
+- ctrl, nwid, adhoc);
++ ctrl, nwid, flag);
+ }
+
+ void
+@@ -240,7 +240,7 @@
+ real_write_supplicant_config (NMAPSecurity *self,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc)
++ NMAPSecurityWriteFlags flag)
+ {
+ /* Unencrypted network setup */
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+diff -urN NetworkManager-0.6.5/src/nm-ap-security.h NetworkManager-SVNr3284/src/nm-ap-security.h
+--- NetworkManager-0.6.5/src/nm-ap-security.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security.h 2008-02-04 16:00:13.000000000 +0100
+@@ -40,6 +40,12 @@
+ #define NM_IS_AP_SECURITY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AP_SECURITY))
+ #define NM_AP_SECURITY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AP_SECURITY, NMAPSecurityClass))
+
++typedef enum {
++ NM_AP_SECURITY_WRITE_FLAG_NONE,
++ NM_AP_SECURITY_WRITE_FLAG_ADHOC,
++ NM_AP_SECURITY_WRITE_FLAG_WIRED
++} NMAPSecurityWriteFlags;
++
+ typedef struct _NMAPSecurity NMAPSecurity;
+ typedef struct _NMAPSecurityClass NMAPSecurityClass;
+ typedef struct _NMAPSecurityPrivate NMAPSecurityPrivate;
+@@ -67,7 +73,7 @@
+ gboolean (*write_supplicant_config_func)(NMAPSecurity *self,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc);
++ NMAPSecurityWriteFlags flag);
+
+ guint32 (*get_default_capabilities_func)(NMAPSecurity *self);
+ gboolean (*get_authentication_required_func)(NMAPSecurity *self);
+@@ -94,7 +100,7 @@
+ gboolean nm_ap_security_write_supplicant_config (NMAPSecurity *self,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc);
++ NMAPSecurityWriteFlags flag);
+
+ const char * nm_ap_security_get_description (NMAPSecurity *self);
+
+diff -urN NetworkManager-0.6.5/src/nm-ap-security-leap.c NetworkManager-SVNr3284/src/nm-ap-security-leap.c
+--- NetworkManager-0.6.5/src/nm-ap-security-leap.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security-leap.c 2008-02-04 16:00:13.000000000 +0100
+@@ -100,7 +100,7 @@
+ real_write_supplicant_config (NMAPSecurity *instance,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean user_created)
++ NMAPSecurityWriteFlags flag)
+ {
+ NMAPSecurityLEAP * self = NM_AP_SECURITY_LEAP (instance);
+ gboolean success = FALSE;
+@@ -109,6 +109,11 @@
+
+ g_return_val_if_fail (nm_ap_security_get_we_cipher (instance) == NM_AUTH_TYPE_LEAP, FALSE);
+
++ /* LEAP is not valid for wired */
++ if (flag == NM_AP_SECURITY_WRITE_FLAG_WIRED)
++ goto out;
++
++
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA", nwid))
+ goto out;
+
+diff -urN NetworkManager-0.6.5/src/nm-ap-security-wep.c NetworkManager-SVNr3284/src/nm-ap-security-wep.c
+--- NetworkManager-0.6.5/src/nm-ap-security-wep.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security-wep.c 2008-02-04 16:00:13.000000000 +0100
+@@ -115,12 +115,16 @@
+ real_write_supplicant_config (NMAPSecurity *instance,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc)
++ NMAPSecurityWriteFlags flag)
+ {
+ gboolean success = FALSE;
+ char * msg = NULL;
+ const char * key = nm_ap_security_get_key (instance);
+
++ /* WEP is not valid for wired */
++ if (flag == NM_AP_SECURITY_WRITE_FLAG_WIRED)
++ goto out;
++
+ /* WEP network setup */
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+ "SET_NETWORK %i key_mgmt NONE", nwid))
+diff -urN NetworkManager-0.6.5/src/nm-ap-security-wpa-eap.c NetworkManager-SVNr3284/src/nm-ap-security-wpa-eap.c
+--- NetworkManager-0.6.5/src/nm-ap-security-wpa-eap.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security-wpa-eap.c 2008-02-04 16:00:13.000000000 +0100
+@@ -57,7 +57,6 @@
+ NMAPSecurityWPA_EAP * security = NULL;
+ int eap_method;
+ int key_type;
+- int phase2_type;
+ int wpa_version;
+ char * identity = NULL;
+ char * passwd = NULL;
+@@ -172,7 +171,7 @@
+ real_write_supplicant_config (NMAPSecurity *instance,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc)
++ NMAPSecurityWriteFlags flag)
+ {
+ NMAPSecurityWPA_EAP * self = NM_AP_SECURITY_WPA_EAP (instance);
+ gboolean success = FALSE;
+@@ -213,15 +212,17 @@
+
+ /* WPA-EAP network setup */
+
+- if (self->priv->wpa_version == IW_AUTH_WPA_VERSION_WPA)
+- {
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA", nwid))
+- goto out;
+- }
+- else
+- {
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA2", nwid))
+- goto out;
++ if (flag != NM_AP_SECURITY_WRITE_FLAG_WIRED) {
++ if (self->priv->wpa_version == IW_AUTH_WPA_VERSION_WPA)
++ {
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA", nwid))
++ goto out;
++ }
++ else
++ {
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "SET_NETWORK %i proto WPA2", nwid))
++ goto out;
++ }
+ }
+
+ if (key_type != IW_AUTH_CIPHER_WEP104)
+@@ -308,7 +309,8 @@
+ * Set the pairwise and group cipher, if the user provided one. If user selected "Automatic", we
+ * let wpa_supplicant sort it out. Likewise, if the user selected "Dynamic WEP", we do nothing.
+ */
+- if (key_type != NM_AUTH_TYPE_WPA_PSK_AUTO && key_type != IW_AUTH_CIPHER_WEP104)
++ if (flag != NM_AP_SECURITY_WRITE_FLAG_WIRED &&
++ key_type != NM_AUTH_TYPE_WPA_PSK_AUTO && key_type != IW_AUTH_CIPHER_WEP104)
+ {
+ const char *cipher;
+
+@@ -330,6 +332,10 @@
+ goto out;
+ }
+
++ if (flag != NM_AP_SECURITY_WRITE_FLAG_WIRED)
++ nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "SET_NETWORK %i fragment_size 1300", nwid);
++
+ success = TRUE;
+
+ out:
+diff -urN NetworkManager-0.6.5/src/nm-ap-security-wpa-psk.c NetworkManager-SVNr3284/src/nm-ap-security-wpa-psk.c
+--- NetworkManager-0.6.5/src/nm-ap-security-wpa-psk.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-ap-security-wpa-psk.c 2008-02-04 16:00:13.000000000 +0100
+@@ -134,7 +134,7 @@
+ real_write_supplicant_config (NMAPSecurity *instance,
+ struct wpa_ctrl *ctrl,
+ int nwid,
+- gboolean adhoc)
++ NMAPSecurityWriteFlags flag)
+ {
+ NMAPSecurityWPA_PSK * self = NM_AP_SECURITY_WPA_PSK (instance);
+ gboolean success = FALSE;
+@@ -145,6 +145,11 @@
+ char * pairwise_cipher = NULL;
+ char * group_cipher = NULL;
+
++
++ /* WPA-PSK is not valid for wired */
++ if (flag == NM_AP_SECURITY_WRITE_FLAG_WIRED)
++ goto out;
++
+ /* WPA-PSK network setup */
+
+ if (self->priv->wpa_version == IW_AUTH_WPA_VERSION_WPA)
+@@ -161,7 +166,7 @@
+ }
+
+ /* Ad-Hoc has to be WPA-NONE */
+- if (adhoc)
++ if (flag == NM_AP_SECURITY_WRITE_FLAG_ADHOC)
+ key_mgmt = "WPA-NONE";
+
+ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+@@ -189,7 +194,7 @@
+ pairwise_cipher = group_cipher = "NONE";
+
+ /* Ad-Hoc requires pairwise cipher of NONE */
+- if (adhoc)
++ if (flag == NM_AP_SECURITY_WRITE_FLAG_ADHOC)
+ pairwise_cipher = "NONE";
+
+ /* If user selected "Automatic", we let wpa_supplicant sort it out */
+diff -urN NetworkManager-0.6.5/src/nm-dbus-device.c NetworkManager-SVNr3284/src/nm-dbus-device.c
+--- NetworkManager-0.6.5/src/nm-dbus-device.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-dbus-device.c 2008-02-04 16:00:13.000000000 +0100
+@@ -448,8 +448,17 @@
+ }
+ }
+ }
+- else
++ else {
++ NMActRequest *req = nm_device_get_act_request (dev);
++
++ if (req) {
++ NMWiredNetwork *wired_net = nm_act_request_get_wired_network (req);
++ if (wired_net)
++ active_network_path = g_strdup (nm_wired_network_get_network_id (wired_net));
++ }
++
+ speed = nm_device_802_3_ethernet_get_speed (NM_DEVICE_802_3_ETHERNET (dev));
++ }
+
+ if (!active_network_path)
+ active_network_path = g_strdup ("");
+diff -urN NetworkManager-0.6.5/src/nm-dbus-nm.c NetworkManager-SVNr3284/src/nm-dbus-nm.c
+--- NetworkManager-0.6.5/src/nm-dbus-nm.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-dbus-nm.c 2008-02-04 16:00:13.000000000 +0100
+@@ -1,3 +1,5 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
+ /* NetworkManager -- Network link manager
+ *
+ * Dan Williams <dcbw@redhat.com>
+@@ -227,10 +229,11 @@
+ const char * INVALID_ARGS_MESSAGE = "NetworkManager::setActiveDevice called with invalid arguments.";
+ NMDevice * dev = NULL;
+ DBusMessage * reply = NULL;
+- char * dev_path;
+- NMAccessPoint * ap = NULL;
++ char * dev_path = NULL;
++ NMAPSecurity * security = NULL;
+ NMActRequest * req;
+ DBusMessageIter iter;
++ char * network_id = NULL;
+
+ g_return_val_if_fail (connection != NULL, NULL);
+ g_return_val_if_fail (message != NULL, NULL);
+@@ -253,62 +256,62 @@
+ if (!dev || !(nm_device_get_capabilities (dev) & NM_DEVICE_CAP_NM_SUPPORTED))
+ {
+ reply = nm_dbus_create_error_message (message, NM_DBUS_INTERFACE, "DeviceNotFound",
+- "The requested network device does not exist.");
++ "The requested network device does not exist.");
+ nm_warning ("%s:%d (%s): Invalid device (device not found).", __FILE__, __LINE__, __func__);
+ goto out;
+ }
+
+- if (nm_device_is_802_11_wireless (dev))
+- {
+- NMAPSecurity * security = NULL;
+- char * essid = NULL;
+-
+- if (!dbus_message_iter_next (&iter) || (dbus_message_iter_get_arg_type (&iter) != DBUS_TYPE_STRING))
+- {
+- nm_warning ("%s:%d (%s): Invalid argument type (essid).", __FILE__, __LINE__, __func__);
++ /* Next up is the network id... */
++ if (dbus_message_iter_next (&iter) && (dbus_message_iter_get_arg_type (&iter) == DBUS_TYPE_STRING))
++ dbus_message_iter_get_basic (&iter, &network_id);
++
++ /* and finally, the security object */
++ if (dbus_message_iter_next (&iter)) {
++ security = nm_ap_security_new_deserialize (&iter);
++ if (!security) {
++ /* There was security info, but it was invalid */
++ reply = nm_dbus_create_error_message (message, NM_DBUS_INTERFACE, INVALID_ARGS_ERROR, INVALID_ARGS_MESSAGE);
++ nm_warning ("%s:%d (%s): Invalid argument (security info).", __FILE__, __LINE__, __func__);
+ goto out;
+ }
++ }
+
+- /* grab ssid and ensure validity */
+- dbus_message_iter_get_basic (&iter, &essid);
+- if (!essid || (strlen (essid) <= 0))
+- {
+- nm_warning ("%s:%d (%s): Invalid argument (essid).", __FILE__, __LINE__, __func__);
+- goto out;
+- }
++ req = nm_act_request_new (data->data, dev, TRUE);
+
+- /* If there's security information, we use that. If not, we
+- * make some up from the scan list.
+- */
+- if (dbus_message_iter_next (&iter))
+- {
+- if (!(security = nm_ap_security_new_deserialize (&iter)))
+- {
+- /* There was security info, but it was invalid */
+- reply = nm_dbus_create_error_message (message, NM_DBUS_INTERFACE, INVALID_ARGS_ERROR, INVALID_ARGS_MESSAGE);
+- nm_warning ("%s:%d (%s): Invalid argument (wireless security info).", __FILE__, __LINE__, __func__);
+- goto out;
+- }
++ if (nm_device_is_802_11_wireless (dev)) {
++ NMAccessPoint *ap;
++
++ if (!network_id || (strlen (network_id) <= 0)) {
++ nm_warning ("%s:%d (%s): Invalid argument type (essid).", __FILE__, __LINE__, __func__);
++ goto out;
+ }
+
+ /* Set up the wireless-specific activation request properties */
+- ap = nm_device_802_11_wireless_get_activation_ap (NM_DEVICE_802_11_WIRELESS (dev), essid, security);
+- if (security)
+- g_object_unref (G_OBJECT (security));
++ ap = nm_device_802_11_wireless_get_activation_ap (NM_DEVICE_802_11_WIRELESS (dev), network_id, security);
++ nm_act_request_set_ap (req, ap);
++ } else if (nm_device_is_802_3_ethernet (dev)) {
++ if (network_id && security) {
++ NMWiredNetwork *wired_net;
+
+- nm_info ("User Switch: %s / %s", dev_path, essid);
++ wired_net = nm_wired_network_new (network_id, security);
++ nm_act_request_set_wired_network (req, wired_net);
++ g_object_unref (wired_net);
++ }
+ }
+- else if (nm_device_is_802_3_ethernet (dev))
+- {
++
++ if (network_id)
++ nm_info ("User Switch: %s / %s", dev_path, network_id);
++ else
+ nm_info ("User Switch: %s", dev_path);
+- }
+
+ nm_device_deactivate (dev);
+ nm_schedule_state_change_signal_broadcast (data->data);
+- req = nm_act_request_new (data->data, dev, ap, TRUE);
+ nm_policy_schedule_device_activation (req);
+ nm_act_request_unref (req);
+
++ if (security)
++ g_object_unref (security);
++
+ /* empty success message */
+ reply = dbus_message_new_method_return (message);
+ if (!reply)
+@@ -398,7 +401,10 @@
+ g_object_unref (G_OBJECT (security));
+ nm_ap_set_user_created (new_ap, TRUE);
+
+- req = nm_act_request_new (data->data, dev, new_ap, TRUE);
++ req = nm_act_request_new (data->data, dev, TRUE);
++ nm_act_request_set_ap (req, new_ap);
++ nm_ap_unref (new_ap);
++
+ nm_policy_schedule_device_activation (req);
+ nm_act_request_unref (req);
+
+@@ -483,52 +489,83 @@
+ return (reply);
+ }
+
+-static DBusMessage *nm_dbus_nm_set_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *data)
++static DBusMessage *nm_dbus_nm_set_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *cb_data)
+ {
+ gboolean enabled = FALSE;
+ DBusError err;
+- NMData *app_data;
++ NMData * data;
++ DBusMessage * ret = NULL;
+
+- g_return_val_if_fail (data && data->data && connection && message, NULL);
++ g_return_val_if_fail (cb_data && cb_data->data && connection && message, NULL);
+
+ dbus_error_init (&err);
+ if (!dbus_message_get_args (message, &err, DBUS_TYPE_BOOLEAN, &enabled, DBUS_TYPE_INVALID))
+- return NULL;
++ goto out;
+
+- app_data = data->data;
+- app_data->wireless_enabled = enabled;
++ data = cb_data->data;
++ if (enabled == data->wireless_enabled)
++ goto out;
+
+- if (!enabled)
+- {
+- GSList *elt;
++ /* Hardware rfkill overrides whatever user wants */
++ if (!data->hw_rf_enabled) {
++ nm_info ("User request to %s wireless overridden by radio killswitch.",
++ enabled ? "enable" : "disable");
+
+- /* Physically down all wireless devices */
+- nm_lock_mutex (app_data->dev_list_mutex, __FUNCTION__);
+- for (elt = app_data->dev_list; elt; elt = g_slist_next (elt))
+- {
+- NMDevice *dev = (NMDevice *)(elt->data);
+- if (nm_device_is_802_11_wireless (dev))
+- {
++ /* Return error if user tries to re-enable wireless, or just ignore
++ * a disable wireless request when wireless is already disabled.
++ */
++ if (enabled) {
++ ret = nm_dbus_create_error_message (message,
++ NM_DBUS_INTERFACE,
++ "DisabledBySystem",
++ "Wireless disabled by hardware switch.");
++ }
++ goto out;
++ }
++
++ nm_info ("User request to %s wireless.", enabled ? "enable" : "disable");
++
++ data->wireless_enabled = enabled;
++ if (!data->wireless_enabled) {
++ GSList * elt;
++
++ /* Deactivate all wireless devices and force them down so they
++ * turn off their radios.
++ */
++ nm_lock_mutex (data->dev_list_mutex, __FUNCTION__);
++ for (elt = data->dev_list; elt; elt = g_slist_next (elt)) {
++ NMDevice * dev = (NMDevice *) elt->data;
++ if (nm_device_is_802_11_wireless (dev)) {
+ nm_device_deactivate (dev);
+ nm_device_bring_down (dev);
+ }
+ }
+- nm_unlock_mutex (app_data->dev_list_mutex, __FUNCTION__);
++ nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
+ }
+
+- nm_policy_schedule_device_change_check (data->data);
++ nm_policy_schedule_device_change_check (data);
++ nm_dbus_signal_wireless_enabled (data);
+
+- return NULL;
++out:
++ return ret;
+ }
+
+-static DBusMessage *nm_dbus_nm_get_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *data)
++static DBusMessage *nm_dbus_nm_get_wireless_enabled (DBusConnection *connection, DBusMessage *message, NMDbusCBData *cb_data)
+ {
++ NMData * data;
+ DBusMessage *reply = NULL;
+
+- g_return_val_if_fail (data && data->data && connection && message, NULL);
++ g_return_val_if_fail (cb_data && connection && message, NULL);
+
+- if ((reply = dbus_message_new_method_return (message)))
+- dbus_message_append_args (reply, DBUS_TYPE_BOOLEAN, &data->data->wireless_enabled, DBUS_TYPE_INVALID);
++ data = cb_data->data;
++ g_return_val_if_fail (data != NULL, NULL);
++
++ if ((reply = dbus_message_new_method_return (message))) {
++ dbus_message_append_args (reply,
++ DBUS_TYPE_BOOLEAN, &data->wireless_enabled,
++ DBUS_TYPE_BOOLEAN, &data->hw_rf_enabled,
++ DBUS_TYPE_INVALID);
++ }
+
+ return reply;
+ }
+diff -urN NetworkManager-0.6.5/src/nm-dbus-nmi.c NetworkManager-SVNr3284/src/nm-dbus-nmi.c
+--- NetworkManager-0.6.5/src/nm-dbus-nmi.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-dbus-nmi.c 2008-02-04 16:00:13.000000000 +0100
+@@ -1,3 +1,5 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
+ /* NetworkManager -- Network link manager
+ *
+ * Dan Williams <dcbw@redhat.com>
+@@ -22,6 +24,7 @@
+ #include "NetworkManager.h"
+ #include "nm-device.h"
+ #include "nm-activation-request.h"
++#include "nm-device-802-3-ethernet.h"
+ #include "NetworkManagerAPList.h"
+ #include "NetworkManagerPolicy.h"
+ #include "NetworkManagerUtils.h"
+@@ -29,42 +32,23 @@
+ #include "nm-utils.h"
+
+
+-/*
+- * nm_dbus_get_user_key_for_network_cb
+- *
+- * Callback from nm_dbus_get_user_key_for_network when NetworkManagerInfo returns
+- * the new user key.
+- *
+- */
+-static void nm_dbus_get_user_key_for_network_cb (DBusPendingCall *pcall, NMActRequest *req)
++static gboolean
++nm_dbus_get_wireless_user_key_done (DBusMessage *reply, NMActRequest *req)
+ {
+- DBusMessage * reply = NULL;
+- NMData * data;
+- NMDevice * dev;
+- NMAccessPoint * ap;
+- NMAPSecurity * security;
+- DBusMessageIter iter;
++ NMAccessPoint *ap;
++ NMData *data;
++ NMAPSecurity *security;
++ DBusMessageIter iter;
+
+- g_return_if_fail (pcall != NULL);
+- g_return_if_fail (req != NULL);
++ const char *iface = nm_device_get_iface (nm_act_request_get_dev (req));
+
+ data = nm_act_request_get_data (req);
+ g_assert (data);
+
+- dev = nm_act_request_get_dev (req);
+- g_assert (dev);
+-
+ ap = nm_act_request_get_ap (req);
+ g_assert (ap);
+
+- if (!dbus_pending_call_get_completed (pcall))
+- goto out;
+-
+- if (!(reply = dbus_pending_call_steal_reply (pcall)))
+- goto out;
+-
+- if (message_is_error (reply))
+- {
++ if (message_is_error (reply)) {
+ DBusError err;
+
+ dbus_error_init (&err);
+@@ -72,10 +56,8 @@
+
+ /* Check for cancelled error */
+ if (strcmp (err.name, NMI_DBUS_USER_KEY_CANCELED_ERROR) == 0)
+- {
+ nm_info ("Activation (%s) New wireless user key request for network '%s' was canceled.",
+- nm_device_get_iface (dev), nm_ap_get_essid (ap));
+- }
++ iface, nm_ap_get_essid (ap));
+ else
+ nm_warning ("nm_dbus_get_user_key_for_network_cb(): dbus returned an error.\n (%s) %s\n", err.name, err.message);
+
+@@ -87,15 +69,13 @@
+ * here... ad nauseum. Figure out how to deal with a failure here.
+ */
+ nm_ap_list_append_ap (data->invalid_ap_list, ap);
+- nm_policy_schedule_activation_failed (req);
+- goto out;
++ return FALSE;
+ }
+
+- nm_info ("Activation (%s) New wireless user key for network '%s' received.", nm_device_get_iface (dev), nm_ap_get_essid (ap));
++ nm_info ("Activation (%s) New wireless user key for network '%s' received.", iface, nm_ap_get_essid (ap));
+
+ dbus_message_iter_init (reply, &iter);
+- if ((security = nm_ap_security_new_deserialize (&iter)))
+- {
++ if ((security = nm_ap_security_new_deserialize (&iter))) {
+ NMAccessPoint *allowed_ap;
+
+ nm_ap_set_security (ap, security);
+@@ -106,11 +86,91 @@
+ nm_ap_set_security (allowed_ap, security);
+
+ g_object_unref (G_OBJECT (security)); /* set_security copies the object */
+- nm_device_activate_schedule_stage1_device_prepare (req);
+ }
++
++ return TRUE;
++}
++
++static gboolean
++nm_dbus_get_wired_user_key_done (DBusMessage *reply, NMActRequest *req)
++{
++ NMAPSecurity *security;
++ DBusMessageIter iter;
++ NMWiredNetwork *wired_net;
++ const char *iface = nm_device_get_iface (nm_act_request_get_dev (req));
++
++ wired_net = nm_act_request_get_wired_network (req);
++ g_assert (wired_net);
++
++ if (message_is_error (reply)) {
++ DBusError err;
++
++ dbus_error_init (&err);
++ dbus_set_error_from_message (&err, reply);
++
++ /* Check for cancelled error */
++ if (strcmp (err.name, NMI_DBUS_USER_KEY_CANCELED_ERROR) == 0)
++ nm_info ("Activation (%s) New wired user key request was canceled.", iface);
++ else
++ nm_warning ("nm_dbus_get_user_key_for_network_cb(): dbus returned an error.\n (%s) %s\n", err.name, err.message);
++
++ dbus_error_free (&err);
++ return FALSE;
++ }
++
++ nm_info ("Activation (%s) New wired user key received.", iface);
++
++ dbus_message_iter_init (reply, &iter);
++ if ((security = nm_ap_security_new_deserialize (&iter))) {
++ nm_wired_network_set_security (wired_net, security);
++ g_object_unref (security);
++ }
++
++ return TRUE;
++}
++
++/*
++ * nm_dbus_get_user_key_for_network_cb
++ *
++ * Callback from nm_dbus_get_user_key_for_network when NetworkManagerInfo returns
++ * the new user key.
++ *
++ */
++static void nm_dbus_get_user_key_for_network_cb (DBusPendingCall *pcall, NMActRequest *req)
++{
++ NMDevice *dev;
++ gboolean success;
++ DBusMessage *reply = NULL;
++
++ g_return_if_fail (pcall != NULL);
++ g_return_if_fail (req != NULL);
++
++ if (!dbus_pending_call_get_completed (pcall))
++ goto out;
++
++ if (!(reply = dbus_pending_call_steal_reply (pcall)))
++ goto out;
++
++ dev = nm_act_request_get_dev (req);
++ g_assert (dev);
++
+ nm_act_request_set_user_key_pending_call (req, NULL);
+
+-out:
++ if (NM_IS_DEVICE_802_11_WIRELESS (dev))
++ success = nm_dbus_get_wireless_user_key_done (reply, req);
++ else if (NM_IS_DEVICE_802_3_ETHERNET (dev))
++ success = nm_dbus_get_wired_user_key_done (reply, req);
++ else {
++ g_error ("Unhandled device type (%s)", G_OBJECT_TYPE_NAME (dev));
++ return;
++ }
++
++ if (success)
++ nm_device_activate_schedule_stage1_device_prepare (req);
++ else
++ nm_policy_schedule_activation_failed (req);
++
++ out:
+ if (reply)
+ dbus_message_unref (reply);
+ nm_act_request_unref (req);
+@@ -126,11 +186,8 @@
+ */
+ void nm_dbus_get_user_key_for_network (DBusConnection *connection, NMActRequest *req, const gboolean new_key)
+ {
+- DBusMessage * message;
+- DBusPendingCall * pcall;
+ NMData * data;
+ NMDevice * dev;
+- NMAccessPoint * ap;
+ gint32 attempt = 1;
+ char * dev_path;
+ char * net_path;
+@@ -145,22 +202,44 @@
+ dev = nm_act_request_get_dev (req);
+ g_assert (dev);
+
+- ap = nm_act_request_get_ap (req);
+- g_assert (ap);
++ if (NM_IS_DEVICE_802_11_WIRELESS (dev)) {
++ NMAccessPoint * ap;
+
+- essid = nm_ap_get_essid (ap);
+- nm_info ("Activation (%s) New wireless user key requested for network '%s'.", nm_device_get_iface (dev), essid);
++ ap = nm_act_request_get_ap (req);
++ g_assert (ap);
+
+- if (!(message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "getKeyForNetwork")))
+- {
+- nm_warning ("nm_dbus_get_user_key_for_network(): Couldn't allocate the dbus message");
++ essid = nm_ap_get_essid (ap);
++ net_path = nm_dbus_get_object_path_for_network (dev, ap);
++
++ nm_info ("Activation (%s) New wireless user key requested for network '%s'.",
++ nm_device_get_iface (dev), essid);
++
++ } else if (NM_IS_DEVICE_802_3_ETHERNET (dev)) {
++ NMWiredNetwork *wired_net;
++
++ wired_net = nm_act_request_get_wired_network (req);
++ g_assert (wired_net);
++
++ essid = nm_wired_network_get_network_id (wired_net);
++ net_path = g_strdup ("/");
++ } else {
++ g_error ("Unhandled device type (%s)", G_OBJECT_TYPE_NAME (dev));
+ return;
+ }
+
+ dev_path = nm_dbus_get_object_path_for_device (dev);
+- net_path = nm_dbus_get_object_path_for_network (dev, ap);
++
+ if (dev_path && strlen (dev_path) && net_path && strlen (net_path))
+ {
++ DBusMessage *message;
++ DBusPendingCall *pcall;
++
++ if (!(message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "getKeyForNetwork")))
++ {
++ nm_warning ("nm_dbus_get_user_key_for_network(): Couldn't allocate the dbus message");
++ return;
++ }
++
+ dbus_message_append_args (message, DBUS_TYPE_OBJECT_PATH, &dev_path,
+ DBUS_TYPE_OBJECT_PATH, &net_path,
+ DBUS_TYPE_STRING, &essid,
+@@ -176,7 +255,11 @@
+ }
+ else
+ nm_warning ("nm_dbus_get_user_key_for_network(): could not send dbus message");
+- } else nm_warning ("nm_dbus_get_user_key_for_network(): bad object path data");
++
++ dbus_message_unref (message);
++ } else
++ nm_warning ("nm_dbus_get_user_key_for_network(): bad object path data");
++
+ g_free (net_path);
+ g_free (dev_path);
+
+@@ -184,8 +267,6 @@
+ * we just hang in the activation process and nothing happens
+ * until the user cancels stuff.
+ */
+-
+- dbus_message_unref (message);
+ }
+
+
+@@ -219,26 +300,15 @@
+ }
+
+
+-/*
+- * nm_dbus_update_network_info
+- *
+- * Tell NetworkManagerInfo the updated info of the AP
+- *
+- */
+-gboolean nm_dbus_update_network_info (DBusConnection *connection, NMAccessPoint *ap, const gboolean automatic)
+-{
+- DBusMessage * message;
+- gboolean success = FALSE;
+- const char * essid;
+- gchar * char_bssid;
+- NMAPSecurity * security;
+- const struct ether_addr *addr;
+- DBusMessageIter iter;
+-
+- g_return_val_if_fail (connection != NULL, FALSE);
+- g_return_val_if_fail (ap != NULL, FALSE);
+-
+- essid = nm_ap_get_essid (ap);
++static gboolean update_network_info (DBusConnection *connection,
++ const char *network_id,
++ gboolean automatic,
++ const char *bssid,
++ NMAPSecurity *security)
++{
++ DBusMessage *message;
++ DBusMessageIter iter;
++ gboolean success = FALSE;
+
+ if (!(message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "updateNetworkInfo")))
+ {
+@@ -249,19 +319,52 @@
+ dbus_message_iter_init_append (message, &iter);
+
+ /* First argument: ESSID (STRING) */
+- dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &essid);
++ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &network_id);
+
+ /* Second argument: Automatic (BOOLEAN) */
+ dbus_message_iter_append_basic (&iter, DBUS_TYPE_BOOLEAN, &automatic);
+
+ /* Third argument: Access point's BSSID */
++ dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &bssid);
++
++ /* Serialize the AP's security info into the message */
++ if (nm_ap_security_serialize (security, &iter) != 0)
++ goto unref;
++
++ if (dbus_connection_send (connection, message, NULL))
++ success = TRUE;
++ else
++ nm_warning ("update_network_info(): failed to send dbus message.");
++
++unref:
++ dbus_message_unref (message);
++
++out:
++ return success;
++
++}
++
++
++/*
++ * nm_dbus_update_network_info
++ *
++ * Tell NetworkManagerInfo the updated info of the AP
++ *
++ */
++gboolean nm_dbus_update_network_info (DBusConnection *connection, NMAccessPoint *ap, const gboolean automatic)
++{
++ gboolean success;
++ gchar *char_bssid;
++ const struct ether_addr *addr;
++
++ g_return_val_if_fail (connection != NULL, FALSE);
++ g_return_val_if_fail (ap != NULL, FALSE);
++
+ addr = nm_ap_get_address (ap);
+ if ((nm_ap_get_mode (ap) == IW_MODE_INFRA) && nm_ethernet_address_is_valid (addr))
+ {
+ char_bssid = g_new0 (gchar, 20);
+ iw_ether_ntop (addr, char_bssid);
+- dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &char_bssid);
+- g_free (char_bssid);
+ }
+ else
+ {
+@@ -269,26 +372,30 @@
+ * the BSSID is usually randomly constructed by the driver and
+ * changed every time you activate the network.
+ */
+- char_bssid = " ";
+- dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &char_bssid);
++ char_bssid = g_strdup (" ");
+ }
+
+- /* Serialize the AP's security info into the message */
+- security = nm_ap_get_security (ap);
+- g_assert (security);
+- if (nm_ap_security_serialize (security, &iter) != 0)
+- goto unref;
++ success = update_network_info (connection,
++ nm_ap_get_essid (ap),
++ automatic,
++ char_bssid,
++ nm_ap_get_security (ap));
++ g_free (char_bssid);
+
+- if (dbus_connection_send (connection, message, NULL))
+- success = TRUE;
+- else
+- nm_warning ("nm_dbus_update_network_info(): failed to send dbus message.");
++ return success;
++}
+
+-unref:
+- dbus_message_unref (message);
+
+-out:
+- return success;
++gboolean nm_dbus_update_wired_network_info (DBusConnection *connection, NMWiredNetwork *wired_net)
++{
++ g_return_val_if_fail (connection != NULL, FALSE);
++ g_return_val_if_fail (wired_net != NULL, FALSE);
++
++ return update_network_info (connection,
++ nm_wired_network_get_network_id (wired_net),
++ FALSE,
++ "WIRED", /* CRAPPY HACK */
++ nm_wired_network_get_security (wired_net));
+ }
+
+
+diff -urN NetworkManager-0.6.5/src/nm-dbus-nmi.h NetworkManager-SVNr3284/src/nm-dbus-nmi.h
+--- NetworkManager-0.6.5/src/nm-dbus-nmi.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-dbus-nmi.h 2008-02-04 16:00:13.000000000 +0100
+@@ -24,6 +24,7 @@
+
+ #include "NetworkManager.h"
+ #include "NetworkManagerAP.h"
++#include "nm-wired-network.h"
+
+ void nm_dbus_get_user_key_for_network (DBusConnection *connection, NMActRequest *req, const gboolean new_key);
+
+@@ -33,6 +34,9 @@
+
+ gboolean nm_dbus_update_network_info (DBusConnection *connection, NMAccessPoint *ap, const gboolean user_requested);
+
++gboolean nm_dbus_update_wired_network_info (DBusConnection *connection, NMWiredNetwork *wired_net);
++
++
+ void nm_dbus_update_one_allowed_network (DBusConnection *connection, const char *network, NMData *data);
+
+ void nm_dbus_update_allowed_networks (DBusConnection *connection, NMAccessPointList *list, NMData *data);
+diff -urN NetworkManager-0.6.5/src/nm-device-802-11-wireless.c NetworkManager-SVNr3284/src/nm-device-802-11-wireless.c
+--- NetworkManager-0.6.5/src/nm-device-802-11-wireless.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-device-802-11-wireless.c 2008-02-04 16:00:13.000000000 +0100
+@@ -1,3 +1,5 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
+ /* NetworkManager -- Network link manager
+ *
+ * Dan Williams <dcbw@redhat.com>
+@@ -35,6 +37,7 @@
+ #include "nm-device-private.h"
+ #include "NetworkManagerAPList.h"
+ #include "NetworkManagerDbus.h"
++#include "nm-supplicant.h"
+ #include "nm-utils.h"
+ #include "NetworkManagerUtils.h"
+ #include "NetworkManagerPolicy.h"
+@@ -47,15 +50,6 @@
+
+ #define NM_DEVICE_802_11_WIRELESS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_DEVICE_802_11_WIRELESS, NMDevice80211WirelessPrivate))
+
+-struct _Supplicant
+-{
+- GPid pid;
+- GSource * watch;
+- GSource * status;
+- struct wpa_ctrl * ctrl;
+- GSource * timeout;
+-};
+-
+ struct _NMDevice80211WirelessPrivate
+ {
+ gboolean dispose_has_run;
+@@ -77,7 +71,7 @@
+ GSource * scan_timeout;
+ GSource * pending_scan;
+
+- struct _Supplicant supplicant;
++ NMSupplicant *supplicant;
+
+ guint32 failed_link_count;
+ GSource * link_timeout;
+@@ -86,6 +80,7 @@
+ /* Static options from driver */
+ guint8 we_version;
+ guint32 capabilities;
++ gboolean has_scan_capa_ssid;
+ };
+
+
+@@ -107,14 +102,11 @@
+
+ static void cancel_scan_results_timeout (NMDevice80211Wireless *self);
+
+-static void cancel_pending_scan (NMDevice80211Wireless *self);
+-
+-static void request_and_convert_scan_results (NMDevice80211Wireless *self);
+-
+ static gboolean process_scan_results (NMDevice80211Wireless *dev,
+ const guint8 *res_buf,
+ guint32 res_buf_len);
+-static void schedule_scan (NMDevice80211Wireless *self);
++
++static void schedule_scan (NMDevice80211Wireless *self, guint32 ms);
+
+ static int wireless_qual_to_percent (const struct iw_quality *qual,
+ const struct iw_quality *max_qual,
+@@ -126,8 +118,6 @@
+ NMAccessPoint *ap,
+ gboolean default_link);
+
+-static void supplicant_cleanup (NMDevice80211Wireless *self);
+-
+ static void remove_link_timeout (NMDevice80211Wireless *self);
+
+ static void nm_device_802_11_wireless_set_wep_enc_key (NMDevice80211Wireless *self,
+@@ -140,6 +130,9 @@
+ int data_len,
+ NMDevice80211Wireless *self);
+
++static void nm_device_802_11_wireless_set_scan_interval (NMDevice80211Wireless *self,
++ NMWirelessScanInterval interval);
++
+ /*
+ * nm_device_802_11_wireless_update_signal_strength
+ *
+@@ -379,10 +372,29 @@
+ self->priv = NM_DEVICE_802_11_WIRELESS_GET_PRIVATE (self);
+ self->priv->dispose_has_run = FALSE;
+ self->priv->is_initialized = FALSE;
+-
+- self->priv->supplicant.pid = -1;
+ }
+
++
++/* Until a new wireless-tools comes out that has the defs and the structure,
++ * need to copy them here.
++ */
++/* Scan capability flags - in (struct iw_range *)->scan_capa */
++#define NM_IW_SCAN_CAPA_NONE 0x00
++#define NM_IW_SCAN_CAPA_ESSID 0x01
++
++struct iw_range_with_scan_capa
++{
++ guint32 throughput;
++ guint32 min_nwid;
++ guint32 max_nwid;
++ guint16 old_num_channels;
++ guint8 old_num_frequency;
++
++ guint8 scan_capa;
++/* don't need the rest... */
++};
++
++
+ static void
+ real_init (NMDevice *dev)
+ {
+@@ -398,7 +410,8 @@
+ self->priv->ap_list = nm_ap_list_new (NETWORK_TYPE_DEVICE);
+
+ app_data = nm_device_get_app_data (NM_DEVICE (self));
+- nm_device_802_11_wireless_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
++
++ nm_device_802_11_wireless_set_scan_interval (self, NM_WIRELESS_SCAN_INTERVAL_INIT);
+
+ nm_device_802_11_wireless_set_mode (self, IW_MODE_INFRA);
+
+@@ -422,6 +435,7 @@
+
+ if (ioctl (nm_dev_sock_get_fd (sk), SIOCGIWRANGE, &wrq) >= 0)
+ {
++ struct iw_range_with_scan_capa *scan_capa_range;
+ int i;
+
+ self->priv->max_qual.qual = range.max_qual.qual;
+@@ -440,6 +454,22 @@
+
+ self->priv->we_version = range.we_version_compiled;
+
++ /* Check for the ability to scan specific SSIDs. Until the scan_capa
++ * field gets added to wireless-tools, need to work around that by casting
++ * to the custom structure.
++ */
++ scan_capa_range = (struct iw_range_with_scan_capa *) ⦥
++ if (scan_capa_range->scan_capa & NM_IW_SCAN_CAPA_ESSID) {
++ self->priv->has_scan_capa_ssid = TRUE;
++ nm_info ("%s: driver supports SSID scans (scan_capa 0x%02X).",
++ nm_device_get_iface (NM_DEVICE (self)),
++ scan_capa_range->scan_capa);
++ } else {
++ nm_info ("%s: driver does not support SSID scans (scan_capa 0x%02X).",
++ nm_device_get_iface (NM_DEVICE (self)),
++ scan_capa_range->scan_capa);
++ }
++
+ /* 802.11 wireless-specific capabilities */
+ self->priv->capabilities = get_wireless_capabilities (self, &range, wrq.u.data.length);
+ }
+@@ -582,7 +612,7 @@
+ NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (dev);
+
+ /* If the supplicant isn't running, we can't possibly have a link */
+- if (!self->priv->supplicant.pid)
++ if (!self->priv->supplicant)
+ nm_device_set_active_link (NM_DEVICE (self), FALSE);
+ }
+
+@@ -615,16 +645,11 @@
+ guint source_id;
+
+ /* Start the scanning timeout for devices that can do scanning */
+- if (nm_device_get_capabilities (dev) & NM_DEVICE_CAP_WIRELESS_SCAN)
+- {
+- self->priv->pending_scan = g_idle_source_new ();
+- g_source_set_callback (self->priv->pending_scan,
+- nm_device_802_11_wireless_scan,
+- self,
+- nm_device_802_11_wireless_scan_done);
+- source_id = g_source_attach (self->priv->pending_scan,
+- nm_device_get_main_context (dev));
+- g_source_unref (self->priv->pending_scan);
++ if (nm_device_get_capabilities (dev) & NM_DEVICE_CAP_WIRELESS_SCAN) {
++ /* Stupid orinoco has problems scanning immediately after being up,
++ * so wait a bit before triggering a scan.
++ */
++ schedule_scan (self, 600);
+ }
+
+ /* Peridoically update link status and signal strength */
+@@ -639,7 +664,11 @@
+ {
+ NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (dev);
+
+- supplicant_cleanup (self);
++ if (self->priv->supplicant) {
++ g_object_unref (self->priv->supplicant);
++ self->priv->supplicant = NULL;
++ }
++
+ remove_link_timeout (self);
+ }
+
+@@ -648,16 +677,15 @@
+ real_deactivate (NMDevice *dev)
+ {
+ NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (dev);
+- NMData * app_data;
+-
+- app_data = nm_device_get_app_data (dev);
+- g_assert (app_data);
+
+ /* Clean up stuff, don't leave the card associated */
+ nm_device_802_11_wireless_set_essid (self, "");
+ nm_device_802_11_wireless_set_wep_enc_key (self, NULL, 0);
+ nm_device_802_11_wireless_set_mode (self, IW_MODE_INFRA);
+- nm_device_802_11_wireless_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
++
++ /* Don't re-set the scan interval if there hasn't been a scan yet */
++ if (self->priv->last_scan > 0)
++ nm_device_802_11_wireless_set_scan_interval (self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
+ }
+
+
+@@ -1060,59 +1088,77 @@
+
+
+ static gboolean
+-set_scan_interval_cb (gpointer user_data)
++set_inactive_scan_interval_cb (gpointer user_data)
+ {
+ NMData *data = (NMData*) user_data;
+
+- nm_device_802_11_wireless_set_scan_interval (data, NULL, NM_WIRELESS_SCAN_INTERVAL_INACTIVE);
+-
++ nm_device_802_11_wireless_ui_activated (data, NM_WIRELESS_SCAN_INTERVAL_INACTIVE);
+ return FALSE;
+ }
+
+-void
+-nm_device_802_11_wireless_set_scan_interval (NMData *data,
+- NMDevice80211Wireless *self,
++static void
++set_inactive_scan_timeout (NMData *data, NMWirelessScanInterval interval)
++{
++ static GSource *source = NULL;
++
++ if (source) {
++ g_source_destroy (source);
++ g_source_unref (source);
++ source = NULL;
++ }
++
++ if (interval != NM_WIRELESS_SCAN_INTERVAL_INACTIVE) {
++ source = g_timeout_source_new (120000);
++ g_source_set_callback (source, set_inactive_scan_interval_cb, (gpointer) data, NULL);
++ g_source_attach (source, data->main_context);
++ }
++}
++
++static void
++nm_device_802_11_wireless_set_scan_interval (NMDevice80211Wireless *self,
+ NMWirelessScanInterval interval)
+ {
+- static guint source_id = 0;
+- GSource * source = NULL;
+- GSList * elt;
+- gboolean found = FALSE;
+- guint8 seconds = nm_wireless_scan_interval_to_seconds (interval);
++ guint8 seconds = nm_wireless_scan_interval_to_seconds (interval);
+
+- g_return_if_fail (data != NULL);
++ g_return_if_fail (self != NULL);
+
+- if (source_id != 0)
+- g_source_remove (source_id);
++ self->priv->scan_interval = seconds;
+
+- for (elt = data->dev_list; elt; elt = g_slist_next (elt))
+- {
+- NMDevice *d = (NMDevice *)(elt->data);
+- if (self && (NM_DEVICE (self) != d))
+- continue;
++ if (interval == NM_WIRELESS_SCAN_INTERVAL_ACTIVE && !self->priv->scanning) {
++ glong new_next_scan = self->priv->last_scan + seconds;
++ GTimeVal cur_time;
+
+- if (d && nm_device_is_802_11_wireless (d))
+- {
+- NM_DEVICE_802_11_WIRELESS (d)->priv->scan_interval = seconds;
+- if (self && (NM_DEVICE (self) == d))
+- found = TRUE;
++ g_get_current_time (&cur_time);
++
++ if (new_next_scan <= cur_time.tv_sec) {
++ /* If the interval is now ACTIVE, and the last scan was more than the
++ * ACTIVE interval seconds ago, schedule an immediate scan.
++ */
++ schedule_scan (self, 200);
++ } else if (new_next_scan > cur_time.tv_sec) {
++ /* If the interval is now ACTIVE, and the last scan was less than the
++ * ACTIVE interval seconds ago, schedule a scan at last_scan + ACTIVE
++ * interval seconds.
++ */
++ schedule_scan (self, (new_next_scan - cur_time.tv_sec) * 1000);
+ }
+ }
+
+- /* In case the scan interval didn't get set (which can happen during card
+- * initialization where the device gets set up before being added to the
+- * device list), set interval here
+- */
+- if (self && !found)
+- self->priv->scan_interval = seconds;
++ set_inactive_scan_timeout (nm_device_get_app_data (NM_DEVICE (self)), interval);
++}
+
+- if (interval != NM_WIRELESS_SCAN_INTERVAL_INACTIVE)
+- {
+- source = g_timeout_source_new (120000);
+- g_source_set_callback (source, set_scan_interval_cb, (gpointer) data, NULL);
+- source_id = g_source_attach (source, data->main_context);
+- g_source_unref (source);
++void
++nm_device_802_11_wireless_ui_activated (NMData *data,
++ NMWirelessScanInterval interval)
++{
++ GSList *iter;
++
++ for (iter = data->dev_list; iter; iter = g_slist_next (iter)) {
++ if (NM_IS_DEVICE_802_11_WIRELESS (iter->data))
++ nm_device_802_11_wireless_set_scan_interval (NM_DEVICE_802_11_WIRELESS (iter->data), interval);
+ }
++
++ set_inactive_scan_timeout (data, interval);
+ }
+
+
+@@ -1141,7 +1187,7 @@
+ #endif
+ if (iw_get_ext (nm_dev_sock_get_fd (sk), nm_device_get_iface (NM_DEVICE (self)), SIOCGIWMODE, &wrq) == 0)
+ {
+- if ((mode == IW_MODE_ADHOC) || (mode == IW_MODE_INFRA))
++ if ((wrq.u.mode == IW_MODE_ADHOC) || (wrq.u.mode == IW_MODE_INFRA))
+ mode = wrq.u.mode;
+ }
+ else
+@@ -1400,14 +1446,15 @@
+ unsigned char safe_essid[IW_ESSID_MAX_SIZE + 1] = "\0";
+ const char * iface;
+ const char * driver;
++ gboolean lock_ssid = TRUE;
+
+ g_return_if_fail (self != NULL);
+
+ /* Make sure the essid we get passed is a valid size */
+- if (!essid)
++ if (!essid) {
+ safe_essid[0] = '\0';
+- else
+- {
++ lock_ssid = FALSE;
++ } else {
+ strncpy ((char *) safe_essid, essid, IW_ESSID_MAX_SIZE);
+ safe_essid[IW_ESSID_MAX_SIZE] = '\0';
+ }
+@@ -1417,7 +1464,7 @@
+ {
+ wreq.u.essid.pointer = (caddr_t) safe_essid;
+ wreq.u.essid.length = strlen ((char *) safe_essid) + 1;
+- wreq.u.essid.flags = 1; /* Enable essid on card */
++ wreq.u.essid.flags = lock_ssid ? 1 : 0;
+
+ #ifdef IOCTL_DEBUG
+ nm_info ("%s: About to SET IWESSID.", iface);
+@@ -1944,7 +1991,6 @@
+ {
+ NMData * app_data = nm_device_get_app_data (NM_DEVICE (self));
+ GSource * convert_source = g_idle_source_new ();
+- GTimeVal cur_time;
+
+ /* We run the scan processing function from the main thread, since it must deliver
+ * messages over DBUS. Plus, that way the main thread is the only thread that has
+@@ -1960,8 +2006,6 @@
+ (GDestroyNotify) free_process_scan_cb_data);
+ g_source_attach (convert_source, app_data->main_context);
+ g_source_unref (convert_source);
+- g_get_current_time (&cur_time);
+- self->priv->last_scan = cur_time.tv_sec;
+ }
+ }
+
+@@ -1985,10 +2029,22 @@
+ static gboolean
+ scan_results_timeout (NMDevice80211Wireless *self)
+ {
++ GTimeVal cur_time;
++
+ g_return_val_if_fail (self != NULL, FALSE);
+
+ request_and_convert_scan_results (self);
+- schedule_scan (self);
++
++ self->priv->scanning = FALSE;
++
++ g_get_current_time (&cur_time);
++ self->priv->last_scan = cur_time.tv_sec;
++
++ /* After the first successful scan back down to the ACTIVE scan interval */
++ if (self->priv->scan_interval == nm_wireless_scan_interval_to_seconds (NM_WIRELESS_SCAN_INTERVAL_INIT))
++ nm_device_802_11_wireless_set_scan_interval (self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
++ else
++ schedule_scan (self, 0);
+
+ return FALSE;
+ }
+@@ -2061,7 +2117,6 @@
+ NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (user_data);
+ guint32 caps;
+ NMData * app_data;
+- gboolean success = FALSE;
+ const char * iface;
+
+ g_return_val_if_fail (self != NULL, FALSE);
+@@ -2073,7 +2128,7 @@
+ if (!(caps & NM_DEVICE_CAP_NM_SUPPORTED) || !(caps & NM_DEVICE_CAP_WIRELESS_SCAN))
+ goto out;
+
+- self->priv->pending_scan = NULL;
++ nm_device_802_11_wireless_scan_done ((gpointer) self);
+
+ /* Reschedule ourselves if all wireless is disabled, we're asleep,
+ * or we are currently activating.
+@@ -2082,9 +2137,8 @@
+ || (app_data->asleep == TRUE)
+ || (nm_device_is_activating (NM_DEVICE (self)) == TRUE))
+ {
+- nm_device_802_11_wireless_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_INIT);
+- schedule_scan (self);
+- goto out;
++ nm_device_802_11_wireless_set_scan_interval (self, NM_WIRELESS_SCAN_INTERVAL_INIT);
++ goto reschedule;
+ }
+
+ /*
+@@ -2094,77 +2148,87 @@
+ */
+ if ((self->priv->num_freqs > 14) && nm_device_is_activated (NM_DEVICE (self)) == TRUE)
+ {
+- nm_device_802_11_wireless_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
+- schedule_scan (self);
+- goto out;
++ nm_device_802_11_wireless_set_scan_interval (self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
++ goto reschedule;
+ }
+
+- self->priv->scanning = TRUE;
+-
+ /* Device must be up before we can scan */
+ if (nm_device_bring_up_wait (NM_DEVICE (self), 1))
+- {
+- schedule_scan (self);
+- goto out;
+- }
++ goto reschedule;
++
++ self->priv->scanning = TRUE;
+
+ /* If we're currently connected to an AP, let wpa_supplicant initiate
+ * the scan request rather than doing it ourselves.
+ */
+ iface = nm_device_get_iface (NM_DEVICE (self));
+- if (self->priv->supplicant.ctrl)
+- {
+- if (nm_utils_supplicant_request_with_check (self->priv->supplicant.ctrl,
+- "OK", __func__, NULL, "SCAN"))
+- success = TRUE;
+- }
+- else
+- {
+- NMSock * sk;
+-
+- if ((sk = nm_dev_sock_open (NM_DEVICE (self), DEV_WIRELESS, __FUNCTION__, NULL)))
+- {
+- struct iwreq wrq;
++ if (self->priv->supplicant) {
++ if (!nm_utils_supplicant_request_with_check (nm_supplicant_get_ctrl (self->priv->supplicant),
++ "OK", __func__, NULL, "SCAN")) {
++ nm_warning ("(%s): could not trigger wireless scan", iface);
++ goto reschedule;
++ }
++ schedule_scan_results_timeout (self, 10);
++ } else {
++ NMSock *sk = NULL;
++ struct iwreq wrq;
++ int ret;
+
+- wrq.u.data.pointer = NULL;
+- wrq.u.data.flags = 0;
+- wrq.u.data.length = 0;
+- if (iw_set_ext (nm_dev_sock_get_fd (sk), iface, SIOCSIWSCAN, &wrq) == 0)
+- success = TRUE;
+- nm_dev_sock_close (sk);
++ sk = nm_dev_sock_open (NM_DEVICE (self), DEV_WIRELESS, __FUNCTION__, NULL);
++ if (!sk) {
++ nm_warning ("(%s): could not open control socket on device", iface);
++ goto reschedule;
+ }
+- }
+
+- if (success)
+- {
++ memset (&wrq, 0, sizeof (wrq));
++ ret = iw_set_ext (nm_dev_sock_get_fd (sk), iface, SIOCSIWSCAN, &wrq);
++ nm_dev_sock_close (sk);
++
++ if (ret != 0) {
++ nm_warning ("(%s): could not trigger wireless scan: %s", iface, strerror (errno));
++ goto reschedule;
++ }
+ schedule_scan_results_timeout (self, 10);
+ }
+- else
+- {
+- nm_warning ("could not trigger wireless scan on device %s: %s",
+- iface, strerror (errno));
+- schedule_scan (self);
+- }
++ return FALSE;
+
++reschedule:
++ schedule_scan (self, 0);
+ out:
+ return FALSE; /* Balance g_source_attach(), destroyed on return */
+ }
+
+
++static void
++cancel_pending_scan (NMDevice80211Wireless *self)
++{
++ g_return_if_fail (self != NULL);
++
++ self->priv->scanning = FALSE;
++ if (self->priv->pending_scan) {
++ g_source_destroy (self->priv->pending_scan);
++ self->priv->pending_scan = NULL;
++ }
++}
++
++
+ /*
+- * nm_device_wireless_schedule_scan
++ * schedule_scan
+ *
+ * Schedule a wireless scan in the /device's/ thread.
+ *
+ */
+ static void
+-schedule_scan (NMDevice80211Wireless *self)
++schedule_scan (NMDevice80211Wireless *self, guint32 ms)
+ {
++ guint32 interval;
++
+ g_return_if_fail (self != NULL);
+
+ cancel_pending_scan (self);
+
+- self->priv->pending_scan = g_timeout_source_new (self->priv->scan_interval * 1000);
++ interval = ms ? ms : self->priv->scan_interval * 1000;
++ self->priv->pending_scan = g_timeout_source_new (interval);
+ g_source_set_callback (self->priv->pending_scan,
+ nm_device_802_11_wireless_scan,
+ self,
+@@ -2174,20 +2238,6 @@
+ }
+
+
+-static void
+-cancel_pending_scan (NMDevice80211Wireless *self)
+-{
+- g_return_if_fail (self != NULL);
+-
+- self->priv->scanning = FALSE;
+- if (self->priv->pending_scan)
+- {
+- g_source_destroy (self->priv->pending_scan);
+- self->priv->pending_scan = NULL;
+- }
+-}
+-
+-
+ /*
+ * is_associated
+ *
+@@ -2366,144 +2416,205 @@
+ return auth_required;
+ }
+
+-
+ /****************************************************************************/
+-/* WPA Supplicant control stuff
+- *
+- * Originally from:
+- *
+- * wpa_supplicant wrapper
+- *
+- * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
+- *
+- * 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 version 2 of the License.
+- */
+
+-#define WPA_SUPPLICANT_GLOBAL_SOCKET LOCALSTATEDIR"/run/wpa_supplicant-global"
+-#define WPA_SUPPLICANT_CONTROL_SOCKET LOCALSTATEDIR"/run/wpa_supplicant"
+-#define WPA_SUPPLICANT_NUM_RETRIES 20
+-#define WPA_SUPPLICANT_RETRY_TIME_US 100*1000
+-
+-
+-static void
+-remove_link_timeout (NMDevice80211Wireless *self)
++static guint32
++find_supported_frequency (NMDevice80211Wireless *self, guint32 *freqs)
+ {
+- g_return_if_fail (self != NULL);
++ int i;
+
+- if (self->priv->link_timeout != NULL)
+- {
+- g_source_destroy (self->priv->link_timeout);
+- self->priv->link_timeout = NULL;
++ for (i = 0; i < self->priv->num_freqs; i++) {
++ while (*freqs) {
++ if ((guint32) self->priv->freqs[i] == (*freqs * 1000000))
++ return *freqs;
++ freqs++;
++ }
+ }
+-}
+
+-static void
+-supplicant_remove_timeout (NMDevice80211Wireless *self)
+-{
+- g_return_if_fail (self != NULL);
+-
+- /* Remove any pending timeouts on the request */
+- if (self->priv->supplicant.timeout != NULL)
+- {
+- g_source_destroy (self->priv->supplicant.timeout);
+- self->priv->supplicant.timeout = NULL;
+- }
++ return 0;
+ }
+
+-static char *
+-supplicant_get_device_socket_path (NMDevice80211Wireless *self)
++static gboolean
++supplicant_send_network_config (NMDevice80211Wireless *self,
++ NMActRequest *req)
+ {
+- const char *iface;
++ NMAccessPoint * ap = NULL;
++ gboolean success = FALSE;
++ char * response = NULL;
++ int nwid;
++ const char * essid;
++ struct wpa_ctrl * ctrl;
++ gboolean is_adhoc;
++ char * hex_essid = NULL;
++ const char * ap_scan = "AP_SCAN 1";
++ guint32 caps;
++ gboolean supports_wpa;
+
+- g_return_val_if_fail (self != NULL, NULL);
++ ap = nm_act_request_get_ap (req);
++ g_assert (ap);
+
+- iface = nm_device_get_iface (NM_DEVICE (self));
+- return g_strdup_printf (WPA_SUPPLICANT_CONTROL_SOCKET "/%s", iface);
+-}
++ ctrl = nm_supplicant_get_ctrl (self->priv->supplicant);
++ g_assert (ctrl);
+
+-static void
+-supplicant_cleanup (NMDevice80211Wireless *self)
+-{
+- char * sock_path;
++ /* Assume that drivers that don't support WPA pretty much suck,
++ * and can't handle NM scanning along with wpa_supplicant. Which
++ * is the case for most of them, airo in particular.
++ */
++ caps = nm_device_get_type_capabilities (NM_DEVICE (self));
++ supports_wpa = (caps & NM_802_11_CAP_PROTO_WPA)
++ || (caps & NM_802_11_CAP_PROTO_WPA2);
+
+- g_return_if_fail (self != NULL);
++ /* Use "AP_SCAN 2" if:
++ * - The wireless network is non-broadcast and the driver doesn't support
++ * scanning specific SSIDs
++ * - The wireless network is Ad-Hoc
++ * - The wireless driver does not support WPA (stupid drivers...)
++ */
++ is_adhoc = (nm_ap_get_mode(ap) == IW_MODE_ADHOC);
++ if (is_adhoc || !supports_wpa)
++ ap_scan = "AP_SCAN 2";
++ else if (!nm_ap_get_broadcast (ap))
++ ap_scan = self->priv->has_scan_capa_ssid ? "AP_SCAN 1" : "AP_SCAN 2";
+
+- if (self->priv->supplicant.pid > 0)
+- {
+- kill (self->priv->supplicant.pid, SIGTERM);
+- self->priv->supplicant.pid = -1;
+- }
+- if (self->priv->supplicant.watch)
++ /* Tell wpa_supplicant that we'll do the scanning */
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, ap_scan))
++ goto out;
++
++ /* Standard network setup info */
++ if (!(response = nm_utils_supplicant_request (ctrl, "ADD_NETWORK")))
+ {
+- g_source_destroy (self->priv->supplicant.watch);
+- self->priv->supplicant.watch = NULL;
++ nm_warning ("Supplicant error for ADD_NETWORK.\n");
++ goto out;
+ }
+- if (self->priv->supplicant.status)
++ if (sscanf (response, "%i\n", &nwid) != 1)
+ {
+- g_source_destroy (self->priv->supplicant.status);
+- self->priv->supplicant.status = NULL;
++ nm_warning ("Supplicant error for ADD_NETWORK. Response: '%s'\n", response);
++ g_free (response);
++ goto out;
+ }
+- if (self->priv->supplicant.ctrl)
++ g_free (response);
++
++ if (nm_device_activation_should_cancel (NM_DEVICE (self)))
++ goto out;
++
++ essid = nm_ap_get_orig_essid (ap);
++ hex_essid = cipher_bin2hexstr (essid, strlen (essid), -1);
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "SET_NETWORK %i ssid %s", nwid, hex_essid))
++ goto out;
++
++ /* For non-broadcast networks, we need to set "scan_ssid 1" to scan with probe request frames.
++ * However, don't try to probe Ad-Hoc networks.
++ */
++ if (!nm_ap_get_broadcast (ap) && !is_adhoc)
+ {
+- wpa_ctrl_close (self->priv->supplicant.ctrl);
+- self->priv->supplicant.ctrl = NULL;
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "SET_NETWORK %i scan_ssid 1", nwid))
++ goto out;
+ }
+
+- supplicant_remove_timeout (self);
+- remove_link_timeout (self);
++ /* Ad-Hoc ? */
++ if (is_adhoc) {
++ guint32 adhoc_freq = nm_ap_get_freq (ap);
+
+- /* HACK: should be fixed in wpa_supplicant. Will likely
+- * require accomodations for selinux.
+- */
+- unlink (WPA_SUPPLICANT_GLOBAL_SOCKET);
+- sock_path = supplicant_get_device_socket_path (self);
+- unlink (sock_path);
+- g_free (sock_path);
+-}
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "SET_NETWORK %i mode 1", nwid))
++ goto out;
++
++ if (!adhoc_freq) {
++ guint32 freqs[] = {2412, 2437, 2462, 2472, 0};
++ adhoc_freq = find_supported_frequency (self, freqs);
++ if (!adhoc_freq)
++ adhoc_freq = 2462;
++ }
++ /* Don't make failure to set the frequency option a hard error */
++ nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "SET_NETWORK %i frequency %d",
++ nwid, adhoc_freq);
++ }
+
+-static void
+-supplicant_watch_done (gpointer user_data)
+-{
+- NMDevice80211Wireless *device = NM_DEVICE_802_11_WIRELESS (user_data);
++ if (nm_device_activation_should_cancel (NM_DEVICE (self)))
++ goto out;
+
+- device->priv->supplicant.watch = NULL;
+-}
++ if (!nm_ap_security_write_supplicant_config (nm_ap_get_security (ap), ctrl, nwid,
++ is_adhoc ?
++ NM_AP_SECURITY_WRITE_FLAG_ADHOC :
++ NM_AP_SECURITY_WRITE_FLAG_NONE))
++ goto out;
+
+-static void
+-supplicant_watch_cb (GPid pid,
+- gint status,
+- gpointer user_data)
+-{
+- NMDevice * dev = NM_DEVICE (user_data);
+- NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (user_data);
+-
+- g_assert (self);
++ if (nm_device_activation_should_cancel (NM_DEVICE (self)))
++ goto out;
+
+- if (WIFEXITED (status))
+- nm_warning ("wpa_supplicant exited with error code %d", WEXITSTATUS (status));
+- else if (WIFSTOPPED (status))
+- nm_warning ("wpa_supplicant stopped unexpectedly with signal %d", WSTOPSIG (status));
+- else if (WIFSIGNALED (status))
+- nm_warning ("wpa_supplicant died with signal %d", WTERMSIG (status));
+- else
+- nm_warning ("wpa_supplicant died from an unknown cause");
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "ENABLE_NETWORK %i", nwid, essid))
++ goto out;
+
+- supplicant_cleanup (self);
++ success = TRUE;
++out:
++ g_free (hex_essid);
+
+- nm_device_set_active_link (dev, FALSE);
++ return success;
+ }
+
++#define NM_SUPPLICANT_TIMEOUT 20 /* how long we wait for wpa_supplicant to associate (in seconds) */
+
+-static void
+-link_timeout_done (gpointer user_data)
++static unsigned int
++get_supplicant_timeout (NMDevice80211Wireless *self)
+ {
+- NMDevice80211Wireless *device = NM_DEVICE_802_11_WIRELESS (user_data);
+-
+- device->priv->link_timeout = NULL;
++ if (self->priv->num_freqs > 14)
++ return NM_SUPPLICANT_TIMEOUT * 2;
++ return NM_SUPPLICANT_TIMEOUT;
++}
++
++static gboolean
++supplicant_timed_out (gpointer user_data)
++{
++ NMDevice *dev = NM_DEVICE (user_data);
++ NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (user_data);
++ NMActRequest *req = nm_device_get_act_request (dev);
++ NMAccessPoint *ap = nm_act_request_get_ap (req);
++ NMData *data = nm_device_get_app_data (dev);
++ gboolean has_key;
++
++ /* Timed out waiting for authentication success; if the security method
++ * in use does not require access point side authentication (Open System
++ * WEP, for example) then we are likely using the wrong authentication
++ * algorithm or key. Request new one from the user.
++ */
++ if (!ap_is_auth_required (ap, &has_key) && has_key) {
++ /* Activation failed, we must have bad encryption key */
++ nm_info ("Activation (%s/wireless): association took too long (>%us), asking for new key.",
++ nm_device_get_iface (dev), get_supplicant_timeout (self));
++ nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
++ } else {
++ nm_info ("Activation (%s/wireless): association took too long (>%us), failing activation.",
++ nm_device_get_iface (dev), get_supplicant_timeout (self));
++ if (nm_device_is_activating (dev))
++ nm_policy_schedule_activation_failed (nm_device_get_act_request (dev));
++ }
++
++ return FALSE;
+ }
+
++static void
++remove_link_timeout (NMDevice80211Wireless *self)
++{
++ g_return_if_fail (self != NULL);
++
++ if (self->priv->link_timeout != NULL)
++ {
++ g_source_destroy (self->priv->link_timeout);
++ self->priv->link_timeout = NULL;
++ }
++}
++
++static void
++link_timeout_done (gpointer user_data)
++{
++ NMDevice80211Wireless *device = NM_DEVICE_802_11_WIRELESS (user_data);
++
++ device->priv->link_timeout = NULL;
++}
+
+ /*
+ * link_timeout_cb
+@@ -2533,7 +2644,7 @@
+ /* Association/authentication failed, we must have bad encryption key */
+ nm_info ("Activation (%s/wireless): disconnected during association,"
+ " asking for new key.", nm_device_get_iface (dev));
+- supplicant_remove_timeout(self);
++ nm_supplicant_remove_timeout (self->priv->supplicant);
+ nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
+ }
+ else
+@@ -2545,418 +2656,58 @@
+ return FALSE;
+ }
+
+-
+ static void
+-supplicant_status_done (gpointer user_data)
+-{
+- NMDevice80211Wireless *device = NM_DEVICE_802_11_WIRELESS (user_data);
+-
+- device->priv->supplicant.status = NULL;
+-}
+-
+-
+-#define MESSAGE_LEN 2048
+-
+-static gboolean
+-supplicant_status_cb (GIOChannel *source,
+- GIOCondition condition,
+- gpointer user_data)
+-{
+- NMDevice * dev = NM_DEVICE (user_data);
+- NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (user_data);
+- char * message;
+- size_t len;
+- struct wpa_ctrl * ctrl;
+- NMActRequest * req;
+-
+- g_assert (self);
++supplicant_state_changed (NMSupplicant *supplicant,
++ gboolean connected,
++ gpointer user_data)
++{
++ NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (user_data);
++ NMDevice *dev = NM_DEVICE (self);
++ NMActRequest *req = nm_device_get_act_request (NM_DEVICE (self));
+
+- /* Do nothing if we're supposed to be canceling activation.
+- * We'll get cleaned up by the cancellation handlers later.
+- */
+- if (nm_device_activation_should_cancel (dev))
+- return TRUE;
+-
+- ctrl = self->priv->supplicant.ctrl;
+- g_return_val_if_fail (ctrl != NULL, FALSE);
+-
+- req = nm_device_get_act_request (NM_DEVICE (self));
+-
+- message = g_malloc (MESSAGE_LEN);
+- len = MESSAGE_LEN;
+- wpa_ctrl_recv (ctrl, message, &len);
+- message[len] = '\0';
+-
+- if (strstr (message, WPA_EVENT_CONNECTED) != NULL)
+- {
++ if (connected) {
+ remove_link_timeout (self);
+ nm_device_set_active_link (dev, TRUE);
+
+ /* If this is the initial association during device activation,
+ * schedule the next activation stage.
+ */
+- if (req && (nm_act_request_get_stage (req) == NM_ACT_STAGE_DEVICE_CONFIG))
+- {
+- NMAccessPoint *ap = nm_act_request_get_ap (req);
++ if (req && (nm_act_request_get_stage (req) == NM_ACT_STAGE_DEVICE_CONFIG)) {
++ NMAccessPoint *ap = nm_act_request_get_ap (req);
+
+ nm_info ("Activation (%s/wireless) Stage 2 of 5 (Device Configure) "
+- "successful. Connected to access point '%s'.",
+- nm_device_get_iface (NM_DEVICE (self)),
+- nm_ap_get_essid (ap) ? nm_ap_get_essid (ap) : "(none)");
+- supplicant_remove_timeout (self);
++ "successful. Connected to access point '%s'.",
++ nm_device_get_iface (dev),
++ nm_ap_get_essid (ap) ? nm_ap_get_essid (ap) : "(none)");
++ nm_supplicant_remove_timeout (self->priv->supplicant);
+ nm_device_activate_schedule_stage3_ip_config_start (req);
+ }
+- }
+- else if (strstr (message, WPA_EVENT_DISCONNECTED) != NULL)
+- {
+- if (nm_device_is_activated (dev) || nm_device_is_activating (dev))
+- {
++ } else {
++ if (nm_device_is_activated (dev) || nm_device_is_activating (dev)) {
+ /* Start the link timeout so we allow some time for reauthentication */
+- if ((self->priv->link_timeout == NULL) && !self->priv->scanning)
+- {
+- GMainContext * context = nm_device_get_main_context (dev);
++ if ((self->priv->link_timeout == NULL) && !self->priv->scanning) {
+ self->priv->link_timeout = g_timeout_source_new (8000);
+ g_source_set_callback (self->priv->link_timeout,
+- link_timeout_cb,
+- self,
+- link_timeout_done);
+- g_source_attach (self->priv->link_timeout, context);
++ link_timeout_cb,
++ self,
++ link_timeout_done);
++ g_source_attach (self->priv->link_timeout, nm_device_get_main_context (dev));
+ g_source_unref (self->priv->link_timeout);
+ }
+- }
+- else
+- {
++ } else
+ nm_device_set_active_link (dev, FALSE);
+- }
+ }
+-
+- g_free (message);
+-
+- return TRUE;
+ }
+
+-
+-#define NM_SUPPLICANT_TIMEOUT 20 /* how long we wait for wpa_supplicant to associate (in seconds) */
+-
+-static unsigned int
+-get_supplicant_timeout (NMDevice80211Wireless *self)
+-{
+- if (self->priv->num_freqs > 14)
+- return NM_SUPPLICANT_TIMEOUT * 2;
+- return NM_SUPPLICANT_TIMEOUT;
+-}
+-
+-
+ static void
+-supplicant_timeout_done (gpointer user_data)
+-{
+- NMDevice80211Wireless *device = NM_DEVICE_802_11_WIRELESS (user_data);
+-
+- device->priv->supplicant.timeout = NULL;
+-}
+-
+-
+-/*
+- * supplicant_timeout_cb
+- *
+- * Called when the supplicant has been unable to connect to an access point
+- * within a specified period of time.
+- */
+-static gboolean
+-supplicant_timeout_cb (gpointer user_data)
++supplicant_down (NMSupplicant *supplicant,
++ gpointer user_data)
+ {
+- NMDevice * dev = NM_DEVICE (user_data);
+- NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (user_data);
+- NMActRequest * req = nm_device_get_act_request (dev);
+- NMAccessPoint * ap = nm_act_request_get_ap (req);
+- NMData * data = nm_device_get_app_data (dev);
+- gboolean has_key;
++ NMDevice80211Wireless *self = NM_DEVICE_802_11_WIRELESS (user_data);
+
+- g_assert (self);
+-
+- /* Timed out waiting for authentication success; if the security method
+- * in use does not require access point side authentication (Open System
+- * WEP, for example) then we are likely using the wrong authentication
+- * algorithm or key. Request new one from the user.
+- */
+- if (!ap_is_auth_required (ap, &has_key) && has_key)
+- {
+- /* Activation failed, we must have bad encryption key */
+- nm_info ("Activation (%s/wireless): association took too long (>%us), asking for new key.",
+- nm_device_get_iface (dev), get_supplicant_timeout (self));
+- nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
+- }
+- else
+- {
+- nm_info ("Activation (%s/wireless): association took too long (>%us), failing activation.",
+- nm_device_get_iface (dev), get_supplicant_timeout (self));
+- if (nm_device_is_activating (dev))
+- nm_policy_schedule_activation_failed (nm_device_get_act_request (dev));
+- }
+-
+- return FALSE;
+-}
+-
+-/*
+- * supplicant_child_setup
+- *
+- * Set the process group ID of the newly forked process
+- *
+- */
+-static void
+-supplicant_child_setup (gpointer user_data G_GNUC_UNUSED)
+-{
+- /* We are in the child process at this point */
+- pid_t pid = getpid ();
+- setpgid (pid, pid);
+-}
+-
+-static gboolean
+-supplicant_exec (NMDevice80211Wireless *self)
+-{
+- gboolean success = FALSE;
+- char * argv[4];
+- GError * error = NULL;
+- GPid pid = -1;
+-
+- argv[0] = WPA_SUPPLICANT_BIN;
+- argv[1] = "-g";
+- argv[2] = WPA_SUPPLICANT_GLOBAL_SOCKET;
+- argv[3] = NULL;
+-
+- success = g_spawn_async ("/", argv, NULL, 0, &supplicant_child_setup, NULL,
+- &pid, &error);
+- if (!success)
+- {
+- if (error)
+- {
+- nm_warning ("Couldn't start wpa_supplicant. Error: (%d) %s",
+- error->code, error->message);
+- g_error_free (error);
+- }
+- else
+- nm_warning ("Couldn't start wpa_supplicant due to an unknown error.");
+- }
+- else
+- {
+- /* Monitor the child process so we know when it stops */
+- self->priv->supplicant.pid = pid;
+- if (self->priv->supplicant.watch)
+- g_source_destroy (self->priv->supplicant.watch);
+- self->priv->supplicant.watch = g_child_watch_source_new (pid);
+- g_source_set_callback (self->priv->supplicant.watch,
+- (GSourceFunc) supplicant_watch_cb,
+- self,
+- supplicant_watch_done);
+- g_source_attach (self->priv->supplicant.watch, nm_device_get_main_context (NM_DEVICE (self)));
+- g_source_unref (self->priv->supplicant.watch);
+- }
+-
+- return success;
+-}
+-
+-
+-static gboolean
+-supplicant_interface_init (NMDevice80211Wireless *self)
+-{
+- struct wpa_ctrl * ctrl = NULL;
+- char * socket_path;
+- const char * iface = nm_device_get_iface (NM_DEVICE (self));
+- gboolean success = FALSE;
+- int tries = 0;
+-
+- /* Try to open wpa_supplicant's global control socket */
+- for (tries = 0; tries < WPA_SUPPLICANT_NUM_RETRIES && !ctrl; tries++)
+- {
+- ctrl = wpa_ctrl_open (WPA_SUPPLICANT_GLOBAL_SOCKET, NM_RUN_DIR);
+- g_usleep (WPA_SUPPLICANT_RETRY_TIME_US);
+- }
+-
+- if (!ctrl)
+- {
+- nm_info ("Error opening supplicant global control interface.");
+- goto exit;
+- }
+-
+- /* wpa_cli -g/var/run/wpa_supplicant-global interface_add eth1 "" wext /var/run/wpa_supplicant */
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+- "INTERFACE_ADD %s\t\twext\t" WPA_SUPPLICANT_CONTROL_SOCKET "\t", iface))
+- goto exit;
+- wpa_ctrl_close (ctrl);
+-
+- /* Get a control socket to wpa_supplicant for this interface.
+- * Try a couple times to work around naive socket naming
+- * in wpa_ctrl that sometimes collides with stale ones.
+- */
+- socket_path = supplicant_get_device_socket_path (self);
+- while (!self->priv->supplicant.ctrl && (tries++ < 10))
+- self->priv->supplicant.ctrl = wpa_ctrl_open (socket_path, NM_RUN_DIR);
+- g_free (socket_path);
+- if (!self->priv->supplicant.ctrl)
+- {
+- nm_info ("Error opening control interface to supplicant.");
+- goto exit;
+- }
+- success = TRUE;
+-
+-exit:
+- return success;
+-}
+-
+-
+-static gboolean
+-supplicant_send_network_config (NMDevice80211Wireless *self,
+- NMActRequest *req)
+-{
+- NMAccessPoint * ap = NULL;
+- gboolean success = FALSE;
+- char * response = NULL;
+- int nwid;
+- const char * essid;
+- struct wpa_ctrl * ctrl;
+- gboolean is_adhoc;
+- char * hex_essid = NULL;
+- const char * ap_scan = "AP_SCAN 1";
+- guint32 caps;
+- gboolean supports_wpa;
+-
+- g_return_val_if_fail (self != NULL, FALSE);
+- g_return_val_if_fail (req != NULL, FALSE);
+-
+- ap = nm_act_request_get_ap (req);
+- g_assert (ap);
+-
+- ctrl = self->priv->supplicant.ctrl;
+- g_assert (ctrl);
+-
+- /* Assume that drivers that don't support WPA pretty much suck,
+- * and can't handle NM scanning along with wpa_supplicant. Which
+- * is the case for most of them, airo in particular.
+- */
+- caps = nm_device_get_type_capabilities (NM_DEVICE (self));
+- supports_wpa = (caps & NM_802_11_CAP_PROTO_WPA)
+- || (caps & NM_802_11_CAP_PROTO_WPA2);
+-
+- /* Use "AP_SCAN 2" if:
+- * - The wireless network is non-broadcast or Ad-Hoc
+- * - The wireless driver does not support WPA (stupid drivers...)
+- */
+- is_adhoc = (nm_ap_get_mode(ap) == IW_MODE_ADHOC);
+- if (!nm_ap_get_broadcast (ap) || is_adhoc || !supports_wpa)
+- ap_scan = "AP_SCAN 2";
+-
+- /* Tell wpa_supplicant that we'll do the scanning */
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, ap_scan))
+- goto out;
+-
+- /* Standard network setup info */
+- if (!(response = nm_utils_supplicant_request (ctrl, "ADD_NETWORK")))
+- {
+- nm_warning ("Supplicant error for ADD_NETWORK.\n");
+- goto out;
+- }
+- if (sscanf (response, "%i\n", &nwid) != 1)
+- {
+- nm_warning ("Supplicant error for ADD_NETWORK. Response: '%s'\n", response);
+- g_free (response);
+- goto out;
+- }
+- g_free (response);
+-
+- if (nm_device_activation_should_cancel (NM_DEVICE (self)))
+- goto out;
+-
+- essid = nm_ap_get_orig_essid (ap);
+- hex_essid = cipher_bin2hexstr (essid, strlen (essid), -1);
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+- "SET_NETWORK %i ssid %s", nwid, hex_essid))
+- goto out;
+-
+- /* For non-broadcast networks, we need to set "scan_ssid 1" to scan with probe request frames.
+- * However, don't try to probe Ad-Hoc networks.
+- */
+- if (!nm_ap_get_broadcast (ap) && !is_adhoc)
+- {
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+- "SET_NETWORK %i scan_ssid 1", nwid))
+- goto out;
+- }
+-
+- /* Ad-Hoc ? */
+- if (is_adhoc)
+- {
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+- "SET_NETWORK %i mode 1", nwid))
+- goto out;
+- }
+-
+- if (nm_device_activation_should_cancel (NM_DEVICE (self)))
+- goto out;
+-
+- if (!nm_ap_security_write_supplicant_config (nm_ap_get_security (ap), ctrl, nwid, is_adhoc))
+- goto out;
+-
+- if (nm_device_activation_should_cancel (NM_DEVICE (self)))
+- goto out;
+-
+- if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
+- "ENABLE_NETWORK %i", nwid, essid))
+- goto out;
+-
+- success = TRUE;
+-out:
+- g_free (hex_essid);
+-
+- return success;
+-}
+-
+-
+-static gboolean
+-supplicant_monitor_start (NMDevice80211Wireless *self)
+-{
+- gboolean success = FALSE;
+- int fd = -1;
+- GIOChannel * channel;
+- GMainContext * context;
+-
+- g_return_val_if_fail (self != NULL, FALSE);
+-
+- /* register network event monitor */
+- if (wpa_ctrl_attach (self->priv->supplicant.ctrl) != 0)
+- goto out;
+-
+- if ((fd = wpa_ctrl_get_fd (self->priv->supplicant.ctrl)) < 0)
+- goto out;
+-
+- context = nm_device_get_main_context (NM_DEVICE (self));
+- channel = g_io_channel_unix_new (fd);
+- self->priv->supplicant.status = g_io_create_watch (channel, G_IO_IN);
+- g_io_channel_unref (channel);
+- g_source_set_callback (self->priv->supplicant.status,
+- (GSourceFunc) supplicant_status_cb,
+- self,
+- supplicant_status_done);
+- g_source_attach (self->priv->supplicant.status, context);
+- g_source_unref (self->priv->supplicant.status);
+-
+- /* Set up a timeout on the association to kill it after get_supplicant_time() seconds */
+- self->priv->supplicant.timeout = g_timeout_source_new (get_supplicant_timeout (self) * 1000);
+- g_source_set_callback (self->priv->supplicant.timeout,
+- supplicant_timeout_cb,
+- self,
+- supplicant_timeout_done);
+- g_source_attach (self->priv->supplicant.timeout, context);
+- g_source_unref (self->priv->supplicant.timeout);
+-
+- success = TRUE;
+-
+-out:
+- return success;
++ remove_link_timeout (self);
+ }
+
+-
+-
+-
+ /****************************************************************************/
+
+ static NMActStageReturn
+@@ -2965,14 +2716,15 @@
+ {
+ NMDevice80211Wireless * self = NM_DEVICE_802_11_WIRELESS (dev);
+ NMAccessPoint * ap = nm_act_request_get_ap (req);
+- NMActStageReturn ret = NM_ACT_STAGE_RETURN_FAILURE;
+ NMData * data = nm_act_request_get_data (req);
+ const char * iface;
+ gboolean ask_user = FALSE;
++ GMainContext *ctx;
+
+ g_assert (ap);
+
+- supplicant_cleanup (self);
++ if (self->priv->supplicant)
++ g_object_unref (self->priv->supplicant);
+
+ /* If we need an encryption key, get one */
+ if (ap_need_key (self, ap, &ask_user))
+@@ -2981,23 +2733,36 @@
+ return NM_ACT_STAGE_RETURN_POSTPONE;
+ }
+
++ /* Some cards are dumb. Wait a second */
++ sleep (1);
++
+ iface = nm_device_get_iface (dev);
+- if (!supplicant_exec (self))
++ ctx = nm_device_get_main_context (dev);
++
++ self->priv->supplicant = nm_supplicant_new ();
++ g_signal_connect (self->priv->supplicant, "state-changed",
++ G_CALLBACK (supplicant_state_changed),
++ self);
++
++ g_signal_connect (self->priv->supplicant, "down",
++ G_CALLBACK (supplicant_down),
++ self);
++
++ if (!nm_supplicant_exec (self->priv->supplicant, ctx))
+ {
+- nm_warning ("Activation (%s/wireless): couldn't start the supplicant.",
+- iface);
++ nm_warning ("Activation (%s/wireless): couldn't start the supplicant.", iface);
+ goto out;
+ }
+- if (!supplicant_interface_init (self))
++ if (!nm_supplicant_interface_init (self->priv->supplicant, iface, "wext"))
+ {
+- nm_warning ("Activation (%s/wireless): couldn't connect to the supplicant.",
+- iface);
++ nm_warning ("Activation (%s/wireless): couldn't connect to the supplicant.", iface);
+ goto out;
+ }
+- if (!supplicant_monitor_start (self))
++ if (!nm_supplicant_monitor_start (self->priv->supplicant, ctx,
++ get_supplicant_timeout (self),
++ supplicant_timed_out, self))
+ {
+- nm_warning ("Activation (%s/wireless): couldn't monitor the supplicant.",
+- iface);
++ nm_warning ("Activation (%s/wireless): couldn't monitor the supplicant.", iface);
+ goto out;
+ }
+ if (!supplicant_send_network_config (self, req))
+@@ -3008,10 +2773,13 @@
+ }
+
+ /* We'll get stage3 started when the supplicant connects */
+- ret = NM_ACT_STAGE_RETURN_POSTPONE;
++ return NM_ACT_STAGE_RETURN_POSTPONE;
+
+ out:
+- return ret;
++ g_object_unref (self->priv->supplicant);
++ self->priv->supplicant = NULL;
++
++ return NM_ACT_STAGE_RETURN_FAILURE;
+ }
+
+
+@@ -3113,6 +2881,14 @@
+ /* Activation failed, we must have bad encryption key */
+ nm_debug ("Activation (%s/wireless): could not get IP configuration info for '%s', asking for new key.",
+ nm_device_get_iface (dev), nm_ap_get_essid (ap) ? nm_ap_get_essid (ap) : "(none)");
++
++ /* Kill the supplicant */
++ if (self->priv->supplicant) {
++ g_object_unref (self->priv->supplicant);
++ self->priv->supplicant = NULL;
++ }
++ remove_link_timeout (self);
++
+ nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
+ ret = NM_ACT_STAGE_RETURN_POSTPONE;
+ }
+@@ -3446,10 +3222,9 @@
+ char *genie, *gpos, *gend, *custom;
+ NMAccessPoint *ap = NULL;
+ size_t clen;
+- int maxrate;
++ int maxrate = 0;
+ struct iw_event iwe_buf, *iwe = &iwe_buf;
+ struct stream_descr stream;
+- struct wireless_scan * wscan = NULL;
+ int ret;
+
+ g_return_val_if_fail (dev != NULL, FALSE);
+diff -urN NetworkManager-0.6.5/src/nm-device-802-11-wireless.h NetworkManager-SVNr3284/src/nm-device-802-11-wireless.h
+--- NetworkManager-0.6.5/src/nm-device-802-11-wireless.h 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-device-802-11-wireless.h 2008-02-04 16:00:13.000000000 +0100
+@@ -92,9 +92,8 @@
+ const char *essid,
+ NMAPSecurity *security);
+
+-void nm_device_802_11_wireless_set_scan_interval (struct NMData *data,
+- NMDevice80211Wireless *dev,
+- NMWirelessScanInterval interval);
++void nm_device_802_11_wireless_ui_activated (struct NMData *data,
++ NMWirelessScanInterval interval);
+
+ void nm_device_802_11_wireless_copy_allowed_to_dev_list (NMDevice80211Wireless *self,
+ struct NMAccessPointList *allowed_list);
+diff -urN NetworkManager-0.6.5/src/nm-device-802-3-ethernet.c NetworkManager-SVNr3284/src/nm-device-802-3-ethernet.c
+--- NetworkManager-0.6.5/src/nm-device-802-3-ethernet.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-device-802-3-ethernet.c 2008-02-04 16:00:13.000000000 +0100
+@@ -1,3 +1,5 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
+ /* NetworkManager -- Network link manager
+ *
+ * Dan Williams <dcbw@redhat.com>
+@@ -30,8 +32,10 @@
+ #include "nm-device-private.h"
+ #include "NetworkManagerMain.h"
+ #include "nm-activation-request.h"
++#include "nm-supplicant.h"
+ #include "NetworkManagerUtils.h"
+ #include "NetworkManagerPolicy.h"
++#include "nm-dbus-nmi.h"
+ #include "nm-utils.h"
+ #include "kernel-types.h"
+
+@@ -44,6 +48,9 @@
+ char * carrier_file_path;
+ gulong link_connected_id;
+ gulong link_disconnected_id;
++ NMSupplicant * supplicant;
++ GSource * link_timeout;
++ gboolean failed_8021x;
+ };
+
+ static gboolean supports_mii_carrier_detect (NMDevice8023Ethernet *dev);
+@@ -56,6 +63,8 @@
+ GObject *obj,
+ NMDevice8023Ethernet *self);
+
++static void remove_link_timeout (NMDevice8023Ethernet *self);
++
+
+ static void
+ nm_device_802_3_ethernet_init (NMDevice8023Ethernet * self)
+@@ -99,7 +108,9 @@
+ static gboolean
+ link_activated_helper (NMDevice8023Ethernet *self)
+ {
+- nm_device_set_active_link (NM_DEVICE (self), TRUE);
++ if (!self->priv->failed_8021x)
++ nm_device_set_active_link (NM_DEVICE (self), TRUE);
++
+ return FALSE;
+ }
+
+@@ -108,18 +119,16 @@
+ GObject *obj,
+ NMDevice8023Ethernet *self)
+ {
++ GSource * source;
++
+ /* Make sure signal is for us */
+ if (NM_DEVICE (self) != NM_DEVICE (obj))
+ return;
+
+- if (!nm_device_has_active_link (NM_DEVICE (self)))
+- {
+- GSource * source = g_idle_source_new ();
+-
+- g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL);
+- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
+- g_source_unref (source);
+- }
++ source = g_idle_source_new ();
++ g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL);
++ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
++ g_source_unref (source);
+ }
+
+
+@@ -135,48 +144,50 @@
+ GObject *obj,
+ NMDevice8023Ethernet *self)
+ {
++ GSource * source;
++
+ /* Make sure signal is for us */
+ if (NM_DEVICE (self) != NM_DEVICE (obj))
+ return;
+
+- if (nm_device_has_active_link (NM_DEVICE (self)))
+- {
+- GSource * source = g_idle_source_new ();
+-
+- g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL);
+- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
+- g_source_unref (source);
+- }
++ source = g_idle_source_new ();
++ g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL);
++ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
++ g_source_unref (source);
+ }
+
+-static void
+-real_update_link (NMDevice *dev)
++static gboolean
++poll_link_state (NMDevice8023Ethernet *self)
+ {
+- NMDevice8023Ethernet * self = NM_DEVICE_802_3_ETHERNET (dev);
+- gboolean have_link = FALSE;
++ gboolean have_link = FALSE;
+ guint32 caps;
+- gchar * contents;
+- gsize length;
++ gchar *contents;
++ gsize length;
+
+- if (nm_device_get_removed (NM_DEVICE (self)))
+- goto out;
++ if (nm_device_get_removed (NM_DEVICE (self)) || self->priv->failed_8021x)
++ return FALSE;
+
+ /* Devices that don't support carrier detect are always "on" and
+ * must be manually chosen by the user.
+ */
+ caps = nm_device_get_capabilities (NM_DEVICE (self));
+- if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT)) {
+- have_link = TRUE;
+- goto out;
+- }
++ if (!(caps & NM_DEVICE_CAP_CARRIER_DETECT))
++ return TRUE;
+
+ if (g_file_get_contents (self->priv->carrier_file_path, &contents, &length, NULL)) {
+ have_link = atoi (contents) > 0 ? TRUE : FALSE;
+ g_free (contents);
+ }
+
+-out:
+- nm_device_set_active_link (NM_DEVICE (self), have_link);
++ return have_link;
++}
++
++static void
++real_update_link (NMDevice *dev)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (dev);
++
++ nm_device_set_active_link (NM_DEVICE (self), poll_link_state (self));
+ }
+
+
+@@ -211,6 +222,287 @@
+ return caps;
+ }
+
++
++static void
++real_deactivate_quickly (NMDevice *dev)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (dev);
++ gboolean have_link;
++
++ if (self->priv->supplicant) {
++ g_object_unref (self->priv->supplicant);
++ self->priv->supplicant = NULL;
++ }
++
++ remove_link_timeout (self);
++
++ self->priv->failed_8021x = FALSE;
++ have_link = poll_link_state (self);
++ if (nm_device_has_active_link (dev) != have_link) {
++ GSource * source;
++
++ source = g_idle_source_new ();
++ if (have_link)
++ g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL);
++ else
++ g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL);
++ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
++ g_source_unref (source);
++ }
++}
++
++
++static NMActStageReturn
++real_act_stage1_prepare (NMDevice *dev, NMActRequest *req)
++{
++ NMDevice8023Ethernet * self = NM_DEVICE_802_3_ETHERNET (dev);
++ NMDevice8023EthernetClass * klass;
++ NMDeviceClass * parent_class;
++
++ /* Ensure ethernet devices have a link before going further with activation,
++ * partially works around Fedora #194124.
++ */
++ if (!nm_device_has_active_link (dev))
++ return NM_ACT_STAGE_RETURN_FAILURE;
++
++ /* Chain up to parent */
++ klass = NM_DEVICE_802_3_ETHERNET_GET_CLASS (self);
++ parent_class = NM_DEVICE_CLASS (g_type_class_peek_parent (klass));
++ return parent_class->act_stage1_prepare (dev, req);
++}
++
++static gboolean
++supplicant_send_network_config (NMDevice8023Ethernet *self,
++ NMAPSecurity *security)
++{
++ gboolean success = FALSE;
++ char *response = NULL;
++ int nwid;
++ struct wpa_ctrl *ctrl;
++
++ ctrl = nm_supplicant_get_ctrl (self->priv->supplicant);
++ g_assert (ctrl);
++
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL, "AP_SCAN 0"))
++ goto out;
++
++ /* Standard network setup info */
++ if (!(response = nm_utils_supplicant_request (ctrl, "ADD_NETWORK"))) {
++ nm_warning ("Supplicant error for ADD_NETWORK.\n");
++ goto out;
++ }
++ if (sscanf (response, "%i\n", &nwid) != 1)
++ {
++ nm_warning ("Supplicant error for ADD_NETWORK. Response: '%s'\n", response);
++ g_free (response);
++ goto out;
++ }
++ g_free (response);
++
++ if (!nm_ap_security_write_supplicant_config (security, ctrl, nwid, NM_AP_SECURITY_WRITE_FLAG_WIRED))
++ goto out;
++
++ if (nm_device_activation_should_cancel (NM_DEVICE (self)))
++ goto out;
++
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "ENABLE_NETWORK %i", nwid))
++ goto out;
++
++ success = TRUE;
++out:
++ return success;
++}
++
++static void
++remove_link_timeout (NMDevice8023Ethernet *self)
++{
++ if (self->priv->link_timeout) {
++ g_source_destroy (self->priv->link_timeout);
++ self->priv->link_timeout = NULL;
++ }
++}
++
++static void
++link_timeout_done (gpointer user_data)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (user_data);
++
++ self->priv->link_timeout = NULL;
++}
++
++static gboolean
++link_timeout_cb (gpointer user_data)
++{
++ NMDevice * dev = NM_DEVICE (user_data);
++ NMDevice8023Ethernet * self = NM_DEVICE_802_3_ETHERNET (user_data);
++ NMActRequest * req = nm_device_get_act_request (dev);
++ NMData * data = nm_device_get_app_data (dev);
++
++ /* Disconnect event during initial authentication and credentials
++ * ARE checked - we are likely to have wrong key. Ask the user for
++ * another one.
++ */
++ if (nm_act_request_get_stage (req) == NM_ACT_STAGE_DEVICE_CONFIG) {
++ /* Association/authentication failed, we must have bad encryption key */
++ nm_info ("Activation (%s/wired): disconnected during association,"
++ " asking for new key.", nm_device_get_iface (dev));
++ nm_supplicant_remove_timeout (self->priv->supplicant);
++ nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
++ } else {
++ nm_info ("%s: link timed out.", nm_device_get_iface (dev));
++ self->priv->failed_8021x = TRUE;
++ nm_device_set_active_link (dev, FALSE);
++ }
++
++ return FALSE;
++}
++
++static gboolean
++supplicant_timed_out (gpointer user_data)
++{
++ NMDevice *dev = NM_DEVICE (user_data);
++ NMData *data = nm_device_get_app_data (dev);
++ NMActRequest *req = nm_device_get_act_request (dev);
++
++ nm_info ("Activation (%s/): association took too long, asking for new key.", nm_device_get_iface (dev));
++ nm_dbus_get_user_key_for_network (data->dbus_connection, req, TRUE);
++
++ return FALSE;
++}
++
++static void
++supplicant_state_changed (NMSupplicant *supplicant,
++ gboolean connected,
++ gpointer user_data)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (user_data);
++ NMDevice *dev = NM_DEVICE (self);
++ NMActRequest *req = nm_device_get_act_request (NM_DEVICE (self));
++
++ if (connected) {
++ remove_link_timeout (self);
++ nm_device_set_active_link (dev, TRUE);
++
++ /* If this is the initial association during device activation,
++ * schedule the next activation stage.
++ */
++ if (req && (nm_act_request_get_stage (req) == NM_ACT_STAGE_DEVICE_CONFIG)) {
++ nm_info ("Activation (%s) Stage 2 of 5 (Device Configure) successful.",
++ nm_device_get_iface (dev));
++ nm_supplicant_remove_timeout (self->priv->supplicant);
++ nm_device_activate_schedule_stage3_ip_config_start (req);
++ }
++ } else {
++ if (nm_device_is_activated (dev) || nm_device_is_activating (dev)) {
++ /* Start the link timeout so we allow some time for reauthentication */
++ if (!self->priv->link_timeout) {
++ self->priv->link_timeout = g_timeout_source_new (8000);
++ g_source_set_callback (self->priv->link_timeout,
++ link_timeout_cb,
++ self,
++ link_timeout_done);
++ g_source_attach (self->priv->link_timeout, nm_device_get_main_context (dev));
++ g_source_unref (self->priv->link_timeout);
++ }
++ } else
++ nm_device_set_active_link (dev, FALSE);
++ }
++}
++
++static void
++supplicant_down (NMSupplicant *supplicant,
++ gpointer user_data)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (user_data);
++
++ remove_link_timeout (self);
++}
++
++static NMActStageReturn
++real_act_stage2_config (NMDevice *dev, NMActRequest *req)
++{
++ NMDevice8023Ethernet *self = NM_DEVICE_802_3_ETHERNET (dev);
++ NMWiredNetwork *wired_net;
++ NMAPSecurity *security;
++ const char *iface;
++ GMainContext *ctx;
++
++ if (self->priv->supplicant)
++ g_object_unref (self->priv->supplicant);
++
++ wired_net = nm_act_request_get_wired_network (req);
++ if (!wired_net)
++ return NM_ACT_STAGE_RETURN_SUCCESS;
++
++ iface = nm_device_get_iface (dev);
++ security = nm_wired_network_get_security (wired_net);
++
++ if (!nm_ap_security_get_key (security)) {
++ NMData *data = nm_act_request_get_data (req);
++
++ nm_info ("Activation (%s): using 802.1X authentication, but NO valid key exists. New key needed.", iface);
++ nm_dbus_get_user_key_for_network (data->dbus_connection, req, FALSE);
++
++ return NM_ACT_STAGE_RETURN_POSTPONE;
++ }
++
++ nm_info ("Activation (%s): using 802.1X authentication and a key exists. No new key needed.", iface);
++
++ self->priv->supplicant = nm_supplicant_new ();
++ g_signal_connect (self->priv->supplicant, "state-changed",
++ G_CALLBACK (supplicant_state_changed),
++ self);
++
++ g_signal_connect (self->priv->supplicant, "down",
++ G_CALLBACK (supplicant_down),
++ self);
++
++ ctx = nm_device_get_main_context (dev);
++
++ if (!nm_supplicant_exec (self->priv->supplicant, ctx)) {
++ nm_warning ("Activation (%s): couldn't start the supplicant.", iface);
++ goto out;
++ }
++ if (!nm_supplicant_interface_init (self->priv->supplicant, iface, "wired")) {
++ nm_warning ("Activation (%s): couldn't connect to the supplicant.", iface);
++ goto out;
++ }
++ if (!nm_supplicant_monitor_start (self->priv->supplicant, ctx, 10,
++ supplicant_timed_out, self)) {
++ nm_warning ("Activation (%s): couldn't monitor the supplicant.", iface);
++ goto out;
++ }
++ if (!supplicant_send_network_config (self, security)) {
++ nm_warning ("Activation (%s): couldn't send security information"
++ " to the supplicant.", iface);
++ goto out;
++ }
++
++ /* We'll get stage3 started when the supplicant connects */
++ return NM_ACT_STAGE_RETURN_POSTPONE;
++
++out:
++ g_object_unref (self->priv->supplicant);
++ self->priv->supplicant = NULL;
++
++ return NM_ACT_STAGE_RETURN_FAILURE;
++}
++
++static void
++real_activation_success_handler (NMDevice *dev, NMActRequest *req)
++{
++ NMWiredNetwork *wired_net;
++
++ wired_net = nm_act_request_get_wired_network (req);
++ if (wired_net) {
++ NMData *app_data;
++
++ app_data = nm_act_request_get_data (req);
++ nm_dbus_update_wired_network_info (app_data->dbus_connection, wired_net);
++ }
++}
++
+ static void
+ nm_device_802_3_ethernet_dispose (GObject *object)
+ {
+@@ -275,6 +567,10 @@
+ parent_class->get_generic_capabilities = real_get_generic_capabilities;
+ parent_class->init = real_init;
+ parent_class->update_link = real_update_link;
++ parent_class->act_stage1_prepare = real_act_stage1_prepare;
++ parent_class->act_stage2_config = real_act_stage2_config;
++ parent_class->deactivate_quickly = real_deactivate_quickly;
++ parent_class->activation_success_handler = real_activation_success_handler;
+
+ g_type_class_add_private (object_class, sizeof (NMDevice8023EthernetPrivate));
+ }
+@@ -386,7 +682,9 @@
+ /**************************************/
+ /* MII capability detection */
+ /**************************************/
++#define _LINUX_IF_H
+ #include <linux/mii.h>
++#undef _LINUX_IF_H
+
+ static int
+ mdio_read (NMDevice8023Ethernet *self, NMSock *sk, struct ifreq *ifr, int location)
+diff -urN NetworkManager-0.6.5/src/nm-device.c NetworkManager-SVNr3284/src/nm-device.c
+--- NetworkManager-0.6.5/src/nm-device.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-device.c 2008-02-04 16:00:13.000000000 +0100
+@@ -620,7 +620,7 @@
+ do_switch = TRUE;
+
+ /* FIXME: Why is this activation request created here and never used? */
+- /* if (do_switch && (act_req = nm_act_request_new (app_data, self, NULL, TRUE))) */
++ /* if (do_switch && (act_req = nm_act_request_new (app_data, self, TRUE))) */
+ if (do_switch)
+ {
+ nm_info ("Will activate wired connection '%s' because it now has a link.", nm_device_get_iface (self));
+@@ -856,6 +856,12 @@
+ data = nm_act_request_get_data (req);
+ g_assert (data);
+
++ /* Sometimes the device gets downed by wpa_supplicant; in any case, make
++ * sure it's up before anything tries to use it.
++ */
++ if (!nm_device_is_up (self))
++ nm_device_bring_up (self);
++
+ /* DHCP devices try DHCP, non-DHCP default to SUCCESS */
+ if (nm_device_get_use_dhcp (self))
+ {
+diff -urN NetworkManager-0.6.5/src/nm-netlink-monitor.c NetworkManager-SVNr3284/src/nm-netlink-monitor.c
+--- NetworkManager-0.6.5/src/nm-netlink-monitor.c 2007-04-18 20:13:06.000000000 +0200
++++ NetworkManager-SVNr3284/src/nm-netlink-monitor.c 2008-02-04 16:00:13.000000000 +0100
+@@ -174,7 +174,7 @@
+ }
+
+ monitor_address.nl_family = AF_NETLINK;
+- monitor_address.nl_pid = getpid ();
++ monitor_address.nl_pid = UINT_MAX;
+ monitor_address.nl_groups = RTMGRP_LINK;
+
+ if (bind (fd,
+@@ -365,7 +365,7 @@
+ packet.header.nlmsg_len = NLMSG_LENGTH (sizeof (struct rtgenmsg));
+ packet.header.nlmsg_flags = NLM_F_ROOT | NLM_F_MATCH | NLM_F_REQUEST;
+ packet.header.nlmsg_type = RTM_GETLINK;
+- packet.header.nlmsg_pid = getpid ();
++ packet.header.nlmsg_pid = UINT_MAX;
+ /* Might be good to generate a unique sequence number and track
+ the response */
+ packet.header.nlmsg_seq = sequence_number << 16;
+diff -urN NetworkManager-0.6.5/src/nm-supplicant.c NetworkManager-SVNr3284/src/nm-supplicant.c
+--- NetworkManager-0.6.5/src/nm-supplicant.c 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/src/nm-supplicant.c 2008-02-04 16:00:13.000000000 +0100
+@@ -0,0 +1,420 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
++#include <signal.h>
++#include <sys/wait.h>
++#include <unistd.h>
++
++#include "nm-supplicant.h"
++#include "NetworkManagerUtils.h"
++#include "nm-utils.h"
++#include "wpa_ctrl.h"
++
++
++/****************************************************************************/
++/* WPA Supplicant control stuff
++ *
++ * Originally from:
++ *
++ * wpa_supplicant wrapper
++ *
++ * Copyright (C) 2005 Kay Sievers <kay.sievers@vrfy.org>
++ *
++ * 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 version 2 of the License.
++ */
++
++#define WPA_SUPPLICANT_GLOBAL_SOCKET LOCALSTATEDIR"/run/wpa_supplicant-global"
++#define WPA_SUPPLICANT_CONTROL_SOCKET LOCALSTATEDIR"/run/wpa_supplicant"
++#define WPA_SUPPLICANT_NUM_RETRIES 20
++#define WPA_SUPPLICANT_RETRY_TIME_US 100*1000
++
++G_DEFINE_TYPE (NMSupplicant, nm_supplicant, G_TYPE_OBJECT)
++
++#define NM_SUPPLICANT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_SUPPLICANT, NMSupplicantPrivate))
++
++typedef struct {
++ GPid pid;
++ GSource *watch;
++ GSource *status;
++ GSource *timeout;
++ struct wpa_ctrl *ctrl;
++
++ char *socket_path;
++ char *message;
++} NMSupplicantPrivate;
++
++enum {
++ STATE_CHANGED,
++ DOWN,
++
++ LAST_SIGNAL
++};
++
++static guint signals[LAST_SIGNAL] = { 0 };
++
++NMSupplicant *
++nm_supplicant_new (void)
++{
++ return (NMSupplicant *) g_object_new (NM_TYPE_SUPPLICANT, NULL);
++}
++
++void
++nm_supplicant_remove_timeout (NMSupplicant *self)
++{
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (self);
++
++ /* Remove any pending timeouts on the request */
++ if (priv->timeout != NULL) {
++ g_source_destroy (priv->timeout);
++ priv->timeout = NULL;
++ }
++}
++
++void
++nm_supplicant_down (NMSupplicant *self)
++{
++ NMSupplicantPrivate *priv;
++
++ g_return_if_fail (NM_IS_SUPPLICANT (self));
++
++ priv = NM_SUPPLICANT_GET_PRIVATE (self);
++
++ if (priv->pid > 0) {
++ kill (priv->pid, SIGTERM);
++ priv->pid = -1;
++ }
++
++ if (priv->watch) {
++ g_source_destroy (priv->watch);
++ priv->watch = NULL;
++ }
++
++ if (priv->status) {
++ g_source_destroy (priv->status);
++ priv->status = NULL;
++ }
++
++ if (priv->ctrl) {
++ wpa_ctrl_close (priv->ctrl);
++ priv->ctrl = NULL;
++ }
++
++ nm_supplicant_remove_timeout (self);
++
++ /* HACK: should be fixed in wpa_supplicant. Will likely
++ * require accomodations for selinux.
++ */
++ unlink (WPA_SUPPLICANT_GLOBAL_SOCKET);
++ unlink (priv->socket_path);
++
++ g_signal_emit (self, signals[DOWN], 0);
++}
++
++static void
++supplicant_watch_done (gpointer user_data)
++{
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (user_data);
++
++ priv->watch = NULL;
++}
++
++static void
++supplicant_watch_cb (GPid pid,
++ gint status,
++ gpointer user_data)
++{
++ NMSupplicant *self = NM_SUPPLICANT (user_data);
++
++ if (WIFEXITED (status))
++ nm_warning ("wpa_supplicant exited with error code %d", WEXITSTATUS (status));
++ else if (WIFSTOPPED (status))
++ nm_warning ("wpa_supplicant stopped unexpectedly with signal %d", WSTOPSIG (status));
++ else if (WIFSIGNALED (status))
++ nm_warning ("wpa_supplicant died with signal %d", WTERMSIG (status));
++ else
++ nm_warning ("wpa_supplicant died from an unknown cause");
++
++ nm_supplicant_down (self);
++}
++
++/*
++ * supplicant_child_setup
++ *
++ * Set the process group ID of the newly forked process
++ *
++ */
++static void
++supplicant_child_setup (gpointer user_data G_GNUC_UNUSED)
++{
++ /* We are in the child process at this point */
++ pid_t pid = getpid ();
++ setpgid (pid, pid);
++}
++
++gboolean
++nm_supplicant_exec (NMSupplicant *self,
++ GMainContext *ctx)
++{
++ gboolean success;
++ char *argv[4];
++ GPid pid;
++ GError *err = NULL;
++
++ g_return_val_if_fail (NM_IS_SUPPLICANT (self), FALSE);
++
++ argv[0] = WPA_SUPPLICANT_BIN;
++ argv[1] = "-g";
++ argv[2] = WPA_SUPPLICANT_GLOBAL_SOCKET;
++ argv[3] = NULL;
++
++ success = g_spawn_async ("/", argv, NULL, 0, &supplicant_child_setup, NULL, &pid, &err);
++ if (!success) {
++ if (err) {
++ nm_warning ("Couldn't start wpa_supplicant. Error: (%d) %s", err->code, err->message);
++ g_error_free (err);
++ } else
++ nm_warning ("Couldn't start wpa_supplicant due to an unknown error.");
++ } else {
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (self);
++
++ /* Monitor the child process so we know when it stops */
++ priv->pid = pid;
++ if (priv->watch)
++ g_source_destroy (priv->watch);
++
++ priv->watch = g_child_watch_source_new (pid);
++ g_source_set_callback (priv->watch,
++ (GSourceFunc) supplicant_watch_cb,
++ self,
++ supplicant_watch_done);
++ g_source_attach (priv->watch, ctx);
++ g_source_unref (priv->watch);
++ }
++
++ return success;
++}
++
++gboolean
++nm_supplicant_interface_init (NMSupplicant *self,
++ const char *iface,
++ const char *supplicant_driver)
++{
++ NMSupplicantPrivate *priv;
++ struct wpa_ctrl *ctrl = NULL;
++ int tries;
++
++ g_return_val_if_fail (NM_IS_SUPPLICANT (self), FALSE);
++ g_return_val_if_fail (iface != NULL, FALSE);
++
++ /* Try to open wpa_supplicant's global control socket */
++ for (tries = 0; tries < WPA_SUPPLICANT_NUM_RETRIES && !ctrl; tries++) {
++ ctrl = wpa_ctrl_open (WPA_SUPPLICANT_GLOBAL_SOCKET, NM_RUN_DIR);
++ g_usleep (WPA_SUPPLICANT_RETRY_TIME_US);
++ }
++
++ if (!ctrl) {
++ nm_info ("Error opening supplicant global control interface.");
++ return FALSE;
++ }
++
++ /* wpa_cli -g/var/run/wpa_supplicant-global interface_add eth1 "" wext /var/run/wpa_supplicant */
++ if (!nm_utils_supplicant_request_with_check (ctrl, "OK", __func__, NULL,
++ "INTERFACE_ADD %s\t\t%s\t" WPA_SUPPLICANT_CONTROL_SOCKET "\t",
++ iface, supplicant_driver)) {
++ wpa_ctrl_close (ctrl);
++ return FALSE;
++ }
++
++ wpa_ctrl_close (ctrl);
++
++ priv = NM_SUPPLICANT_GET_PRIVATE (self);
++
++ /* Get a control socket to wpa_supplicant for this interface.
++ * Try a couple times to work around naive socket naming
++ * in wpa_ctrl that sometimes collides with stale ones.
++ */
++ priv->socket_path = g_strdup_printf (WPA_SUPPLICANT_CONTROL_SOCKET "/%s", iface);
++
++ while (!priv->ctrl && (tries++ < 10))
++ priv->ctrl = wpa_ctrl_open (priv->socket_path, NM_RUN_DIR);
++
++ if (!priv->ctrl)
++ nm_info ("Error opening control interface to supplicant.");
++
++ return priv->ctrl != NULL;
++}
++
++static void
++supplicant_status_done (gpointer user_data)
++{
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (user_data);
++
++ priv->status = NULL;
++}
++
++static void
++supplicant_state_changed (NMSupplicant *self, gboolean up)
++{
++ nm_info ("Supplicant state changed: %d", up);
++ g_signal_emit (self, signals[STATE_CHANGED], 0, up);
++}
++
++#define MESSAGE_LEN 2048
++
++static gboolean
++supplicant_status_cb (GIOChannel *source,
++ GIOCondition condition,
++ gpointer user_data)
++{
++ NMSupplicant *self = NM_SUPPLICANT (user_data);
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (self);
++ size_t len = MESSAGE_LEN;
++
++ wpa_ctrl_recv (priv->ctrl, priv->message, &len);
++ priv->message[len] = '\0';
++
++ if (strstr (priv->message, WPA_EVENT_CONNECTED) != NULL)
++ supplicant_state_changed (self, TRUE);
++ else if (strstr (priv->message, WPA_EVENT_DISCONNECTED) != NULL)
++ supplicant_state_changed (self, FALSE);
++
++ return TRUE;
++}
++
++typedef struct {
++ NMSupplicant *supplicant;
++ GSourceFunc callback;
++ gpointer user_data;
++} TimeoutInfo;
++
++static void
++supplicant_timeout_done (gpointer user_data)
++{
++ TimeoutInfo *info = (TimeoutInfo *) user_data;
++
++ NM_SUPPLICANT_GET_PRIVATE (info->supplicant)->timeout = NULL;
++
++ g_free (info);
++}
++
++static void
++supplicant_timeout_cb (gpointer user_data)
++{
++ TimeoutInfo *info = (TimeoutInfo *) user_data;
++
++ info->callback (info->user_data);
++}
++
++gboolean
++nm_supplicant_monitor_start (NMSupplicant *self,
++ GMainContext *context,
++ guint32 timeout,
++ GSourceFunc timeout_cb,
++ gpointer user_data)
++{
++ NMSupplicantPrivate *priv;
++ int fd;
++ GIOChannel *channel;
++
++ g_return_val_if_fail (NM_IS_SUPPLICANT (self), FALSE);
++
++ priv = NM_SUPPLICANT_GET_PRIVATE (self);
++
++ /* register network event monitor */
++ if (wpa_ctrl_attach (priv->ctrl) != 0)
++ return FALSE;
++
++ if ((fd = wpa_ctrl_get_fd (priv->ctrl)) < 0)
++ return FALSE;
++
++ channel = g_io_channel_unix_new (fd);
++ priv->status = g_io_create_watch (channel, G_IO_IN);
++ g_io_channel_unref (channel);
++ g_source_set_callback (priv->status,
++ (GSourceFunc) supplicant_status_cb,
++ self,
++ supplicant_status_done);
++ g_source_attach (priv->status, context);
++ g_source_unref (priv->status);
++
++ if (timeout_cb) {
++ TimeoutInfo *info;
++
++ info = g_new (TimeoutInfo, 1);
++ info->supplicant = self;
++ info->callback = timeout_cb;
++ info->user_data = user_data;
++
++ priv->timeout = g_timeout_source_new (timeout * 1000);
++ g_source_set_callback (priv->timeout,
++ (GSourceFunc) supplicant_timeout_cb,
++ info,
++ supplicant_timeout_done);
++ g_source_attach (priv->timeout, context);
++ g_source_unref (priv->timeout);
++ }
++
++ return TRUE;
++}
++
++struct wpa_ctrl *
++nm_supplicant_get_ctrl (NMSupplicant *self)
++{
++ g_return_val_if_fail (NM_IS_SUPPLICANT (self), NULL);
++
++ return NM_SUPPLICANT_GET_PRIVATE (self)->ctrl;
++}
++
++/*****************************************************************************/
++
++static void
++nm_supplicant_init (NMSupplicant *supplicant)
++{
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (supplicant);
++
++ priv->message = g_malloc (MESSAGE_LEN);
++}
++
++static void
++finalize (GObject *object)
++{
++ NMSupplicantPrivate *priv = NM_SUPPLICANT_GET_PRIVATE (object);
++
++ nm_supplicant_down (NM_SUPPLICANT (object));
++
++ g_free (priv->socket_path);
++ g_free (priv->message);
++
++ G_OBJECT_CLASS (nm_supplicant_parent_class)->finalize (object);
++}
++
++static void
++nm_supplicant_class_init (NMSupplicantClass *supplicant_class)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (supplicant_class);
++
++ g_type_class_add_private (supplicant_class, sizeof (NMSupplicantPrivate));
++
++ object_class->finalize = finalize;
++
++ /* signals */
++ signals[STATE_CHANGED] =
++ g_signal_new ("state-changed",
++ G_OBJECT_CLASS_TYPE (object_class),
++ G_SIGNAL_RUN_FIRST,
++ G_STRUCT_OFFSET (NMSupplicantClass, state_changed),
++ NULL, NULL,
++ g_cclosure_marshal_VOID__BOOLEAN,
++ G_TYPE_NONE, 1,
++ G_TYPE_BOOLEAN);
++
++ signals[DOWN] =
++ g_signal_new ("down",
++ G_OBJECT_CLASS_TYPE (object_class),
++ G_SIGNAL_RUN_FIRST,
++ G_STRUCT_OFFSET (NMSupplicantClass, down),
++ NULL, NULL,
++ g_cclosure_marshal_VOID__VOID,
++ G_TYPE_NONE, 0);
++}
+diff -urN NetworkManager-0.6.5/src/nm-supplicant.h NetworkManager-SVNr3284/src/nm-supplicant.h
+--- NetworkManager-0.6.5/src/nm-supplicant.h 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/src/nm-supplicant.h 2008-02-04 16:00:13.000000000 +0100
+@@ -0,0 +1,53 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
++#ifndef NM_SUPPLICANT_H
++#define NM_SUPPLICANT_H 1
++
++#include <glib/gtypes.h>
++#include <glib-object.h>
++
++#define NM_TYPE_SUPPLICANT (nm_supplicant_get_type ())
++#define NM_SUPPLICANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SUPPLICANT, NMSupplicant))
++#define NM_SUPPLICANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SUPPLICANT, NMSupplicantClass))
++#define NM_IS_SUPPLICANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SUPPLICANT))
++#define NM_IS_SUPPLICANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_SUPPLICANT))
++#define NM_SUPPLICANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SUPPLICANT, NMSupplicantClass))
++
++typedef struct {
++ GObject parent;
++} NMSupplicant;
++
++typedef struct {
++ GObjectClass parent;
++
++ /* Signals */
++ void (*state_changed) (NMSupplicant *supplicant,
++ gboolean connected);
++
++ void (*down) (NMSupplicant *supplicant);
++} NMSupplicantClass;
++
++GType nm_supplicant_get_type (void);
++
++NMSupplicant *nm_supplicant_new (void);
++gboolean nm_supplicant_exec (NMSupplicant *self,
++ GMainContext *ctx);
++
++gboolean nm_supplicant_interface_init (NMSupplicant *self,
++ const char *iface,
++ const char *supplicant_driver);
++
++gboolean nm_supplicant_monitor_start (NMSupplicant *self,
++ GMainContext *context,
++ guint32 timeout,
++ GSourceFunc timeout_cb,
++ gpointer user_data);
++
++void nm_supplicant_remove_timeout (NMSupplicant *self);
++
++void nm_supplicant_down (NMSupplicant *self);
++
++struct wpa_ctrl *nm_supplicant_get_ctrl (NMSupplicant *self);
++
++
++#endif /* NM_SUPPLICANT_H */
+diff -urN NetworkManager-0.6.5/src/nm-wired-network.c NetworkManager-SVNr3284/src/nm-wired-network.c
+--- NetworkManager-0.6.5/src/nm-wired-network.c 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/src/nm-wired-network.c 2008-02-04 16:00:13.000000000 +0100
+@@ -0,0 +1,89 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
++#include "nm-wired-network.h"
++
++G_DEFINE_TYPE (NMWiredNetwork, nm_wired_network, G_TYPE_OBJECT)
++
++#define NM_WIRED_NETWORK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), NM_TYPE_WIRED_NETWORK, NMWiredNetworkPrivate))
++
++typedef struct {
++ char *network_id;
++ NMAPSecurity *security;
++} NMWiredNetworkPrivate;
++
++NMWiredNetwork *
++nm_wired_network_new (const char *network_id, NMAPSecurity *security)
++{
++ NMWiredNetwork *wired_net;
++ NMWiredNetworkPrivate *priv;
++
++ g_return_val_if_fail (network_id != NULL, NULL);
++ g_return_val_if_fail (security != NULL, NULL);
++
++ wired_net = (NMWiredNetwork *) g_object_new (NM_TYPE_WIRED_NETWORK, NULL);
++ if (!wired_net)
++ return NULL;
++
++ priv = NM_WIRED_NETWORK_GET_PRIVATE (wired_net);
++ priv->network_id = g_strdup (network_id);
++ priv->security = g_object_ref (security);
++
++ return wired_net;
++}
++
++const char *
++nm_wired_network_get_network_id (NMWiredNetwork *net)
++{
++ g_return_val_if_fail (NM_IS_WIRED_NETWORK (net), NULL);
++
++ return NM_WIRED_NETWORK_GET_PRIVATE (net)->network_id;
++}
++
++NMAPSecurity *
++nm_wired_network_get_security (NMWiredNetwork *net)
++{
++ g_return_val_if_fail (NM_IS_WIRED_NETWORK (net), NULL);
++
++ return NM_WIRED_NETWORK_GET_PRIVATE (net)->security;
++}
++
++void
++nm_wired_network_set_security (NMWiredNetwork *net, NMAPSecurity *security)
++{
++ NMWiredNetworkPrivate *priv;
++
++ g_return_if_fail (NM_IS_WIRED_NETWORK (net));
++
++ priv = NM_WIRED_NETWORK_GET_PRIVATE (net);
++ if (priv->security)
++ g_object_unref (priv->security);
++
++ priv->security = security ? g_object_ref (security) : NULL;
++}
++
++
++static void
++nm_wired_network_init (NMWiredNetwork *wired_net)
++{
++}
++
++static void
++finalize (GObject *object)
++{
++ NMWiredNetworkPrivate *priv = NM_WIRED_NETWORK_GET_PRIVATE (object);
++
++ g_free (priv->network_id);
++ g_object_unref (priv->security);
++
++ G_OBJECT_CLASS (nm_wired_network_parent_class)->finalize (object);
++}
++
++static void
++nm_wired_network_class_init (NMWiredNetworkClass *wired_class)
++{
++ GObjectClass *object_class = G_OBJECT_CLASS (wired_class);
++
++ g_type_class_add_private (wired_class, sizeof (NMWiredNetworkPrivate));
++
++ object_class->finalize = finalize;
++}
+diff -urN NetworkManager-0.6.5/src/nm-wired-network.h NetworkManager-SVNr3284/src/nm-wired-network.h
+--- NetworkManager-0.6.5/src/nm-wired-network.h 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/src/nm-wired-network.h 2008-02-04 16:00:13.000000000 +0100
+@@ -0,0 +1,35 @@
++/* -*- Mode: C; tab-width: 5; indent-tabs-mode: t; c-basic-offset: 5 -*- */
++
++#ifndef NM_WIRED_NETWORK_H
++#define NM_WIRED_NETWORK_H 1
++
++#include <glib/gtypes.h>
++#include <glib-object.h>
++#include "nm-ap-security.h"
++
++#define NM_TYPE_WIRED_NETWORK (nm_wired_network_get_type ())
++#define NM_WIRED_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_WIRED_NETWORK, NMWiredNetwork))
++#define NM_WIRED_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_WIRED_NETWORK, NMWiredNetworkClass))
++#define NM_IS_WIRED_NETWORK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_WIRED_NETWORK))
++#define NM_IS_WIRED_NETWORK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), NM_TYPE_WIRED_NETWORK))
++#define NM_WIRED_NETWORK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_WIRED_NETWORK, NMWiredNetworkClass))
++
++typedef struct {
++ GObject parent;
++} NMWiredNetwork;
++
++typedef struct {
++ GObjectClass parent;
++} NMWiredNetworkClass;
++
++GType nm_wired_network_get_type (void);
++
++NMWiredNetwork *nm_wired_network_new (const char *network_id,
++ NMAPSecurity *security);
++
++const char *nm_wired_network_get_network_id (NMWiredNetwork *net);
++NMAPSecurity *nm_wired_network_get_security (NMWiredNetwork *net);
++void nm_wired_network_set_security (NMWiredNetwork *net,
++ NMAPSecurity *security);
++
++#endif /* NM_WIRED_NETWORK_H */
+diff -urN NetworkManager-0.6.5/src/vpn-manager/nm-dbus-vpn.c NetworkManager-SVNr3284/src/vpn-manager/nm-dbus-vpn.c
+--- NetworkManager-0.6.5/src/vpn-manager/nm-dbus-vpn.c 2007-04-18 20:13:05.000000000 +0200
++++ NetworkManager-SVNr3284/src/vpn-manager/nm-dbus-vpn.c 2008-02-04 16:00:09.000000000 +0100
+@@ -410,8 +410,6 @@
+ NMData * data = (NMData *) user_data;
+ DBusMessage * reply;
+ DBusMessageIter iter, array_iter;
+- GSList * remove_list = NULL;
+- GSList * elt;
+
+ g_return_if_fail (pcall);
+ g_return_if_fail (data != NULL);
+@@ -427,22 +425,15 @@
+
+ nm_info ("Updating VPN Connections...");
+
+- remove_list = nm_vpn_manager_vpn_connection_list_copy (data->vpn_manager);
+-
+ dbus_message_iter_init (reply, &iter);
+ dbus_message_iter_recurse (&iter, &array_iter);
+ while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRING)
+ {
+ DBusMessage * message;
+ const char * con_name;
+- NMVPNConnection * vpn;
+
+ dbus_message_iter_get_basic (&array_iter, &con_name);
+
+- /* If the connection already exists, remove it from the remove list */
+- if ((vpn = nm_vpn_manager_find_connection_by_name (data->vpn_manager, con_name)))
+- remove_list = g_slist_remove (remove_list, vpn);
+-
+ if ((message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "getVPNConnectionProperties")))
+ {
+ DBusPendingCall * vpn_pcall = NULL;
+@@ -463,15 +454,6 @@
+ }
+ dbus_message_unref (reply);
+
+- /* VPN connections left in the remove list aren't known by NMI, therefore we delete them */
+- for (elt = remove_list; elt; elt = g_slist_next (elt))
+- {
+- nm_vpn_manager_remove_connection (data->vpn_manager, elt->data);
+- nm_vpn_connection_unref (elt->data);
+- }
+-
+- g_slist_free (remove_list);
+-
+ out:
+ dbus_pending_call_unref (pcall);
+ }
+@@ -527,6 +509,8 @@
+ g_return_val_if_fail (data->dbus_connection != NULL, FALSE);
+ g_return_val_if_fail (data->vpn_manager != NULL, FALSE);
-+ /* Some cards are dumb. Wait a second */
-+ sleep (1);
++ nm_vpn_manager_clear_connections (data->vpn_manager);
+
- iface = nm_device_get_iface (dev);
- if (!supplicant_exec (self))
+ if (!(message = dbus_message_new_method_call (NMI_DBUS_SERVICE, NMI_DBUS_PATH, NMI_DBUS_INTERFACE, "getVPNConnections")))
{
-@@ -3446,10 +3452,9 @@
- char *genie, *gpos, *gend, *custom;
- NMAccessPoint *ap = NULL;
- size_t clen;
-- int maxrate;
-+ int maxrate = 0;
- struct iw_event iwe_buf, *iwe = &iwe_buf;
- struct stream_descr stream;
-- struct wireless_scan * wscan = NULL;
- int ret;
+ nm_warning ("nm_dbus_vpn_connections_update (): Couldn't allocate the dbus message");
+diff -urN NetworkManager-0.6.5/src/vpn-manager/nm-vpn-manager.c NetworkManager-SVNr3284/src/vpn-manager/nm-vpn-manager.c
+--- NetworkManager-0.6.5/src/vpn-manager/nm-vpn-manager.c 2007-04-18 20:13:05.000000000 +0200
++++ NetworkManager-SVNr3284/src/vpn-manager/nm-vpn-manager.c 2008-02-04 16:00:09.000000000 +0100
+@@ -130,28 +130,6 @@
- g_return_val_if_fail (dev != NULL, FALSE);
-diff -urN NetworkManager/src/nm-device-802-3-ethernet.c NetworkManager-SVN/src/nm-device-802-3-ethernet.c
---- NetworkManager/src/nm-device-802-3-ethernet.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/nm-device-802-3-ethernet.c 2007-09-08 00:06:44.000000000 +0200
-@@ -108,18 +108,16 @@
- GObject *obj,
- NMDevice8023Ethernet *self)
- {
-+ GSource * source;
-+
- /* Make sure signal is for us */
- if (NM_DEVICE (self) != NM_DEVICE (obj))
- return;
-- if (!nm_device_has_active_link (NM_DEVICE (self)))
-- {
-- GSource * source = g_idle_source_new ();
+ /*
+- * nm_vpn_manager_vpn_connection_list_copy
+- *
+- * Make a shallow copy of the VPN connection list, should
+- * only be used by nm-dbus-vpn.c
+- *
+- */
+-GSList *nm_vpn_manager_vpn_connection_list_copy (NMVPNManager *manager)
+-{
+- GSList * list;
+- GSList * elt;
-
-- g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL);
-- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
-- g_source_unref (source);
-- }
-+ source = g_idle_source_new ();
-+ g_source_set_callback (source, (GSourceFunc) link_activated_helper, self, NULL);
-+ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
-+ g_source_unref (source);
- }
+- g_return_val_if_fail (manager != NULL, NULL);
+-
+- list = g_slist_copy (manager->connections);
+- for (elt = list; elt; elt = g_slist_next (elt))
+- nm_vpn_connection_ref (elt->data);
+-
+- return list;
+-}
+-
+-
+-/*
+ * nm_vpn_manager_add_connection
+ *
+ * Add a new VPN connection if none already exits, otherwise update the existing one.
+@@ -227,6 +205,29 @@
-@@ -135,18 +133,16 @@
- GObject *obj,
- NMDevice8023Ethernet *self)
- {
-+ GSource * source;
+ /*
++ * nm_vpn_manager_clear_connections
++ *
++ * Remove all VPN connections.
++ *
++ */
++void
++nm_vpn_manager_clear_connections (NMVPNManager *manager)
++{
++ GSList *connections;
++ GSList *iter;
+
- /* Make sure signal is for us */
- if (NM_DEVICE (self) != NM_DEVICE (obj))
- return;
++ g_return_if_fail (manager != NULL);
++
++ connections = g_slist_copy (manager->connections);
++
++ for (iter = connections; iter; iter = iter->next)
++ nm_vpn_manager_remove_connection (manager, (NMVPNConnection *) iter->data);
++
++ g_slist_free (connections);
++}
++
++
++/*
+ * nm_vpn_manager_get_connection_names
+ *
+ * Return an array of strings of all the VPN Connection names
+diff -urN NetworkManager-0.6.5/src/vpn-manager/nm-vpn-manager.h NetworkManager-SVNr3284/src/vpn-manager/nm-vpn-manager.h
+--- NetworkManager-0.6.5/src/vpn-manager/nm-vpn-manager.h 2007-04-18 20:13:05.000000000 +0200
++++ NetworkManager-SVNr3284/src/vpn-manager/nm-vpn-manager.h 2008-02-04 16:00:09.000000000 +0100
+@@ -29,13 +29,12 @@
+ NMVPNManager * nm_vpn_manager_new (NMData *app_data);
+ NMVPNConnection * nm_vpn_manager_add_connection (NMVPNManager *manager, const char *name, const char *service_name, const char *user_name);
+ void nm_vpn_manager_remove_connection (NMVPNManager *manager, NMVPNConnection *vpn);
++void nm_vpn_manager_clear_connections (NMVPNManager *manager);
+ char ** nm_vpn_manager_get_connection_names (NMVPNManager *manager);
+ void nm_vpn_manager_dispose (NMVPNManager *manager);
-- if (nm_device_has_active_link (NM_DEVICE (self)))
-- {
-- GSource * source = g_idle_source_new ();
+ NMVPNActRequest * nm_vpn_manager_get_vpn_act_request (NMVPNManager *manager);
+
+-GSList * nm_vpn_manager_vpn_connection_list_copy (NMVPNManager *manager);
-
-- g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL);
-- g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
-- g_source_unref (source);
-- }
-+ source = g_idle_source_new ();
-+ g_source_set_callback (source, (GSourceFunc) link_deactivated_helper, self, NULL);
-+ g_source_attach (source, nm_device_get_main_context (NM_DEVICE (self)));
-+ g_source_unref (source);
- }
+ void nm_vpn_manager_activate_vpn_connection (NMVPNManager *manager, NMVPNConnection *vpn, char **password_items,
+ int password_count, char **data_items, int data_count,
+ char **user_routes, int user_routes_count );
+diff -urN NetworkManager-0.6.5/test/libnm_glib_test.c NetworkManager-SVNr3284/test/libnm_glib_test.c
+--- NetworkManager-0.6.5/test/libnm_glib_test.c 2007-04-18 20:13:03.000000000 +0200
++++ NetworkManager-SVNr3284/test/libnm_glib_test.c 2008-02-04 15:59:52.000000000 +0100
+@@ -23,6 +23,8 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <signal.h>
++
+ #include "libnm_glib.h"
- static void
-@@ -211,6 +207,26 @@
- return caps;
+
+@@ -56,10 +58,33 @@
+ }
}
++static GMainLoop *loop = NULL;
+
-+static NMActStageReturn
-+real_act_stage1_prepare (NMDevice *dev, NMActRequest *req)
++static void
++signal_handler (int signo)
+{
-+ NMDevice8023Ethernet * self = NM_DEVICE_802_3_ETHERNET (dev);
-+ NMDevice8023EthernetClass * klass;
-+ NMDeviceClass * parent_class;
++ if (signo == SIGINT || signo == SIGTERM) {
++ g_message ("Caught signal %d, shutting down...", signo);
++ g_main_loop_quit (loop);
++ }
++}
+
-+ /* Ensure ethernet devices have a link before going further with activation,
-+ * partially works around Fedora #194124.
-+ */
-+ if (!nm_device_has_active_link (dev))
-+ return NM_ACT_STAGE_RETURN_FAILURE;
++static void
++setup_signals (void)
++{
++ struct sigaction action;
++ sigset_t mask;
+
-+ /* Chain up to parent */
-+ klass = NM_DEVICE_802_3_ETHERNET_GET_CLASS (self);
-+ parent_class = NM_DEVICE_CLASS (g_type_class_peek_parent (klass));
-+ return parent_class->act_stage1_prepare (dev, req);
++ sigemptyset (&mask);
++ action.sa_handler = signal_handler;
++ action.sa_mask = mask;
++ action.sa_flags = 0;
++ sigaction (SIGTERM, &action, NULL);
++ sigaction (SIGINT, &action, NULL);
+}
-+
- static void
- nm_device_802_3_ethernet_dispose (GObject *object)
+
+ int main( int argc, char *argv[] )
{
-@@ -275,6 +291,7 @@
- parent_class->get_generic_capabilities = real_get_generic_capabilities;
- parent_class->init = real_init;
- parent_class->update_link = real_update_link;
-+ parent_class->act_stage1_prepare = real_act_stage1_prepare;
+- GMainLoop *loop;
+ libnm_glib_ctx *ctx;
+ guint id;
- g_type_class_add_private (object_class, sizeof (NMDevice8023EthernetPrivate));
- }
-diff -urN NetworkManager/src/nm-device.c NetworkManager-SVN/src/nm-device.c
---- NetworkManager/src/nm-device.c 2007-09-08 00:09:05.000000000 +0200
-+++ NetworkManager-SVN/src/nm-device.c 2007-09-08 00:06:44.000000000 +0200
-@@ -856,6 +856,12 @@
- data = nm_act_request_get_data (req);
- g_assert (data);
+@@ -79,7 +104,10 @@
+ fprintf (stderr, "Registered Callback with ID %d\n", id);
-+ /* Sometimes the device gets downed by wpa_supplicant; in any case, make
-+ * sure it's up before anything tries to use it.
-+ */
-+ if (!nm_device_is_up (self))
-+ nm_device_bring_up (self);
+ loop = g_main_loop_new (NULL, FALSE);
++ setup_signals ();
+ g_main_loop_run (loop);
+
++ libnm_glib_shutdown (ctx);
+
- /* DHCP devices try DHCP, non-DHCP default to SUCCESS */
- if (nm_device_get_use_dhcp (self))
- {
+ exit (0);
+ }
+diff -urN NetworkManager-0.6.5/test/nm-dhcp-opt-test.c NetworkManager-SVNr3284/test/nm-dhcp-opt-test.c
+--- NetworkManager-0.6.5/test/nm-dhcp-opt-test.c 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/test/nm-dhcp-opt-test.c 2008-02-04 15:59:52.000000000 +0100
+@@ -0,0 +1,270 @@
++/* nm-dhcp-opt-test - test app for NetworkManager's DHCP Options interface
++ *
++ * Dan Williams <dcbw@redhat.com>
++ *
++ * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * (C) Copyright 2005 Red Hat, Inc.
++ */
++
++#include <glib.h>
++#include <dbus/dbus.h>
++#include <dbus/dbus-glib.h>
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++
++#include <sys/socket.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++
++#include "NetworkManager.h"
++
++/* Return codes for functions that use dbus */
++enum
++{
++ RETURN_SUCCESS = 1,
++ RETURN_FAILURE = 0,
++ RETURN_NO_NM = -1
++};
++
++
++#define DBUS_NO_SERVICE_ERROR "org.freedesktop.DBus.Error.ServiceDoesNotExist"
++#define NM_DHCP_OPT_NOT_FOUND_ERROR "org.freedesktop.NetworkManager.OptionNotFound"
++
++static char *dbus_type_to_string (int type)
++{
++ switch (type)
++ {
++ case DBUS_TYPE_UINT32:
++ return "uint32";
++
++ case DBUS_TYPE_BOOLEAN:
++ return "boolean";
++
++ case DBUS_TYPE_BYTE:
++ return "byte";
++
++ case DBUS_TYPE_STRING:
++ return "string";
++ }
++ g_assert_not_reached ();
++ return NULL;
++}
++
++
++/*
++ * call_nm_method
++ *
++ * Do a method call on NetworkManager.
++ *
++ * Returns: RETURN_SUCCESS on success
++ * RETURN_FAILURE on failure
++ * RETURN_NO_NM if NetworkManager service no longer exists
++ */
++static int call_nm_method (DBusConnection *con, const char *method, int opt, gboolean is_array, int arg_type, void **arg, int *item_count)
++{
++ DBusMessage *message;
++ DBusMessage *reply;
++ DBusError error;
++ dbus_bool_t ret = TRUE;
++ DBusMessageIter iter;
++
++ g_return_val_if_fail (con != NULL, RETURN_FAILURE);
++ g_return_val_if_fail (method != NULL, RETURN_FAILURE);
++ g_return_val_if_fail (arg != NULL, RETURN_FAILURE);
++
++ if (is_array)
++ {
++ g_return_val_if_fail (item_count != NULL, RETURN_FAILURE);
++ *item_count = 0;
++ }
++
++ if (!(message = dbus_message_new_method_call (NM_DBUS_SERVICE, NM_DBUS_PATH_DHCP, NM_DBUS_INTERFACE_DHCP, method)))
++ {
++ fprintf (stderr, "call_nm_method(): Couldn't allocate the dbus message\n");
++ return (RETURN_FAILURE);
++ }
++ dbus_message_append_args (message, DBUS_TYPE_UINT32, &opt, DBUS_TYPE_INVALID);
++
++ dbus_error_init (&error);
++ reply = dbus_connection_send_with_reply_and_block (con, message, -1, &error);
++ dbus_message_unref (message);
++ if (dbus_error_is_set (&error))
++ {
++ int ret = RETURN_FAILURE;
++
++ if (!strcmp (error.name, DBUS_NO_SERVICE_ERROR))
++ ret = RETURN_NO_NM;
++
++ if (ret != RETURN_SUCCESS && (strcmp (error.name, NM_DHCP_OPT_NOT_FOUND_ERROR) != 0))
++ fprintf (stderr, "call_nm_method(): %s raised:\n %s\n\n", error.name, error.message);
++
++ dbus_error_free (&error);
++ return (ret);
++ }
++
++ if (reply == NULL)
++ {
++ fprintf (stderr, "call_nm_method(): dbus reply message was NULL\n" );
++ return (RETURN_FAILURE);
++ }
++
++ if (is_array)
++ ret = dbus_message_get_args (reply, NULL, DBUS_TYPE_ARRAY, arg_type, arg, item_count, DBUS_TYPE_INVALID);
++ else
++ ret = dbus_message_get_args (reply, NULL, arg_type, arg, DBUS_TYPE_INVALID);
++
++/*
++ We simply don't unref the message, so that the values returned stay
++ valid in the caller of this function.
++ dbus_message_unref (reply);
++*/
++ if (!ret)
++ {
++ fprintf (stderr, "call_nm_method(): error while getting args.\n");
++ return (RETURN_FAILURE);
++ }
++
++ return (RETURN_SUCCESS);
++}
++
++void print_array (DBusConnection *connection, int opt)
++{
++ int num_items;
++ unsigned int *uint32 = NULL;
++ int *int32 = NULL;
++ gboolean *bool = NULL;
++ unsigned char *byte = NULL;
++ char **string = NULL;
++ void *item = NULL;
++ char *method = NULL;
++ int ret;
++ const char *name = NULL;
++ int opt_type = -1;
++ unsigned int foo;
++
++ ret = call_nm_method (connection, "getName", opt, FALSE, DBUS_TYPE_STRING, (void *)(&name), NULL);
++ if (ret != RETURN_SUCCESS)
++ return;
++
++ ret = call_nm_method (connection, "getElementType", opt, FALSE, DBUS_TYPE_UINT32, (void *)(&opt_type), NULL);
++ if (ret != RETURN_SUCCESS)
++ return;
++
++ switch (opt_type)
++ {
++ case DBUS_TYPE_UINT32:
++ item = &uint32;
++ method = "getInteger";
++ break;
++
++ case DBUS_TYPE_BOOLEAN:
++ item = &bool;
++ method = "getBoolean";
++ break;
++
++ case DBUS_TYPE_BYTE:
++ item = &byte;
++ method = "getByte";
++ break;
++
++ case DBUS_TYPE_STRING:
++ item = &string;
++ method = "getString";
++ break;
++
++ default:
++ fprintf (stderr, "%d: Type %c\n", opt, opt_type);
++ g_assert_not_reached ();
++ break;
++ }
++
++ ret = call_nm_method (connection, method, opt, TRUE, opt_type, item, &num_items);
++ if ((ret == RETURN_SUCCESS) && (num_items > 0))
++ {
++ int i;
++ fprintf (stderr, "%d ('%s'): (%d %s of type %s) ", opt, name, num_items, num_items > 1 ? "elements" : "element", dbus_type_to_string (opt_type));
++ for (i = 0; i < num_items; i++)
++ {
++ struct in_addr in;
++ gboolean last = (i == num_items - 1) ? TRUE : FALSE;
++
++ switch (opt_type)
++ {
++ case DBUS_TYPE_BYTE:
++ fprintf (stderr, "%d%s", byte[i], last ? "" : ", ");
++ break;
++ case DBUS_TYPE_BOOLEAN:
++ fprintf (stderr, "%d%s", bool[i], last ? "" : ", ");
++ break;
++ case DBUS_TYPE_UINT32:
++ in.s_addr = uint32[i];
++ fprintf (stderr, "%u (%s)%s", uint32[i], inet_ntoa(in), last ? "" : ", ");
++ break;
++ case DBUS_TYPE_STRING:
++ fprintf (stderr, "'%s'%s", string[i], last ? "" : ", ");
++ break;
++
++ default:
++ g_assert_not_reached ();
++ break;
++ }
++ }
++ fprintf (stderr, "\n");
++ }
++ else
++ fprintf (stderr, "%d ('%s'): could not get option value\n", opt, name);
++}
++
++
++void print_each_dhcp_option (DBusConnection *connection)
++{
++ DBusMessage *message;
++ DBusMessage *reply;
++ DBusMessageIter iter;
++ DBusError error;
++ int i;
++ int opt_type;
++ int ret;
++
++ g_return_if_fail (connection != NULL);
++
++ /* Loop through all available DHCP options and print each one. */
++ for (i = 1; i < 62; i++)
++ print_array (connection, i);
++}
++
++
++int main (int argc, char **argv)
++{
++ DBusConnection *connection;
++ DBusError error;
++
++ g_type_init ();
++
++ dbus_error_init (&error);
++ connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error);
++ if (connection == NULL)
++ {
++ fprintf (stderr, "Error connecting to system bus: %s\n", error.message);
++ dbus_error_free (&error);
++ return 1;
++ }
++
++ print_each_dhcp_option (connection);
++
++ exit (0);
++}
+diff -urN NetworkManager-0.6.5/test/NMLoadModules NetworkManager-SVNr3284/test/NMLoadModules
+--- NetworkManager-0.6.5/test/NMLoadModules 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/test/NMLoadModules 2008-02-04 15:59:52.000000000 +0100
+@@ -0,0 +1,61 @@
++#! /bin/bash
++# Load kernel modules for all network devices
++
++CWD=`pwd`
++cd /etc/sysconfig/network-scripts
++
++# find all the interfaces besides loopback.
++# ignore aliases, alternative configurations, and editor backup files
++interfaces=`ls ifcfg* | LANG=C egrep -v '(ifcfg-lo|:|rpmsave|rpmorig|rpmnew)' | \
++ LANG=C egrep -v '(~|\.bak)$' | \
++ LANG=C egrep 'ifcfg-[A-Za-z0-9\._-]+$' | \
++ sed 's/^ifcfg-//g' |
++ sed 's/[0-9]/ &/' | LANG=C sort -k 1,1 -k 2n | sed 's/ //'`
++
++# bring up all other interfaces configured to come up at boot time
++for i in $interfaces; do
++ eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
++ eval $(LANG=C fgrep "TYPE=" ifcfg-$i)
++ eval $(LANG=C fgrep "SLAVE=" ifcfg-$i)
++ eval $(LANG=C fgrep "BRIDGE=" ifcfg-$i)
++
++ if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
++
++ if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
++ unset DEVICE TYPE SLAVE BRIDGE
++ continue
++ fi
++
++ if [ "$TYPE" = "xDSL" ]; then
++ unset DEVICE TYPE SLAVE BRIDGE
++ continue
++ fi
++
++ if [ -n "$BRIDGE" ]; then
++ unset DEVICE TYPE SLAVE BRIDGE
++ continue
++ fi
++
++ if [ "${DEVICE%%.*}" != "$DEVICE" ] ; then
++ unset DEVICE TYPE SLAVE BRIDGE
++ continue
++ fi
++
++ if [ "$SLAVE" = "yes" ]; then
++ unset DEVICE TYPE SLAVE BRIDGE
++ continue
++ fi
++ unset DEVICE TYPE SLAVE BRIDGE
++
++ # Load the module
++ LC_ALL= LANG= /sbin/ip -o link | grep -q $i
++ if [ "$?" = "1" ]; then
++ alias=`modprobe -c | awk "/^(alias|install)[[:space:]]+$i[[:space:]]/ { print \\$3 }"`
++ if [ -n "$alias" -a "$alias" != "off" -a "$alias" != "/bin/true" ]; then
++ modprobe $alias > /dev/null 2>&1
++ fi
++ fi
++ continue
++done
++
++exit 0
+diff -urN NetworkManager-0.6.5/test/nmnetlinktest.c NetworkManager-SVNr3284/test/nmnetlinktest.c
+--- NetworkManager-0.6.5/test/nmnetlinktest.c 1970-01-01 01:00:00.000000000 +0100
++++ NetworkManager-SVNr3284/test/nmnetlinktest.c 2008-02-04 15:59:52.000000000 +0100
+@@ -0,0 +1,76 @@
++#include <sys/types.h>
++
++#include <sys/socket.h>
++#include <asm/types.h>
++#include <linux/types.h>
++#include <linux/netlink.h>
++#include <linux/rtnetlink.h>
++#include <linux/if.h>
++#include <errno.h>
++
++#include <glib.h>
++#include <nm-netlink-monitor.h>
++
++static void
++device_added (NmNetlinkMonitor *monitor,
++ const gchar *device_name)
++{
++ g_print ("interface '%s' connected\n", device_name);
++}
++
++
++static void
++device_removed (NmNetlinkMonitor *monitor,
++ const gchar *device_name)
++{
++ g_print ("interface '%s' disconnected\n", device_name);
++}
++
++int
++main (void)
++{
++ NmNetlinkMonitor *monitor;
++ GMainLoop *loop;
++ GError *error;
++
++ g_type_init ();
++
++ monitor = nm_netlink_monitor_new ();
++
++ error = NULL;
++ nm_netlink_monitor_open_connection (monitor, &error);
++
++ if (error != NULL)
++ {
++ g_printerr ("could not open connection: %s\n",
++ error->message);
++ g_error_free (error);
++ return 1;
++ }
++
++ loop = g_main_loop_new (NULL, FALSE);
++
++ g_signal_connect (G_OBJECT (monitor),
++ "interface-connected",
++ G_CALLBACK (device_added), NULL);
++
++ g_signal_connect (G_OBJECT (monitor),
++ "interface-disconnected",
++ G_CALLBACK (device_removed), NULL);
++
++ nm_netlink_monitor_attach (monitor, NULL);
++
++ nm_netlink_monitor_request_status (monitor, &error);
++
++ if (error != NULL)
++ {
++ g_printerr ("could not request status of interfaces: %s\n",
++ error->message);
++ g_error_free (error);
++ return 2;
++ }
++
++ g_main_loop_run (loop);
++
++ return 0;
++}