aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-05-11 08:43:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-05-11 15:24:07 -0400
commite80cf8537ae54ec96c389055d6e9b0ef630c042d (patch)
treec312e6f4c42bf9d8e87dcad3ebff1de2497297f7 /net/wireless/nl80211.c
parent528769cf1e422d932052be1487459262f3d75333 (diff)
cfg80211: disallow interfering with stations on non-AP
On non-AP interfaces userspace has no business interfering with the station management, this can confuse mac80211 (and other drivers probably wouldn't support it anyway). Allow adding and removing stations only on AP interfaces. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/nl80211.c')
-rw-r--r--net/wireless/nl80211.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 79927706937a..a39e4644778b 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1746,6 +1746,12 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info)
1746 if (err) 1746 if (err)
1747 goto out_rtnl; 1747 goto out_rtnl;
1748 1748
1749 if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP &&
1750 dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP_VLAN) {
1751 err = -EINVAL;
1752 goto out;
1753 }
1754
1749 err = get_vlan(info->attrs[NL80211_ATTR_STA_VLAN], drv, &params.vlan); 1755 err = get_vlan(info->attrs[NL80211_ATTR_STA_VLAN], drv, &params.vlan);
1750 if (err) 1756 if (err)
1751 goto out; 1757 goto out;
@@ -1789,6 +1795,12 @@ static int nl80211_del_station(struct sk_buff *skb, struct genl_info *info)
1789 if (err) 1795 if (err)
1790 goto out_rtnl; 1796 goto out_rtnl;
1791 1797
1798 if (dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP &&
1799 dev->ieee80211_ptr->iftype != NL80211_IFTYPE_AP_VLAN) {
1800 err = -EINVAL;
1801 goto out;
1802 }
1803
1792 if (!drv->ops->del_station) { 1804 if (!drv->ops->del_station) {
1793 err = -EOPNOTSUPP; 1805 err = -EOPNOTSUPP;
1794 goto out; 1806 goto out;