summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2017-02-23 16:19:09 -0800
committerJoe Stringer <joe@ovn.org>2017-02-23 17:11:49 -0800
commitb641cb0bfb32cc6e9aa79d654612e85ab873f3ae (patch)
treea114b071ca566c881a86b808b5375beb3d46939f
parentcbbf8141fd52eaf89c713482275d637ae6489225 (diff)
downloadopenvswitch-b641cb0bfb32cc6e9aa79d654612e85ab873f3ae.tar.gz
datapath: add and use skb_nfct helper
Upstream commit: commit cb9c68363efb6d1f950ec55fb06e031ee70db5fc Author: Florian Westphal <fw@strlen.de> Date: Mon Jan 23 18:21:56 2017 +0100 skbuff: add and use skb_nfct helper Followup patch renames skb->nfct and changes its type so add a helper to avoid intrusive rename change later. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Jarno Rajahalme <jarno@ovn.org>
-rw-r--r--acinclude.m41
-rw-r--r--datapath/conntrack.c6
-rw-r--r--datapath/linux/compat/include/linux/skbuff.h11
3 files changed, 15 insertions, 3 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index e8b64b570..f26bcc1db 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -604,6 +604,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_clear_hash_if_not_l4])
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_postpush_rcsum])
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [lco_csum])
+ OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_nfct])
OVS_GREP_IFELSE([$KSRC/include/linux/types.h], [bool],
[OVS_DEFINE([HAVE_BOOL_TYPE])])
diff --git a/datapath/conntrack.c b/datapath/conntrack.c
index 3c51ce6bc..4a1b1ba69 100644
--- a/datapath/conntrack.c
+++ b/datapath/conntrack.c
@@ -762,8 +762,8 @@ static int __ovs_ct_lookup(struct net *net, struct sw_flow_key *key,
/* Associate skb with specified zone. */
if (tmpl) {
- if (skb->nfct)
- nf_conntrack_put(skb->nfct);
+ if (skb_nfct(skb))
+ nf_conntrack_put(skb_nfct(skb));
nf_conntrack_get(&tmpl->ct_general);
skb->nfct = &tmpl->ct_general;
skb->nfctinfo = IP_CT_NEW;
@@ -864,7 +864,7 @@ static int ovs_ct_lookup(struct net *net, struct sw_flow_key *key,
if (err)
return err;
- ct = (struct nf_conn *)skb->nfct;
+ ct = (struct nf_conn *)skb_nfct(skb);
if (ct)
nf_ct_deliver_cached_events(ct);
}
diff --git a/datapath/linux/compat/include/linux/skbuff.h b/datapath/linux/compat/include/linux/skbuff.h
index a2cbd780c..943d5f821 100644
--- a/datapath/linux/compat/include/linux/skbuff.h
+++ b/datapath/linux/compat/include/linux/skbuff.h
@@ -371,4 +371,15 @@ static inline __wsum lco_csum(struct sk_buff *skb)
return csum_partial(l4_hdr, csum_start - l4_hdr, partial);
}
#endif
+
+#ifndef HAVE_SKB_NFCT
+static inline struct nf_conntrack *skb_nfct(const struct sk_buff *skb)
+{
+#if IS_ENABLED(CONFIG_NF_CONNTRACK)
+ return skb->nfct;
+#else
+ return NULL;
+#endif
+}
+#endif
#endif