// /**
//
// (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>
// Copyright (c) 2010 - 2017, 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
//
// 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_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 IP4\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 IP4 address configuration for specified interface.\r\n"
"  5. Use '-s <Name> dhcp' for DHCP4 to request the IP4 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 DHCP4 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"
                                                                  


