IpSecConfig.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan/** @file
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan The internal structure and function declaration in IpSecConfig application.
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan This program and the accompanying materials
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan are licensed and made available under the terms and conditions of the BSD License
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan which accompanies this distribution. The full text of the license may be found at
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan http://opensource.org/licenses/bsd-license.php.
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan**/
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#ifndef _IPSEC_CONFIG_H_
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define _IPSEC_CONFIG_H_
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#include <Library/BaseMemoryLib.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#include <Library/UefiLib.h>
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#include <Library/ShellLib.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#include <Library/DebugLib.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#include <Library/MemoryAllocationLib.h>
e6d7ebe1d98f7f030969e521b061f8643253475eDirk Hogan#include <Library/UefiBootServicesTableLib.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#include <Library/NetLib.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#include <Protocol/IpSecConfig.h>
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSECCONFIG_STATUS_NAME L"IpSecStatus"
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define BIT(x) (UINT32) (1 << (x))
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_STATUS_DISABLED 0x0
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_STATUS_ENABLED 0x1
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define EFI_IP4_PROTO_ICMP 0x1
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define EFI_IP4_PROTO_TCP 0x6
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define EFI_IP4_PROTO_UDP 0x11
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define EFI_IPSEC_ANY_PROTOCOL 0xFFFF
e6d7ebe1d98f7f030969e521b061f8643253475eDirk Hogan#define EFI_IPSEC_ANY_PORT 0
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan///
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan/// IPsec Authentication Algorithm Definition
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan/// The number value definition is aligned to IANA assignment
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan///
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_AALG_NONE 0x00
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_AALG_MD5HMAC 0x01
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_AALG_SHA1HMAC 0x02
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_AALG_SHA2_256HMAC 0x05
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_AALG_SHA2_384HMAC 0x06
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_AALG_SHA2_512HMAC 0x07
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_AALG_AES_XCBC_MAC 0x09
e6d7ebe1d98f7f030969e521b061f8643253475eDirk Hogan#define IPSEC_AALG_NULL 0xFB
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan///
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan/// IPsec Encryption Algorithm Definition
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan/// The number value definition is aligned to IANA assignment
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan///
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan#define IPSEC_EALG_NONE 0x00
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan#define IPSEC_EALG_DESCBC 0x02
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_3DESCBC 0x03
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_CASTCBC 0x06
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_BLOWFISHCBC 0x07
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_NULL 0x0B
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AESCBC 0x0C
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AESCTR 0x0D
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AES_CCM_ICV8 0x0E
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AES_CCM_ICV12 0x0F
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AES_CCM_ICV16 0x10
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AES_GCM_ICV8 0x12
3744900be632496920d4c9aca8f94ba6db4dd882Dirk Hogan#define IPSEC_EALG_AES_GCM_ICV12 0x13
dcf0ce40c27bbcd1b429aaf915b5dfa385a59d7eDirk Hogan#define IPSEC_EALG_AES_GCM_ICV16 0x14
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogan
9d406c6b25ce9f6bf266b077443e723b95962914Dirk Hogantypedef 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