/** @file The function declaration of policy entry operation in IpSecConfig application. Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #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