mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-13 12:00:40 +01:00
2006-05-05 Dan Williams <dcbw@redhat.com>
* src/nm-device-802-11-wireless.c - (nm_device_802_11_wireless_set_wep_enc_key): convert to nm_device_802_11_wireless_disable_encryption() since that's all we use it for anymore; we don't ever set WEP keys ourselves. - (real_deactivate_quickly): reset SSID and encryption keys - (real_deactivate): move SSID and encryption key reset to real_deactivate_quickly(), which gets run before us anyway git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1721 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
parent
2bd178e259
commit
8495eeca54
2 changed files with 30 additions and 76 deletions
10
ChangeLog
10
ChangeLog
|
|
@ -1,3 +1,13 @@
|
|||
2006-05-05 Dan Williams <dcbw@redhat.com>
|
||||
|
||||
* src/nm-device-802-11-wireless.c
|
||||
- (nm_device_802_11_wireless_set_wep_enc_key): convert to
|
||||
nm_device_802_11_wireless_disable_encryption() since that's all
|
||||
we use it for anymore; we don't ever set WEP keys ourselves.
|
||||
- (real_deactivate_quickly): reset SSID and encryption keys
|
||||
- (real_deactivate): move SSID and encryption key reset to
|
||||
real_deactivate_quickly(), which gets run before us anyway
|
||||
|
||||
2006-05-05 Robert Love <rml@novell.com>
|
||||
|
||||
* src/NetworkManager.c: Set the umask to 0022 when daemonizing, in case
|
||||
|
|
|
|||
|
|
@ -129,9 +129,7 @@ static void supplicant_cleanup (NMDevice80211Wireless *self);
|
|||
|
||||
static void remove_link_timeout (NMDevice80211Wireless *self);
|
||||
|
||||
static void nm_device_802_11_wireless_set_wep_enc_key (NMDevice80211Wireless *self,
|
||||
const char *key,
|
||||
int auth_method);
|
||||
static void nm_device_802_11_wireless_disable_encryption (NMDevice80211Wireless *self);
|
||||
|
||||
static void nm_device_802_11_wireless_event (NmNetlinkMonitor *monitor,
|
||||
GObject *obj,
|
||||
|
|
@ -494,6 +492,10 @@ real_deactivate_quickly (NMDevice *dev)
|
|||
|
||||
supplicant_cleanup (self);
|
||||
remove_link_timeout (self);
|
||||
|
||||
/* Clean up stuff, don't leave the card associated */
|
||||
nm_device_802_11_wireless_set_essid (self, "");
|
||||
nm_device_802_11_wireless_disable_encryption (self);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -506,9 +508,6 @@ real_deactivate (NMDevice *dev)
|
|||
app_data = nm_device_get_app_data (dev);
|
||||
g_assert (app_data);
|
||||
|
||||
/* Clean up stuff, don't leave the card associated */
|
||||
nm_device_802_11_wireless_set_essid (self, "");
|
||||
nm_device_802_11_wireless_set_wep_enc_key (self, NULL, 0);
|
||||
nm_device_802_11_wireless_set_mode (self, IW_MODE_INFRA);
|
||||
nm_device_802_11_wireless_set_scan_interval (app_data, self, NM_WIRELESS_SCAN_INTERVAL_ACTIVE);
|
||||
}
|
||||
|
|
@ -1641,91 +1640,36 @@ nm_device_802_11_wireless_get_bssid (NMDevice80211Wireless *self,
|
|||
|
||||
|
||||
/*
|
||||
* nm_device_set_wep_enc_key
|
||||
* nm_device_802_11_wireless_disable_encryption
|
||||
*
|
||||
* If a device is wireless, set the encryption key that it should use.
|
||||
* Clear any encryption keys the device may have set.
|
||||
*
|
||||
* key: encryption key to use, or NULL or "" to disable encryption.
|
||||
*/
|
||||
static void
|
||||
nm_device_802_11_wireless_set_wep_enc_key (NMDevice80211Wireless *self,
|
||||
const char *key,
|
||||
int auth_method)
|
||||
nm_device_802_11_wireless_disable_encryption (NMDevice80211Wireless *self)
|
||||
{
|
||||
const char * iface = nm_device_get_iface (NM_DEVICE (self));
|
||||
NMSock * sk;
|
||||
struct iwreq wreq;
|
||||
int keylen;
|
||||
unsigned char safe_key[IW_ENCODING_TOKEN_MAX + 1];
|
||||
gboolean set_key = FALSE;
|
||||
const char * iface;
|
||||
|
||||
g_return_if_fail (self != NULL);
|
||||
|
||||
/* Make sure the essid we get passed is a valid size */
|
||||
if (!key)
|
||||
safe_key[0] = '\0';
|
||||
else
|
||||
{
|
||||
strncpy ((char *) safe_key, key, IW_ENCODING_TOKEN_MAX);
|
||||
safe_key[IW_ENCODING_TOKEN_MAX] = '\0';
|
||||
}
|
||||
|
||||
iface = nm_device_get_iface (NM_DEVICE (self));
|
||||
if ((sk = nm_dev_sock_open (NM_DEVICE (self), DEV_WIRELESS, __FUNCTION__, NULL)))
|
||||
{
|
||||
wreq.u.data.pointer = (caddr_t) NULL;
|
||||
wreq.u.data.length = 0;
|
||||
wreq.u.data.flags = IW_ENCODE_ENABLED;
|
||||
struct iwreq wreq = {
|
||||
.u.data.pointer = (caddr_t) NULL,
|
||||
.u.data.length = 0,
|
||||
.u.data.flags = IW_ENCODE_DISABLED
|
||||
};
|
||||
|
||||
/* Unfortunately, some drivers (Cisco) don't make a distinction between
|
||||
* Open System authentication mode and whether or not to use WEP. You
|
||||
* DON'T have to use WEP when using Open System, but these cards force
|
||||
* it. Therefore, we have to set Open System mode when using WEP.
|
||||
*/
|
||||
|
||||
if (strlen ((char *) safe_key) == 0)
|
||||
{
|
||||
wreq.u.data.flags |= IW_ENCODE_DISABLED | IW_ENCODE_NOKEY;
|
||||
set_key = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned char parsed_key[IW_ENCODING_TOKEN_MAX + 1];
|
||||
|
||||
keylen = iw_in_key_full (nm_dev_sock_get_fd (sk), iface,
|
||||
(char *) safe_key, &parsed_key[0], &wreq.u.data.flags);
|
||||
if (keylen > 0)
|
||||
{
|
||||
switch (auth_method)
|
||||
{
|
||||
case IW_AUTH_ALG_OPEN_SYSTEM:
|
||||
wreq.u.data.flags |= IW_ENCODE_OPEN;
|
||||
break;
|
||||
case IW_AUTH_ALG_SHARED_KEY:
|
||||
wreq.u.data.flags |= IW_ENCODE_RESTRICTED;
|
||||
break;
|
||||
default:
|
||||
wreq.u.data.flags |= IW_ENCODE_RESTRICTED;
|
||||
break;
|
||||
}
|
||||
wreq.u.data.pointer = (caddr_t) &parsed_key;
|
||||
wreq.u.data.length = keylen;
|
||||
set_key = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (set_key)
|
||||
{
|
||||
#ifdef IOCTL_DEBUG
|
||||
nm_info ("%s: About to SET IWENCODE.", iface);
|
||||
nm_info ("%s: About to SET IWENCODE.", iface);
|
||||
#endif
|
||||
if (iw_set_ext (nm_dev_sock_get_fd (sk), iface, SIOCSIWENCODE, &wreq) == -1)
|
||||
if (iw_set_ext (nm_dev_sock_get_fd (sk), iface, SIOCSIWENCODE, &wreq) == -1)
|
||||
{
|
||||
if (errno != ENODEV)
|
||||
{
|
||||
if (errno != ENODEV)
|
||||
{
|
||||
nm_warning ("error setting key for device %s: %s",
|
||||
iface, strerror (errno));
|
||||
}
|
||||
nm_warning ("error setting key for device %s: %s",
|
||||
iface, strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue