aboutsummaryrefslogtreecommitdiffstats
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
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>
-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;