mirror of
https://github.com/proski/madwifi
synced 2024-11-25 15:59:39 +03:00
Unify association request interface by having the madwifi private IOCTL translate to the wireless extensions interface.
git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3405 0192ed92-7a03-0410-a25b-9323aeb14dbd
This commit is contained in:
parent
545cf26ad4
commit
5cbfbae447
@ -510,7 +510,8 @@ ieee80211_ioctl_siwap(struct net_device *dev, struct iw_request_info *info,
|
||||
*/
|
||||
vap->iv_flags &= ~IEEE80211_F_DESBSSID;
|
||||
if (!IEEE80211_ADDR_NULL(&ap_addr->sa_data)) {
|
||||
if (!IEEE80211_ADDR_EQ(vap->iv_des_bssid, (u_int8_t*) "\xff\xff\xff\xff\xff\xff"))
|
||||
if (!IEEE80211_ADDR_EQ(vap->iv_des_bssid,
|
||||
(uint8_t[8]){0xff}))
|
||||
vap->iv_flags |= IEEE80211_F_DESBSSID;
|
||||
|
||||
IEEE80211_ADDR_COPY(vap->iv_des_bssid, &ap_addr->sa_data);
|
||||
@ -3638,27 +3639,6 @@ struct scanlookup { /* XXX: right place for declaration? */
|
||||
const struct ieee80211_scan_entry *se;
|
||||
};
|
||||
|
||||
/*
|
||||
* Match mac address and any ssid.
|
||||
*/
|
||||
static int
|
||||
mlmelookup(void *arg, const struct ieee80211_scan_entry *se)
|
||||
{
|
||||
struct scanlookup *look = arg;
|
||||
|
||||
if (!IEEE80211_ADDR_EQ(look->mac, se->se_macaddr))
|
||||
return 0;
|
||||
if (look->esslen != 0) {
|
||||
if (se->se_ssid[1] != look->esslen)
|
||||
return 0;
|
||||
if (memcmp(look->essid, se->se_ssid + 2, look->esslen))
|
||||
return 0;
|
||||
}
|
||||
look->se = se;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
ieee80211_ioctl_setmlme(struct net_device *dev, struct iw_request_info *info,
|
||||
void *w, char *extra)
|
||||
@ -3681,25 +3661,10 @@ ieee80211_ioctl_setmlme(struct net_device *dev, struct iw_request_info *info,
|
||||
switch (mlme->im_op) {
|
||||
case IEEE80211_MLME_ASSOC:
|
||||
if (vap->iv_opmode == IEEE80211_M_STA) {
|
||||
struct scanlookup lookup;
|
||||
|
||||
lookup.se = NULL;
|
||||
lookup.mac = mlme->im_macaddr;
|
||||
/* XXX use revised api w/ explicit ssid */
|
||||
lookup.esslen = vap->iv_des_ssid[0].len;
|
||||
lookup.essid = vap->iv_des_ssid[0].ssid;
|
||||
ieee80211_scan_iterate(ic, mlmelookup, &lookup);
|
||||
if (lookup.se != NULL) {
|
||||
vap->iv_nsdone = 0;
|
||||
vap->iv_nsparams.result = 0;
|
||||
if (ieee80211_sta_join(vap, lookup.se))
|
||||
while (!vap->iv_nsdone)
|
||||
IEEE80211_RESCHEDULE();
|
||||
if (!vap->iv_nsparams.result)
|
||||
return 0;
|
||||
return -EINVAL;
|
||||
} else
|
||||
return -ENOENT;
|
||||
struct sockaddr ap_addr;
|
||||
memset(&ap_addr, 0, sizeof(ap_addr));
|
||||
IEEE80211_ADDR_COPY(ap_addr.sa_data, mlme->im_macaddr);
|
||||
return ieee80211_ioctl_siwap(dev, NULL, &ap_addr, NULL);
|
||||
} else
|
||||
return -EOPNOTSUPP;
|
||||
case IEEE80211_MLME_DISASSOC:
|
||||
|
Loading…
Reference in New Issue
Block a user