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 160