From cda78884aa373cf93555f41a022a80d73f26ce74 Mon Sep 17 00:00:00 2001 From: yukelab Date: Tue, 7 Sep 2021 10:20:58 +0800 Subject: ping cmd with specified netif in lwip-2.1.2 using LWIP_HOOK_IP4_ROUTE_SRC hook find specified netif route, using cmd `ping 192.168.xx.xx e0`, ping dest using e0 netif. if not found netif, using default netif, the effect is same as the cmd `ping 192.168.xx.xx` that only ping with default netif. --- components/net/netdev/src/netdev.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'components/net/netdev/src') diff --git a/components/net/netdev/src/netdev.c b/components/net/netdev/src/netdev.c index 4c5d524510..231c6e523d 100644 --- a/components/net/netdev/src/netdev.c +++ b/components/net/netdev/src/netdev.c @@ -1052,7 +1052,7 @@ MSH_CMD_EXPORT_ALIAS(netdev_ifconfig, ifconfig, list the information of all netw #endif /* NETDEV_USING_IFCONFIG */ #ifdef NETDEV_USING_PING -int netdev_cmd_ping(char* target_name, rt_uint32_t times, rt_size_t size) +int netdev_cmd_ping(char* target_name, char *netdev_name, rt_uint32_t times, rt_size_t size) { #define NETDEV_PING_DATA_SIZE 32 /** ping receive timeout - in milliseconds */ @@ -1073,6 +1073,16 @@ int netdev_cmd_ping(char* target_name, rt_uint32_t times, rt_size_t size) size = NETDEV_PING_DATA_SIZE; } + if (netdev_name != RT_NULL) + { + netdev = netdev_get_by_name(netdev_name); + if (netdev == RT_NULL) + { + netdev = netdev_default; + rt_kprintf("ping: not found specified netif, using default netdev %s.\n", netdev->name); + } + } + if (NETDEV_PING_IS_COMMONICABLE(netdev_default)) { /* using default network interface device for ping */ @@ -1146,9 +1156,13 @@ int netdev_ping(int argc, char **argv) { rt_kprintf("Please input: ping \n"); } - else + else if (argc == 2) + { + netdev_cmd_ping(argv[1], RT_NULL, 4, 0); + } + else if (argc == 3) { - netdev_cmd_ping(argv[1], 4, 0); + netdev_cmd_ping(argv[1], argv[2], 4, 0); } return 0; -- cgit v1.3.1