From 46a7760ead2841d0a8ad5468bae8042b44af7aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Wed, 20 Nov 2013 18:05:01 +0100 Subject: [PATCH 1/2] core: do not generate a connection for loopback interface (rh #1032594) Else loopback is managed, and could be easily disconnected, which causes various issues with applications. So do not manage it for now, to be on the safer side. https://bugzilla.redhat.com/show_bug.cgi?id=1032594 --- src/nm-manager.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index bf03084..adb8d72 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -147,15 +147,15 @@ static void bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr, NMManager *manager); static void bluez_manager_bdaddr_removed_cb (NMBluezManager *bluez_mgr, const char *bdaddr, const char *object_path, gpointer user_data); -static void add_device (NMManager *self, NMDevice *device, gboolean nm_created); +static void add_device (NMManager *self, NMDevice *device, gboolean generate_con); static void remove_device (NMManager *self, NMDevice *device, gboolean quitting); static void hostname_provider_init (NMHostnameProvider *provider_class); static NMActiveConnection *_new_active_connection (NMManager *self, NMConnection *connection, const char *specific_object, @@ -577,15 +577,15 @@ modem_added (NMModemManager *modem_manager, nm_log_info (LOGD_MB, "ignoring modem '%s' (no associated Bluetooth device)", modem_iface); return; } /* Make the new modem device */ device = nm_device_modem_new (modem, driver); if (device) - add_device (self, device, TRUE); + add_device (self, device, FALSE); } static void set_state (NMManager *manager, NMState state) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (manager); const char *state_str; @@ -1184,15 +1184,15 @@ system_create_virtual_device (NMManager *self, NMConnection *connection) device = nm_device_vlan_new_for_connection (connection, parent); } else if (nm_connection_is_type (connection, NM_SETTING_INFINIBAND_SETTING_NAME)) { device = nm_device_infiniband_new_partition (connection, parent); } if (device) { nm_device_set_is_nm_owned (device, TRUE); - add_device (self, device, TRUE); + add_device (self, device, FALSE); } g_signal_handlers_unblock_by_func (nm_platform_get (), G_CALLBACK (platform_link_added_cb), self); out: g_free (iface); return device; @@ -1765,15 +1765,15 @@ get_existing_connection (NMManager *manager, NMDevice *device) } g_object_unref (connection); return added ? NM_CONNECTION (added) : NULL; } static void -add_device (NMManager *self, NMDevice *device, gboolean nm_created) +add_device (NMManager *self, NMDevice *device, gboolean generate_con) { NMManagerPrivate *priv = NM_MANAGER_GET_PRIVATE (self); const char *iface, *driver, *type_desc; char *path; static guint32 devcount = 0; const GSList *unmanaged_specs; NMConnection *connection = NULL; @@ -1858,16 +1858,17 @@ add_device (NMManager *self, NMDevice *device, gboolean nm_created) path = g_strdup_printf ("/org/freedesktop/NetworkManager/Devices/%d", devcount++); nm_device_set_path (device, path); nm_dbus_manager_register_object (priv->dbus_mgr, path, device); nm_log_info (LOGD_CORE, "(%s): exported as %s", iface, path); g_free (path); - /* Don't bother generating a connection for devices NM just created */ - if (!nm_created) + /* Don't generate a connection e.g. for devices NM just created, or + * for the loopback */ + if (generate_con) connection = get_existing_connection (self, device); /* Start the device if it's supposed to be managed */ unmanaged_specs = nm_settings_get_unmanaged_specs (priv->settings); if ( !manager_sleeping (self) && !nm_device_spec_match_list (device, unmanaged_specs)) { nm_device_set_manager_managed (device, @@ -1959,15 +1960,15 @@ bluez_manager_bdaddr_added_cb (NMBluezManager *bluez_mgr, nm_log_info (LOGD_HW, "BT device %s (%s) added (%s%s%s)", name, bdaddr, has_dun ? "DUN" : "", has_dun && has_nap ? " " : "", has_nap ? "NAP" : ""); - add_device (manager, device, TRUE); + add_device (manager, device, FALSE); } } static void bluez_manager_bdaddr_removed_cb (NMBluezManager *bluez_mgr, const char *bdaddr, const char *object_path, @@ -2259,15 +2260,15 @@ platform_link_added_cb (NMPlatform *platform, default: device = nm_device_generic_new (plink); break; } } if (device) - add_device (self, device, FALSE); + add_device (self, device, plink->type != NM_LINK_TYPE_LOOPBACK); } static void platform_link_removed_cb (NMPlatform *platform, int ifindex, NMPlatformLink *plink, NMPlatformReason reason, @@ -2296,15 +2297,15 @@ atm_device_added_cb (NMAtmManager *atm_mgr, device = find_device_by_iface (self, iface); if (device) return; device = nm_device_adsl_new (sysfs_path, iface, driver); if (device) - add_device (self, device, FALSE); + add_device (self, device, TRUE); } static void atm_device_removed_cb (NMAtmManager *manager, const char *iface, gpointer user_data) { -- 1.8.3.1