• Jarno Rajahalme's avatar
    openvswitch: Use inverted tuple in ovs_ct_find_existing() if NATted. · 9ff464db
    Jarno Rajahalme authored
    The conntrack lookup for existing connections fails to invert the
    packet 5-tuple for NATted packets, and therefore fails to find the
    existing conntrack entry.  Conntrack only stores 5-tuples for incoming
    packets, and there are various situations where a lookup on a packet
    that has already been transformed by NAT needs to be made.  Looking up
    an existing conntrack entry upon executing packet received from the
    userspace is one of them.
    
    This patch fixes ovs_ct_find_existing() to invert the packet 5-tuple
    for the conntrack lookup whenever the packet has already been
    transformed by conntrack from its input form as evidenced by one of
    the NAT flags being set in the conntrack state metadata.
    
    Fixes: 05752523 ("openvswitch: Interface with NAT.")
    Signed-off-by: default avatarJarno Rajahalme <jarno@ovn.org>
    Acked-by: default avatarJoe Stringer <joe@ovn.org>
    Acked-by: default avatarPravin B Shelar <pshelar@ovn.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9ff464db
conntrack.c 37 KB