• Jon Maloy's avatar
    tipc: allow closest-first lookup algorithm when legacy address is configured · b89afb11
    Jon Maloy authored
    The removal of an internal structure of the node address has an unwanted
    side effect.
    - Currently, if a user is sending an anycast message with destination
      domain 0, the tipc_namebl_translate() function will use the 'closest-
      first' algorithm to first look for a node local destination, and only
      when no such is found, will it resort to the cluster global 'round-
      robin' lookup algorithm.
    - Current users can get around this, and enforce unconditional use of
      global round-robin by indicating a destination as Z.0.0 or Z.C.0.
    - This option disappears when we make the node address flat, since the
      lookup algorithm has no way of recognizing this case. So, as long as
      there are node local destinations, the algorithm will always select
      one of those, and there is nothing the sender can do to change this.
    
    We solve this by eliminating the 'closest-first' option, which was never
    a good idea anyway, for non-legacy users, but only for those. To
    distinguish between legacy users and non-legacy users we introduce a new
    flag 'legacy_addr_format' in struct tipc_core, to be set when the user
    configures a legacy-style Z.C.N node address. Hence, when a legacy user
    indicates a zero lookup domain 'closest-first' is selected, and in all
    other cases we use 'round-robin'.
    Acked-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b89afb11
name_table.c 29.2 KB