[ovs-dev] [PATCH 5/7 v2] openvswitch: use nf_ct_get_tuplepr, invert_tuplepr

Yifeng Sun pkusunyifeng at gmail.com
Fri May 10 19:25:46 UTC 2019


From: Florian Westphal <fw at strlen.de>

Upstream commit:
    commit 60e3be94e6a1c5162a0763c9aafb5190b2b1fdce
    Author: Florian Westphal <fw at strlen.de>
    Date:   Mon Jun 25 17:55:32 2018 +0200

    openvswitch: use nf_ct_get_tuplepr, invert_tuplepr

    These versions deal with the l3proto/l4proto details internally.
    It removes only caller of nf_ct_get_tuple, so make it static.

    After this, l3proto->get_l4proto() can be removed in a followup patch.

    Signed-off-by: Florian Westphal <fw at strlen.de>
    Acked-by: Pravin B Shelar <pshelar at ovn.org>
    Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>

This patch backports the above upstream kernel patch to OVS.

Cc: Florian Westphal <fw at strlen.de>
Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
Acked-by: Yi-Hung Wei <yihung.wei at gmail.com>
---
v1->v2: Fixed nf_ct_invert_tuplepr by YiHung's comments, Thanks YiHung.

 datapath/conntrack.c | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/datapath/conntrack.c b/datapath/conntrack.c
index 52825a6b20fb..292febb3c83e 100644
--- a/datapath/conntrack.c
+++ b/datapath/conntrack.c
@@ -646,23 +646,12 @@ static struct nf_conn *
 ovs_ct_find_existing(struct net *net, const struct nf_conntrack_zone *zone,
 		     u8 l3num, struct sk_buff *skb, bool natted)
 {
-	const struct nf_conntrack_l3proto *l3proto;
-	const struct nf_conntrack_l4proto *l4proto;
 	struct nf_conntrack_tuple tuple;
 	struct nf_conntrack_tuple_hash *h;
 	struct nf_conn *ct;
-	unsigned int dataoff;
-	u8 protonum;
 
-	l3proto = __nf_ct_l3proto_find(l3num);
-	if (l3proto->get_l4proto(skb, skb_network_offset(skb), &dataoff,
-				 &protonum) <= 0) {
-		pr_debug("ovs_ct_find_existing: Can't get protonum\n");
-		return NULL;
-	}
-	l4proto = __nf_ct_l4proto_find(l3num, protonum);
-	if (!nf_ct_get_tuple(skb, skb_network_offset(skb), dataoff, l3num,
-			     protonum, net, &tuple, l3proto, l4proto)) {
+	if (!nf_ct_get_tuplepr(skb, skb_network_offset(skb), l3num,
+			       net, &tuple)) {
 		pr_debug("ovs_ct_find_existing: Can't get tuple\n");
 		return NULL;
 	}
@@ -671,7 +660,7 @@ ovs_ct_find_existing(struct net *net, const struct nf_conntrack_zone *zone,
 	if (natted) {
 		struct nf_conntrack_tuple inverse;
 
-		if (!nf_ct_invert_tuple(&inverse, &tuple, l3proto, l4proto)) {
+		if (!nf_ct_invert_tuplepr(&inverse, &tuple)) {
 			pr_debug("ovs_ct_find_existing: Inversion failed!\n");
 			return NULL;
 		}
-- 
2.7.4



More information about the dev mailing list