2007-08-28 Dan Williams <dcbw@redhat.com>

* src/NetworkManagerAP.c
	  src/NetworkManagerAP.h
		- Remove 'fallback' tag, to be replaced by NMConnection/NMSettings
			'autoconnect' property instead

	* src/NetworkManager.c
	  src/NetworkManagerMain.h
	  src/NetworkManagerPolicy.c
	  src/NetworkManagerPolicy.h
		- Remove the 'allowed_ap_list', which should be replaced by 
			NMConnection/NMSettings instead, since _those_ are the allowed
			things that NM can connect to

	* src/nm-device-802-11-wireless.c
		- Remove both allowed_ap_list usage and 'fallback' checking



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2740 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2007-08-28 15:17:48 +00:00
parent 9194b61b8f
commit 3443abf3f9
8 changed files with 31 additions and 234 deletions

View File

@@ -1,3 +1,21 @@
2007-08-28 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerAP.c
src/NetworkManagerAP.h
- Remove 'fallback' tag, to be replaced by NMConnection/NMSettings
'autoconnect' property instead
* src/NetworkManager.c
src/NetworkManagerMain.h
src/NetworkManagerPolicy.c
src/NetworkManagerPolicy.h
- Remove the 'allowed_ap_list', which should be replaced by
NMConnection/NMSettings instead, since _those_ are the allowed
things that NM can connect to
* src/nm-device-802-11-wireless.c
- Remove both allowed_ap_list usage and 'fallback' checking
2007-08-28 Dan Williams <dcbw@redhat.com> 2007-08-28 Dan Williams <dcbw@redhat.com>
* src/nm-device.c * src/nm-device.c

View File

