mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-17 10:26:15 +00:00
add IEEE80211_KEY_UNDEFINED and use it instead of local defs
Obtained from: netbsd
This commit is contained in:
parent
b265ac32c2
commit
cda15ce18b
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=167432
@ -521,7 +521,7 @@ ieee80211_crypto_encap(struct ieee80211com *ic,
|
|||||||
*/
|
*/
|
||||||
wh = mtod(m, struct ieee80211_frame *);
|
wh = mtod(m, struct ieee80211_frame *);
|
||||||
if (IEEE80211_IS_MULTICAST(wh->i_addr1) ||
|
if (IEEE80211_IS_MULTICAST(wh->i_addr1) ||
|
||||||
ni->ni_ucastkey.wk_cipher == &ieee80211_cipher_none) {
|
IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) {
|
||||||
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE) {
|
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE) {
|
||||||
IEEE80211_DPRINTF(ic, IEEE80211_MSG_CRYPTO,
|
IEEE80211_DPRINTF(ic, IEEE80211_MSG_CRYPTO,
|
||||||
"[%s] no default transmit key (%s) deftxkey %u\n",
|
"[%s] no default transmit key (%s) deftxkey %u\n",
|
||||||
@ -577,7 +577,7 @@ ieee80211_crypto_decap(struct ieee80211com *ic,
|
|||||||
ivp = mtod(m, const u_int8_t *) + hdrlen; /* XXX contig */
|
ivp = mtod(m, const u_int8_t *) + hdrlen; /* XXX contig */
|
||||||
keyid = ivp[IEEE80211_WEP_IVLEN];
|
keyid = ivp[IEEE80211_WEP_IVLEN];
|
||||||
if (IEEE80211_IS_MULTICAST(wh->i_addr1) ||
|
if (IEEE80211_IS_MULTICAST(wh->i_addr1) ||
|
||||||
ni->ni_ucastkey.wk_cipher == &ieee80211_cipher_none)
|
IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey))
|
||||||
k = &ic->ic_nw_keys[keyid >> 6];
|
k = &ic->ic_nw_keys[keyid >> 6];
|
||||||
else
|
else
|
||||||
k = &ni->ni_ucastkey;
|
k = &ni->ni_ucastkey;
|
||||||
|
@ -169,6 +169,9 @@ struct ieee80211_cipher {
|
|||||||
};
|
};
|
||||||
extern const struct ieee80211_cipher ieee80211_cipher_none;
|
extern const struct ieee80211_cipher ieee80211_cipher_none;
|
||||||
|
|
||||||
|
#define IEEE80211_KEY_UNDEFINED(k) \
|
||||||
|
((k)->wk_cipher == &ieee80211_cipher_none)
|
||||||
|
|
||||||
void ieee80211_crypto_register(const struct ieee80211_cipher *);
|
void ieee80211_crypto_register(const struct ieee80211_cipher *);
|
||||||
void ieee80211_crypto_unregister(const struct ieee80211_cipher *);
|
void ieee80211_crypto_unregister(const struct ieee80211_cipher *);
|
||||||
int ieee80211_crypto_available(u_int cipher);
|
int ieee80211_crypto_available(u_int cipher);
|
||||||
|
@ -573,7 +573,6 @@ ieee80211_mbuf_adjust(struct ieee80211com *ic, int hdrsize,
|
|||||||
#undef TO_BE_RECLAIMED
|
#undef TO_BE_RECLAIMED
|
||||||
}
|
}
|
||||||
|
|
||||||
#define KEY_UNDEFINED(k) ((k).wk_cipher == &ieee80211_cipher_none)
|
|
||||||
/*
|
/*
|
||||||
* Return the transmit key to use in sending a unicast frame.
|
* Return the transmit key to use in sending a unicast frame.
|
||||||
* If a unicast key is set we use that. When no unicast key is set
|
* If a unicast key is set we use that. When no unicast key is set
|
||||||
@ -582,9 +581,9 @@ ieee80211_mbuf_adjust(struct ieee80211com *ic, int hdrsize,
|
|||||||
static __inline struct ieee80211_key *
|
static __inline struct ieee80211_key *
|
||||||
ieee80211_crypto_getucastkey(struct ieee80211com *ic, struct ieee80211_node *ni)
|
ieee80211_crypto_getucastkey(struct ieee80211com *ic, struct ieee80211_node *ni)
|
||||||
{
|
{
|
||||||
if (KEY_UNDEFINED(ni->ni_ucastkey)) {
|
if (IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) {
|
||||||
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE ||
|
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE ||
|
||||||
KEY_UNDEFINED(ic->ic_nw_keys[ic->ic_def_txkey]))
|
IEEE80211_KEY_UNDEFINED(&ic->ic_nw_keys[ic->ic_def_txkey]))
|
||||||
return NULL;
|
return NULL;
|
||||||
return &ic->ic_nw_keys[ic->ic_def_txkey];
|
return &ic->ic_nw_keys[ic->ic_def_txkey];
|
||||||
} else {
|
} else {
|
||||||
@ -601,7 +600,7 @@ static __inline struct ieee80211_key *
|
|||||||
ieee80211_crypto_getmcastkey(struct ieee80211com *ic, struct ieee80211_node *ni)
|
ieee80211_crypto_getmcastkey(struct ieee80211com *ic, struct ieee80211_node *ni)
|
||||||
{
|
{
|
||||||
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE ||
|
if (ic->ic_def_txkey == IEEE80211_KEYIX_NONE ||
|
||||||
KEY_UNDEFINED(ic->ic_nw_keys[ic->ic_def_txkey]))
|
IEEE80211_KEY_UNDEFINED(&ic->ic_nw_keys[ic->ic_def_txkey]))
|
||||||
return NULL;
|
return NULL;
|
||||||
return &ic->ic_nw_keys[ic->ic_def_txkey];
|
return &ic->ic_nw_keys[ic->ic_def_txkey];
|
||||||
}
|
}
|
||||||
@ -752,7 +751,8 @@ ieee80211_encap(struct ieee80211com *ic, struct mbuf *m,
|
|||||||
if (eh.ether_type != htons(ETHERTYPE_PAE) ||
|
if (eh.ether_type != htons(ETHERTYPE_PAE) ||
|
||||||
((ic->ic_flags & IEEE80211_F_WPA) &&
|
((ic->ic_flags & IEEE80211_F_WPA) &&
|
||||||
(ic->ic_opmode == IEEE80211_M_STA ?
|
(ic->ic_opmode == IEEE80211_M_STA ?
|
||||||
!KEY_UNDEFINED(*key) : !KEY_UNDEFINED(ni->ni_ucastkey)))) {
|
!IEEE80211_KEY_UNDEFINED(key) :
|
||||||
|
!IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)))) {
|
||||||
wh->i_fc[1] |= IEEE80211_FC1_WEP;
|
wh->i_fc[1] |= IEEE80211_FC1_WEP;
|
||||||
/* XXX do fragmentation */
|
/* XXX do fragmentation */
|
||||||
if (!ieee80211_crypto_enmic(ic, key, m, 0)) {
|
if (!ieee80211_crypto_enmic(ic, key, m, 0)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user