summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorViacheslav Mitrofanov <[email protected]>2022-12-02 12:18:08 +0300
committerTom Rini <[email protected]>2022-12-05 12:47:16 -0500
commiteeb0a2c6938226ee3c46fa66971da9231d64667d (patch)
tree6eb7a6f8caca4976f1f78afa9f229b41e704f67b /cmd
parent7fbf230d79ad531e680475529191e2ec08099c7d (diff)
net: ping6: Add ping6 command
Implement ping6 command to ping hosts using IPv6. It works the same way as an ordinary ping command. There is no ICMP request so it is not possible to ping our host. This patch adds options in Kconfig and Makefile to build ping6 command. Series-changes: 3 - Added structures and functions descriptions - Added to ping6_receive() return value instead of void Series-changes: 4 - Fixed structures and functions description style Signed-off-by: Viacheslav Mitrofanov <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Simon Glass <[email protected]>
Diffstat (limited to 'cmd')
-rw-r--r--cmd/Kconfig7
-rw-r--r--cmd/net.c26
2 files changed, 33 insertions, 0 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig
index a4b6fc6a5da..d93731f2af6 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1847,6 +1847,13 @@ config CMD_PING
help
Send ICMP ECHO_REQUEST to network host
+config CMD_PING6
+ bool "ping6"
+ depends on IPV6
+ default y if (CMD_PING && IPV6)
+ help
+ Send ICMPv6 ECHO_REQUEST to network host
+
config CMD_CDP
bool "cdp"
help
diff --git a/cmd/net.c b/cmd/net.c
index 221b3525caa..0e9f200ca97 100644
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -403,6 +403,32 @@ U_BOOT_CMD(
);
#endif
+#if IS_ENABLED(CONFIG_CMD_PING6)
+int do_ping6(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[])
+{
+ if (string_to_ip6(argv[1], strlen(argv[1]), &net_ping_ip6))
+ return CMD_RET_USAGE;
+
+ use_ip6 = true;
+ if (net_loop(PING6) < 0) {
+ use_ip6 = false;
+ printf("ping6 failed; host %pI6c is not alive\n",
+ &net_ping_ip6);
+ return 1;
+ }
+
+ use_ip6 = false;
+ printf("host %pI6c is alive\n", &net_ping_ip6);
+ return 0;
+}
+
+U_BOOT_CMD(
+ ping6, 2, 1, do_ping6,
+ "send ICMPv6 ECHO_REQUEST to network host",
+ "pingAddress"
+);
+#endif /* CONFIG_CMD_PING6 */
+
#if defined(CONFIG_CMD_CDP)
static void cdp_update_env(void)