]> git.proxmox.com Git - mirror_edk2.git/blob - NetworkPkg/Application/IpsecConfig/PolicyEntryOperation.h
NetworkPkg/IpsecConfig: guard the definition of ARRAY_SIZE
[mirror_edk2.git] / NetworkPkg / Application / IpsecConfig / PolicyEntryOperation.h
1 /** @file
2 The function declaration of policy entry operation 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 _POLICY_ENTRY_OPERATION_H_
17 #define _POLICY_ENTRY_OPERATION_H_
18
19 #define LOCAL BIT(0)
20 #define REMOTE BIT(1)
21 #define PROTO BIT(2)
22 #define LOCAL_PORT BIT(3)
23 #define REMOTE_PORT BIT(4)
24 #define ICMP_TYPE BIT(5)
25 #define ICMP_CODE BIT(6)
26 #define NAME BIT(7)
27 #define PACKET_FLAG BIT(8)
28 #define ACTION BIT(9)
29 #define EXT_SEQUENCE BIT(10)
30 #define SEQUENCE_OVERFLOW BIT(11)
31 #define FRAGMENT_CHECK BIT(12)
32 #define LIFEBYTE BIT(13)
33 #define LIFETIME_SOFT BIT(14)
34 #define LIFETIME BIT(15)
35 #define MODE BIT(16)
36 #define TUNNEL_LOCAL BIT(17)
37 #define TUNNEL_REMOTE BIT(18)
38 #define DONT_FRAGMENT BIT(19)
39 #define IPSEC_PROTO BIT(20)
40 #define AUTH_ALGO BIT(21)
41 #define ENCRYPT_ALGO BIT(22)
42 #define SPI BIT(23)
43 #define DEST BIT(24)
44 #define SEQUENCE_NUMBER BIT(25)
45 #define ANTIREPLAY_WINDOW BIT(26)
46 #define AUTH_KEY BIT(27)
47 #define ENCRYPT_KEY BIT(28)
48 #define PATH_MTU BIT(29)
49 #define SOURCE BIT(30)
50
51 #define PEER_ID BIT(0)
52 #define PEER_ADDRESS BIT(1)
53 #define AUTH_PROTO BIT(2)
54 #define AUTH_METHOD BIT(3)
55 #define IKE_ID BIT(4)
56 #define AUTH_DATA BIT(5)
57 #define REVOCATION_DATA BIT(6)
58
59 typedef struct {
60 EFI_IPSEC_CONFIG_DATA_TYPE DataType;
61 EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted.
62 VOID *Data;
63 UINT32 Mask;
64 POLICY_ENTRY_INDEXER Indexer;
65 EFI_STATUS Status; // Indicate whether insertion succeeds.
66 } EDIT_POLICY_ENTRY_CONTEXT;
67
68 typedef struct {
69 EFI_IPSEC_CONFIG_DATA_TYPE DataType;
70 EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted.
71 VOID *Data;
72 POLICY_ENTRY_INDEXER Indexer;
73 EFI_STATUS Status; // Indicate whether insertion succeeds.
74 } INSERT_POLICY_ENTRY_CONTEXT;
75
76 /**
77 The prototype for the CreateSpdEntry()/CreateSadEntry()/CreatePadEntry().
78 Fill in EFI_IPSEC_CONFIG_SELECTOR and corresponding data thru ParamPackage list.
79
80 @param[out] Selector The pointer to the EFI_IPSEC_CONFIG_SELECTOR union.
81 @param[out] Data The pointer to corresponding data.
82 @param[in] ParamPackage The pointer to the ParamPackage list.
83 @param[out] Mask The pointer to the Mask.
84 @param[in] CreateNew The switch to create new.
85
86 @retval EFI_SUCCESS Filled in EFI_IPSEC_CONFIG_SELECTOR and corresponding data successfully.
87 @retval EFI_INVALID_PARAMETER Invalid user input parameter.
88
89 **/
90 typedef
91 EFI_STATUS
92 (*CREATE_POLICY_ENTRY) (
93 OUT EFI_IPSEC_CONFIG_SELECTOR **Selector,
94 OUT VOID **Data,
95 IN LIST_ENTRY *ParamPackage,
96 OUT UINT32 *Mask,
97 IN BOOLEAN CreateNew
98 );
99
100 /**
101 The prototype for the CombineSpdEntry()/CombineSadEntry()/CombinePadEntry().
102 Combine old SPD/SAD/PAD entry with new SPD/SAD/PAD entry.
103
104 @param[in, out] OldSelector The pointer to the old EFI_IPSEC_CONFIG_SELECTOR union.
105 @param[in, out] OldData The pointer to the corresponding old data.
106 @param[in] NewSelector The pointer to the new EFI_IPSEC_CONFIG_SELECTOR union.
107 @param[in] NewData The pointer to the corresponding new data.
108 @param[in] Mask The pointer to the Mask.
109 @param[out] CreateNew The switch to create new.
110
111 @retval EFI_SUCCESS Combined successfully.
112 @retval EFI_INVALID_PARAMETER Invalid user input parameter.
113
114 **/
115 typedef
116 EFI_STATUS
117 (* COMBINE_POLICY_ENTRY) (
118 IN OUT EFI_IPSEC_CONFIG_SELECTOR *OldSelector,
119 IN OUT VOID *OldData,
120 IN EFI_IPSEC_CONFIG_SELECTOR *NewSelector,
121 IN VOID *NewData,
122 IN UINT32 Mask,
123 OUT BOOLEAN *CreateNew
124 );
125
126 /**
127 Insert or add entry information in database according to datatype.
128
129 @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE.
130 @param[in] ParamPackage The pointer to the ParamPackage list.
131
132 @retval EFI_SUCCESS Insert or add entry information successfully.
133 @retval EFI_NOT_FOUND Can't find the specified entry.
134 @retval EFI_BUFFER_TOO_SMALL The entry already existed.
135 @retval EFI_UNSUPPORTED The operation is not supported./
136 @retval Others Some mistaken case.
137 **/
138 EFI_STATUS
139 AddOrInsertPolicyEntry (
140 IN EFI_IPSEC_CONFIG_DATA_TYPE DataType,
141 IN LIST_ENTRY *ParamPackage
142 );
143
144 /**
145 Edit entry information in the database according to datatype.
146
147 @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE.
148 @param[in] ParamPackage The pointer to the ParamPackage list.
149
150 @retval EFI_SUCCESS Edit entry information successfully.
151 @retval EFI_NOT_FOUND Can't find the specified entry.
152 @retval Others Some mistaken case.
153 **/
154 EFI_STATUS
155 EditPolicyEntry (
156 IN EFI_IPSEC_CONFIG_DATA_TYPE DataType,
157 IN LIST_ENTRY *ParamPackage
158 );
159 #endif