public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Fu, Siyuan" <siyuan.fu@intel.com>
To: "Zhang, Lubo" <lubo.zhang@intel.com>,
	"edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: Santhapur Naveen <naveens@amiindia.co.in>,
	"Ye, Ting" <ting.ye@intel.com>,
	 "Wu, Jiaxin" <jiaxin.wu@intel.com>
Subject: Re: [patch] ShellPkg: Add check logic for the gateway validity.
Date: Mon, 9 Jan 2017 07:11:43 +0000	[thread overview]
Message-ID: <B1FF2E9001CE9041BD10B825821D5BC58A8CE4D8@shsmsx102.ccr.corp.intel.com> (raw)
In-Reply-To: <1483694175-41876-1-git-send-email-lubo.zhang@intel.com>

Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>

-----Original Message-----
From: Zhang, Lubo 
Sent: 2017年1月6日 17:16
To: edk2-devel@lists.01.org
Cc: Santhapur Naveen <naveens@amiindia.co.in>; Ye, Ting <ting.ye@intel.com>; Fu, Siyuan <siyuan.fu@intel.com>; Wu, Jiaxin <jiaxin.wu@intel.com>
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 static IP can be assigned successfully.
so we need to check the gateway validity before setting manual address to keep the ifconfig -s command more consistent.

Signed-off-by: Zhang Lubo <lubo.zhang@intel.com>
Cc: Santhapur Naveen <naveens@amiindia.co.in>
Cc: Ye Ting <ting.ye@intel.com>
Cc: Fu Siyuan <siyuan.fu@intel.com>
Cc: Wu Jiaxin <jiaxin.wu@intel.com>
---
 .../Library/UefiShellNetwork1CommandsLib/Ifconfig.c   | 19 ++++++++++++++++++-
 .../UefiShellNetwork1CommandsLib.uni                  |  3 ++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/Ifconfig.c b/ShellPkg/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 protocol.
 
   (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
-  Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2006 - 2017, 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.
@@ -835,10 +835,12 @@ IfConfigSetInterfaceInfo (
 
   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;
 
   CONST CHAR16* TempString;
@@ -1017,10 +1019,25 @@ IfConfigSetInterfaceInfo (
         ShellStatus = SHELL_INVALID_PARAMETER;
         goto ON_EXIT;
       }
 
       //
+      // 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  = NTOHL (SubnetMask);
+      TempGateway = NTOHL (TempGateway);
+      if ((SubnetMask != 0) &&
+          !NetIp4IsUnicast (TempGateway, SubnetMask)) {
+        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG_INVALID_GATEWAY), gShellNetwork1HiiHandle, VarArg->Arg);
+        ShellStatus = SHELL_INVALID_PARAMETER;
+        goto ON_EXIT;
+      }
+
+      //
       // Set manual config policy.
       //
       Policy = Ip4Config2PolicyStatic;
       Status = IfCb->IfCfg->SetData (
                               IfCb->IfCfg, diff --git a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
index 4566cd1..d9bbb20 100644
--- a/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1CommandsLib.uni
+++ b/ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1Com
+++ mandsLib.uni
@@ -1,9 +1,9 @@
 // /**
 //
 // (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR> -// Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved. <BR>
+// Copyright (c) 2010 - 2017, 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
 //
@@ -64,10 +64,11 @@
 #string STR_IFCONFIG_LACK_OPTION              #language en-US    "Flags lack. Please type 'ifConfig -?' for help info.\n"
 #string STR_IFCONFIG_LACK_INTERFACE           #language en-US    "Lack interface name.\n"
 #string STR_IFCONFIG_LACK_COMMAND             #language en-US    "Lack interface 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    "Duplicate 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 to set address.\n"
 #string STR_IFCONFIG_ROUTES_SIZE              #language en-US  	 "\n%H  Routes (%d entries):\n"
--
1.9.5.msysgit.1


  parent reply	other threads:[~2017-01-09  7:11 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-06  9:16 [patch] ShellPkg: Add check logic for the gateway validity Zhang Lubo
2017-01-09  6:42 ` Ye, Ting
2017-01-09  7:11 ` Fu, Siyuan [this message]
2017-01-09  7:54 ` Wu, Jiaxin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=B1FF2E9001CE9041BD10B825821D5BC58A8CE4D8@shsmsx102.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox