diff options
author | wenxu <wenxu@ucloud.cn> | 2021-03-16 16:33:54 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-03-16 15:22:18 -0700 |
commit | d29334c15d33a6a92d2043ca88f84cd5ad026c57 (patch) | |
tree | 3c0f9da1ac342ca7305feda8d48519e33f76ba49 /net/openvswitch/conntrack.h | |
parent | ce225298a0cde9e64494292bf34422553a22b68c (diff) | |
download | linux-stable-d29334c15d33a6a92d2043ca88f84cd5ad026c57.tar.gz linux-stable-d29334c15d33a6a92d2043ca88f84cd5ad026c57.tar.bz2 linux-stable-d29334c15d33a6a92d2043ca88f84cd5ad026c57.zip |
net/sched: act_api: fix miss set post_ct for ovs after do conntrack in act_ct
When openvswitch conntrack offload with act_ct action. The first rule
do conntrack in the act_ct in tc subsystem. And miss the next rule in
the tc and fallback to the ovs datapath but miss set post_ct flag
which will lead the ct_state_key with -trk flag.
Fixes: 7baf2429a1a9 ("net/sched: cls_flower add CT_FLAGS_INVALID flag support")
Signed-off-by: wenxu <wenxu@ucloud.cn>
Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch/conntrack.h')
-rw-r--r-- | net/openvswitch/conntrack.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/openvswitch/conntrack.h b/net/openvswitch/conntrack.h index 59dc32761b91..317e525c8a11 100644 --- a/net/openvswitch/conntrack.h +++ b/net/openvswitch/conntrack.h @@ -25,7 +25,8 @@ int ovs_ct_execute(struct net *, struct sk_buff *, struct sw_flow_key *, const struct ovs_conntrack_info *); int ovs_ct_clear(struct sk_buff *skb, struct sw_flow_key *key); -void ovs_ct_fill_key(const struct sk_buff *skb, struct sw_flow_key *key); +void ovs_ct_fill_key(const struct sk_buff *skb, struct sw_flow_key *key, + bool post_ct); int ovs_ct_put_key(const struct sw_flow_key *swkey, const struct sw_flow_key *output, struct sk_buff *skb); void ovs_ct_free_action(const struct nlattr *a); @@ -74,7 +75,8 @@ static inline int ovs_ct_clear(struct sk_buff *skb, } static inline void ovs_ct_fill_key(const struct sk_buff *skb, - struct sw_flow_key *key) + struct sw_flow_key *key, + bool post_ct) { key->ct_state = 0; key->ct_zone = 0; |