• Alexander Aring's avatar
    6lowpan: lowpan_uncompress_addr with address_mode · ce2463b2
    Alexander Aring authored
    This patch drops the pre and postcount calculation from the
    lowpan_uncompress_addr function.We use instead a switch/case
    over address_mode value. The original implementation has several
    bugs in this function and it was hard to decrypt how it works.
    To make it maintainable and fix these bugs this patch basically
    reimplements lowpan_uncompress_addr from scratch.
    
    A list of bugs we found in the current implementation:
    
    1) Properly support uncompression of short-address based IPv6 addresses
       (instead of basically copying garbage)
    
    2) Fix use and uncompression of long-addresses based IPv6 addresses
    
    3) Add missing ff:fe00 in the case of SAM/DAM = 2 and M = 0
    Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
    Reviewed-by: default avatarWerner Almesberger <werner@almesberger.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ce2463b2
6lowpan.h 8.19 KB