Commit graph

9 commits

Author SHA1 Message Date
Dan Williams
a5919b696c 2006-03-05 Dan Williams <dcbw@redhat.com>
Process netlink messages in device subclasses rather than in
	NetworkManager.c.  Also add support for recognizing Wireless Events.

	* configure.in
		- Find GLIB_GENMARSHAL

	* src/Makefile.am
		- Since we're marshalling custom types for wireless event signals,
			we get to create our own marshallers using GLIB_GENMARSHAL

	* src/NetworkManager.c
		- (nm_monitor_wired_link_state): renamed to nm_monitor_setup
		- (nm_monitor_setup): renamed from nm_monitor_wired_link_state, and
			cut down somewhat.  We no longer process signals here.
		- (nm_data_new): create the netlink monitor here, and remove a
			useless call to nm_policy_schedule_device_change_check()
		- (nm_data_free): get rid of the netlink monitor here
		- (nm_device_link_activated, nm_device_link_deactivated): removed
		- (main): don't create the netlink monitor here, let nm_data_new
			do that.  Call nm_policy_schedule_device_change_check() right
			before we jump to the mainloop to figure out which device
			to use first

	* src/NetworkManagerSystem.[ch]
		- (nm_system_get_rtnl_index_from_iface, nm_system_get_iface_from_rtnl_index):
			convert back and forth from interface names to interface
			indexes

	* src/nm-device-802-11-wireless.c
		- (real_init): connect to wireless-event signals from the netlink
			monitor object
		- (nm_device_802_11_wireless_event): new function, schedule handler
			for wireless event signals from the netlink monitor object.  We
			want the handler to run in the device's context
		- (wireless_event_helper): handle wireless-event signals from netlink
		- (nm_device_802_11_wireless_dispose): disconnect wireless-event
			signal handler

	* src/nm-device-802-11-wireless.h
		- remove unused prototype for nm_device_802_11_wireless_new

	* src/nm-device-802-3-ethernet.c
		- (real_init): new function; set up signal handlers for link events
		- (nm_device_802_3_ethernet_link_activated): new function, schedule
			handler for netlink link activated events on device's main loop
		- (link_activated_helper): when we get a link activated event, set
			the device's link to be active
		- (nm_device_802_3_ethernet_link_deactivated): new function; schedule
			handler for netlink link deactivated events on device's main loop
		- (link_deactivated_helper): when we get a link deactivated event, set
			the device's link to be inactive
		- (nm_device_802_3_ethernet_dispose): disconnect signal handler on
			dispose

	* src/nm-device-802-3-ethernet.h
		- remove unused prototype for nm_device_802_3_ethernet_new

	* src/nm-device.[ch]
		- (nm_get_device_by_iface_locked): variant of nm_get_device_by_iface
			but locks the device list
		- (nm_device_set_active_link): a little bit of cleanup and de-indenting

	* src/nm-netlink-monitor.[ch]
		- (nm_netlink_monitor_class_install_signals): New signal
			"wireless-event"
		- (nm_netlink_monitor_new): keep reference to NMData so we can get
			at the device list
		- (nm_netlink_monitor_event_handler): expand for wireless events too

	* src/nm-marshal-main.c
		- Include generated nm-marshal.c and nm-marshal.h

	* src/nm-marshal.list
		- List of custom marshal functions


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1555 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-03-06 01:10:58 +00:00
Dan Williams
ef9674ce75 2006-03-04 Dan Williams <dcbw@redhat.com>
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
2006-03-04 06:44:05 +00:00
Dan Williams
2864ede525 2006-01-22 Dan Williams <dcbw@redhat.com>
* 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
2006-01-22 22:40:14 +00:00
Dan Williams
8b1b8ee7a5 2006-01-13 Dan Williams <dcbw@redhat.com>
* 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
2006-01-13 16:53:55 +00:00
Dan Williams
becb92ea92 Remove unused prototype
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1287 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-01-08 03:19:49 +00:00
Dan Williams
7f07df2466 2006-01-03 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerPolicy.c
	  src/nm-device.[ch]
	  src/nm-device-802-11-wireless.c
		- Move wireless-specific activation failure and success code
			into wireless device class


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1259 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2006-01-03 22:11:35 +00:00
Dan Williams
d242edf282 2006-1-3 Dan Williams <dcbw@redhat.com>
* 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
2006-01-03 17:47:38 +00:00
Dan Williams
d639dbeac0 2006-1-3 Dan Williams <dcbw@redhat.com>
* 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
2006-01-03 17:07:07 +00:00
Dan Williams
4ed4b491fa 2005-12-31 Dan Williams <dcbw@redhat.com>
* 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
2005-12-31 08:21:24 +00:00