On 15/05/2019 20:39, Edward Cree wrote: > A point for discussion: would it be better if, instead of the tcfa_index > (for which the driver has to know the rules about which flow_action > types share a namespace), we had some kind of globally unique cookie? > In the same way that rule->cookie is really a pointer, could we use the > address of the TC-internal data structure representing the action? Do > rules that share an action all point to the same struct tc_action in > their tcf_exts, for instance? A quick test showed that, indeed, they do; I'm now leaning towards the approach of adding "unsigned long cookie" to struct flow_action_entry and populating it with (unsigned long)act in tc_setup_flow_action(). Pablo, how do the two options interact with your netfilter offload? I'm guessing it's easier for you to find a unique pointer than to generate a unique u32 action_index for each action. I'm also assuming that netfilter doesn't have a notion of shared actions.
-Ed