mac80211: wep.c use new frame control helpers
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
3a078876ca
commit
70217d7f83
1 changed files with 15 additions and 24 deletions
|
@ -84,20 +84,17 @@ static u8 *ieee80211_wep_add_iv(struct ieee80211_local *local,
|
||||||
struct sk_buff *skb,
|
struct sk_buff *skb,
|
||||||
struct ieee80211_key *key)
|
struct ieee80211_key *key)
|
||||||
{
|
{
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
u16 fc;
|
unsigned int hdrlen;
|
||||||
int hdrlen;
|
|
||||||
u8 *newhdr;
|
u8 *newhdr;
|
||||||
|
|
||||||
fc = le16_to_cpu(hdr->frame_control);
|
hdr->frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED);
|
||||||
fc |= IEEE80211_FCTL_PROTECTED;
|
|
||||||
hdr->frame_control = cpu_to_le16(fc);
|
|
||||||
|
|
||||||
if (WARN_ON(skb_tailroom(skb) < WEP_ICV_LEN ||
|
if (WARN_ON(skb_tailroom(skb) < WEP_ICV_LEN ||
|
||||||
skb_headroom(skb) < WEP_IV_LEN))
|
skb_headroom(skb) < WEP_IV_LEN))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
hdrlen = ieee80211_get_hdrlen(fc);
|
hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||||
newhdr = skb_push(skb, WEP_IV_LEN);
|
newhdr = skb_push(skb, WEP_IV_LEN);
|
||||||
memmove(newhdr, newhdr + WEP_IV_LEN, hdrlen);
|
memmove(newhdr, newhdr + WEP_IV_LEN, hdrlen);
|
||||||
ieee80211_wep_get_iv(local, key, newhdr + hdrlen);
|
ieee80211_wep_get_iv(local, key, newhdr + hdrlen);
|
||||||
|
@ -109,12 +106,10 @@ static void ieee80211_wep_remove_iv(struct ieee80211_local *local,
|
||||||
struct sk_buff *skb,
|
struct sk_buff *skb,
|
||||||
struct ieee80211_key *key)
|
struct ieee80211_key *key)
|
||||||
{
|
{
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
u16 fc;
|
unsigned int hdrlen;
|
||||||
int hdrlen;
|
|
||||||
|
|
||||||
fc = le16_to_cpu(hdr->frame_control);
|
hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||||
hdrlen = ieee80211_get_hdrlen(fc);
|
|
||||||
memmove(skb->data + WEP_IV_LEN, skb->data, hdrlen);
|
memmove(skb->data + WEP_IV_LEN, skb->data, hdrlen);
|
||||||
skb_pull(skb, WEP_IV_LEN);
|
skb_pull(skb, WEP_IV_LEN);
|
||||||
}
|
}
|
||||||
|
@ -224,17 +219,15 @@ int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
|
||||||
u32 klen;
|
u32 klen;
|
||||||
u8 *rc4key;
|
u8 *rc4key;
|
||||||
u8 keyidx;
|
u8 keyidx;
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
u16 fc;
|
unsigned int hdrlen;
|
||||||
int hdrlen;
|
|
||||||
size_t len;
|
size_t len;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
fc = le16_to_cpu(hdr->frame_control);
|
if (!ieee80211_has_protected(hdr->frame_control))
|
||||||
if (!(fc & IEEE80211_FCTL_PROTECTED))
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
hdrlen = ieee80211_get_hdrlen(fc);
|
hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||||
|
|
||||||
if (skb->len < 8 + hdrlen)
|
if (skb->len < 8 + hdrlen)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -281,17 +274,15 @@ int ieee80211_wep_decrypt(struct ieee80211_local *local, struct sk_buff *skb,
|
||||||
|
|
||||||
u8 * ieee80211_wep_is_weak_iv(struct sk_buff *skb, struct ieee80211_key *key)
|
u8 * ieee80211_wep_is_weak_iv(struct sk_buff *skb, struct ieee80211_key *key)
|
||||||
{
|
{
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
u16 fc;
|
unsigned int hdrlen;
|
||||||
int hdrlen;
|
|
||||||
u8 *ivpos;
|
u8 *ivpos;
|
||||||
u32 iv;
|
u32 iv;
|
||||||
|
|
||||||
fc = le16_to_cpu(hdr->frame_control);
|
if (!ieee80211_has_protected(hdr->frame_control))
|
||||||
if (!(fc & IEEE80211_FCTL_PROTECTED))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
hdrlen = ieee80211_get_hdrlen(fc);
|
hdrlen = ieee80211_hdrlen(hdr->frame_control);
|
||||||
ivpos = skb->data + hdrlen;
|
ivpos = skb->data + hdrlen;
|
||||||
iv = (ivpos[0] << 16) | (ivpos[1] << 8) | ivpos[2];
|
iv = (ivpos[0] << 16) | (ivpos[1] << 8) | ivpos[2];
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue