bpftool: add peek command
authorStanislav Fomichev <sdf@google.com>
Wed, 16 Jan 2019 19:10:02 +0000 (11:10 -0800)
committerDaniel Borkmann <daniel@iogearbox.net>
Thu, 17 Jan 2019 09:30:31 +0000 (10:30 +0100)
This is intended to be used with queues and stacks and be more
user-friendly than 'lookup' without key/value.

Example:
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 peek pinned /sys/fs/bpf/q
value: 00 01 02 03

Signed-off-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
tools/bpf/bpftool/Documentation/bpftool-map.rst
tools/bpf/bpftool/map.c

index f34cace771bd6725320b10a38fb0394660d1959d..b79da683da8895b91729693a2ee8b3941f293dd9 100644 (file)
@@ -31,6 +31,7 @@ MAP COMMANDS
 |      **bpftool** **map delete**     *MAP*  **key** *DATA*
 |      **bpftool** **map pin**        *MAP*  *FILE*
 |      **bpftool** **map event_pipe** *MAP* [**cpu** *N* **index** *M*]
+|      **bpftool** **map peek**       *MAP*
 |      **bpftool** **map help**
 |
 |      *MAP* := { **id** *MAP_ID* | **pinned** *FILE* }
@@ -107,6 +108,9 @@ DESCRIPTION
                  replace any existing ring.  Any other application will stop
                  receiving events if it installed its rings earlier.
 
+       **bpftool map peek**  *MAP*
+                 Peek next **value** in the queue or stack.
+
        **bpftool map help**
                  Print short help message.
 
index 3f599399913b7859899fe088aadab55222a73642..d7344fcd208926df8e2c1493a27c4ad7aa5c950f 100644 (file)
@@ -1168,6 +1168,7 @@ static int do_help(int argc, char **argv)
                "       %s %s delete     MAP  key DATA\n"
                "       %s %s pin        MAP  FILE\n"
                "       %s %s event_pipe MAP [cpu N index M]\n"
+               "       %s %s peek       MAP\n"
                "       %s %s help\n"
                "\n"
                "       " HELP_SPEC_MAP "\n"
@@ -1185,7 +1186,7 @@ static int do_help(int argc, char **argv)
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
                bin_name, argv[-2], bin_name, argv[-2], bin_name, argv[-2],
-               bin_name, argv[-2]);
+               bin_name, argv[-2], bin_name, argv[-2]);
 
        return 0;
 }
@@ -1202,6 +1203,7 @@ static const struct cmd cmds[] = {
        { "pin",        do_pin },
        { "event_pipe", do_event_pipe },
        { "create",     do_create },
+       { "peek",       do_lookup },
        { 0 }
 };