PERFORCE change 137099 for review
Sam Leffler
sam at FreeBSD.org
Fri Mar 7 18:17:03 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=137099
Change 137099 by sam at sam_ebb on 2008/03/07 18:17:01
consolidate and extend debug msgs for mlme ops; in particular
add them to the state msgs as some cause subtle state changes
that don't go through the normal state machine
Affected files ...
.. //depot/projects/vap/sys/net80211/ieee80211_ioctl.c#37 edit
Differences ...
==== //depot/projects/vap/sys/net80211/ieee80211_ioctl.c#37 (text+ko) ====
@@ -1184,6 +1184,47 @@
};
static void
+mlmedebug(struct ieee80211_node *ni, int op, int reason)
+{
+#ifdef IEEE80211_DEBUG
+ static const struct {
+ int mask;
+ const char *opstr;
+ } ops[] = {
+ { 0, "op#0" },
+ { IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_ASSOC, "assoc" },
+ { IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_ASSOC, "disassoc" },
+ { IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_AUTH, "deauth" },
+ { IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_AUTH, "authorize" },
+ { IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_AUTH, "unauthorize" },
+ };
+ struct ieee80211vap *vap = ni->ni_vap;
+
+ if (op == IEEE80211_MLME_AUTH) {
+ IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+ IEEE80211_MSG_AUTH, ni,
+ "station authenticate %s via MLME (reason %d)",
+ reason == IEEE80211_STATUS_SUCCESS ? "ACCEPT" : "REJECT",
+ reason);
+ } else if (!(IEEE80211_MLME_ASSOC <= op && op <= IEEE80211_MLME_AUTH)) {
+ IEEE80211_NOTE(vap, IEEE80211_MSG_ANY, ni,
+ "unknown MLME request %d (reason %d)", op, reason);
+ } else if (reason == IEEE80211_STATUS_SUCCESS) {
+ IEEE80211_NOTE(vap, ops[op].mask, ni,
+ "station %s via MLME", ops[op].opstr);
+ } else {
+ IEEE80211_NOTE(vap, ops[op].mask, ni,
+ "station %s via MLME (reason %d)", ops[op].opstr, reason);
+ }
+#endif /* IEEE80211_DEBUG */
+}
+
+static void
domlme(void *arg, struct ieee80211_node *ni)
{
struct mlmeop *mop = arg;
@@ -1198,14 +1239,11 @@
*/
if (ni->ni_associd == 0)
return;
+ mlmedebug(ni, mop->op, mop->reason);
if (mop->op == IEEE80211_MLME_DEAUTH) {
- IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
- ni, "%s", "station deauth via MLME");
IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
mop->reason);
} else {
- IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_ASSOC,
- ni, "%s", "station disassoc via MLME");
IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DISASSOC,
mop->reason);
}
@@ -1227,6 +1265,7 @@
case IEEE80211_MLME_DEAUTH:
switch (vap->iv_opmode) {
case IEEE80211_M_STA:
+ mlmedebug(vap->iv_bss, op, reason);
/* XXX not quite right */
ieee80211_new_state(vap, IEEE80211_S_INIT, reason);
break;
@@ -1260,6 +1299,7 @@
break;
}
#endif
+ mlmedebug(vap->iv_bss, op, reason);
ni = ieee80211_ref_node(vap->iv_bss);
IEEE80211_SEND_MGMT(ni,
IEEE80211_FC0_SUBTYPE_DEAUTH, reason);
@@ -1279,10 +1319,7 @@
}
ni = ieee80211_find_vap_node(&ic->ic_sta, vap, mac);
if (ni != NULL) {
- IEEE80211_NOTE(vap,
- IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
- ni, "station %sauthorize via MLME",
- op == IEEE80211_MLME_AUTHORIZE ? "" : "un");
+ mlmedebug(ni, op, reason);
if (op == IEEE80211_MLME_AUTHORIZE)
ieee80211_node_authorize(ni);
else
@@ -1298,13 +1335,10 @@
}
ni = ieee80211_find_vap_node(&ic->ic_sta, vap, mac);
if (ni != NULL) {
+ mlmedebug(ni, op, reason);
if (reason == IEEE80211_STATUS_SUCCESS) {
IEEE80211_SEND_MGMT(ni,
IEEE80211_FC0_SUBTYPE_AUTH, 2);
- IEEE80211_NOTE(vap,
- IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
- ni, "%s",
- "station authenticate ACCEPT via MLME");
/*
* For shared key auth, just continue the
* exchange. Otherwise when 802.1x is not in
@@ -1318,10 +1352,6 @@
vap->iv_stats.is_rx_acl++;
ieee80211_send_error(ni, ni->ni_macaddr,
IEEE80211_FC0_SUBTYPE_AUTH, 2|(reason<<16));
- IEEE80211_NOTE(vap,
- IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
- ni, "station authenticate REJECT via MLME, "
- "reason %d", reason);
ieee80211_node_leave(ni);
}
ieee80211_free_node(ni);
@@ -1379,6 +1409,7 @@
ieee80211_scan_iterate(vap, mlmelookup, &lookup);
if (lookup.se == NULL)
return ENOENT;
+ mlmedebug(vap->iv_bss, IEEE80211_MLME_ASSOC, 0);
if (!ieee80211_sta_join(vap, lookup.se))
return EIO; /* XXX unique but could be better */
return 0;
More information about the p4-projects
mailing list