1 /** @file
2   The internal structure and function declaration in IpSecConfig application.
3 
4   Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
5 
6   This program and the accompanying materials
7   are licensed and made available under the terms and conditions of the BSD License
8   which accompanies this distribution.  The full text of the license may be found at
9   http://opensource.org/licenses/bsd-license.php.
10 
11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 
14 **/
15 
16 #ifndef _IPSEC_CONFIG_H_
17 #define _IPSEC_CONFIG_H_
18 
19 #include <Library/BaseMemoryLib.h>
20 #include <Library/UefiLib.h>
21 #include <Library/ShellLib.h>
22 #include <Library/DebugLib.h>
23 #include <Library/MemoryAllocationLib.h>
24 #include <Library/UefiBootServicesTableLib.h>
25 #include <Library/NetLib.h>
26 
27 #include <Protocol/IpSecConfig.h>
28 
29 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
30 
31 #define IPSECCONFIG_STATUS_NAME    L"IpSecStatus"
32 
33 #define BIT(x)   (UINT32) (1 << (x))
34 
35 #define IPSEC_STATUS_DISABLED    0x0
36 #define IPSEC_STATUS_ENABLED     0x1
37 
38 #define EFI_IP4_PROTO_ICMP       0x1
39 #define EFI_IP4_PROTO_TCP        0x6
40 #define EFI_IP4_PROTO_UDP        0x11
41 
42 #define EFI_IPSEC_ANY_PROTOCOL    0xFFFF
43 #define EFI_IPSEC_ANY_PORT        0
44 
45 ///
46 /// IPsec Authentication Algorithm Definition
47 ///   The number value definition is aligned to IANA assignment
48 ///
49 #define IPSEC_AALG_NONE                0x00
50 #define IPSEC_AALG_MD5HMAC             0x01
51 #define IPSEC_AALG_SHA1HMAC            0x02
52 #define IPSEC_AALG_SHA2_256HMAC        0x05
53 #define IPSEC_AALG_SHA2_384HMAC        0x06
54 #define IPSEC_AALG_SHA2_512HMAC        0x07
55 #define IPSEC_AALG_AES_XCBC_MAC        0x09
56 #define IPSEC_AALG_NULL                0xFB
57 
58 ///
59 /// IPsec Encryption Algorithm Definition
60 ///   The number value definition is aligned to IANA assignment
61 ///
62 #define IPSEC_EALG_NONE                0x00
63 #define IPSEC_EALG_DESCBC              0x02
64 #define IPSEC_EALG_3DESCBC             0x03
65 #define IPSEC_EALG_CASTCBC             0x06
66 #define IPSEC_EALG_BLOWFISHCBC         0x07
67 #define IPSEC_EALG_NULL                0x0B
68 #define IPSEC_EALG_AESCBC              0x0C
69 #define IPSEC_EALG_AESCTR              0x0D
70 #define IPSEC_EALG_AES_CCM_ICV8        0x0E
71 #define IPSEC_EALG_AES_CCM_ICV12       0x0F
72 #define IPSEC_EALG_AES_CCM_ICV16       0x10
73 #define IPSEC_EALG_AES_GCM_ICV8        0x12
74 #define IPSEC_EALG_AES_GCM_ICV12       0x13
75 #define IPSEC_EALG_AES_GCM_ICV16       0x14
76 
77 typedef struct {
78   CHAR16      *VarName;
79   UINT32      Attribute1;
80   UINT32      Attribute2;
81   UINT32      Attribute3;
82   UINT32      Attribute4;
83 } VAR_CHECK_ITEM;
84 
85 typedef struct {
86   LIST_ENTRY        Link;
87   CHAR16            *Name;
88   SHELL_PARAM_TYPE  Type;
89   CHAR16            *Value;
90   UINTN             OriginalPosition;
91 } SHELL_PARAM_PACKAGE;
92 
93 typedef struct {
94   CHAR16        *String;
95   UINT32        Integer;
96 } STR2INT;
97 
98 extern EFI_IPSEC_CONFIG_PROTOCOL    *mIpSecConfig;
99 extern EFI_HII_HANDLE               mHiiHandle;
100 extern CHAR16                       mAppName[];
101 
102 //
103 // -P
104 //
105 extern STR2INT mMapPolicy[];
106 
107 //
108 // --proto
109 //
110 extern STR2INT mMapIpProtocol[];
111 
112 //
113 // --action
114 //
115 extern STR2INT mMapIpSecAction[];
116 
117 //
118 // --mode
119 //
120 extern STR2INT mMapIpSecMode[];
121 
122 //
123 // --dont-fragment
124 //
125 extern STR2INT mMapDfOption[];
126 
127 //
128 // --ipsec-proto
129 //
130 extern STR2INT mMapIpSecProtocol[];
131 //
132 // --auth-algo
133 //
134 extern STR2INT mMapAuthAlgo[];
135 
136 //
137 // --encrypt-algo
138 //
139 extern STR2INT mMapEncAlgo[];
140 //
141 // --auth-proto
142 //
143 extern STR2INT mMapAuthProto[];
144 
145 //
146 // --auth-method
147 //
148 extern STR2INT mMapAuthMethod[];
149 
150 #endif
151