From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Dichtel Subject: Re: [PATCH bpf-next] filter: add BPF_ADJ_ROOM_DATA mode to bpf_skb_adjust_room() Date: Sun, 11 Nov 2018 00:43:27 +0100 Message-ID: References: <20181108151137.3975-1-nicolas.dichtel@6wind.com> <20181109185131.7f7osxg2tfp2xapx@kafai-mbp.dhcp.thefacebook.com> Reply-To: nicolas.dichtel@6wind.com Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: "ast@kernel.org" , "daniel@iogearbox.net" , "davem@davemloft.net" , "netdev@vger.kernel.org" To: Martin Lau Return-path: Received: from mail-wr1-f66.google.com ([209.85.221.66]:35690 "EHLO mail-wr1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725896AbeKKJaO (ORCPT ); Sun, 11 Nov 2018 04:30:14 -0500 Received: by mail-wr1-f66.google.com with SMTP id z16-v6so5566116wrv.2 for ; Sat, 10 Nov 2018 15:43:30 -0800 (PST) In-Reply-To: <20181109185131.7f7osxg2tfp2xapx@kafai-mbp.dhcp.thefacebook.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: Le 09/11/2018 à 19:51, Martin Lau a écrit : > On Thu, Nov 08, 2018 at 04:11:37PM +0100, Nicolas Dichtel wrote: [snip] >> +static int bpf_skb_data_shrink(struct sk_buff *skb, u32 len) >> +{ >> + unsigned short hhlen = skb->dev->header_ops ? >> + skb->dev->hard_header_len : 0; >> + int ret; >> + >> + ret = skb_unclone(skb, GFP_ATOMIC); >> + if (unlikely(ret < 0)) >> + return ret; >> + >> + __skb_pull(skb, len); >> + skb_reset_mac_header(skb); >> + skb_reset_network_header(skb); >> + skb->network_header += hhlen; >> + skb_reset_transport_header(skb); > hmm...why transport_header does not need += hhlen here > while network_header does? network_header is mandatory because bpf_redirect(BPF_F_INGRESS) can be called and network_header is expected to be correctly set in this case. For transport_header, I choose to not set it, because the stack will set it later (for example ip_rcv_core()). Regards, Nicolas