From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D5F2881915 for ; Sun, 8 Jan 2017 22:42:35 -0800 (PST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP; 08 Jan 2017 22:42:35 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,339,1477983600"; d="scan'208";a="51018224" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga005.fm.intel.com with ESMTP; 08 Jan 2017 22:42:35 -0800 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 8 Jan 2017 22:42:35 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.248.2; Sun, 8 Jan 2017 22:42:35 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.20]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0248.002; Mon, 9 Jan 2017 14:42:33 +0800 From: "Ye, Ting" To: "Zhang, Lubo" , "edk2-devel@lists.01.org" CC: Santhapur Naveen , "Fu, Siyuan" , "Wu, Jiaxin" Thread-Topic: [patch] ShellPkg: Add check logic for the gateway validity. Thread-Index: AQHSZ/2U+feOI+3RhEWEbLsWgyArvqEvtwPQ Date: Mon, 9 Jan 2017 06:42:32 +0000 Message-ID: References: <1483694175-41876-1-git-send-email-lubo.zhang@intel.com> In-Reply-To: <1483694175-41876-1-git-send-email-lubo.zhang@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [patch] ShellPkg: Add check logic for the gateway validity. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jan 2017 06:42:35 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Ye Ting =20 -----Original Message----- From: Zhang, Lubo=20 Sent: Friday, January 06, 2017 5:16 PM To: edk2-devel@lists.01.org Cc: Santhapur Naveen ; Ye, Ting = ; Fu, Siyuan ; Wu, Jiaxin Subject: [patch] ShellPkg: Add check logic for the gateway validity. if we set a static IP using command 'ifconfig -s eth0 static 192.168.0.121 255.255.255.0 0.0.0.0' The system says 'Failed to set address.' but using 'ifconfig -l', the stati= c IP can be assigned successfully. so we need to check the gateway validity before setting manual address to k= eep the ifconfig -s command more consistent. Signed-off-by: Zhang Lubo Cc: Santhapur Naveen Cc: Ye Ting Cc: Fu Siyuan Cc: Wu Jiaxin --- .../Library/UefiShellNetwork1CommandsLib/Ifconfig.c | 19 +++++++++++++++= +++- .../UefiShellNetwork1CommandsLib.uni | 3 ++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c b/She= llPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c index 5e243d5..4db07b2 100644 --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c @@ -1,10 +1,10 @@ /** @file The implementation for Shell command ifconfig based on IP4Config2 protoc= ol. =20 (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+ Copyright (c) 2006 - 2017, Intel Corporation. All rights=20 + reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License which accompanies this distribution. The full text of the license may b= e found at http://opensource.org/licenses/bsd-license.php. @@ -835,10 +835,12 @@ IfConfigSetInterfaceInfo ( =20 EFI_IP4_CONFIG2_POLICY Policy; EFI_IP4_CONFIG2_MANUAL_ADDRESS ManualAddress; UINTN DataSize; EFI_IPv4_ADDRESS Gateway; + IP4_ADDR SubnetMask; + IP4_ADDR TempGateway; EFI_IPv4_ADDRESS *Dns; ARG_LIST *Tmp; UINTN Index; =20 CONST CHAR16* TempString; @@ -1017,10 +1019,25 @@ IfConfigSetInterfaceInfo ( ShellStatus =3D SHELL_INVALID_PARAMETER; goto ON_EXIT; } =20 // + // Need to check the gateway validity before set Manual Address. + // In case we can set manual address but fail to configure Gateway. + // + CopyMem (&SubnetMask, &ManualAddress.SubnetMask, sizeof (IP4_ADDR)); + CopyMem (&TempGateway, &Gateway, sizeof (IP4_ADDR)); + SubnetMask =3D NTOHL (SubnetMask); + TempGateway =3D NTOHL (TempGateway); + if ((SubnetMask !=3D 0) && + !NetIp4IsUnicast (TempGateway, SubnetMask)) { + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG_INVALID_= GATEWAY), gShellNetwork1HiiHandle, VarArg->Arg); + ShellStatus =3D SHELL_INVALID_PARAMETER; + goto ON_EXIT; + } + + // // Set manual config policy. // Policy =3D Ip4Config2PolicyStatic; Status =3D IfCb->IfCfg->SetData ( IfCb->IfCfg, diff --git a/ShellPkg/Library/U= efiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni b/ShellPkg/Lib= rary/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni index 4566cd1..d9bbb20 100644 --- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Comman= dsLib.uni +++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Com +++ mandsLib.uni @@ -1,9 +1,9 @@ // /** // // (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.
-= // Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
+// Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.=20 +
// This program and the accompanying materials // are licensed and made a= vailable under the terms and conditions of the BSD License // which accomp= anies this distribution. The full text of the license may be found at // h= ttp://opensource.org/licenses/bsd-license.php // @@ -64,10 +64,11 @@ #string STR_IFCONFIG_LACK_OPTION #language en-US "Flags la= ck. Please type 'ifConfig -?' for help info.\n" #string STR_IFCONFIG_LACK_INTERFACE #language en-US "Lack int= erface name.\n" #string STR_IFCONFIG_LACK_COMMAND #language en-US "Lack int= erface config option.\n" #string STR_IFCONFIG_INVALID_INTERFACE #language en-US "Invalid = interface name.\n" #string STR_IFCONFIG_INVALID_IPADDRESS #language en-US "Invalid = ipv4 address: '%H%s%N'\n" +#string STR_IFCONFIG_INVALID_GATEWAY #language en-US "Invalid = gateway address: '%H%s%N'\n" #string STR_IFCONFIG_DUPLICATE_COMMAND #language en-US "Duplicat= e commands. Bad command %H%s%N is skipped.\n" #string STR_IFCONFIG_CONFLICT_COMMAND #language en-US "Conflict= commands. Bad command %H%s%N is skipped.\n" #string STR_IFCONFIG_UNKNOWN_COMMAND #language en-US "Unknown = commands. Bad command %H%s%N is skipped.\n" #string STR_IFCONFIG_SET_ADDR_FAILED #language en-US "Failed t= o set address.\n" #string STR_IFCONFIG_ROUTES_SIZE #language en-US "\n%H Ro= utes (%d entries):\n" -- 1.9.5.msysgit.1