// /**
//
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2010 - 2017, 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
// 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:
//
// UefiShellNetwork1CommandsLib.uni
//
// Abstract:
//
// String definitions for UEFI Shell 2.0 network 1 commands
//
//
// **/

/=#

#langdef   en-US "english"

#string STR_GEN_TOO_MANY          #language en-US "%H%s%N: Too many arguments.\r\n"
#string STR_GEN_TOO_FEW           #language en-US "%H%s%N: Too few arguments.\r\n"
#string STR_GEN_PARAM_INV         #language en-US "%H%s%N: Invalid argument - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM           #language en-US "%H%s%N: Unknown flag - '%H%s%N'\r\n"
#string STR_GEN_PROBLEM_OP2       #language en-US "%H%s%N: Invalid argument - '%H%s%N'. Expected '%B%s%N' or '%B%s%N'.\r\n"
#string STR_GEN_PROBLEM_VAL       #language en-US "%H%s%N: Bad value - '%H%s%N' for flag - '%H%s%N'\r\n"
#string STR_GEN_NO_VALUE          #language en-US "%H%s%N: Missing argument for flag - '%H%s%N'\r\n"
#string STR_GEN_ERR_AD            #language en-US "%H%s%N: Access denied.\r\n"
#string STR_GEN_ERR_UK            #language en-US "%H%s%N: Status: %r\r\n"
#string STR_GEN_PARAM_CON         #language en-US "%H%s%N: Parameters conflict.\r\n"
#string STR_GEN_FILE_OPEN_FAIL    #language en-US "%H%s%N: Cannot open file - '%H%s%N'\r\n"
#string STR_GEN_FILE_AD           #language en-US "%H%s%N: Access file error - '%H%s%N'\r\n"
#string STR_GEN_CRLF              #language en-US "\r\n"
#string STR_GEN_NO_FILES          #language en-US "%H%s%N: No matching files were found.\r\n"
#string STR_GEN_DIR_NF            #language en-US "%H%s%N: Directory not found - '%H%s%N'\r\n"
#string STR_GEN_FILE_NF           #language en-US "%H%s%N: File not found - '%H%s%N'\r\n"
#string STR_GEN_IS_DIR            #language en-US "%H%s%N: '%H%s%N' is a directory\r\n"
#string STR_GEN_PROTOCOL_NF       #language en-US "%H%s%N: The protocol '%H%s%N' is required and not found (%g).\r\n"
#string STR_GEN_OUT_MEM           #language en-US "%H%s%N: Memory allocation was not successful.\r\n"

#string STR_PING_INVALID_SOURCE      #language en-US "%Ping: Require source interface option\r\n"
#string STR_PING_CONFIG              #language en-US "Config %r\r\n"
#string STR_PING_GETMODE             #language en-US "GetModeData %r\r\n"
#string STR_PING_GETDATA             #language en-US "GetData %r\r\n"
#string STR_PING_RECEIVE             #language en-US "Receive %r\r\n"
#string STR_PING_SEND_REQUEST        #language en-US "Echo request sequence %d did not complete successfully.\r\n"
#string STR_PING_NOSOURCE_INDO       #language en-US "There are no sources in %s's multicast domain.\r\n"
#string STR_PING_NETWORK_ERROR       #language en-US "%H%s%N: Network function failed with %r\r\n"
#string STR_PING_CONFIGD_NIC_NF      #language en-US "%H%s%N: No configured interfaces were found.\r\n"
#string STR_PING_NOROUTE_FOUND       #language en-US "There is no route to the destination '%B%s%N' from the source '%B%s%N' was found.\r\n"
#string STR_PING_START               #language en-US "Ping %s %d data bytes.\r\n"
#string STR_PING_TIMEOUT             #language en-US "Echo request sequence %d timeout.\r\n"
#string STR_PING_REPLY_INFO          #language en-US "%d bytes from %s : icmp_seq=%d ttl=%d time%d~%dms\r\n"
#string STR_PING_STAT                #language en-US "\n%d packets transmitted, %d received, %d%% packet loss, time %dms\r\n"
#string STR_PING_RTT                 #language en-US "\nRtt(round trip time) min=%d~%dms max=%d~%dms avg=%d~%dms\r\n"

