On Wed, Aug 23, 2023 at 03:41:02PM +0200, Nicolas Dichtel wrote: > The goal is to support a bpf_redirect() from an ethernet device (ingress) > to a ppp device (egress). > The l2 header is added automatically by the ppp driver, thus the ethernet > header should be removed. Reviewed-by: Guillaume Nault <gnault@xxxxxxxxxx> > CC: stable@xxxxxxxxxxxxxxx > Fixes: 27b29f63058d ("bpf: add bpf_redirect() helper") > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@xxxxxxxxx> > Tested-by: Siwar Zitouni <siwar.zitouni@xxxxxxxxx> > --- > > v2 -> v3: > - add a comment in the code > - rework the commit log > > v1 -> v2: > - I forgot the 'Tested-by' tag in the v1 :/ > > include/linux/if_arp.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h > index 1ed52441972f..10a1e81434cb 100644 > --- a/include/linux/if_arp.h > +++ b/include/linux/if_arp.h > @@ -53,6 +53,10 @@ static inline bool dev_is_mac_header_xmit(const struct net_device *dev) > case ARPHRD_NONE: > case ARPHRD_RAWIP: > case ARPHRD_PIMREG: > + /* PPP adds its l2 header automatically in ppp_start_xmit(). > + * This makes it look like an l3 device to __bpf_redirect() and tcf_mirred_init(). > + */ > + case ARPHRD_PPP: > return false; > default: > return true; > -- > 2.39.2 >