C++程序  |  150行  |  3.68 KB

/** @file
  The internal structure and function declaration in IpSecConfig application.

  Copyright (c) 2009 - 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
  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.

**/

#ifndef _IPSEC_CONFIG_H_
#define _IPSEC_CONFIG_H_

#include <Library/BaseMemoryLib.h>
#include <Library/UefiLib.h>
#include <Library/ShellLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiHiiServicesLib.h>
#include <Library/NetLib.h>

#include <Protocol/IpSecConfig.h>

#define IPSECCONFIG_STATUS_NAME    L"IpSecStatus"

#define BIT(x)   (UINT32) (1 << (x))

#define IPSEC_STATUS_DISABLED    0x0
#define IPSEC_STATUS_ENABLED     0x1

#define EFI_IP4_PROTO_ICMP       0x1
#define EFI_IP4_PROTO_TCP        0x6
#define EFI_IP4_PROTO_UDP        0x11

#define EFI_IPSEC_ANY_PROTOCOL    0xFFFF
#define EFI_IPSEC_ANY_PORT        0

///
/// IPsec Authentication Algorithm Definition
///   The number value definition is aligned to IANA assignment
///
#define IPSEC_AALG_NONE                0x00
#define IPSEC_AALG_MD5HMAC             0x01
#define IPSEC_AALG_SHA1HMAC            0x02
#define IPSEC_AALG_SHA2_256HMAC        0x05
#define IPSEC_AALG_SHA2_384HMAC        0x06
#define IPSEC_AALG_SHA2_512HMAC        0x07
#define IPSEC_AALG_AES_XCBC_MAC        0x09
#define IPSEC_AALG_NULL                0xFB

///
/// IPsec Encryption Algorithm Definition
///   The number value definition is aligned to IANA assignment
///
#define IPSEC_EALG_NONE                0x00
#define IPSEC_EALG_DESCBC              0x02
#define IPSEC_EALG_3DESCBC             0x03
#define IPSEC_EALG_CASTCBC             0x06
#define IPSEC_EALG_BLOWFISHCBC         0x07
#define IPSEC_EALG_NULL                0x0B
#define IPSEC_EALG_AESCBC              0x0C
#define IPSEC_EALG_AESCTR              0x0D
#define IPSEC_EALG_AES_CCM_ICV8        0x0E
#define IPSEC_EALG_AES_CCM_ICV12       0x0F
#define IPSEC_EALG_AES_CCM_ICV16       0x10
#define IPSEC_EALG_AES_GCM_ICV8        0x12
#define IPSEC_EALG_AES_GCM_ICV12       0x13
#define IPSEC_EALG_AES_GCM_ICV16       0x14

typedef struct {
  CHAR16      *VarName;
  UINT32      Attribute1;
  UINT32      Attribute2;
  UINT32      Attribute3;
  UINT32      Attribute4;
} VAR_CHECK_ITEM;

typedef struct {
  LIST_ENTRY        Link;
  CHAR16            *Name;
  SHELL_PARAM_TYPE  Type;
  CHAR16            *Value;
  UINTN             OriginalPosition;
} SHELL_PARAM_PACKAGE;

typedef struct {
  CHAR16        *String;
  UINT32        Integer;
} STR2INT;

extern EFI_IPSEC_CONFIG_PROTOCOL    *mIpSecConfig;
extern EFI_HII_HANDLE               mHiiHandle;
extern CHAR16                       mAppName[];

//
// -P
//
extern STR2INT mMapPolicy[];

//
// --proto
//
extern STR2INT mMapIpProtocol[];

//
// --action
//
extern STR2INT mMapIpSecAction[];

//
// --mode
//
extern STR2INT mMapIpSecMode[];

//
// --dont-fragment
//
extern STR2INT mMapDfOption[];

//
// --ipsec-proto
//
extern STR2INT mMapIpSecProtocol[];
//
// --auth-algo
//
extern STR2INT mMapAuthAlgo[];

//
// --encrypt-algo
//
extern STR2INT mMapEncAlgo[];
//
// --auth-proto
//
extern STR2INT mMapAuthProto[];

//
// --auth-method
//
extern STR2INT mMapAuthMethod[];

#endif