• Jon Maloy's avatar
    tipc: make node number calculation reproducible · 5f75e0a0
    Jon Maloy authored
    The 32-bit node number, aka node hash or node address, is calculated
    based on the 128-bit node identity when it is not set explicitly by
    the user. In future commits we will need to perform this hash operation
    on peer nodes while feeling safe that we obtain the same result.
    
    We do this by interpreting the initial hash as a network byte order
    number. Whenever we need to use the number locally on a node
    we must therefore translate it to host byte order to obtain an
    architecure independent result.
    
    Furthermore, given the context where we use this number, we must not
    allow it to be zero unless the node identity also is zero. Hence, in
    the rare cases when the xor-ed hash value may end up as zero we replace
    it with a fix number, knowing that the code anyway is capable of
    handling hash collisions.
    Acked-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarJon Maloy <jmaloy@redhat.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    5f75e0a0
core.h 5.87 KB