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:
@@ -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.");
|
||||
|
Reference in New Issue
Block a user