Below is patch for ifcfg-mdv (Mandriva plugin that is currently in development). Plugin was forked off ifcfg-rh and this part is mostly unchanged. From code review the same problem should be present in ifcfg-rh as well.
To reproduce - take the first ifcfg file in directory scan order and set it as unmanaged. In my case it results in no system connections being displayed by NM. --- NM starts plugin initialization by requesting list of unmanaged interfaces. ifcfg-mdv reads in interface list on demand either in get_connections() or in get_unmanaged_specs(). What now happens is: get_unmanaged_specs() -> read_connections() -> read_one_connection() -> signal("unmanaged-specs-changed") -> unmanaged_specs_changed() -> nm_sysconfig_settings_get_unmanaged_specs() -> load_connections() -> get_connections() Now ifcfg-mdv get_connections() will see non-empty connection hash table and return whatever is available. load_connections() will mark connections as loaded and never re-request it. And read_one_connection() never signals that connection was added so NM will never notice existence of connections added *after* the first unmanaged interface was found. There are two places where read_one_connection() is called: read_connections() and handle_connection_remove_or_new(). The former is called exactly once on initialization and does not need any signals - we want to read full list before interacting with NM. Move signal("unmanaged-specs-changed") to the latter from read_one_connection(). Signed-off-by: Andrey Borzenkov <arvidj...@gmail.com> --- system-settings/plugins/ifcfg-mdv/plugin.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/system-settings/plugins/ifcfg-mdv/plugin.c b/system-settings/plugins/ifcfg-mdv/plugin.c index 4b4667b..68a2c72 100644 --- a/system-settings/plugins/ifcfg-mdv/plugin.c +++ b/system-settings/plugins/ifcfg-mdv/plugin.c @@ -135,7 +135,6 @@ read_one_connection (SCPluginIfcfg *plugin, const char *filename) if (nm_ifcfg_connection_get_unmanaged_spec (connection)) { PLUGIN_PRINT (IFCFG_PLUGIN_NAME, "Ignoring connection '%s' and its " "device due to NM_CONTROLLED/ONBOOT/BRIDGE/VLAN.", cid); - g_signal_emit_by_name (plugin, NM_SYSTEM_CONFIG_INTERFACE_UNMANAGED_SPECS_CHANGED); } else { /* Wait for the connection to become unmanaged once it knows the * UDI of it's device, if/when the device gets plugged in. @@ -298,7 +297,9 @@ handle_connection_remove_or_new (SCPluginIfcfg *plugin, if (do_new) { connection = read_one_connection (plugin, path); if (connection) { - if (!nm_ifcfg_connection_get_unmanaged_spec (connection)) + if (nm_ifcfg_connection_get_unmanaged_spec (connection)) + g_signal_emit_by_name (plugin, NM_SYSTEM_CONFIG_INTERFACE_UNMANAGED_SPECS_CHANGED); + else g_signal_emit_by_name (plugin, NM_SYSTEM_CONFIG_INTERFACE_CONNECTION_ADDED, connection); } } _______________________________________________ networkmanager-list mailing list networkmanager-list@gnome.org http://mail.gnome.org/mailman/listinfo/networkmanager-list