Re: [PATCH] Bluetooth: 6lowpan: Fix handling of uncompressed IPv6 packets

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

 



Hi,

good catch.

Acked-by: Jukka Rissanen <jukka.rissanen@xxxxxxxxxxxxxxx>


On Wed, 2016-01-13 at 16:57 +0100, Lukasz Duda wrote:
> This patch fixes incorrect handling of the 6lowpan packets that
> contain
> uncompressed IPv6 header.
> 
> RFC4944 specifies a special dispatch for 6lowpan to carry
> uncompressed
> IPv6 header. This dispatch (1 byte long) has to be removed during
> reception and skb data pointer has to be moved. To correctly point in
> the beginning of the IPv6 header the dispatch byte has to be pulled
> off
> before packet can be processed by netif_rx_in().
> 
> Test scenario: IPv6 packets are not correctly interpreted by the
> network
> layer when IPv6 header is not compressed (e.g. ICMPv6 Echo Reply is
> not
> propagated correctly to the ICMPv6 layer because the extra byte will
> make
> the header look corrupted).
> 
> Similar approach is done for IEEE 802.15.4.
> 
> Signed-off-by: Lukasz Duda <lukasz.duda@xxxxxxxxxxxxx>
> Signed-off-by: Glenn Ruben Bakke <glenn.ruben.bakke@xxxxxxxxxxxxx>
> ---
>  net/bluetooth/6lowpan.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
> index d040365..350f379 100644
> --- a/net/bluetooth/6lowpan.c
> +++ b/net/bluetooth/6lowpan.c
> @@ -307,6 +307,9 @@ static int recv_pkt(struct sk_buff *skb, struct
> net_device *dev,
>  
>  	/* check that it's our buffer */
>  	if (lowpan_is_ipv6(*skb_network_header(skb))) {
> +		/* Pull off the 1-byte of 6lowpan header. */
> +		skb_pull(skb, 1);
> +
>  		/* Copy the packet so that the IPv6 header is
>  		 * properly aligned.
>  		 */


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