• Jon Paul Maloy's avatar
    tipc: remove 'has_redundant_link' flag from STATE link protocol messages · b9d4c339
    Jon Paul Maloy authored
    The flag 'has_redundant_link' is defined only in RESET and ACTIVATE
    protocol messages. Due to an ambiguity in the protocol specification it
    is currently also transferred in STATE messages. Its value is used to
    initialize a link state variable, 'permit_changeover', which is used
    to inhibit futile link failover attempts when it is known that the
    peer node has no working links at the moment, although the local node
    may still think it has one.
    
    The fact that 'has_redundant_link' incorrectly is read from STATE
    messages has the effect that 'permit_changeover' sometimes gets a wrong
    value, and permanently blocks any links from being re-established. Such
    failures can only occur in in dual-link systems, and are extremely rare.
    This bug seems to have always been present in the code.
    
    Furthermore, since commit b4b56102
    ("tipc: Ensure both nodes recognize loss of contact between them"),
    the 'permit_changeover' field serves no purpose any more. The task of
    enforcing 'lost contact' cycles at both peer endpoints is now taken
    by a new mechanism, using the flags WAIT_NODE_DOWN and WAIT_PEER_DOWN
    in struct tipc_node to abort unnecessary failover attempts.
    
    We therefore remove the 'has_redundant_link' flag from STATE messages,
    as well as the now redundant 'permit_changeover' variable.
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
    Reviewed-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b9d4c339
node.h 5.11 KB