Re: [PATCH bluetooth-next] ieee802154: 6lowpan: fix udp header compression when using raw skts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux