aboutsummaryrefslogtreecommitdiffstats
path: root/package/wprobe
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-07-07 03:56:43 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-07-07 03:56:43 +0000
commit85a5d2b4ed4b522d1c8a892df9d72c3a09c2ba97 (patch)
tree845e500934af5f8f8295e5b01f5413b4a6252a9b /package/wprobe
parent5d71ca1405d645c673a99a35b5f0059102f6d392 (diff)
downloadupstream-85a5d2b4ed4b522d1c8a892df9d72c3a09c2ba97.tar.gz
upstream-85a5d2b4ed4b522d1c8a892df9d72c3a09c2ba97.tar.bz2
upstream-85a5d2b4ed4b522d1c8a892df9d72c3a09c2ba97.zip
wprobe: the bpf code expects direct-access fields to be in big endian, not cpu endian
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16733 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/wprobe')
-rw-r--r--package/wprobe/src/kernel/wprobe-core.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/package/wprobe/src/kernel/wprobe-core.c b/package/wprobe/src/kernel/wprobe-core.c
index f9dd282d55..ed224577ee 100644
--- a/package/wprobe/src/kernel/wprobe-core.c
+++ b/package/wprobe/src/kernel/wprobe-core.c
@@ -203,6 +203,7 @@ wprobe_get_dev(struct nlattr *attr)
int
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 sk_buff *skb;
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)
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);
for(i = 0; i < f->n_groups; i++) {