From patchwork Thu Jan 16 08:51:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshiki Komachi X-Patchwork-Id: 1224084 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=bpf-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=erukzg1U; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47yyhL5p5wz9sR0 for ; Thu, 16 Jan 2020 19:55:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbgAPIza (ORCPT ); Thu, 16 Jan 2020 03:55:30 -0500 Received: from mail-pg1-f196.google.com ([209.85.215.196]:41817 "EHLO mail-pg1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726371AbgAPIza (ORCPT ); Thu, 16 Jan 2020 03:55:30 -0500 Received: by mail-pg1-f196.google.com with SMTP id x8so9558978pgk.8; Thu, 16 Jan 2020 00:55:29 -0800 (PST) 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=MUkLYY954rcoPOwsIZk8Xq7lxG3vBmq9NA/eH8KRrAo=; b=erukzg1UPJ4RYigm3alRCBb0FFY5YRajqg4zJ2WLA6riVm3ewh1QV1Xvp4Z/f1EUED C77llxgql6NOr9ia44I1TbHhbn8WaQVVX6T4fIM/7e1SIp+rFFJJQmuVRj8+LBaT2MRG ynuRD2ZEN5xE5yU4kANEoMuiCMQ9xNmLIqizQFaLasljCqT/hV2XW9f7jxKt3zFavJEv LF02f8PNmTe2uPVn986NM/kh86XzZGxCf5v4iAkhxEcWN+mZaffYDikKDN/jsVZs2PgH L2bSfFi4usaszH4kthgRgy3bTPm2rMMBe0yUHtEUl0g8jH+KO6KgIKghoFdhzGV2naed kq4A== 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=MUkLYY954rcoPOwsIZk8Xq7lxG3vBmq9NA/eH8KRrAo=; b=aquIkCSiY+4OqWULHS6Iobo2uscxfnNzaPFpk9LNaT+c3VH2wuryLl7nnfjwnJO9Xi SRfDkFOpdg1KxiUpr0od6XJ3tucLayFPuxDaQUrV2ygk0J1vQNxJUzgDBNllBAbGRczl TxbyQoP12ITR/9oYFw+5ZZbU57m36aTLv+wShnXH3UtQDWQUYCcSwwflQ/owF61kEAPC 8A3mZvKdPsW7QbrUgkdLNTBbR5U3ZlN8Onlnmxl2JEIMj7JdzGZiHCK8HA5bTWhu0kAK JQU9D/gZlgAaLC3k6yP3Abqb9A69BJC3td2A+HHnyEONCaho9heGCnFCIh1wCB8yr2ZR zJnw== X-Gm-Message-State: APjAAAUNB2QpfxlKjdgDRDDcuUGOBAjiCEQCbss8BByI3xIL9+Tu233x nCyXMwpntw3YvVJlZc/QTEo= X-Google-Smtp-Source: APXvYqwbBp9GQ00fnhZdhEnrQ2l+l/LzSJ28bDhW1ZUC2hOZd32XMK7wPNy1SvbFLTj7J5uFVegzrg== X-Received: by 2002:a63:eb02:: with SMTP id t2mr38147335pgh.289.1579164929558; Thu, 16 Jan 2020 00:55:29 -0800 (PST) Received: from hpg8-3.kern.oss.ntt.co.jp ([222.151.198.97]) by smtp.gmail.com with ESMTPSA id h3sm2643746pjs.0.2020.01.16.00.55.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jan 2020 00:55:29 -0800 (PST) From: Yoshiki Komachi To: "David S. Miller" , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko Cc: Yoshiki Komachi , netdev@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH bpf 1/2] flow_dissector: Fix to use new variables for port ranges in bpf hook Date: Thu, 16 Jan 2020 17:51:32 +0900 Message-Id: <20200116085133.392205-2-komachi.yoshiki@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20200116085133.392205-1-komachi.yoshiki@gmail.com> References: <20200116085133.392205-1-komachi.yoshiki@gmail.com> MIME-Version: 1.0 Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org This patch applies new flag (FLOW_DISSECTOR_KEY_PORTS_RANGE) and field (tp_range) to BPF flow dissector to generate appropriate flow keys when classified by specified port ranges. Fixes: 8ffb055beae5 ("cls_flower: Fix the behavior using port ranges with hw-offload") Signed-off-by: Yoshiki Komachi --- net/core/flow_dissector.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/net/core/flow_dissector.c b/net/core/flow_dissector.c index 2dbbb03..06bbcc3 100644 --- a/net/core/flow_dissector.c +++ b/net/core/flow_dissector.c @@ -876,10 +876,17 @@ static void __skb_flow_bpf_to_target(const struct bpf_flow_keys *flow_keys, key_control->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; } - if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS)) { + if (dissector_uses_key(flow_dissector, FLOW_DISSECTOR_KEY_PORTS)) key_ports = skb_flow_dissector_target(flow_dissector, FLOW_DISSECTOR_KEY_PORTS, target_container); + else if (dissector_uses_key(flow_dissector, + FLOW_DISSECTOR_KEY_PORTS_RANGE)) + key_ports = skb_flow_dissector_target(flow_dissector, + FLOW_DISSECTOR_KEY_PORTS_RANGE, + target_container); + + if (key_ports) { key_ports->src = flow_keys->sport; key_ports->dst = flow_keys->dport; } From patchwork Thu Jan 16 08:51:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yoshiki Komachi X-Patchwork-Id: 1224086 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: incoming-bpf@patchwork.ozlabs.org Delivered-To: patchwork-incoming-bpf@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=bpf-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=USmOi2+i; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47yyhR5qrSz9sP3 for ; Thu, 16 Jan 2020 19:55:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726371AbgAPIzf (ORCPT ); Thu, 16 Jan 2020 03:55:35 -0500 Received: from mail-pg1-f180.google.com ([209.85.215.180]:38532 "EHLO mail-pg1-f180.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726370AbgAPIzf (ORCPT ); Thu, 16 Jan 2020 03:55:35 -0500 Received: by mail-pg1-f180.google.com with SMTP id a33so9562579pgm.5; Thu, 16 Jan 2020 00:55:34 -0800 (PST) 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=axl4EKweDKbvR0z3KyY3tqCSjovhSbHRzZUpaSSb2xY=; b=USmOi2+i6Qey3WW8OzYuUdYyaKzlEt/5OZMeUQYleuCu987d3wDxP5gQrCPO7RvpIL v7ZzehjHkeikBfDav+kXJhOnHpMJJZzNqeWl/ak9bZquEpob9LOZt1XMEo2cHkQdbxom xGDMoGICwxHPnnW7+K13vicyvjTWkVNw/injgvy0OS0p1utwFUkPwlU/UcujLUzxHQuc Ae5tyCZ9gJPCR5xDI2yjsKSr82rQLpwUKgGAFh8emIKUedBuWW42visJtIrQJA1MW8Me 7TOZ3MtsqIGpeKU7Q6RCZPWZeuDBOBaPHUE/ReJNzl/jlTNw3UV4Xa9bq/XO26civazo 9+bQ== 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=axl4EKweDKbvR0z3KyY3tqCSjovhSbHRzZUpaSSb2xY=; b=pyUpl/rIMnmTnUhRIV2YumvLYUKNr/9oYsPt1IMVwrVce82Ll8HvALxuR1FJxtmyzj EYVx4Z8tVoFDvNqpIEO1mkZheer0Rx5o/FC4ilg/8ERYxi9sh/rGfkDXg/T8rB+Lb5GD 2c3/p6KPdFxkN2xh+E9JagrdAT0TxpDZJHKCSpLqu0uFTW8wL2W31izyKHqSlZlDmLIC KbP1nxj11BWe/KKFGFRjNyFrgbsJlJ+CRPn1Gwykx5yy9+rZbt66eMchRsMfdGfKr8V1 Vux378T8lToI28VTO1O6W3Xwr7B4kaBp0pCHbz2H40OF0Xaooqpgn9rZ7r2M8OWPIwqd Q0Cw== X-Gm-Message-State: APjAAAXfBf6fATIz2MJj2elIl1VtyWzFd+wn6znnMfFfuK+h0YNBupOT Q8juuXhLqXUbLS3yf3dC4b0= X-Google-Smtp-Source: APXvYqyQL/0EEQK68za2k8s++a3Mj9kWVmGXtF7/MJcygzPJqzvDXYfkPAQJPO4k3MJexYTT/gKaGw== X-Received: by 2002:a65:63ce:: with SMTP id n14mr38876499pgv.282.1579164934638; Thu, 16 Jan 2020 00:55:34 -0800 (PST) Received: from hpg8-3.kern.oss.ntt.co.jp ([222.151.198.97]) by smtp.gmail.com with ESMTPSA id h3sm2643746pjs.0.2020.01.16.00.55.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jan 2020 00:55:34 -0800 (PST) From: Yoshiki Komachi To: "David S. Miller" , Alexei Starovoitov , Daniel Borkmann , Martin KaFai Lau , Song Liu , Yonghong Song , Andrii Nakryiko Cc: Yoshiki Komachi , netdev@vger.kernel.org, bpf@vger.kernel.org Subject: [PATCH bpf 2/2] selftests/bpf: Add test based on port range for BPF flow dissector Date: Thu, 16 Jan 2020 17:51:33 +0900 Message-Id: <20200116085133.392205-3-komachi.yoshiki@gmail.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20200116085133.392205-1-komachi.yoshiki@gmail.com> References: <20200116085133.392205-1-komachi.yoshiki@gmail.com> MIME-Version: 1.0 Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org Add a simple test to make sure that a filter based on specified port range classifies packets correctly. Signed-off-by: Yoshiki Komachi Acked-by: Petar Penkov --- tools/testing/selftests/bpf/test_flow_dissector.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tools/testing/selftests/bpf/test_flow_dissector.sh b/tools/testing/selftests/bpf/test_flow_dissector.sh index a8485ae..174b72a 100755 --- a/tools/testing/selftests/bpf/test_flow_dissector.sh +++ b/tools/testing/selftests/bpf/test_flow_dissector.sh @@ -139,6 +139,20 @@ echo "Testing IPv4 + GRE..." tc filter del dev lo ingress pref 1337 +echo "Testing port range..." +# Drops all IP/UDP packets coming from port 8-10 +tc filter add dev lo parent ffff: protocol ip pref 1337 flower ip_proto \ + udp src_port 8-10 action drop + +# Send 10 IPv4/UDP packets from port 7. Filter should not drop any. +./test_flow_dissector -i 4 -f 7 +# Send 10 IPv4/UDP packets from port 9. Filter should drop all. +./test_flow_dissector -i 4 -f 9 -F +# Send 10 IPv4/UDP packets from port 11. Filter should not drop any. +./test_flow_dissector -i 4 -f 11 + +tc filter del dev lo ingress pref 1337 + echo "Testing IPv6..." # Drops all IPv6/UDP packets coming from port 9 tc filter add dev lo parent ffff: protocol ipv6 pref 1337 flower ip_proto \