/** @file\r
The implementation of a dispatch routine for processing TCP requests.\r
\r
- Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>\r
+ (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<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
AccessPoint->UseDefaultAddress = Tcb->UseDefaultAddr;\r
\r
- CopyMem (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ IP4_COPY_ADDRESS (&AccessPoint->StationAddress, &Tcb->LocalEnd.Ip);\r
\r
- AccessPoint->SubnetMask = Tcb->SubnetMask;\r
+ IP4_COPY_ADDRESS (&AccessPoint->SubnetMask, &Tcb->SubnetMask);\r
AccessPoint->StationPort = NTOHS (Tcb->LocalEnd.Port);\r
\r
- CopyMem (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ IP4_COPY_ADDRESS (&AccessPoint->RemoteAddress, &Tcb->RemoteEnd.Ip);\r
\r
AccessPoint->RemotePort = NTOHS (Tcb->RemoteEnd.Port);\r
AccessPoint->ActiveFlag = (BOOLEAN) (Tcb->State != TCP_LISTEN);\r
UINT16 *RandomPort;\r
\r
if (IpVersion == IP_VERSION_4) {\r
- CopyMem (&Local, &TcpAp->Tcp4Ap.StationAddress, sizeof (EFI_IPv4_ADDRESS));\r
+ IP4_COPY_ADDRESS (&Local, &TcpAp->Tcp4Ap.StationAddress);\r
Port = &TcpAp->Tcp4Ap.StationPort;\r
RandomPort = &mTcp4RandomPort;\r
} else {\r
)\r
{\r
SOCKET *Sock;\r
- TCP_PROTO_DATA *TcpProto;\r
\r
IpIoConfigIp (Tcb->IpInfo, NULL);\r
\r
Sock = Tcb->Sk;\r
- TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved;\r
\r
if (SOCK_IS_CONFIGURED (Sock)) {\r
RemoveEntryList (&Tcb->List);\r
} else {\r
IpProtocolGuid = &gEfiIp6ProtocolGuid;\r
}\r
- \r
+\r
Tcb = AllocateZeroPool (sizeof (TCP_CB));\r
\r
if (Tcb == NULL) {\r
IpIoRemoveIp (IpIo, Tcb->IpInfo);\r
return Status;\r
}\r
- \r
+\r
InitializeListHead (&Tcb->List);\r
InitializeListHead (&Tcb->SndQue);\r
InitializeListHead (&Tcb->RcvQue);\r
{\r
TCP_PROTO_DATA *ProtoData;\r
TCP_CB *Tcb;\r
- EFI_GUID *IpProtocolGuid;\r
\r
- if (Sk->IpVersion == IP_VERSION_4) {\r
- IpProtocolGuid = &gEfiIp4ProtocolGuid;\r
- } else {\r
- IpProtocolGuid = &gEfiIp6ProtocolGuid;\r
- }\r
- \r
ProtoData = (TCP_PROTO_DATA *) Sk->ProtoReserved;\r
Tcb = ProtoData->TcpPcb;\r
\r
\r
TcpFlushPcb (Tcb);\r
\r
- //\r
- // Close the IP protocol.\r
- //\r
- gBS->CloseProtocol (\r
- Tcb->IpInfo->ChildHandle,\r
- IpProtocolGuid,\r
- ProtoData->TcpService->IpIo->Image,\r
- Sk->SockHandle\r
- );\r
- \r
IpIoRemoveIp (ProtoData->TcpService->IpIo, Tcb->IpInfo);\r
\r
FreePool (Tcb);\r
IpCfgData.Ip4CfgData.TypeOfService = CfgData->Tcp4CfgData.TypeOfService;\r
IpCfgData.Ip4CfgData.TimeToLive = CfgData->Tcp4CfgData.TimeToLive;\r
IpCfgData.Ip4CfgData.UseDefaultAddress = CfgData->Tcp4CfgData.AccessPoint.UseDefaultAddress;\r
- IpCfgData.Ip4CfgData.SubnetMask = CfgData->Tcp4CfgData.AccessPoint.SubnetMask;\r
+ IP4_COPY_ADDRESS (\r
+ &IpCfgData.Ip4CfgData.SubnetMask,\r
+ &CfgData->Tcp4CfgData.AccessPoint.SubnetMask\r
+ );\r
IpCfgData.Ip4CfgData.ReceiveTimeout = (UINT32) (-1);\r
- CopyMem (\r
+ IP4_COPY_ADDRESS (\r
&IpCfgData.Ip4CfgData.StationAddress,\r
- &CfgData->Tcp4CfgData.AccessPoint.StationAddress,\r
- sizeof (EFI_IPv4_ADDRESS)\r
+ &CfgData->Tcp4CfgData.AccessPoint.StationAddress\r
);\r
\r
} else {\r
//\r
// Get the default address information if the instance is configured to use default address.\r
//\r
- CfgData->Tcp4CfgData.AccessPoint.StationAddress = IpCfgData.Ip4CfgData.StationAddress;\r
- CfgData->Tcp4CfgData.AccessPoint.SubnetMask = IpCfgData.Ip4CfgData.SubnetMask;\r
+ IP4_COPY_ADDRESS (\r
+ &CfgData->Tcp4CfgData.AccessPoint.StationAddress,\r
+ &IpCfgData.Ip4CfgData.StationAddress\r
+ );\r
+ IP4_COPY_ADDRESS (\r
+ &CfgData->Tcp4CfgData.AccessPoint.SubnetMask,\r
+ &IpCfgData.Ip4CfgData.SubnetMask\r
+ );\r
\r
TcpAp = (TCP_ACCESS_POINT *) &CfgData->Tcp4CfgData.AccessPoint;\r
} else {\r
\r
CopyMem (&Tcb->LocalEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.StationAddress, sizeof (IP4_ADDR));\r
Tcb->LocalEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.StationPort);\r
- Tcb->SubnetMask = CfgData->Tcp4CfgData.AccessPoint.SubnetMask;\r
+ IP4_COPY_ADDRESS (&Tcb->SubnetMask, &CfgData->Tcp4CfgData.AccessPoint.SubnetMask);\r
\r
CopyMem (&Tcb->RemoteEnd.Ip, &CfgData->Tcp4CfgData.AccessPoint.RemoteAddress, sizeof (IP4_ADDR));\r
Tcb->RemoteEnd.Port = HTONS (CfgData->Tcp4CfgData.AccessPoint.RemotePort);\r