]>
Commit | Line | Data |
---|---|---|
3eaac630 RF |
1 | // SPDX-License-Identifier: GPL-2.0+ |
2 | /* | |
3 | * (C) Copyright 2019 | |
4 | * Ramon Fried <[email protected]> | |
5 | */ | |
6 | ||
7 | #include <common.h> | |
8 | #include <command.h> | |
9 | #include <net.h> | |
10 | #include <net/pcap.h> | |
11 | ||
09140113 SG |
12 | static int do_pcap_init(struct cmd_tbl *cmdtp, int flag, int argc, |
13 | char *const argv[]) | |
3eaac630 RF |
14 | { |
15 | phys_addr_t addr; | |
16 | unsigned int size; | |
17 | ||
18 | if (argc != 3) | |
19 | return CMD_RET_USAGE; | |
20 | ||
7e5f460e | 21 | addr = hextoul(argv[1], NULL); |
0b1284eb | 22 | size = dectoul(argv[2], NULL); |
3eaac630 RF |
23 | |
24 | return pcap_init(addr, size) ? CMD_RET_FAILURE : CMD_RET_SUCCESS; | |
25 | } | |
26 | ||
09140113 SG |
27 | static int do_pcap_start(struct cmd_tbl *cmdtp, int flag, int argc, |
28 | char *const argv[]) | |
3eaac630 RF |
29 | { |
30 | return pcap_start_stop(true) ? CMD_RET_FAILURE : CMD_RET_SUCCESS; | |
31 | } | |
32 | ||
09140113 SG |
33 | static int do_pcap_stop(struct cmd_tbl *cmdtp, int flag, int argc, |
34 | char *const argv[]) | |
3eaac630 RF |
35 | { |
36 | return pcap_start_stop(false) ? CMD_RET_FAILURE : CMD_RET_SUCCESS; | |
37 | } | |
38 | ||
09140113 SG |
39 | static int do_pcap_status(struct cmd_tbl *cmdtp, int flag, int argc, |
40 | char *const argv[]) | |
3eaac630 RF |
41 | { |
42 | return pcap_print_status() ? CMD_RET_FAILURE : CMD_RET_SUCCESS; | |
43 | } | |
44 | ||
09140113 SG |
45 | static int do_pcap_clear(struct cmd_tbl *cmdtp, int flag, int argc, |
46 | char *const argv[]) | |
3eaac630 RF |
47 | { |
48 | return pcap_clear() ? CMD_RET_FAILURE : CMD_RET_SUCCESS; | |
49 | } | |
50 | ||
51 | static 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 | ||
65 | U_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 | ); |