diff options
author | Paul Blakey <paulb@nvidia.com> | 2021-12-14 19:24:34 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-12-17 18:06:35 -0800 |
commit | 3849595866166b23bf6a0cb9ff87e06423167f67 (patch) | |
tree | b8826fcbdb0a89278891d4aac30d2c60977147e2 /include/net/pkt_sched.h | |
parent | ec624fe740b416fb68d536b37fb8eef46f90b5c2 (diff) | |
download | lwn-3849595866166b23bf6a0cb9ff87e06423167f67.tar.gz lwn-3849595866166b23bf6a0cb9ff87e06423167f67.zip |
net/sched: flow_dissector: Fix matching on zone id for invalid conns
If ct rejects a flow, it removes the conntrack info from the skb.
act_ct sets the post_ct variable so the dissector will see this case
as an +tracked +invalid state, but the zone id is lost with the
conntrack info.
To restore the zone id on such cases, set the last executed zone,
via the tc control block, when passing ct, and read it back in the
dissector if there is no ct info on the skb (invalid connection).
Fixes: 7baf2429a1a9 ("net/sched: cls_flower add CT_FLAGS_INVALID flag support")
Signed-off-by: Paul Blakey <paulb@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include/net/pkt_sched.h')
-rw-r--r-- | include/net/pkt_sched.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 05f18e81f3e8..9e71691c491b 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h @@ -198,6 +198,7 @@ struct tc_skb_cb { u16 mru; bool post_ct; + u16 zone; /* Only valid if post_ct = true */ }; static inline struct tc_skb_cb *tc_skb_cb(const struct sk_buff *skb) |