@@ -121,10 +121,8 @@ static NMData *nm_data_new (void)
data = g_slice_new0 (NMData); data = g_slice_new0 (NMData);
/* Initialize the access point lists */ /* Initialize the access point lists */
data->allowed_ap_list = nm_ap_list_new (NETWORK_TYPE_ALLOWED);
data->invalid_ap_list = nm_ap_list_new (NETWORK_TYPE_INVALID); data->invalid_ap_list = nm_ap_list_new (NETWORK_TYPE_INVALID);
if (!data->allowed_ap_list || !data->invalid_ap_list) if (!data->invalid_ap_list) {
{
nm_data_free (data); nm_data_free (data);
nm_warning ("could not create access point lists."); nm_warning ("could not create access point lists.");
return NULL; return NULL;
@@ -144,7 +142,6 @@ static void nm_data_free (NMData *data)
{ {
g_return_if_fail (data != NULL); g_return_if_fail (data != NULL);
nm_ap_list_unref (data->allowed_ap_list);
nm_ap_list_unref (data->invalid_ap_list); nm_ap_list_unref (data->invalid_ap_list);
g_slice_free (NMData, data); g_slice_free (NMData, data);
@@ -162,9 +159,10 @@ nm_name_owner_changed_handler (NMDBusManager *mgr,
gboolean new_owner_good = (new && (strlen (new) > 0)); gboolean new_owner_good = (new && (strlen (new) > 0));
if (strcmp (name, NMI_DBUS_SERVICE) == 0) { if (strcmp (name, NMI_DBUS_SERVICE) == 0) {
if (!old_owner_good && new_owner_good) if (!old_owner_good && new_owner_good) {
/* NMI appeared, update stuff */ /* NMI appeared, update stuff */
nm_policy_schedule_allowed_ap_list_update (data); // FIXME: grab NMConnections from the info-daemon
}
} }
} }
@@ -441,13 +439,11 @@ main (int argc, char *argv[])
goto done; goto done;
/* If NMI is running, grab allowed wireless network lists from it ASAP */ /* If NMI is running, grab allowed wireless network lists from it ASAP */
#if 0
// FIXME: grab NMConnections instead
if (nm_dbus_manager_name_has_owner (dbus_mgr, NMI_DBUS_SERVICE)) if (nm_dbus_manager_name_has_owner (dbus_mgr, NMI_DBUS_SERVICE))
nm_policy_schedule_allowed_ap_list_update (nm_data); nm_policy_schedule_allowed_ap_list_update (nm_data);
#endif
/* We run dhclient when we need to, and we don't want any stray ones
* lying around upon launch.
*/
// nm_system_kill_all_dhcp_daemons ();
/* Bring up the loopback interface. */ /* Bring up the loopback interface. */
nm_system_enable_loopback (); nm_system_enable_loopback ();

View File

@@ -72,7 +72,6 @@ typedef struct
glong last_seen; /* Last time the AP was seen in a scan in seconds */ glong last_seen; /* Last time the AP was seen in a scan in seconds */
/* Things from user prefs/NetworkManagerInfo */ /* Things from user prefs/NetworkManagerInfo */
gboolean fallback;
GTimeVal timestamp; GTimeVal timestamp;
GSList * user_addresses; GSList * user_addresses;
} NMAccessPointPrivate; } NMAccessPointPrivate;
@@ -832,26 +831,6 @@ void nm_ap_set_invalid (NMAccessPoint *ap, gboolean invalid)
} }
/*
* Get/Set functions to indicate that an access point is
* 'fallback'
*
*/
gboolean nm_ap_get_fallback (const NMAccessPoint *ap)
{
g_return_val_if_fail (NM_IS_AP (ap), FALSE);
return NM_AP_GET_PRIVATE (ap)->fallback;
}
void nm_ap_set_fallback (NMAccessPoint *ap, gboolean fallback)
{
g_return_if_fail (NM_IS_AP (ap));
NM_AP_GET_PRIVATE (ap)->fallback = fallback;
}
/* /*
* Get/Set functions to indicate that an access point is * Get/Set functions to indicate that an access point is
* 'artificial', ie whether or not it was actually scanned * 'artificial', ie whether or not it was actually scanned

View File

@@ -97,9 +97,6 @@ void nm_ap_set_rate (NMAccessPoint *ap, guint16 rate);
gboolean nm_ap_get_invalid (const NMAccessPoint *ap); gboolean nm_ap_get_invalid (const NMAccessPoint *ap);
void nm_ap_set_invalid (NMAccessPoint *ap, gboolean invalid); void nm_ap_set_invalid (NMAccessPoint *ap, gboolean invalid);
gboolean nm_ap_get_fallback (const NMAccessPoint *ap);
void nm_ap_set_fallback (NMAccessPoint *ap, gboolean fallback);
gboolean nm_ap_get_artificial (const NMAccessPoint *ap); gboolean nm_ap_get_artificial (const NMAccessPoint *ap);
void nm_ap_set_artificial (NMAccessPoint *ap, gboolean artificial); void nm_ap_set_artificial (NMAccessPoint *ap, gboolean artificial);

View File

@@ -34,7 +34,6 @@ typedef struct NMVPNManager NMVPNManager;
typedef struct NMData typedef struct NMData
{ {
struct NMAccessPointList *allowed_ap_list;
struct NMAccessPointList *invalid_ap_list; struct NMAccessPointList *invalid_ap_list;
} NMData; } NMData;

View File

@@ -379,124 +379,6 @@ out:
} }
static guint allowed_list_update_id = 0;
/*
* nm_policy_allowed_ap_list_update
*
* Requery NetworkManagerInfo for a list of updated
* allowed wireless networks.
*
*/
static gboolean
nm_policy_allowed_ap_list_update (gpointer user_data)
{
NMData * data = (NMData *)user_data;
allowed_list_update_id = 0;
g_return_val_if_fail (data != NULL, FALSE);
nm_info ("Updating allowed wireless network lists.");
// FIXME: convert to getting connections instead
return FALSE;
}
/*
* nm_policy_schedule_allowed_ap_list_update
*
* Schedule an update of the allowed AP list in the main thread.
*
*/
void nm_policy_schedule_allowed_ap_list_update (NMData *app_data)
{
GSource * source;
guint id;
g_return_if_fail (app_data != NULL);
if (allowed_list_update_id > 0)
return;
id = g_idle_add (nm_policy_allowed_ap_list_update, app_data);
allowed_list_update_id = id;
source = g_main_context_find_source_by_id (NULL, id);
if (source) {
g_source_set_priority (source, G_PRIORITY_HIGH_IDLE);
}
}
static gboolean device_list_update_id = 0;
/*
* nm_policy_device_list_update_from_allowed_list
*
* Requery NetworkManagerInfo for a list of updated
* allowed wireless networks.
*
*/
static gboolean
nm_policy_device_list_update_from_allowed_list (gpointer user_data)
{
NMData * data = (NMData *) user_data;
GSList * elt;
device_list_update_id = 0;
g_return_val_if_fail (data != NULL, FALSE);
for (elt = nm_manager_get_devices (global_policy->manager); elt; elt = elt->next) {
NMDevice *dev = (NMDevice *)(elt->data);
NMDevice80211Wireless * wdev;
if (!NM_IS_DEVICE_802_11_WIRELESS (dev))
continue;
wdev = NM_DEVICE_802_11_WIRELESS (dev);
/* Once we have the list, copy in any relevant information from our
* Allowed list and fill in the SSID of base stations that aren't
* broadcasting their SSID, if we have their MAC address in our
* allowed list.
*/
nm_ap_list_copy_ssids_by_address (nm_device_802_11_wireless_ap_list_get (wdev),
data->allowed_ap_list);
nm_ap_list_copy_properties (nm_device_802_11_wireless_ap_list_get (wdev),
data->allowed_ap_list);
nm_ap_list_remove_duplicate_ssids (nm_device_802_11_wireless_ap_list_get (wdev));
}
schedule_change_check ((gpointer) global_policy);
return FALSE;
}
/*
* nm_policy_schedule_device_ap_lists_update_from_allowed
*
* Schedule an update of each wireless device's AP list from
* the allowed list, in the main thread.
*
*/
void
nm_policy_schedule_device_ap_lists_update_from_allowed (NMData *app_data)
{
g_return_if_fail (app_data != NULL);
if (device_list_update_id > 0)
return;
device_list_update_id = g_idle_add_full (G_PRIORITY_HIGH_IDLE,
nm_policy_device_list_update_from_allowed_list,
app_data,
NULL);
}
/*****************************************************************************/ /*****************************************************************************/
static void static void

