Hi Marcelo, Thanks for reviewing! On Tue 17 Jan 2023 at 12:04, Marcelo Ricardo Leitner <marcelo.leitner@xxxxxxxxx> wrote: > On Fri, Jan 13, 2023 at 05:55:42PM +0100, Vlad Buslov wrote: > ... >> struct flow_match { >> @@ -288,6 +289,7 @@ struct flow_action_entry { >> } ct; >> struct { >> unsigned long cookie; >> + enum ip_conntrack_info ctinfo; >> u32 mark; >> u32 labels[4]; >> bool orig_dir; >> diff --git a/net/sched/act_ct.c b/net/sched/act_ct.c >> index 0ca2bb8ed026..515577f913a3 100644 >> --- a/net/sched/act_ct.c >> +++ b/net/sched/act_ct.c >> @@ -187,6 +187,7 @@ static void tcf_ct_flow_table_add_action_meta(struct nf_conn *ct, >> /* aligns with the CT reference on the SKB nf_ct_set */ >> entry->ct_metadata.cookie = (unsigned long)ct | ctinfo; > ^^^^^^^^^^^ > >> entry->ct_metadata.orig_dir = dir == IP_CT_DIR_ORIGINAL; >> + entry->ct_metadata.ctinfo = ctinfo; > > tcf_ct_flow_table_restore_skb() is doing: > enum ip_conntrack_info ctinfo = cookie & NFCT_INFOMASK; > > Not sure if it really needs this duplication then. Indeed! I wanted to preserve the cookie as opaque integer (similar to TC filter cookie), but since drivers are already aware about its contents we can just reuse it for my case and prevent duplication. > >> >> act_ct_labels = entry->ct_metadata.labels; >> ct_labels = nf_ct_labels_find(ct); >> -- >> 2.38.1 >>