/** @file
  String definitions for the Shell IpSecConfig application.

  Copyright (c) 2009 - 2014, 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.

**/

#langdef en-US "English"

#string STR_IPSEC_CONFIG_UNKNOWN_OPERATION          #language en-US  "%s: Operation not specified.\n"

#string STR_IPSEC_CONFIG_INCORRECT_DB               #language en-US  "%s: Incorrect Database - %s.\n"

#string STR_IPSEC_CONFIG_PROTOCOL_INEXISTENT        #language en-US  "%s: IPSEC_CONFIG protocol inexistent.\n"

#string STR_IPSEC_CONFIG_MISSING_DB                 #language en-US  "%s: Missing Database.\n"

#string STR_IPSEC_CONFIG_FILE_OPEN_FAILED           #language en-US  "%s: Open file failed - %s.\n"

#string STR_IPSEC_CONFIG_INCORRECT_PARAMETER_VALUE  #language en-US  "%s: Incorrect value of %s - %s.\n"

#string STR_IPSEC_CONFIG_ACCEPT_PARAMETERS          #language en-US  "  Values could be:"

#string STR_IPSEC_CONFIG_MISSING_PARAMETER          #language en-US  "%s: Missing parameter - %s.\n"

#string STR_IPSEC_CONFIG_MISSING_ONE_OF_PARAMETERS  #language en-US  "%s: Missing one of the parameters - %s.\n"

#string STR_IPSEC_CONFIG_UNWANTED_PARAMETER         #language en-US  "%s: Unwanted parameter - %s.\n"

#string STR_IPSEC_CONFIG_INSERT_FAILED              #language en-US  "%s: Policy entry insertion failed!\n"

#string STR_IPSEC_CONFIG_DELETE_FAILED              #language en-US  "%s: Policy entry deletion failed!\n"

#string STR_IPSEC_CONFIG_EDIT_FAILED                #language en-US  "%s: Policy entry edit failed!\n"

#string STR_IPSEC_CONFIG_ALREADY_EXISTS             #language en-US  "%s: Policy entry already exists!\n"

#string STR_IPSEC_CONFIG_INDEX_NOT_FOUND            #language en-US  "%s: Specified index not found!\n"

#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"

#string STR_IPSEC_CONFIG_ENABLE_SUCCESS             #language en-US  "Enable IPsec ! \n"

#string STR_IPSEC_CONFIG_DISABLE_SUCCESS            #language en-US  "Disable IPsec ! \n"

#string STR_IPSEC_CONFIG_ALREADY_DISABLE            #language en-US  "IPsec has been already disabled !\n"

#string STR_IPSEC_CONFIG_STATUS_ENABLE              #language en-US  "IPsec Status : Enabled ! \n"

#string STR_IPSEC_CONFIG_STATUS_DISABLE             #language en-US  "IPsec Status : Disabled ! \n"

#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"

