Commit graph

30 commits

Author SHA1 Message Date
Christopher Aillon
fd92ca40d8 2005-09-15 Christopher Aillon <caillon@redhat.com>
* src/NetworkManagerAP.c:
	* src/NetworkManagerAP.h:
	* src/NetworkManagerDevice.c:
	Set a blacklist for certain common manufacturer default ESSIDs:
	APs with these ESSIDs are extremely likely to be completely
	different networks: connecting to one should not make NM
	auto-connect to every other AP with the same default ESSID.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@963 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-09-15 14:47:17 +00:00
Dan Williams
438d37f1c8 2005-08-04 Dan Williams <dcbw@redhat.com>
* gnome/applet/applet-dbus-info.c
	  gnome/applet/applet-dbus-info.h
		- (nmi_dbus_update_network_auth_method->nmi_save_network_info): generalize
			to store key, key type, and auth method rather than just auth method
		- (nmi_dbus_update_network_info): new function
		- (nmi_dbus_info_message_handler): updateNetworkAuthMethod -> updateNetworkInfo

	* gnome/applet/passphrase-dialog.c
		- (nmi_passphrase_dialog_ok_clicked): call nmi_save_network_info() instead
			of saving the info ourselves

	* gnome/libnm_glib/libnm_glib.c
		- Remove the stupid version check for dbus

	* src/NetworkManagerAP.c
	  src/NetworkManagerAP.h
		- (nm_ap_get_enc_key_source): return 'const char *' rather than 'char *'

	* src/NetworkManagerDbus.c
	  src/NetworkManagerDbus.h
		- (nm_dbus_update_network_auth_method -> nm_dbus_update_network_info): Update
			more than just the auth method

	* src/NetworkManagerDevice.c
		- Update network info at the appropriate times


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@817 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-08-04 11:37:51 +00:00
Dan Williams
567b5e3d31 2005-05-03 Dan Williams <dcbw@redhat.com>
* Kill dhcpcd.  We now use "dhcdbd", a dbus daemon that controls dhclient.
	  This means that NetworkManager shouldn't have DHCP issues anymore.  It also
	  means you need dhcdbd, which you can get here (get the latest one):

		http://people.redhat.com/jvdias/dhcdbd/

	  Technically NetworkManager can use any DHCP daemon that uses the same DBUS
	  interface as dhcdbd.

	* Rewrite device activation to facilitate the new DHCP infrastructure and
	  future improvements.  Its now "activation request" based, ie there is a single
	  activation request composed of the device, access point, and other info which
	  follows the entire activation process.  There are 5 stages of the activation
	  process which correspond to:

		1) Device preparation
		2) Device configuration (bring it up, set ESSID/Key/etc)
		3) IP Config Start (fire off DHCP if we're using it)
		4) IP Config Get (grab config from DHCP or static config files)
		5) IP Config Commit (set device's IP address, DNS, etc)

	  Note that there is no longer a "scanning" step, since the access point must
	  be known _before_ activation starts.  If the access point drops out or does
	  not exist for some reason, the entire activation process fails and must be
	  restarted for a different access point or device.

	Patch from Bill Moss:
	* gnome/applet/applet.c
		- Fix type of vpn_failure dialog -> vpn_banner dialog


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@597 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-05-03 20:41:36 +00:00
Ray Strode
278e500f99 2005-03-14 Ray Strode <rstrode@redhat.com>
Fourth (probably working) cut at porting to
	dbus 0.30 api and new hal. This cut adds
	some new logging macros to make debugging
	easier.

	* dispatcher-daemon/NetworkManagerDispatcher.c:
	* info-daemon/NetworkmanagerInfo.c:
	* info-daemon/NetworkManagerInfoPassphraseDialog.c:
	* info-daemon/NetworkManagerInfoVPN.c:
	* src/NetworkManager.c:
	* src/NetworkManagerAP.c:
	* src/NetworkManagerAPList.c:
	* src/NetworkManagerDHCP.c:
	* src/NetworkManagerDbus.c:
	* src/NetworkManagerDevice.c:
	* src/NetworkManagerPolicy.c:
	* src/NetworkManagerSystem.c:
	* src/NetworkManagerUtils.c:
	* src/NetworkManagerWireless.c:
	* src/autoip.c:
	* src/nm-dbus-nm.c:
	* src/backends/NetworkManagerDebian.c:
	* src/backends/NetworkManagerGentoo.c:
	* src/backends/NetworkManagerRedHat.c:
	* src/backends/NetworkManagerSlackware.c:
	use new logging macros.

	* dispatcher-daemon/NetworkManagerDispatcher.c:
	(nmd_dbus_filter): s/dbus_free/g_free/

	* info-daemon/Makefile.am: link in utils library.
	* info-daemon/NetworkmanagerInfo.c: use new logging
	macros.
	(nmi_dbus_get_network): don't assume enumerations
	are 32-bit.
	(nmi_dbus_nmi_message_handler): don't free what
	doesn't belong to us.

	* libnm_glib/libnm_glib.c:
	(libnm_glib_get_nm_status):
	(libnm_glib_init): don't free what doesn't
	belong to us.
	(libnm_glib_dbus): strdup result, so it doesn't get
	lost when message is unref'd.

	* panel-applet/NMWirelessAppletDbus.c:
	(nmwa_dbus_update_devices): s/dbus_free/g_free/

	* src/NetworkManager.c:
	(nm_monitor_wired_link_state): request initial status
	dump of all cards when we start up, instead of relying
	on /sys/.../carrier.
	(nm_info_handler), (nm_set_up_log_handlers):
	log handlers to specify what syslog priorites
	the logging macros default to.

	* src/NetworkManagerAPList.c:
	(nm_ap_list_populate_from_nmi):
	s/dbus_free_string_array/g_strfreev/

	* src/NetworkManagerDbus.c:
	(nm_dbus_get_network_object):
	validate d-bus message argument types.
	Advance message iterator after reading argument,
	prepend instead of append to GSList.

	* src/NetworkManagerDevice.c:
	(nm_device_probe_wired_link_status):
	remove redundant /sys in /sys path. remove wrong
	contents == NULL means has carrier assumption.

	* src/nm-netlink-monitor.c
	(nm_netlink_monitor_request_status): implement
	function to ask kernel to dump interface link
	status over netlink socket.

	* test/*.c: s/dbus_free/g_free/

	* utils/nm-utils.h:
	(nm_print_backtrace): new macro to print backtrace.
	(nm_get_timestamp): new macro to get sub-second precise
	unix timestamp.
	(nm_info), (nm_debug), (nm_warning), (nm_error):
	new logging functions. nm_info just prints,
	nm_debug includes timestamp and function,
	nm_warning includes function, nm_error includes
	backtrace and sigtrap.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@497 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-15 05:30:15 +00:00
Dan Williams
a8dfb489fb 2005-03-04 Dan Williams <dcbw@redhat.com>
Patch from Peter Jones:
	- Make stuff work with gcc 4.0


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@490 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-03-04 21:25:45 +00:00
Dan Williams
a88c6427ef 2005-02-09 Dan Williams <dcbw@redhat.com>
* Clean up usage of GSList objects and looping through their members
	* Clean up DHCP rebind/renew timeouts, hopefully they will work correctly
		now.
	* Fix problem where even if scanning was turned off, card would still
		cycle through frequencies.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@423 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-02-10 04:39:40 +00:00
Dan Williams
9e154261fb 2005-01-21 Dan Williams <dcbw@redhat.com>
* Cache last-known-good wireless authentication method in
		NetworkManagerInfo, and use that method first during
		wireless device activation.  Should speed up devices that
		need Shared Key authentication method since Open System is
		now the default.

	* Remove the hack to not do full activation on wired connections
		that are active when we launch, it causes too many problems
		with name resolution and was a hack in the first place.

	* Re-work wireless device activation again somewhat to have a
		clearer chain of events and to use last-known-good
		authentication method of the access point.  Also provide
		better status throughout activation to ensure the applet
		can tell the user exactly what's going on.

	* Remove the "find wireless network" code and now simply attempt
		to activate with that access point.  This reduces the delay
		between selecting "Other wireless Network" and actually
		connecting to that network.

	* Correctly stop the device's worker thread when its removed.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@388 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2005-01-21 19:32:08 +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
e96c5c2967 2004-12-17 Dan Williams <dcbw@redhat.com>
* Ad Ad-Hoc networking mode support.  In Ad-Hoc mode, we only try to get
		link-local addresses instead of doing DHCP.

	* In the panel applet, there's a new "Create new Wireless Network..." item

	* The panel applet also sticks around now even if NetworkManager dies, but
		it doesn't hide its icon when NM isn't around.  Not hiding the icon is
		a bug, I'll fix that later.

	* We also don't use 'nscd' anymore in the RH backend, it was impeding name
		lookups after a switch rather than actually doing them.

	* Clean up some of those warnings in nm_ap_list_* functions

	* Delay between scans changed to 15s instead of 10s


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@342 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-12-17 17:16:22 +00:00
Dan Williams
cd475e6d0c 2004-12-15 Dan Williams <dcbw@redhat.com>
Patch from Tom Parker
	* Add autoip/Link Local Addressing support when we fail to get a DHCP
		address

	* Longer pause after setting ESSID on cards that support a larger number
		of channels to give the card time to find the right channel

	* Add system hook to restart mDNSResponder (or whatever the local implementation
		of Multicast DNS is) when we activate interfaces


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@341 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-12-16 04:24:20 +00:00
Dan Williams
498d3f8773 2004-11-17 Dan Williams <dcbw@redhat.com>
* Cache access point MAC addresses in NetworkManagerInfo after you've explicitly
		connected to them.  Then, after a scan, match up non-ESSID-broadcasting access
		points with any cached MAC addresses from NetworkManagerInfo.  Allows us to
		show known access points that don't broadcast their ESSID in the menus without
		any user intervention whatsoever.

	* info-daemon/NetworkManagerInfoDbus.c
		- (nmi_dbus_get_network_addresses, nmi_dbus_add_network_address): new functions
			for dbus method calls "getNetworkAddresses" and "addNetworkAddress"

	* src/NetworkManagerAP.[ch]
		- Add a "user_addresses" data member to the NMAccessPoint structure
		- (nm_ap_get_user_addresses, nm_ap_set_user_addresses): new functions for accessing
			the user_addresses data member

	* src/NetworkManagerAPList.c
		- (nm_ap_list_get_ap_by_address): check user_addresses list too, instead of just
			the AP's reported address
		- (nm_ap_list_update_network): grab the user_addresses list from NetworkManagerInfo

	* src/NetworkManagerDHCP.c
		- Increase DHCP timeout from 25s -> 30s

	* src/NetworkManagerDbus.[ch]
		- (nm_dbus_get_network_addresses, nm_dbus_add_network_address): have NMI get/set
			user addresses

	* src/NetworkManagerDevice.c
		- (nm_device_set_wireless_config): bring down the interface, wait 4s, bring it up,
			wait 2s, then configure it.  Sometimes Prism54 cards will freeze up with
			"mgnt tx queue full", seemingly in response to NM controlling the card too much.
			So, we take the card down to clear it out.
		- (nm_device_do_normal_scan): Copy over AP ESSIDs from the allowed access point list
			too, since that's where the user_addresses are

	* src/NetworkManagerPolicy.c
		- (nm_state_modification_monitor): Tell NMI to add an AP's hardware address to
			that wireless networks' user_addresses list upon successful activation


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@319 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-11-17 17:51:36 +00:00
Dan Williams
7c24f2af19 2004-11-03 Dan Williams <dcbw@redhat.com>
* panel-applet/NMWirelessAppletOtherNetworkDialog.c,
		- Disable OK button until valid data is entered
			for encryption stuff too

	* panel-applet/NMWirelessApplet.c
		- Report card strength for current AP if the card
			doesn't report strength data for scanned access
			points

	* src/NetworkManagerDevice.c
		- Smooth out cards reported quality, Atmel card was
			intermittently reporting no quality data but soon
			recovers

	* src/NetworkManagerWireless.c
		- Better quality data percentage calculation.  Atmel
			cards (mine at least) seem to report the quality
			in percentage format already, so honor that

	Patch from <j@bootlab.org>
	* NetworkManager.h
	  info-daemon/NetworkManagerInfoPassphraseDialog.c
	  info-daemon/passphrase.glade
	  panel-applet/NMWirelessAppletOtherNetworkDialog.c
	  panel-applet/essid.glade
	  src/NetworkManagerAP.c
	  src/NetworkManagerDevice.c
	  src/NetworkManagerWireless.[ch]
		- Support ASCII WEP keys, in both 40/64 bit and 104/128 bit


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@291 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-11-03 17:05:16 +00:00
Colin Walters
3c23d9c628 2004-11-01 Colin Walters <walters@verbum.org>
* src/NetworkManagerWireless.h, src/NetworkManagerWireless.c
	(nm_wireless_128bit_key_from_passphrase): Add const.

	* src/NetworkManagerAP.h, src/NetworkManagerAP.c
	(nm_ap_set_enc_key_source): Add const.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@287 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-11-02 04:54:39 +00:00
Dan Williams
6000e6f062 2004-10-27 Dan Williams <dcbw@redhat.com>
* info-daemon/NetworkManagerInfo.c
	  info-daemon/NetworkManagerInfoDbus.c
	  info-daemon/NetworkManagerInfoPassphraseDialog.c
	  panel-applet/NMWirelessApplet.c
		- Properly escape gconf keys

	* src/NetworkManager.c
		- remove unused variables

	* src/NetworkManagerAP.c
		- (nm_ap_new_from_ap): Don't redundantly set new APs
			refcount since it got set in nm_ap_new()

	* src/NetworkManagerAPList.c
		- (nm_ap_list_combine): Give up ownership of newly created
			access points to the ap list, fixes memleak

	* src/NetworkManagerDevice.c
		- Remove cached_ap_list4 member since its not really needed
		- (nm_device_wireless_network_exists): Try to get correct
			encryption status of a found AP if its already in our
			device list
		- (nm_device_do_normal_scan): Clean up scanning a bit, make
			memory allocs/deallocs a bit clearer and shorter-lived


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@275 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-27 19:02:07 +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
Dan Williams
b6a637edb4 2004-10-15 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerAP.[ch]
		- Add "artificial" get/set functions, set for APs that
			aren't discovered as part of a scan but instead
			discovered by force-setting the ESSID

	* src/NetworkManagerDevice.[ch]
		- (nm_device_wireless_network_exists): pass back whether
			or not the discovered AP was encrypted.  Also, try
			falling back to encrypted mode on the card if unencrypted
			association doesn't work
		- (nm_device_find_and_use_essid): If the network requested
			did in fact exists, but it wasn't in our scan list, add
			an "artificial" entry for it.  Some Cisco cards don't
			see non-ESSID-broadcasting APs in their scan but can still
			associate with them if you know the ESSID, this works around
			that behavior
		- (nm_device_do_normal_scan): Carry "artificial" APs over from scan
			to scan if the card is currently associated with that AP


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@244 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-15 17:04:57 +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
f39b3344c1 2004-10-08 Dan Williams <dcbw@redhat.com>
* info-daemon/NetworkManagerInfo.[ch]
	  info-dameon/NetworkManagerInfoDbus.[ch]
	  info-daemon/NetworkManagerInfoPassphraseDialog.[ch]
		- Preserve original label text in the passphrase dialog so that
			it actually gets updated with the new network name the next
			time around.  Previously, we were overwriting it so you'd get
			the wrong network name to enter a key for
		- Add a "Key Type" combo to the passphrase dialog, user selects
			encryption key type now, type is stored in GConf too
		- Adjust NM<->NMI DBUS protocol to pass the key type back to NM too

	* src/NetworkManagerAP.[ch]
		- Remove all the encyption method magic.  It's now set by the user
			and NetworkManager retrieves the type of encryption key from
			NetworkManagerInfo

	* src/NetworkManagerAPList.[ch]
	  src/NetworkManagerDbus.[ch]
		- Adjust to new way of setting encryption key and method
		- Pull encryption method down from NMI along with key

	* src/NetworkManagerDevice.[ch]
		- Removed encryption method fallback magic as the method is now
			determined by the user.  This greatly simplifies the connection
			logic.
		- More robust connection/link logic.  Besides removing the encryption
			method fallback magic, check whether or not the card is receiving
			invalidly encrypted packets, which usually indicates that we have
			a bad WEP key set.
		- Don't blindly forge ahead when DHCP fails (still not completely fixed)

	* test/nminfotest.c
		- Test out new "Key Type" stuff in the NMI passphrase dialog


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@195 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-10-08 05:22:17 +00:00
Dan Williams
ee710f0377 2004-09-13 Dan Williams <dcbw@redhat.com>
* TODO: fix typo

	* docs/NetworkManager DBUS API.txt
		- Update for new signal strength changes

	* panel-applet/NMWirelessApplet.c
		- Make panel icon show strength of the current connection
		- Cleanups and memleak fixes

	* panel-applet/NMWirelessApplet.h
		- Add data members for signal strength on devices and networks

	* panel-applet/NMWirelessAppletDbus.c
		- Free more DBusErrors
		- Update for new signal strength changes
		- Make devices and networks more like real objects, use ref/unref methods
		- Actually unlock the mutex when updating the active device

	* src/NetworkManagerAP.c
		- Change AP functions and data members from "quality"->"strength"

	* src/NetworkManagerDbus.c
		- Kill "getMaxQuality" and "getQuality" methods
		- Add "getStrength" methods for Networks and Devices

	* src/NetworkManagerDevice.[ch]
		- Add accessors for device strength
		- Add functions to update strength for a device.  Note that not all drivers
			actually support signal strength for scanned access points (Atmel drivers
			being one)
		- Calculate signal strength for each AP during scan

	* src/NetworkManagerWireless.[ch]
		- Add function to return signal strength % from a device and a raw quality struct

	* test/nmclienttest.c
		- Update for new signal strength changes


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@156 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-09-13 17:43:16 +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
4de66efbd4 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
Colin Walters
fbf832d9c3 2004-08-29 Colin Walters <walters@verbum.org>
* src/NetworkManagerDbus.c (nm_dbus_get_network_timestamp): Return
	a GTimeVal instead of time_t.  This is easier to work with,
	since time_t may be a long or double, we don't know.

	* src/NetworkManagerDbus.h: Update prototype.

	* src/NetworkManagerAP.c (struct NMAccessPoint): Store a GTimeVal
	instead of time_t.
	(nm_ap_get_timestamp): Update to return GTimeVal.
	(nm_ap_set_timestamp): Update to take GTimeVal.

	* src/NetworkManagerAPList.c (nm_ap_list_update_network): Handle
	GTimeVal change.
	(nm_ap_list_print_members): Fix warnings in printf format.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@103 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-29 05:40:32 +00:00
Dan Williams
846b78966b 2004-08-24 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerAP.[ch]
		- Add a "enc_method_good" member and accessors to an Access Point
			to signal when we've found the correct encryption method
			for an access point
		- Add a "timestamp" member and accessors, remove "priority" member
			and accessors (use timestamps instead)
		- Rename "wep_key"->"enc_key"
		- (nm_ap_get_enc_key_hashed): new, return the correct mangled key
			for a specified encryption method using the access points
			source encryption key/passphrase

	* src/NetworkManagerAPList.c
		- When updating a network with dbus, grab timestamp now instead of
			priority

	* src/NetworkManagerDBus.[ch]
		- Add signal for "DeviceActivating"
		- Switch priority->timestamp

	* src/NetworkManagerDevice.c
		- Change references of "wep_key" -> "enc_key" or "key"
		- Signal DeviceActivating when starting activation
		- When activating a wireless device, if the access point we are connecting
			to is encrypted, and we have a source key, try to generate a mangled
			key and use that (ie, generate real WEP key from a passphrase)
		- Rework device activation to fallback to other encryption methods if
			a previous one didn't work (ie, try mangling a key as a 104-bit passphrase
			first, then if that doesn't work fall back to direct hex key).
		- (nm_device_update_best_ap): fix a deadlock, and use timestamps instead of
			priority.  We now prefer the latest access point used, rather than using
			a priority scheme
		- (nm_device_do_normal_scan): make the encryption method "unknown" on access
			points we've just discovered, and merge in correct info from the global
			access point lists


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@68 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-25 22:41:12 +00:00
Dan Willemsen
a4afafce03 2004-08-23 Dan Willemsen <dan@willemsen.us>
* dispatcher-daemon/NetworkManagerDispatcher.c
	  info-daemon/NetworkManagerInfo.[ch]
	  info-daemon/NetworkManagerInfoDbus.c
	  info-daemon/NetworkManagerInfoPassphraseDialog.c
	  src/NetworkManager.c
	  src/NetworkManagerAP.c
	  src/NetworkManagerAPList.c
	  src/NetworkManagerDbus.c
	  src/NetworkManagerDevice.c
	  src/NetworkManagerPolicy.c
	  src/NetworkManagerUtils.[ch]
	  src/NetworkManagerWireless.c
		- Used syslog functions for logging instead of NM_DEBUG_DISPLAY & fprintf

	* src/NetworkManager.c
		- Fixed usage wording for --no-daemon


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@61 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-08-23 19:20:49 +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
b0d607f91a 2004-07-27 Dan Williams <dcbw@redhat.com>
* Remove various Makefile.in files

	* TODO
		- Add some more items

	* configure.in
		- Add checks for OpenSSL/md5 headers and libs

	* src/Makefile.am
		- Use OpenSSL CFLAGS

	* src/NetworkManagerAP.[ch]
		- Remove 'stamp' functions, replace with 'invalid' functions
			to support user cancelling WEP key entry

	* src/NetworkManagerDbus.c
		- Remove 'stamp' return functions
		- Treat returned user key as a passphrase and convert to a WEP key,
			but don't actually use the WEP key yet.  We use the returned user
			key as a hexadecimal WEP key until we can figure out a UI for
			passphrase-vs-hex key

	* src/NetworkManagerWireless.[ch]
		- Add passphrase-to-128bit-key function


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@28 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-28 02:49:33 +00:00
Dan Williams
aab500146f 2004-07-19 Dan Williams <dcbw@redhat.com>
* Makefile.am
		- Add info-daemon directory

	* configure.in
		- Check for glade libs and headers
		- Add info-daemon directory

	* src/NetworkManagerAP.c
		- nm_ap_new_from_ap(): Fix bug that resulted in an APs encryption status not getting
			copied over to the new AP.

	* src/NetworkManagerDbus.c
	  src/NetworkManagerDbus.h
		- Deal with nm_device_ap_list_get_ap()->nm_device_ap_list_get_ap_by_index() change
		- Remove nm_dbus_signal_need_key_for_network()
		- Add disabled code for asynchronous user wep key callbacks
		- Add functions for getting, setting, and cancelling user key operations
		- Remove "setKeyForNetwork" device dbus method call, its on NetworkManager object instead
		- Add "setKeyForNetwork" dbus method call on NetworkManager object

	* src/NetworkManagerDevice.c
	  src/NetworkManagerDevice.h
		- nm_device_update_link_active(): revert changes for wireless link detection, the WEP-key-is-wrong
			logic is in device activation now
		- nm_device_activate(): for wireless devices, if we can't associate with access point (perhaps
			key is wrong) trigger get-user-key pending action
		- Implement get-user-key pending action stuff, tie to dbus messages
		- Rename nm_device_ap_list_get_ap() -> nm_device_ap_list_get_ap_by_index()
		- Add nm_device_ap_list_get_ap_by_essid()
		- Instead of copying "best" access points, ref them instead so that the key we set
			sticks around

	* src/NetworkManagerPolicy.c
		- Deal with wrong WEP key, but right access point (and if so, return link_active = TRUE)
		- Don't cancel pending actions on a device if its the same device as last iteration
		- Only promote pending_device->active_device if activation was successfull

	* src/Makefile.am
		- Rename nmclienttest->nmtest

	* info-daemon/Makefile.am
	  info-daemon/NetworkManagerInfo.c
	  info-daemon/NetworkManagerInfo.h
	  info-daemon/NetworkManagerInfoDbus.c
	  info-daemon/NetworkManagerInfoDbus.h
	  info-daemon/passphrase.glade
	  info-daemon/NetworkManagerInfo.conf
	  info-daemon/keyring.png
	  	- Import sources for info-daemon, which pops up dialog for passphrase/key when
	  		NetworkManager asks for it, and also will (soon) provide "allowed" access point
	  		lists to NetworkManager by proxying user's GConf


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@16 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-07-19 06:08:52 +00:00
Dan Williams
088b0d8eb2 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
Dan Williams
c39587c1c2 Initial revision
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2004-06-24 14:18:37 +00:00