]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/Application/IfConfig6/IfConfig6.c
NetworkPkg: Refine the code of shell app under networkPkg.
[mirror_edk2.git] / NetworkPkg / Application / IfConfig6 / IfConfig6.c
index 4cec44f8d5e91ecf6428d731e1a18db46d88daa8..48c3be35524fe132e69aef8c4fc886fb7e1399cd 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   The implementation for Shell application IfConfig6.\r
 \r
 /** @file\r
   The implementation for Shell application IfConfig6.\r
 \r
-  Copyright (c) 2009 - 2015, 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
 \r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
@@ -19,6 +19,7 @@
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\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
 #include <Library/HiiLib.h>\r
 #include <Library/NetLib.h>\r
 \r
 \r
 #include "IfConfig6.h"\r
 \r
 \r
 #include "IfConfig6.h"\r
 \r
+//\r
+// String token ID of ifconfig6 command help message text.\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringIfconfig6HelpTokenId = STRING_TOKEN (STR_IFCONFIG6_HELP);\r
+\r
 EFI_HII_HANDLE      mHiiHandle;\r
 \r
 SHELL_PARAM_ITEM    mIfConfig6CheckList[] = {\r
 EFI_HII_HANDLE      mHiiHandle;\r
 \r
 SHELL_PARAM_ITEM    mIfConfig6CheckList[] = {\r
@@ -46,10 +52,6 @@ SHELL_PARAM_ITEM    mIfConfig6CheckList[] = {
     L"-r",\r
     TypeValue\r
   },\r
     L"-r",\r
     TypeValue\r
   },\r
-  {\r
-    L"-?",\r
-    TypeFlag\r
-  },\r
   {\r
     NULL,\r
     TypeMax\r
   {\r
     NULL,\r
     TypeMax\r
@@ -127,7 +129,7 @@ SplitStrToList (
   ARG_LIST    *ArgList;\r
   ARG_LIST    *ArgNode;\r
 \r
   ARG_LIST    *ArgList;\r
   ARG_LIST    *ArgNode;\r
 \r
-  if (*String == L'\0' || *String == NULL) {\r
+  if (String == NULL || *String == L'\0') {\r
     return NULL;\r
   }\r
 \r
     return NULL;\r
   }\r
 \r
@@ -1648,20 +1650,45 @@ IfConfig6Initialize (
   IN  EFI_SYSTEM_TABLE    *SystemTable\r
   )\r
 {\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
 \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
+  // Publish HII package list to HII Database.\r
   //\r
   //\r
-  mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, IfConfig6Strings, NULL);\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
   ASSERT (mHiiHandle != NULL);\r
 \r
   Status = ShellCommandLineParseEx (mIfConfig6CheckList, &ParamPackage, &ProblemParam, TRUE, FALSE);\r
@@ -1674,7 +1701,7 @@ IfConfig6Initialize (
   // To handle no option.\r
   //\r
   if (!ShellCommandLineGetFlag (ParamPackage, L"-r") && !ShellCommandLineGetFlag (ParamPackage, L"-s") &&\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
     ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_LACK_OPTION), mHiiHandle);\r
     goto ON_EXIT;\r
   }\r
@@ -1683,20 +1710,10 @@ IfConfig6Initialize (
   //\r
   if (((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-s"))) ||\r
       ((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-l"))) ||\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
     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
 \r
   Status = EFI_INVALID_PARAMETER;\r
 \r