• Florian Westphal's avatar
    netfilter: nat: remove l4 protocol port rovers · 6ed5943f
    Florian Westphal authored
    This is a leftover from days where single-cpu systems were common:
    Store last port used to resolve a clash to use it as a starting point when
    the next conflict needs to be resolved.
    
    When we have parallel attempt to connect to same address:port pair,
    its likely that both cores end up computing the same "available" port,
    as both use same starting port, and newly used ports won't become
    visible to other cores until the conntrack gets confirmed later.
    
    One of the cores then has to drop the packet at insertion time because
    the chosen new tuple turns out to be in use after all.
    
    Lets simplify this: remove port rover and use a pseudo-random starting
    point.
    
    Note that this doesn't make netfilter default to 'fully random' mode;
    the 'rover' was only used if NAT could not reuse source port as-is.
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    6ed5943f
nf_nat_proto_dccp.c 2.09 KB