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,
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to