uboot/cmd/pcap.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * (C) Copyright 2019
   4 * Ramon Fried <rfried.dev@gmail.com>
   5 */
   6
   7#include <common.h>
   8#include <command.h>
   9#include <net.h>
  10#include <net/pcap.h>
  11
  12static int do_pcap_init(struct cmd_tbl *cmdtp, int flag, int argc,
  13                        char *const argv[])
  14{
  15        phys_addr_t addr;
  16        unsigned int size;
  17
  18        if (argc != 3)
  19                return CMD_RET_USAGE;
  20
  21        addr = hextoul(argv[1], NULL);
  22        size = dectoul(argv[2], NULL);
  23
  24        return pcap_init(addr, size) ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
  25}
  26
  27static int do_pcap_start(struct cmd_tbl *cmdtp, int flag, int argc,
  28                         char *const argv[])
  29{
  30        return pcap_start_stop(true) ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
  31}
  32
  33static int do_pcap_stop(struct cmd_tbl *cmdtp, int flag, int argc,
  34                        char *const argv[])
  35{
  36        return pcap_start_stop(false) ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
  37}
  38
  39static int do_pcap_status(struct cmd_tbl *cmdtp, int flag, int argc,
  40                          char *const argv[])
  41{
  42        return pcap_print_status() ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
  43}
  44
  45static int do_pcap_clear(struct cmd_tbl *cmdtp, int flag, int argc,
  46                         char *const argv[])
  47{
  48        return pcap_clear() ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
  49}
  50
  51static char pcap_help_text[] =
  52        "- network packet capture\n\n"
  53        "pcap\n"
  54        "pcap init\t\t\t<addr> <max_size>\n"
  55        "pcap start\t\t\tstart capture\n"
  56        "pcap stop\t\t\tstop capture\n"
  57        "pcap status\t\t\tprint status\n"
  58        "pcap clear\t\t\tclear capture buffer\n"
  59        "\n"
  60        "With:\n"
  61        "\t<addr>: user address to which pcap will be stored (hexedcimal)\n"
  62        "\t<max_size>: Maximum size of pcap file (decimal)\n"
  63        "\n";
  64
  65U_BOOT_CMD_WITH_SUBCMDS(pcap, "pcap", pcap_help_text,
  66                        U_BOOT_SUBCMD_MKENT(init, 3, 0, do_pcap_init),
  67                        U_BOOT_SUBCMD_MKENT(start, 1, 0, do_pcap_start),
  68                        U_BOOT_SUBCMD_MKENT(stop, 1, 0, do_pcap_stop),
  69                        U_BOOT_SUBCMD_MKENT(status, 1, 0, do_pcap_status),
  70                        U_BOOT_SUBCMD_MKENT(clear, 1, 0, do_pcap_clear),
  71);
  72