Commit graph

71 commits

Author SHA1 Message Date
Dan Williams
11ca4c7a91 supplicant: add 'authenticating' state
Caused a harmless warning, but lets add it anyway.
2011-03-17 13:42:21 -05:00
Kjartan Maraas
c2b4b9c1d7 build: fix return types (bgo #644665)
Some functions were returning FALSE or 0 instead of NULL.
2011-03-14 01:05:51 -05:00
Dan Williams
e3ba9162c2 supplicant: fix state handling after READY has been reached
We only want to prevent regression to > READY after READY has
been reached, since the interface state will track the supplicant
connection state which legitimately jumps around.
2010-12-11 12:33:15 -06:00
Dan Williams
ea16af7c18 supplicant: fix up return arguments for Disconnect and RemoveNetwork 2010-12-11 12:31:10 -06:00
Dan Williams
1cd17ac896 supplicant: fix leak updating BSS properties 2010-12-11 11:59:40 -06:00
Dan Williams
a08dd2c39d supplicant: fix handling when supplicant cannot be service activated
If the supplicant cannot be service activated, wait until it shows up
on the bus instead of sitting around doing nothing.  This fixes a small
regression introduced when the _READY state was added to the supplicant
interface object.
2010-12-07 13:58:49 -06:00
Dan Williams
fb6cde508c supplicant: convert blob handling to new supplicant interface 2010-11-22 22:34:04 -06:00
Dan Williams
f5e084c668 supplicant: convert association paths to new supplicant interface 2010-11-22 09:05:09 -06:00
Dan Williams
6ecb45ddf0 wifi: convert scanning to new supplicant interface 2010-11-22 08:40:21 -06:00
Dan Williams
848f9f4261 wifi: convert parts of association path to new supplicant interface 2010-11-22 08:30:13 -06:00
Dan Williams
8bbbd3edc3 wifi: convert AP handling to new supplicant interface 2010-11-22 08:25:09 -06:00
Dan Williams
02a1da41c6 supplicant: convert add/remove to new supplicant dbus interface 2010-11-18 17:02:04 -06:00
Dan Williams
f532f41c02 supplicant: ratelimit supplicant activation
If the supplicant dies a number of times within a short period of
time, make it go sit in the corner for a bit instead of continuously
trying to start it and have it die again.

Instead of just exposing a "running" value, instead make a meta
"available" value that's a combination of whether the supplicant
is actually running plus whether we want to talk to it right now
or not.
2010-10-12 14:18:42 -05:00
Dan Williams
39e111e5eb supplicant: ignore unknown wpa_supplicant states
Don't treat them as DISCONNECTED.
2010-10-11 20:35:54 -05:00
Dan Williams
48e37de3a4 supplicant: prevent a race condition due to D-Bus activation
interface_add() could get called from two places: by the wifi/eth
device class when activating (which if the supplicant isn't yet
running will D-Bus activate it) and from the NameOwnerChanged
handler for the wpa_supplicant dbus service smgr_running_cb().

So if the supplicant wasn't running, nm_supplicant_interface_new()
would call interface_add() to bring the supplicant to life via
activation, then go on and create priv->iface_proxy.  When the
supplicant appeared and D-Bus sent the NameOwnerChanged,
smgr_running_cb() would also call interface_add(), creating a
second priv->iface_proxy.  The first one got lost and lived after
its parent NMSupplicantInterface was killed, and could still
respond to signals over the bus.

Prevent that by adding another state, STARTING, that indicates
that we've already started talking to the supplicant.  Also be
extra paranoid about disconnecting signal handlers on the proxy.
2010-10-11 20:30:40 -05:00
Dan Williams
f3a1366b55 supplicant: collapse supplicant interface states
We only really need one state for the supplicant interface which
simplifies handling in the Wifi and Wired device classes quite a
bit.  It also simplifies the supplicant interface class too.

One behavioral change in the device classes is not running the
supplicant interface state changes from an idle; we'll have to
see if that causes problems.  ISTR long ago that processing the
state change signals directly caused some issues, but we've
significantly reworked somethings since then so we may be able
to get away with this now.
2010-10-06 11:05:21 -05:00
Dan Williams
262db04e20 supplicant: use a GHashTable instead of a GSList for tracking interfaces
It's just less code. Yay.
2010-10-05 14:19:56 -05:00
Dan Williams
71c4e2338b supplicant: simplify supplicant interface object
Move GObject stuff to the bottom to reduce prototype abuse and
remove unneeded prefixes from stuff that's private to the class
itself.  We also don't need the 'supplicant-manager' or 'device'
properties since they weren't used anywhere.
2010-10-05 14:19:43 -05:00
Dan Williams
410c354384 Revert "supplicant: simplify supplicant interface object"
This reverts commit 43b55f719f.
2010-10-05 14:17:53 -05:00
Dan Williams
8738aad6f2 Revert "supplicant: use a GHashTable instead of a GSList for tracking interfaces"
This reverts commit 0e61ddcd27.
2010-10-05 14:17:48 -05:00
Dan Williams
0e61ddcd27 supplicant: use a GHashTable instead of a GSList for tracking interfaces
It's just less code. Yay.
2010-10-04 19:42:25 -05:00
Dan Williams
43b55f719f supplicant: simplify supplicant interface object
Move GObject stuff to the bottom to reduce prototype abuse and
remove unneeded prefixes from stuff that's private to the class
itself.  We also don't need the 'supplicant-manager' or 'device'
properties since they weren't used anywhere.
2010-10-04 19:37:17 -05:00
Dan Williams
009336a54c wifi: robustify supplicant info destruction
Zero out the struct so we crash if we ever try to use it after its
been freed.
2010-04-14 15:22:48 -07:00
Dan Williams
5a01a0b39e wifi: prevent infinite loop when disposing of supplicant proxy (rh #538717)
This has been around a long time, but is very hard to trigger.  It appears
to happen mostly if the supplicant segfaults on resume but has been seen
in other cases as well.

For whatever reason, the DBusGProxy's refcount reaches 0 and the proxy gets
disposed of.  That in turn disposes of all the pending calls that are
in-progress on the proxy.  Since we give the pending calls a closure, that
closure (nm_supplicant_info_destroy) gets called when the pending calls
are destroyed.  That closure unrefs the proxy again.

Since DBusGProxy doesn't have any protection in its dispose() handler
against re-entrant disposes (which is arguably a bug of the client)
we end up infinite looping in nm_supplicant_info_destroy().

Fix that by ensuring we return early if we detect that we are already
freeing the NMSupplicantInfo object, and thus don't try to dispose
of the proxy yet again.
2010-04-14 15:16:48 -07:00
Dan Williams
7fa8f29aaf wifi: more supplicant/wifi debug logging
To help debug wifi device availablility.
2010-04-07 16:42:29 -07:00
Dan Williams
15e32cd4dc supplicant: update logging 2010-04-07 10:13:12 -07:00
Sjoerd Simons
618697aaab wifi: improve scan result request throttling
Throttle requesting scan results to be at least four seconds, instead
of always forcing a 4 second delay after the first scan.
2009-07-08 12:01:09 -04:00
Dan Williams
daa8d8c9ca supplicant: don't try to give dbus-glib a NULL path on interface removal 2009-06-12 10:31:16 -04:00
Dan Williams
57a04fa59d wifi: handle unsolicited supplicant scans
With supplicant patches, this allows NM to figure out when the supplicant
is performing an unsolicited scan, and thus to not run periodic_update()
when the supplicant is scanning.

This fixes some of the causes of "roaming to none", especially in hidden
SSID networks.  In those cases, after NM had requested a broadcast scan,
the hidden SSID AP would likely not show up in the scan results, leading
to the supplicant performing a specific SSID scan that NetworkManager
was unaware of.  While that specific SSID scan was going on, NM could
run periodic_update() and pull the wrong frequency off the card,
leading to the "roaming to none" message when the associated AP with
the wrong frequency could not be found in the scan list.
2009-05-13 11:16:29 -04:00
Dan Williams
7082150fb1 wifi: fix scan list culling when no APs are found in a scan
Bug found by Gustavo Sverzut Barbieri <gustavo.barbieri@canonical.com>
2009-04-30 10:24:25 -04:00
Dan Williams
8067ec9334 wifi: whitespace and other misc cleanups 2009-04-29 17:08:31 -04:00
Jan Kantert
4ca66db721 Use g_timeout_add_seconds() to reduce wakeups
(and refine the older glib compat mechanism, by Dan)
2008-12-31 18:57:36 -05:00
Dan Williams
ea6edd8b8e Update license headers
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4260 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-11-04 22:36:51 +00:00
Dan Williams
1cb9bacaad 2008-10-26 Dan Williams <dcbw@redhat.com>
* src/supplicant-manager/nm-supplicant-interface.c
	  src/supplicant-manager/nm-supplicant-interface.h
	  src/supplicant-manager/nm-supplicant-manager.c
	  src/supplicant-manager/nm-supplicant-manager.h
		- Add state-to-string conversion functions

	* src/nm-device-wifi.c
	  src/nm-device-ethernet.c
		- Normalize state info logging and use strings instead of numbers



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4213 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-10-26 16:32:29 +00:00
Tambet Ingo
6ac525267b 2008-09-24 Tambet Ingo <tambet@gmail.com>
* src/supplicant-manager/nm-supplicant-interface.c
	(nm_supplicant_interface_disconnect): Don't increment the reference
	count when disconnecting. The problem is on shutdown, when the replies
	to these commands do not arrive before NM exits, resulting on never
	calling supplicant interface's dispose(), which removes the interface
	from supplicant.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4093 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-24 11:45:44 +00:00
Michael Biebl
d7940bcb9b Rename private nm_* functions to _nm_*
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4012 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-08-26 09:34:31 +00:00
Dan Williams
46e854c006 2008-06-30 Dan Williams <dcbw@redhat.com>
* src/supplicant-manager/nm-supplicant-interface.c
		- (request_scan_results, nm_supplicant_interface_dispose,
		   wpas_iface_query_scan_results): cleanup; scan_results_timeout is now
			the id of the timeout, not a GSource



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3784 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-06-30 17:12:11 +00:00
Dan Williams
b0cf66eda8 2008-06-26 Dan Williams <dcbw@redhat.com>
* Update FSF address in license headers (Michael Biebl <biebl@debian.org>)



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3775 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-06-26 18:31:52 +00:00
Tambet Ingo
d95e330f96 2008-06-05 Tambet Ingo <tambet@gmail.com>
Fix memory leaks.

	* system-settings/src/nm-system-config-hal-manager.c (get_type_for_udi):
	Free data returned from dbus method call.

	* system-settings/src/nm-polkit-helpers.c (check_polkit_privileges):
	dbus_g_method_get_sender() returns a duplicated string, free it
	when done.
	(check_polkit_privileges): Looks like policykit sometimes returns
	error and non-null return value, don't leak errors in that case.

	* system-settings/src/main.c (find_plugin): Don't leak existing
	plugin names.
	(load_stuff): Don't leak device list and list items.
	(have_connection_for_device): Don't leak connection list.

	* system-settings/plugins/keyfile/reader.c (read_one_setting_value):
	Free the data received from g_keyfile_get_*.

	* system-settings/plugins/ifcfg-suse/parser.c (READ_WEP_KEY): Free
	the key when the security object is updated.

	* src/supplicant-manager/nm-supplicant-interface.c (scan_results_cb):
	Free data returned from dbus method call.
	(iface_state_cb): Ditto.
	(add_network_cb): Ditto.
	(nm_supplicant_interface_add_cb): Don't make another copy of already
	duplicated object path.
	(nm_supplicant_interface_add_to_supplicant): Free the driver GValue
	when done.

	* src/supplicant-manager/nm-supplicant-config.c
	(ADD_STRING_LIST_VAL): Fix a memory leak.

	* src/nm-manager.c (free_get_settings_info): Free the allocated
	memory slice.
	(list_connections_cb): Free data returned from dbus method call.
	(system_settings_get_unmanaged_devices_cb): Ditto.

	* src/nm-device-802-11-wireless.c (device_cleanup): Free ssid.

	* system-settings/plugins/ifcfg-suse/shvar.c (svCloseFile):
	* system-settings/plugins/ifcfg-fedora/shvar.c (svCloseFile):
	* src/backends/shvar.c (svCloseFile): Free the duplicated content
	of the GList.

	* libnm-util/nm-setting.c (nm_setting_from_hash): Free the constructor
	arguments after the object is created.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3721 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-06-05 13:16:02 +00:00
Dan Williams
6fc5e8143f 2008-03-29 Dan Williams <dcbw@redhat.com>
* libnm-util/nm-setting-8021x.c
	  libnm-util/nm-setting-ip4-config.c
	  libnm-util/nm-setting-vpn-properties.c
	  libnm-util/nm-setting-vpn.c
	  libnm-util/nm-setting-wireless-security.c
	  libnm-util/nm-setting-wireless.c
	  libnm-util/nm-utils.c
	  src/dhcp-manager/nm-dhcp-manager.c
	  src/nm-activation-request.c
	  src/nm-ip4-config.c
	  src/nm-manager.c
	  src/nm-properties-changed-signal.c
	  src/ppp-manager/nm-pppd-plugin.c
	  src/supplicant-manager/nm-supplicant-interface.c
	  src/vpn-manager/nm-vpn-connection.c
		- consistently use nm-dbus-glib-types.h



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3514 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-03-29 21:35:41 +00:00
Dan Williams
eda2d662cd 2007-12-07 Dan Williams <dcbw@redhat.com>
Noticed by Christian Persch <chpe@gnome.org>

	Always chain up to parent object in dispose and finalize handlers.
		(gnome.org #433112)



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3154 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-12-07 15:32:45 +00:00
Dan Williams
6076621fd0 2007-11-26 Dan Williams <dcbw@redhat.com>
* Fix warnings so everything compiles with --enable-more-warnings



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3108 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-11-26 16:59:47 +00:00
Dan Williams
36650e4a24 Print out ap-scan value for easier debugging
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3103 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-11-21 05:57:54 +00:00
Dan Williams
6a58b25532 2007-10-24 Dan Williams <dcbw@redhat.com>
* src/supplicant-manager/nm-supplicant-interface.c
		- (blob_free): correctly free blob data after use
		- (call_set_blobs): use the right D-Bus interfaace for setBlobs



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3018 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-24 19:25:55 +00:00
Dan Williams
e55072d9bb Warning fixes
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2994 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-22 03:29:54 +00:00
Dan Williams
41cb03a3dd 2007-10-20 Dan Williams <dcbw@redhat.com>
* src/supplicant-manager/nm-supplicant-config.h
	  src/supplicant-manager/nm-supplicant-config.c
		- (nm_supplicant_config_init, nm_supplicant_config_finalize): add a hash
			table to store blobs
		- (nm_supplicant_config_add_blob): new function; add blob to internal
			blob hash table
		- (nm_supplicant_config_get_blobs): new function; get stored blobs
		- (nm_supplicant_config_add_setting_wireless_security): handle
			options that use certificates (ie, blobs)

	* src/nm-device-802-11-wireless.c
		- (build_supplicant_config): pass a UID (just use the connection path)
			to the supplicant config as now required

	* src/supplicant-manager/nm-supplicant-interface.c
		- (add_network_cb, call_set_blobs, set_blobs_cb, call_set_network): if
			there are any blobs to send to wpa_supplicant, send those first
			before sending the network configuration



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2990 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-20 20:31:29 +00:00
Tambet Ingo
18d372272c 2007-10-10 Tambet Ingo <tambet@gmail.com>
Move ppp-manager over to dbus-glib. The big deal is that it was
the last piece of
        code that used NM's own version of dbus signal handling and
custom dictionary
        marshalling/unmarshalling. With this change, all that obsolete
code can disappear
        and we get to maintain over 2000 lines less code.

        * libnm-util/dbus-dict-helpers.c:
        * libnm-util/dbus-dict-helpers.h: Remove.

        * src/ppp-manager/nm-pppd-plugin.c: Convert it to use dbus-glib.

        * src/ppp-manager/nm-pppd-plugin.xml: Implement.

        * src/ppp-manager/nm-ppp-manager.c: Use dbus-glib instead of
        * home-brewed dbus signal
        handlers.

        * src/nm-dbus-manager.c: Remove all the manual dbus signal
        * handling.

        * configure.in: Remove test/libnm-util/Makefile creation.

        * test/Makefile.am: Remove libnm-util from SUBDIRS.

        * test/libnm-util/: Remove the whole directory.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2965 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-10 14:36:31 +00:00
Dan Williams
1fec30ad86 Ignore 'BSSID invalid' error when getting BSSID properties
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2963 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-09 21:51:55 +00:00
Dan Williams
7cdada8ed2 2007-10-01 Dan Williams <dcbw@redhat.com>
* configure.in
	  src/marshallers/Makefile.am
	  src/marshallers/nm-marshal.list
	  src/marshallers/nm-marshal-main.c
		- Consolidate glib marshallers into one place

	* src/dhcp-manager/Makefile.am
	  src/dhcp-manager/nm-dhcp-manager.c
	  src/supplicant-manager/Makefile.am
	  src/supplicant-manager/nm-supplicant-manager.c
	  src/supplicant-manager/nm-supplicant-interface.c
	  src/ppp-manager/Makefile.am
	  src/ppp-manager/nm-ppp-manager.c
	  src/vpn-manager/Makefile.am
	  src/vpn-manager/nm-vpn-connection.c
	  src/Makefile.am
		- Use consolidated marshallers

	* src/dhcp-manager/nm-dhcp-marshal.list
	  src/dhcp-manager/nm-dhcp-marshal-main.c
	  src/supplicant-manager/nm-supplicant-marshal-main.c
	  src/supplicant-manager/nm-supplicant-marshal.list
	  src/nm-marshal-main.c
	  src/nm-marshal.list
	  src/ppp-manager/nm-ppp-marshal-main.c
	  src/ppp-manager/nm-ppp-marshal.list
	  src/vpn-manager/nm-vpn-marshal-main.c
	  src/vpn-manager/nm-vpn-marshal.list
		- Remove



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2920 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-10-01 21:26:13 +00:00
Dan Williams
7d0e13919c 2007-09-12 Dan Williams <dcbw@redhat.com>
* src/supplicant-manager/nm-supplicant-interface.c
	  src/supplicant-manager/nm-supplicant-marshal.list
		- (nm_supplicant_interface_class_init): fix stupid mistake, the
			"connection-error" signal arguments should be STRING not CHAR



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2795 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2007-09-12 04:48:16 +00:00