diff options
Diffstat (limited to 'debian')
| -rw-r--r-- | debian/changelog | 20 | ||||
| -rw-r--r-- | debian/patches/04-if_fix.patch | 12 | ||||
| -rw-r--r-- | debian/patches/11-man_page_sh_name.patch | 15 | ||||
| -rw-r--r-- | debian/patches/12_readme_format.patch | 14 | ||||
| -rw-r--r-- | debian/patches/20-stable_branch_updates_r2652.patch | 914 | ||||
| -rw-r--r-- | debian/patches/21-endianess_fix_r2754.patch | 28 | ||||
| -rw-r--r-- | debian/patches/22-fix_vpn_ftbfs_dont_disable_gnome_deprecated.patch | 44 | ||||
| -rw-r--r-- | debian/patches/23-rfkill_return_type.patch | 22 | ||||
| -rw-r--r-- | debian/patches/24-get_mode_fix_r3122.patch | 13 | ||||
| -rw-r--r-- | debian/patches/25-libnl_unique_pid_r3155.patch | 417 | ||||
| -rw-r--r-- | debian/patches/26-libnl_1.0-pre8_r3206.patch | 202 | ||||
| -rw-r--r-- | debian/patches/27-dont_repeat_errors.patch | 37 |
12 files changed, 20 insertions, 1718 deletions
diff --git a/debian/changelog b/debian/changelog index e7dea542..e3483f24 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,23 @@ +network-manager (0.6.6-1) UNRELEASED; urgency=low + + * New upstream release. (Closes: #470197) + - Ensure dbus errors are properly initialised. (Closes: #471317) + * Removed patches + - debian/patches/04-if_fix.patch (obsolete) + - debian/patches/11-man_page_sh_name.patch (merged upstream) + - debian/patches/12_readme_format.patch (merged upstream) + - debian/patches/20-stable_branch_updates_r2652.patch (merged upstream) + - debian/patches/21-endianess_fix_r2754.patch (merged upstream) + - debian/patches/22-fix_vpn_ftbfs_dont_disable_gnome_deprecated.patch + (merged upstream) + - debian/patches/23-rfkill_return_type.patch (fixed upstream) + - debian/patches/24-get_mode_fix_r3122.patch (merged upstream) + - debian/patches/25-libnl_unique_pid_r3155.patch (merged upstream) + - debian/patches/26-libnl_1.0-pre8_r3206.patch (merged upstream) + - debian/patches/27-dont_repeat_errors.patch (merged upstream) + + -- Michael Biebl <biebl@debian.org> Thu, 03 Apr 2008 00:49:13 +0200 + network-manager (0.6.5-5) unstable; urgency=low * Rebuild against libnl1. (Closes: #461922) diff --git a/debian/patches/04-if_fix.patch b/debian/patches/04-if_fix.patch deleted file mode 100644 index ca0b1574..00000000 --- a/debian/patches/04-if_fix.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- src/nm-device-802-3-ethernet.c 2006-05-13 21:06:05.000000000 +0200 -+++ src/nm-device-802-3-ethernet.c.new 2006-08-13 22:34:56.000000000 +0200 -@@ -376,7 +376,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 --git a/debian/patches/11-man_page_sh_name.patch b/debian/patches/11-man_page_sh_name.patch deleted file mode 100644 index b363268c..00000000 --- a/debian/patches/11-man_page_sh_name.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: man/nm-tool.1.in -=================================================================== -RCS file: /cvs/gnome/NetworkManager/man/nm-tool.1.in,v -retrieving revision 1.1 -diff -u -3 -p -r1.1 nm-tool.1.in ---- man/nm-tool.1.in 1 Feb 2006 18:14:15 -0000 1.1 -+++ man/nm-tool.1.in 30 Nov 2006 19:33:39 -0000 -@@ -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 diff --git a/debian/patches/12_readme_format.patch b/debian/patches/12_readme_format.patch deleted file mode 100644 index 5fa39d24..00000000 --- a/debian/patches/12_readme_format.patch +++ /dev/null @@ -1,14 +0,0 @@ -Index: README -=================================================================== ---- README (Revision 3190) -+++ README (Arbeitskopie) -@@ -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 --git a/debian/patches/20-stable_branch_updates_r2652.patch b/debian/patches/20-stable_branch_updates_r2652.patch deleted file mode 100644 index aea8e86f..00000000 --- a/debian/patches/20-stable_branch_updates_r2652.patch +++ /dev/null @@ -1,914 +0,0 @@ -Index: ChangeLog -=================================================================== ---- ChangeLog (Revision 2558) -+++ ChangeLog (Revision 2652) -@@ -1,3 +1,99 @@ -+2007-07-26 Dan Williams <dcbw@redhat.com> -+ -+ Patch from Bernhard Miklautz <bernhard.miklautz@shacknet.at> -+ -+ * src/NetworkManagerSystem.c -+ - (nm_system_device_set_ip4_route): don't add the route if it's on the -+ same subnet (#437396) -+ -+2007-07-26 Dan Williams <dcbw@redhat.com> -+ -+ * src/nm-device-802-11-wireless.c -+ - (real_start): I hate orinoco; apparently has trouble scanning too soon -+ after being brought up, so do the initial scan a bit later. -+ -+2007-06-27 Dan Williams <dcbw@redhat.com> -+ -+ * src/NetworkManager.c -+ - (nm_hal_init): set hardware RF to enabled if no killswitches are found -+ after the initial discovery -+ -+2007-06-21 Dan Williams <dcbw@redhat.com> -+ -+ More fixes for Fedora #194124, gnome.org #354565 -+ -+ * src/nm-device-802-3-ethernet.c -+ - (real_act_stage1_prepare): new function; fail activation if device -+ doesn't have a link -+ -+ * src/NetworkManagerPolicy.c -+ - (nm_policy_activation_finish): ensure device is actually activated -+ before sending out signals. Fixes a race where device cancellation -+ would be processed right after finish was scheduled, but not run. -+ - (nm_policy_device_change_check, nm_policy_schedule_device_change_check): -+ ensure device change check GSource ID is locked across threads; -+ allow interruption of activation of 802.3 ethernet devices that no -+ longer have an active link, and ensure that 802.3 ethernet devices -+ have an active link before starting activation -+ -+2007-06-21 Dan Williams <dcbw@redhat.com> -+ -+ Add HAL-based rfkill support, based on a patch from Benjamin Kahn. -+ -+ * src/NetworkManagerDbus.[ch] -+ - (nm_dbus_signal_wireless_enabled): new function, emit signals when -+ wireless enabled status changes -+ -+ * src/nm-dbus-nm.c -+ - (nm_dbus_nm_set_wireless_enabled): handle hardware rfkill correctly; -+ send errors when hardware switch overrides user request, and send -+ signals when wireless enabled state changes -+ - (nm_dbus_nm_get_wireless_enabled): send additional 'hardware rf enabled' -+ argument in method reply -+ -+ * src/NetworkManager.c -+ - (handle_killswitch_pcall_done, nm_killswitch_getpower_reply_cb, -+ nm_poll_killswitches, nm_add_killswitch_device, -+ nm_add_initial_killswitch_devices): new functions; detect and handle -+ hardware killswitches exported by HAL. Unfortunately we have to -+ poll the switches because HAL doesn't support signals for killswitches -+ yet. -+ - (nm_hal_device_new_capability): detect killswitches added asynchronously -+ - (nm_hal_init): look for killswitches when connecting to HAL -+ - (nm_hal_deinit): dispose of killswitches when deiniting HAL data -+ -+ * src/NetworkManagerMain.h -+ - Add bits to track killswitches -+ -+2007-06-12 Dan Williams <dcbw@redhat.com> -+ -+ * src/nm-device.c -+ - (real_act_stage3_ip_config_start): sometimes the device gets downed -+ during the wpa_supplicant association. Ensure the device is up -+ before it's used for IP configuration. -+ -+2007-06-07 Dan Williams <dcbw@redhat.com> -+ -+ Patch from Jon Nettleton <jon.nettleton@gmail.com> -+ -+ * src/nm-device-802-11-wireless.c: -+ - (real_act_stage2_config): sleep 1 second to allow link status -+ to stabilize -+ -+2007-06-07 Dan Williams <dcbw@redhat.com> -+ -+ * (nm_device_802_3_ethernet_link_activated, -+ nm_device_802_3_ethernet_link_deactivated): fix ethernet link detection -+ behavior due to races between the netlink code and when the -+ device thread recognizes the change. Checking the link state -+ before scheduling the change even on the device thread is wrong. -+ (gnome.org #354565, rh #194124) -+ -+2007-04-25 Dan Williams <dcbw@redhat.com> -+ -+ * initscript/RedHat/NetworkManager.in: remove trailing backslash -+ (gnome.org #432401) -+ - 2007-04-18 Tambet Ingo <tambet@ximian.com> - - * src/nm-dbus-nmi.c (nm_dbus_get_user_key_for_network_cb): Update the security -Index: src/NetworkManagerDbus.c -=================================================================== ---- src/NetworkManagerDbus.c (Revision 2558) -+++ src/NetworkManagerDbus.c (Revision 2652) -@@ -434,6 +434,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 - * -Index: src/NetworkManagerDbus.h -=================================================================== ---- src/NetworkManagerDbus.h (Revision 2558) -+++ src/NetworkManagerDbus.h (Revision 2652) -@@ -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); - -Index: src/nm-dbus-nm.c -=================================================================== ---- src/nm-dbus-nm.c (Revision 2558) -+++ src/nm-dbus-nm.c (Revision 2652) -@@ -483,53 +483,84 @@ - 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; - } - -Index: src/nm-device-802-3-ethernet.c -=================================================================== ---- src/nm-device-802-3-ethernet.c (Revision 2558) -+++ src/nm-device-802-3-ethernet.c (Revision 2652) -@@ -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 (); -- -- 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,18 +133,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_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 -@@ -211,6 +207,26 @@ - return caps; - } - -+ -+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 void - nm_device_802_3_ethernet_dispose (GObject *object) - { -@@ -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; - - g_type_class_add_private (object_class, sizeof (NMDevice8023EthernetPrivate)); - } -Index: src/NetworkManagerPolicy.c -=================================================================== ---- src/NetworkManagerPolicy.c (Revision 2558) -+++ src/NetworkManagerPolicy.c (Revision 2652) -@@ -52,6 +52,7 @@ - NMDevice *dev = NULL; - NMData *data = NULL; - NMAccessPoint * ap = NULL; -+ NMActRequest * dev_req; - - g_return_val_if_fail (req != NULL, FALSE); - -@@ -61,6 +62,13 @@ - dev = nm_act_request_get_dev (req); - g_assert (dev); - -+ /* 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); - -@@ -265,14 +273,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 +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); -+ - /* 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,13 +445,36 @@ - 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, 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 ("Won't activate %s because it no longer has a link.", -+ nm_device_get_iface (new_dev)); -+ } - } - - if (ap) -@@ -452,11 +495,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 +507,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); - } - - -Index: src/nm-ap-security-wpa-eap.c -=================================================================== ---- src/nm-ap-security-wpa-eap.c (Revision 2558) -+++ src/nm-ap-security-wpa-eap.c (Revision 2652) -@@ -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; -Index: src/nm-device.c -=================================================================== ---- src/nm-device.c (Revision 2558) -+++ src/nm-device.c (Revision 2652) -@@ -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)) - { -Index: src/NetworkManager.c -=================================================================== ---- src/NetworkManager.c (Revision 2558) -+++ src/NetworkManager.c (Revision 2652) -@@ -67,6 +67,7 @@ - - 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,7 +275,184 @@ - } - - -+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; -+ guint32 status; -+ -+ 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); -+ nm_info ("Error getting killswitch power: %s - %s", err.name, err.message); -+ dbus_error_free (&err); -+ goto out; -+ } -+ -+ 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; -+ } -+ -+ if (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 +461,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 +473,10 @@ - g_free (iface); - } - } -+ else if (strcmp (capability, "killswitch") == 0) -+ { -+ nm_add_killswitch_device (data, udi); -+ } - } - - -@@ -340,7 +521,31 @@ - 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 - * -@@ -616,28 +821,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) -+ if (!data->hal_ctx) -+ return; -+ -+ 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)) - { -- DBusError error; -- -- 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; -+ nm_warning ("libhal shutdown failed - %s", error.message); -+ dbus_error_free (&error); - } -+ libhal_ctx_free (data->hal_ctx); -+ data->hal_ctx = NULL; - } - - -Index: src/nm-device-802-11-wireless.c -=================================================================== ---- src/nm-device-802-11-wireless.c (Revision 2558) -+++ src/nm-device-802-11-wireless.c (Revision 2652) -@@ -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; - } - -+ /* Some cards are dumb. Wait a second */ -+ sleep (1); -+ - iface = nm_device_get_iface (dev); - if (!supplicant_exec (self)) - { -@@ -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; - - g_return_val_if_fail (dev != NULL, FALSE); -Index: src/NetworkManagerMain.h -=================================================================== ---- src/NetworkManagerMain.h (Revision 2558) -+++ src/NetworkManagerMain.h (Revision 2652) -@@ -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; -Index: src/NetworkManagerSystem.c -=================================================================== ---- src/NetworkManagerSystem.c (Revision 2558) -+++ src/NetworkManagerSystem.c (Revision 2652) -@@ -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 --git a/debian/patches/21-endianess_fix_r2754.patch b/debian/patches/21-endianess_fix_r2754.patch deleted file mode 100644 index 4932e22a..00000000 --- a/debian/patches/21-endianess_fix_r2754.patch +++ /dev/null @@ -1,28 +0,0 @@ -Index: ChangeLog -=================================================================== ---- ChangeLog (Revision 2753) -+++ ChangeLog (Revision 2754) -@@ -1,3 +1,8 @@ -+2007-08-30 Dan Williams <dcbw@redhat.com> -+ -+ * libnm-util/sha1.c -+ - Include config.h to get defines for endiannes (gnome.org #420216) -+ - 2007-07-26 Dan Williams <dcbw@redhat.com> - - Patch from Bernhard Miklautz <bernhard.miklautz@shacknet.at> -Index: libnm-util/sha1.c -=================================================================== ---- libnm-util/sha1.c (Revision 2753) -+++ libnm-util/sha1.c (Revision 2754) -@@ -12,6 +12,10 @@ - * See README and COPYING for more details. - */ - -+#ifdef HAVE_CONFIG_H -+#include <config.h> -+#endif -+ - #include <stdlib.h> - #include <string.h> - diff --git a/debian/patches/22-fix_vpn_ftbfs_dont_disable_gnome_deprecated.patch b/debian/patches/22-fix_vpn_ftbfs_dont_disable_gnome_deprecated.patch deleted file mode 100644 index ac0459b6..00000000 --- a/debian/patches/22-fix_vpn_ftbfs_dont_disable_gnome_deprecated.patch +++ /dev/null @@ -1,44 +0,0 @@ -=== modified file 'gnome/vpn-properties/Makefile.am' ---- network-manager-0.6.5.old/gnome/vpn-properties/Makefile.am 2007-06-25 13:51:34 +0000 -+++ network-manager-0.6.5/gnome/vpn-properties/Makefile.am 2007-08-03 11:50:32 +0000 -@@ -21,17 +21,16 @@ nm_vpn_properties_CFLAGS = - $(GCONF_CFLAGS) \ - $(GMODULE_CFLAGS) \ - $(LIBGNOMEUI_CFLAGS) \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DICONDIR=\""$(datadir)/icons"\" \ - -DGLADEDIR=\""$(gladedir)"\" \ - -DG_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ -- -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ - -DVERSION=\"$(VERSION)\" \ - $(NULL) - - nm_vpn_properties_LDADD = \ - $(GLADE_LIBS) \ - $(GTK_LIBS) \ - $(GCONF_LIBS) \ - -=== modified file 'gnome/vpn-properties/Makefile.in' ---- network-manager-0.6.5.old/gnome/vpn-properties/Makefile.in 2007-06-25 13:51:34 +0000 -+++ network-manager-0.6.5/gnome/vpn-properties/Makefile.in 2007-08-03 11:50:32 +0000 -@@ -258,17 +258,16 @@ nm_vpn_properties_CFLAGS = \ - $(GCONF_CFLAGS) \ - $(GMODULE_CFLAGS) \ - $(LIBGNOMEUI_CFLAGS) \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DICONDIR=\""$(datadir)/icons"\" \ - -DGLADEDIR=\""$(gladedir)"\" \ - -DG_DISABLE_DEPRECATED \ - -DGDK_DISABLE_DEPRECATED \ -- -DGNOME_DISABLE_DEPRECATED \ - -DGNOMELOCALEDIR=\"$(datadir)/locale\" \ - -DVERSION=\"$(VERSION)\" \ - $(NULL) - - - nm_vpn_properties_LDADD = \ - $(GLADE_LIBS) \ - $(GTK_LIBS) \ - diff --git a/debian/patches/23-rfkill_return_type.patch b/debian/patches/23-rfkill_return_type.patch deleted file mode 100644 index 1e327d46..00000000 --- a/debian/patches/23-rfkill_return_type.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: src/NetworkManager.c -=================================================================== ---- src/NetworkManager.c (Revision 2974) -+++ src/NetworkManager.c (Arbeitskopie) -@@ -339,7 +339,7 @@ - { - DBusError err; - DBusMessage * reply = NULL; -- guint32 status; -+ gint32 status; - - g_return_if_fail (pcall != NULL); - g_return_if_fail (data != NULL); -@@ -358,7 +358,7 @@ - goto out; - } - -- if (!dbus_message_get_args (reply, &err, DBUS_TYPE_UINT32, &status, DBUS_TYPE_INVALID)) { -+ if (!dbus_message_get_args (reply, &err, DBUS_TYPE_INT32, &status, DBUS_TYPE_INVALID)) { - nm_info ("Error getting killswitch power arguments: %s - %s", err.name, err.message); - dbus_error_free (&err); - goto out; diff --git a/debian/patches/24-get_mode_fix_r3122.patch b/debian/patches/24-get_mode_fix_r3122.patch deleted file mode 100644 index f89db8d5..00000000 --- a/debian/patches/24-get_mode_fix_r3122.patch +++ /dev/null @@ -1,13 +0,0 @@ -Index: src/nm-device-802-11-wireless.c -=================================================================== ---- src/nm-device-802-11-wireless.c (Revision 3121) -+++ src/nm-device-802-11-wireless.c (Revision 3122) -@@ -1144,7 +1144,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 diff --git a/debian/patches/25-libnl_unique_pid_r3155.patch b/debian/patches/25-libnl_unique_pid_r3155.patch deleted file mode 100644 index a14aad83..00000000 --- a/debian/patches/25-libnl_unique_pid_r3155.patch +++ /dev/null @@ -1,417 +0,0 @@ -Index: src/NetworkManagerSystem.c -=================================================================== ---- src/NetworkManagerSystem.c (Revision 3154) -+++ src/NetworkManagerSystem.c (Revision 3155) -@@ -177,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; -@@ -204,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_destroy_and_free (cache); - } - - -@@ -223,45 +208,104 @@ - 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_destroy_and_free (cache); -+ - return have_link; - } - -+static GStaticMutex nlh_mutex = G_STATIC_MUTEX_INIT; - --static struct nl_handle * new_nl_handle (void) -+GHashTable *nl_pids = NULL; -+ -+static struct -+nl_handle * new_nl_handle (void) - { -- struct nl_handle * nlh = NULL; -+ struct nl_handle * nlh = NULL; -+ guint32 nl_pid; -+ int i = 0; - -- 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()); -- nl_handle_destroy (nlh); -- nlh = NULL; -+ g_static_mutex_lock (&nlh_mutex); -+ -+ if (nl_pids == NULL) { -+ nl_pids = g_hash_table_new (g_direct_hash, g_direct_equal); -+ g_assert (nl_pids); -+ -+ /* Insert the PID used by nm-netlink-monitor.c */ -+ g_hash_table_insert (nl_pids, GUINT_TO_POINTER (getpid ()), GUINT_TO_POINTER (1)); - } - -+ while (i++ < 10) { -+ nl_pid = g_random_int (); -+ if (!g_hash_table_lookup (nl_pids, GUINT_TO_POINTER (nl_pid))) -+ break; -+ } -+ -+ if (i < 10) { -+ nlh = nl_handle_alloc_nondefault (NL_CB_VERBOSE); -+ nl_handle_set_pid (nlh, nl_pid); -+ -+ if (nl_connect (nlh, NETLINK_ROUTE) < 0) { -+ nm_warning ("%s: couldn't connect to netlink: %s", __func__, nl_geterror ()); -+ nl_handle_destroy (nlh); -+ nlh = NULL; -+ } else { -+ g_hash_table_insert (nl_pids, GUINT_TO_POINTER (nl_pid), GUINT_TO_POINTER (1)); -+ } -+ } else { -+ g_warning ("%s: couldn't find free netlink pid.", __func__); -+ } -+ -+ g_static_mutex_unlock (&nlh_mutex); -+ - return nlh; - } - -+static void -+destroy_nl_handle (struct nl_handle *nlh) -+{ -+ g_return_if_fail (nlh != NULL); - -+ g_static_mutex_lock (&nlh_mutex); -+ g_hash_table_remove (nl_pids, GUINT_TO_POINTER (nl_handle_get_pid (nlh))); -+ g_static_mutex_unlock (&nlh_mutex); -+ -+ 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); -+ if (!nlh) -+ return RTNL_LINK_NOT_FOUND; - -+ cache = rtnl_link_alloc_cache (nlh); -+ if (!cache) { -+ nm_warning ("%s: couldn't allocate link cache."); -+ goto out; -+ } -+ -+ nl_cache_update (nlh, cache); -+ i = rtnl_link_name2i (cache, iface); -+ nl_cache_destroy_and_free (cache); -+ -+out: -+ destroy_nl_handle (nlh); - return i; - } - -@@ -275,18 +319,31 @@ - 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; -- } -+ if (!nlh) -+ return NULL; -+ -+ cache = rtnl_link_alloc_cache (nlh); -+ if (!cache) { -+ nm_warning ("%s: couldn't allocate link cache."); -+ goto out; - } -- nl_close (nlh); -- nl_handle_destroy (nlh); - -+ 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; -+ } -+ -+destroy_cache: -+ nl_cache_destroy_and_free (cache); -+ -+out: -+ destroy_nl_handle (nlh); - return buf; - } - -@@ -313,13 +370,15 @@ - config = nm_device_get_ip4_config (dev); - g_return_val_if_fail (config != NULL, FALSE); - -+ nlh = new_nl_handle (); -+ 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); -@@ -330,8 +389,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)); -@@ -424,7 +482,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; -@@ -437,71 +501,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 (); -+ 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) -+ 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++) - { -- 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++) -+ 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]))) - { -- 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); -- } -+ 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; -@@ -548,7 +614,8 @@ - - g_return_val_if_fail (iface != NULL, FALSE); - -- if (!(nlh = new_nl_handle ())) -+ nlh = new_nl_handle (); -+ if (!nlh) - return FALSE; - - if (!(request = rtnl_link_alloc ())) -@@ -569,9 +636,7 @@ - success = TRUE; - - out: -- nl_close (nlh); -- nl_handle_destroy (nlh); -- -+ destroy_nl_handle (nlh); - return success; - } - -@@ -614,6 +679,6 @@ - out_request: - rtnl_link_put (request); - out_nl_close: -- nl_close (nlh); -- nl_handle_destroy (nlh); -+ destroy_nl_handle (nlh); - } -+ diff --git a/debian/patches/26-libnl_1.0-pre8_r3206.patch b/debian/patches/26-libnl_1.0-pre8_r3206.patch deleted file mode 100644 index 6f96215d..00000000 --- a/debian/patches/26-libnl_1.0-pre8_r3206.patch +++ /dev/null @@ -1,202 +0,0 @@ -Index: src/nm-netlink-monitor.c -=================================================================== ---- src/nm-netlink-monitor.c (Revision 3205) -+++ src/nm-netlink-monitor.c (Revision 3206) -@@ -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; -Index: src/NetworkManagerSystem.c -=================================================================== ---- src/NetworkManagerSystem.c (Revision 3205) -+++ src/NetworkManagerSystem.c (Revision 3206) -@@ -196,7 +196,7 @@ - i = rtnl_link_name2i (cache, iface); - if (RTNL_LINK_NOT_FOUND != i) - rtnl_addr_set_ifindex (addr, i); -- nl_cache_destroy_and_free (cache); -+ nl_cache_free (cache); - } - - -@@ -216,55 +216,42 @@ - - nl_cache_update (nlh, cache); - have_link = rtnl_link_get_by_name (cache, iface); -- nl_cache_destroy_and_free (cache); -+ nl_cache_free (cache); - - return have_link; - } - --static GStaticMutex nlh_mutex = G_STATIC_MUTEX_INIT; -- --GHashTable *nl_pids = NULL; -- - static struct --nl_handle * new_nl_handle (void) -+nl_handle *new_nl_handle (gboolean recursive) - { -- struct nl_handle * nlh = NULL; -- guint32 nl_pid; -- int i = 0; -+ struct nl_handle *nlh = NULL; -+ struct nl_cb *cb; - -- g_static_mutex_lock (&nlh_mutex); -- -- if (nl_pids == NULL) { -- nl_pids = g_hash_table_new (g_direct_hash, g_direct_equal); -- g_assert (nl_pids); -- -- /* Insert the PID used by nm-netlink-monitor.c */ -- g_hash_table_insert (nl_pids, GUINT_TO_POINTER (getpid ()), GUINT_TO_POINTER (1)); -+ 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; - } - -- while (i++ < 10) { -- nl_pid = g_random_int (); -- if (!g_hash_table_lookup (nl_pids, GUINT_TO_POINTER (nl_pid))) -- break; -- } -+ 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); -+ if (recursive) -+ return NULL; - -- if (i < 10) { -- nlh = nl_handle_alloc_nondefault (NL_CB_VERBOSE); -- nl_handle_set_pid (nlh, nl_pid); -- -- if (nl_connect (nlh, NETLINK_ROUTE) < 0) { -+ nlh = new_nl_handle (TRUE); -+ if (!nlh) { - nm_warning ("%s: couldn't connect to netlink: %s", __func__, nl_geterror ()); -- nl_handle_destroy (nlh); -- nlh = NULL; -- } else { -- g_hash_table_insert (nl_pids, GUINT_TO_POINTER (nl_pid), GUINT_TO_POINTER (1)); -+ return NULL; - } -- } else { -- g_warning ("%s: couldn't find free netlink pid.", __func__); - } - -- g_static_mutex_unlock (&nlh_mutex); -- - return nlh; - } - -@@ -273,16 +260,10 @@ - { - g_return_if_fail (nlh != NULL); - -- g_static_mutex_lock (&nlh_mutex); -- g_hash_table_remove (nl_pids, GUINT_TO_POINTER (nl_handle_get_pid (nlh))); -- g_static_mutex_unlock (&nlh_mutex); -- - nl_close (nlh); - nl_handle_destroy (nlh); -- - } - -- - int - nm_system_get_rtnl_index_from_iface (const char *iface) - { -@@ -290,7 +271,7 @@ - struct nl_cache * cache; - int i = RTNL_LINK_NOT_FOUND; - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - return RTNL_LINK_NOT_FOUND; - -@@ -302,7 +283,7 @@ - - nl_cache_update (nlh, cache); - i = rtnl_link_name2i (cache, iface); -- nl_cache_destroy_and_free (cache); -+ nl_cache_free (cache); - - out: - destroy_nl_handle (nlh); -@@ -318,7 +299,7 @@ - struct nl_cache * cache = NULL; - char * buf = NULL; - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - return NULL; - -@@ -340,7 +321,7 @@ - } - - destroy_cache: -- nl_cache_destroy_and_free (cache); -+ nl_cache_free (cache); - - out: - destroy_nl_handle (nlh); -@@ -370,7 +351,7 @@ - config = nm_device_get_ip4_config (dev); - g_return_val_if_fail (config != NULL, FALSE); - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - return FALSE; - -@@ -504,7 +485,7 @@ - if (!iface || !strlen (iface)) - goto done; - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - goto done; - -@@ -614,7 +595,7 @@ - - g_return_val_if_fail (iface != NULL, FALSE); - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - return FALSE; - -@@ -658,7 +639,7 @@ - if (!mtu) - return; - -- nlh = new_nl_handle (); -+ nlh = new_nl_handle (FALSE); - if (!nlh) - return; - diff --git a/debian/patches/27-dont_repeat_errors.patch b/debian/patches/27-dont_repeat_errors.patch deleted file mode 100644 index 64e23223..00000000 --- a/debian/patches/27-dont_repeat_errors.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/src/NetworkManager.c b/src/NetworkManager.c -index 4f89f63..ddb5a4a 100644 ---- a/src/NetworkManager.c -+++ b/src/NetworkManager.c -@@ -65,6 +65,8 @@ - */ - 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); -@@ -353,13 +355,21 @@ static void nm_killswitch_getpower_reply_cb (DBusPendingCall *pcall, NMData * da - 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); -+ 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; - } - - if (!dbus_message_get_args (reply, &err, DBUS_TYPE_INT32, &status, DBUS_TYPE_INVALID)) { -- nm_info ("Error getting killswitch power arguments: %s - %s", err.name, err.message); -+ 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; - } |