/** @file

  String definitions for UEFI Shell network 2 commands
  Copyright (c) 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>
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

  Module Name:

   UefiShellNetwork2CommandsLib.uni

  Abstract:

   String definitions for UEFI Shell 2.0 network 2 commands
**/

#langdef   en-US "english"

#string STR_GEN_ERR_AD                     #language en-US  "%H%s%N: Access denied.\r\n"
#string STR_GEN_OUT_MEM                    #language en-US  "%H%s%N: Memory allocation was not successful.\r\n"

#string STR_PING6_INVALID_IP               #language en-US  "%Ping6: Invalid IP6 address, %s\r\n"
#string STR_PING6_INVALID_INPUT            #language en-US  "%Ping6: Invalid input, please type 'Ping6 -?'for help\r\n"
#string STR_PING6_INVALID_SEND_NUMBER      #language en-US  "%Ping6: Invalid send number, %s\r\n"
#string STR_PING6_INVALID_BUFFER_SIZE      #language en-US  "%Ping6: Invalid buffer size, %s\r\n"
#string STR_PING6_INVALID_SOURCE           #language en-US  "%Ping6: Require source interface option\r\n"
#string STR_PING6_IP6_CONFIG               #language en-US  "%Ping6: The process of Ip6 Configure %r\r\n"
#string STR_PING6_IP6CFG_GETDATA           #language en-US  "%Ping6: Get data of the interface information %r\r\n"
#string STR_PING6_SEND_REQUEST             #language en-US  "Echo request sequence %d fails.\r\n"
#string STR_PING6_CONFIGD_NIC_NF           #language en-US  "%Ping6: No configured interfaces were found.\r\n"
#string STR_PING6_NOSOURCE_INDOMAIN        #language en-US  "No sources in %s's multicast domain.\r\n"
#string STR_PING6_START                    #language en-US  "Ping %s %d data bytes\r\n"
#string STR_PING6_TIMEOUT                  #language en-US  "Echo request sequence %d timeout.\r\n"
#string STR_PING6_REPLY_INFO               #language en-US  "%d bytes from %s : icmp_seq=%d ttl=%d time%c%dms\r\n"
#string STR_PING6_STAT                     #language en-US  "\n%d packets transmitted, %d received, %d%% packet loss, time %dms\r\n"
#string STR_PING6_RTT                      #language en-US  "\nRtt(round trip time) min=%dms max=%dms avg=%dms\r\n"

#string STR_IFCONFIG6_ERR_IP6CFG_GETDATA       #language en-US    "Get data of the interface information %hr\r\n"
#string STR_IFCONFIG6_INFO_BREAK               #language en-US    "-----------------------------------------------------------------"
#string STR_IFCONFIG6_INFO_COLON               #language en-US    ":"
#string STR_IFCONFIG6_INFO_JOINT               #language en-US    " >> "
#string STR_IFCONFIG6_INFO_NEWLINE             #language en-US    "\r\n"
#string STR_IFCONFIG6_INFO_IF_NAME             #language en-US    "\n%Hname         : %s%N\r\n"
#string STR_IFCONFIG6_INFO_POLICY_AUTO         #language en-US    "%Hpolicy       : automatic%N\r\n"
#string STR_IFCONFIG6_INFO_POLICY_MAN          #language en-US    "%Hpolicy       : manual%N\r\n"
#string STR_IFCONFIG6_INFO_DAD_TRANSMITS       #language en-US    "%Hdad xmits    : %d%N\r\n"
#string STR_IFCONFIG6_INFO_INTERFACE_ID_HEAD   #language en-US    "%Hinterface id : %N"
#string STR_IFCONFIG6_INFO_MAC_ADDR_HEAD       #language en-US    "%Hmac addr     : %N"
#string STR_IFCONFIG6_INFO_MAC_ADDR_BODY       #language en-US    "%02x"
#string STR_IFCONFIG6_INFO_IP_ADDR_HEAD        #language en-US    "\n%Hhost addr    : %N\r\n"
#string STR_IFCONFIG6_INFO_DNS_ADDR_HEAD       #language en-US    "\n%Hdns server   : %N\r\n"
#string STR_IFCONFIG6_INFO_IP_ADDR_BODY        #language en-US    "%02x"
#string STR_IFCONFIG6_INFO_IP_ADDR_BODY4BIT    #language en-US    "%x"
#string STR_IFCONFIG6_INFO_ROUTE_HEAD          #language en-US    "\n%Hroute table  : %N\r\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_ERR_LACK_INTERFACE       #language en-US    "Lack interface name.\r\n"
                                                                  "Usage: IfConfig6 -s <Name> \r\n"
                                                                  "Example: IfConfig6 -s eth0 auto\r\n"
