2007-03-02 Tambet Ingo <tambet@ximian.com>

* libnm-glib/nm-device-802-11-wireless.c: Cache networks (bssids) list.
	We get signalled when it changes.

	* libnm-glib/nm-client.c: Cache NMState and device list, we get signalled
	when it changes.

	* libnm-glib/nm-device.c: Cache the device state property.

	* libnm-glib/nm-access-point.c: Cache the strength property.

	* src/nm-device-802-11-wireless.c: Fix wireless device scanning scheduler.
	The new algorithm is to start from SCAN_INTERVAL_MIN (currently defined as 0)
	and add a SCAN_INTERVAL_STEP (currently 20 seconds) with each successful scan
	until SCAN_INTERVAL_MAX (currently 120 seconds) is reached. Do not scan while
	the device is down, activating, or activated (in case of A/B/G cards).
	Remove some old dead ifdef'ed out code that used to configure wireless devices,
	it's all done through supplicant now.

	* src/supplicant-manager/nm-supplicant-interface.c: Fix the reference
	counting issues with pending calls which caused leaks and crashes when
	interface was removed (now that the interface actually gets removed).

	* src/nm-call-store.c: Make a copy of data before running a foreach
	with user callback on it - The most common usage pattern is to cancel
	(and thus remove) all pending calls with foreach which would modify
	the hash table we're iterating over.

	* src/nm-manager.c: When a device is added, make sure it is "up". When
	it's removed or disabled due to disabling wireless or networking, bring
	it down.

	* include/NetworkManager.h: Add new device state NM_DEVICE_STATE_DOWN.

	* src/nm-device-802-11-wireless.c: 
	* src/nm-device-802-3-ethernet.c: 
	* src/nm-device.c:
		- Remove "init" virtual function, all gobjects have a place for that
		  already (constructor).
		- Replace "start" virtual function with "bring_up", devices can be
		  brought up and down more than just on startup now.
		- Add "is_up" virtual function.
		- Implement one way to bring a device down instead of previous 4 different
		  ways, each of witch did something different.

	* src/NetworkManagerUtils.c (nm_dev_sock_open): This doesn't need an NMDevice,
	all it needs is the device interface.

	Get rid of NMData.dev_list (3 members to go).
	Get rif of NMData in a lot of places.

	* gnome/libnm_glib/libnm_glib.c: Make it compile again.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2395 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Tambet Ingo
2007-03-02 09:30:48 +00:00
committed by Tambet Ingo
parent ee4cdd4778
commit 352caa34c6
25 changed files with 874 additions and 1092 deletions

View File

@@ -49,7 +49,7 @@ struct NMSock
int fd;
char *func;
char *desc;
NMDevice *dev;
char *iface;
};
static GSList * sock_list = NULL;
@@ -61,12 +61,12 @@ static GSList * sock_list = NULL;
* Open a socket to a network device and store some debug info about it.
*
*/
NMSock *nm_dev_sock_open (NMDevice *dev, SockType type, const char *func_name, const char *desc)
NMSock *
nm_dev_sock_open (const char *iface, SockType type, const char *func_name, const char *desc)
{
NMSock *sock = NULL;
sock = g_malloc0 (sizeof (NMSock));
sock = g_slice_new (NMSock);
sock->fd = -1;
switch (type)
@@ -91,19 +91,17 @@ NMSock *nm_dev_sock_open (NMDevice *dev, SockType type, const char *func_name, c
if (sock->fd < 0)
{
g_free (sock);
nm_warning ("Could not open control socket for device '%s'.", dev ? nm_device_get_iface (dev) : "none");
g_slice_free (NMSock, sock);
nm_warning ("Could not open control socket for device '%s'.", iface ? iface : "none");
return NULL;
}
sock->func = func_name ? g_strdup (func_name) : NULL;
sock->desc = desc ? g_strdup (desc) : NULL;
sock->dev = dev;
if (sock->dev)
g_object_ref (G_OBJECT (sock->dev));
sock->iface = iface ? g_strdup (iface) : NULL;
/* Add the sock to our global sock list for tracking */
sock_list = g_slist_append (sock_list, sock);
sock_list = g_slist_prepend (sock_list, sock);
return sock;
}
@@ -124,8 +122,7 @@ void nm_dev_sock_close (NMSock *sock)
close (sock->fd);
g_free (sock->func);
g_free (sock->desc);
if (sock->dev)
g_object_unref (G_OBJECT (sock->dev));
g_free (sock->iface);
memset (sock, 0, sizeof (NMSock));
@@ -138,7 +135,7 @@ void nm_dev_sock_close (NMSock *sock)
}
}
g_free (sock);
g_slice_free (NMSock, sock);
}
@@ -172,8 +169,8 @@ void nm_print_open_socks (void)
NMSock *sock = (NMSock *)(elt->data);
if (sock) {
i++;
nm_debug (" %d: %s fd:%d F:'%s' D:'%s'", i, sock->dev ? nm_device_get_iface (sock->dev) : "",
sock->fd, sock->func, sock->desc);
nm_debug (" %d: %s fd:%d F:'%s' D:'%s'", i, sock->iface ? sock->iface : "",
sock->fd, sock->func, sock->desc);
}
}
nm_debug ("Open Sockets List Done.");