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>
This commit is contained in:
parent
e5d966eff3
commit
573701ce37
2 changed files with 9 additions and 3 deletions
|
@ -231,6 +231,7 @@
|
||||||
#define LOWPAN_NHC_UDP_CS_P_10 0xF2 /* source = 0xF0 + 8bit inline,
|
#define LOWPAN_NHC_UDP_CS_P_10 0xF2 /* source = 0xF0 + 8bit inline,
|
||||||
dest = 16 bit inline */
|
dest = 16 bit inline */
|
||||||
#define LOWPAN_NHC_UDP_CS_P_11 0xF3 /* source & dest = 0xF0B + 4bit inline */
|
#define LOWPAN_NHC_UDP_CS_P_11 0xF3 /* source & dest = 0xF0B + 4bit inline */
|
||||||
|
#define LOWPAN_NHC_UDP_CS_C 0x04 /* checksum elided */
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
/* print data in line */
|
/* print data in line */
|
||||||
|
|
|
@ -309,9 +309,14 @@ uncompress_udp_header(struct sk_buff *skb, struct udphdr *uh)
|
||||||
pr_debug("uncompressed UDP ports: src = %d, dst = %d\n",
|
pr_debug("uncompressed UDP ports: src = %d, dst = %d\n",
|
||||||
ntohs(uh->source), ntohs(uh->dest));
|
ntohs(uh->source), ntohs(uh->dest));
|
||||||
|
|
||||||
/* copy checksum */
|
/* checksum */
|
||||||
memcpy(&uh->check, &skb->data[0], 2);
|
if (tmp & LOWPAN_NHC_UDP_CS_C) {
|
||||||
skb_pull(skb, 2);
|
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
|
* UDP lenght needs to be infered from the lower layers
|
||||||
|
|
Loading…
Reference in a new issue