net: move the nat function to nf_nat_ovs for ovs and tc
authorXin Long <lucien.xin@gmail.com>
Thu, 8 Dec 2022 16:56:12 +0000 (11:56 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Dec 2022 10:14:03 +0000 (10:14 +0000)
commitebddb1404900657b7f03a56ee4c34a9d218c4030
tree229260979b87bd6cd585ebf94fbd7939fa8254cd
parent0564c3e51bc7bb200e76d0cad2d7067cc77cb83e
net: move the nat function to nf_nat_ovs for ovs and tc

There are two nat functions are nearly the same in both OVS and
TC code, (ovs_)ct_nat_execute() and ovs_ct_nat/tcf_ct_act_nat().

This patch creates nf_nat_ovs.c under netfilter and moves them
there then exports nf_ct_nat() so that it can be shared by both
OVS and TC, and keeps the nat (type) check and nat flag update
in OVS and TC's own place, as these parts are different between
OVS and TC.

Note that in OVS nat function it was using skb->protocol to get
the proto as it already skips vlans in key_extract(), while it
doesn't in TC, and TC has to call skb_protocol() to get proto.
So in nf_ct_nat_execute(), we keep using skb_protocol() which
works for both OVS and TC contrack.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/netfilter/nf_nat.h
net/netfilter/Kconfig
net/netfilter/Makefile
net/netfilter/nf_nat_ovs.c [new file with mode: 0644]
net/openvswitch/Kconfig
net/openvswitch/conntrack.c
net/sched/Kconfig
net/sched/act_ct.c