diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-07-07 03:56:43 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-07-07 03:56:43 +0000 |
commit | daaf02e41627ed98062865af2220a9e84c430dbf (patch) | |
tree | 432826f43b924d33c824f3f20b7ae3b9db3bbfd4 /package/wprobe/src | |
parent | 959bae346288ed9a40d1b5a3c39c04bf13c681ac (diff) | |
download | upstream-daaf02e41627ed98062865af2220a9e84c430dbf.tar.gz upstream-daaf02e41627ed98062865af2220a9e84c430dbf.tar.bz2 upstream-daaf02e41627ed98062865af2220a9e84c430dbf.zip |
wprobe: the bpf code expects direct-access fields to be in big endian, not cpu endian
SVN-Revision: 16733
Diffstat (limited to 'package/wprobe/src')
-rw-r--r-- | package/wprobe/src/kernel/wprobe-core.c | 6 |
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++) { |