diff options
author | bschmidt <bschmidt@FreeBSD.org> | 2010-07-01 20:50:12 +0000 |
---|---|---|
committer | bschmidt <bschmidt@FreeBSD.org> | 2010-07-01 20:50:12 +0000 |
commit | 3b1f97758a277bff4cc1443e974c284f24d06d5b (patch) | |
tree | 56b7f55980d4e55396125ba7113871fce80387d9 /sys/net80211/ieee80211_crypto_ccmp.c | |
parent | 234db8607d0c787920735055e39ebc8ded6b35b0 (diff) | |
download | FreeBSD-src-3b1f97758a277bff4cc1443e974c284f24d06d5b.zip FreeBSD-src-3b1f97758a277bff4cc1443e974c284f24d06d5b.tar.gz |
- Introduce IEEE80211_KEY_NOREPLAY, a per-key flag to ignore replay
violations.
- Use SIOCGIFMEDIA to determine VAP's opmode, cache it and set
IEEE80211_KEY_NOREPLAY for AHDEMO and IBSS.
Approved by: rpaulo (mentor)
Diffstat (limited to 'sys/net80211/ieee80211_crypto_ccmp.c')
-rw-r--r-- | sys/net80211/ieee80211_crypto_ccmp.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/sys/net80211/ieee80211_crypto_ccmp.c b/sys/net80211/ieee80211_crypto_ccmp.c index 9ad2409..cb9ed0a 100644 --- a/sys/net80211/ieee80211_crypto_ccmp.c +++ b/sys/net80211/ieee80211_crypto_ccmp.c @@ -226,14 +226,8 @@ ccmp_decap(struct ieee80211_key *k, struct mbuf *m, int hdrlen) } tid = ieee80211_gettid(wh); pn = READ_6(ivp[0], ivp[1], ivp[4], ivp[5], ivp[6], ivp[7]); - /* - * NB: Multiple stations are using the same key in - * IBSS mode, there is currently no way to sync keyrsc - * counters without discarding too many frames. - */ - if (vap->iv_opmode != IEEE80211_M_IBSS && - vap->iv_opmode != IEEE80211_M_AHDEMO && - pn <= k->wk_keyrsc[tid]) { + if (pn <= k->wk_keyrsc[tid] && + (k->wk_flags & IEEE80211_KEY_NOREPLAY) == 0) { /* * Replay violation. */ |