From patchwork Wed Jan 16 19:10:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Fomichev X-Patchwork-Id: 1026129 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="Wuj0SIqD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43fxc85HNbz9sD4 for ; Thu, 17 Jan 2019 06:10:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730236AbfAPTKP (ORCPT ); Wed, 16 Jan 2019 14:10:15 -0500 Received: from mail-yw1-f74.google.com ([209.85.161.74]:34360 "EHLO mail-yw1-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730036AbfAPTKP (ORCPT ); Wed, 16 Jan 2019 14:10:15 -0500 Received: by mail-yw1-f74.google.com with SMTP id i2so3554994ywb.1 for ; Wed, 16 Jan 2019 11:10:14 -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=9b2Fb0a+6/g5BWAt6FeVPnh0E88TqgNa8+4JD52ycww=; b=Wuj0SIqDXJz2gNIaLWFo6jdbpdAeu+R7s3jLMRZxaSd8LZdKV179ytbzgcXA/gpCWg q1K/TNkGQ8lgTxPB5/Yenbh2gQJxQ5h6S6yCUMy45M7VdCLnztS6uKJdRjhNc5pgQNUr 7rkLX6hFEyAOtu4q2IA8SYxOrXW5pYAQOU2Lqs28Bf9csB+r85WUOUSyLDmT9YRduPxz eHAoSHrMJAZXhN1FRzYEN25A4Odf0NidpQG1beKYfXJMChThxdUC3BhKXPMGfH7C7DLE CnFAI10GE4nTg2lnjZgpf9A5Bm3evnGLlzIiWI/ZkyA66yCM1ih9mHUNKRO1fua5r9Re D6qg== 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=9b2Fb0a+6/g5BWAt6FeVPnh0E88TqgNa8+4JD52ycww=; b=jMU4ghaEFZo2wRQjTUdOMQLzqNB89Ni1FUliVbxcSpBZ/RthAzLOlwbfn9WgB5Y72u 9hg7x0dHnF3y2aWWBayYCSVhR0KlRulAg+Q4hWiI8WGjIBtJ5jOCnuKNoL6bLHVCv6Ir wZmJi8hhxv5PnqG3fYpzTNfM3UdgBtIlAaTX3RNnHMiL6pZEjZLQAH1qGxZpl8zVXqp6 YSdKy44k/Ua+0+hYRMn44T3eIY3yu+nhoGqZinEzkvYXh3n2Al/XNSllM42vHBUyWO5E FkfFIISzrWBr+LzOmZWbM490PmT9IQToTbGd9xffotflQoVc+OZr5fCkmfj5GBEmfQOe XBJg== X-Gm-Message-State: AJcUukdeEN5+QNmjwwZRceE5S7f0vQZB5KJQvl0zdnZjZy7ZXtGkdaGc MpiGdJPKZSsM10SbFSaPukV8IK83hBHWSDUmgrfCkRUrWZ1h0HMrKUdlQTi0m4rRQ79R9KxQQXD hPFPI45nk9kat1bjMY08wi0ctXDYGcJyDXy/ELi6Sbbcbu32pUDR75Q== X-Google-Smtp-Source: ALg8bN6uI6tQxGCMc2h/0n1WStbIGJG6v47DfurCt+76CdaWp2/EpJfz/xg0YD0GOZ04zFpKN9q3Ltg= X-Received: by 2002:a0d:ec8b:: with SMTP id v133mr4565441ywe.2.1547665813673; Wed, 16 Jan 2019 11:10:13 -0800 (PST) Date: Wed, 16 Jan 2019 11:10:00 -0800 In-Reply-To: <20190116191005.164355-1-sdf@google.com> Message-Id: <20190116191005.164355-3-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 2/7] bpftool: make key optional in lookup command 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 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Bpftool expects key for 'lookup' operations. For some map types, key should not be specified. Support looking up those map types. 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 Error: did not find key 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 key: value: 00 01 02 03 Signed-off-by: Stanislav Fomichev --- tools/bpf/bpftool/Documentation/bpftool-map.rst | 4 ++-- tools/bpf/bpftool/map.c | 10 +++------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/bpf/bpftool/Documentation/bpftool-map.rst b/tools/bpf/bpftool/Documentation/bpftool-map.rst index 1f1dfe06e66d..f34cace771bd 100644 --- a/tools/bpf/bpftool/Documentation/bpftool-map.rst +++ b/tools/bpf/bpftool/Documentation/bpftool-map.rst @@ -26,7 +26,7 @@ MAP COMMANDS | **entries** *MAX_ENTRIES* **name** *NAME* [**flags** *FLAGS*] [**dev** *NAME*] | **bpftool** **map dump** *MAP* | **bpftool** **map update** *MAP* [**key** *DATA*] [**value** *VALUE*] [*UPDATE_FLAGS*] -| **bpftool** **map lookup** *MAP* **key** *DATA* +| **bpftool** **map lookup** *MAP* [**key** *DATA*] | **bpftool** **map getnext** *MAP* [**key** *DATA*] | **bpftool** **map delete** *MAP* **key** *DATA* | **bpftool** **map pin** *MAP* *FILE* @@ -75,7 +75,7 @@ DESCRIPTION the bytes are parsed as decimal values, unless a "0x" prefix (for hexadecimal) or a "0" prefix (for octal) is provided. - **bpftool map lookup** *MAP* **key** *DATA* + **bpftool map lookup** *MAP* [**key** *DATA*] Lookup **key** in the map. **bpftool map getnext** *MAP* [**key** *DATA*] diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c index 61453a1ba6e1..4256842f9664 100644 --- a/tools/bpf/bpftool/map.c +++ b/tools/bpf/bpftool/map.c @@ -865,13 +865,9 @@ static int do_lookup(int argc, char **argv) if (fd < 0) return -1; - key = malloc(info.key_size); - value = alloc_value(&info); - if (!key || !value) { - p_err("mem alloc failed"); - err = -1; + err = alloc_key_value(&info, &key, &value); + if (err) goto exit_free; - } err = parse_elem(argv, &info, key, NULL, info.key_size, 0, NULL, NULL); if (err) @@ -1158,7 +1154,7 @@ static int do_help(int argc, char **argv) " [dev NAME]\n" " %s %s dump MAP\n" " %s %s update MAP [key DATA] [value VALUE] [UPDATE_FLAGS]\n" - " %s %s lookup MAP key DATA\n" + " %s %s lookup MAP [key DATA]\n" " %s %s getnext MAP [key DATA]\n" " %s %s delete MAP key DATA\n" " %s %s pin MAP FILE\n"