6lowpan: Fix fragmentation with link-local compressed addresses
When a new 6lowpan fragment is received, a skbuff is allocated for the reassembled packet. However when a 6lowpan packet compresses link-local addresses based on link-layer addresses, the processing function relies on the skb mac control block to find the related link-layer address. This patch copies the control block from the first fragment into the newly allocated skb to keep a trace of the link-layer addresses in case of a link-local compressed address. Edit: small changes on comment issue Signed-off-by: David Hauweele <david@hauweele.net> Signed-off-by: Alexander Aring <alex.aring@gmail.com> Reviewed-by: Werner Almesberger <werner@almesberger.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
84ce1ddfef
commit
31afe1f73e
1 changed files with 6 additions and 0 deletions
|
@ -698,6 +698,12 @@ lowpan_alloc_new_frame(struct sk_buff *skb, u16 len, u16 tag)
|
|||
skb_reserve(frame->skb, sizeof(struct ipv6hdr));
|
||||
skb_put(frame->skb, frame->length);
|
||||
|
||||
/* copy the first control block to keep a
|
||||
* trace of the link-layer addresses in case
|
||||
* of a link-local compressed address
|
||||
*/
|
||||
memcpy(frame->skb->cb, skb->cb, sizeof(skb->cb));
|
||||
|
||||
init_timer(&frame->timer);
|
||||
/* time out is the same as for ipv6 - 60 sec */
|
||||
frame->timer.expires = jiffies + LOWPAN_FRAG_TIMEOUT;
|
||||
|
|
Loading…
Reference in a new issue