/** @file\r
Contains all EFI_UDP6_PROTOCOL interfaces.\r
\r
- Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2009 - 2018, 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
\r
@retval EFI_SUCCESS The configuration settings were set, changed, or\r
reset successfully.\r
- @retval EFI_NO_MAPPING When the UdpConifgData.UseAnyStationAddress is set\r
+ @retval EFI_NO_MAPPING When the UdpConfigData.UseAnyStationAddress is set\r
to true and there is no address available for the IP6\r
driver to bind a source address to this instance.\r
@retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:\r
//\r
// Cancel all the user tokens.\r
//\r
- Status = Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL);\r
+ Instance->Udp6Proto.Cancel (&Instance->Udp6Proto, NULL);\r
\r
//\r
// Remove the buffered RxData for this instance.\r
ASSERT (IsListEmpty (&Instance->DeliveredDgramQue));\r
}\r
\r
- Status = Udp6SetVariableData (Instance->Udp6Service);\r
-\r
ON_EXIT:\r
\r
gBS->RestoreTPL (OldTpl);\r
\r
Instance = UDP6_INSTANCE_DATA_FROM_THIS (This);\r
if (!Instance->Configured) {\r
+ if (McastIp != NULL) {\r
+ FreePool (McastIp);\r
+ }\r
return EFI_NOT_STARTED;\r
}\r
\r
// Keep a local copy of the configured multicast IPs because IpIo receives\r
// datagrams from the 0 station address IP instance and then UDP delivers to\r
// the matched instance. This copy of multicast IPs is used to avoid receive\r
- // the mutlicast datagrams destinated to multicast IPs the other instances configured.\r
+ // the multicast datagrams destinated to multicast IPs the other instances configured.\r
//\r
if (JoinFlag) {\r
\r
Status = NetMapInsertTail (&Instance->McastIps, (VOID *) McastIp, NULL);\r
} else {\r
\r
- NetMapIterate (&Instance->McastIps, Udp6LeaveGroup, MulticastAddress);\r
+ Status = NetMapIterate (&Instance->McastIps, Udp6LeaveGroup, MulticastAddress);\r
+ if ((MulticastAddress != NULL) && (Status == EFI_ABORTED)) {\r
+ Status = EFI_SUCCESS;\r
+ }\r
}\r
\r
ON_EXIT:\r
One or more of the\r
Token.Packet.TxData.FragmentTable[].FragmentBuffer\r
fields is NULL. One or more of the\r
- Token.Packet.TxData.UdpSessionData.DestinationAddres\r
+ Token.Packet.TxData.UdpSessionData.DestinationAddress\r
are not valid unicast IPv6\r
addresses if the UdpSessionData is not NULL.\r
Token.Packet.TxData.UdpSessionData.\r
DestinationAddress is NULL\r
Token.Packet.TxData.UdpSessionData.\r
- DestinatioPort\r
+ DestinationPort\r
is zero.\r
Token.Packet.TxData.UdpSessionData is NULL and this\r
instance's UdpConfigData.RemoteAddress is unspecified.\r
\r
Udp6Header = (EFI_UDP_HEADER *) NetbufAllocSpace (Packet, UDP6_HEADER_SIZE, TRUE);\r
ASSERT (Udp6Header != NULL);\r
+ if (Udp6Header == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto ON_EXIT;\r
+ }\r
+\r
ConfigData = &Instance->ConfigData;\r
\r
//\r
//\r
// If the calculated checksum is 0, fill the Checksum field with all ones.\r
//\r
- Udp6Header->Checksum = 0XFFFF;\r
+ Udp6Header->Checksum = 0xffff;\r
}\r
} else {\r
//\r
- // Set the checksum is zero if the ConfigData->StationAddress is unspcified\r
+ // Set the checksum is zero if the ConfigData->StationAddress is unspecified\r
// and the Ipv6 will fill the correct value of this checksum.\r
//\r
Udp6Header->Checksum = 0;\r
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
//\r
- // Cancle the tokens specified by Token for this instance.\r
+ // Cancel the tokens specified by Token for this instance.\r
//\r
Status = Udp6InstanceCancelToken (Instance, Token);\r
\r