svn commit: r216528 - head/usr.sbin/wpa/hostapd
Bernhard Schmidt
bschmidt at FreeBSD.org
Sat Dec 18 19:58:23 UTC 2010
Author: bschmidt
Date: Sat Dec 18 19:58:23 2010
New Revision: 216528
URL: http://svn.freebsd.org/changeset/base/216528
Log:
Add bsd_send_mlme_param to aggregate IEEE80211_IOC_MLME ioctls:
- merge bsd_set_sta_authorized and bsd_sta_set_flags
- change bsd_set_sta_authorized, bsd_sta_deauth and bsd_sta_disassoc
to use bsd_send_mlme_param
Modified:
head/usr.sbin/wpa/hostapd/driver_freebsd.c
Modified: head/usr.sbin/wpa/hostapd/driver_freebsd.c
==============================================================================
--- head/usr.sbin/wpa/hostapd/driver_freebsd.c Sat Dec 18 19:56:45 2010 (r216527)
+++ head/usr.sbin/wpa/hostapd/driver_freebsd.c Sat Dec 18 19:58:23 2010 (r216528)
@@ -215,34 +215,35 @@ bsd_set_privacy(void *priv, int enabled)
}
static int
-bsd_set_sta_authorized(void *priv, const u8 *addr, int authorized)
+bsd_send_mlme_param(void *priv, const u8 op, const u16 reason, const u8 *addr)
{
- struct bsd_driver_data *drv = priv;
- struct hostapd_data *hapd = drv->hapd;
struct ieee80211req_mlme mlme;
- wpa_printf(MSG_DEBUG, "%s: addr=%s authorized=%d\n",
- __func__, ether_sprintf(addr), authorized);
-
- if (authorized)
- mlme.im_op = IEEE80211_MLME_AUTHORIZE;
- else
- mlme.im_op = IEEE80211_MLME_UNAUTHORIZE;
- mlme.im_reason = 0;
- memcpy(mlme.im_macaddr, addr, IEEE80211_ADDR_LEN);
+ os_memset(&mlme, 0, sizeof(mlme));
+ mlme.im_op = op;
+ mlme.im_reason = reason;
+ os_memcpy(mlme.im_macaddr, addr, IEEE80211_ADDR_LEN);
return set80211var(priv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme));
}
static int
-bsd_sta_set_flags(void *priv, const u8 *addr, int total_flags,
- int flags_or, int flags_and)
+bsd_set_sta_authorized(void *priv, const u8 *addr,
+ int total_flags, int flags_or, int flags_and)
{
+ int authorized = -1;
+
/* For now, only support setting Authorized flag */
if (flags_or & WPA_STA_AUTHORIZED)
- return bsd_set_sta_authorized(priv, addr, 1);
+ authorized = 1;
if (!(flags_and & WPA_STA_AUTHORIZED))
- return bsd_set_sta_authorized(priv, addr, 0);
- return 0;
+ authorized = 0;
+
+ if (authorized < 0)
+ return 0;
+
+ return bsd_send_mlme_param(priv, authorized ?
+ IEEE80211_MLME_AUTHORIZE :
+ IEEE80211_MLME_UNAUTHORIZE, 0, addr);
}
static int
@@ -413,32 +414,16 @@ bsd_set_opt_ie(void *priv, const u8 *ie,
static int
bsd_sta_deauth(void *priv, const u8 *own_addr, const u8 *addr, int reason_code)
{
- struct bsd_driver_data *drv = priv;
- struct hostapd_data *hapd = drv->hapd;
- struct ieee80211req_mlme mlme;
-
- wpa_printf(MSG_DEBUG, "%s: addr=%s reason_code=%d\n",
- __func__, ether_sprintf(addr), reason_code);
-
- mlme.im_op = IEEE80211_MLME_DEAUTH;
- mlme.im_reason = reason_code;
- memcpy(mlme.im_macaddr, addr, IEEE80211_ADDR_LEN);
- return set80211var(priv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme));
+ return bsd_send_mlme_param(priv, IEEE80211_MLME_DEAUTH, reason_code,
+ addr);
}
static int
-bsd_sta_disassoc(void *priv, const u8 *own_addr, const u8 *addr, int reason_code)
+bsd_sta_disassoc(void *priv, const u8 *own_addr, const u8 *addr,
+ int reason_code)
{
- struct bsd_driver_data *drv = priv;
- struct hostapd_data *hapd = drv->hapd;
- struct ieee80211req_mlme mlme;
-
- wpa_printf(MSG_DEBUG, "%s: addr=%s reason_code=%d\n",
- __func__, ether_sprintf(addr), reason_code);
-
- mlme.im_reason = reason_code;
- memcpy(mlme.im_macaddr, addr, IEEE80211_ADDR_LEN);
- return set80211var(priv, IEEE80211_IOC_MLME, &mlme, sizeof(mlme));
+ return bsd_send_mlme_param(priv, IEEE80211_MLME_DISASSOC, reason_code,
+ addr);
}
static void
@@ -807,7 +792,7 @@ const struct wpa_driver_ops wpa_driver_b
.get_seqnum = bsd_get_seqnum,
.flush = bsd_flush,
.set_generic_elem = bsd_set_opt_ie,
- .sta_set_flags = bsd_sta_set_flags,
+ .sta_set_flags = bsd_set_sta_authorized,
.read_sta_data = bsd_read_sta_driver_data,
.hapd_send_eapol = bsd_send_eapol,
.sta_disassoc = bsd_sta_disassoc,
More information about the svn-src-head
mailing list