On 04/12/2016 09:16 PM, Jiaxin Wu wrote:
This patch is used to update ping command options to sync
with shell2.2 Spec.
Considering the backward compatible issue, the patch keeps
ā-_sā command option unchanged, only add the new option '-s'
and make the old option '-_s' function same as new one.
Cc: Ye Ting <ting...@intel.com>
Cc: Fu Siyuan <siyuan...@intel.com>
Cc: Jaben Carsey <jaben.car...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiaxin Wu <jiaxin...@intel.com>
---
.../Library/UefiShellNetwork1CommandsLib/Ping.c | 12 ++++++++++--
.../UefiShellNetwork1CommandsLib.uni | 22 +++++++++-------------
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
index dbee764..13bcdde 100644
--- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
+++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ping.c
@@ -1,10 +1,10 @@
/** @file
The implementation for Ping shell command.
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.<BR>
- Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD
License
which accompanies this distribution. The full text of the license may be
found at
http://opensource.org/licenses/bsd-license.php.
@@ -196,10 +196,14 @@ STATIC CONST SHELL_PARAM_ITEM PingParamList[] = {
{
L"-n",
TypeValue
},
{
+ L"-s",
+ TypeValue
+ },
+ {
L"-_s",
TypeValue
},
{
L"-_ip6",
@@ -1510,11 +1514,15 @@ ShellCommandRunPing (
ZeroMem (&DstAddress, sizeof (EFI_IPv6_ADDRESS));
//
// Parse the paramter of source ip address.
//
- ValueStr = ShellCommandLineGetValue (ParamPackage, L"-_s");
+ ValueStr = ShellCommandLineGetValue (ParamPackage, L"-s");
+ if (ValueStr == NULL) {
+ ValueStr = ShellCommandLineGetValue (ParamPackage, L"-_s");
+ }
+
What happens to ValueStr when neither "-s" nor "-_s" are specified from
the command line, but there are multiple network interfaces active on
the system? Will ValueStr be resolved to one of their IP's automatically?
In other words, if the system has two active network interfaces, will
ping work with just the command:
ping <target ip>
(I would test here but I do not have a platform that will work,
unfortunately).
I think this was (part of) Bhupesh's original issue (below from
<http://thread.gmane.org/gmane.comp.bios.edk2.devel/10046>):
> We are facing an issue when we enable two SNP (Simple Network)
drivers in our EDK2 setup over a ARMv8 based
> SoC - NXP LS2080A.
>
> <snip>
>
> Shell> ifconfig -l
>
> -----------------------------------------------------------------
>
> name : eth0
> Media State : Media present
> policy : dhcp
> mac addr : 68:05:CA:16:8C:5E
>
> <snip>
> -----------------------------------------------------------------
>
> name : eth1
> Media State : Media present
> policy : static
> mac addr : 6E:70:FE:EC:00:06
>
> <snip>
> -----------------------------------------------------------------
> C) Now, when I try to ping a server over a LAN cable, I get the
following error message:
>
> Shell> ping 192.168.1.1
> InstallProtocolInterface: 41D94CD2-35B6-455A-8258-D4E51334AADD 8370DFD9E0
> InstallProtocolInterface: 8A219718-4EF5-4761-91C8-C0F04BDA9E56 8370DFF8A0
>
> Snp->undi.transmit() 8000h:Ah
> Config No mapping
Note that he did not specify an interface in the ping command, but the
issue was resolved when he did (which started the "-_s"/"-s"
discussion). In my experience, Linux's ping will choose an active
interface when there are multiple active interfaces but the "-I" flag is
unused. I don't know if automatic interface resolution is desired in the
Shell's ping (perhaps Windows doesn't do this resolution), and if not
that's fine, but I figure it's worth mentioning.
Thanks!
David
if (ValueStr != NULL) {
mSrcString = ValueStr;
if (IpChoice == PING_IP_CHOICE_IP6) {
Status = NetLibStrToIp6 (ValueStr, &SrcAddress);
} else {
diff --git
a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
index bc6acac..7d6f2da 100644
---
a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
+++
b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
@@ -1,9 +1,9 @@
// /**
//
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
-// Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved. <BR>
+// Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved. <BR>
// This program and the accompanying materials
// are licensed and made available under the terms and conditions of the BSD
License
// which accompanies this distribution. The full text of the license may be
found at
// http://opensource.org/licenses/bsd-license.php
//
@@ -86,28 +86,27 @@
#string STR_IFCONFIG_INFO_GATEWAY_HEAD #language en-US "\n%Hdefault
gateway: %N"
#string STR_IFCONFIG_INFO_DNS_ADDR_HEAD #language en-US "\n%HDNS server
: %N\n"
#string STR_IFCONFIG_INFO_IP_ADDR_BODY #language en-US
"%d.%d.%d.%d\n"
#string STR_GET_HELP_PING #language en-US ""
-".TH ping 0 "Pings the target host with an IPv4 or IPv6 stack."\r\n"
+".TH ping 0 "Ping the target host with an IPv4 stack."\r\n"
".SH NAME\r\n"
-"Pings the target host with an IPv4 or IPv6 stack.\r\n"
+"Ping the target host with an IPv4 stack.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
-"PING [-_ip6] [-_s SourceIp] [-n count] [-l size] TargetIp\r\n"
+"PING [-n count] [-l size] [-s SourceIp] TargetIp\r\n"
".SH OPTIONS\r\n"
" \r\n"
" -n - Specifies the number of echo request datagrams to be sent.\r\n"
" -l - Specifies the size of the data buffer in the echo request
datagram.\r\n"
-" -_ip6 - Specifies the IPv6 stack usage mode (Default is IPv4 stack).\r\n"
-" -_s - Specifies the source adapter as IPv4 or IPv6 address.\r\n"
-" SourceIp - Specifies the IPv4 or IPv6 address of the source machine.\r\n"
-" TargetIp - Specifies the IPv4 or IPv6 address of the target machine.\r\n"
+" -s - Specifies the source adapter as IPv4 address.\r\n"
+" SourceIp - Specifies the IPv4 address of the source machine.\r\n"
+" TargetIp - Specifies the IPv4 address of the target machine.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
-" 1. This command uses the ICMPv4 or ICMPv6 ECHO_REQUEST datagram to elicit
an\r\n"
+" 1. This command uses the ICMPv4 ECHO_REQUEST datagram to elicit an\r\n"
" ECHO_REPLY from a host.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
" * To ping the target host with 64 bytes data:\r\n"
@@ -115,14 +114,11 @@
" \r\n"
" * To ping the target host by sending 20 echo request datagrams:\r\n"
" fs0:\> ping -n 20 202.120.100.1\r\n"
" \r\n"
" * To ping the target host by specifying the source adapter as IPv4
address:\r\n"
-" fs0:\> ping -_s 202.120.100.12 202.120.100.1\r\n"
-" \r\n"
-" * To ping the target host by specifying the IPv6 stack usage mode:\r\n"
-" fs0:\> ping -_ip6 2000:bbbb::8\r\n"
+" fs0:\> ping -s 202.120.100.12 202.120.100.1\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
" SHELL_SUCCESS The action was completed as requested.\r\n"
" SHELL_INVALID_PARAMETER One of the passed-in parameters was
incorrectly\r\n"
--
Thanks,
David Van Arnem
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel