wprobe: the bpf code expects direct-access fields to be in big endian, not cpu endian

SVN-Revision: 16733
lede-17.01
Felix Fietkau 2009-07-07 03:56:43 +00:00
parent 959bae3462
commit daaf02e416
1 changed files with 5 additions and 1 deletions

View File

@ -203,6 +203,7 @@ wprobe_get_dev(struct nlattr *attr)
int int
wprobe_add_frame(struct wprobe_iface *dev, const struct wprobe_wlan_hdr *hdr, void *data, int len) wprobe_add_frame(struct wprobe_iface *dev, const struct wprobe_wlan_hdr *hdr, void *data, int len)
{ {
struct wprobe_wlan_hdr *new_hdr;
struct wprobe_filter *f; struct wprobe_filter *f;
struct sk_buff *skb; struct sk_buff *skb;
unsigned long flags; unsigned long flags;
@ -221,7 +222,10 @@ wprobe_add_frame(struct wprobe_iface *dev, const struct wprobe_wlan_hdr *hdr, vo
if (len + skb->len > WPROBE_MAX_FRAME_SIZE) if (len + skb->len > WPROBE_MAX_FRAME_SIZE)
len = WPROBE_MAX_FRAME_SIZE - skb->len; len = WPROBE_MAX_FRAME_SIZE - skb->len;
memcpy(skb_put(skb, f->hdrlen), hdr, sizeof(struct wprobe_wlan_hdr)); new_hdr = (struct wprobe_wlan_hdr *) skb_put(skb, f->hdrlen);
memcpy(new_hdr, hdr, sizeof(struct wprobe_wlan_hdr));
new_hdr->len = cpu_to_be16(new_hdr->len);
memcpy(skb_put(skb, len), data, len); memcpy(skb_put(skb, len), data, len);
for(i = 0; i < f->n_groups; i++) { for(i = 0; i < f->n_groups; i++) {