On Tue, May 14, 2019 at 04:57:19PM +0200, Jiri Pirko wrote: > Thu, May 09, 2019 at 06:39:50PM CEST, pablo@xxxxxxxxxxxxx wrote: > >This patch renames: > > > >* struct tcf_block_cb to flow_block_cb. > >* struct tc_block_offload to flow_block_offload. > > > >And it exposes the flow_block_cb API through net/flow_offload.h. This > >renames the existing codebase to adapt it to this name. > > > >Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> > > [...] > > > >+ > >+void *flow_block_cb_priv(struct flow_block_cb *block_cb) > >+{ > >+ return block_cb->cb_priv; > >+} > >+EXPORT_SYMBOL(flow_block_cb_priv); > >+ > >+LIST_HEAD(flow_block_cb_list); > >+EXPORT_SYMBOL(flow_block_cb_list); > > I don't understand, why is this exported? Will stop exposing this in the next patchset version. > >+ > >+struct flow_block_cb *flow_block_cb_lookup(u32 block_index, tc_setup_cb_t *cb, > >+ void *cb_ident) > > 2 namespaces may have the same block_index, yet it is completely > unrelated block. The cb_ident Yes, a struct netns parameter here for flow_block_cb_lookup() is needed. I will also add a possible_net_t field to store this in the flow_block_cb object so we can just stay with one single list for all net namespaces by now. Thanks. > >+{ struct flow_block_cb *block_cb; > >+ > >+ list_for_each_entry(block_cb, &flow_block_cb_list, list) > >+ if (block_cb->block_index == block_index && > >+ block_cb->cb == cb && > >+ block_cb->cb_ident == cb_ident) > >+ return block_cb; > >+ return NULL; > >+} > >+EXPORT_SYMBOL(flow_block_cb_lookup); > > [...]