Move AP events for STA connected/disconnected into one function
authorJouni Malinen <j@w1.fi>
Thu, 3 Nov 2011 20:17:41 +0000 (22:17 +0200)
committerJouni Malinen <j@w1.fi>
Thu, 3 Nov 2011 20:17:41 +0000 (22:17 +0200)
Instead of trying to remember to add wpa_msg() calls for every possible
path where a STA becomes authorized or unauthorized, use
ap_sta_set_authorized() to send these events more consistently.

Signed-hostap: Jouni Malinen <j@w1.fi>

src/ap/drv_callbacks.c
src/ap/ieee802_11.c
src/ap/ieee802_1x.c
src/ap/sta_info.c

index e6f13f8..e4b55af 100644 (file)
@@ -246,9 +246,8 @@ void hostapd_notif_disassoc(struct hostapd_data *hapd, const u8 *addr)
                return;
        }
 
+       ap_sta_set_authorized(hapd, sta, 0);
        sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC);
-       wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
-               MAC2STR(sta->addr));
        wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
        sta->acct_terminate_cause = RADIUS_ACCT_TERMINATE_CAUSE_USER_REQUEST;
        ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
index 3471e7c..108261a 100644 (file)
@@ -1111,9 +1111,8 @@ static void handle_disassoc(struct hostapd_data *hapd,
                return;
        }
 
+       ap_sta_set_authorized(hapd, sta, 0);
        sta->flags &= ~(WLAN_STA_ASSOC | WLAN_STA_ASSOC_REQ_OK);
-       wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
-               MAC2STR(sta->addr));
        wpa_auth_sm_event(sta->wpa_sm, WPA_DISASSOC);
        hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
                       HOSTAPD_LEVEL_INFO, "disassociated");
@@ -1161,10 +1160,9 @@ static void handle_deauth(struct hostapd_data *hapd,
                return;
        }
 
+       ap_sta_set_authorized(hapd, sta, 0);
        sta->flags &= ~(WLAN_STA_AUTH | WLAN_STA_ASSOC |
                        WLAN_STA_ASSOC_REQ_OK);
-       wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
-               MAC2STR(sta->addr));
        wpa_auth_sm_event(sta->wpa_sm, WPA_DEAUTH);
        hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
                       HOSTAPD_LEVEL_DEBUG, "deauthenticated");
@@ -1519,8 +1517,6 @@ static void handle_assoc_cb(struct hostapd_data *hapd,
                 * step.
                 */
                ap_sta_set_authorized(hapd, sta, 1);
-               wpa_msg(hapd->msg_ctx, MSG_INFO,
-                       AP_STA_CONNECTED MACSTR, MAC2STR(sta->addr));
        }
 
        if (reassoc)
index f6e9f08..f3b23e6 100644 (file)
@@ -90,32 +90,11 @@ void ieee802_1x_set_sta_authorized(struct hostapd_data *hapd,
                return;
 
        if (authorized) {
-               if (!ap_sta_is_authorized(sta)) {
-                       const u8 *dev_addr = NULL;
-#ifdef CONFIG_P2P
-                       dev_addr = p2p_group_get_dev_addr(hapd->p2p_group,
-                                                         sta->addr);
-#endif /* CONFIG_P2P */
-
-                       if (dev_addr)
-                               wpa_msg(hapd->msg_ctx, MSG_INFO,
-                                       AP_STA_CONNECTED MACSTR
-                                       " dev_addr=" MACSTR,
-                                       MAC2STR(sta->addr), MAC2STR(dev_addr));
-                       else
-                               wpa_msg(hapd->msg_ctx, MSG_INFO,
-                                       AP_STA_CONNECTED MACSTR,
-                                       MAC2STR(sta->addr));
-               }
                ap_sta_set_authorized(hapd, sta, 1);
                res = hostapd_set_authorized(hapd, sta, 1);
                hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
                               HOSTAPD_LEVEL_DEBUG, "authorizing port");
        } else {
-               if (ap_sta_is_authorized(sta) && (sta->flags & WLAN_STA_ASSOC))
-                       wpa_msg(hapd->msg_ctx, MSG_INFO,
-                               AP_STA_DISCONNECTED MACSTR,
-                               MAC2STR(sta->addr));
                ap_sta_set_authorized(hapd, sta, 0);
                res = hostapd_set_authorized(hapd, sta, 0);
                hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE8021X,
index 7ec6564..dc689ba 100644 (file)
@@ -351,6 +351,7 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx)
                                       hapd, sta);
                break;
        case STA_DISASSOC:
+               ap_sta_set_authorized(hapd, sta, 0);
                sta->flags &= ~WLAN_STA_ASSOC;
                ieee802_1x_notify_port_enabled(sta->eapol_sm, 0);
                if (!sta->acct_terminate_cause)
@@ -378,9 +379,6 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx)
                mlme_deauthenticate_indication(
                        hapd, sta,
                        WLAN_REASON_PREV_AUTH_NOT_VALID);
-
-               wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
-                       MAC2STR(sta->addr));
                ap_free_sta(hapd, sta);
                break;
        }
@@ -776,10 +774,25 @@ void ap_sta_set_authorized(struct hostapd_data *hapd, struct sta_info *sta,
        if (!!authorized == !!(sta->flags & WLAN_STA_AUTHORIZED))
                return;
 
-       if (authorized)
+       if (authorized) {
+               const u8 *dev_addr = NULL;
+#ifdef CONFIG_P2P
+               dev_addr = p2p_group_get_dev_addr(hapd->p2p_group, sta->addr);
+#endif /* CONFIG_P2P */
+               if (dev_addr)
+                       wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED
+                               MACSTR " dev_addr=" MACSTR,
+                               MAC2STR(sta->addr), MAC2STR(dev_addr));
+               else
+                       wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED
+                               MACSTR, MAC2STR(sta->addr));
+
                sta->flags |= WLAN_STA_AUTHORIZED;
-       else
+       } else {
+               wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED MACSTR,
+                       MAC2STR(sta->addr));
                sta->flags &= ~WLAN_STA_AUTHORIZED;
+       }
 
        if (hapd->sta_authorized_cb)
                hapd->sta_authorized_cb(hapd->sta_authorized_cb_ctx,