The implementation for Shell command ifconfig based on IP4Config2 protocol.\r
\r
(C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
- Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
EFI_IP4_CONFIG2_MANUAL_ADDRESS ManualAddress;\r
UINTN DataSize;\r
EFI_IPv4_ADDRESS Gateway;\r
+ IP4_ADDR SubnetMask;\r
+ IP4_ADDR TempGateway;\r
EFI_IPv4_ADDRESS *Dns;\r
ARG_LIST *Tmp;\r
UINTN Index;\r
goto ON_EXIT;\r
}\r
\r
+ //\r
+ // Need to check the gateway validity before set Manual Address.\r
+ // In case we can set manual address but fail to configure Gateway.\r
+ //\r
+ CopyMem (&SubnetMask, &ManualAddress.SubnetMask, sizeof (IP4_ADDR));\r
+ CopyMem (&TempGateway, &Gateway, sizeof (IP4_ADDR));\r
+ SubnetMask = NTOHL (SubnetMask);\r
+ TempGateway = NTOHL (TempGateway);\r
+ if ((SubnetMask != 0) &&\r
+ !NetIp4IsUnicast (TempGateway, SubnetMask)) {\r
+ ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG_INVALID_GATEWAY), gShellNetwork1HiiHandle, VarArg->Arg);\r
+ ShellStatus = SHELL_INVALID_PARAMETER;\r
+ goto ON_EXIT;\r
+ }\r
+\r
//\r
// Set manual config policy.\r
//\r
// /**\r
//\r
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
-// Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved. <BR>\r
+// Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved. <BR>\r
// This program and the accompanying materials\r
// are licensed and made available under the terms and conditions of the BSD License\r
// which accompanies this distribution. The full text of the license may be found at\r
#string STR_IFCONFIG_LACK_COMMAND #language en-US "Lack interface config option.\n"\r
#string STR_IFCONFIG_INVALID_INTERFACE #language en-US "Invalid interface name.\n"\r
#string STR_IFCONFIG_INVALID_IPADDRESS #language en-US "Invalid ipv4 address: '%H%s%N'\n"\r
+#string STR_IFCONFIG_INVALID_GATEWAY #language en-US "Invalid gateway address: '%H%s%N'\n"\r
#string STR_IFCONFIG_DUPLICATE_COMMAND #language en-US "Duplicate commands. Bad command %H%s%N is skipped.\n"\r
#string STR_IFCONFIG_CONFLICT_COMMAND #language en-US "Conflict commands. Bad command %H%s%N is skipped.\n"\r
#string STR_IFCONFIG_UNKNOWN_COMMAND #language en-US "Unknown commands. Bad command %H%s%N is skipped.\n"\r