| /** @file | |
| The function declaration of policy entry operation in IpSecConfig application. | |
| Copyright (c) 2009 - 2011, 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 _POLICY_ENTRY_OPERATION_H_ | |
| #define _POLICY_ENTRY_OPERATION_H_ | |
| #define LOCAL BIT(0) | |
| #define REMOTE BIT(1) | |
| #define PROTO BIT(2) | |
| #define LOCAL_PORT BIT(3) | |
| #define REMOTE_PORT BIT(4) | |
| #define ICMP_TYPE BIT(5) | |
| #define ICMP_CODE BIT(6) | |
| #define NAME BIT(7) | |
| #define PACKET_FLAG BIT(8) | |
| #define ACTION BIT(9) | |
| #define EXT_SEQUENCE BIT(10) | |
| #define SEQUENCE_OVERFLOW BIT(11) | |
| #define FRAGMENT_CHECK BIT(12) | |
| #define LIFEBYTE BIT(13) | |
| #define LIFETIME_SOFT BIT(14) | |
| #define LIFETIME BIT(15) | |
| #define MODE BIT(16) | |
| #define TUNNEL_LOCAL BIT(17) | |
| #define TUNNEL_REMOTE BIT(18) | |
| #define DONT_FRAGMENT BIT(19) | |
| #define IPSEC_PROTO BIT(20) | |
| #define AUTH_ALGO BIT(21) | |
| #define ENCRYPT_ALGO BIT(22) | |
| #define SPI BIT(23) | |
| #define DEST BIT(24) | |
| #define SEQUENCE_NUMBER BIT(25) | |
| #define ANTIREPLAY_WINDOW BIT(26) | |
| #define AUTH_KEY BIT(27) | |
| #define ENCRYPT_KEY BIT(28) | |
| #define PATH_MTU BIT(29) | |
| #define SOURCE BIT(30) | |
| #define PEER_ID BIT(0) | |
| #define PEER_ADDRESS BIT(1) | |
| #define AUTH_PROTO BIT(2) | |
| #define AUTH_METHOD BIT(3) | |
| #define IKE_ID BIT(4) | |
| #define AUTH_DATA BIT(5) | |
| #define REVOCATION_DATA BIT(6) | |
| typedef struct { | |
| EFI_IPSEC_CONFIG_DATA_TYPE DataType; | |
| EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted. | |
| VOID *Data; | |
| UINT32 Mask; | |
| POLICY_ENTRY_INDEXER Indexer; | |
| EFI_STATUS Status; // Indicate whether insertion succeeds. | |
| } EDIT_POLICY_ENTRY_CONTEXT; | |
| typedef struct { | |
| EFI_IPSEC_CONFIG_DATA_TYPE DataType; | |
| EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted. | |
| VOID *Data; | |
| POLICY_ENTRY_INDEXER Indexer; | |
| EFI_STATUS Status; // Indicate whether insertion succeeds. | |
| } INSERT_POLICY_ENTRY_CONTEXT; | |
| /** | |
| The prototype for the CreateSpdEntry()/CreateSadEntry()/CreatePadEntry(). | |
| Fill in EFI_IPSEC_CONFIG_SELECTOR and corresponding data thru ParamPackage list. | |
| @param[out] Selector The pointer to the EFI_IPSEC_CONFIG_SELECTOR union. | |
| @param[out] Data The pointer to corresponding data. | |
| @param[in] ParamPackage The pointer to the ParamPackage list. | |
| @param[out] Mask The pointer to the Mask. | |
| @param[in] CreateNew The switch to create new. | |
| @retval EFI_SUCCESS Filled in EFI_IPSEC_CONFIG_SELECTOR and corresponding data successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid user input parameter. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (*CREATE_POLICY_ENTRY) ( | |
| OUT EFI_IPSEC_CONFIG_SELECTOR **Selector, | |
| OUT VOID **Data, | |
| IN LIST_ENTRY *ParamPackage, | |
| OUT UINT32 *Mask, | |
| IN BOOLEAN CreateNew | |
| ); | |
| /** | |
| The prototype for the CombineSpdEntry()/CombineSadEntry()/CombinePadEntry(). | |
| Combine old SPD/SAD/PAD entry with new SPD/SAD/PAD entry. | |
| @param[in, out] OldSelector The pointer to the old EFI_IPSEC_CONFIG_SELECTOR union. | |
| @param[in, out] OldData The pointer to the corresponding old data. | |
| @param[in] NewSelector The pointer to the new EFI_IPSEC_CONFIG_SELECTOR union. | |
| @param[in] NewData The pointer to the corresponding new data. | |
| @param[in] Mask The pointer to the Mask. | |
| @param[out] CreateNew The switch to create new. | |
| @retval EFI_SUCCESS Combined successfully. | |
| @retval EFI_INVALID_PARAMETER Invalid user input parameter. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (* COMBINE_POLICY_ENTRY) ( | |
| IN OUT EFI_IPSEC_CONFIG_SELECTOR *OldSelector, | |
| IN OUT VOID *OldData, | |
| IN EFI_IPSEC_CONFIG_SELECTOR *NewSelector, | |
| IN VOID *NewData, | |
| IN UINT32 Mask, | |
| OUT BOOLEAN *CreateNew | |
| ); | |
| /** | |
| Insert or add entry information in database according to datatype. | |
| @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE. | |
| @param[in] ParamPackage The pointer to the ParamPackage list. | |
| @retval EFI_SUCCESS Insert or add entry information successfully. | |
| @retval EFI_NOT_FOUND Can't find the specified entry. | |
| @retval EFI_BUFFER_TOO_SMALL The entry already existed. | |
| @retval EFI_UNSUPPORTED The operation is not supported./ | |
| @retval Others Some mistaken case. | |
| **/ | |
| EFI_STATUS | |
| AddOrInsertPolicyEntry ( | |
| IN EFI_IPSEC_CONFIG_DATA_TYPE DataType, | |
| IN LIST_ENTRY *ParamPackage | |
| ); | |
| /** | |
| Edit entry information in the database according to datatype. | |
| @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE. | |
| @param[in] ParamPackage The pointer to the ParamPackage list. | |
| @retval EFI_SUCCESS Edit entry information successfully. | |
| @retval EFI_NOT_FOUND Can't find the specified entry. | |
| @retval Others Some mistaken case. | |
| **/ | |
| EFI_STATUS | |
| EditPolicyEntry ( | |
| IN EFI_IPSEC_CONFIG_DATA_TYPE DataType, | |
| IN LIST_ENTRY *ParamPackage | |
| ); | |
| #endif |