v2: *Modify the logic of show SAD,SPD and PAD help info, include them in -? instead of follow -p command.
Since Shell supports finding help information from resource section of application image. We modify the Shell application Under NetworkPkg to support print help information string using -? command. Cc: Fu Siyuan <[email protected]> Cc: Ye Ting <[email protected]> Cc: Wu Jiaxin <[email protected]> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo <[email protected]> --- NetworkPkg/Application/IfConfig6/IfConfig6.c | 64 ++++++---- NetworkPkg/Application/IfConfig6/IfConfig6.h | 7 +- NetworkPkg/Application/IfConfig6/IfConfig6.inf | 10 +- .../Application/IfConfig6/IfConfig6Strings.uni | 55 +++++---- NetworkPkg/Application/IpsecConfig/IpSecConfig.c | 57 +++++---- NetworkPkg/Application/IpsecConfig/IpSecConfig.h | 6 + NetworkPkg/Application/IpsecConfig/IpSecConfig.inf | 8 ++ .../Application/IpsecConfig/IpSecConfigStrings.uni | 132 ++++++++++----------- NetworkPkg/Application/Ping6/Ping6.c | 41 +++++-- NetworkPkg/Application/Ping6/Ping6.h | 7 +- NetworkPkg/Application/Ping6/Ping6.inf | 10 +- NetworkPkg/Application/Ping6/Ping6Strings.uni | 35 +++--- NetworkPkg/Application/VConfig/VConfig.c | 43 +++++-- NetworkPkg/Application/VConfig/VConfig.inf | 12 +- NetworkPkg/Application/VConfig/VConfigStrings.uni | 52 ++++---- 15 files changed, 325 insertions(+), 214 deletions(-) diff --git a/NetworkPkg/Application/IfConfig6/IfConfig6.c b/NetworkPkg/Application/IfConfig6/IfConfig6.c index 8d464b8..8bd6243 100644 --- a/NetworkPkg/Application/IfConfig6/IfConfig6.c +++ b/NetworkPkg/Application/IfConfig6/IfConfig6.c @@ -1,9 +1,9 @@ /** @file The implementation for Shell application IfConfig6. - Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -17,10 +17,11 @@ #include <Library/BaseMemoryLib.h> #include <Library/BaseLib.h> #include <Library/MemoryAllocationLib.h> #include <Library/DebugLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/UefiHiiServicesLib.h> #include <Library/HiiLib.h> #include <Library/NetLib.h> #include <Protocol/Ip6.h> #include <Protocol/Ip6Config.h> @@ -45,14 +46,10 @@ SHELL_PARAM_ITEM mIfConfig6CheckList[] = { { L"-r", TypeValue }, { - L"-?", - TypeFlag - }, - { NULL, TypeMax }, }; @@ -1646,24 +1643,49 @@ EFIAPI IfConfig6Initialize ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; - IFCONFIG6_PRIVATE_DATA *Private; - LIST_ENTRY *ParamPackage; - CONST CHAR16 *ValueStr; - ARG_LIST *ArgList; - CHAR16 *ProblemParam; - CHAR16 *Str; + EFI_STATUS Status; + IFCONFIG6_PRIVATE_DATA *Private; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + LIST_ENTRY *ParamPackage; + CONST CHAR16 *ValueStr; + ARG_LIST *ArgList; + CHAR16 *ProblemParam; + CHAR16 *Str; Private = NULL; // - // Register our string package with HII and return the handle to it. + // Retrieve HII package list from ImageHandle // - mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, IfConfig6Strings, NULL); + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status = gHiiDatabase->NewPackageList ( + gHiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (EFI_ERROR (Status)) { + return Status; + } + ASSERT (mHiiHandle != NULL); Status = ShellCommandLineParseEx (mIfConfig6CheckList, &ParamPackage, &ProblemParam, TRUE, FALSE); if (EFI_ERROR (Status)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_ERR_INVALID_COMMAND), mHiiHandle, ProblemParam); @@ -1672,33 +1694,23 @@ IfConfig6Initialize ( // // To handle no option. // if (!ShellCommandLineGetFlag (ParamPackage, L"-r") && !ShellCommandLineGetFlag (ParamPackage, L"-s") && - !ShellCommandLineGetFlag (ParamPackage, L"-?") && !ShellCommandLineGetFlag (ParamPackage, L"-l")) { + !ShellCommandLineGetFlag (ParamPackage, L"-l")) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_LACK_OPTION), mHiiHandle); goto ON_EXIT; } // // To handle conflict options. // if (((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-s"))) || ((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-l"))) || - ((ShellCommandLineGetFlag (ParamPackage, L"-r")) && (ShellCommandLineGetFlag (ParamPackage, L"-?"))) || - ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-l"))) || - ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-?"))) || - ((ShellCommandLineGetFlag (ParamPackage, L"-l")) && (ShellCommandLineGetFlag (ParamPackage, L"-?")))) { + ((ShellCommandLineGetFlag (ParamPackage, L"-s")) && (ShellCommandLineGetFlag (ParamPackage, L"-l")))) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_CONFLICT_OPTIONS), mHiiHandle); goto ON_EXIT; } - // - // To show the help information of ifconfig6 command. - // - if (ShellCommandLineGetFlag (ParamPackage, L"-?")) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IFCONFIG6_HELP), mHiiHandle); - goto ON_EXIT; - } Status = EFI_INVALID_PARAMETER; Private = AllocateZeroPool (sizeof (IFCONFIG6_PRIVATE_DATA)); diff --git a/NetworkPkg/Application/IfConfig6/IfConfig6.h b/NetworkPkg/Application/IfConfig6/IfConfig6.h index ad3a775..53b6d72 100644 --- a/NetworkPkg/Application/IfConfig6/IfConfig6.h +++ b/NetworkPkg/Application/IfConfig6/IfConfig6.h @@ -1,9 +1,9 @@ /** @file The interface function declaration of shell application IfConfig6. - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -14,10 +14,15 @@ **/ #ifndef _IFCONFIG6_H_ #define _IFCONFIG6_H_ +// +// String token ID of ifconfig6 command help message text. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringIfconfig6HelpTokenId = STRING_TOKEN (STR_IFCONFIG6_HELP); + enum { IfConfig6OpList = 1, IfConfig6OpSet = 2, IfConfig6OpClear = 3 }; diff --git a/NetworkPkg/Application/IfConfig6/IfConfig6.inf b/NetworkPkg/Application/IfConfig6/IfConfig6.inf index 7b329f5..519b7c3 100644 --- a/NetworkPkg/Application/IfConfig6/IfConfig6.inf +++ b/NetworkPkg/Application/IfConfig6/IfConfig6.inf @@ -2,11 +2,11 @@ # Shell application IfConfig6. # # It is shell application which is used to set and get configurations for the # EFI IPv6 network stack. # -# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2009 - 2016, 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. @@ -24,10 +24,16 @@ VERSION_STRING = 1.0 ENTRY_POINT = IfConfig6Initialize MODULE_UNI_FILE = IfConfig6.uni # +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# # The following information is for reference only and not required by the build tools. # # VALID_ARCHITECTURES = IA32 X64 IPF # [Sources] @@ -42,18 +48,20 @@ [LibraryClasses] BaseLib UefiBootServicesTableLib UefiApplicationEntryPoint + UefiHiiServicesLib BaseMemoryLib ShellLib MemoryAllocationLib DebugLib HiiLib NetLib [Protocols] gEfiIp6ServiceBindingProtocolGuid ## CONSUMES gEfiIp6ConfigProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## CONSUMES [UserExtensions.TianoCore."ExtraFiles"] IfConfig6Extra.uni diff --git a/NetworkPkg/Application/IfConfig6/IfConfig6Strings.uni b/NetworkPkg/Application/IfConfig6/IfConfig6Strings.uni index 3753bd8..0c10bbd 100644 --- a/NetworkPkg/Application/IfConfig6/IfConfig6Strings.uni +++ b/NetworkPkg/Application/IfConfig6/IfConfig6Strings.uni @@ -1,9 +1,9 @@ /** @file String definitions for the Shell application IfConfig6. - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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<BR> @@ -34,34 +34,10 @@ #string STR_IFCONFIG6_INFO_IP_ADDR_BODY4BIT #language en-US "%x" #string STR_IFCONFIG6_INFO_ROUTE_HEAD #language en-US "\n%Hroute table : %N\n" #string STR_IFCONFIG6_INFO_PREFIX_LEN #language en-US "/%d" #string STR_IFCONFIG6_LINE_HELP #language en-US "Displays or modifies the IPv6 configuration" -#string STR_IFCONFIG6_HELP #language en-US "Displays or modifies IPv6 configuration for network interface.\n\n" - "Usage:\n" - " IfConfig6 [-b] [-r {ifname}] [-l {ifname}] [-s {ifname} {command ...}] [-?]\n" - "\n" - "Option:\n" - " -b (break) enable page break.\n" - " -r (renew) renew configuration of interface and set automatic policy.\n" - " -l (list) list the configuration of interface.\n" - " -s (set) set configuration of interface as follows.\n" - " -? (help) list the help documentation.\n" - " |man/auto manual or automatic policy\n" - " |id {mac} alternative interface id.\n" - " |dad {num} dad transmits count.\n" - " |host{ip} static host ip address, must under manual policy.\n" - " |gw {ip} gateway ip address, must under manual policy.\n" - " |dns {ip} dns server ip address, must under manual policy.\n" - "\n" - "Example:\n" - " IfConfig6 -l\n" - " IfConfig6 -b -l\n" - " IfConfig6 -r eth0\n" - " IfConfig6 -s eth0 auto dad 10\n" - " IfConfig6 -s eth0 man id ff:dd:aa:88:66:cc\n" - " IfConfig6 -s eth1 man host 2002::1/64 2002::2/64 gw 2002::3\n" #string STR_IFCONFIG6_ERR_LACK_INTERFACE #language en-US "Lack interface name.\n" "Usage: IfConfig6 -s {ifname} {config options ...}\n" "Example: IfConfig6 -s eth0 auto\n" #string STR_IFCONFIG6_LACK_OPTION #language en-US "Flags lack. Please type 'IfConfig6 -?' for help info.\n" #string STR_IFCONFIG6_CONFLICT_OPTIONS #language en-US "Flags conflict. Please type 'IfConfig6 -?' for help info.\n" @@ -83,5 +59,34 @@ "Hint: Please type 'IfConfig6 -?' for help info.\n" #string STR_IFCONFIG6_ERR_UNKNOWN_COMMAND #language en-US "Unknown commands. Bad command %H%s%N is skipped.\n" "Hint: Please type 'IfConfig6 -?' for help info.\n" #string STR_IFCONFIG6_ERR_ADDRESS_FAILED #language en-US "It failed to set .\n" #string STR_IFCONFIG6_INVALID_IP #language en-US "%IfConfig6: Invalid IP6 address, %s\n" + +#string STR_IFCONFIG6_HELP #language en-US "" +".TH IfConfig6 0 "Displays or modifies IPv6 configuration for network interface."\r\n" +".SH NAME\r\n" +"Displays or modifies IPv6 configuration for network interface.\r\n" +".SH SYNOPSIS\r\n" +" \r\n" +"IfConfig6 [-b] [-r {ifname}] [-l {ifname}] [-s {ifname} {command ...}] [-?]\r\n" +".SH OPTIONS\r\n" +" \r\n" +" -b (break) enable page break.\r\n" +" -r (renew) renew configuration of interface and set automatic policy.\r\n" +" -l (list) list the configuration of interface.\r\n" +" -s (set) set configuration of interface as follows.\r\n" +" |man/auto manual or automatic policy\r\n" +" |id {mac} alternative interface id.\r\n" +" |dad {num} dad transmits count.\r\n" +" |host{ip} static host ip address, must under manual policy.\r\n" +" |gw {ip} gateway ip address, must under manual policy.\r\n" +" |dns {ip} dns server ip address, must under manual policy.\r\n" +".SH EXAMPLES\r\n" +" \r\n" +"Examples:\r\n" +" IfConfig6 -l\r\n" +" IfConfig6 -b -l\r\n" +" IfConfig6 -r eth0\r\n" +" IfConfig6 -s eth0 auto dad 10\r\n" +" IfConfig6 -s eth0 man id ff:dd:aa:88:66:cc\r\n" +" IfConfig6 -s eth1 man host 2002::1/64 2002::2/64 gw 2002::3\r\n" diff --git a/NetworkPkg/Application/IpsecConfig/IpSecConfig.c b/NetworkPkg/Application/IpsecConfig/IpSecConfig.c index e4f6057..ff895bc 100644 --- a/NetworkPkg/Application/IpsecConfig/IpSecConfig.c +++ b/NetworkPkg/Application/IpsecConfig/IpSecConfig.c @@ -38,11 +38,10 @@ SHELL_PARAM_ITEM mIpSecConfigParamList[] = { { L"-f", TypeFlag }, { L"-l", TypeFlag }, { L"-enable", TypeFlag }, { L"-disable", TypeFlag }, { L"-status", TypeFlag }, - { L"-?", TypeFlag }, // // SPD Selector // { L"--local", TypeValue }, @@ -620,15 +619,40 @@ InitializeIpSecConfig ( UINT8 Value; LIST_ENTRY *ParamPackage; CONST CHAR16 *ValueStr; CHAR16 *ProblemParam; UINTN NonOptionCount; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; // - // Register our string package with HII and return the handle to it. + // Retrieve HII package list from ImageHandle // - mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, IpSecConfigStrings, NULL); + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status = gHiiDatabase->NewPackageList ( + gHiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (EFI_ERROR (Status)) { + return Status; + } + ASSERT (mHiiHandle != NULL); Status = ShellCommandLineParseEx (mIpSecConfigParamList, &ParamPackage, &ProblemParam, TRUE, FALSE); if (EFI_ERROR (Status)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_UNKNOWN_OPERATION), mHiiHandle, ProblemParam); @@ -726,37 +750,10 @@ InitializeIpSecConfig ( ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_DB), mHiiHandle, mAppName, ValueStr); goto Done; } } - if (ShellCommandLineGetFlag (ParamPackage, L"-?")) { - if (DataType == -1) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_HELP), mHiiHandle); - goto Done; - } - - switch (DataType) { - case IPsecConfigDataTypeSpd: - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_SPD_HELP), mHiiHandle); - break; - - case IPsecConfigDataTypeSad: - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_SAD_HELP), mHiiHandle); - break; - - case IPsecConfigDataTypePad: - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_PAD_HELP), mHiiHandle); - break; - - default: - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_CONFIG_INCORRECT_DB), mHiiHandle); - break; - } - - goto Done; - } - NonOptionCount = ShellCommandLineGetCount (ParamPackage); if ((NonOptionCount - 1) > 0) { ValueStr = ShellCommandLineGetRawValue (ParamPackage, (UINT32) (NonOptionCount - 1)); ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_IPSEC_REDUNDANCY_MANY), mHiiHandle, mAppName, ValueStr); goto Done; diff --git a/NetworkPkg/Application/IpsecConfig/IpSecConfig.h b/NetworkPkg/Application/IpsecConfig/IpSecConfig.h index 17044fe..244926f 100644 --- a/NetworkPkg/Application/IpsecConfig/IpSecConfig.h +++ b/NetworkPkg/Application/IpsecConfig/IpSecConfig.h @@ -20,14 +20,20 @@ #include <Library/UefiLib.h> #include <Library/ShellLib.h> #include <Library/DebugLib.h> #include <Library/MemoryAllocationLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/UefiHiiServicesLib.h> #include <Library/NetLib.h> #include <Protocol/IpSecConfig.h> +// +// String token ID of VConfig command help message text. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringIpSecHelpTokenId = STRING_TOKEN (STR_IPSEC_CONFIG_HELP); + #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) #define IPSECCONFIG_STATUS_NAME L"IpSecStatus" #define BIT(x) (UINT32) (1 << (x)) diff --git a/NetworkPkg/Application/IpsecConfig/IpSecConfig.inf b/NetworkPkg/Application/IpsecConfig/IpSecConfig.inf index 52cf6b0..02371e5 100644 --- a/NetworkPkg/Application/IpsecConfig/IpSecConfig.inf +++ b/NetworkPkg/Application/IpsecConfig/IpSecConfig.inf @@ -23,10 +23,16 @@ MODULE_TYPE = UEFI_APPLICATION VERSION_STRING = 1.0 ENTRY_POINT = InitializeIpSecConfig MODULE_UNI_FILE = IpSecConfig.uni +# +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + [Sources] IpSecConfigStrings.uni IpSecConfig.c IpSecConfig.h Dump.c @@ -50,10 +56,11 @@ ShellPkg/ShellPkg.dec [LibraryClasses] UefiBootServicesTableLib UefiApplicationEntryPoint + UefiHiiServicesLib BaseMemoryLib ShellLib MemoryAllocationLib DebugLib HiiLib @@ -61,8 +68,9 @@ UefiLib [Protocols] gEfiIpSec2ProtocolGuid ##CONSUMES gEfiIpSecConfigProtocolGuid ##CONSUMES + gEfiHiiPackageListProtocolGuid ##CONSUMES [UserExtensions.TianoCore."ExtraFiles"] IpSecConfigExtra.uni diff --git a/NetworkPkg/Application/IpsecConfig/IpSecConfigStrings.uni b/NetworkPkg/Application/IpsecConfig/IpSecConfigStrings.uni index 2c342d3..bd7f546 100644 --- a/NetworkPkg/Application/IpsecConfig/IpSecConfigStrings.uni +++ b/NetworkPkg/Application/IpsecConfig/IpSecConfigStrings.uni @@ -47,80 +47,10 @@ #string STR_IPSEC_CONFIG_INDEX_NOT_SPECIFIED #language en-US "%s: Index should be Specified!\n" #string STR_IPSEC_CONFIG_INSERT_UNSUPPORT #language en-US "%s: Policy entry insertion not supported!\n" -#string STR_IPSEC_CONFIG_LINE_HELP #language en-US "Displays or modifies the IPsec configuration" - -#string STR_IPSEC_CONFIG_HELP #language en-US "Displays or modifies the current IPsec configuration.\n" - "%HUsage: IpSecConfig [-p {SPD|SAD|PAD}] [command] [options[parameters]]%N\n" - "\n" - "%H-p (SPD|SAD|PAD)%N required.point to certain policy database.\n" - "%Hcommand%N:\n" - " -a [options[parameters]] Add new policy entry.\n" - " -i entryid [options[parameters]] Insert new policy entry before the one\n" - " matched by the entryid.\n" - " It's only supported on SPD policy database.\n" - " -d entryid Delete the policy entry matched by the \n" - " entryid.\n" - " -e entryid [options[parameters]] Edit the policy entry matched by the\n" - " entryid.\n" - " -f Flush the entire policy database.\n" - " -l List all entries for specified database.\n" - " -enable Enable IPsec.\n" - " -disable Disable IPsec.\n" - " -status Show IPsec current status.\n" - "%H[options[parametes]]%N depend on the type of policy database.Type\n " - " 'IpSecConfig -p'followed by the database \n" - " name, and then type ' -?'.\n" - " e.g.: 'IpSecConfig -p SPD -?'\n" - -#string STR_IPSEC_CONFIG_SPD_HELP #language en-US "Explain the %H[options[parametes]%N for %HSPD%N\n" - "\n" - "%H[options[parameters]]%N:\n" - " --local localaddress optional local address\n" - " --remote remoteaddress required remote address\n" - " --proto (TCP|UDP|ICMP|...) required IP protocol\n" - " --local-port port optional local port for tcp/udp protocol\n" - " --remote-port port optional remote port for tcp/udp protocol\n" - " --name name optional SPD name\n" - " --action (Bypass|Discard|Protect) required \n" - " required IPsec action\n" - " --mode (Transport|Tunnel) optional IPsec mode, transport by default\n" - " --ipsec-proto (AH|ESP) optional IPsec protocol, ESP by default\n" - " --auth-algo (NONE|SHA1HMAC) optional authentication algorithm\n" - " --encrypt-algo(NONE|DESCBC|3DESCBC)optional encryption algorithm\n" - " --tunnel-local tunnellocaladdr optional tunnel local address(only for tunnel mode)\n" - " --tunnel-remote tunnelremoteaddr optional tunnel remote address(only for tunnel mode)\n" - "\n" - -#string STR_IPSEC_CONFIG_SAD_HELP #language en-US "Explain the %H[options[parameters]]%N for %HSAD%N\n" - "\n" - "%H[options[parameters]]%N:\n" - " --spi spi required SPI value\n" - " --ipsec-proto (AH|ESP) required IPsec protocol\n" - " --local localaddress optional local address\n" - " --remote remoteaddress required destination address\n" - " --auth-algo (NONE|SHA1HMAC) required for AH. authentication algorithm\n" - " --auth-key key required for AH. key for authentication\n" - " --encrypt-algo (NONE|DESCBC|3DESCBC) required for ESP. encryption algorithm\n" - " --encrypt-key key required for ESP. key for encryption\n" - " --mode (Transport|Tunnel) optional IPsec mode, transport by default\n" - " --tunnel-dest tunneldestaddr optional tunnel destination address(only for tunnel mode)\n" - " --tunnel-source tunnelsourceaddr optional tunnel source address(only for tunnel mode)\n" - "\n" - -#string STR_IPSEC_CONFIG_PAD_HELP #language en-US "Explain the %H[options[parameters]]%N for %HPAD%N\n" - "\n" - "%H[options[parameters]]%N:\n" - " --peer-address address required peer address\n" - " --auth-proto (IKEv1|IKEv2) optional IKE protocol, IKEv1 by\n" - " default\n" - " --auth-method (PreSharedSecret|Certificates) required authentication method\n" - " --auth-data authdata required data for authentication\n" - "\n" - #string STR_IPSEC_MISTAKEN_OPTIONS #language en-US "Mistaken Input. Please refer to %H"IpSecConfig -?"%N for more help information.\n" #string STR_IPSEC_REDUNDANCY_MANY #language en-US "%s has one redundancy option: %H%s%N\n" #string STR_IPSEC_CONFIG_ALREADY_ENABLE #language en-US "IPsec has been already enabled!\n" @@ -137,5 +67,67 @@ #string STR_IPSEC_CONFIG_ENABLE_FAILED #language en-US "Error: Enable IPsec failed !\n" #string STR_IPSEC_CONFIG_DISABLE_FAILED #language en-US "Error: Disable IPsec failed !\n" +#string STR_IPSEC_CONFIG_HELP #language en-US "" +".TH IpSecConfig 0 "Displays or modifies the current IPsec configuration."\r\n" +".SH NAME\r\n" +"Displays or modifies the current IPsec configuration.\r\n" +".SH SYNOPSIS\r\n" +" \r\n" +"%HIpSecConfig [-p {SPD|SAD|PAD}] [command] [options[parameters]]\r\n" +".SH OPTIONS\r\n" +" \r\n" +"%H-p (SPD|SAD|PAD)%N required.point to certain policy database.\r\n" +" \r\n" +"%Hcommand%N:\r\n" +" -a [options[parameters]] Add new policy entry.\r\n" +" -i entryid [options[parameters]] Insert new policy entry before the one\r\n" +" matched by the entryid.\r\n" +" It's only supported on SPD policy database.\r\n" +" -d entryid Delete the policy entry matched by the \r\n" +" entryid.\r\n" +" -e entryid [options[parameters]] Edit the policy entry matched by the\r\n" +" entryid.\r\n" +" -f Flush the entire policy database.\r\n" +" -l List all entries for specified database.\r\n" +" -enable Enable IPsec.\r\n" +" -disable Disable IPsec.\r\n" +" -status Show IPsec current status.\r\n" +" \r\n" +"%H[options[parameters]]%N for %HSPD%N:\r\n" +" --local localaddress optional local address\r\n" +" --remote remoteaddress required remote address\r\n" +" --proto (TCP|UDP|ICMP|...) required IP protocol\r\n" +" --local-port port optional local port for tcp/udp protocol\r\n" +" --remote-port port optional remote port for tcp/udp protocol\r\n" +" --name name optional SPD name\r\n" +" --action (Bypass|Discard|Protect) required \r\n" +" required IPsec action\r\n" +" --mode (Transport|Tunnel) optional IPsec mode, transport by default\r\n" +" --ipsec-proto (AH|ESP) optional IPsec protocol, ESP by default\r\n" +" --auth-algo (NONE|SHA1HMAC) optional authentication algorithm\r\n" +" --encrypt-algo(NONE|DESCBC|3DESCBC)optional encryption algorithm\r\n" +" --tunnel-local tunnellocaladdr optional tunnel local address(only for tunnel mode)\r\n" +" --tunnel-remote tunnelremoteaddr optional tunnel remote address(only for tunnel mode)\r\n" +" \r\n" +"%H[options[parameters]]%N for %HSAD%N:\r\n" +" --spi spi required SPI value\r\n" +" --ipsec-proto (AH|ESP) required IPsec protocol\r\n" +" --local localaddress optional local address\r\n" +" --remote remoteaddress required destination address\r\n" +" --auth-algo (NONE|SHA1HMAC) required for AH. authentication algorithm\n" +" --auth-key key required for AH. key for authentication\r\n" +" --encrypt-algo (NONE|DESCBC|3DESCBC) required for ESP. encryption algorithm\r\n" +" --encrypt-key key required for ESP. key for encryption\r\n" +" --mode (Transport|Tunnel) optional IPsec mode, transport by default\r\n" +" --tunnel-dest tunneldestaddr optional tunnel destination address(only for tunnel mode)\r\n" +" --tunnel-source tunnelsourceaddr optional tunnel source address(only for tunnel mode)\r\n" +" \r\n" +"%H[options[parameters]]%N for %HPAD%N:\r\n" +" --peer-address address required peer address\r\n" +" --auth-proto (IKEv1|IKEv2) optional IKE protocol, IKEv1 by\r\n" +" default\r\n" +" --auth-method (PreSharedSecret|Certificates) required authentication method\r\n" +" --auth-data authdata required data for authentication\r\n" +" \r\n" diff --git a/NetworkPkg/Application/Ping6/Ping6.c b/NetworkPkg/Application/Ping6/Ping6.c index 596ee3b..f1685f7 100644 --- a/NetworkPkg/Application/Ping6/Ping6.c +++ b/NetworkPkg/Application/Ping6/Ping6.c @@ -1,9 +1,9 @@ /** @file The implementation for Ping6 application. - Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -17,10 +17,11 @@ #include <Library/BaseMemoryLib.h> #include <Library/BaseLib.h> #include <Library/MemoryAllocationLib.h> #include <Library/DebugLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/UefiHiiServicesLib.h> #include <Library/HiiLib.h> #include <Library/NetLib.h> #include <Protocol/Cpu.h> #include <Protocol/ServiceBinding.h> @@ -41,14 +42,10 @@ SHELL_PARAM_ITEM Ping6ParamList[] = { { L"-s", TypeValue }, { - L"-?", - TypeFlag - }, - { NULL, TypeMax }, }; @@ -1057,28 +1054,48 @@ InitializePing6 ( UINTN SendNumber; LIST_ENTRY *ParamPackage; CONST CHAR16 *ValueStr; CONST CHAR16 *ValueStrPtr; UINTN NonOptionCount; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; // - // Register our string package with HII and return the handle to it. + // Retrieve HII package list from ImageHandle // - mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, Ping6Strings, NULL); + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Publish HII package list to HII Database. + // + Status = gHiiDatabase->NewPackageList ( + gHiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (EFI_ERROR (Status)) { + return Status; + } + ASSERT (mHiiHandle != NULL); Status = ShellCommandLineParseEx (Ping6ParamList, &ParamPackage, NULL, TRUE, FALSE); if (EFI_ERROR(Status)) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING6_INVALID_INPUT), mHiiHandle); goto ON_EXIT; } - if (ShellCommandLineGetFlag (ParamPackage, L"-?")) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_PING6_HELP), mHiiHandle); - goto ON_EXIT; - } - SendNumber = 10; BufferSize = 16; // // Parse the paramter of count number. diff --git a/NetworkPkg/Application/Ping6/Ping6.h b/NetworkPkg/Application/Ping6/Ping6.h index b152ff1..4660b0e 100644 --- a/NetworkPkg/Application/Ping6/Ping6.h +++ b/NetworkPkg/Application/Ping6/Ping6.h @@ -1,9 +1,9 @@ /** @file The interface function declaration of shell application Ping6 (Ping for v6 series). - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -20,10 +20,15 @@ #define PING6_MAX_SEND_NUMBER 10000 #define PING6_MAX_BUFFER_SIZE 32768 #define PING6_ONE_SECOND 10000000 // +// String token ID of Ping6 command help message text. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringPing6HelpToken = STRING_TOKEN (STR_PING6_HELP); + +// // A similar amount of time that passes in femtoseconds // for each increment of TimerValue. It is for NT32 only. // #define NTTIMERPERIOD 358049 diff --git a/NetworkPkg/Application/Ping6/Ping6.inf b/NetworkPkg/Application/Ping6/Ping6.inf index f8851b9..68b5f2d 100644 --- a/NetworkPkg/Application/Ping6/Ping6.inf +++ b/NetworkPkg/Application/Ping6/Ping6.inf @@ -1,11 +1,11 @@ ## @file # Shell application Ping6. # # It is an shell application which is used to Ping the target host with IPv6 stack. # -# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2009 - 2016, 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. @@ -23,10 +23,16 @@ VERSION_STRING = 1.0 ENTRY_POINT = InitializePing6 MODULE_UNI_FILE = Ping6.uni # +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# # The following information is for reference only and not required by the build tools. # # VALID_ARCHITECTURES = IA32 X64 IPF # @@ -51,10 +57,11 @@ [LibraryClasses] BaseLib UefiBootServicesTableLib UefiApplicationEntryPoint + UefiHiiServicesLib BaseMemoryLib ShellLib MemoryAllocationLib DebugLib HiiLib @@ -63,8 +70,9 @@ [Protocols] gEfiCpuArchProtocolGuid ## CONSUMES gEfiIp6ProtocolGuid ## CONSUMES gEfiIp6ServiceBindingProtocolGuid ## CONSUMES gEfiIp6ConfigProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## CONSUMES [UserExtensions.TianoCore."ExtraFiles"] Ping6Extra.uni diff --git a/NetworkPkg/Application/Ping6/Ping6Strings.uni b/NetworkPkg/Application/Ping6/Ping6Strings.uni index c2f003d..e4ab19f 100644 --- a/NetworkPkg/Application/Ping6/Ping6Strings.uni +++ b/NetworkPkg/Application/Ping6/Ping6Strings.uni @@ -1,9 +1,9 @@ /** @file String definitions for the Shell Ping6 application. - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -30,19 +30,24 @@ #string STR_PING6_TIMEOUT #language en-US "Echo request sequence %d timeout.\n" #string STR_PING6_REPLY_INFO #language en-US "%d bytes from %s : icmp_seq=%d ttl=%d time%c%dms\n" #string STR_PING6_STAT #language en-US "\n%d packets transmitted, %d received, %d%% packet loss, time %dms\n" #string STR_PING6_RTT #language en-US "\nRtt(round trip time) min=%dms max=%dms avg=%dms\n" #string STR_PING6_LINE_HELP #language en-US "Ping a target machine with UEFI IPv6 network stack" -#string STR_PING6_HELP #language en-US "Ping a target machine with UEFI IPv6 network stack.\n\n" - "Usage: Ping6 [-l size] [-n count] [-s SourceIp] TargetIp\n" - " Use ESC and Ctrl+C to interrupt Ping6 process.\n" - "\n" - "Options:\n" - " -l size Send buffer size, in bytes(default=16, min=16, max=32768).\n" - " -n count Send request count, (default=10, min=1, max=10000).\n" - " -s SourceIp Source IPv6 address.\n" - " TargetIp Target IPv6 address.\n" - " -? Help document.\n" - "\n" - "Examples:\n" - " Ping6 -s 2002::1 2002::2 -l 1000 -n 5\n" - " Ping6 2002::2 -l 1000\n" \ No newline at end of file + +#string STR_PING6_HELP #language en-US "" +".TH Ping6 0 "Ping a target machine with UEFI IPv6 network stack."\r\n" +".SH NAME\r\n" +"Ping a target machine with UEFI IPv6 network stack.\r\n" +".SH SYNOPSIS\r\n" +" \r\n" +"Ping6 [-l size] [-n count] [-s SourceIp] TargetIp\r\n" +".SH OPTIONS\r\n" +" \r\n" +" -l size Send buffer size, in bytes(default=16, min=16, max=32768).\r\n" +" -n count Send request count, (default=10, min=1, max=10000).\r\n" +" -s SourceIp Source IPv6 address.\r\n" +" TargetIp Target IPv6 address.\r\n" +".SH EXAMPLES\r\n" +" \r\n" +"Examples:\r\n" +" Ping6 -s 2002::1 2002::2 -l 1000 -n 5\r\n" +" Ping6 2002::2 -l 1000\r\n" diff --git a/NetworkPkg/Application/VConfig/VConfig.c b/NetworkPkg/Application/VConfig/VConfig.c index ba17207..d00a041 100644 --- a/NetworkPkg/Application/VConfig/VConfig.c +++ b/NetworkPkg/Application/VConfig/VConfig.c @@ -1,9 +1,9 @@ /** @file Shell application for VLAN configuration. - Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -21,12 +21,18 @@ #include <Library/UefiLib.h> #include <Library/ShellLib.h> #include <Library/MemoryAllocationLib.h> #include <Library/HiiLib.h> #include <Library/UefiBootServicesTableLib.h> +#include <Library/UefiHiiServicesLib.h> #include <Library/NetLib.h> +// +// String token ID of VConfig command help message text. +// +GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mStringVConfigHelpTokenId = STRING_TOKEN (STR_VCONFIG_HELP); + #define INVALID_NIC_INDEX 0xffff #define INVALID_VLAN_ID 0xffff // // This is the generated String package data for all .UNI files. @@ -606,17 +612,43 @@ VlanConfigMain ( IN EFI_SYSTEM_TABLE *SystemTable ) { LIST_ENTRY *List; CONST CHAR16 *Str; + EFI_HII_PACKAGE_LIST_HEADER *PackageList; + EFI_STATUS Status; mImageHandle = ImageHandle; + + // + // Retrieve HII package list from ImageHandle + // + Status = gBS->OpenProtocol ( + ImageHandle, + &gEfiHiiPackageListProtocolGuid, + (VOID **) &PackageList, + ImageHandle, + NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL + ); + if (EFI_ERROR (Status)) { + return Status; + } // - // Register our string package to HII database. + // Publish HII package list to HII Database. // - mHiiHandle = HiiAddPackages (&gEfiCallerIdGuid, ImageHandle, VConfigStrings, NULL); + Status = gHiiDatabase->NewPackageList ( + gHiiDatabase, + PackageList, + NULL, + &mHiiHandle + ); + if (EFI_ERROR (Status)) { + return Status; + } + if (mHiiHandle == NULL) { return EFI_SUCCESS; } List = NULL; @@ -624,15 +656,10 @@ VlanConfigMain ( if (List == NULL) { ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_NO_ARG), mHiiHandle); goto Exit; } - if (ShellCommandLineGetFlag (List, L"-?")) { - ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_VCONFIG_HELP), mHiiHandle); - goto Exit; - } - if (ShellCommandLineGetFlag (List, L"-l")) { Str = ShellCommandLineGetValue (List, L"-l"); DisplayVlan ((CHAR16 *) Str); goto Exit; } diff --git a/NetworkPkg/Application/VConfig/VConfig.inf b/NetworkPkg/Application/VConfig/VConfig.inf index 7067e0c..771f585 100644 --- a/NetworkPkg/Application/VConfig/VConfig.inf +++ b/NetworkPkg/Application/VConfig/VConfig.inf @@ -1,11 +1,11 @@ ## @file # Shell application VLAN configuration. # # It is shell application which is used to get and set VLAN configuration. # -# Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2009 - 2016, 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. @@ -23,10 +23,16 @@ VERSION_STRING = 1.0 ENTRY_POINT = VlanConfigMain MODULE_UNI_FILE = VConfig.uni # +# +# This flag specifies whether HII resource section is generated into PE image. +# + UEFI_HII_RESOURCE_SECTION = TRUE + +# # VALID_ARCHITECTURES = IA32 X64 IPF # [Sources] VConfigStrings.uni @@ -38,16 +44,18 @@ ShellPkg/ShellPkg.dec [LibraryClasses] UefiApplicationEntryPoint UefiBootServicesTableLib + UefiHiiServicesLib UefiLib ShellLib NetLib MemoryAllocationLib HiiLib [Protocols] - gEfiVlanConfigProtocolGuid ## CONSUMES + gEfiVlanConfigProtocolGuid ## CONSUMES + gEfiHiiPackageListProtocolGuid ## CONSUMES [UserExtensions.TianoCore."ExtraFiles"] VConfigExtra.uni diff --git a/NetworkPkg/Application/VConfig/VConfigStrings.uni b/NetworkPkg/Application/VConfig/VConfigStrings.uni index 641e26e..1bb66ba 100644 --- a/NetworkPkg/Application/VConfig/VConfigStrings.uni +++ b/NetworkPkg/Application/VConfig/VConfigStrings.uni @@ -1,9 +1,9 @@ /** @file String definitions for VLAN configuration Shell application. - Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR> + Copyright (c) 2009 - 2016, 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. @@ -30,26 +30,34 @@ #string STR_VCONFIG_NO_VLAN #language en-US " VLAN is not configured.\n" #string STR_VCONFIG_ETH_MAC #language en-US "eth%d MAC:%s\n" #string STR_VCONFIG_SET_SUCCESS #language en-US "VLAN device added.\n" #string STR_VCONFIG_REMOVE_SUCCESS #language en-US "VLAN device removed.\n" #string STR_VCONFIG_NO_ARG #language en-US "Invalid argument, try "-?" for help.\n" -#string STR_VCONFIG_HELP #language en-US "Display or modify VLAN configuration for network interface.\n\n" - "VCONFIG [-?] [-l [IfName]] [-a IfName VlanId [Priority]] [-d IfName.VlanId]\n" - "\n" - " -l Display VLAN configuration for all or specified interface.\n" - " -a Add a VLAN device for the network interface.\n" - " -d Delete a VLAN device.\n" - " IfName Name of network interface, e.g. eth0, eth1.\n" - " VlanId Unique VLAN identifier (0~4094).\n" - " Priority 802.1Q priority level (0~7), default 0.\n" - "\n" - "Examples:\n" - " * To display VLAN configuration:\n" - " fs0:\> vconfig -l\n" - " fs0:\> vconfig -l eth0\n" - "\n" - " * To add VLAN device:\n" - " fs0:\> vconfig -a eth0 1000\n" - " fs0:\> vconfig -a eth0 2000 7\n" - "\n" - " * To delete VLAN device:\n" - " fs0:\> vconfig -d eth0.1000\n" + +#string STR_VCONFIG_HELP #language en-US "" +".TH VConfig 0 "Display or modify VLAN configuration for network interface."\r\n" +".SH NAME\r\n" +"Display or modify VLAN configuration for network interface.\r\n" +".SH SYNOPSIS\r\n" +" \r\n" +"VCONFIG [-?] [-l [IfName]] [-a IfName VlanId [Priority]] [-d IfName.VlanId]\r\n" +".SH OPTIONS\r\n" +" \r\n" +" -l Display VLAN configuration for all or specified interface.\r\n" +" -a Add a VLAN device for the network interface.\r\n" +" -d Delete a VLAN device.\r\n" +" IfName Name of network interface, e.g. eth0, eth1.\r\n" +" VlanId Unique VLAN identifier (0~4094).\r\n" +" Priority 802.1Q priority level (0~7), default 0.\r\n" +".SH EXAMPLES\r\n" +" \r\n" +"Examples:\r\n" +" * To display VLAN configuration:\r\n" +" fs0:\> vconfig -l\r\n" +" fs0:\> vconfig -l eth0\r\n" +"\r\n" +" * To add VLAN device:\r\n" +" fs0:\> vconfig -a eth0 1000\r\n" +" fs0:\> vconfig -a eth0 2000 7\r\n" +"\r\n" +" * To delete VLAN device:\r\n" +" fs0:\> vconfig -d eth0.1000\r\n" -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