#string STR_IFCONFIG_UNSUPPORTED_OPTION       #language en-US    "The option '%H%s%N' is unsupported now.\n"
#string STR_IFCONFIG_LACK_OPTION              #language en-US    "Flags lack. Please type 'ifConfig -?' for help info.\n"
#string STR_IFCONFIG_LACK_INTERFACE           #language en-US    "Lack interface name.\n"
#string STR_IFCONFIG_LACK_COMMAND             #language en-US    "Lack interface config option.\n"
#string STR_IFCONFIG_INVALID_INTERFACE        #language en-US    "Invalid interface name.\n"
#string STR_IFCONFIG_INVALID_IPADDRESS        #language en-US    "Invalid ipv4 address: '%H%s%N'\n"
#string STR_IFCONFIG_INVALID_GATEWAY          #language en-US    "Invalid gateway address: '%H%s%N'\n"
#string STR_IFCONFIG_DUPLICATE_COMMAND        #language en-US    "Duplicate commands. Bad command %H%s%N is skipped.\n"
#string STR_IFCONFIG_CONFLICT_COMMAND         #language en-US    "Conflict commands. Bad command %H%s%N is skipped.\n"
#string STR_IFCONFIG_UNKNOWN_COMMAND          #language en-US    "Unknown commands. Bad command %H%s%N is skipped.\n"
#string STR_IFCONFIG_SET_ADDR_FAILED          #language en-US    "Failed to set address.\n"
#string STR_IFCONFIG_ROUTES_SIZE              #language en-US  	 "\n%H  Routes (%d entries):\n"
#string STR_IFCONFIG_ROUTES_ENTRY_INDEX       #language en-US    "%H    Entry[%d]\n"
#string STR_IFCONFIG_SHOW_IP_ADDR             #language en-US    "%12s: %N%d.%d.%d.%d\n"
#string STR_IFCONFIG_INFO_NEWLINE             #language en-US    "\n"
#string STR_IFCONFIG_INFO_DNS_ADDR_BODY       #language en-US    "%8d.%d.%d.%d\n"
#string STR_IFCONFIG_INFO_BREAK               #language en-US    "\n-----------------------------------------------------------------\n"
#string STR_IFCONFIG_INFO_COLON               #language en-US    ":"
#string STR_IFCONFIG_INFO_IF_NAME             #language en-US    "\n%Hname         : %s%N\n"
#string STR_IFCONFIG_INFO_MEDIA_STATE         #language en-US    "%HMedia State  : %s%N\n"
#string STR_IFCONFIG_INFO_POLICY_DHCP         #language en-US    "%Hpolicy       : dhcp%N\n"
#string STR_IFCONFIG_INFO_POLICY_MAN          #language en-US    "%Hpolicy       : static%N\n"
#string STR_IFCONFIG_INFO_MAC_ADDR_HEAD       #language en-US    "%Hmac addr     : %N"
#string STR_IFCONFIG_INFO_MAC_ADDR_BODY       #language en-US    "%02x"
#string STR_IFCONFIG_INFO_IP_ADDR_HEAD        #language en-US    "\n%Hipv4 address : %N"
#string STR_IFCONFIG_INFO_SUBNET_MASK_HEAD    #language en-US    "\n%Hsubnet mask  : %N"
#string STR_IFCONFIG_INFO_GATEWAY_HEAD        #language en-US    "\n%Hdefault gateway: %N"
#string STR_IFCONFIG_INFO_DNS_ADDR_HEAD       #language en-US    "\n%HDNS server   : %N\n"
#string STR_IFCONFIG_INFO_IP_ADDR_BODY        #language en-US    "%d.%d.%d.%d\n"

