mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
6lowpan: fix udp compress ordering
In case ((ntohs(uh->source) & LOWPAN_NHC_UDP_8BIT_MASK) the order of uncompression is wrong. It's always first source port then destination port as second. See: http://tools.ietf.org/html/rfc6282#section-4.3.3 "Fields carried in-line (in part or in whole) appear in the same order as they do in the UDP header format" Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
5cede84c98
commit
95277eb1cd
@ -567,9 +567,9 @@ static void compress_udp_header(u8 **hc06_ptr, struct sk_buff *skb)
|
|||||||
pr_debug("UDP header: remove 8 bits of source\n");
|
pr_debug("UDP header: remove 8 bits of source\n");
|
||||||
tmp = LOWPAN_NHC_UDP_CS_P_10;
|
tmp = LOWPAN_NHC_UDP_CS_P_10;
|
||||||
lowpan_push_hc_data(hc06_ptr, &tmp, sizeof(tmp));
|
lowpan_push_hc_data(hc06_ptr, &tmp, sizeof(tmp));
|
||||||
lowpan_push_hc_data(hc06_ptr, &uh->dest, sizeof(uh->dest));
|
|
||||||
tmp = (u8)(uh->source - LOWPAN_NHC_UDP_8BIT_PORT);
|
tmp = (u8)(uh->source - LOWPAN_NHC_UDP_8BIT_PORT);
|
||||||
lowpan_push_hc_data(hc06_ptr, &tmp, sizeof(tmp));
|
lowpan_push_hc_data(hc06_ptr, &tmp, sizeof(tmp));
|
||||||
|
lowpan_push_hc_data(hc06_ptr, &uh->dest, sizeof(uh->dest));
|
||||||
} else {
|
} else {
|
||||||
pr_debug("UDP header: can't compress\n");
|
pr_debug("UDP header: can't compress\n");
|
||||||
tmp = LOWPAN_NHC_UDP_CS_P_00;
|
tmp = LOWPAN_NHC_UDP_CS_P_00;
|
||||||
|
Loading…
Reference in New Issue
Block a user