diff options
author | Alexander Aring <alex.aring@gmail.com> | 2013-12-17 17:21:25 +0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2013-12-17 18:16:48 +0400 |
commit | 573701ce3715434f01a8baea3255da8d04ad5979 (patch) | |
tree | 65925d37c0b3a48f0918e66716db81f364549834 /net/ieee802154/6lowpan_iphc.c | |
parent | e5d966eff3ac364e4505c7c4da632321657029b3 (diff) | |
download | linux-573701ce3715434f01a8baea3255da8d04ad5979.tar.xz |
6lowpan: add udp warning for elided checksum
Bit 5 of "UDP LOWPAN_NHC Format" indicate that the checksum can be
elided.
The host need to calculate the udp checksum afterwards but this isn't
supported right now.
See:
http://tools.ietf.org/html/rfc6282#section-4.3.3
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/ieee802154/6lowpan_iphc.c')
-rw-r--r-- | net/ieee802154/6lowpan_iphc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/net/ieee802154/6lowpan_iphc.c b/net/ieee802154/6lowpan_iphc.c index 02bf74d80e72..a70fa66b5357 100644 --- a/net/ieee802154/6lowpan_iphc.c +++ b/net/ieee802154/6lowpan_iphc.c @@ -309,9 +309,14 @@ uncompress_udp_header(struct sk_buff *skb, struct udphdr *uh) pr_debug("uncompressed UDP ports: src = %d, dst = %d\n", ntohs(uh->source), ntohs(uh->dest)); - /* copy checksum */ - memcpy(&uh->check, &skb->data[0], 2); - skb_pull(skb, 2); + /* checksum */ + if (tmp & LOWPAN_NHC_UDP_CS_C) { + pr_debug_ratelimited("checksum elided currently not supported\n"); + goto err; + } else { + memcpy(&uh->check, &skb->data[0], 2); + skb_pull(skb, 2); + } /* * UDP lenght needs to be infered from the lower layers |