View File

@@ -33,8 +33,4 @@ typedef struct NMPolicy NMPolicy;
NMPolicy *nm_policy_new (NMManager *manager); NMPolicy *nm_policy_new (NMManager *manager);
void nm_policy_destroy (NMPolicy *policy); void nm_policy_destroy (NMPolicy *policy);
void nm_policy_schedule_allowed_ap_list_update (NMData *app_data);
void nm_policy_schedule_device_ap_lists_update_from_allowed (NMData *app_data);
#endif /* NETWORK_MANAGER_POLICY_H */ #endif /* NETWORK_MANAGER_POLICY_H */

View File

@@ -788,75 +788,6 @@ get_ap_blacklisted (NMAccessPoint *ap, GSList *addrs)
} }
/*
* get_best_fallback_ap
*
* Find and return the most suitable "fallback" network, if any. We "fall back"
* on these networks and attempt a brute-force connection, given no better options.
*/
static NMAccessPoint *
get_best_fallback_ap (NMDevice80211Wireless *self)
{
NMAccessPointList * allowed_list;
NMAccessPoint * best_ap = NULL;
NMAccessPoint * allowed_ap;
GTimeVal best_timestamp = {0, 0};
NMAPListIter * iter;
NMData * app_data;
app_data = nm_device_get_app_data (NM_DEVICE (self));
allowed_list = app_data->allowed_ap_list;
iter = nm_ap_list_iter_new (allowed_list);
if (!iter)
return NULL;
while ((allowed_ap = nm_ap_list_iter_next (iter)))
{
const GByteArray * ssid;
GSList * user_addrs;
const GTimeVal * curtime;
gboolean blacklisted;
/* Only designated fallback networks, natch */
if (!nm_ap_get_fallback (allowed_ap))
continue;
/* Only connect to a blacklisted AP if the user has connected to this specific AP before */
user_addrs = nm_ap_get_user_addresses (allowed_ap);
blacklisted = get_ap_blacklisted (allowed_ap, user_addrs);
g_slist_foreach (user_addrs, (GFunc) g_free, NULL);
g_slist_free (user_addrs);
if (blacklisted)
continue;
/* No fallback to networks on the invalid list -- we probably already tried them and failed */
ssid = nm_ap_get_ssid (allowed_ap);
if (nm_ap_list_get_ap_by_ssid (app_data->invalid_ap_list, ssid))
continue;
curtime = nm_ap_get_timestamp (allowed_ap);
if (curtime->tv_sec > best_timestamp.tv_sec)
{
best_timestamp = *nm_ap_get_timestamp (allowed_ap);
best_ap = allowed_ap;
}
}
nm_ap_list_iter_free (iter);
if (best_ap) {
const GByteArray * ssid;
nm_ap_set_broadcast (best_ap, FALSE);
ssid = nm_ap_get_ssid (best_ap);
nm_info ("Attempting to fallback to wireless network '%s'",
ssid ? nm_utils_escape_ssid (ssid->data, ssid->len) : "(none)");
}
return best_ap;
}
/* /*
* nm_device_update_best_ap * nm_device_update_best_ap
* *
@@ -918,6 +849,9 @@ nm_device_802_11_wireless_get_best_ap (NMDevice80211Wireless *self)
if (nm_ap_list_get_ap_by_ssid (app_data->invalid_ap_list, ap_ssid)) if (nm_ap_list_get_ap_by_ssid (app_data->invalid_ap_list, ap_ssid))
continue; continue;
// FIXME: match up an NMConnection with some NMAccessPoint for the
// best_ap
#if 0
if ((tmp_ap = nm_ap_list_get_ap_by_ssid (app_data->allowed_ap_list, ap_ssid))) if ((tmp_ap = nm_ap_list_get_ap_by_ssid (app_data->allowed_ap_list, ap_ssid)))
{ {
const GTimeVal * curtime = nm_ap_get_timestamp (tmp_ap); const GTimeVal * curtime = nm_ap_get_timestamp (tmp_ap);
@@ -935,11 +869,10 @@ nm_device_802_11_wireless_get_best_ap (NMDevice80211Wireless *self)
best_ap = scan_ap; best_ap = scan_ap;
} }
} }
#endif
} }
nm_ap_list_iter_free (iter); nm_ap_list_iter_free (iter);
if (!best_ap)
best_ap = get_best_fallback_ap (self);
if (best_ap) if (best_ap)
g_object_ref (best_ap); g_object_ref (best_ap);
@@ -2065,16 +1998,13 @@ supplicant_iface_scanned_ap_cb (NMSupplicantInterface * iface,
*/ */
if (!nm_ap_get_ssid (ap)) { if (!nm_ap_get_ssid (ap)) {
nm_ap_set_broadcast (ap, FALSE); nm_ap_set_broadcast (ap, FALSE);
nm_ap_list_copy_one_ssid_by_address (ap, app_data->allowed_ap_list); // FIXME: get the saved BSSID from NMConnection/NMSettings
// nm_ap_list_copy_one_ssid_by_address (ap, app_data->allowed_ap_list);
} }
/* Add the AP to the device's AP list */ /* Add the AP to the device's AP list */
merge_scanned_ap (self, ap); merge_scanned_ap (self, ap);
/* Once we have the list, copy in any relevant information from our Allowed list. */
nm_ap_list_copy_properties (nm_device_802_11_wireless_ap_list_get (self),
app_data->allowed_ap_list);
/* Remove outdated access points */ /* Remove outdated access points */
cull_scan_list (self); cull_scan_list (self);