/** @file

  String definitions for UEFI Shell network 2 commands
  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
  (C) Copyright 2017 Hewlett Packard Enterprise Development LP<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_IP6_RECEIVE              #language en-US  "%Ping6: Place the receive token %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%d~%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=%d~%dms max=%d~%dms avg=%d~%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_MAN_GW               #language en-US    "Gateway address configuration failed. Please check the argument.\r\n"

#string STR_IFCONFIG6_ERR_INVALID_IP_CONFIG    #language en-US    "The IP address is not configurable when the policy is Ip6ConfigPolicyAutomatic.\r\n"

#string STR_IFCONFIG6_ERR_INVALID_GW_CONFIG    #language en-US    "The gateway address is not configurable when the policy is Ip6ConfigPolicyAutomatic.\r\n"

#string STR_IFCONFIG6_ERR_INVALID_DNS_CONFIG   #language en-US    "The DNS server address is not configurable when the policy is Ip6ConfigPolicyAutomatic.\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    "Failed to configure IPv6 address: "


#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"
"NOTES:\r\n"
"  1. When TargetIp is a link local address, SourceIp needs to be specified.\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"