#string STR_GET_HELP_PING         #language en-US ""
".TH ping 0 "Ping the target host with an IPv4 stack."\r\n"
".SH NAME\r\n"
"Ping the target host with an IPv4 stack.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"PING [-n count] [-l size] [-s SourceIp] TargetIp\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -n       - Specifies the number of echo request datagrams to be sent.\r\n"
"  -l       - Specifies the size of the data buffer in the echo request datagram.\r\n"
"  -s       - Specifies the source adapter as IPv4 address.\r\n"
"  SourceIp - Specifies the IPv4 address of the source machine.\r\n"
"  TargetIp - Specifies the IPv4 address of the target machine.\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command uses the ICMPv4 ECHO_REQUEST datagram to elicit an\r\n"
"     ECHO_REPLY from a host.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To ping the target host with 64 bytes data:\r\n"
"    fs0:\> ping -l 64 192.168.0.1\r\n"
" \r\n"
"  * To ping the target host by sending 20 echo request datagrams:\r\n"
"    fs0:\> ping -n 20 202.120.100.1\r\n"
" \r\n"
"  * To ping the target host by specifying the source adapter as IPv4 address:\r\n"
"    fs0:\> ping -s 202.120.100.12 202.120.100.1\r\n"
".SH RETURNVALUES\r\n"
" \r\n"
"RETURN VALUES:\r\n"
"  SHELL_SUCCESS             The action was completed as requested.\r\n"
"  SHELL_INVALID_PARAMETER   One of the passed-in parameters was incorrectly\r\n"
"                            formatted or its value was out of bounds.\r\n"

#string STR_GET_HELP_IFCONFIG                 #language en-US    ""
".TH ifconfig 0 "Modifies the default IP address of the UEFI IPv4 Network Stack."\r\n"
".SH NAME\r\n"
"Modifies the default IP address of the UEFI IPv4 Network Stack.\r\n"
".SH SYNOPSIS\r\n"
" \r\n"
"IFCONFIG [-r [Name]] [-l [Name]]\r\n"
"IFCONFIG [-s <Name> dhcp | <static <IP> <Mask>  <Gateway>> | <dns <IP>>]\r\n"
".SH OPTIONS\r\n"
" \r\n"
"  -r          - Renew configuration of interface and set dhcp policy.\r\n"
"  -l          - Lists the configuration.\r\n"
"  -s          - Sets the configuration.\r\n"
"  Name        - Specifies an adapter name (for example, eth0).\r\n"
"  IP          - Specifies the IPv4 address in four integer values:\r\n"
"                  - Example: 192.168.0.10\r\n"
"  SubnetMask  - Specifies a subnet mask in four integer values:\r\n"
"                  - Example: 255.255.255.0\r\n"
"  GatewayMask - Specifies a default gateway in four integer values:\r\n"
"                  - Example: 192.168.0.1\r\n"
".SH DESCRIPTION\r\n"
" \r\n"
"NOTES:\r\n"
"  1. This command modifies the default IP address for the UEFI IPv4\r\n"
"     network stack.\r\n"
"  2. Use '-r' to renew configuration of interface and set dhcp policy.\r\n"
"  3. Use '-l' to list the DNS and other address related settings for all\r\n"
"     interfaces or the specified interface.\r\n"
"  4. Use '-s <Name> static <IP> <SubnetMask> <GatewayMask>' with \r\n"
"     static IPv4 address configuration for specified interface.\r\n"
"  5. Use '-s <Name> dhcp' for DHCPv4 to request the IPv4 address\r\n"
"     configuration dynamically for specified interface.\r\n"
"  6. Use '-s <Name> dns <IP>' must under manual policy.\r\n"
".SH EXAMPLES\r\n"
" \r\n"
"EXAMPLES:\r\n"
"  * To list the configuration for the eth0 interface:\r\n"
"    fs0:\> ifconfig -l eth0\r\n"
" \r\n"
"  * To use DHCPv4 to request the IPv4 address configuration dynamically for the\r\n"
"    eth0 interface:\r\n"
"    fs0:\> ifconfig -s eth0 dhcp\r\n"
" \r\n"
"  * To use the static IPv4 address configuration for the eth0 interface:\r\n"
"    fs0:\> ifconfig -s eth0 static 192.168.0.5 255.255.255.0 192.168.0.1\r\n"
" \r\n"
"  * To configure DNS server address for the eth0 interface:\r\n"
"    fs0:\> ifconfig -s eth0 dns 192.168.0.8 192.168.0.9\r\n"
                                                                  


