Commit graph

14 commits

Author SHA1 Message Date
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
Dan Williams
a5dd14c305 2005-04-27 Dan Williams <dcbw@redhat.com>
* Merge the applet and the info-daemon, and move the converged
                applet under gnome/applet
        * Move libnm_glib to gnome/libnm_glib
        * Convert most dbus calls between the applet, info-daemon, and NM
                into async calls
        * Fix a few things valgrind noticed
        * Make NM broadcast state more reliably


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@586 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-04-27 18:05:16 +00:00
Dan Williams
7337e8132a 2005-04-15 Dan Williams <dcbw@redhat.com>
Patches from Tom Parker:
	- Fix memleaks
	- Join with worker thread rather than polling for its exit

	Patch from Bill Moss:
	- Cull duplicate ESSIDs from the scan list, taking highest strength AP


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@573 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-04-15 20:00:28 +00:00
Dan Williams
044014b1be 2005-04-04 Dan Williams <dcbw@redhat.com>
* panel-applet/NMWirelessAppletDbus.c
		- (nmwa_dbus_call_nm_method): remove some commented code

	* src/NetworkManagerAPList.[ch]
		- (nm_ap_list_remove_ap_by_essid): new function

	* src/NetworkManagerDevice.c
		- (nm_device_wireless_force_use): remove access points from the ignore list
			when the user forces them

	* src/nm-dbus-device.c
		- (nm_dbus_device_get_active_network): fix up escaping of object paths


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@557 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-04-04 21:24:58 +00:00
Dan Williams
bbbd00d4c5 2005-02-27 Dan Williams <dcbw@redhat.com>
* panel-applet/NMWirelessApplet.[ch]
	  panel-applet/NMWirelessAppletDbus.[ch]
		- Move to incremental network updates.  Instead of blowing away our list
			of devices every time we get a signal from NetworkManager, we now
			incrementally add/remove networks when NetworkManager notifies us that
			a new network has appeared or disappered.  Strength updates now happen
			on-the-fly for each access point as well.  There are now two copies of
			data from NetworkManager: one for the dbus side, and one for the gui side.
			When the dbus side data is modified, it is copied over to the gui side
			so we don't have to hold the data_mutex for long periods of time (and
			therefore block animation of the applet's icon).
		- Clean up some memleaks too

	* panel-applet/NMWirelessAppletOtherNetworkDialog.c
		- Minor code beautification

	* src/NetworkManagerAPList.c
		- (nm_ap_list_merge_scanned_ap): return whether or not the access point is
			completely new and whether or not an existing one's strength was updated.
			Try to fix multiple access points and signal strength by using the highest
			signal strength in each scan for any given ESSID.

	* src/NetworkManagerDbus.[ch]
		- (nm_dbus_signal_wireless_network_change): consolidate signals that deal with
			wireless networks; now we have only WirelessNetworkUpdate which includes
			a UINT32 for Appeared, Disappeared, or StrengthChanged (see NetworkManager.h).
		- Kill usage of DbusMessageIter

	* src/NetworkManagerDevice.c
		- (nm_device_wireless_process_scan_results): Use the same timestamp for all APs
			in the same scan result list.  Copy ESSIDs-by-address earlier on, for each
			AP rather than all-at-once.  Also don't ever remove the AP a card is
			currently associated with from the network list.
		- Update for new signals during scan, send out Appeared, Disappeared, or
			StrengthChanged when necessary.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@477 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-02-27 06:11:16 +00:00
