NetworkManager/src/NetworkManager.c

696 lines
18 KiB
C
Raw Normal View History

/* NetworkManager -- Network link manager
*
* 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 2004 Red Hat, Inc.
*/
#include <glib.h>
2004-07-27 Dan Williams <dcbw@redhat.com> * src/NetworkManagerAPList.[ch] src/Makefile.am - Add. Deal with allowed network list additions, deletions, and updates * dispatcher-daemon/NetworkManagerDispatcher.c - Add missing <dbus/dbus.h> header * info-daemon/NetworkManagerInfo.[ch] - Add missing <dbus/dbus.h> header - Implement the GConf notify callback to signal NetworkManager of an allowed network change - Better error checking * info-daemon/NetworkManagerInfoDbus.[ch] - Add missing <dbus/dbus.h> header - Convert to using dbus_message_append_args/dbus_message_get_args - Implement nmi_dbus_signal_update_allowed_network() to signal NetworkManager that an allowed network changed. We don't want to signal on individual keys _inside_ an allowed network really, just want NM to query the info daemon for updated info on all keys. - Better error checking * src/NetworkManager.[ch] - Add missing <dbus/dbus.h> header - Move allowed_ap_list free functions to NetworkManagerAPList.[ch] - Zero out NMData structure on free - No longer use a thread for allowed_ap_list updating, instead its now done through dbus queries against NetworkManagerInfo - Populate allowed_ap_list initially before adding existing network devices to the device list, so wireless devices can get their "best" AP * src/NetworkManagerDbus.[ch] - Convert to using dbus_message_append_args/dbus_message_get_args - Better error checking - Implement Allowed Network info functions to request allowed network info from NetworkManagerInfo - Implement the filter function to process signals from NetworkManagerInfo about changing allowed networks * src/NetworkManagerDevice.c - Fix file descriptor leak in nm_device_update_ip4_address() `CVS: Modified Files: git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@22 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-27 16:15:36 +00:00
#include <dbus/dbus.h>
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
#include <dbus/dbus-glib-lowlevel.h>
#include <dbus/dbus-glib.h>
#include <hal/libhal.h>
#include <getopt.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include "NetworkManager.h"
#include "NetworkManagerUtils.h"
#include "NetworkManagerDevice.h"
#include "NetworkManagerPolicy.h"
#include "NetworkManagerWireless.h"
#include "NetworkManagerDbus.h"
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
#include "NetworkManagerAP.h"
2004-07-27 Dan Williams <dcbw@redhat.com> * src/NetworkManagerAPList.[ch] src/Makefile.am - Add. Deal with allowed network list additions, deletions, and updates * dispatcher-daemon/NetworkManagerDispatcher.c - Add missing <dbus/dbus.h> header * info-daemon/NetworkManagerInfo.[ch] - Add missing <dbus/dbus.h> header - Implement the GConf notify callback to signal NetworkManager of an allowed network change - Better error checking * info-daemon/NetworkManagerInfoDbus.[ch] - Add missing <dbus/dbus.h> header - Convert to using dbus_message_append_args/dbus_message_get_args - Implement nmi_dbus_signal_update_allowed_network() to signal NetworkManager that an allowed network changed. We don't want to signal on individual keys _inside_ an allowed network really, just want NM to query the info daemon for updated info on all keys. - Better error checking * src/NetworkManager.[ch] - Add missing <dbus/dbus.h> header - Move allowed_ap_list free functions to NetworkManagerAPList.[ch] - Zero out NMData structure on free - No longer use a thread for allowed_ap_list updating, instead its now done through dbus queries against NetworkManagerInfo - Populate allowed_ap_list initially before adding existing network devices to the device list, so wireless devices can get their "best" AP * src/NetworkManagerDbus.[ch] - Convert to using dbus_message_append_args/dbus_message_get_args - Better error checking - Implement Allowed Network info functions to request allowed network info from NetworkManagerInfo - Implement the filter function to process signals from NetworkManagerInfo about changing allowed networks * src/NetworkManagerDevice.c - Fix file descriptor leak in nm_device_update_ip4_address() `CVS: Modified Files: git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@22 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-27 16:15:36 +00:00
#include "NetworkManagerAPList.h"
#include "backends/NetworkManagerSystem.h"
/*
* Globals
*/
static NMData *nm_data = NULL;
extern gboolean allowed_ap_worker_exit;
static void nm_data_free (NMData *data);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
/*
* nm_get_device_interface_from_hal
*
* Queries HAL for the "net.interface" property of a device and returns
* it if successful.
*
*/
static char *nm_get_device_interface_from_hal (LibHalContext *ctx, const char *udi)
{
char *iface = NULL;
if (hal_device_property_exists (ctx, udi, "net.interface"))
{
char *temp = hal_device_get_property_string (ctx, udi, "net.interface");
iface = g_strdup (temp);
hal_free_string (temp);
}
return (iface);
}
/*
* nm_create_device_and_add_to_list
*
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
* Create a new network device and add it to our device list.
*
* Returns: newly allocated device on success
* NULL on failure
*/
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
NMDevice * nm_create_device_and_add_to_list (NMData *data, const char *udi, const char *iface,
gboolean test_device, NMDeviceType test_device_type)
{
NMDevice *dev = NULL;
g_return_val_if_fail (data != NULL, NULL);
g_return_val_if_fail (udi != NULL, NULL);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
g_return_val_if_fail (iface != NULL, NULL);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
/* If we are called to create a test devices, but test devices weren't enabled
* on the command-line, don't create the device.
*/
if (!data->enable_test_devices && test_device)
{
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
syslog (LOG_ERR, "nm_create_device_and_add_to_list(): attempt to create a test device,"
" but test devices were not enabled on the command line. Will not create the device.\n");
return (NULL);
}
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
/* Make sure the device is not already in the device list */
if ((dev = nm_get_device_by_iface (data, iface)))
return (NULL);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
if ((dev = nm_device_new (iface, test_device, test_device_type, data)))
{
/* Build up the device structure */
nm_device_set_udi (dev, udi);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
/* Attempt to acquire mutex for device list addition. If acquire fails,
* just ignore the device addition entirely.
*/
if (nm_try_acquire_mutex (data->dev_list_mutex, __FUNCTION__))
{
syslog( LOG_INFO, "nm_create_device_and_add_to_list(): adding device '%s' (%s)",
nm_device_get_iface (dev), nm_device_is_wireless (dev) ? "wireless" : "wired" );
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
data->dev_list = g_slist_append (data->dev_list, dev);
nm_device_deactivate (dev, TRUE);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
nm_data_mark_state_changed (data);
nm_dbus_signal_device_status_change (data->dbus_connection, dev, DEVICE_LIST_CHANGE);
}
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
else
{
/* If we couldn't add the device to our list, free its data. */
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
syslog( LOG_ERR, "nm_create_device_and_add_to_list() could not acquire device list mutex." );
nm_device_unref (dev);
dev = NULL;
}
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
} else syslog( LOG_ERR, "nm_create_device_and_add_to_list() could not allocate device data." );
return (dev);
}
/*
* nm_remove_device_from_list
*
* Searches for a device entry in the NLM device list by udi,
* and if found, removes that element from the list and frees
* its data.
*/
void nm_remove_device_from_list (NMData *data, const char *udi)
{
GSList *element;
g_return_if_fail (data != NULL);
g_return_if_fail (udi != NULL);
/* Attempt to acquire mutex for device list deletion. If acquire fails,
* just ignore the device deletion entirely.
*/
if (nm_try_acquire_mutex (data->dev_list_mutex, __FUNCTION__))
{
element = data->dev_list;
while (element)
{
NMDevice *dev = (NMDevice *)(element->data);
if (dev && (nm_null_safe_strcmp (nm_device_get_udi (dev), udi) == 0))
{
if (data->active_device && (dev == data->active_device))
{
data->active_device = NULL;
data->active_device_locked = FALSE;
}
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
if (data->user_device && (dev == data->user_device))
{
nm_device_unref (data->user_device);
data->user_device = NULL;
}
nm_device_activation_cancel (dev);
nm_device_unref (dev);
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
/* Remove the device entry from the device list and free its data */
data->dev_list = g_slist_remove_link (data->dev_list, element);
nm_device_unref (element->data);
g_slist_free (element);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
nm_data_mark_state_changed (data);
nm_dbus_signal_device_status_change (data->dbus_connection, dev, DEVICE_LIST_CHANGE);
break;
}
element = g_slist_next (element);
}
nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
} else syslog( LOG_ERR, "nm_remove_device_from_list() could not acquire device list mutex." );
}
/*
* nm_hal_mainloop_integration
*
*/
static void nm_hal_mainloop_integration (LibHalContext *ctx, DBusConnection * dbus_connection)
{
dbus_connection_setup_with_g_main (dbus_connection, NULL);
}
/*
* nm_hal_device_added
*
*/
static void nm_hal_device_added (LibHalContext *ctx, const char *udi)
{
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
NMData *data = (NMData *)hal_ctx_get_user_data (ctx);
char *iface = NULL;
g_return_if_fail (data != NULL);
syslog( LOG_DEBUG, "nm_hal_device_added() called with udi = %s", udi );
/* Sometimes the device's properties (like net.interface) are not set up yet,
* so this call will fail, and it will actually be added when hal sets the device's
* capabilities a bit later on.
*/
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
if ((iface = nm_get_device_interface_from_hal (data->hal_ctx, udi)))
{
nm_create_device_and_add_to_list (data, udi, iface, FALSE, DEVICE_TYPE_DONT_KNOW);
g_free (iface);
}
}
/*
* nm_hal_device_removed
*
*/
static void nm_hal_device_removed (LibHalContext *ctx, const char *udi)
{
NMData *data = (NMData *)hal_ctx_get_user_data (ctx);
g_return_if_fail (data != NULL);
syslog( LOG_DEBUG, "nm_hal_device_removed() called with udi = %s", udi );
nm_remove_device_from_list (data, udi);
}
/*
* nm_hal_device_new_capability
*
*/
static void nm_hal_device_new_capability (LibHalContext *ctx, const char *udi, const char *capability)
{
NMData *data = (NMData *)hal_ctx_get_user_data (ctx);
g_return_if_fail (data != NULL);
syslog( LOG_DEBUG, "nm_hal_device_new_capability() called with udi = %s, capability = %s", udi, capability );
if (capability && (strcmp (capability, "net.ethernet") == 0))
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
{
char *iface;
if ((iface = nm_get_device_interface_from_hal (data->hal_ctx, udi)))
{
nm_create_device_and_add_to_list (data, udi, iface, FALSE, DEVICE_TYPE_DONT_KNOW);
g_free (iface);
}
}
}
/*
* nm_hal_device_lost_capability
*
*/
static void nm_hal_device_lost_capability (LibHalContext *ctx, const char *udi, const char *capability)
{
syslog( LOG_DEBUG, "nm_hal_device_lost_capability() called with udi = %s, capability = %s", udi, capability );
}
/*
* nm_hal_device_property_modified
*
*/
static void nm_hal_device_property_modified (LibHalContext *ctx, const char *udi, const char *key, dbus_bool_t is_removed, dbus_bool_t is_added)
{
/*
syslog( LOG_DEBUG, "nm_hal_device_property_modified() called with udi = %s, key = %s, is_removed = %d, is_added = %d", udi, key, is_removed, is_added );
*/
}
/*
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
* nm_add_initial_devices
*
* Add all devices that hal knows about right now (ie not hotplug devices)
*
*/
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
static void nm_add_initial_devices (NMData *data)
{
char **net_devices;
int num_net_devices;
int i;
g_return_if_fail (data != NULL);
/* Grab a list of network devices */
net_devices = hal_find_device_by_capability (data->hal_ctx, "net.ethernet", &num_net_devices);
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
if (net_devices)
{
for (i = 0; i < num_net_devices; i++)
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
{
char *iface;
if ((iface = nm_get_device_interface_from_hal (data->hal_ctx, net_devices[i])))
{
nm_create_device_and_add_to_list (data, net_devices[i], iface, FALSE, DEVICE_TYPE_DONT_KNOW);
g_free (iface);
}
}
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
}
hal_free_string_array (net_devices);
}
/*
* nm_link_state_monitor
*
* Called every 2s to poll cards and determine if they have a link
* or not.
*
*/
gboolean nm_link_state_monitor (gpointer user_data)
{
NMData *data = (NMData *)user_data;
GSList *element;
g_return_val_if_fail (data != NULL, TRUE);
/* Attempt to acquire mutex for device list iteration.
* If the acquire fails, just ignore the device deletion entirely.
*/
if (nm_try_acquire_mutex (data->dev_list_mutex, __FUNCTION__))
{
element = data->dev_list;
while (element)
{
NMDevice *dev = (NMDevice *)(element->data);
if (dev)
{
if (!nm_device_is_up (dev))
nm_device_bring_up (dev);
nm_device_update_link_active (dev, FALSE);
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
if (dev == data->active_device)
{
if (nm_device_is_wireless (dev) && !nm_device_get_link_active (dev))
{
/* If we loose a link to the access point, then
* look for another access point to connect to.
*/
nm_device_update_best_ap (dev);
}
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
/* Check if the device's IP address has changed
* (ie dhcp lease renew/address change)
*/
nm_device_update_ip4_address (dev);
2004-07-15 Dan Williams <dcbw@redhat.com> * src/Makefile.am - Turn on warnings * src/NetworkManager.c - nm_create_device_and_add_to_list(): call nm_device_deactivate() rather that doing the deactivation ourselves - Cancel an pending actions on a device if its being removed - Break up link state checking a bit, make non-active wireless cards deactivated to save power - Remove unused variables * src/NetworkManager.h - Add support for "pending" device * src/NetworkManagerAP.h src/NetworkManagerAP.c - Add support for determining whether and AP has encryption enabled or not - AP address is now "struct ether_addr" rather than a string * src/NetworkManagerDbus.h src/NetworkManagerDbus.c - Add signal NeedKeyForNetwork, method SetKeyForNetwork (testing only) - Changes for AP address from struct ether_addr->string * src/NetworkManagerDevice.h src/NetworkManagerDevice.c - Remove unused variables, fix warnings - Add support for Pending Actions (things that block a device from being "active" until they are completed). - First pending action: Get a WEP key from the user - Add nm_device_is_wire[d|less](), rename nm_device_is_wireless() - Clean up explicit testing of dev->iface_type to use nm_device_is_wireless() - Update wireless link checking to try to determine if the AP we are associated with is correct, but the WEP key we are using is just wrong. If its wrong, trigger the GetUserKey pending action on the device - If dhclient can't get an IP address, it brings the device down. Bring it back up in that case, otherwise we can't scan or link-check on it - Add IP address change notifications at appropriate points (still needs some work) - Add nm_device_need_ap_switch(), checks whether we need to switch access points or not * src/NetworkManagerPolicy.h src/NetworkManagerPolicy.c - Split out "best" access point determiniation into separate function - Make device activation 2-stage: first the device is pending, then in the next iteration through it becomes "active" unless it has pending actions * src/NetworkManagerUtils.h src/NetworkManagerUtils.c - Clean up unused variables and warnings - Wrap our debug macros in {} to prevent possible confusion * src/NetworkManagerWireless.c - Forgot to return current best priority, which lead to last available AP always being chosen no matter what its priority was. Corrected. git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@15 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-15 16:51:48 +00:00
}
else
{
/* Ensure that the device has no IP address or routes. This will
* sometimes occur when a card gets inserted, and the system
* initscripts will run to bring the card up, but they get around to
* running _after_ we've been notified of insertion and cleared out
* card info already.
*/
nm_system_device_flush_routes (dev);
if (nm_device_get_ip4_address (dev) != 0)
nm_system_device_flush_addresses (dev);
}
}
element = g_slist_next (element);
}
nm_unlock_mutex (data->dev_list_mutex, __FUNCTION__);
} else syslog( LOG_ERR, "nm_link_state_monitor() could not acquire device list mutex." );
return (TRUE);
}
/*
* libhal callback function structure
*/
static LibHalFunctions hal_functions =
{
nm_hal_mainloop_integration,
nm_hal_device_added,
nm_hal_device_removed,
nm_hal_device_new_capability,
nm_hal_device_lost_capability,
nm_hal_device_property_modified,
NULL
};
/*
* nm_data_new
*
* Create data structure used in callbacks from libhal.
*
*/
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
static NMData *nm_data_new (gboolean enable_test_devices)
{
NMData *data;
data = g_new0 (NMData, 1);
if (!data)
{
syslog( LOG_ERR, "Could not allocate our NetworkManager data... Not enough memory?");
return (NULL);
}
/* Initialize the device list mutex to protect additions/deletions to it. */
data->dev_list_mutex = g_mutex_new ();
data->user_device_mutex = g_mutex_new ();
data->state_modified_mutex = g_mutex_new ();
if (!data->dev_list_mutex || !data->user_device_mutex || !data->state_modified_mutex)
{
nm_data_free (data);
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
syslog (LOG_ERR, "Could not initialize data structure locks.");
return (NULL);
}
/* Initialize the access point lists */
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
data->allowed_ap_list = nm_ap_list_new (NETWORK_TYPE_ALLOWED);
data->invalid_ap_list = nm_ap_list_new (NETWORK_TYPE_INVALID);
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
if (!data->allowed_ap_list || !data->invalid_ap_list)
{
nm_data_free (data);
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
syslog (LOG_ERR, "Could not create access point lists. Whacky stuff going on?");
return (NULL);
}
data->state_modified = TRUE;
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
data->enable_test_devices = enable_test_devices;
return (data);
}
/*
* nm_data_free
*
* Free data structure used in callbacks.
*
*/
static void nm_data_free (NMData *data)
{
g_return_if_fail (data != NULL);
nm_device_unref (data->active_device);
g_slist_foreach (data->dev_list, (GFunc) nm_device_unref, NULL);
g_slist_free (data->dev_list);
g_mutex_free (data->dev_list_mutex);
g_mutex_free (data->user_device_mutex);
g_mutex_free (data->state_modified_mutex);
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
nm_ap_list_unref (data->allowed_ap_list);
nm_ap_list_unref (data->invalid_ap_list);
2004-07-27 Dan Williams <dcbw@redhat.com> * src/NetworkManagerAPList.[ch] src/Makefile.am - Add. Deal with allowed network list additions, deletions, and updates * dispatcher-daemon/NetworkManagerDispatcher.c - Add missing <dbus/dbus.h> header * info-daemon/NetworkManagerInfo.[ch] - Add missing <dbus/dbus.h> header - Implement the GConf notify callback to signal NetworkManager of an allowed network change - Better error checking * info-daemon/NetworkManagerInfoDbus.[ch] - Add missing <dbus/dbus.h> header - Convert to using dbus_message_append_args/dbus_message_get_args - Implement nmi_dbus_signal_update_allowed_network() to signal NetworkManager that an allowed network changed. We don't want to signal on individual keys _inside_ an allowed network really, just want NM to query the info daemon for updated info on all keys. - Better error checking * src/NetworkManager.[ch] - Add missing <dbus/dbus.h> header - Move allowed_ap_list free functions to NetworkManagerAPList.[ch] - Zero out NMData structure on free - No longer use a thread for allowed_ap_list updating, instead its now done through dbus queries against NetworkManagerInfo - Populate allowed_ap_list initially before adding existing network devices to the device list, so wireless devices can get their "best" AP * src/NetworkManagerDbus.[ch] - Convert to using dbus_message_append_args/dbus_message_get_args - Better error checking - Implement Allowed Network info functions to request allowed network info from NetworkManagerInfo - Implement the filter function to process signals from NetworkManagerInfo about changing allowed networks * src/NetworkManagerDevice.c - Fix file descriptor leak in nm_device_update_ip4_address() `CVS: Modified Files: git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@22 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-27 16:15:36 +00:00
memset (data, 0, sizeof (NMData));
}
/*
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
* nm_data_mark_state_changed
*
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
* Notify our timeout that the networking state has changed in some way.
*
*/
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
void nm_data_mark_state_changed (NMData *data)
{
g_return_if_fail (data != NULL);
g_mutex_lock (data->state_modified_mutex);
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
data->state_modified = TRUE;
g_mutex_unlock (data->state_modified_mutex);
}
/*
* nm_print_usage
*
* Prints program usage.
*
*/
static void nm_print_usage (void)
{
2004-08-11 Dan Williams <dcbw@redhat.com> * info-daemon/NetworkManagerInfo.c: - (main): clean up Seth's code style * info-daemon/NetworkManagerInfoDbus.c: - Use the more aptly-named path/service/interface constants from NetworkManager - Don't return empty strings ("") as object paths ever, instead return errors * panel-applet/NMWirelessApplet.c: - Clean up Seth's code style * src/NetworkManager.[ch] - (nm_remove_device_from_list): remove anything having to do with pending_device - (main, nm_print_usage): change --daemon=[yes|no] -> --no-daemon * src/NetworkManagerAPList.[ch] - Move Iter struct right above the iter functions to preserve opacity - (nm_ap_list_remove_ap): implement - (nm_ap_list_update_network): deal with errors returned from nm_dbus_get_network_priority(), remove AP if NetworkManagerInfo doesn't know anything about it - (nm_ap_list_diff): user NMAPList iterators - (nm_ap_list_print_members): implement debugging function * src/NetworkManagerDbus.[ch] - (nm_dbus_nm_get_active_device): remove anything to do with pending_device - (nm_dbus_get_user_key_for_network): remove DBusPendingCall stuff (unused), and move the actual key setting stuff into NetworkManagerDevice.c - (nm_dbus_get_network_priority): return -1 now on errors - (nm_dbus_nmi_filter): fix strcmp() error that caused PreferredNetworkUpdate signals to get lost, and force the active device to update its "best" ap when AP lists change - (nm_dbus_nm_message_handler): Update conditions for returning "connecting" for a "status" method call due to pending_device member removal * src/NetworkManagerDevice.[ch] - Move NMDevice structure to the top - Add a wireless scan mutex and a best_ap mutex to the Wireless Options structure - Remove Pending Action stuff from everywhere - (nm_device_activation_*): We now "begin" activation and start a thread to do the activation for us. This thread blocks until all conditions for activation have been met (ie for wireless devices, we need a valid WEP key and a "best" ap), and then setup up the interface and runs dhclient. We have to do this because there is no guaruntee how long dhclient takes, and while we are blocking on it, we cannot run our main loop and respond to dbus method calls or HAL device removals/inserts - (nm_device_set_user_key_for_network): Move logic here from NetworkManagerDbus.c so we can tell nm_device_activation_worker() that we've got a key - (nm_device_*_best_ap): lock access to best_ap member of Wireless Options structure - (nm_device_get_path_for_ap): dumb it down so the list doesn't lock against itself when diffing (AP appear/disappear signal functions make sure the AP is actually in the device's list) - (nm_device_update_best_ap): move logic from nm_wireless_is_ap_better() here * src/NetworkManagerPolicy.c - Remove anything to do with pending_device - Adjust device activation to deal with activation-in-worker-thread * src/NetworkManagerUtils.c - Clean up locking debugging a bit * src/NetworkManagerWireless.[ch] - (nm_wireless_is_ap_better): remove, stick logic in nm_device_update_best_ap(). This function was badly named and is better as a device function * panel-applet/.cvsignore: add git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@46 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-11 18:14:02 +00:00
fprintf (stderr, "\n" "usage : NetworkManager [--no-daemon] [--help]\n");
fprintf (stderr,
"\n"
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
" --no-daemon Don't become a daemon\n"
" --enable-test-devices Allow dummy devices to be created via DBUS methods [DEBUG]\n"
" --help Show this information and exit\n"
"\n"
"NetworkManager monitors all network connections and automatically\n"
"chooses the best connection to use. It also allows the user to\n"
"specify wireless access points which wireless cards in the computer\n"
"should associate with.\n"
"\n");
}
/*
* main
*
*/
int main( int argc, char *argv[] )
{
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
LibHalContext *ctx = NULL;
guint link_source;
guint policy_source;
guint wireless_scan_source;
gboolean become_daemon = TRUE;
gboolean enable_test_devices = FALSE;
2004-09-08 Dan Williams <dcbw@redhat.com> * panel-applet/no-networkmanager.png panel-applet/Makefile.am panel-applet/NMWirelessApplet.c - Add a "NetworkManager not running" icon and use it - Use new consolidated GConf keys rather than Preferred/Trusted * TODO: update * info-daemon/NetworkManagerInfo.c info-daemon/NetworkManagerInfoDbus.[ch] info-daemon/NetworkManagerInfoPassphraseDialog.c - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted - Add a "getNetworkTrusted" dbus method - "WirelessNetworkUpdate" signal now sent rather than "PreferredNetworkUpdate/TrustedNetworkUpdate" signals - Start freeing some dbus errors (not completed yet) * info-daemon/passphrase.glade - Remove the "don't show" hints for pager and taskbar - Add a title since its going to be in the taskbar * src/NetworkManager.[ch] src/NetworkManagerAPList.[ch] - There are now no longer two separate lists of wireless networks, but one list where each network is "trusted" or not trusted * src/NetworkManagerAP.[ch] - Add get/set "trusted" accessors and data bit * src/NetworkManagerDbus.[ch] - Add function to get "trusted" status of a network from NetworkManagerInfo - Trap new WirelessNetworkUpdate signal rather than old separate signals * src/NetworkManagerDevice.[ch] - Add per-device config data (ip4 addr, gateway, netmask) and accessors - (nm_device_new): Get device config from backend when initializing devices - (nm_device_activation_worker): Split out device configuration on activation to deal with static/dynamic IP differences, and try encryption fallbacks on a device if the encryption method for the best AP is not good - (nm_device_update_best_ap): convert to new consolidated access point lists from NetworkManagerInfo, and copy over latest NMI info to best_ap when setting it * src/NetworkManagerWireless.c - libgcrypt code wasn't converting the MD5 digest to an ascii string, fix it * src/backends/NetworkManagerRedHat.c src/backends/NetworkManagerSystem.h - (nm_system_device_update_config_info): Add function to get device configuration from system data in ifcfg-* files * src/backends/NetworkManagerDebian.c src/backends/NetworkManagerGentoo.c src/backends/NetworkManagerSlackware.c - Add stub functions for getting device configuration git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@131 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-08 18:14:42 +00:00
GMainLoop *loop = NULL;
/* Parse options */
while (1)
{
int c;
int option_index = 0;
const char *opt;
static struct option options[] = {
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
{"no-daemon", 0, NULL, 0},
{"enable-test-devices", 0, NULL, 0},
{"help", 0, NULL, 0},
{NULL, 0, NULL, 0}
};
c = getopt_long (argc, argv, "", options, &option_index);
if (c == -1)
break;
switch (c)
{
case 0:
opt = options[option_index].name;
if (strcmp (opt, "help") == 0)
{
nm_print_usage ();
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
exit (EXIT_SUCCESS);
}
2004-08-11 Dan Williams <dcbw@redhat.com> * info-daemon/NetworkManagerInfo.c: - (main): clean up Seth's code style * info-daemon/NetworkManagerInfoDbus.c: - Use the more aptly-named path/service/interface constants from NetworkManager - Don't return empty strings ("") as object paths ever, instead return errors * panel-applet/NMWirelessApplet.c: - Clean up Seth's code style * src/NetworkManager.[ch] - (nm_remove_device_from_list): remove anything having to do with pending_device - (main, nm_print_usage): change --daemon=[yes|no] -> --no-daemon * src/NetworkManagerAPList.[ch] - Move Iter struct right above the iter functions to preserve opacity - (nm_ap_list_remove_ap): implement - (nm_ap_list_update_network): deal with errors returned from nm_dbus_get_network_priority(), remove AP if NetworkManagerInfo doesn't know anything about it - (nm_ap_list_diff): user NMAPList iterators - (nm_ap_list_print_members): implement debugging function * src/NetworkManagerDbus.[ch] - (nm_dbus_nm_get_active_device): remove anything to do with pending_device - (nm_dbus_get_user_key_for_network): remove DBusPendingCall stuff (unused), and move the actual key setting stuff into NetworkManagerDevice.c - (nm_dbus_get_network_priority): return -1 now on errors - (nm_dbus_nmi_filter): fix strcmp() error that caused PreferredNetworkUpdate signals to get lost, and force the active device to update its "best" ap when AP lists change - (nm_dbus_nm_message_handler): Update conditions for returning "connecting" for a "status" method call due to pending_device member removal * src/NetworkManagerDevice.[ch] - Move NMDevice structure to the top - Add a wireless scan mutex and a best_ap mutex to the Wireless Options structure - Remove Pending Action stuff from everywhere - (nm_device_activation_*): We now "begin" activation and start a thread to do the activation for us. This thread blocks until all conditions for activation have been met (ie for wireless devices, we need a valid WEP key and a "best" ap), and then setup up the interface and runs dhclient. We have to do this because there is no guaruntee how long dhclient takes, and while we are blocking on it, we cannot run our main loop and respond to dbus method calls or HAL device removals/inserts - (nm_device_set_user_key_for_network): Move logic here from NetworkManagerDbus.c so we can tell nm_device_activation_worker() that we've got a key - (nm_device_*_best_ap): lock access to best_ap member of Wireless Options structure - (nm_device_get_path_for_ap): dumb it down so the list doesn't lock against itself when diffing (AP appear/disappear signal functions make sure the AP is actually in the device's list) - (nm_device_update_best_ap): move logic from nm_wireless_is_ap_better() here * src/NetworkManagerPolicy.c - Remove anything to do with pending_device - Adjust device activation to deal with activation-in-worker-thread * src/NetworkManagerUtils.c - Clean up locking debugging a bit * src/NetworkManagerWireless.[ch] - (nm_wireless_is_ap_better): remove, stick logic in nm_device_update_best_ap(). This function was badly named and is better as a device function * panel-applet/.cvsignore: add git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@46 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-11 18:14:02 +00:00
else if (strcmp (opt, "no-daemon") == 0)
become_daemon = FALSE;
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
else if (strcmp (opt, "enable-test-devices") == 0)
enable_test_devices = TRUE;
break;
default:
nm_print_usage ();
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
exit (EXIT_FAILURE);
break;
}
}
g_type_init ();
if (!g_thread_supported ())
g_thread_init (NULL);
openlog ("NetworkManager", (become_daemon) ? LOG_CONS : LOG_CONS | LOG_PERROR, (become_daemon) ? LOG_DAEMON : LOG_USER);
syslog (LOG_NOTICE, "starting...");
nm_system_init();
/* Load all network device kernel modules.
* NOTE: this hack is temporary until device modules get loaded
* on startup by something else. The problem is that unless
* the module is loaded, HAL doesn't know its a network device,
* and therefore can't tell us about it.
*/
nm_system_load_device_modules ();
/* Initialize our instance data */
2004-08-31 Dan Williams <dcbw@redhat.com> * Remove 'debug' extern global from all files since we now use syslog() * src/NetworkManager.[ch] - Break out routine that get the net.interface property from HAL, removing that logic from nm_create_device_and_add_to_list() - (nm_create_device_and_add_to_list): make this a bit more general so it doesn't do the talking to HAL. Also add arguments to facilitate the create of test devices. - (nm_data_mark_state_changed): rename from nm_data_set_state_modified() - (nm_data_new, main, nm_print_usage): add new argument "--enable-test-devices" which makes NetworkManager listen for dbus commands to create test devices, which have no backing hardware. Use when you're on a plane for example, and/or forgot your wireless card at home. Test devices _cannot_ be created unless NM is started with --enable-test-devices. * src/NetworkManagerDbus.[ch] - New "getLinkActive" method for devices - New "setLinkActive" method for devices (only works on test devices) - New "createTestDevice" method on NetworkManager object to create a test device of a specified type (ie wired, wireless). UDI is created from scratch, as is the interface name. Only works when NM is started with --enable-test-devices switch. - New "removeTestDevice" method on NetworkManager object which removes a test device. Only works when NM is started with --enable-test-devices * src/NetworkManagerDevice.[ch] - Logic to facilitate test devices. Add variables to NMDevice struct to indicate whether a device is a test device or not, and what its link status is. - Deal with test devices in most functions. For those that work directly on hardware special-case test devices. - (nm_device_new): don't create a test device if test devices weren't enabled on the command-line. - (nm_device_update_link_active): split out logic for wired and wireless device link checking to separate functions to facilitate test device link checking. - (nm_device_set_enc_key): Since some drivers for wireless cards are daft and don't make a distinction between System Authentication and Encryption (namely Cisco aironet), we use Open System auth when setting a WEP key on the card. We don't deal with Shared Key auth yet. - (nm_device_activation_worker): split the activation cancel check logic out into a separate routine nm_device_activation_cancel_if_needed() - (nm_device_activation_signal_cancel): rename from nm_device_activation_cancel() - (nm_device_fake_ap_list): Test wireless devices obviously cannot scan, so create a list of fake access points that they can "see" - (nm_device_is_test_device): return whether or not a device is a test device * src/NetworkManagerPolicy.c - (nm_policy_get_best_device): attempt to deal with wireless network selection, previously if you "locked"/forced NM to use a wireless device but then selected a wireless network for NM to use, it would switch to a wired device. So, if the active device is wireless and it has a "forced" best AP, use it if the "forced" best AP is still valid - (nm_state_modification_monitor): deal with NULL best devices, for example there were no usable network devices, or the last one was removed * src/backends/NetworkManager*.c - Deal with test devices, mostly just return success for operations like getting a DHCP address * test/nmtestdevices.c - Test tool to create/remove/link-switch test devices git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@112 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-31 16:09:15 +00:00
nm_data = nm_data_new (enable_test_devices);
if (!nm_data)
{
syslog( LOG_CRIT, "nm_data_new() failed... Not enough memory?");
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
exit (EXIT_FAILURE);
}
/* Create our dbus service */
nm_data->dbus_connection = nm_dbus_init (nm_data);
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
if (!nm_data->dbus_connection)
{
syslog( LOG_CRIT, "nm_dbus_init() failed, exiting");
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
hal_shutdown (nm_data->hal_ctx);
nm_data_free (nm_data);
exit (EXIT_FAILURE);
}
nm_data->info_daemon_avail = nm_dbus_is_info_daemon_running (nm_data->dbus_connection);
nm_data->update_ap_lists = TRUE;
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Initialize libhal. We get a connection to the hal daemon here. */
if ((ctx = hal_initialize (&hal_functions, FALSE)) == NULL)
{
syslog( LOG_CRIT, "hal_initialize() failed, exiting... Make sure the hal daemon is running?");
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
exit (EXIT_FAILURE);
}
nm_data->hal_ctx = ctx;
hal_ctx_set_user_data (nm_data->hal_ctx, nm_data);
hal_device_property_watch_all (nm_data->hal_ctx);
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Grab network devices that are already present and add them to our list */
nm_add_initial_devices (nm_data);
/* We run dhclient when we need to, and we don't want any stray ones
* lying around upon launch.
*/
nm_system_kill_all_dhcp_daemons ();
/* Bring up the loopback interface. */
nm_system_enable_loopback ();
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Create a watch function that monitors cards for link status (hal doesn't do
* this for wireless cards yet).
*/
link_source = g_timeout_add (5000, nm_link_state_monitor, nm_data);
/* Another watch function which handles networking state changes and applies
* the correct policy on a change.
*/
policy_source = g_timeout_add (500, nm_state_modification_monitor, nm_data);
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Keep a current list of access points */
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
wireless_scan_source = g_timeout_add (10000, nm_wireless_scan_monitor, nm_data);
if (become_daemon)
{
int child_pid;
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
if (chdir ("/") < 0)
{
syslog( LOG_CRIT, "NetworkManager could not chdir to /. errno=%d", errno);
return (1);
}
child_pid = fork ();
switch (child_pid)
{
case -1:
syslog( LOG_ERR, "NetworkManager could not daemonize. errno = %d", errno );
break;
case 0:
/* Child */
break;
default:
exit (EXIT_SUCCESS);
break;
}
}
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Wheeee!!! */
loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
syslog (LOG_NOTICE, "exiting");
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
/* Kill the watch functions */
g_source_remove (link_source);
g_source_remove (policy_source);
g_source_remove (wireless_scan_source);
/* Cleanup */
if (hal_shutdown (nm_data->hal_ctx) != 0)
syslog (LOG_NOTICE, "libhal shutdown failed");
nm_data_free (nm_data);
2004-08-02 Dan Williams <dcbw@redhat.com> * TODO - new task: proper logging support * info-daemon/NetworkManagerInfo.c - Correct spelling of "canceled" - Correct casting of objects for g_signal_connect() * info-daemon/NetworkManagerInfoDbus.c - Add defines for NetworkManager namespace and object path, and use them - Add filter function to trap new signals from NetworkManager: WirelessNetworkAppeared, WirelessNetworkDisappeared * info-daemon/passphrase.glade - Change name of "ok" button to "Login to Network..." - Mark invisible * src/NetworkManager.c - Code and debug message cleanups - Rename "nm_add_current_devices"->"nm_add_initial_devices" - (nm_add_initial_devices) Check returned string array of devices and don't try to add devices if array is NULL - (main) Initialize libhal a bit later, make code a bit clearer * src/NetworkManagerAP.[ch] - New accessor and data member "matched": used to speed up AP list diffing - New accessor and data member "enc_method": will be used during key fallback to cache which passphrase->key conversion actually works so we don't have to do it every time * src/NetworkManagerAPList.[ch] - (nm_ap_list_find_ap_in_list) New: find an AP by essid in an AP list - (nm_ap_list_diff) New: given two lists of access points, find the differences between them, and send WirelessNetworkAppeared/Disappeared signals over dbus in response to those differences * src/NetworkManagerDbus.[ch] - (nm_dbus_get_object_path_from_ap) New: given a device and an access point, make an object path for that access point (NOTE that we don't yet check to make sure that access point is actually in the device's AP list yet) - (nm_dbus_get_ap_from_object_path) Renamed from nm_dbus_get_network_from_object_path - (nm_dbus_signal_wireless_network_appeared, nm_dbus_signal_wireless_network_disappeared) New: signal appearance/disappearance of wireless networks - (nm_dbus_set_user_key_for_network) Mark the network/ap as invalid if the user cancelled key entry * src/NetworkManagerDevice.[ch] - (nm_device_ap_list_clear) Use nm_ap_list_free rather than doing it ourselves - (nm_device_ap_list_get) New: return the AP list (static function) - (nm_device_do_normal_scan) Destroy old AP list later, so that we can diff the new one resulting from the scan with the old one * src/NetworkManagerWireless.c - (nm_wireless_is_most_prefered_ap) "invalid" access points cannot be "best" access points * test/nminfotest.c - #define object paths and namespaces and use the #defines rather than static strings - Test out user-key functionality of NetworkManagerInfo too git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@33 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-02 21:12:40 +00:00
return (0);
}