diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2009-11-24 18:01:01 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-28 15:05:06 -0500 |
commit | 2944b2c2d2dd884c550163c698577132588277d8 (patch) | |
tree | 5acf5a49af2a438c4085d6a8a1056670f114c25b /net | |
parent | 67fbb16be69d138a3b6645ec5395b487cb915c58 (diff) |
cfg80211: Add PMKSA wext compatibility handler
With the addition of the *_pmksa cfg80211 ops, we can now add the
corresponding wireless extensions compatibility handler.
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/wireless/wext-compat.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c index 29091ac9f989..584eb4826e02 100644 --- a/net/wireless/wext-compat.c +++ b/net/wireless/wext-compat.c | |||
@@ -1401,6 +1401,47 @@ int cfg80211_wext_giwessid(struct net_device *dev, | |||
1401 | } | 1401 | } |
1402 | EXPORT_SYMBOL_GPL(cfg80211_wext_giwessid); | 1402 | EXPORT_SYMBOL_GPL(cfg80211_wext_giwessid); |
1403 | 1403 | ||
1404 | int cfg80211_wext_siwpmksa(struct net_device *dev, | ||
1405 | struct iw_request_info *info, | ||
1406 | struct iw_point *data, char *extra) | ||
1407 | { | ||
1408 | struct wireless_dev *wdev = dev->ieee80211_ptr; | ||
1409 | struct cfg80211_registered_device *rdev = wiphy_to_dev(wdev->wiphy); | ||
1410 | struct cfg80211_pmksa cfg_pmksa; | ||
1411 | struct iw_pmksa *pmksa = (struct iw_pmksa *)extra; | ||
1412 | |||
1413 | memset(&cfg_pmksa, 0, sizeof(struct cfg80211_pmksa)); | ||
1414 | |||
1415 | if (wdev->iftype != NL80211_IFTYPE_STATION) | ||
1416 | return -EINVAL; | ||
1417 | |||
1418 | cfg_pmksa.bssid = pmksa->bssid.sa_data; | ||
1419 | cfg_pmksa.pmkid = pmksa->pmkid; | ||
1420 | |||
1421 | switch (pmksa->cmd) { | ||
1422 | case IW_PMKSA_ADD: | ||
1423 | if (!rdev->ops->set_pmksa) | ||
1424 | return -EOPNOTSUPP; | ||
1425 | |||
1426 | return rdev->ops->set_pmksa(&rdev->wiphy, dev, &cfg_pmksa); | ||
1427 | |||
1428 | case IW_PMKSA_REMOVE: | ||
1429 | if (!rdev->ops->del_pmksa) | ||
1430 | return -EOPNOTSUPP; | ||
1431 | |||
1432 | return rdev->ops->del_pmksa(&rdev->wiphy, dev, &cfg_pmksa); | ||
1433 | |||
1434 | case IW_PMKSA_FLUSH: | ||
1435 | if (!rdev->ops->flush_pmksa) | ||
1436 | return -EOPNOTSUPP; | ||
1437 | |||
1438 | return rdev->ops->flush_pmksa(&rdev->wiphy, dev); | ||
1439 | |||
1440 | default: | ||
1441 | return -EOPNOTSUPP; | ||
1442 | } | ||
1443 | } | ||
1444 | |||
1404 | static const iw_handler cfg80211_handlers[] = { | 1445 | static const iw_handler cfg80211_handlers[] = { |
1405 | [IW_IOCTL_IDX(SIOCGIWNAME)] = (iw_handler) cfg80211_wext_giwname, | 1446 | [IW_IOCTL_IDX(SIOCGIWNAME)] = (iw_handler) cfg80211_wext_giwname, |
1406 | [IW_IOCTL_IDX(SIOCSIWFREQ)] = (iw_handler) cfg80211_wext_siwfreq, | 1447 | [IW_IOCTL_IDX(SIOCSIWFREQ)] = (iw_handler) cfg80211_wext_siwfreq, |
@@ -1433,6 +1474,7 @@ static const iw_handler cfg80211_handlers[] = { | |||
1433 | [IW_IOCTL_IDX(SIOCSIWAUTH)] = (iw_handler) cfg80211_wext_siwauth, | 1474 | [IW_IOCTL_IDX(SIOCSIWAUTH)] = (iw_handler) cfg80211_wext_siwauth, |
1434 | [IW_IOCTL_IDX(SIOCGIWAUTH)] = (iw_handler) cfg80211_wext_giwauth, | 1475 | [IW_IOCTL_IDX(SIOCGIWAUTH)] = (iw_handler) cfg80211_wext_giwauth, |
1435 | [IW_IOCTL_IDX(SIOCSIWENCODEEXT)]= (iw_handler) cfg80211_wext_siwencodeext, | 1476 | [IW_IOCTL_IDX(SIOCSIWENCODEEXT)]= (iw_handler) cfg80211_wext_siwencodeext, |
1477 | [IW_IOCTL_IDX(SIOCSIWPMKSA)] = (iw_handler) cfg80211_wext_siwpmksa, | ||
1436 | }; | 1478 | }; |
1437 | 1479 | ||
1438 | const struct iw_handler_def cfg80211_wext_handler = { | 1480 | const struct iw_handler_def cfg80211_wext_handler = { |