On Tue, May 14, 2019 at 04:57:19PM +0200, Jiri Pirko wrote:
> Thu, May 09, 2019 at 06:39:50PM CEST, [email protected] 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 <[email protected]>
>
> [...]
>
>
> >+
> >+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);
>
> [...]