/** @file\r
The implementation for Shell application IfConfig6.\r
\r
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2016, 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
#include <Library/MemoryAllocationLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/UefiHiiServicesLib.h>\r
#include <Library/HiiLib.h>\r
#include <Library/NetLib.h>\r
\r
\r
EFI_HII_HANDLE mHiiHandle;\r
\r
-EFI_GUID mEfiIfConfig6Guid = EFI_IFCONFIG6_GUID;\r
SHELL_PARAM_ITEM mIfConfig6CheckList[] = {\r
{\r
L"-b",\r
L"-r",\r
TypeValue\r
},\r
- {\r
- L"-?",\r
- TypeFlag\r
- },\r
{\r
NULL,\r
TypeMax\r
ARG_LIST *ArgList;\r
ARG_LIST *ArgNode;\r
\r
- if (*String == L'\0') {\r
+ if (String == NULL || *String == L'\0') {\r
return NULL;\r
}\r
\r
//\r
// Copy the CONST string to a local copy.\r
//\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (String));\r
+ Str = AllocateCopyPool (StrSize (String), String);\r
ASSERT (Str != NULL);\r
- Str = StrCpy (Str, String);\r
ArgStr = Str;\r
\r
//\r
/**\r
The notify function of create event when performing a manual config.\r
\r
- @param[in] CheckList The pointer of Event.\r
- @param[in] Context The pointer of Context.\r
+ @param[in] Event The event this notify function registered to.\r
+ @param[in] Context Pointer to the context data registered to the event.\r
\r
**/\r
VOID\r
\r
@param[in, out] Arg The pointer of the address of ARG_LIST which save Args with the "-s" option.\r
@param[out] Buf The pointer of the address of EFI_IP6_CONFIG_MANUAL_ADDRESS.\r
- @param[out] Address The pointer of BufSize that describes the size of Buf in bytes.\r
+ @param[out] BufSize The pointer of BufSize that describes the size of Buf in bytes.\r
\r
@retval EFI_SUCCESS The convertion is successful.\r
@retval Others Does't find the host address, or it is an invalid IPv6 address in string format.\r
UINT8 Prefix;\r
UINT8 AddrCnt;\r
\r
+ Prefix = 0;\r
AddrCnt = 0;\r
*BufSize = 0;\r
*Buf = NULL;\r
\r
@param[in, out] Arg The pointer of the address of ARG_LIST that save Args with the "-s" option.\r
@param[out] Buf The pointer of the address of EFI_IPv6_ADDRESS.\r
- @param[out] Address The pointer of BufSize that describes the size of Buf in bytes.\r
+ @param[out] BufSize The pointer of BufSize that describes the size of Buf in bytes.\r
\r
@retval EFI_SUCCESS The conversion is successful.\r
@retval Others Doesn't find the host address, or it is an invalid IPv6 address in string format.\r
IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- IFCONFIG6_PRIVATE_DATA *Private;\r
- LIST_ENTRY *ParamPackage;\r
- CONST CHAR16 *ValueStr;\r
- ARG_LIST *ArgList;\r
- CHAR16 *ProblemParam;\r
- CHAR16 *Str;\r
+ EFI_STATUS Status;\r
+ IFCONFIG6_PRIVATE_DATA *Private;\r
+ EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
+ LIST_ENTRY *ParamPackage;\r
+ CONST CHAR16 *ValueStr;\r
+ ARG_LIST *ArgList;\r
+ CHAR16 *ProblemParam;\r
+ CHAR16 *Str;\r
\r
Private = NULL;\r
\r
//\r
- // Register our string package with HII and return the handle to it.\r
+ // Retrieve HII package list from ImageHandle\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ImageHandle,\r
+ &gEfiHiiPackageListProtocolGuid,\r
+ (VOID **) &PackageList,\r
+ ImageHandle,\r
+ NULL,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
//\r
- mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, IfConfig6Strings, NULL);\r
+ // Publish HII package list to HII Database.\r
+ //\r
+ Status = gHiiDatabase->NewPackageList (\r
+ gHiiDatabase,\r
+ PackageList,\r
+ NULL,\r
+ &mHiiHandle\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ \r
ASSERT (mHiiHandle != NULL);\r
\r
Status = ShellCommandLineParseEx (mIfConfig6CheckList, &ParamPackage, &ProblemParam, TRUE, FALSE);\r
// To handle no option.\r
//\r
if (!ShellCommandLineGetFlag (ParamPackage, L"-r") && !ShellCommandLineGetFlag (ParamPackage, L"-s") &&\r
- !ShellCommandLineGetFlag (ParamPackage, L"-?") && !ShellCommandLineGetFlag (ParamPackage, L"-l")) {\r
+ !ShellCommandLineGetFlag (ParamPackage, L"-l")) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_LACK_OPTION), mHiiHandle);\r
goto ON_EXIT;\r
}\r
//\r
if (((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-s"))) ||\r
((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-l"))) ||\r
- ((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-?"))) ||\r
- ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-l"))) ||\r
- ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-?"))) ||\r
- ((ShellCommandLineGetFlag (ParamPackage, L"-l")) && (ShellCommandLineGetFlag (ParamPackage, L"-?")))) {\r
+ ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-l")))) {\r
ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_CONFLICT_OPTIONS), mHiiHandle);\r
goto ON_EXIT;\r
}\r
- //\r
- // To show the help information of ifconfig6 command.\r
- //\r
- if (ShellCommandLineGetFlag (ParamPackage, L"-?")) {\r
- ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_HELP), mHiiHandle);\r
- goto ON_EXIT;\r
- }\r
\r
Status = EFI_INVALID_PARAMETER;\r
\r
Private->OpCode = IfConfig6OpList;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-l");\r
if (ValueStr != NULL) {\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (ValueStr));\r
+ Str = AllocateCopyPool (StrSize (ValueStr), ValueStr);\r
ASSERT (Str != NULL);\r
-\r
- Str = StrCpy (Str, ValueStr);\r
Private->IfName = Str;\r
}\r
}\r
Private->OpCode = IfConfig6OpClear;\r
ValueStr = ShellCommandLineGetValue (ParamPackage, L"-r");\r
if (ValueStr != NULL) {\r
- Str = (CHAR16 *) AllocateZeroPool (StrSize (ValueStr));\r
+ Str = AllocateCopyPool (StrSize (ValueStr), ValueStr);\r
ASSERT (Str != NULL);\r
-\r
- Str = StrCpy (Str, ValueStr);\r
Private->IfName = Str;\r
}\r
}\r