Hi,

On Tue, Jul 07, 2026 at 11:10:41AM +0200, Eric Woudstra wrote:
> Add nf_flow_rule_bridge().
> 
> It only calls the common rule and adds the redirect.

I decided to use the new _unsupp() function, so we don't pretend
bridge hw offload is already supported. We will need a driver before
we can add this, this stub does not provide much. I guess your goal
was just to avoid a crash here.

> Reviewed-by: Nikolay Aleksandrov <[email protected]>
> Signed-off-by: Eric Woudstra <[email protected]>
> ---
>  include/net/netfilter/nf_flow_table.h |  3 +++
>  net/netfilter/nf_flow_table_offload.c | 13 +++++++++++++
>  2 files changed, 16 insertions(+)
> 
> diff --git a/include/net/netfilter/nf_flow_table.h 
> b/include/net/netfilter/nf_flow_table.h
> index 7b23b245a5a86..5c6e3b65ae85b 100644
> --- a/include/net/netfilter/nf_flow_table.h
> +++ b/include/net/netfilter/nf_flow_table.h
> @@ -368,6 +368,9 @@ void nf_flow_table_offload_flush_cleanup(struct 
> nf_flowtable *flowtable);
>  int nf_flow_table_offload_setup(struct nf_flowtable *flowtable,
>                               struct net_device *dev,
>                               enum flow_block_command cmd);
> +int nf_flow_rule_bridge(struct net *net, struct flow_offload *flow,
> +                     enum flow_offload_tuple_dir dir,
> +                     struct nf_flow_rule *flow_rule);
>  int nf_flow_rule_route_ipv4(struct net *net, struct flow_offload *flow,
>                           enum flow_offload_tuple_dir dir,
>                           struct nf_flow_rule *flow_rule);
> diff --git a/net/netfilter/nf_flow_table_offload.c 
> b/net/netfilter/nf_flow_table_offload.c
> index 002ec15d988bd..5566ebda7b7d3 100644
> --- a/net/netfilter/nf_flow_table_offload.c
> +++ b/net/netfilter/nf_flow_table_offload.c
> @@ -740,6 +740,19 @@ nf_flow_rule_route_common(struct net *net, const struct 
> flow_offload *flow,
>       return 0;
>  }
>  
> +int nf_flow_rule_bridge(struct net *net, struct flow_offload *flow,
> +                     enum flow_offload_tuple_dir dir,
> +                     struct nf_flow_rule *flow_rule)
> +{
> +     if (nf_flow_rule_route_common(net, flow, dir, flow_rule) < 0)
> +             return -1;
> +
> +     flow_offload_redirect(net, flow, dir, flow_rule);
> +
> +     return 0;
> +}
> +EXPORT_SYMBOL_GPL(nf_flow_rule_bridge);
> +
>  int nf_flow_rule_route_ipv4(struct net *net, struct flow_offload *flow,
>                           enum flow_offload_tuple_dir dir,
>                           struct nf_flow_rule *flow_rule)
> -- 
> 2.53.0
> 

Reply via email to