Dan Williams
c9b41bb448 2005-01-18 Dan Williams <dcbw@redhat.com>
* dhcpcd/client.c
		- Remove some debug messages
		- Wrap others in #ifdef DEBUG/#endif

	* src/NetworkManager.c
		- Remove some debug messages
		- Clarify some debug messages
		- Remove code related to old single-thread wireless scanning

	* src/NetworkManagerAP.[ch]
		- New AP property "last_seen" to track how recently an AP was
			found in a scan
		- Start using 'const' more in function arguments

	* src/NetworkManagerAPList.[ch]
		- (nm_ap_list_merge_scanned_ap): new, selectively update attributes
			of an AP found in an AP list from a source AP, or if not found
			in the list add the source AP
		- (nm_ap_list_combine): remove, no longer needed

	* src/NetworkManagerDevice.c
		- Each device now has a "worker" thread from start to end of its life.
			Scanning for wireless devices now happens in that thread,
			not in a single "wireless scanning thread" for all devices as
			previously.  Activation consists of adding an idle handler to the
			thread's main loop/context, which gets run at the next available
			opportunity.
		- Wireless scanning is also simplified, there is now only one list of
			access points per wireless device, and APs older than 60s are
			removed from the list.  Previously, we kept results for the last
			3 scans and merged whole lists, which was complicated.
		- Cleaned up activation debug messages.
		- Wireless activation and access-point search routines now use Open System
			authentication before trying Shared Key.
		- Removed some code in nm_device_update_best_ap() that could cause cards
			to loose their link to the access point.
		- Scanning now uses a backoff algorithm, where the inverval becomes
			progressively longer between scans when the list of scanned access
			points doesn't change.  A change will revert to the shortest scan
			interval (20s).

	* src/NetworkManagerWireless.[ch]
		- Remove code related to old single-thread wireless scanning


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@382 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-01-18 22:08:22 +00:00
Dan Williams
faae8945db 2004-10-21 Dan Williams <dcbw@redhat.com>
* NetworkManager.h
		- New file, now contains commonly used structures and bits
			for the dbus API of NetworkManager

	* Makefile.am
		- Deliver NetworkManager.h to ${includedir}/NetworkManager

	* src/NetworkManager.h
		- Rename -> src/NetworkManagerMain.c

	* Various fixups all around to use NetworkManager.h and new
		src/NetworkManagerMain.h, remove redundant bits that got
		moved into NetworkManager.h

	* src/NetworkManagerDevice.[ch]
	  src/NetworkManagerUtils.[ch]
	  src/NetworkManagerPolicy.c
	  src/NetworkManagerDbus.c
		- Whitelist wireless drivers, and blacklist some wired
			drivers.  Also blacklist cipsec and ethernet-over-usb
			devices at this time (RH #135722, RH #135648)
		- Don't leak unsupported devices out over dbus, or allow
			them to be set as the active device.  Skip over them
			during automatic device picking

	* test/nmclienttest.c
		- Clean up the dbus code a lot


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@261 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-21 17:42:14 +00:00
Robert Paskowitz
3ad9d0615c 2004-10-13 Dan Williams <dcbw@redhat.com>
* panel-applet/NMWirelessApplet.c
		- Add function to print out applet_state in a readable
			manner

	* src/NetworkManager.c
		- (main): Don't segfault when nm_dbus_init() fails, we had
			a left-over call to hal_shutdown() into which we passed NULL

	* src/NetworkManagerAP.c
		- (nm_ap_set_essid): Allow NULL essids

	* src/NetworkManagerAPList.[ch]
		- More use of nm_ap_list_[un]lock ()
		- (nm_ap_list_get_ap_by_essid): don't warn when looking for a NULL
			network/essid, just return nothing.  Also skip over NULL
			essid access points in the list when searching
		- (nm_ap_list_get_ap_by_address): new function
		- (nm_ap_list_update_network): set the access point's key source to
			NULL when the key returned from NetworkManagerInfo is NULL or
			of 0 length
		- nm_ap_list_update_keys() -> nm_ap_list_update_properties(), and
			copy timestamp over too
		- (nm_ap_list_copy_essids_by_address): new function, attempt to
			find the correct ESSID for a blank-essid access point by searching
			through another list and matching access point MAC addresses
		- (nm_ap_list_diff): exclude blank-essid access points from the diffs

	* src/NetworkManagerDbus.c
		- (nm_dbus_nm_set_active_device): deal with random networks the user
			may specify.  This is mainly for access points that don't
			broadcast their essid.  So if the user tells us to associate with
			some random ESSID that's not in our access point list, we find
			out if the access point does in fact exist (by attempting association
			and then matching that access point's MAC address with the essid the
			user gave us) and then we switch to it.
		- (nm_dbus_devices_handle_request): don't add blank-essid access points
			to the returned list of networks for the "getNetworks" method

	* src/NetworkManagerDevice.[ch]
		- Extra debugging info for link detection
		- (nm_device_ap_list_get_ap_by_address): new function, return an AP
			based on MAC address
		- (nm_device_get_path_for_ap): ignore blank-essid access points
		- (nm_device_wireless_network_exists): new function, find out whether
			a random ESSID exists by attempting to associate with it
		- (nm_device_do_normal_scan): allow blank-essid access points in our
			device list as long as they have an AP MAC address we can use.
			Also send WirelessNetwork[Dis]Appeared signals for non-active
			devices too.  Lets the applet update more frequently.

	* src/backends/NetworkManagerGentoo.c
		- Patch from: Robert Paskowitz
			- Update backend code for Gentoo
			- Implement nm_system_device_update_config_info ()

	* test/nmclienttest.c
		- (set_network_device): new function, takes a command-line argument
			and tells NetworkManager to use that wireless network


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@222 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-13 20:57:23 +00:00
Dan Williams
6b4bfea2de 2004-10-11 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerAP.c
		- (nm_ap_new, nm_ap_new_from_ap): Don't crash when we don't have
			enough RAM to allocate new AP structures, but return NULL instead

	* src/NetworkManagerAPList.[ch]
		- (nm_ap_list_is_empty): new function
		- (nm_ap_list_combine): new function, combine two access point lists
		- (nm_ap_list_copy_keys): new function, copy keys from one list
			into another

	* src/NetworkManagerDevice.[ch]
		- Rename some functions to be clearer:
			nm_device_get_best_ap_frozen -> nm_device_is_best_ap_frozen
			nm_device_just_activated     -> nm_device_is_just_activated
			nm_device_activating         -> nm_device_is_activating
			nm_device_now_scanning       -> nm_device_is_scanning
		- Cache the last 4 scans so that the access point list is more stable.
			We combine the lastest two scans and use that as the AP list,
			and diff that combined list against the combination of the earliest
			two cached scans for the WirelessNetworkAppeared/Dissappeared signals


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@210 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-11 21:32:19 +00:00
Dan Williams
b0d1e68dd4 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
Dan Williams
d06aa3e6ff 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
Dan Williams
f76484abc3 2004-08-05 Dan Williams <dcbw@redhat.com>
* An assload of changes


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@34 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-05 18:54:29 +00:00
Dan Williams
3151e9092e 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
Dan Williams
814cfbc5fc 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