#string STR_IFCONFIG6_LACK_OPTION              #language en-US    "Flags lack. Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_CONFLICT_OPTIONS         #language en-US    "Flags conflict. Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_LACK_COMMAND         #language en-US    "Lack interface config option.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_INVALID_INTERFACE    #language en-US    "Invalid interface name.\r\n"
                                                                  "Hint: Use {IfConfig6 -l} to check existing interface names.\r\n"
#string STR_IFCONFIG6_ERR_INVALID_COMMAND      #language en-US    "Invalid command. Bad command %H%s%N is skipped.\r\n"
                                                                  "Hint: Incorrect option or arguments. Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_LACK_ARGUMENTS       #language en-US    "Lack arguments. Bad command %H%s%N is skipped.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_LACK_OPTION          #language en-US    "Lack options.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_MAN_HOST             #language en-US    "Manual address configuration failed. Please retry.\r\n"
#string STR_IFCONFIG6_ERR_DUPLICATE_COMMAND    #language en-US    "Duplicate commands. Bad command %H%s%N is skipped.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_CONFLICT_COMMAND     #language en-US    "Conflict commands. Bad command %H%s%N is skipped.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_UNKNOWN_COMMAND      #language en-US    "Unknown commands. Bad command %H%s%N is skipped.\r\n"
                                                                  "Hint: Please type 'IfConfig6 -?' for help info.\r\n"
#string STR_IFCONFIG6_ERR_ADDRESS_FAILED       #language en-US    "It failed to set .\r\n"


#string STR_GET_HELP_PING6                     #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"
"  * To ping the target host by sending 5 request with 1000 bytes from 2002::1\r\n"
"    Shell:\> Ping6 -s 2002::1 2002::2 -l 1000 -n 5\r\n"
" \r\n"
"  * To ping the target host with 1000 bytes\r\n"
"    Shell:\> Ping6 2002::2 -l 1000\r\n"

#string STR_GET_HELP_IFCONFIG6                 #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 -r [Name] | -l [Name] \r\n"
"IfConfig6 -s <Name> [dad <Num>] [auto | [man [id <mac>] [host <IPv6> gw <IPv6>]\r\n"
"             [dns <IPv6>]]]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  Name                     Adapter name, i.e., eth0\r\n"
"  -r [Name]                Reconfigure all or specified interface, and set\r\n"
"                           automatic policy. If specified interface is already\r\n"
"                           set to automatic,then refresh the IPv6 configuration.\r\n"
"  -l [Name]                List the configuration of the specified interface.\r\n"
"  -s <Name> dad <Num>      Set dad transmits count of the specified interface.\r\n"
"  -s <Name> auto           Set automatic policy of the specified interface.\r\n"
"  -s <Name> man id <Mac>   Set alternative interface id of the specified \r\n"
"                           interface. Must under manual policy.\r\n"
"  -s <Name> man host <IPv6> gw <IPv6>\r\n"
"                           Set static host IP and gateway address of the\r\n"
"                           specified interface. Must under manual policy.\r\n"
"  -s <Name> man dns <IPv6> Set DNS server IP addresses of the specified\r\n"
"                           interface.Must under manual policy.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To list the configuration for the interface eth0:\r\n"
"    Shell:\> ifConfig6 -l eth0\r\n"
" \r\n"
"  * To use automatic configuration to request the IPv6 address configuration\r\n"
"    dynamically for the interface eth0:\r\n"
"    Shell:\> ifconfig6 -s eth0 auto\r\n"
" \r\n"
"  * To set the dad transmits count for eth0 under automatic policy:\r\n"
"    Shell:\> ifconfig6 -s eth0 auto dad 10\r\n"
" \r\n"
"  * To set the alternative interface id of eth0 under manual policy:\r\n"
"    Shell:\> ifconfig6 -s eth0 man id ff:dd:aa:88:66:cc\r\n"
" \r\n"
"  * To use the static IP6 addresses configuration for the interface eth0,\r\n"
"    and this configuration survives the network reload:\r\n"
"    Shell:\> ifconfig6 -s eth0 man host 2002::1/64 2002::2/64 gw 2002::3/64\r\n"
