• Florian Westphal's avatar
    netfilter: nat: fix src map lookup · 97772bcd
    Florian Westphal authored
    When doing initial conversion to rhashtable I replaced the bucket
    walk with a single rhashtable_lookup_fast().
    
    When moving to rhlist I failed to properly walk the list of identical
    tuples, but that is what is needed for this to work correctly.
    The table contains the original tuples, so the reply tuples are all
    distinct.
    
    We currently decide that mapping is (not) in range only based on the
    first entry, but in case its not we need to try the reply tuple of the
    next entry until we either find an in-range mapping or we checked
    all the entries.
    
    This bug makes nat core attempt collision resolution while it might be
    able to use the mapping as-is.
    
    Fixes: 870190a9 ("netfilter: nat: convert nat bysrc hash to rhashtable")
    Reported-by: default avatarJaco Kroon <jaco@uls.co.za>
    Tested-by: default avatarJaco Kroon <jaco@uls.co.za>
    Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
    Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
    97772bcd
nf_nat_core.c 23.7 KB