Re: [PATCH nf-next 8/9] netfilter: flowtable: add flow_offload_tuple() helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/14/2020 2:15 AM, Pablo Neira Ayuso wrote:
> Consolidate code to configure the flow_cls_offload structure into one
> helper function.
>
> Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
> ---
>  net/netfilter/nf_flow_table_offload.c | 47 ++++++++++++++++++-----------------
>  1 file changed, 24 insertions(+), 23 deletions(-)
>
> diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c
> index 77b129f196c6..a08756dc96e4 100644
> --- a/net/netfilter/nf_flow_table_offload.c
> +++ b/net/netfilter/nf_flow_table_offload.c
> @@ -592,23 +592,25 @@ static void nf_flow_offload_init(struct flow_cls_offload *cls_flow,
>  	cls_flow->cookie = (unsigned long)tuple;
>  }
>  
> -static int flow_offload_tuple_add(struct flow_offload_work *offload,
> -				  struct nf_flow_rule *flow_rule,
> -				  enum flow_offload_tuple_dir dir)
> +static int flow_offload_tuple(struct nf_flowtable *flowtable,
> +			      struct flow_offload *flow,
> +			      struct nf_flow_rule *flow_rule,
> +			      enum flow_offload_tuple_dir dir,
> +			      int priority, int cmd,
> +			      struct list_head *block_cb_list)
>  {
> -	struct nf_flowtable *flowtable = offload->flowtable;
>  	struct flow_cls_offload cls_flow = {};
>  	struct flow_block_cb *block_cb;
>  	struct netlink_ext_ack extack;
>  	__be16 proto = ETH_P_ALL;
>  	int err, i = 0;
>  
> -	nf_flow_offload_init(&cls_flow, proto, offload->priority,
> -			     FLOW_CLS_REPLACE,
> -			     &offload->flow->tuplehash[dir].tuple, &extack);
> -	cls_flow.rule = flow_rule->rule;
> +	nf_flow_offload_init(&cls_flow, proto, priority, cmd,
> +			     &flow->tuplehash[dir].tuple, &extack);
> +	if (cmd == FLOW_CLS_REPLACE)
> +		cls_flow.rule = flow_rule->rule;
>  
> -	list_for_each_entry(block_cb, &flowtable->flow_block.cb_list, list) {
> +	list_for_each_entry(block_cb, block_cb_list, list) {
>  		err = block_cb->cb(TC_SETUP_CLSFLOWER, &cls_flow,
>  				   block_cb->cb_priv);
>  		if (err < 0)
> @@ -619,24 +621,23 @@ static int flow_offload_tuple_add(struct flow_offload_work *offload,
>  
>  	return i;
>  }
> +EXPORT_SYMBOL_GPL(flow_offload_tuple);
flow_offload_tuple is a static EXPORT_SYMBOL_GPL?
> +
> +static int flow_offload_tuple_add(struct flow_offload_work *offload,
> +				  struct nf_flow_rule *flow_rule,
> +				  enum flow_offload_tuple_dir dir)
> +{
> +	return flow_offload_tuple(offload->flowtable, offload->flow, flow_rule,
> +				  dir, offload->priority, FLOW_CLS_REPLACE,
> +				  &offload->flowtable->flow_block.cb_list);
> +}
>  
>  static void flow_offload_tuple_del(struct flow_offload_work *offload,
>  				   enum flow_offload_tuple_dir dir)
>  {
> -	struct nf_flowtable *flowtable = offload->flowtable;
> -	struct flow_cls_offload cls_flow = {};
> -	struct flow_block_cb *block_cb;
> -	struct netlink_ext_ack extack;
> -	__be16 proto = ETH_P_ALL;
> -
> -	nf_flow_offload_init(&cls_flow, proto, offload->priority,
> -			     FLOW_CLS_DESTROY,
> -			     &offload->flow->tuplehash[dir].tuple, &extack);
> -
> -	list_for_each_entry(block_cb, &flowtable->flow_block.cb_list, list)
> -		block_cb->cb(TC_SETUP_CLSFLOWER, &cls_flow, block_cb->cb_priv);
> -
> -	set_bit(NF_FLOW_HW_DEAD, &offload->flow->flags);
> +	flow_offload_tuple(offload->flowtable, offload->flow, NULL,
> +			   dir, offload->priority, FLOW_CLS_DESTROY,
> +			   &offload->flowtable->flow_block.cb_list);
>  }
>  
>  static int flow_offload_rule_add(struct flow_offload_work *offload,



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux