Clean up activation cancellation. Should be a lot faster now. Observed
an issue with wireless devices between stage 2 and 3 of activation, where
activation would be cancelled, but the device thread wouldn't notice until
the supplicant association timed out. Reorganize activation such that
a cancellation handler gets immediately scheduled in the device's thread,
and devices have a chance to perform any custom cleanup too.
* src/nm-device.[ch]
- (activation_cancel_handler): new device-type-specific function
for cleaning up device-type-specific stuff on cancellation
- (cancel_activation): removed
- (nm_device_activation_cancel): subsume functionality of
real_cancel_activation, but instead of doing anything, punt
operation to a handler that's run in device-thread context
- (nm_device_schedule_activation_handle_cancel): fix spelling of
a warning message
- (activation_handle_cancel_helper): cancellation handler run in
device-thread context, calls device-type-specific cancelation,
then tears down the activation request
- (real_activation_cancel_handler): generic cancellation handler,
deals with cancelling any in-process DHCP request
- (nm_device_activate_stage1_device_prepare,
nm_device_activate_stage2_device_config,
nm_device_activate_stage3_ip_config_start,
nm_device_activate_stage4_ip_config_get,
nm_device_activate_stage4_ip_config_timeout,
nm_device_activate_stage5_ip_commit): don't call
nm_device_schedule_activation_handle_cancel() any more, since
cancellation will have been already scheduled for us by
nm_device_activation_cancel(). Just exit the function and
assume that the cancel handler will be called next.
* src/nm-device-802-3-ethernet.c
- (real_act_stage2_config): remove; didn't do anything anyway
* src/nm-device-802-11-wireless.c
- (supplicant_status_cb): ensure we don't do anything if the activation
got cancelled
- (real_activation_cancel_handler): implement; cancel user key request
on activation cancellation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1549 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/NetworkManagerAP.[ch]
- (nm_ap_get_matched, nm_ap_set_matched): remove
* src/NetworkManagerAPList.[ch]
- (nm_ap_list_diff): removed
- (nm_ap_list_merge_scanned_ap): move AP dbus signal logic here,
deal with access points changing essids on us
* src/nm-device-802-11-wireless.c
- (add_new_ap_to_device_list): move AP dbus signal logic to
src/NetworkManagerAPList.c
- (real_can_interrupt_activation): new function; allow interruption
of device activation if we are waiting for a network key
* src/NetworkManagerPolicy.c
- (nm_policy_device_change_check): allow interruption of currently
activating devices if the device allows it. Previous behavior
would refuse to activate a just-plugged wired device if a
wireless device was waiting for a key.
* src/nm-device.[ch]
- (nm_device_can_interrupt_activation): new function; ask devices
whether their activation can be interrupted
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1375 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device.c
src/nm-device.h
- Allow subclasses to implement deactivate_quickly()
- (nm_device_deactivate_quickly): call subclass
deactivate_quickly() methods
- (nm_device_set_active_link): small cleanups, and don't
deactivate the device right away because we risk a deadlock
when called from device thread, waiting for the device
thread to cancel activation
* src/nm-device-802-11-wireless.c
- (real_deactivate_quickly): new function
- (nm_device_802_11_wireless_class_init): hook in real_deactivate_quickly
- (real_deactivate): move supplicant cleanup to real_deactivate_quickly
so that we kill the supplicant when we sleep too
- (supplicant_interface_init): work around naive naming attempts of
wpa_ctrl when naming sockets
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1326 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/nm-device-802-11-wireless.c
src/nm-device.[ch]
- Add hooks to subclasses for stage3_ip_config_start and
stage4_ip_config_timeout
* src/nm-device-802-3-ethernet.c
- (real_get_generic_capabilities): make devices NM-supported
by default
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1251 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* src/NetworkManager.c
- Move link-checking/probing into the device subclasses
themselves
* src/nm-device.[ch]
src/nm-device-802-11-wireless.c
src/nm-device-802-3-ethernet.c
- Do periodic link checking in device subclasses rather
than being triggered from NetworkManager.c
- discover_wireless_capabilities -> get_wireless_capabilities
- discover_generic_capabilities -> get_generic_capabilities
- Device subclass activation routines now return a value of type
NMActStageReturn to indicate what step to perform next
- Devices now override stage4_get_ip4_config if they choose
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1249 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
* refactor NMDevice into a GObject-based framework with separate
objects for wired and wireless. The following files are no
longer used but should stick around for a bit so we don't
loose code through the cracks:
NetworkManagerDevice.c
NetworkManagerDevice.h
NetworkManagerWireless.c
NetworkManagerWireless.h
The intent here is to allow each device type to manage its own
connection & activation life-cycle, ie to allow wireless devices
to interface with wpa_supplicant, etc. There's a fair bit of
encapsulation breakage right now that should gradually get pulled
back into each device, along with things like periodic property
updates and link probing.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1244 4912f4e0-d625-0410-9fb7-b9a5a253dbdc