/** @file\r
The internal functions and routines to transmit the IP6 packet.\r
\r
- Copyright (c) 2009 - 2010, 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
- 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
-UINT32 mIp6Id;\r
+UINT32 mIp6Id;\r
\r
/**\r
Output all the available source addresses to a list entry head SourceList. The\r
\r
@param[in] IpSb Points to an IP6 service binding instance.\r
@param[out] SourceList The list entry head of all source addresses.\r
- It is the caller's responsiblity to free the\r
+ It is the caller's responsibility to free the\r
resources.\r
@param[out] SourceCount The number of source addresses.\r
\r
**/\r
EFI_STATUS\r
Ip6CandidateSource (\r
- IN IP6_SERVICE *IpSb,\r
- OUT LIST_ENTRY *SourceList,\r
- OUT UINT32 *SourceCount\r
+ IN IP6_SERVICE *IpSb,\r
+ OUT LIST_ENTRY *SourceList,\r
+ OUT UINT32 *SourceCount\r
)\r
{\r
- IP6_INTERFACE *IpIf;\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Entry2;\r
- IP6_ADDRESS_INFO *AddrInfo;\r
- IP6_ADDRESS_INFO *Copy;\r
+ IP6_INTERFACE *IpIf;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Entry2;\r
+ IP6_ADDRESS_INFO *AddrInfo;\r
+ IP6_ADDRESS_INFO *Copy;\r
\r
*SourceCount = 0;\r
\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- Copy->Signature = IP6_ADDR_INFO_SIGNATURE;\r
+ Copy->Signature = IP6_ADDR_INFO_SIGNATURE;\r
IP6_COPY_ADDRESS (&Copy->Address, &IpSb->LinkLocalAddr);\r
Copy->IsAnycast = FALSE;\r
Copy->PrefixLength = IP6_LINK_LOCAL_PREFIX_LENGTH;\r
- Copy->ValidLifetime = (UINT32) IP6_INFINIT_LIFETIME;\r
- Copy->PreferredLifetime = (UINT32) IP6_INFINIT_LIFETIME;\r
+ Copy->ValidLifetime = (UINT32)IP6_INFINIT_LIFETIME;\r
+ Copy->PreferredLifetime = (UINT32)IP6_INFINIT_LIFETIME;\r
\r
InsertTailList (SourceList, &Copy->Link);\r
(*SourceCount)++;\r
}\r
\r
/**\r
- Caculate how many bits are the same between two IPv6 addresses.\r
+ Calculate how many bits are the same between two IPv6 addresses.\r
\r
@param[in] AddressA Points to an IPv6 address.\r
@param[in] AddressB Points to another IPv6 address.\r
**/\r
UINT8\r
Ip6CommonPrefixLen (\r
- IN EFI_IPv6_ADDRESS *AddressA,\r
- IN EFI_IPv6_ADDRESS *AddressB\r
+ IN EFI_IPv6_ADDRESS *AddressA,\r
+ IN EFI_IPv6_ADDRESS *AddressB\r
)\r
{\r
- UINT8 Count;\r
- UINT8 Index;\r
- UINT8 ByteA;\r
- UINT8 ByteB;\r
- UINT8 NumBits;\r
+ UINT8 Count;\r
+ UINT8 Index;\r
+ UINT8 ByteA;\r
+ UINT8 ByteB;\r
+ UINT8 NumBits;\r
\r
Count = 0;\r
Index = 0;\r
// Check how many bits are common between the two bytes.\r
//\r
NumBits = 8;\r
- ByteA = (UINT8) (ByteA ^ ByteB);\r
+ ByteA = (UINT8)(ByteA ^ ByteB);\r
\r
while (ByteA != 0) {\r
NumBits--;\r
- ByteA = (UINT8) (ByteA >> 1);\r
+ ByteA = (UINT8)(ByteA >> 1);\r
}\r
\r
- return (UINT8) (Count + NumBits);\r
+ return (UINT8)(Count + NumBits);\r
}\r
\r
return Count;\r
**/\r
EFI_STATUS\r
Ip6SelectSourceAddress (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IPv6_ADDRESS *Destination,\r
- OUT EFI_IPv6_ADDRESS *Source\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IPv6_ADDRESS *Destination,\r
+ OUT EFI_IPv6_ADDRESS *Source\r
)\r
{\r
- EFI_STATUS Status;\r
- LIST_ENTRY SourceList;\r
- UINT32 SourceCount;\r
- UINT8 ScopeD;\r
- LIST_ENTRY *Entry;\r
- IP6_ADDRESS_INFO *AddrInfo;\r
- IP6_PREFIX_LIST_ENTRY *Prefix;\r
- UINT8 LastCommonLength;\r
- UINT8 CurrentCommonLength;\r
- EFI_IPv6_ADDRESS *TmpAddress;\r
+ EFI_STATUS Status;\r
+ LIST_ENTRY SourceList;\r
+ UINT32 SourceCount;\r
+ UINT8 ScopeD;\r
+ LIST_ENTRY *Entry;\r
+ IP6_ADDRESS_INFO *AddrInfo;\r
+ IP6_PREFIX_LIST_ENTRY *Prefix;\r
+ UINT8 LastCommonLength;\r
+ UINT8 CurrentCommonLength;\r
+ EFI_IPv6_ADDRESS *TmpAddress;\r
\r
NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE);\r
\r
// Rule 2: Prefer appropriate scope.\r
//\r
if (IP6_IS_MULTICAST (Destination)) {\r
- ScopeD = (UINT8) (Destination->Addr[1] >> 4);\r
+ ScopeD = (UINT8)(Destination->Addr[1] >> 4);\r
} else if (NetIp6IsLinkLocalAddr (Destination)) {\r
ScopeD = 0x2;\r
} else {\r
**/\r
IP6_INTERFACE *\r
Ip6SelectInterface (\r
- IN IP6_SERVICE *IpSb,\r
- IN EFI_IPv6_ADDRESS *Destination,\r
- IN OUT EFI_IPv6_ADDRESS *Source\r
+ IN IP6_SERVICE *IpSb,\r
+ IN EFI_IPv6_ADDRESS *Destination,\r
+ IN OUT EFI_IPv6_ADDRESS *Source\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_IPv6_ADDRESS SelectedSource;\r
- IP6_INTERFACE *IpIf;\r
- BOOLEAN Exist;\r
+ EFI_STATUS Status;\r
+ EFI_IPv6_ADDRESS SelectedSource;\r
+ IP6_INTERFACE *IpIf;\r
+ BOOLEAN Exist;\r
\r
NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE);\r
ASSERT (Destination != NULL && Source != NULL);\r
**/\r
VOID\r
Ip6SysPacketSent (\r
- NET_BUF *Packet,\r
- EFI_STATUS IoStatus,\r
- UINT32 LinkFlag,\r
- VOID *Context\r
+ NET_BUF *Packet,\r
+ EFI_STATUS IoStatus,\r
+ UINT32 LinkFlag,\r
+ VOID *Context\r
)\r
{\r
NetbufFree (Packet);\r
@param[in] LastHeader The pointer of next header of last extension header.\r
@param[in] HeadLen The length of the unfragmented part of the IP6 header.\r
\r
- @retval EFI_BAD_BUFFER_SIZE There is no enought room in the head space of\r
+ @retval EFI_BAD_BUFFER_SIZE There is no enough room in the head space of\r
Packet.\r
@retval EFI_SUCCESS The operation performed successfully.\r
\r
**/\r
EFI_STATUS\r
Ip6PrependHead (\r
- IN IP6_SERVICE *IpSb,\r
- IN NET_BUF *Packet,\r
- IN EFI_IP6_HEADER *Head,\r
- IN UINT16 FragmentOffset,\r
- IN UINT8 *ExtHdrs,\r
- IN UINT32 ExtHdrsLen,\r
- IN UINT8 LastHeader,\r
- IN UINT32 HeadLen\r
+ IN IP6_SERVICE *IpSb,\r
+ IN NET_BUF *Packet,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN UINT16 FragmentOffset,\r
+ IN UINT8 *ExtHdrs,\r
+ IN UINT32 ExtHdrsLen,\r
+ IN UINT8 LastHeader,\r
+ IN UINT32 HeadLen\r
)\r
{\r
- UINT32 Len;\r
- UINT32 UnFragExtHdrsLen;\r
- EFI_IP6_HEADER *PacketHead;\r
- UINT8 *UpdatedExtHdrs;\r
- EFI_STATUS Status;\r
- UINT8 NextHeader;\r
+ UINT32 Len;\r
+ UINT32 UnFragExtHdrsLen;\r
+ EFI_IP6_HEADER *PacketHead;\r
+ UINT8 *UpdatedExtHdrs;\r
+ EFI_STATUS Status;\r
+ UINT8 NextHeader;\r
+\r
+ UpdatedExtHdrs = NULL;\r
\r
//\r
// HeadLen is the length of the fixed part of the sequences of fragments, i.e.\r
// the unfragment part.\r
//\r
- PacketHead = (EFI_IP6_HEADER *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
+ PacketHead = (EFI_IP6_HEADER *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
if (PacketHead == NULL) {\r
return EFI_BAD_BUFFER_SIZE;\r
}\r
// Set the head up, convert the host byte order to network byte order\r
//\r
CopyMem (PacketHead, Head, sizeof (EFI_IP6_HEADER));\r
- PacketHead->PayloadLength = HTONS ((UINT16) (Packet->TotalSize - sizeof (EFI_IP6_HEADER)));\r
+ PacketHead->PayloadLength = HTONS ((UINT16)(Packet->TotalSize - sizeof (EFI_IP6_HEADER)));\r
Packet->Ip.Ip6 = PacketHead;\r
\r
Len = HeadLen - sizeof (EFI_IP6_HEADER);\r
}\r
\r
CopyMem (\r
- (UINT8 *) (PacketHead + 1),\r
+ (UINT8 *)(PacketHead + 1),\r
UpdatedExtHdrs,\r
UnFragExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER)\r
);\r
**/\r
EFI_STATUS\r
Ip6Output (\r
- IN IP6_SERVICE *IpSb,\r
- IN IP6_INTERFACE *Interface OPTIONAL,\r
- IN IP6_PROTOCOL *IpInstance OPTIONAL,\r
- IN NET_BUF *Packet,\r
- IN EFI_IP6_HEADER *Head,\r
- IN UINT8 *ExtHdrs,\r
- IN UINT32 ExtHdrsLen,\r
- IN IP6_FRAME_CALLBACK Callback,\r
- IN VOID *Context\r
+ IN IP6_SERVICE *IpSb,\r
+ IN IP6_INTERFACE *Interface OPTIONAL,\r
+ IN IP6_PROTOCOL *IpInstance OPTIONAL,\r
+ IN NET_BUF *Packet,\r
+ IN EFI_IP6_HEADER *Head,\r
+ IN UINT8 *ExtHdrs,\r
+ IN UINT32 ExtHdrsLen,\r
+ IN IP6_FRAME_CALLBACK Callback,\r
+ IN VOID *Context\r
)\r
{\r
- IP6_INTERFACE *IpIf;\r
- EFI_IPv6_ADDRESS NextHop;\r
- IP6_NEIGHBOR_ENTRY *NeighborCache;\r
- IP6_ROUTE_CACHE_ENTRY *RouteCache;\r
- EFI_STATUS Status;\r
- UINT32 Mtu;\r
- UINT32 HeadLen;\r
- UINT16 FragmentOffset;\r
- UINT8 *LastHeader;\r
- UINT32 UnFragmentLen;\r
- UINT32 UnFragmentHdrsLen;\r
- UINT32 FragmentHdrsLen;\r
- UINT16 *Checksum;\r
- UINT16 PacketChecksum;\r
- UINT16 PseudoChecksum;\r
- UINT32 Index;\r
- UINT32 PacketLen;\r
- UINT32 RealExtLen;\r
- UINT32 Offset;\r
- NET_BUF *TmpPacket;\r
- NET_BUF *Fragment;\r
- UINT32 Num;\r
- UINT8 *Buf;\r
- EFI_IP6_HEADER *PacketHead;\r
- IP6_ICMP_HEAD *IcmpHead;\r
- IP6_TXTOKEN_WRAP *Wrap;\r
- IP6_ROUTE_ENTRY *RouteEntry;\r
- UINT8 *UpdatedExtHdrs;\r
- UINT8 NextHeader;\r
- UINT8 LastHeaderBackup;\r
- BOOLEAN FragmentHeadInserted;\r
- UINT8 *ExtHdrsBackup;\r
- UINT8 NextHeaderBackup;\r
- EFI_IPv6_ADDRESS Source;\r
- EFI_IPv6_ADDRESS Destination;\r
+ IP6_INTERFACE *IpIf;\r
+ EFI_IPv6_ADDRESS NextHop;\r
+ IP6_NEIGHBOR_ENTRY *NeighborCache;\r
+ IP6_ROUTE_CACHE_ENTRY *RouteCache;\r
+ EFI_STATUS Status;\r
+ UINT32 Mtu;\r
+ UINT32 HeadLen;\r
+ UINT16 FragmentOffset;\r
+ UINT8 *LastHeader;\r
+ UINT32 UnFragmentLen;\r
+ UINT32 UnFragmentHdrsLen;\r
+ UINT32 FragmentHdrsLen;\r
+ UINT16 *Checksum;\r
+ UINT16 PacketChecksum;\r
+ UINT16 PseudoChecksum;\r
+ UINT32 Index;\r
+ UINT32 PacketLen;\r
+ UINT32 RealExtLen;\r
+ UINT32 Offset;\r
+ NET_BUF *TmpPacket;\r
+ NET_BUF *Fragment;\r
+ UINT32 Num;\r
+ UINT8 *Buf;\r
+ EFI_IP6_HEADER *PacketHead;\r
+ IP6_ICMP_HEAD *IcmpHead;\r
+ IP6_TXTOKEN_WRAP *Wrap;\r
+ IP6_ROUTE_ENTRY *RouteEntry;\r
+ UINT8 *UpdatedExtHdrs;\r
+ UINT8 NextHeader;\r
+ UINT8 LastHeaderBackup;\r
+ BOOLEAN FragmentHeadInserted;\r
+ UINT8 *ExtHdrsBackup;\r
+ UINT8 NextHeaderBackup;\r
+ EFI_IPv6_ADDRESS Source;\r
+ EFI_IPv6_ADDRESS Destination;\r
\r
NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE);\r
\r
// IpInstance->Interface is NULL when IpInstance is configured with both stationaddress\r
// and destinationaddress is unspecified.\r
//\r
- if (IpInstance == NULL || IpInstance->Interface == NULL) {\r
+ if ((IpInstance == NULL) || (IpInstance->Interface == NULL)) {\r
IpIf = Ip6SelectInterface (IpSb, &Head->DestinationAddress, &Head->SourceAddress);\r
if (IpInstance != NULL) {\r
IpInstance->Interface = IpIf;\r
Head->TrafficClassL = 0;\r
Head->TrafficClassH = 0;\r
\r
- Checksum = NULL;\r
- NextHeader = *LastHeader;\r
+ Checksum = NULL;\r
+ NextHeader = *LastHeader;\r
\r
switch (NextHeader) {\r
- case EFI_IP_PROTO_UDP:\r
- Packet->Udp = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
- ASSERT (Packet->Udp != NULL);\r
- if (Packet->Udp->Checksum == 0) {\r
- Checksum = &Packet->Udp->Checksum;\r
- }\r
- break;\r
+ case EFI_IP_PROTO_UDP:\r
+ Packet->Udp = (EFI_UDP_HEADER *)NetbufGetByte (Packet, 0, NULL);\r
+ ASSERT (Packet->Udp != NULL);\r
+ if (Packet->Udp->Checksum == 0) {\r
+ Checksum = &Packet->Udp->Checksum;\r
+ }\r
\r
- case EFI_IP_PROTO_TCP:\r
- Packet->Tcp = (TCP_HEAD *) NetbufGetByte (Packet, 0, NULL);\r
- ASSERT (Packet->Tcp != NULL);\r
- if (Packet->Tcp->Checksum == 0) {\r
- Checksum = &Packet->Tcp->Checksum;\r
- }\r
- break;\r
+ break;\r
\r
- case IP6_ICMP:\r
- //\r
- // Don't send ICMP packet to an IPv6 anycast address.\r
- //\r
- if (Ip6IsAnycast (IpSb, &Head->DestinationAddress)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
+ case EFI_IP_PROTO_TCP:\r
+ Packet->Tcp = (TCP_HEAD *)NetbufGetByte (Packet, 0, NULL);\r
+ ASSERT (Packet->Tcp != NULL);\r
+ if (Packet->Tcp->Checksum == 0) {\r
+ Checksum = &Packet->Tcp->Checksum;\r
+ }\r
\r
- IcmpHead = (IP6_ICMP_HEAD *) NetbufGetByte (Packet, 0, NULL);\r
- ASSERT (IcmpHead != NULL);\r
- if (IcmpHead->Checksum == 0) {\r
- Checksum = &IcmpHead->Checksum;\r
- }\r
- break;\r
+ break;\r
+\r
+ case IP6_ICMP:\r
+ //\r
+ // Don't send ICMP packet to an IPv6 anycast address.\r
+ //\r
+ if (Ip6IsAnycast (IpSb, &Head->DestinationAddress)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ IcmpHead = (IP6_ICMP_HEAD *)NetbufGetByte (Packet, 0, NULL);\r
+ ASSERT (IcmpHead != NULL);\r
+ if (IcmpHead->Checksum == 0) {\r
+ Checksum = &IcmpHead->Checksum;\r
+ }\r
+\r
+ break;\r
\r
- default:\r
- break;\r
+ default:\r
+ break;\r
}\r
\r
if (Checksum != NULL) {\r
//\r
PacketChecksum = NetbufChecksum (Packet);\r
PseudoChecksum = NetIp6PseudoHeadChecksum (\r
- &Head->SourceAddress,\r
- &Head->DestinationAddress,\r
- NextHeader,\r
- Packet->TotalSize\r
- );\r
+ &Head->SourceAddress,\r
+ &Head->DestinationAddress,\r
+ NextHeader,\r
+ Packet->TotalSize\r
+ );\r
*Checksum = (UINT16) ~NetAddChecksum (PacketChecksum, PseudoChecksum);\r
}\r
\r
Context\r
);\r
\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
&RealExtLen,\r
&UnFragmentHdrsLen,\r
NULL\r
- )) {\r
+ ))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
// For unicast packets, use a combination of the Destination Cache, the Prefix List\r
// and the Default Router List to determine the IP address of the appropriate next hop.\r
//\r
- RouteCache = Ip6Route (IpSb, &Head->DestinationAddress, &Head->SourceAddress);\r
- if (RouteCache == NULL) {\r
- return EFI_NOT_FOUND;\r
- }\r
\r
- IP6_COPY_ADDRESS (&NextHop, &RouteCache->NextHop);\r
- Ip6FreeRouteCacheEntry (RouteCache);\r
+ NeighborCache = Ip6FindNeighborEntry (IpSb, &Head->DestinationAddress);\r
+ if (NeighborCache != NULL) {\r
+ //\r
+ // Hit Neighbor Cache.\r
+ //\r
+ IP6_COPY_ADDRESS (&NextHop, &Head->DestinationAddress);\r
+ } else {\r
+ //\r
+ // Not in Neighbor Cache, check Router cache\r
+ //\r
+ RouteCache = Ip6Route (IpSb, &Head->DestinationAddress, &Head->SourceAddress);\r
+ if (RouteCache == NULL) {\r
+ return EFI_NOT_FOUND;\r
+ }\r
+\r
+ IP6_COPY_ADDRESS (&NextHop, &RouteCache->NextHop);\r
+ Ip6FreeRouteCacheEntry (RouteCache);\r
+ }\r
}\r
\r
//\r
}\r
\r
//\r
- // Send out multicast neighbor solicitation for address resolution immediatly.\r
+ // Send out multicast neighbor solicitation for address resolution immediately.\r
//\r
Ip6CreateSNMulticastAddr (&NeighborCache->Neighbor, &Destination);\r
Status = Ip6SelectSourceAddress (IpSb, &NeighborCache->Neighbor, &Source);\r
);\r
if (RouteEntry != NULL) {\r
if ((RouteEntry->Flag & IP6_PACKET_TOO_BIG) == IP6_PACKET_TOO_BIG) {\r
-\r
//\r
// FragmentHead is inserted after Hop-by-Hop Options header, Destination\r
// Options header (first occur), Routing header, and before Fragment header,\r
Head->NextHeader = IP6_FRAGMENT;\r
}\r
\r
- ExtHdrsBackup = ExtHdrs;\r
- ExtHdrs = UpdatedExtHdrs;\r
- ExtHdrsLen = ExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER);\r
- RealExtLen = RealExtLen + sizeof (IP6_FRAGMENT_HEADER);\r
+ ExtHdrsBackup = ExtHdrs;\r
+ ExtHdrs = UpdatedExtHdrs;\r
+ ExtHdrsLen = ExtHdrsLen + sizeof (IP6_FRAGMENT_HEADER);\r
+ RealExtLen = RealExtLen + sizeof (IP6_FRAGMENT_HEADER);\r
\r
mIp6Id++;\r
\r
//\r
// OK, selected the source and route, fragment the packet then send\r
// them. Tag each fragment other than the first one as spawn from it.\r
- // Each extension header is an integar multiple of 8 octets long, in\r
+ // Each extension header is an integer multiple of 8 octets long, in\r
// order to retain 8-octet alignment for subsequent headers.\r
//\r
Mtu = IpSb->MaxPacketSize + sizeof (EFI_IP6_HEADER);\r
\r
for (Index = 0, Offset = 0, PacketLen = Mtu; Index < Num; Index++) {\r
//\r
- // Get fragment from the Packet, append UnFragnmentLen spare buffer\r
+ // Get fragment from the Packet, append UnFragmentLen spare buffer\r
// before the fragmented data, the corresponding data is filled in later.\r
//\r
Fragment = NetbufGetFragment (Packet, Offset, PacketLen, UnFragmentLen);\r
goto Error;\r
}\r
\r
- FragmentOffset = (UINT16) ((UINT16) Offset | 0x1);\r
- if (Index == Num - 1){\r
+ FragmentOffset = (UINT16)((UINT16)Offset | 0x1);\r
+ if (Index == Num - 1) {\r
//\r
// The last fragment, clear the M flag.\r
//\r
// The last fragment of upper layer packet, update the IP6 token status.\r
//\r
if ((Index == Num -1) && (Context != NULL)) {\r
- Wrap = (IP6_TXTOKEN_WRAP *) Context;\r
+ Wrap = (IP6_TXTOKEN_WRAP *)Context;\r
Wrap->Token->Status = Status;\r
}\r
\r
- Offset += PacketLen;\r
+ Offset += PacketLen;\r
PacketLen = Packet->TotalSize - Offset;\r
if (PacketLen > Mtu) {\r
PacketLen = Mtu;\r
//\r
// Need not fragment the packet, send it in one frame.\r
//\r
- PacketHead = (EFI_IP6_HEADER *) NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
+ PacketHead = (EFI_IP6_HEADER *)NetbufAllocSpace (Packet, HeadLen, NET_BUF_HEAD);\r
if (PacketHead == NULL) {\r
Status = EFI_BAD_BUFFER_SIZE;\r
goto Error;\r
Packet->Ip.Ip6 = PacketHead;\r
\r
if (ExtHdrs != NULL) {\r
- Buf = (UINT8 *) (PacketHead + 1);\r
+ Buf = (UINT8 *)(PacketHead + 1);\r
CopyMem (Buf, ExtHdrs, ExtHdrsLen);\r
}\r
\r
//\r
// A Fragment Header is inserted to the packet, update the payload length.\r
//\r
- PacketHead->PayloadLength = (UINT16) (NTOHS (PacketHead->PayloadLength) +\r
- sizeof (IP6_FRAGMENT_HEADER));\r
+ PacketHead->PayloadLength = (UINT16)(NTOHS (PacketHead->PayloadLength) +\r
+ sizeof (IP6_FRAGMENT_HEADER));\r
PacketHead->PayloadLength = HTONS (PacketHead->PayloadLength);\r
FreePool (UpdatedExtHdrs);\r
}\r
if (UpdatedExtHdrs != NULL) {\r
FreePool (UpdatedExtHdrs);\r
}\r
+\r
Ip6CancelPacket (IpIf, Packet, Status);\r
return Status;\r
}\r
**/\r
BOOLEAN\r
Ip6CancelPacketFragments (\r
- IN IP6_LINK_TX_TOKEN *Frame,\r
- IN VOID *Context\r
+ IN IP6_LINK_TX_TOKEN *Frame,\r
+ IN VOID *Context\r
)\r
{\r
- if ((Frame->Packet == (NET_BUF *) Context) || (Frame->Context == Context)) {\r
+ if ((Frame->Packet == (NET_BUF *)Context) || (Frame->Context == Context)) {\r
return TRUE;\r
}\r
\r
**/\r
VOID\r
Ip6CancelFrames (\r
- IN IP6_INTERFACE *Interface,\r
- IN EFI_STATUS IoStatus,\r
- IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
- IN VOID *Context OPTIONAL\r
+ IN IP6_INTERFACE *Interface,\r
+ IN EFI_STATUS IoStatus,\r
+ IN IP6_FRAME_TO_CANCEL FrameToCancel OPTIONAL,\r
+ IN VOID *Context OPTIONAL\r
)\r
{\r
- LIST_ENTRY *Entry;\r
- LIST_ENTRY *Next;\r
- IP6_LINK_TX_TOKEN *Token;\r
- IP6_SERVICE *IpSb;\r
- IP6_NEIGHBOR_ENTRY *ArpQue;\r
- EFI_STATUS Status;\r
+ LIST_ENTRY *Entry;\r
+ LIST_ENTRY *Next;\r
+ IP6_LINK_TX_TOKEN *Token;\r
+ IP6_SERVICE *IpSb;\r
+ IP6_NEIGHBOR_ENTRY *ArpQue;\r
+ EFI_STATUS Status;\r
\r
IpSb = Interface->Service;\r
NET_CHECK_SIGNATURE (IpSb, IP6_SERVICE_SIGNATURE);\r
**/\r
VOID\r
Ip6CancelPacket (\r
- IN IP6_INTERFACE *IpIf,\r
- IN NET_BUF *Packet,\r
- IN EFI_STATUS IoStatus\r
+ IN IP6_INTERFACE *IpIf,\r
+ IN NET_BUF *Packet,\r
+ IN EFI_STATUS IoStatus\r
)\r
{\r
Ip6CancelFrames (IpIf, IoStatus, Ip6CancelPacketFragments, Packet);\r
}\r
-\r