From patchwork Thu Oct 19 22:46:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828394 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="tTbheU1E"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3w02CkCz9t7V for ; Fri, 20 Oct 2017 09:47:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753163AbdJSWrK (ORCPT ); Thu, 19 Oct 2017 18:47:10 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:48357 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752092AbdJSWrE (ORCPT ); Thu, 19 Oct 2017 18:47:04 -0400 Received: by mail-pf0-f193.google.com with SMTP id b79so8111485pfk.5 for ; Thu, 19 Oct 2017 15:47:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Eor2CDF6ERXN7XSOIwjpKRnS4Odo0HkxrR31sg+wr/k=; b=tTbheU1E5g4A7RpmMHedobzk5dfN5lGAFcv/bXR9ep85wA40lBznXkIQJtyb6mhs+R s6OY4tiM0ZnvByaq4PCua94E3Up3WCQA7wStNWerMh7I2tKcNNKHNqdTPnc5T+kmndtA ewqVy4wYzeVEQr3G37AZMEmFXjozPDXcR9DbL6ytjNmnqde3Tr2IfnYv4DNUXzQULjP8 0EDup88JPq40NSEDj2XnRxfhevfBmMfcURXysm5E2s4yjmzH+xnqXQI0rHdWQ7EnU6E4 CKLdZ5bQSGa9qpJoXPrFCqDSE5x2Q1SSKLZ/Y/3paW32MYybTfS8kXSLJ3S0P7FJSjrS TCQA== 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; bh=Eor2CDF6ERXN7XSOIwjpKRnS4Odo0HkxrR31sg+wr/k=; b=SSfWsCF/4TUc1iG9uilosGIoUy9C2b3fyawnIQYyZwerths2W7M17ZYsdaVV4Js21f 9j8Xo4H14fq4I1jLl1YpbsEaePfnCKBENOmLMwK44TColIDBt0yl8lfP6u9ReprXSgou z1pzNgvYMskkVmxCwL7pF6GNVVb102HAbn/jvTVsrCnfFX47NyjjE/tktCmvwPtcNalE OLT1U7cjl83ryNfitwImxw2S/86BE7ZB03o+VdNrYJpdO2o+20My3ZJJUdcFfErc/QH+ 3lDZ7rBUKztRggUwAsypJI/qEr7AnpYc1Ue1lQ8X2LMUy4P535vFnVKnbMP9gz/2ylr+ AnuA== X-Gm-Message-State: AMCzsaWKZ/SnsZlz8FCHQMeg6gIqH5MISqX/QlzlKhtgDtuEPH5LVfRP fjdc65yDAAKDmn5tdDf0lQI76cCP X-Google-Smtp-Source: ABhQp+QvbuokzCxhtuURhYSMrLckI4b4xUOS+bz4KJZjSYftp0yIMxBQSKlrhEpzt+XllU+vLBFQbQ== X-Received: by 10.159.234.2 with SMTP id be2mr2552556plb.125.1508453223177; Thu, 19 Oct 2017 15:47:03 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:02 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 1/8] tools: bpftool: add pointer to file argument to print_hex() Date: Thu, 19 Oct 2017 15:46:19 -0700 Message-Id: <20171019224626.31608-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Make print_hex() able to print to any file instead of standard output only, and rename it to fprint_hex(). The function can now be called with the info() macro, for example, without splitting the output between standard and error outputs. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/main.c | 8 ++++---- tools/bpf/bpftool/main.h | 2 +- tools/bpf/bpftool/map.c | 20 ++++++++++---------- tools/bpf/bpftool/prog.c | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index e02d00d6e00b..8662199ee050 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -100,7 +100,7 @@ bool is_prefix(const char *pfx, const char *str) return !memcmp(str, pfx, strlen(pfx)); } -void print_hex(void *arg, unsigned int n, const char *sep) +void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep) { unsigned char *data = arg; unsigned int i; @@ -111,13 +111,13 @@ void print_hex(void *arg, unsigned int n, const char *sep) if (!i) /* nothing */; else if (!(i % 16)) - printf("\n"); + fprintf(f, "\n"); else if (!(i % 8)) - printf(" "); + fprintf(f, " "); else pfx = sep; - printf("%s%02hhx", i ? pfx : "", data[i]); + fprintf(f, "%s%02hhx", i ? pfx : "", data[i]); } } diff --git a/tools/bpf/bpftool/main.h b/tools/bpf/bpftool/main.h index 844e4ef6db56..41e6c7d3fcad 100644 --- a/tools/bpf/bpftool/main.h +++ b/tools/bpf/bpftool/main.h @@ -67,7 +67,7 @@ enum bpf_obj_type { extern const char *bin_name; bool is_prefix(const char *pfx, const char *str); -void print_hex(void *arg, unsigned int n, const char *sep); +void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep); void usage(void) __attribute__((noreturn)); struct cmd { diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index 0528a5379e6c..b1dad76215ed 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -216,12 +216,12 @@ static void print_entry(struct bpf_map_info *info, unsigned char *key, !break_names; printf("key:%c", break_names ? '\n' : ' '); - print_hex(key, info->key_size, " "); + fprint_hex(stdout, key, info->key_size, " "); printf(single_line ? " " : "\n"); printf("value:%c", break_names ? '\n' : ' '); - print_hex(value, info->value_size, " "); + fprint_hex(stdout, value, info->value_size, " "); printf("\n"); } else { @@ -230,13 +230,13 @@ static void print_entry(struct bpf_map_info *info, unsigned char *key, n = get_possible_cpus(); printf("key:\n"); - print_hex(key, info->key_size, " "); + fprint_hex(stdout, key, info->key_size, " "); printf("\n"); for (i = 0; i < n; i++) { printf("value (CPU %02d):%c", i, info->value_size > 16 ? '\n' : ' '); - print_hex(value + i * info->value_size, - info->value_size, " "); + fprint_hex(stdout, value + i * info->value_size, + info->value_size, " "); printf("\n"); } } @@ -492,8 +492,8 @@ static int do_dump(int argc, char **argv) print_entry(&info, key, value); } else { info("can't lookup element with key: "); - print_hex(key, info.key_size, " "); - printf("\n"); + fprint_hex(stderr, key, info.key_size, " "); + fprintf(stderr, "\n"); } prev_key = key; @@ -587,7 +587,7 @@ static int do_lookup(int argc, char **argv) print_entry(&info, key, value); } else if (errno == ENOENT) { printf("key:\n"); - print_hex(key, info.key_size, " "); + fprint_hex(stdout, key, info.key_size, " "); printf("\n\nNot found\n"); } else { err("lookup failed: %s\n", strerror(errno)); @@ -642,14 +642,14 @@ static int do_getnext(int argc, char **argv) if (key) { printf("key:\n"); - print_hex(key, info.key_size, " "); + fprint_hex(stdout, key, info.key_size, " "); printf("\n"); } else { printf("key: None\n"); } printf("next key:\n"); - print_hex(nextkey, info.key_size, " "); + fprint_hex(stdout, nextkey, info.key_size, " "); printf("\n"); exit_free: diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index d60f5307b6e2..aa6d72ea3807 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -224,7 +224,7 @@ static int show_prog(int fd) printf("name %s ", info.name); printf("tag "); - print_hex(info.tag, BPF_TAG_SIZE, ""); + fprint_hex(stdout, info.tag, BPF_TAG_SIZE, ""); printf("\n"); if (info.load_time) { @@ -319,7 +319,7 @@ static void dump_xlated(void *buf, unsigned int len, bool opcodes) if (opcodes) { printf(" "); - print_hex(insn + i, 8, " "); + fprint_hex(stdout, insn + i, 8, " "); printf("\n"); } From patchwork Thu Oct 19 22:46:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828395 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="Su/1bREr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3w201kTz9t7r for ; Fri, 20 Oct 2017 09:47:14 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753258AbdJSWrL (ORCPT ); Thu, 19 Oct 2017 18:47:11 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:50668 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752976AbdJSWrF (ORCPT ); Thu, 19 Oct 2017 18:47:05 -0400 Received: by mail-pf0-f194.google.com with SMTP id b6so8104968pfh.7 for ; Thu, 19 Oct 2017 15:47:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=WnN0TOKTvrgTlRYwlH+R8+EwHH5iU4tDNBqOwEQBP+s=; b=Su/1bRErh3GeAULL9XqzC7lYvMDD1anY5crbTmxjwnVEPgLQof11nUrg5P513IdN5m 9I5GFDSoX98y8nNBq1RRmIwScXQFZXc9RkOCMqG6IKvo+/amOHIH5GVqCJXgaudwetlY olUy8ABqUG+rcGE6n7yTRzj2cvV+RWdT/6Ladi2nycYaDUdoRtbS1h78M4Zm6Y1KFOPx d70c2axLPo1isaIvjNF5u2hJxH6yMz0zjxU6T3c7wGci/YuR8gNCDX+kwUDWlHYDCnzf CIbtVWSCJczBhgChra2PwxxZwtnzW6cA0t3HX2Z7Qt64p1RFspDzvmLCZKy+aQ02VvJ9 ltow== 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; bh=WnN0TOKTvrgTlRYwlH+R8+EwHH5iU4tDNBqOwEQBP+s=; b=E17pBAD2Tf/nD1nQ7QzCX5JykDNWAYYikgeq6eZm8lrt0sDPuxyhhRW7SUOJd1Zkax W2z3i6UCgHlj3U07QS6darAR35P/uaahU2LscX5ZbxhxFZCJTWF8xSYnP3hren/qPGqQ ZLjHoPe2FfdG3gh0cg0Y6rwbLGqXgh3tAOrBnb1nHLt+pSd2qTcJwbYSRgH0HXHkoRr4 JMVpBBfgErAaJAq+qUl6dDVQDF9erx5tQ8wXGYbYh9OCW6aRTlcYukY6JHA83lT4ZSOw roZHPuk9Qt1BXyzLzB+EUfoxyyUdXdHU0VNG7trjmrPb8VfR4O9bakliGnmHLKhIaejB kFjQ== X-Gm-Message-State: AMCzsaU/FqMBo8o9PeYTXZA0RRfFtbjUKFX2b6LYtS2LcDEY4nk8jkZw KSypgraLHvBf+cKWi3BGbQD0LVcW X-Google-Smtp-Source: ABhQp+SLODpBiROagAzsF4/o3NKomPpN8/W5BYQe4Rl7VUkheIX4rlZOtYaN7NmlnM4BgkgSUfDY0g== X-Received: by 10.84.218.68 with SMTP id f4mr2539407plm.395.1508453224986; Thu, 19 Oct 2017 15:47:04 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:04 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 2/8] tools: bpftool: fix return value when all eBPF programs have been shown Date: Thu, 19 Oct 2017 15:46:20 -0700 Message-Id: <20171019224626.31608-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Change the program to have a more consistent return code. Specifically, do not make bpftool return an error code simply because it reaches the end of the list of the eBPF programs to show. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/prog.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index aa6d72ea3807..ede7957adcd9 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -275,8 +275,10 @@ static int do_show(int argc, char **argv) while (true) { err = bpf_prog_get_next_id(id, &id); if (err) { - if (errno == ENOENT) + if (errno == ENOENT) { + err = 0; break; + } err("can't get next program: %s\n", strerror(errno)); if (errno == EINVAL) err("kernel too old?\n"); From patchwork Thu Oct 19 22:46:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828400 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="dulsspji"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3wb470Fz9t7V for ; Fri, 20 Oct 2017 09:47:43 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753465AbdJSWrl (ORCPT ); Thu, 19 Oct 2017 18:47:41 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:52068 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752285AbdJSWrH (ORCPT ); Thu, 19 Oct 2017 18:47:07 -0400 Received: by mail-pf0-f193.google.com with SMTP id n14so8101535pfh.8 for ; Thu, 19 Oct 2017 15:47:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=R8J4375TB/WS/z0nUUV4ASAQ1WvX08Wq20fDFt7Ir3Y=; b=dulsspjiUfVRW6ePYgpwMVzzXz0yarlKzEklZbz13Yi0dpmbKx4I3EPzykeHxvg1s8 xNGxJHwzD89UE3jSAzpOcPgrub2gv8SbMsTpMeXJDz1EfTh/92+Q4Gz+Es9iUe7GMWwA YU2Kw2GRBmkkkN6ZxKgZE8bAkit2/HRFMEktympiwqWYWNoG5zB/8tbRGYItnuvfqcIq 6xKfTJjZD1Wcm/o9uZKAvY+g1qBqfopQokH5Drp97YRi8XzUPUmk43OR94zHLMYahuqT YaTXcXBiM2ubaZatcPPUAI/hCONWawCfhqrZ3K1YpHgaG5B4fXYq4jnSPx/IHeSa96sl +g3A== 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; bh=R8J4375TB/WS/z0nUUV4ASAQ1WvX08Wq20fDFt7Ir3Y=; b=q67oSmIbPD/PIde5i7kmOxQoSD9vksr0UpUqXfPrtvTqwaFbWGno0ARZuTjxbBuh7p A9hsRl8oGHnPgLTQ0sKGcZScHUdotAQWR4vgzTPFgTd8siHT1O0kkRzaagzh6POl+A1K cTTSAl4umUldQAgyafVyykJJVBZObYHtMrYvmbPXT+yYLdP3fxYmQ93tvA/QHhaYEAIX wi5Z/KnPjio3UAR5/uw7t2hZ0jtbyvxCA8L++Iyckrxe9yGrUrj+b6yMf5tqh3oMRzwG lGXt3QbpgU5d1JjnyMmk8qA3jrgFkVpdI5hozhYaKRSjYOt2FqHqqmiHJx3uLGbLz1ib Yt2w== X-Gm-Message-State: AMCzsaU5VOTLNVA9Y95fJYFsPECcY28Cchr2L/8KgpmiGb+78/og9A/X YZXQx9NcbO92/PFNGlVQD7gggRn9 X-Google-Smtp-Source: ABhQp+QonyNPqKgFQ5Pc1nNMilO/edukquURwMhmf6vvvP+Nj6CavaoEmUbF/NzrToJB/jagc1QZGw== X-Received: by 10.99.3.213 with SMTP id 204mr2578545pgd.407.1508453226966; Thu, 19 Oct 2017 15:47:06 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:06 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 3/8] tools: bpftool: use err() instead of info() if there are too many insns Date: Thu, 19 Oct 2017 15:46:21 -0700 Message-Id: <20171019224626.31608-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Make error messages and return codes more consistent. Specifically, replace the use of info() macro with err() when too many eBPF instructions are received to be dumped, given that bpftool returns with a non-null exit value in that case. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/prog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index ede7957adcd9..6c03d2ea3f79 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -416,7 +416,7 @@ static int do_dump(int argc, char **argv) } if (*member_len > buf_size) { - info("too many instructions returned\n"); + err("too many instructions returned\n"); goto err_free; } From patchwork Thu Oct 19 22:46:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828401 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="ZKh13kNB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3wf0XPvz9t7V for ; Fri, 20 Oct 2017 09:47:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752475AbdJSWrk (ORCPT ); Thu, 19 Oct 2017 18:47:40 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:48373 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753115AbdJSWrJ (ORCPT ); Thu, 19 Oct 2017 18:47:09 -0400 Received: by mail-pf0-f195.google.com with SMTP id b79so8111760pfk.5 for ; Thu, 19 Oct 2017 15:47:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=j633OgtARII1ZVsVBuR64FHXmkbgTmAhaBDhn64gxeY=; b=ZKh13kNBSxiullIVrbBPvmsX2rhtC+xXCXLgLl7YLEKfvTsQ7oqouDKZvo0C6ffbJ4 NiXA4CcP62WK/v2bk+sibf82LO6dHsAHIPClIRVoHlpREVfIZJ9plfq5szXfM9tMMO5l iHycpKh7RS8aO0YzkFTmFPPVWA4KrN+qS5wCZmfbTAEKVOS3Nza/j/gRBS3mimbPHznA YNMUCFDmxrNIllSiH432mGGOpYzRhbmNQxlqXaOQkcqdiMDAUo9KQ/pvy9GX+WXE1IpO G2AdeILrbxzl3RqUB34g08ybBJQ8PslOe9+V2hATpLh6pZU4K7HwF2g30PNOk9wMiuQ3 gShw== 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; bh=j633OgtARII1ZVsVBuR64FHXmkbgTmAhaBDhn64gxeY=; b=UNdFEYkvbynvem7+TFQUv8jrHmBeQjSIv9WyEaGxo5OUbEnPeaLzZB3ekC9r/n7vSx qhBVXDbuMUYamQx82djBkCcmfl950IMkOOq+T8WpNMha8ntPd3aLZvL/t+ID1apHypoa 4yP2AbKV68+IrR1XxnwcafYwuOn+C8yoXPpMwAj92127nA24wDF2/eogJWkl6IXW8dzy k0TQro0ms/4MpvZq19i5qf4JVv95G03NrHYc1xlEDcSY3nAy5zNXgiw5pwTb4+Z/ALHo E/Af0MiktXASYBNEXSgN6XpS6DRTqkaZwq3EcmUNLfq3kench82Yc7Lv/1/s93QWwS4v mAnw== X-Gm-Message-State: AMCzsaVtn5PdNocMOPRPzZ0Nb0RAhp7wSZdntMZoG4zdQ/1jYKrrZ/Ky BUR4WJr7/3E2HtdDju7KjJdeHqH/ X-Google-Smtp-Source: ABhQp+TRjGJdJQfqWjopewJTUIwxZZGIfJSZU4b+kbP0ZRgJSOT0YiEoaiwiwk1QriCzLw8gJ5+6PQ== X-Received: by 10.99.63.199 with SMTP id m190mr2631852pga.239.1508453228848; Thu, 19 Oct 2017 15:47:08 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:08 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 4/8] tools: bpftool: add `bpftool prog help` as real command i.r.t exit code Date: Thu, 19 Oct 2017 15:46:22 -0700 Message-Id: <20171019224626.31608-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Make error messages and return codes more consistent. Specifically, make `bpftool prog help` a real command, instead of printing usage by default for a non-recognized "help" command. Output is the same, but this makes bpftool return with a success value instead of an error. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/prog.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 6c03d2ea3f79..355c14325622 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -475,6 +475,7 @@ static int do_help(int argc, char **argv) static const struct cmd cmds[] = { { "show", do_show }, + { "help", do_help }, { "dump", do_dump }, { "pin", do_pin }, { 0 } From patchwork Thu Oct 19 22:46:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828396 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="Jf/bju4r"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3w46ZPwz9t5C for ; Fri, 20 Oct 2017 09:47:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753375AbdJSWrO (ORCPT ); Thu, 19 Oct 2017 18:47:14 -0400 Received: from mail-pf0-f171.google.com ([209.85.192.171]:49472 "EHLO mail-pf0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753268AbdJSWrL (ORCPT ); Thu, 19 Oct 2017 18:47:11 -0400 Received: by mail-pf0-f171.google.com with SMTP id i5so8108271pfe.6 for ; Thu, 19 Oct 2017 15:47:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BP7CtOvrvM2HapPXd7mIPTVb241S2EIg7RbQohBWklA=; b=Jf/bju4r6kPkDq41sv9LbI1+diJluMifH2/7p+V+NR4SDheMTzzj5G5XS0XFFonAen gT+HapEKzsxYQ/EBJw+2YTgxrjUJ1fG5yPD7wJnz6PkLq3BalM6OF8B5E09dq/6Q4OU2 iqurztEhVEUG6qV/lwin5E0XJxd4VYEYEZLyhZOhmgLmrWtWoQhjhxDTAln88npHMbTw qA1NJ035K4DdUVAFm6Sk3AlmK6FUULGT4i6vjjwkmWRygjO02KoWa0s9FezsvSuxMgOz IXBWwSapSejosKd0ewJzzSk21WIpYYwSBMo+26qO7+GdwvehijvD2vBnX5PUjGD08AWR +B7g== 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; bh=BP7CtOvrvM2HapPXd7mIPTVb241S2EIg7RbQohBWklA=; b=gVhMsLAUflwfjVrysSY1ftwAYK8MrgLH3exhaRZG2DwCOqXvovgEW6Uotu7RUY7rpB 2FkXESKVpHRul0k5AvlyuOoXX3OypqAoMZ2S7jGZRxgMZSS76CCwF6k3uKrl9Uk2wxQn +cGvofqcf077l08qsIy12z00OjZ6mthcNhKw2kFG1kQJtTiwU50ELaoswjsJSyzPWH9A 13Dm+ZTTyKIy55r/yloNkWiuZaBlDM0LWGzGHJNC5ge/QEnBipA3D36JuLN4YvwHQlAB EKjq3x5U5e3v577YwvG9u4UG4dJAra3AwHZAfAhYiEOnweAThWEdMC8vSqM5rw1ELIQP 8UjQ== X-Gm-Message-State: AMCzsaVFPzO2UunhKJiPFY0Uvm3XQYsLNFtkkovencNj69iBn57MO4bV 7+FxN7RBHNUqIt3duMQFoVHxlHp0 X-Google-Smtp-Source: ABhQp+Qgj8pIKaNx3rRiTxiRjvsGj6Hd05dNtObzRlKy3aEXUmPYSMVUXIK6N48YG82VGhwVTJL8Bg== X-Received: by 10.101.92.66 with SMTP id v2mr123603pgr.151.1508453230710; Thu, 19 Oct 2017 15:47:10 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:10 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 5/8] tools: bpftool: print only one error message on byte parsing failure Date: Thu, 19 Oct 2017 15:46:23 -0700 Message-Id: <20171019224626.31608-6-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet Make error messages more consistent. Specifically, when bpftool fails at parsing map key bytes, make it print a single error message to stderr and return from the function, instead of (always) printing a second error message afterwards. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/map.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index b1dad76215ed..e1004d825392 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -252,7 +252,7 @@ static char **parse_bytes(char **argv, const char *name, unsigned char *val, val[i] = strtoul(argv[i], &endptr, 0); if (*endptr) { err("error parsing byte: %s\n", argv[i]); - break; + return NULL; } i++; } From patchwork Thu Oct 19 22:46:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828397 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="lnD4q/BT"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3wD0JrBz9t5C for ; Fri, 20 Oct 2017 09:47:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753561AbdJSWrV (ORCPT ); Thu, 19 Oct 2017 18:47:21 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:52088 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752180AbdJSWrN (ORCPT ); Thu, 19 Oct 2017 18:47:13 -0400 Received: by mail-pf0-f194.google.com with SMTP id n14so8101830pfh.8 for ; Thu, 19 Oct 2017 15:47:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=01iTqYGyDxeOxS9lVLEtNvpqDd6mvG4h7t9ouwuV8ZE=; b=lnD4q/BT+3bDhIMDgp9aO8JAvQLvLrBtnC/K2qDArJToLmwBviVp/MFaNuUT5voMyZ B0pIdd6nUPZxcQ+ZGAN82fo19vD8Yj92gRAfC9dfHdXS5Y0cWcNcdGJLorG+qTfoJlhp XuEKux6HywpR3dyTULlD4LuH8H9QtsUJ0owqowkLizlz8OhXypIxbRkoBqJ405COFdWs //S8M/KXEFktmqbGi1ETrUaaqWR00kNg+hR9rwCrfbIVa2xK0rsGE3py46Ohitpz6ngy h7Dm+k8p+56AIX5QsnlISzo1Y+jKG51tL0eQ9N0iVLeMp92ZOZL0xdLekOEX5cRDnQal F+IQ== 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; bh=01iTqYGyDxeOxS9lVLEtNvpqDd6mvG4h7t9ouwuV8ZE=; b=pyeq8QhJ040lumw7JCsMhK1XjowMa/xkd+leIcbHSM6B67lRlTgQVPALkigU95TY1o mQtNF3J5r7sygbwPcvFxrEq7NXpPWAp25IZVjosz1n2FrU4hm5sXzc2mT2cDHedt8bzz ljoaCPPDxRuTLWGwn1VxCv7WXOnmcnKY3BDmYlCpSQlS47VZ+3Y87tjAJTA34c1a/PRU JY8IVBRoZVXRctTEkV+SO9cYtVFV8vThJ4P9kEul3MKjsYYU57l7QnLszl/ux8d6azS9 e2oNeFJbjRSSTIWeobrPMRgmkPExKHNGrE39g3glpezwQH7Vax6THfHMEzDKBb+xVEkG qicQ== X-Gm-Message-State: AMCzsaUHy8vzdVYinF55UgTJe5zpT/3QSDXO/HEFr3GAbdq4reaUYCbW KYemJZHfSEV27qt1bAN1hNl/cU3w X-Google-Smtp-Source: ABhQp+QnwHs+emVIrWIbjT5shHMv0eA2eZTFfz9xzr6ivpFCjSsWOfY/a8FxkcMKcm7cG8Fh+KMIoQ== X-Received: by 10.84.197.69 with SMTP id m63mr2589794pld.226.1508453232659; Thu, 19 Oct 2017 15:47:12 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:12 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 6/8] tools: bpftool: print all relevant byte opcodes for "load double word" Date: Thu, 19 Oct 2017 15:46:24 -0700 Message-Id: <20171019224626.31608-7-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet The eBPF instruction permitting to load double words (8 bytes) into a register need 8-byte long "immediate" field, and thus occupy twice the space of other instructions. bpftool was aware of this and would increment the instruction counter only once on meeting such instruction, but it would only print the first four bytes of the immediate value to load. Make it able to dump the whole 16 byte-long double instruction instead (as would `llvm-objdump -d `). Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/prog.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 355c14325622..57edbea2fbe8 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -313,20 +313,29 @@ static void print_insn(struct bpf_verifier_env *env, const char *fmt, ...) static void dump_xlated(void *buf, unsigned int len, bool opcodes) { struct bpf_insn *insn = buf; + bool double_insn = false; unsigned int i; for (i = 0; i < len / sizeof(*insn); i++) { + if (double_insn) { + double_insn = false; + continue; + } + + double_insn = insn[i].code == (BPF_LD | BPF_IMM | BPF_DW); + printf("% 4d: ", i); print_bpf_insn(print_insn, NULL, insn + i, true); if (opcodes) { printf(" "); fprint_hex(stdout, insn + i, 8, " "); + if (double_insn && i < len - 1) { + printf(" "); + fprint_hex(stdout, insn + i + 1, 8, " "); + } printf("\n"); } - - if (insn[i].code == (BPF_LD | BPF_IMM | BPF_DW)) - i++; } } From patchwork Thu Oct 19 22:46:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828398 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="XpTdHsjU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3wH6n9dz9t5C for ; Fri, 20 Oct 2017 09:47:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753507AbdJSWrU (ORCPT ); Thu, 19 Oct 2017 18:47:20 -0400 Received: from mail-pf0-f196.google.com ([209.85.192.196]:48392 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753268AbdJSWrP (ORCPT ); Thu, 19 Oct 2017 18:47:15 -0400 Received: by mail-pf0-f196.google.com with SMTP id b79so8112029pfk.5 for ; Thu, 19 Oct 2017 15:47:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=iHAqawkPpIK7usEkFOzQbPjGxlfMuS9wy85Y0mVzMHM=; b=XpTdHsjUQRe4L7l7tMWvNSedSIbR64mPiikdkystxUT4GhZPMP65ZzNwKkEhoo9DCC gWC6ycfuA0NDQEEKDXIW9NhSRebKsgDchN0F6w+Ns5Wximp0sCY8BGpeCXCqgrs7sPrS d/znKD9JC5lbDd3clgth0QBFdCnT8jJlbsLi/7L7urkV+u2TGAWys9jR5YsKW0gZ+wfU yDVp1Wu1/mViF8aFQRLy+NQjZV2zIzPvJd6FvBUVznx1bZZ4EMlfA5zlE2615TCRZqxD ojVOH7S1qum21XyXtGLqjjPKHe5+KBq4S0DP1avPeHzfO2KUyaUh73rtUtfJzXIHRA34 Xa7g== 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; bh=iHAqawkPpIK7usEkFOzQbPjGxlfMuS9wy85Y0mVzMHM=; b=DDSZfeTThOxcj4DGOKcQCEYuvI0jDlWiITVXx2UO1AVUBB2EEcAVKko4xvRiLz8vT2 Z9K7gdkLMNN0ryb3VZb9LDBnoj91bhVsLm41kg+8QdSywxZAUbk097Yhaz5hfzG4Gfs9 rOjzDS4sjAHT6+/FFk003BfyGx9XjJPB9pbVzdUgrpF8RgSpWSIhjEOUBDs7r+KUMaZ3 7mlqx7c6DP5oPJISymGs2MajyM2g4iQS/nybqvxdMpJyQCImZuPczVTVZ8vBV+/QtHwQ zgKLq2Qzj+CUf/DAca3f2p0EINY5Icsjuqp4idRgDbp0MAAscG4iXSE9QwRFMvKubRd+ 7mdA== X-Gm-Message-State: AMCzsaVcpbhkOLoFKJUJM7mewWzHvxjyIadTunWVJ6ITX13Nblrs8/rS bi3izkx5k0u3yM7GLS3RBUTZSOuV X-Google-Smtp-Source: ABhQp+QgeKpalh536bk0NvMF51VYflChUCHTBPtK3TErWB0Ox0Y+hKAEraClalu+S5szYQqdJBrwZQ== X-Received: by 10.84.164.104 with SMTP id m37mr2614750plg.242.1508453234592; Thu, 19 Oct 2017 15:47:14 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:14 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 7/8] tools: bpftool: show that `opcodes` or `file FILE` should be exclusive Date: Thu, 19 Oct 2017 15:46:25 -0700 Message-Id: <20171019224626.31608-8-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet For the `bpftool prog dump { jited | xlated } ...` command, adding `opcodes` keyword (to request opcodes to be printed) will have no effect if `file FILE` (to write binary output to FILE) is provided. The manual page and the help message to be displayed in the terminal should reflect that, and indicate that these options should be mutually exclusive. Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/Documentation/bpftool-prog.rst | 8 ++++---- tools/bpf/bpftool/prog.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst index 3968f0bd37db..69b3770370c8 100644 --- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst +++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst @@ -11,8 +11,8 @@ SYNOPSIS ======== | **bpftool** prog show [*PROG*] -| **bpftool** prog dump xlated *PROG* [file *FILE*] [opcodes] -| **bpftool** prog dump jited *PROG* [file *FILE*] [opcodes] +| **bpftool** prog dump xlated *PROG* [{file *FILE* | opcodes }] +| **bpftool** prog dump jited *PROG* [{file *FILE* | opcodes }] | **bpftool** prog pin *PROG* *FILE* | **bpftool** prog help | @@ -28,14 +28,14 @@ DESCRIPTION Output will start with program ID followed by program type and zero or more named attributes (depending on kernel version). - **bpftool prog dump xlated** *PROG* [**file** *FILE*] [**opcodes**] + **bpftool prog dump xlated** *PROG* [{ **file** *FILE* | **opcodes** }] Dump eBPF instructions of the program from the kernel. If *FILE* is specified image will be written to a file, otherwise it will be disassembled and printed to stdout. **opcodes** controls if raw opcodes will be printed. - **bpftool prog dump jited** *PROG* [**file** *FILE*] [**opcodes**] + **bpftool prog dump jited** *PROG* [{ **file** *FILE* | **opcodes** }] Dump jited image (host machine code) of the program. If *FILE* is specified image will be written to a file, otherwise it will be disassembled and printed to stdout. diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c index 57edbea2fbe8..7838206a455b 100644 --- a/tools/bpf/bpftool/prog.c +++ b/tools/bpf/bpftool/prog.c @@ -469,8 +469,8 @@ static int do_help(int argc, char **argv) { fprintf(stderr, "Usage: %s %s show [PROG]\n" - " %s %s dump xlated PROG [file FILE] [opcodes]\n" - " %s %s dump jited PROG [file FILE] [opcodes]\n" + " %s %s dump xlated PROG [{ file FILE | opcodes }]\n" + " %s %s dump jited PROG [{ file FILE | opcodes }]\n" " %s %s pin PROG FILE\n" " %s %s help\n" "\n" From patchwork Thu Oct 19 22:46:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 828399 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b="AZaY34db"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yJ3wL41K2z9t7V for ; Fri, 20 Oct 2017 09:47:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753460AbdJSWrU (ORCPT ); Thu, 19 Oct 2017 18:47:20 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:56039 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751718AbdJSWrR (ORCPT ); Thu, 19 Oct 2017 18:47:17 -0400 Received: by mail-pf0-f194.google.com with SMTP id 17so8106116pfn.12 for ; Thu, 19 Oct 2017 15:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=wRujQgIkwHCripd9HaNQ/fw1UgUvEpFTuWxms6C2lfg=; b=AZaY34dbOjCKzRJ/dVXl4YxjqLRAKKTnQMQWzxGGdNP4X7lbVHpOvwQlU89WMdylqa Hv9nuhD7/aywFPgZ9O7cCDi1yqc5sVtREFqTQNhstYz5wNxk6PQdazBBwNZPDNkbbCXI L8wTETA4AaYBw3r3pitYEQy77uFYB9DJL8+SGLu82p/Fqa/8uV31FJRhpdnmhAMJfJWY NEgXHyFCRO4vVhxQ+rhrmwPh4OOxiTV3/N09qlPJbgbLYUdxeCCczf7T9tbA4GwHfFUb kwMJoDi8Eejyopr744Pxd1O6GBLLXzDXGdVctmejLFA4ix2KstaiDvZITfCN8SMgNubE TZUw== 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; bh=wRujQgIkwHCripd9HaNQ/fw1UgUvEpFTuWxms6C2lfg=; b=VMYvbxZ1gvDvbjrkbRRqbGoh489/n7EVKp1xvem8el/VYnOgDORGX+oP/3ItN9RcJE yaaGw+HrVLFr0pN9YzhCPccRr9k72obBTWo8PU1NbY2RTD06tQuyzfZ22kfEWlm1BtH4 9+Khhl7d4htS0hnQZ6X/754eVLAc3UHLN9cL3hGffGldLF0gVW7/sPCdDOZDvTh/nKkx TCwx2YjUB5+iFG2v8rwMJ8TnhuhlPirCO+hWnS2ON4wvCjlZaD6o0Fv2XEQWC+FtT7DD s5C6/hHqQSLS3dvbtwwFqK+zEYvAZ8yHY/AVumuKSmGn37up4JyWWr/ahygXamEr7lvd KZgg== X-Gm-Message-State: AMCzsaWgoiP7jTdCZLKA5TVjTKf4NR/sNHessIfuB41wvlurregdN1Vz jlyrDtbKfTAWb+snLls2+Lccze+l X-Google-Smtp-Source: ABhQp+R8kCL9s2sIdNwn//fKILX6oZJNR3ynjiXSTK39pNURChfltkHx7yrHv2n64n14nGw4Mj+PFw== X-Received: by 10.84.248.142 with SMTP id q14mr370204pll.325.1508453236446; Thu, 19 Oct 2017 15:47:16 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id c185sm16969156pfb.112.2017.10.19.15.47.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 19 Oct 2017 15:47:15 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Quentin Monnet , Jakub Kicinski Subject: [PATCH net-next 8/8] tools: bpftool: add a command to display bpftool version Date: Thu, 19 Oct 2017 15:46:26 -0700 Message-Id: <20171019224626.31608-9-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171019224626.31608-1-jakub.kicinski@netronome.com> References: <20171019224626.31608-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Quentin Monnet This command can be used to print the version of the tool, which is in fact the version from Linux taken from usr/include/linux/version.h. Example usage: $ bpftool version bpftool v4.14.0 Signed-off-by: Quentin Monnet Signed-off-by: Jakub Kicinski Acked-by: Daniel Borkmann --- tools/bpf/bpftool/Documentation/bpftool.rst | 2 ++ tools/bpf/bpftool/main.c | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/bpf/bpftool/Documentation/bpftool.rst b/tools/bpf/bpftool/Documentation/bpftool.rst index f1df1893fb54..45ad8baf1915 100644 --- a/tools/bpf/bpftool/Documentation/bpftool.rst +++ b/tools/bpf/bpftool/Documentation/bpftool.rst @@ -14,6 +14,8 @@ SYNOPSIS **bpftool** batch file *FILE* + **bpftool** version + *OBJECT* := { **map** | **program** } *MAP-COMMANDS* := diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c index 8662199ee050..814d19e1b53f 100644 --- a/tools/bpf/bpftool/main.c +++ b/tools/bpf/bpftool/main.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -62,13 +63,23 @@ static int do_help(int argc, char **argv) fprintf(stderr, "Usage: %s OBJECT { COMMAND | help }\n" " %s batch file FILE\n" + " %s version\n" "\n" " OBJECT := { prog | map }\n", - bin_name, bin_name); + bin_name, bin_name, bin_name); return 0; } +static int do_version(int argc, char **argv) +{ + printf("%s v%d.%d.%d\n", bin_name, + LINUX_VERSION_CODE >> 16, + LINUX_VERSION_CODE >> 8 & 0xf, + LINUX_VERSION_CODE & 0xf); + return 0; +} + int cmd_select(const struct cmd *cmds, int argc, char **argv, int (*help)(int argc, char **argv)) { @@ -128,6 +139,7 @@ static const struct cmd cmds[] = { { "batch", do_batch }, { "prog", do_prog }, { "map", do_map }, + { "version", do_version }, { 0 } };