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.
This commit is contained in:
yukelab
2021-09-07 10:20:58 +08:00
committed by liuxianliang
parent 5711b0a76b
commit cda78884aa
4 changed files with 49 additions and 3 deletions

View File

@@ -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 <host address>\n");
}
else
else if (argc == 2)
{
netdev_cmd_ping(argv[1], 4, 0);
netdev_cmd_ping(argv[1], RT_NULL, 4, 0);
}
else if (argc == 3)
{
netdev_cmd_ping(argv[1], argv[2], 4, 0);
}
return 0;