--- /dev/null
+/** @file\r
+ The function declaration of policy entry operation in IpSecConfig application.\r
+\r
+ Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php.\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+**/\r
+\r
+#ifndef _POLICY_ENTRY_OPERATION_H_\r
+#define _POLICY_ENTRY_OPERATION_H_\r
+\r
+#define LOCAL BIT(0)\r
+#define REMOTE BIT(1)\r
+#define PROTO BIT(2)\r
+#define LOCAL_PORT BIT(3)\r
+#define REMOTE_PORT BIT(4)\r
+#define ICMP_TYPE BIT(5)\r
+#define ICMP_CODE BIT(6)\r
+#define NAME BIT(7)\r
+#define PACKET_FLAG BIT(8)\r
+#define ACTION BIT(9)\r
+#define EXT_SEQUENCE BIT(10)\r
+#define SEQUENCE_OVERFLOW BIT(11)\r
+#define FRAGMENT_CHECK BIT(12)\r
+#define LIFEBYTE BIT(13)\r
+#define LIFETIME_SOFT BIT(14)\r
+#define LIFETIME BIT(15)\r
+#define MODE BIT(16)\r
+#define TUNNEL_LOCAL BIT(17)\r
+#define TUNNEL_REMOTE BIT(18)\r
+#define DONT_FRAGMENT BIT(19)\r
+#define IPSEC_PROTO BIT(20)\r
+#define AUTH_ALGO BIT(21)\r
+#define ENCRYPT_ALGO BIT(22)\r
+#define SPI BIT(23)\r
+#define DEST BIT(24)\r
+#define SEQUENCE_NUMBER BIT(25)\r
+#define ANTIREPLAY_WINDOW BIT(26)\r
+#define AUTH_KEY BIT(27)\r
+#define ENCRYPT_KEY BIT(28)\r
+#define PATH_MTU BIT(29)\r
+\r
+#define PEER_ID BIT(0)\r
+#define PEER_ADDRESS BIT(1)\r
+#define AUTH_PROTO BIT(2)\r
+#define AUTH_METHOD BIT(3)\r
+#define IKE_ID BIT(4)\r
+#define AUTH_DATA BIT(5)\r
+#define REVOCATION_DATA BIT(6)\r
+\r
+typedef struct {\r
+ EFI_IPSEC_CONFIG_DATA_TYPE DataType;\r
+ EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted.\r
+ VOID *Data;\r
+ UINT32 Mask;\r
+ POLICY_ENTRY_INDEXER Indexer;\r
+ EFI_STATUS Status; // Indicate whether insertion succeeds.\r
+} EDIT_POLICY_ENTRY_CONTEXT;\r
+\r
+typedef struct {\r
+ EFI_IPSEC_CONFIG_DATA_TYPE DataType;\r
+ EFI_IPSEC_CONFIG_SELECTOR *Selector; // Data to be inserted.\r
+ VOID *Data;\r
+ POLICY_ENTRY_INDEXER Indexer;\r
+ EFI_STATUS Status; // Indicate whether insertion succeeds.\r
+} INSERT_POLICY_ENTRY_CONTEXT;\r
+\r
+/**\r
+ The prototype for the CreateSpdEntry()/CreateSadEntry()/CreatePadEntry().\r
+ Fill in EFI_IPSEC_CONFIG_SELECTOR and corresponding data thru ParamPackage list.\r
+\r
+ @param[out] Selector The pointer to the EFI_IPSEC_CONFIG_SELECTOR union.\r
+ @param[out] Data The pointer to corresponding data.\r
+ @param[in] ParamPackage The pointer to the ParamPackage list.\r
+ @param[out] Mask The pointer to the Mask.\r
+ @param[in] CreateNew The switch to create new.\r
+\r
+ @retval EFI_SUCCESS Filled in EFI_IPSEC_CONFIG_SELECTOR and corresponding data successfully.\r
+ @retval EFI_INVALID_PARAMETER Invalid user input parameter.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(*CREATE_POLICY_ENTRY) (\r
+ OUT EFI_IPSEC_CONFIG_SELECTOR **Selector,\r
+ OUT VOID **Data,\r
+ IN LIST_ENTRY *ParamPackage,\r
+ OUT UINT32 *Mask,\r
+ IN BOOLEAN CreateNew\r
+ );\r
+\r
+/**\r
+ The prototype for the CombineSpdEntry()/CombineSadEntry()/CombinePadEntry().\r
+ Combine old SPD/SAD/PAD entry with new SPD/SAD/PAD entry.\r
+\r
+ @param[in, out] OldSelector The pointer to the old EFI_IPSEC_CONFIG_SELECTOR union.\r
+ @param[in, out] OldData The pointer to the corresponding old data.\r
+ @param[in] NewSelector The pointer to the new EFI_IPSEC_CONFIG_SELECTOR union.\r
+ @param[in] NewData The pointer to the corresponding new data.\r
+ @param[in] Mask The pointer to the Mask.\r
+ @param[out] CreateNew The switch to create new.\r
+\r
+ @retval EFI_SUCCESS Combined successfully.\r
+ @retval EFI_INVALID_PARAMETER Invalid user input parameter.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(* COMBINE_POLICY_ENTRY) (\r
+ EFI_IPSEC_CONFIG_SELECTOR *OldSelector,\r
+ VOID *OldData,\r
+ EFI_IPSEC_CONFIG_SELECTOR *NewSelector,\r
+ VOID *NewData,\r
+ UINT32 Mask,\r
+ BOOLEAN *CreateNew\r
+ );\r
+\r
+/**\r
+ Insert or add entry information in database according to datatype.\r
+\r
+ @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE.\r
+ @param[in] ParamPackage The pointer to the ParamPackage list.\r
+\r
+ @retval EFI_SUCCESS Insert or add entry information successfully.\r
+ @retval EFI_NOT_FOUND Can't find the specified entry.\r
+ @retval EFI_BUFFER_TOO_SMALL The entry already existed.\r
+ @retval EFI_UNSUPPORTED The operation is not supported./\r
+ @retval Others Some mistaken case.\r
+**/\r
+EFI_STATUS\r
+AddOrInsertPolicyEntry (\r
+ IN EFI_IPSEC_CONFIG_DATA_TYPE DataType,\r
+ IN LIST_ENTRY *ParamPackage\r
+ );\r
+\r
+/**\r
+ Edit entry information in the database according to datatype.\r
+\r
+ @param[in] DataType The value of EFI_IPSEC_CONFIG_DATA_TYPE.\r
+ @param[in] ParamPackage The pointer to the ParamPackage list.\r
+\r
+ @retval EFI_SUCCESS Edit entry information successfully.\r
+ @retval EFI_NOT_FOUND Can't find the specified entry.\r
+ @retval Others Some mistaken case.\r
+**/\r
+EFI_STATUS\r
+EditPolicyEntry (\r
+ IN EFI_IPSEC_CONFIG_DATA_TYPE DataType,\r
+ IN LIST_ENTRY *ParamPackage\r
+ );\r
+#endif\r