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=-16.6 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL 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 3E224C43444 for ; Wed, 16 Jan 2019 19:10:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0EBA220840 for ; Wed, 16 Jan 2019 19:10:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="PlDimB79" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730249AbfAPTKS (ORCPT ); Wed, 16 Jan 2019 14:10:18 -0500 Received: from mail-pl1-f201.google.com ([209.85.214.201]:40616 "EHLO mail-pl1-f201.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730036AbfAPTKR (ORCPT ); Wed, 16 Jan 2019 14:10:17 -0500 Received: by mail-pl1-f201.google.com with SMTP id l9so4400443plt.7 for ; Wed, 16 Jan 2019 11:10:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=mKso/xF4+cbOtsDisT4E8AJzKIZkeen6l+Y9XEEaqoc=; b=PlDimB79hTUthZx+qrvMilQ6DGa2AiAsSyq2hwwT6iNi+E5uRQiAL/eNSSDYIYkWhB pkyrv5q0UeXYE7bXJYQHHWhtuYxVKQSTvKx85p4zAOW/pX0O2gco6alr5Raq8nSDQAsX kV1YWXHCEbaK5PuUk5IizTHa8mg8DpVd4s1c55O7QovU4vo19k2+zUfR51i8uhkJS+TV yRVSNnhcS1thzkQAAdm1kGPpWMJYycNYiH7ZRK9oTXYy7bfSWo2IU6vKkZBExB3zcYtq q3Wks7Th2rTQoeoUfyA3p9iiBZyiKwg6GBxgfUynLUyUS5F3FSUgdT39mngdiy+0MdTC UcDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=mKso/xF4+cbOtsDisT4E8AJzKIZkeen6l+Y9XEEaqoc=; b=OodRtcHECSSnzYIvo9L2ROL3ATHJ+lLocc/woZSM8O18doPfxuy6DuqIra9T0/uxTR X3jEi0ozpspKUfShvKPDCD+HvzSjB4s6AZrl4FM8rwsBYZWxMJx+IWUcZRaYuLuz1JI/ SYnN01XoUV4pDQaEla7jEgAOxdzNnqty+didU8yjFu2TkV0v7T9S3M7PD4kvZb8oNslM dA04geK9ezkGc1DhCKHmhC7NsxTdZwkj0w3YgZyB8jnjTRTDwxA+38mfY2gBgpYkCNym NJp6eYVrfSS3z6Ufeh6FDLmTc8+rg0hJTQdXLwC7myFiuoYM1Wxymd+arV3kL7xsu8n2 ZzHQ== X-Gm-Message-State: AJcUukefyYNRmqaU0O9dLNTIZH6gnJNaUTIPxO+zg4mckd9N326FFD+v IaqIwookVVd+8Tmw6SvOLG25aM5Mkk8JlMxIJrG3nSfNP2vehiPt6+2+GaqnDdhQT94P4JVIcuS 5mq03dWzXXWVmpAp+HFrlf3uNukMo5dc2+dFO4qc3aHGkVMamjG5aaw== X-Google-Smtp-Source: ALg8bN44US/vh9SjwDRvL2wnozHpBoN7/tklwPjv1f6Fej1730qM4KMgClcB/CZpmI5+cUcXuK6oeVU= X-Received: by 2002:a17:902:ba90:: with SMTP id k16mr470072pls.141.1547665816386; Wed, 16 Jan 2019 11:10:16 -0800 (PST) Date: Wed, 16 Jan 2019 11:10:01 -0800 In-Reply-To: <20190116191005.164355-1-sdf@google.com> Message-Id: <20190116191005.164355-4-sdf@google.com> Mime-Version: 1.0 References: <20190116191005.164355-1-sdf@google.com> X-Mailer: git-send-email 2.20.1.97.g81188d93c3-goog Subject: [PATCH bpf-next v2 3/7] bpftool: don't print empty key/value for maps From: Stanislav Fomichev To: netdev@vger.kernel.org Cc: davem@davemloft.net, ast@kernel.org, daniel@iogearbox.net, jakub.kicinski@netronome.com, quentin.monnet@netronome.com, Stanislav Fomichev Content-Type: text/plain; charset="UTF-8" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When doing dump or lookup, don't print key if key_size == 0 or value if value_size == 0. The initial usecase is queue and stack, where we have only values. This is for regular output only, json still has all the fields. Before: bpftool map create /sys/fs/bpf/q type queue value 4 entries 10 name q bpftool map update pinned /sys/fs/bpf/q value 0 1 2 3 bpftool map lookup pinned /sys/fs/bpf/q key: value: 00 01 02 03 After: bpftool map create /sys/fs/bpf/q type queue value 4 entries 10 name q bpftool map update pinned /sys/fs/bpf/q value 0 1 2 3 bpftool map lookup pinned /sys/fs/bpf/q value: 00 01 02 03 Signed-off-by: Stanislav Fomichev --- tools/bpf/bpftool/map.c | 47 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index 4256842f9664..3f599399913b 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -285,16 +285,21 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key, single_line = info->key_size + info->value_size <= 24 && !break_names; - printf("key:%c", break_names ? '\n' : ' '); - fprint_hex(stdout, key, info->key_size, " "); + if (info->key_size) { + printf("key:%c", break_names ? '\n' : ' '); + fprint_hex(stdout, key, info->key_size, " "); - printf(single_line ? " " : "\n"); + printf(single_line ? " " : "\n"); + } - printf("value:%c", break_names ? '\n' : ' '); - if (value) - fprint_hex(stdout, value, info->value_size, " "); - else - printf(""); + if (info->value_size) { + printf("value:%c", break_names ? '\n' : ' '); + if (value) + fprint_hex(stdout, value, info->value_size, + " "); + else + printf(""); + } printf("\n"); } else { @@ -303,19 +308,23 @@ static void print_entry_plain(struct bpf_map_info *info, unsigned char *key, n = get_possible_cpus(); step = round_up(info->value_size, 8); - printf("key:\n"); - 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' : ' '); - if (value) - fprint_hex(stdout, value + i * step, - info->value_size, " "); - else - printf(""); + if (info->key_size) { + printf("key:\n"); + fprint_hex(stdout, key, info->key_size, " "); printf("\n"); } + if (info->value_size) { + for (i = 0; i < n; i++) { + printf("value (CPU %02d):%c", + i, info->value_size > 16 ? '\n' : ' '); + if (value) + fprint_hex(stdout, value + i * step, + info->value_size, " "); + else + printf(""); + printf("\n"); + } + } } } -- 2.20.1.97.g81188d93c3-goog