/** @file\r
The implementation of IPSEC_CONFIG_PROTOCOL.\r
\r
- Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2015, 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
SpdData->Name,\r
sizeof (SpdData->Name)\r
);\r
- SpdEntry->Data->PackageFlag = SpdData->PackageFlag;\r
- SpdEntry->Data->Action = SpdData->Action;\r
-\r
+ SpdEntry->Data->PackageFlag = SpdData->PackageFlag;\r
+ SpdEntry->Data->TrafficDirection = SpdData->TrafficDirection;\r
+ SpdEntry->Data->Action = SpdData->Action;\r
+ \r
//\r
// Fix the address of ProcessingPolicy and copy it if need, which is continous\r
// memory and close to the base structure of SAD data.\r
(EFI_IPSEC_CONFIG_SELECTOR *) &SpdData->SaId[Index],\r
(EFI_IPSEC_CONFIG_SELECTOR *) SadEntry->Id\r
)) {\r
+ if (SadEntry->Data->SpdEntry != NULL) { \r
+ RemoveEntryList (&SadEntry->BySpd);\r
+ }\r
InsertTailList (&SpdEntry->Data->Sas, &SadEntry->BySpd);\r
- SadEntry->Data->SpdEntry = SpdEntry;\r
- DuplicateSpdSelector (\r
- (EFI_IPSEC_CONFIG_SELECTOR *)SadEntry->Data->SpdSelector,\r
- (EFI_IPSEC_CONFIG_SELECTOR *)SpdEntry->Selector,\r
- NULL\r
- ); \r
+ SadEntry->Data->SpdEntry = SpdEntry; \r
}\r
}\r
}\r
//\r
CopyMem (SpdData->Name, SpdEntry->Data->Name, sizeof (SpdData->Name));\r
\r
- SpdData->PackageFlag = SpdEntry->Data->PackageFlag;\r
- SpdData->Action = SpdEntry->Data->Action;\r
-\r
+ SpdData->PackageFlag = SpdEntry->Data->PackageFlag;\r
+ SpdData->TrafficDirection = SpdEntry->Data->TrafficDirection;\r
+ SpdData->Action = SpdEntry->Data->Action;\r
+ \r
if (SpdData->Action != EfiIPsecActionProtect) {\r
SpdData->ProcessingPolicy = NULL;\r
} else {\r