2006-01-09 Dan Williams <dcbw@redhat.com>

* src/NetworkManagerPolicy.c
		- (nm_policy_device_change_check): don't autoswitch away from
			Ad-Hoc networks, since there's really no concept of "link"

	* src/nm-dbus-nm.c
		- (nm_dbus_nm_create_wireless_network): mark created networks
			as Ad-Hoc networks

	* src/nm-device-802-11-wireless.c
		- (real_activation_success_handler): add user-created Ad-Hoc
			networks to the device's scan list


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1300 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2006-01-09 05:11:29 +00:00
parent fb8c10a370
commit 5cac86fdd2
4 changed files with 34 additions and 6 deletions

View File

@@ -1,3 +1,17 @@
2006-01-09 Dan Williams <dcbw@redhat.com>
* src/NetworkManagerPolicy.c
- (nm_policy_device_change_check): don't autoswitch away from
Ad-Hoc networks, since there's really no concept of "link"
* src/nm-dbus-nm.c
- (nm_dbus_nm_create_wireless_network): mark created networks
as Ad-Hoc networks
* src/nm-device-802-11-wireless.c
- (real_activation_success_handler): add user-created Ad-Hoc
networks to the device's scan list
2006-01-08 Dan Williams <dcbw@redhat.com> 2006-01-08 Dan Williams <dcbw@redhat.com>
We now require a patch for wpa_supplicant to support Ad-Hoc We now require a patch for wpa_supplicant to support Ad-Hoc

View File

@@ -371,19 +371,24 @@ static gboolean nm_policy_device_change_check (NMData *data)
{ {
NMAccessPoint *old_ap = nm_act_request_get_ap (old_act_req); NMAccessPoint *old_ap = nm_act_request_get_ap (old_act_req);
const char * old_essid = nm_ap_get_essid (old_ap); const char * old_essid = nm_ap_get_essid (old_ap);
int old_mode = nm_ap_get_mode (old_ap);
const char * new_essid = nm_ap_get_essid (ap); const char * new_essid = nm_ap_get_essid (ap);
/* Schedule new activation if the currently associated access point is not the "best" one /* Schedule new activation if the currently associated
* or we've lost the link to the old access point. * access point is not the "best" one or we've lost the
* link to the old access point. We don't switch away
* from Ad-Hoc APs either.
*/ */
gboolean es = (strcmp (old_essid, new_essid) != 0); gboolean same_essid = (strcmp (old_essid, new_essid) == 0);
gboolean link = nm_device_has_active_link (old_dev); gboolean link = nm_device_has_active_link (old_dev);
if (es || !link) if ((!same_essid || !link) && (old_mode != IW_MODE_ADHOC))
{ {
nm_info ("SWITCH: found better connection '%s/%s' than current connection '%s/%s'. different_ssids=%d, have_link=%d", nm_info ("SWITCH: found better connection '%s/%s'"
" than current connection '%s/%s'. "
"same_ssid=%d, have_link=%d",
nm_device_get_iface (new_dev), new_essid, nm_device_get_iface (new_dev), new_essid,
nm_device_get_iface (old_dev), old_essid, nm_device_get_iface (old_dev), old_essid,
es, link); same_essid, link);
do_switch = TRUE; do_switch = TRUE;
} }
} /* Always prefer Ethernet over wireless, unless the user explicitly switched away. */ } /* Always prefer Ethernet over wireless, unless the user explicitly switched away. */

View File

@@ -386,6 +386,7 @@ static DBusMessage *nm_dbus_nm_create_wireless_network (DBusConnection *connecti
new_ap = nm_ap_new (); new_ap = nm_ap_new ();
nm_ap_set_essid (new_ap, essid); nm_ap_set_essid (new_ap, essid);
nm_ap_set_mode (new_ap, IW_MODE_ADHOC);
nm_ap_set_security (new_ap, security); nm_ap_set_security (new_ap, security);
g_object_unref (G_OBJECT (security)); g_object_unref (G_OBJECT (security));
nm_ap_set_user_created (new_ap, TRUE); nm_ap_set_user_created (new_ap, TRUE);

View File

@@ -2712,6 +2712,14 @@ real_activation_success_handler (NMDevice *dev,
/* Cache details in the info-daemon since the connect was successful */ /* Cache details in the info-daemon since the connect was successful */
automatic = !nm_act_request_get_user_requested (req); automatic = !nm_act_request_get_user_requested (req);
/* If it's a user-created ad-hoc network, add it to the device's scan list */
if (!automatic && (nm_ap_get_mode (ap) == IW_MODE_ADHOC) && nm_ap_get_user_created (ap))
{
NMAccessPointList *ap_list = nm_device_802_11_wireless_ap_list_get (self);
if (!nm_ap_list_get_ap_by_essid (ap_list, nm_ap_get_essid (ap)))
nm_ap_list_append_ap (ap_list, ap);
}
nm_device_802_11_wireless_get_bssid (self, &addr); nm_device_802_11_wireless_get_bssid (self, &addr);
if (!nm_ap_get_address (ap) || !nm_ethernet_address_is_valid (nm_ap_get_address (ap))) if (!nm_ap_get_address (ap) || !nm_ethernet_address_is_valid (nm_ap_get_address (ap)))
nm_ap_set_address (ap, &addr); nm_ap_set_address (ap, &addr);