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"); }