From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A47AC282DD for ; Tue, 23 Apr 2019 18:43:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1BD3521738 for ; Tue, 23 Apr 2019 18:43:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="atJB1Opa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726692AbfDWSn5 (ORCPT ); Tue, 23 Apr 2019 14:43:57 -0400 Received: from mail-qt1-f193.google.com ([209.85.160.193]:34869 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725945AbfDWSnz (ORCPT ); Tue, 23 Apr 2019 14:43:55 -0400 Received: by mail-qt1-f193.google.com with SMTP id l17so10610005qtp.2 for ; Tue, 23 Apr 2019 11:43:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZAvc1NtOaOF90B6HRDaSKQDsD+4NY71GX+V9W7ARjP8=; b=atJB1Opa2+vkx/2XU9ipnKa+4HfEu2dP+LnYn0CDJm1OVQYeCNXCXu6xJRIgVi65IR GlLU+wFdtFwfP8vNHE1G8PLDrExUKZ6jClD+C2akz7foez6Sd26Yaa33lphCoVRj29bu zBFl0DKB1nFDn0RmBaykZtANXTg9dQzTDyEGDPYPfBd4PZTxB20hpE13ZrQI5iYDiMhZ yDJ7doRcENDkjokEWSq2xJpqilqRc1IeKA7qMBLTGJgfaX6J9UkV57A7z6sadd+gefYF 6pMx+RgIKG3J2/VL5wHAFwcLJzcaXOZ6YX1uv0Jh6eY8jkt9pskFapClxyGRwFc7rE/t IOVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZAvc1NtOaOF90B6HRDaSKQDsD+4NY71GX+V9W7ARjP8=; b=tzRxeArBfUbaYNMFafrv+yOSt2+cEmS3Yv19gLELGRh1CQEa7Bk5lUBlBb2Ie+Krde RdddxU++xxu1hlFpIb2gdZ9yTJe9pRY6N23+Njolb0l9IXnKg8dzyK4pv8aU4TtBbeu8 hjPUty2SDi2rfFElR5Vh2dmndJhMCJ0AX9Ky9cpmtJnroX590vxUXWTjwSDUOESgPEDz 3Kc8V2+Gxi6Plpa8xws5UhwBMMVGvu/MFjCOqV6y7ygyioe0PAmJFCyLDOi+dM2ZeG46 w5j/EpKkkW3rTvk19QVF5/eU6jaCIvHowjlh2xYf/ARYu9M9OjjD0DztZKfpeSPLDhSM +abQ== X-Gm-Message-State: APjAAAUCvtbHjv5r+eiL51B0LqmPsnl/5+JD8V5N6kJJcNq3+oidUY8G YbVKrssfgBERT4PuMq0yB26IVUwm X-Google-Smtp-Source: APXvYqxkH5vLZQZ+O/l3BUd06CCmtY+C1sFOijpUt1ZF1jKFPJx+y4ghTtkfudHzBHepAaqQKfaoRw== X-Received: by 2002:ac8:4547:: with SMTP id z7mr21297921qtn.295.1556045034343; Tue, 23 Apr 2019 11:43:54 -0700 (PDT) Received: from willemb1.nyc.corp.google.com ([2620:0:1003:315:3fa1:a34c:1128:1d39]) by smtp.gmail.com with ESMTPSA id s30sm8017670qkm.43.2019.04.23.11.43.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 23 Apr 2019 11:43:53 -0700 (PDT) From: Willem de Bruijn To: netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, alan.maguire@oracle.com, yhs@fb.com, Willem de Bruijn Subject: [PATCH bpf-next v2 1/2] bpf: update skb->protocol in bpf_skb_net_grow Date: Tue, 23 Apr 2019 14:43:48 -0400 Message-Id: <20190423184349.544-2-willemdebruijn.kernel@gmail.com> X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog In-Reply-To: <20190423184349.544-1-willemdebruijn.kernel@gmail.com> References: <20190423184349.544-1-willemdebruijn.kernel@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Willem de Bruijn Some tunnels, like sit, change the network protocol of packet. If so, update skb->protocol to match the new type. Signed-off-by: Willem de Bruijn Reviewed-by: Alan Maguire Acked-by: Yonghong Song --- net/core/filter.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/core/filter.c b/net/core/filter.c index edb3a7c22f6c3..2f88baf39cc20 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -3081,6 +3081,14 @@ static int bpf_skb_net_grow(struct sk_buff *skb, u32 off, u32 len_diff, skb_set_transport_header(skb, mac_len + nh_len); } + + /* Match skb->protocol to new outer l3 protocol */ + if (skb->protocol == htons(ETH_P_IP) && + flags & BPF_F_ADJ_ROOM_ENCAP_L3_IPV6) + skb->protocol = htons(ETH_P_IPV6); + else if (skb->protocol == htons(ETH_P_IPV6) && + flags & BPF_F_ADJ_ROOM_ENCAP_L3_IPV4) + skb->protocol = htons(ETH_P_IP); } if (skb_is_gso(skb)) { -- 2.21.0.593.g511ec345e18-goog