diff options
author | Florian Westphal <fw@strlen.de> | 2017-02-23 16:19:09 -0800 |
---|---|---|
committer | Joe Stringer <joe@ovn.org> | 2017-02-23 17:11:49 -0800 |
commit | b641cb0bfb32cc6e9aa79d654612e85ab873f3ae (patch) | |
tree | a114b071ca566c881a86b808b5375beb3d46939f | |
parent | cbbf8141fd52eaf89c713482275d637ae6489225 (diff) | |
download | openvswitch-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.m4 | 1 | ||||
-rw-r--r-- | datapath/conntrack.c | 6 | ||||
-rw-r--r-- | datapath/linux/compat/include/linux/skbuff.h | 11 |
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 |