Hi Simon, On ti, 2014-11-04 at 13:43 +0000, Simon Vincent wrote: > If you use RAW sockets the transport header offset is not set by the > ipv6 stack so when we get to the udp header compression it does not > compress the right part of the packet. > > This patch adds a check for this scenario and sets the transport > header offset. > > Signed-off-by: Simon Vincent <simon.vincent@xxxxxxxxxx> > --- > net/6lowpan/iphc.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/net/6lowpan/iphc.c b/net/6lowpan/iphc.c > index 73a7065..305bf2b 100644 > --- a/net/6lowpan/iphc.c > +++ b/net/6lowpan/iphc.c > @@ -512,9 +512,17 @@ static u8 lowpan_compress_addr_64(u8 **hc_ptr, u8 shift, > > static void compress_udp_header(u8 **hc_ptr, struct sk_buff *skb) > { > - struct udphdr *uh = udp_hdr(skb); > + struct udphdr *uh; > u8 tmp; > > + /* In the case of RAW sockets the transport header is not set by > + * the ip6 stack so we must set it ourselves > + */ > + if (skb->transport_header == skb->network_header) > + skb_set_transport_header(skb, sizeof(struct ipv6hdr)); > + > + uh = udp_hdr(skb); > + > if (((ntohs(uh->source) & LOWPAN_NHC_UDP_4BIT_MASK) == > LOWPAN_NHC_UDP_4BIT_PORT) && > ((ntohs(uh->dest) & LOWPAN_NHC_UDP_4BIT_MASK) == Acked-by: Jukka Rissanen <jukka.rissanen@xxxxxxxxxxxxxxx> Cheers, Jukka -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html