1 /** @file
2   Main file for NULL named library for network1 shell command functions.
3 
4   Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved. <BR>
5   This program and the accompanying materials
6   are licensed and made available under the terms and conditions of the BSD License
7   which accompanies this distribution.  The full text of the license may be found at
8   http://opensource.org/licenses/bsd-license.php
9 
10   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 
13 **/
14 #include "UefiShellNetwork1CommandsLib.h"
15 
16 CONST CHAR16 gShellNetwork1FileName[] = L"ShellCommands";
17 EFI_HANDLE gShellNetwork1HiiHandle = NULL;
18 
19 /**
20   return the file name of the help text file if not using HII.
21 
22   @return The string pointer to the file name.
23 **/
24 CONST CHAR16*
25 EFIAPI
ShellCommandGetManFileNameNetwork1(VOID)26 ShellCommandGetManFileNameNetwork1 (
27   VOID
28   )
29 {
30   return (gShellNetwork1FileName);
31 }
32 
33 /**
34   Constructor for the Shell Network1 Commands library.
35 
36   Install the handlers for Network1 UEFI Shell 2.0 profile commands.
37 
38   @param ImageHandle            The image handle of the process.
39   @param SystemTable            The EFI System Table pointer.
40 
41   @retval EFI_SUCCESS           The shell command handlers were installed sucessfully.
42   @retval EFI_UNSUPPORTED       The shell level required was not found.
43 **/
44 EFI_STATUS
45 EFIAPI
ShellNetwork1CommandsLibConstructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)46 ShellNetwork1CommandsLibConstructor (
47   IN EFI_HANDLE        ImageHandle,
48   IN EFI_SYSTEM_TABLE  *SystemTable
49   )
50 {
51   gShellNetwork1HiiHandle = NULL;
52 
53   //
54   // check our bit of the profiles mask
55   //
56   if ((PcdGet8(PcdShellProfileMask) & BIT3) == 0) {
57     return (EFI_SUCCESS);
58   }
59 
60   gShellNetwork1HiiHandle = HiiAddPackages (&gShellNetwork1HiiGuid, gImageHandle, UefiShellNetwork1CommandsLibStrings, NULL);
61   if (gShellNetwork1HiiHandle == NULL) {
62     return (EFI_DEVICE_ERROR);
63   }
64   //
65   // install our shell command handlers
66   //
67   ShellCommandRegisterCommandName(L"ping",    ShellCommandRunPing     , ShellCommandGetManFileNameNetwork1, 0, L"network1", TRUE , gShellNetwork1HiiHandle, STRING_TOKEN(STR_GET_HELP_PING));
68   ShellCommandRegisterCommandName(L"ifconfig",ShellCommandRunIfconfig , ShellCommandGetManFileNameNetwork1, 0, L"network1", TRUE , gShellNetwork1HiiHandle, STRING_TOKEN(STR_GET_HELP_IFCONFIG));
69 
70   return (EFI_SUCCESS);
71 }
72 
73 /**
74   Destructor for the library.  free any resources.
75 
76   @param ImageHandle            The image handle of the process.
77   @param SystemTable            The EFI System Table pointer.
78 **/
79 EFI_STATUS
80 EFIAPI
ShellNetwork1CommandsLibDestructor(IN EFI_HANDLE ImageHandle,IN EFI_SYSTEM_TABLE * SystemTable)81 ShellNetwork1CommandsLibDestructor (
82   IN EFI_HANDLE        ImageHandle,
83   IN EFI_SYSTEM_TABLE  *SystemTable
84   )
85 {
86   if (gShellNetwork1HiiHandle != NULL) {
87     HiiRemovePackages(gShellNetwork1HiiHandle);
88   }
89   return (EFI_SUCCESS);
90 }
91