• Alexander Aring's avatar
    ipv6: rpl: fix full address compression · 62e69776
    Alexander Aring authored
    This patch makes it impossible that cmpri or cmpre values are set to the
    value 16 which is not possible, because these are 4 bit values. We
    currently run in an overflow when assigning the value 16 to it.
    
    According to the standard a value of 16 can be interpreted as a full
    elided address which isn't possible to set as compression value. A reason
    why this cannot be set is that the current ipv6 header destination address
    should never show up inside the segments of the rpl header. In this case we
    run in a overflow and the address will have no compression at all. Means
    cmpri or compre is set to 0.
    
    As we handle cmpri and cmpre sometimes as unsigned char or 4 bit value
    inside the rpl header the current behaviour ends in an invalid header
    format. This patch simple use the best compression method if we ever run
    into the case that the destination address is showed up inside the rpl
    segments. We avoid the overflow handling and the rpl header is still valid,
    even when we have the destination address inside the rpl segments.
    Signed-off-by: default avatarAlexander Aring <alex.aring@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    62e69776
rpl.c 3.19 KB