/** @file\r
Implementation of EFI_IP6_PROTOCOL protocol interfaces.\r
\r
- Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
+ Copyright (c) 2009 - 2016, 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
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include "Ip6Impl.h"\r
\r
-EFI_IPSEC2_PROTOCOL *mIpSec = NULL;\r
+EFI_IPSEC2_PROTOCOL *mIpSec = NULL;\r
\r
-EFI_IP6_PROTOCOL mEfiIp6ProtocolTemplete = {\r
+EFI_IP6_PROTOCOL mEfiIp6ProtocolTemplete = {\r
EfiIp6GetModeData,\r
EfiIp6Configure,\r
EfiIp6Groups,\r
EFI_STATUS\r
EFIAPI\r
EfiIp6GetModeData (\r
- IN EFI_IP6_PROTOCOL *This,\r
- OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,\r
- OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
- OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
+ IN EFI_IP6_PROTOCOL *This,\r
+ OUT EFI_IP6_MODE_DATA *Ip6ModeData OPTIONAL,\r
+ OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL,\r
+ OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL\r
)\r
{\r
- IP6_PROTOCOL *IpInstance;\r
- IP6_SERVICE *IpSb;\r
- IP6_INTERFACE *IpIf;\r
- EFI_IP6_CONFIG_DATA *Config;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
+ IP6_PROTOCOL *IpInstance;\r
+ IP6_SERVICE *IpSb;\r
+ IP6_INTERFACE *IpIf;\r
+ EFI_IP6_CONFIG_DATA *Config;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
// IsStarted is "whether the EfiIp6Configure has been called".\r
// IsConfigured is "whether the station address has been configured"\r
//\r
- Ip6ModeData->IsStarted = (BOOLEAN) (IpInstance->State == IP6_STATE_CONFIGED);\r
+ Ip6ModeData->IsStarted = (BOOLEAN)(IpInstance->State == IP6_STATE_CONFIGED);\r
Ip6ModeData->MaxPacketSize = IpSb->MaxPacketSize;\r
CopyMem (&Ip6ModeData->ConfigData, &IpInstance->ConfigData, sizeof (EFI_IP6_CONFIG_DATA));\r
- Ip6ModeData->IsConfigured = FALSE;\r
+ Ip6ModeData->IsConfigured = FALSE;\r
\r
- Ip6ModeData->AddressCount = 0;\r
- Ip6ModeData->AddressList = NULL;\r
+ Ip6ModeData->AddressCount = 0;\r
+ Ip6ModeData->AddressList = NULL;\r
\r
- Ip6ModeData->GroupCount = IpInstance->GroupCount;\r
- Ip6ModeData->GroupTable = NULL;\r
+ Ip6ModeData->GroupCount = IpInstance->GroupCount;\r
+ Ip6ModeData->GroupTable = NULL;\r
\r
- Ip6ModeData->RouteCount = 0;\r
- Ip6ModeData->RouteTable = NULL;\r
+ Ip6ModeData->RouteCount = 0;\r
+ Ip6ModeData->RouteTable = NULL;\r
\r
Ip6ModeData->NeighborCount = 0;\r
Ip6ModeData->NeighborCache = NULL;\r
\r
- Ip6ModeData->PrefixCount = 0;\r
- Ip6ModeData->PrefixTable = NULL;\r
+ Ip6ModeData->PrefixCount = 0;\r
+ Ip6ModeData->PrefixTable = NULL;\r
\r
Ip6ModeData->IcmpTypeCount = 23;\r
Ip6ModeData->IcmpTypeList = AllocateCopyPool (\r
goto Error;\r
}\r
}\r
+\r
//\r
// Return the neighbor cache entries\r
//\r
if (EFI_ERROR (Status)) {\r
goto Error;\r
}\r
-\r
}\r
}\r
\r
**/\r
BOOLEAN\r
Ip6IsValidAddress (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IPv6_ADDRESS *Ip,\r
- IN BOOLEAN Flag\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IPv6_ADDRESS *Ip,\r
+ IN BOOLEAN Flag\r
)\r
{\r
if (!NetIp6IsUnspecifiedAddr (Ip)) {\r
- if (!NetIp6IsValidUnicast(Ip)) {\r
+ if (!NetIp6IsValidUnicast (Ip)) {\r
return FALSE;\r
}\r
+\r
if (Ip6IsOneOfSetAddress (IpSb, Ip, NULL, NULL)) {\r
return Flag;\r
}\r
**/\r
BOOLEAN\r
Ip6IsIllegalProtocol (\r
- IN UINT8 Protocol\r
+ IN UINT8 Protocol\r
)\r
{\r
- if (Protocol == IP6_HOP_BY_HOP || Protocol == EFI_IP_PROTO_ICMP || Protocol == IP4_PROTO_IGMP) {\r
+ if ((Protocol == IP6_HOP_BY_HOP) || (Protocol == EFI_IP_PROTO_ICMP) || (Protocol == IP4_PROTO_IGMP)) {\r
return TRUE;\r
}\r
\r
- if (Protocol == 41 || Protocol == 43 || Protocol == 44 || Protocol == 59 || Protocol == 60 || Protocol == 124) {\r
+ if ((Protocol == 41) || (Protocol == 43) || (Protocol == 44) || (Protocol == 59) || (Protocol == 60) || (Protocol == 124)) {\r
return TRUE;\r
}\r
\r
}\r
\r
/**\r
- Intiialize the IP6_PROTOCOL structure to the unconfigured states.\r
+ Initialize the IP6_PROTOCOL structure to the unconfigured states.\r
\r
@param[in] IpSb The IP6 service instance.\r
@param[in, out] IpInstance The IP6 child instance.\r
**/\r
VOID\r
Ip6InitProtocol (\r
- IN IP6_SERVICE *IpSb,\r
- IN OUT IP6_PROTOCOL *IpInstance\r
+ IN IP6_SERVICE *IpSb,\r
+ IN OUT IP6_PROTOCOL *IpInstance\r
)\r
{\r
ASSERT ((IpSb != NULL) && (IpInstance != NULL));\r
IpInstance->GroupList = NULL;\r
CopyMem (&IpInstance->Ip6Proto, &mEfiIp6ProtocolTemplete, sizeof (EFI_IP6_PROTOCOL));\r
\r
- NetMapInit (&IpInstance->RxTokens);\r
- NetMapInit (&IpInstance->TxTokens);\r
+ NetMapInit (&IpInstance->RxTokens);\r
+ NetMapInit (&IpInstance->TxTokens);\r
InitializeListHead (&IpInstance->Received);\r
InitializeListHead (&IpInstance->Delivered);\r
\r
**/\r
EFI_STATUS\r
Ip6ConfigProtocol (\r
- IN OUT IP6_PROTOCOL *IpInstance,\r
- IN EFI_IP6_CONFIG_DATA *Config\r
+ IN OUT IP6_PROTOCOL *IpInstance,\r
+ IN EFI_IP6_CONFIG_DATA *Config\r
)\r
{\r
- IP6_SERVICE *IpSb;\r
- IP6_INTERFACE *IpIf;\r
- EFI_STATUS Status;\r
- EFI_IP6_CONFIG_DATA *Current;\r
- IP6_ADDRESS_INFO *AddressInfo;\r
- BOOLEAN StationZero;\r
- BOOLEAN DestZero;\r
- EFI_IPv6_ADDRESS Source;\r
- BOOLEAN AddrOk;\r
+ IP6_SERVICE *IpSb;\r
+ IP6_INTERFACE *IpIf;\r
+ EFI_STATUS Status;\r
+ EFI_IP6_CONFIG_DATA *Current;\r
+ IP6_ADDRESS_INFO *AddressInfo;\r
+ BOOLEAN StationZero;\r
+ BOOLEAN DestZero;\r
+ EFI_IPv6_ADDRESS Source;\r
+ BOOLEAN AddrOk;\r
\r
IpSb = IpInstance->Service;\r
Current = &IpInstance->ConfigData;\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
-\r
NET_GET_REF (IpIf);\r
IpInstance->Interface = IpIf;\r
InsertTailList (&IpIf->IpInstances, &IpInstance->AddrLink);\r
**/\r
EFI_STATUS\r
Ip6CleanProtocol (\r
- IN OUT IP6_PROTOCOL *IpInstance\r
+ IN OUT IP6_PROTOCOL *IpInstance\r
)\r
{\r
if (EFI_ERROR (Ip6Cancel (IpInstance, NULL))) {\r
// hasn't been called. Just leave it alone.\r
//\r
if (!IsListEmpty (&IpInstance->Delivered)) {\r
- ;\r
}\r
\r
if (IpInstance->Interface != NULL) {\r
\r
if (IpInstance->GroupList != NULL) {\r
FreePool (IpInstance->GroupList);\r
- IpInstance->GroupList = NULL;\r
- IpInstance->GroupCount = 0;\r
+ IpInstance->GroupList = NULL;\r
+ IpInstance->GroupCount = 0;\r
}\r
\r
NetMapClean (&IpInstance->TxTokens);\r
**/\r
EFI_STATUS\r
Ip6ServiceConfigMnp (\r
- IN IP6_SERVICE *IpSb,\r
- IN BOOLEAN Force\r
+ IN IP6_SERVICE *IpSb,\r
+ IN BOOLEAN Force\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *ProtoEntry;\r
- IP6_INTERFACE *IpIf;\r
- IP6_PROTOCOL *IpInstance;\r
- BOOLEAN Reconfig;\r
- BOOLEAN PromiscReceive;\r
- EFI_STATUS Status;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *ProtoEntry;\r
+ IP6_INTERFACE *IpIf;\r
+ IP6_PROTOCOL *IpInstance;\r
+ BOOLEAN Reconfig;\r
+ BOOLEAN PromiscReceive;\r
+ EFI_STATUS Status;\r
\r
Reconfig = FALSE;\r
PromiscReceive = FALSE;\r
// filter also.\r
//\r
NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) {\r
-\r
IpIf = NET_LIST_USER_STRUCT (Entry, IP6_INTERFACE, Link);\r
IpIf->PromiscRecv = FALSE;\r
\r
return EFI_SUCCESS;\r
}\r
\r
- Reconfig = TRUE;\r
+ Reconfig = TRUE;\r
IpSb->MnpConfigData.EnablePromiscuousReceive = PromiscReceive;\r
}\r
\r
@retval EFI_DEVICE_ERROR An unexpected system or network error occurred. The EFI IPv6\r
Protocol driver instance was not opened.\r
@retval EFI_UNSUPPORTED Default protocol specified through\r
- Ip6ConfigData.DefaulProtocol isn't supported.\r
+ Ip6ConfigData.DefaultProtocol isn't supported.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
EfiIp6Configure (\r
- IN EFI_IP6_PROTOCOL *This,\r
- IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL\r
+ IN EFI_IP6_PROTOCOL *This,\r
+ IN EFI_IP6_CONFIG_DATA *Ip6ConfigData OPTIONAL\r
)\r
{\r
- IP6_PROTOCOL *IpInstance;\r
- EFI_IP6_CONFIG_DATA *Current;\r
- EFI_TPL OldTpl;\r
- EFI_STATUS Status;\r
- IP6_SERVICE *IpSb;\r
+ IP6_PROTOCOL *IpInstance;\r
+ EFI_IP6_CONFIG_DATA *Current;\r
+ EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ IP6_SERVICE *IpSb;\r
\r
//\r
// First, validate the parameters\r
IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This);\r
IpSb = IpInstance->Service;\r
\r
- if (IpSb->LinkLocalDadFail) {\r
+ if (IpSb->LinkLocalDadFail && (Ip6ConfigData != NULL)) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
- Status = EFI_INVALID_PARAMETER;\r
+ Status = EFI_INVALID_PARAMETER;\r
\r
//\r
// Validate the configuration first.\r
// Check whether the station address is valid.\r
//\r
if (!Ip6IsValidAddress (IpSb, &Ip6ConfigData->StationAddress, TRUE)) {\r
- goto Exit;\r
+ goto Exit;\r
}\r
+\r
//\r
// Check whether the default protocol is valid.\r
//\r
//\r
Ip6ServiceConfigMnp (IpInstance->Service, FALSE);\r
\r
- //\r
- // Update the variable data.\r
- //\r
- Ip6SetVariableData (IpInstance->Service);\r
-\r
Exit:\r
gBS->RestoreTPL (OldTpl);\r
return Status;\r
IN EFI_IPv6_ADDRESS *GroupAddress OPTIONAL\r
)\r
{\r
- EFI_TPL OldTpl;\r
- EFI_STATUS Status;\r
- IP6_PROTOCOL *IpInstance;\r
- IP6_SERVICE *IpSb;\r
+ EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ IP6_PROTOCOL *IpInstance;\r
+ IP6_SERVICE *IpSb;\r
\r
- if ((This == NULL) || (JoinFlag && GroupAddress == NULL)) {\r
+ if ((This == NULL) || (JoinFlag && (GroupAddress == NULL))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (GroupAddress != NULL && !IP6_IS_MULTICAST (GroupAddress)) {\r
+ if ((GroupAddress != NULL) && !IP6_IS_MULTICAST (GroupAddress)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
if (IpInstance->State != IP6_STATE_CONFIGED) {\r
Status = EFI_NOT_STARTED;\r
the destination IPv6 address arithmetically. The gateway address must be on the same subnet as the\r
configured station address.\r
\r
- The default route is added with Destination and PrefixLegth both set to all zeros. The\r
+ The default route is added with Destination and PrefixLength both set to all zeros. The\r
default route matches all destination IPv6 addresses that do not match any other routes.\r
\r
All EFI IPv6 Protocol instances share a routing table.\r
EFI_STATUS\r
EFIAPI\r
EfiIp6Routes (\r
- IN EFI_IP6_PROTOCOL *This,\r
- IN BOOLEAN DeleteRoute,\r
- IN EFI_IPv6_ADDRESS *Destination OPTIONAL,\r
- IN UINT8 PrefixLength,\r
- IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL\r
+ IN EFI_IP6_PROTOCOL *This,\r
+ IN BOOLEAN DeleteRoute,\r
+ IN EFI_IPv6_ADDRESS *Destination OPTIONAL,\r
+ IN UINT8 PrefixLength,\r
+ IN EFI_IPv6_ADDRESS *GatewayAddress OPTIONAL\r
)\r
{\r
- IP6_PROTOCOL *IpInstance;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
- IP6_SERVICE *IpSb;\r
+ IP6_PROTOCOL *IpInstance;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ IP6_SERVICE *IpSb;\r
\r
- if ((This == NULL) || (PrefixLength >= IP6_PREFIX_NUM)) {\r
+ if ((This == NULL) || (PrefixLength > IP6_PREFIX_MAX)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (!DeleteRoute && (Destination == NULL || GatewayAddress == NULL)) {\r
+ if (!DeleteRoute && ((Destination == NULL) || (GatewayAddress == NULL))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
if (!NetIp6IsUnspecifiedAddr (GatewayAddress) &&\r
!NetIp6IsNetEqual (GatewayAddress, &IpInstance->ConfigData.StationAddress, PrefixLength)\r
- ) {\r
+ )\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
EfiIp6Neighbors (\r
- IN EFI_IP6_PROTOCOL *This,\r
- IN BOOLEAN DeleteFlag,\r
- IN EFI_IPv6_ADDRESS *TargetIp6Address,\r
- IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL,\r
- IN UINT32 Timeout,\r
- IN BOOLEAN Override\r
+ IN EFI_IP6_PROTOCOL *This,\r
+ IN BOOLEAN DeleteFlag,\r
+ IN EFI_IPv6_ADDRESS *TargetIp6Address,\r
+ IN EFI_MAC_ADDRESS *TargetLinkAddress OPTIONAL,\r
+ IN UINT32 Timeout,\r
+ IN BOOLEAN Override\r
)\r
{\r
- EFI_TPL OldTpl;\r
- EFI_STATUS Status;\r
- IP6_PROTOCOL *IpInstance;\r
- IP6_SERVICE *IpSb;\r
+ EFI_TPL OldTpl;\r
+ EFI_STATUS Status;\r
+ IP6_PROTOCOL *IpInstance;\r
+ IP6_SERVICE *IpSb;\r
\r
- if (This == NULL || TargetIp6Address == NULL) {\r
+ if ((This == NULL) || (TargetIp6Address == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
@param[in] Map The container of either user's transmit or receive\r
token.\r
@param[in] Item Current item to check against.\r
- @param[in] Context The Token to check againist.\r
+ @param[in] Context The Token to check against.\r
\r
@retval EFI_ACCESS_DENIED The token or event has already been enqueued in IP\r
@retval EFI_SUCCESS The current item isn't the same token/event as the\r
EFI_STATUS\r
EFIAPI\r
Ip6TokenExist (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
)\r
{\r
EFI_IP6_COMPLETION_TOKEN *Token;\r
EFI_IP6_COMPLETION_TOKEN *TokenInItem;\r
\r
- Token = (EFI_IP6_COMPLETION_TOKEN *) Context;\r
- TokenInItem = (EFI_IP6_COMPLETION_TOKEN *) Item->Key;\r
+ Token = (EFI_IP6_COMPLETION_TOKEN *)Context;\r
+ TokenInItem = (EFI_IP6_COMPLETION_TOKEN *)Item->Key;\r
\r
- if (Token == TokenInItem || Token->Event == TokenInItem->Event) {\r
+ if ((Token == TokenInItem) || (Token->Event == TokenInItem->Event)) {\r
return EFI_ACCESS_DENIED;\r
}\r
\r
**/\r
EFI_STATUS\r
Ip6TxTokenValid (\r
- IN EFI_IP6_COMPLETION_TOKEN *Token\r
+ IN EFI_IP6_COMPLETION_TOKEN *Token\r
)\r
{\r
- EFI_IP6_TRANSMIT_DATA *TxData;\r
- UINT32 Index;\r
- UINT32 DataLength;\r
+ EFI_IP6_TRANSMIT_DATA *TxData;\r
+ UINT32 Index;\r
+ UINT32 DataLength;\r
\r
- if (Token == NULL || Token->Event == NULL) {\r
+ if ((Token == NULL) || (Token->Event == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
TxData = Token->Packet.TxData;\r
\r
- if (TxData == NULL || (TxData->ExtHdrsLength != 0 && TxData->ExtHdrs == NULL)) {\r
+ if ((TxData == NULL) || ((TxData->ExtHdrsLength != 0) && (TxData->ExtHdrs == NULL))) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- if (TxData->FragmentCount == 0 || TxData->DataLength == 0) {\r
+ if ((TxData->FragmentCount == 0) || (TxData->DataLength == 0)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
for (DataLength = 0, Index = 0; Index < TxData->FragmentCount; Index++) {\r
- if (TxData->FragmentTable[Index].FragmentLength == 0 || TxData->FragmentTable[Index].FragmentBuffer == NULL) {\r
+ if ((TxData->FragmentTable[Index].FragmentLength == 0) || (TxData->FragmentTable[Index].FragmentBuffer == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
VOID\r
EFIAPI\r
Ip6FreeTxToken (\r
- IN VOID *Context\r
+ IN VOID *Context\r
)\r
{\r
- IP6_TXTOKEN_WRAP *Wrap;\r
- NET_MAP_ITEM *Item;\r
+ IP6_TXTOKEN_WRAP *Wrap;\r
+ NET_MAP_ITEM *Item;\r
\r
- Wrap = (IP6_TXTOKEN_WRAP *) Context;\r
+ Wrap = (IP6_TXTOKEN_WRAP *)Context;\r
\r
//\r
// Signal IpSecRecycleEvent to inform IPsec free the memory\r
FreePool (Wrap);\r
}\r
\r
-\r
/**\r
The callback function to Ip6Output to update the transmit status.\r
\r
**/\r
VOID\r
Ip6OnPacketSent (\r
- IN NET_BUF *Packet,\r
- IN EFI_STATUS IoStatus,\r
- IN UINT32 Flag,\r
- IN VOID *Context\r
+ IN NET_BUF *Packet,\r
+ IN EFI_STATUS IoStatus,\r
+ IN UINT32 Flag,\r
+ IN VOID *Context\r
)\r
{\r
- IP6_TXTOKEN_WRAP *Wrap;\r
+ IP6_TXTOKEN_WRAP *Wrap;\r
\r
//\r
// This is the transmission request from upper layer,\r
// not the IP6 driver itself.\r
//\r
- Wrap = (IP6_TXTOKEN_WRAP *) Context;\r
+ Wrap = (IP6_TXTOKEN_WRAP *)Context;\r
Wrap->Token->Status = IoStatus;\r
\r
NetbufFree (Wrap->Packet);\r
IN EFI_IP6_COMPLETION_TOKEN *Token\r
)\r
{\r
- IP6_SERVICE *IpSb;\r
- IP6_PROTOCOL *IpInstance;\r
- EFI_IP6_CONFIG_DATA *Config;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
- EFI_IP6_HEADER Head;\r
- EFI_IP6_TRANSMIT_DATA *TxData;\r
- EFI_IP6_OVERRIDE_DATA *Override;\r
- IP6_TXTOKEN_WRAP *Wrap;\r
- UINT8 *ExtHdrs;\r
+ IP6_SERVICE *IpSb;\r
+ IP6_PROTOCOL *IpInstance;\r
+ EFI_IP6_CONFIG_DATA *Config;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ EFI_IP6_HEADER Head;\r
+ EFI_IP6_TRANSMIT_DATA *TxData;\r
+ EFI_IP6_OVERRIDE_DATA *Override;\r
+ IP6_TXTOKEN_WRAP *Wrap;\r
+ UINT8 *ExtHdrs;\r
\r
//\r
// Check input parameters.\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
if (IpInstance->State != IP6_STATE_CONFIGED) {\r
Status = EFI_NOT_STARTED;\r
//\r
// Build the IP header, fill in the information from ConfigData or OverrideData\r
//\r
- ZeroMem (&Head, sizeof(EFI_IP6_HEADER));\r
+ ZeroMem (&Head, sizeof (EFI_IP6_HEADER));\r
TxData = Token->Packet.TxData;\r
IP6_COPY_ADDRESS (&Head.SourceAddress, &Config->StationAddress);\r
IP6_COPY_ADDRESS (&Head.DestinationAddress, &Config->DestinationAddress);\r
}\r
\r
ASSERT (!NetIp6IsUnspecifiedAddr (&Config->StationAddress));\r
-\r
} else {\r
//\r
// StationAddress is unspecified only when ConfigData.Dest is unspecified.\r
Override = TxData->OverrideData;\r
Head.NextHeader = Override->Protocol;\r
Head.HopLimit = Override->HopLimit;\r
- Head.FlowLabelL = HTONS ((UINT16) Override->FlowLabel);\r
- Head.FlowLabelH = (UINT8) ((Override->FlowLabel >> 16) & 0x0F);\r
+ Head.FlowLabelL = HTONS ((UINT16)Override->FlowLabel);\r
+ Head.FlowLabelH = (UINT8)((Override->FlowLabel >> 16) & 0x0F);\r
} else {\r
Head.HopLimit = Config->HopLimit;\r
- Head.FlowLabelL = HTONS ((UINT16) Config->FlowLabel);\r
- Head.FlowLabelH = (UINT8) ((Config->FlowLabel >> 16) & 0x0F);\r
+ Head.FlowLabelL = HTONS ((UINT16)Config->FlowLabel);\r
+ Head.FlowLabelH = (UINT8)((Config->FlowLabel >> 16) & 0x0F);\r
}\r
\r
- Head.PayloadLength = HTONS ((UINT16) (TxData->ExtHdrsLength + TxData->DataLength));\r
+ Head.PayloadLength = HTONS ((UINT16)(TxData->ExtHdrsLength + TxData->DataLength));\r
\r
//\r
// OK, it survives all the validation check. Wrap the token in\r
goto Exit;\r
}\r
\r
- Wrap->IpInstance = IpInstance;\r
- Wrap->Token = Token;\r
- Wrap->Sent = FALSE;\r
- Wrap->Life = IP6_US_TO_SEC (Config->TransmitTimeout);\r
- Wrap->Packet = NetbufFromExt (\r
- (NET_FRAGMENT *) TxData->FragmentTable,\r
- TxData->FragmentCount,\r
- IP6_MAX_HEADLEN,\r
- 0,\r
- Ip6FreeTxToken,\r
- Wrap\r
- );\r
+ Wrap->IpInstance = IpInstance;\r
+ Wrap->Token = Token;\r
+ Wrap->Sent = FALSE;\r
+ Wrap->Life = IP6_US_TO_SEC (Config->TransmitTimeout);\r
+ Wrap->Packet = NetbufFromExt (\r
+ (NET_FRAGMENT *)TxData->FragmentTable,\r
+ TxData->FragmentCount,\r
+ IP6_MAX_HEADLEN,\r
+ 0,\r
+ Ip6FreeTxToken,\r
+ Wrap\r
+ );\r
\r
if (Wrap->Packet == NULL) {\r
FreePool (Wrap);\r
// Allocate a new buffer to store IPv6 extension headers to avoid updating\r
// the original data in EFI_IP6_COMPLETION_TOKEN.\r
//\r
- if (TxData->ExtHdrsLength != 0 && TxData->ExtHdrs != NULL) {\r
- ExtHdrs = (UINT8 *) AllocateCopyPool (TxData->ExtHdrsLength, TxData->ExtHdrs);\r
+ if ((TxData->ExtHdrsLength != 0) && (TxData->ExtHdrs != NULL)) {\r
+ ExtHdrs = (UINT8 *)AllocateCopyPool (TxData->ExtHdrsLength, TxData->ExtHdrs);\r
if (ExtHdrs == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
is signaled.\r
\r
Current Udp implementation creates an IP child for each Udp child.\r
- It initates a asynchronous receive immediately no matter whether\r
+ It initiates a asynchronous receive immediately no matter whether\r
there is no mapping or not. Therefore, disable the returning EFI_NO_MAPPING for now.\r
To enable it, the following check must be performed:\r
\r
IN EFI_IP6_COMPLETION_TOKEN *Token\r
)\r
{\r
- IP6_PROTOCOL *IpInstance;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
- IP6_SERVICE *IpSb;\r
+ IP6_PROTOCOL *IpInstance;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ IP6_SERVICE *IpSb;\r
\r
- if (This == NULL || Token == NULL || Token->Event == NULL) {\r
+ if ((This == NULL) || (Token == NULL) || (Token->Event == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return Status;\r
}\r
\r
-\r
/**\r
Cancel the transmitted but not recycled packet. If a matching\r
token is found, it will call Ip6CancelPacket to cancel the\r
EFI_STATUS\r
EFIAPI\r
Ip6CancelTxTokens (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
)\r
{\r
EFI_IP6_COMPLETION_TOKEN *Token;\r
IP6_TXTOKEN_WRAP *Wrap;\r
\r
- Token = (EFI_IP6_COMPLETION_TOKEN *) Context;\r
+ Token = (EFI_IP6_COMPLETION_TOKEN *)Context;\r
\r
//\r
// Return EFI_SUCCESS to check the next item in the map if\r
return EFI_SUCCESS;\r
}\r
\r
- Wrap = (IP6_TXTOKEN_WRAP *) Item->Value;\r
+ Wrap = (IP6_TXTOKEN_WRAP *)Item->Value;\r
ASSERT (Wrap != NULL);\r
\r
//\r
return EFI_SUCCESS;\r
}\r
\r
-\r
/**\r
Cancel the receive request. This is simple, because\r
it is only enqueued in our local receive map.\r
EFI_STATUS\r
EFIAPI\r
Ip6CancelRxTokens (\r
- IN NET_MAP *Map,\r
- IN NET_MAP_ITEM *Item,\r
- IN VOID *Context\r
+ IN NET_MAP *Map,\r
+ IN NET_MAP_ITEM *Item,\r
+ IN VOID *Context\r
)\r
{\r
EFI_IP6_COMPLETION_TOKEN *Token;\r
EFI_IP6_COMPLETION_TOKEN *This;\r
\r
- Token = (EFI_IP6_COMPLETION_TOKEN *) Context;\r
+ Token = (EFI_IP6_COMPLETION_TOKEN *)Context;\r
This = Item->Key;\r
\r
if ((Token != NULL) && (Token != This)) {\r
**/\r
EFI_STATUS\r
Ip6Cancel (\r
- IN IP6_PROTOCOL *IpInstance,\r
- IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL\r
+ IN IP6_PROTOCOL *IpInstance,\r
+ IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// First check the transmitted packet. Ip6CancelTxTokens returns\r
// all of them are cancelled.\r
//\r
if (!NetMapIsEmpty (&IpInstance->TxTokens) || !NetMapIsEmpty (&IpInstance->RxTokens)) {\r
-\r
return EFI_DEVICE_ERROR;\r
}\r
\r
IN EFI_IP6_COMPLETION_TOKEN *Token OPTIONAL\r
)\r
{\r
- IP6_PROTOCOL *IpInstance;\r
- IP6_SERVICE *IpSb;\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
+ IP6_PROTOCOL *IpInstance;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
IpInstance = IP6_INSTANCE_FROM_PROTOCOL (This);\r
- IpSb = IpInstance->Service;\r
-\r
- if (IpSb->LinkLocalDadFail) {\r
- return EFI_DEVICE_ERROR;\r
- }\r
\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
EFI_STATUS\r
EFIAPI\r
EfiIp6Poll (\r
- IN EFI_IP6_PROTOCOL *This\r
+ IN EFI_IP6_PROTOCOL *This\r
)\r
{\r
IP6_PROTOCOL *IpInstance;\r
// the packet polled up.\r
//\r
return Mnp->Poll (Mnp);\r
-\r
}\r
-\r