mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-06 06:37:59 +00:00
mac80211: Disallow to set multicast BSSID
Okay, here is the first of the five patches. After applying all of them you should be able to build/join huge city mesh networks (e.g. with the OLSR protocol) with the most of the mac80211 wireless drivers by setting a fixed BSSID in the ad hoc mode. (If you found no other bug/problem.) This was not specified in the original standard, but is a widely used de facto standard. The first patch now completely disallow to set multicast MAC addresses as BSSID. The behavior before was really strange. Signed-off-by: Alina Friedrichsen <x-alina@gmx.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
cca3e99861
commit
0efcdfd6ed
1 changed files with 7 additions and 2 deletions
|
@ -2548,11 +2548,16 @@ int ieee80211_sta_set_bssid(struct ieee80211_sub_if_data *sdata, u8 *bssid)
|
||||||
{
|
{
|
||||||
struct ieee80211_if_sta *ifsta;
|
struct ieee80211_if_sta *ifsta;
|
||||||
int res;
|
int res;
|
||||||
|
bool valid;
|
||||||
|
|
||||||
ifsta = &sdata->u.sta;
|
ifsta = &sdata->u.sta;
|
||||||
|
valid = is_valid_ether_addr(bssid);
|
||||||
|
|
||||||
if (memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0) {
|
if (memcmp(ifsta->bssid, bssid, ETH_ALEN) != 0) {
|
||||||
memcpy(ifsta->bssid, bssid, ETH_ALEN);
|
if(valid)
|
||||||
|
memcpy(ifsta->bssid, bssid, ETH_ALEN);
|
||||||
|
else
|
||||||
|
memset(ifsta->bssid, 0, ETH_ALEN);
|
||||||
res = 0;
|
res = 0;
|
||||||
/*
|
/*
|
||||||
* Hack! See also ieee80211_sta_set_ssid.
|
* Hack! See also ieee80211_sta_set_ssid.
|
||||||
|
@ -2566,7 +2571,7 @@ int ieee80211_sta_set_bssid(struct ieee80211_sub_if_data *sdata, u8 *bssid)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_valid_ether_addr(bssid))
|
if (valid)
|
||||||
ifsta->flags |= IEEE80211_STA_BSSID_SET;
|
ifsta->flags |= IEEE80211_STA_BSSID_SET;
|
||||||
else
|
else
|
||||||
ifsta->flags &= ~IEEE80211_STA_BSSID_SET;
|
ifsta->flags &= ~IEEE80211_STA_BSSID_SET;
|
||||||
|
|
Loading…
Add table
Reference in a new issue