On Fri, May 06, 2022 at 01:06:20AM +0300, Wille Kuutti wrote: > Network traffic is not limited to only IPv4 and IPv6 protocols, but several > other L3 networking protocols are in common use in several > applications and deployment scenarios which also could utilize BPF. This > change enables the bpf_skb_adjust_room BPF helper to adjust the > room after the MAC header using BPF_ADJ_ROOM_MAC option for packets with any > L3 payload. For BPF_ADJ_ROOM_NET option only IPv4 and IPv6 are > still supported as each L3 protocol would need it's own logic to determine > the length of the L3 header to enable adjustment after the L3 > headers. What are the non IPv4/6 use cases ? selftests are required for at least some of these use cases. Please tag the 'Subject' with bpf-next. > Signed-off-by: Wille Kuutti <wille.kuutti@xxxxxxxxxx> > --- > net/core/filter.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/net/core/filter.c b/net/core/filter.c > index 64470a727ef7..c6790a763c9b 100644 > --- a/net/core/filter.c > +++ b/net/core/filter.c > @@ -3362,7 +3362,7 @@ static u32 bpf_skb_net_base_len(const struct sk_buff > *skb) > case htons(ETH_P_IPV6): > return sizeof(struct ipv6hdr); > default: > - return ~0U; > + return 0U; Does it affect the len_min test in bpf_skb_adjust_room ? > } > } > > @@ -3582,7 +3582,8 @@ BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, > s32, len_diff, > if (unlikely(len_diff_abs > 0xfffU)) > return -EFAULT; > if (unlikely(proto != htons(ETH_P_IP) && > - proto != htons(ETH_P_IPV6))) > + proto != htons(ETH_P_IPV6) && > + mode != BPF_ADJ_ROOM_MAC)) > return -ENOTSUPP; > > off = skb_mac_header_len(skb); > -- > 2.32.0 > >