]> git.proxmox.com Git - mirror_edk2.git/blobdiff - NetworkPkg/TcpDxe/TcpMisc.c
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / NetworkPkg / TcpDxe / TcpMisc.c
index 492ec35fb892fd2bb4dc500f38c5f8613d00094b..c93212d47dedff948bde71f9d0d826a125e8b8f8 100644 (file)
@@ -1,33 +1,28 @@
 /** @file\r
   Misc support routines for TCP driver.\r
 \r
-  Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2009 - 2017, 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 "TcpMain.h"\r
 \r
-LIST_ENTRY      mTcpRunQue = {\r
+LIST_ENTRY  mTcpRunQue = {\r
   &mTcpRunQue,\r
   &mTcpRunQue\r
 };\r
 \r
-LIST_ENTRY      mTcpListenQue = {\r
+LIST_ENTRY  mTcpListenQue = {\r
   &mTcpListenQue,\r
   &mTcpListenQue\r
 };\r
 \r
-TCP_SEQNO       mTcpGlobalIss = TCP_BASE_ISS;\r
+TCP_SEQNO  mTcpGlobalIss = TCP_BASE_ISS;\r
 \r
-CHAR16          *mTcpStateName[] = {\r
+CHAR16  *mTcpStateName[] = {\r
   L"TCP_CLOSED",\r
   L"TCP_LISTEN",\r
   L"TCP_SYN_SENT",\r
@@ -41,7 +36,6 @@ CHAR16          *mTcpStateName[] = {
   L"TCP_LAST_ACK"\r
 };\r
 \r
-\r
 /**\r
   Initialize the Tcb local related members.\r
 \r
@@ -50,7 +44,7 @@ CHAR16          *mTcpStateName[] = {
 **/\r
 VOID\r
 TcpInitTcbLocal (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
   //\r
@@ -58,18 +52,18 @@ TcpInitTcbLocal (
   //\r
   if (Tcb->Sk->IpVersion == IP_VERSION_4) {\r
     Tcb->HeadSum = NetPseudoHeadChecksum (\r
-                    Tcb->LocalEnd.Ip.Addr[0],\r
-                    Tcb->RemoteEnd.Ip.Addr[0],\r
-                    0x06,\r
-                    0\r
-                    );\r
+                     Tcb->LocalEnd.Ip.Addr[0],\r
+                     Tcb->RemoteEnd.Ip.Addr[0],\r
+                     0x06,\r
+                     0\r
+                     );\r
   } else {\r
     Tcb->HeadSum = NetIp6PseudoHeadChecksum (\r
-                    &Tcb->LocalEnd.Ip.v6,\r
-                    &Tcb->RemoteEnd.Ip.v6,\r
-                    0x06,\r
-                    0\r
-                    );\r
+                     &Tcb->LocalEnd.Ip.v6,\r
+                     &Tcb->RemoteEnd.Ip.v6,\r
+                     0x06,\r
+                     0\r
+                     );\r
   }\r
 \r
   Tcb->Iss    = TcpGetIss ();\r
@@ -84,7 +78,8 @@ TcpInitTcbLocal (
   //\r
   // First window size is never scaled\r
   //\r
-  Tcb->RcvWndScale  = 0;\r
+  Tcb->RcvWndScale   = 0;\r
+  Tcb->RetxmitSeqMax = 0;\r
 \r
   Tcb->ProbeTimerOn = FALSE;\r
 }\r
@@ -93,15 +88,15 @@ TcpInitTcbLocal (
   Initialize the peer related members.\r
 \r
   @param[in, out]  Tcb    Pointer to the TCP_CB of this TCP instance.\r
-  @param[in]       Seg    Pointer to the segment that contains the peer's intial info.\r
+  @param[in]       Seg    Pointer to the segment that contains the peer's initial info.\r
   @param[in]       Opt    Pointer to the options announced by the peer.\r
 \r
 **/\r
 VOID\r
 TcpInitTcbPeer (\r
-  IN OUT TCP_CB     *Tcb,\r
-  IN     TCP_SEG    *Seg,\r
-  IN     TCP_OPTION *Opt\r
+  IN OUT TCP_CB      *Tcb,\r
+  IN     TCP_SEG     *Seg,\r
+  IN     TCP_OPTION  *Opt\r
   )\r
 {\r
   UINT16  RcvMss;\r
@@ -109,9 +104,9 @@ TcpInitTcbPeer (
   ASSERT ((Tcb != NULL) && (Seg != NULL) && (Opt != NULL));\r
   ASSERT (TCP_FLG_ON (Seg->Flag, TCP_FLG_SYN));\r
 \r
-  Tcb->SndWnd     = Seg->Wnd;\r
-  Tcb->SndWndMax  = Tcb->SndWnd;\r
-  Tcb->SndWl1     = Seg->Seq;\r
+  Tcb->SndWnd    = Seg->Wnd;\r
+  Tcb->SndWndMax = Tcb->SndWnd;\r
+  Tcb->SndWl1    = Seg->Seq;\r
 \r
   if (TCP_FLG_ON (Seg->Flag, TCP_FLG_ACK)) {\r
     Tcb->SndWl2 = Seg->Ack;\r
@@ -120,13 +115,12 @@ TcpInitTcbPeer (
   }\r
 \r
   if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_MSS)) {\r
-    Tcb->SndMss = (UINT16) MAX (64, Opt->Mss);\r
+    Tcb->SndMss = (UINT16)MAX (64, Opt->Mss);\r
 \r
-    RcvMss      = TcpGetRcvMss (Tcb->Sk);\r
+    RcvMss = TcpGetRcvMss (Tcb->Sk);\r
     if (Tcb->SndMss > RcvMss) {\r
       Tcb->SndMss = RcvMss;\r
     }\r
-\r
   } else {\r
     //\r
     // One end doesn't support MSS option, use default.\r
@@ -134,7 +128,7 @@ TcpInitTcbPeer (
     Tcb->RcvMss = 536;\r
   }\r
 \r
-  Tcb->CWnd   = Tcb->SndMss;\r
+  Tcb->CWnd = Tcb->SndMss;\r
 \r
   Tcb->Irs    = Seg->Seq;\r
   Tcb->RcvNxt = Tcb->Irs + 1;\r
@@ -142,12 +136,10 @@ TcpInitTcbPeer (
   Tcb->RcvWl2 = Tcb->RcvNxt;\r
 \r
   if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_WS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_WS)) {\r
+    Tcb->SndWndScale = Opt->WndScale;\r
 \r
-    Tcb->SndWndScale  = Opt->WndScale;\r
-\r
-    Tcb->RcvWndScale  = TcpComputeScale (Tcb);\r
+    Tcb->RcvWndScale = TcpComputeScale (Tcb);\r
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_WS);\r
-\r
   } else {\r
     //\r
     // One end doesn't support window scale option. use zero.\r
@@ -156,10 +148,11 @@ TcpInitTcbPeer (
   }\r
 \r
   if (TCP_FLG_ON (Opt->Flag, TCP_OPTION_RCVD_TS) && !TCP_FLG_ON (Tcb->CtrlFlag, TCP_CTRL_NO_TS)) {\r
-\r
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_SND_TS);\r
     TCP_SET_FLG (Tcb->CtrlFlag, TCP_CTRL_RCVD_TS);\r
 \r
+    Tcb->TsRecent = Opt->TSVal;\r
+\r
     //\r
     // Compute the effective SndMss per RFC1122\r
     // section 4.2.2.6. If timestamp option is\r
@@ -191,9 +184,9 @@ TcpIsIpEqual (
   ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6));\r
 \r
   if (Version == IP_VERSION_4) {\r
-    return (BOOLEAN) (Ip1->Addr[0] == Ip2->Addr[0]);\r
+    return (BOOLEAN)(Ip1->Addr[0] == Ip2->Addr[0]);\r
   } else {\r
-    return (BOOLEAN) EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6);\r
+    return (BOOLEAN)EFI_IP6_EQUAL (&Ip1->v6, &Ip2->v6);\r
   }\r
 }\r
 \r
@@ -210,17 +203,17 @@ TcpIsIpEqual (
 **/\r
 BOOLEAN\r
 TcpIsIpZero (\r
-  IN EFI_IP_ADDRESS *Ip,\r
-  IN UINT8          Version\r
+  IN EFI_IP_ADDRESS  *Ip,\r
+  IN UINT8           Version\r
   )\r
 {\r
   ASSERT ((Version == IP_VERSION_4) || (Version == IP_VERSION_6));\r
 \r
   if (Version == IP_VERSION_4) {\r
-    return (BOOLEAN) (Ip->Addr[0] == 0);\r
+    return (BOOLEAN)(Ip->Addr[0] == 0);\r
   } else {\r
-    return (BOOLEAN) ((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) &&\r
-      (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0));\r
+    return (BOOLEAN)((Ip->Addr[0] == 0) && (Ip->Addr[1] == 0) &&\r
+                     (Ip->Addr[2] == 0) && (Ip->Addr[3] == 0));\r
   }\r
 }\r
 \r
@@ -238,16 +231,16 @@ TcpIsIpZero (
 **/\r
 TCP_CB *\r
 TcpLocateListenTcb (\r
-  IN TCP_PEER    *Local,\r
-  IN TCP_PEER    *Remote,\r
-  IN UINT8       Version\r
+  IN TCP_PEER  *Local,\r
+  IN TCP_PEER  *Remote,\r
+  IN UINT8     Version\r
   )\r
 {\r
-  LIST_ENTRY      *Entry;\r
-  TCP_CB          *Node;\r
-  TCP_CB          *Match;\r
-  INTN            Last;\r
-  INTN            Cur;\r
+  LIST_ENTRY  *Entry;\r
+  TCP_CB      *Node;\r
+  TCP_CB      *Match;\r
+  INTN        Last;\r
+  INTN        Cur;\r
 \r
   Last  = 4;\r
   Match = NULL;\r
@@ -259,8 +252,8 @@ TcpLocateListenTcb (
         (Local->Port != Node->LocalEnd.Port) ||\r
         !TCP_PEER_MATCH (Remote, &Node->RemoteEnd, Version) ||\r
         !TCP_PEER_MATCH (Local, &Node->LocalEnd, Version)\r
-          ) {\r
-\r
+        )\r
+    {\r
       continue;\r
     }\r
 \r
@@ -313,9 +306,9 @@ TcpFindTcbByPeer (
   IN UINT8           Version\r
   )\r
 {\r
-  TCP_PORTNO      LocalPort;\r
-  LIST_ENTRY      *Entry;\r
-  TCP_CB          *Tcb;\r
+  TCP_PORTNO  LocalPort;\r
+  LIST_ENTRY  *Entry;\r
+  TCP_CB      *Tcb;\r
 \r
   ASSERT ((Addr != NULL) && (Port != 0));\r
 \r
@@ -325,10 +318,10 @@ TcpFindTcbByPeer (
     Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
 \r
     if ((Version == Tcb->Sk->IpVersion) &&\r
-      TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) &&\r
+        TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) &&\r
         (LocalPort == Tcb->LocalEnd.Port)\r
-        ) {\r
-\r
+        )\r
+    {\r
       return TRUE;\r
     }\r
   }\r
@@ -337,10 +330,10 @@ TcpFindTcbByPeer (
     Tcb = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
 \r
     if ((Version == Tcb->Sk->IpVersion) &&\r
-      TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) &&\r
+        TcpIsIpEqual (Addr, &Tcb->LocalEnd.Ip, Version) &&\r
         (LocalPort == Tcb->LocalEnd.Port)\r
-        ) {\r
-\r
+        )\r
+    {\r
       return TRUE;\r
     }\r
   }\r
@@ -372,10 +365,10 @@ TcpLocateTcb (
   IN BOOLEAN         Syn\r
   )\r
 {\r
-  TCP_PEER        Local;\r
-  TCP_PEER        Remote;\r
-  LIST_ENTRY      *Entry;\r
-  TCP_CB          *Tcb;\r
+  TCP_PEER    Local;\r
+  TCP_PEER    Remote;\r
+  LIST_ENTRY  *Entry;\r
+  TCP_CB      *Tcb;\r
 \r
   Local.Port  = LocalPort;\r
   Remote.Port = RemotePort;\r
@@ -392,8 +385,8 @@ TcpLocateTcb (
     if ((Version == Tcb->Sk->IpVersion) &&\r
         TCP_PEER_EQUAL (&Remote, &Tcb->RemoteEnd, Version) &&\r
         TCP_PEER_EQUAL (&Local, &Tcb->LocalEnd, Version)\r
-          ) {\r
-\r
+        )\r
+    {\r
       RemoveEntryList (&Tcb->List);\r
       InsertHeadList (&mTcpRunQue, &Tcb->List);\r
 \r
@@ -422,21 +415,20 @@ TcpLocateTcb (
 **/\r
 INTN\r
 TcpInsertTcb (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
-  LIST_ENTRY       *Entry;\r
-  LIST_ENTRY       *Head;\r
-  TCP_CB           *Node;\r
-  TCP_PROTO_DATA  *TcpProto;\r
+  LIST_ENTRY  *Entry;\r
+  LIST_ENTRY  *Head;\r
+  TCP_CB      *Node;\r
 \r
   ASSERT (\r
     (Tcb != NULL) &&\r
     (\r
-    (Tcb->State == TCP_LISTEN) ||\r
-    (Tcb->State == TCP_SYN_SENT) ||\r
-    (Tcb->State == TCP_SYN_RCVD) ||\r
-    (Tcb->State == TCP_CLOSED)\r
+     (Tcb->State == TCP_LISTEN) ||\r
+     (Tcb->State == TCP_SYN_SENT) ||\r
+     (Tcb->State == TCP_SYN_RCVD) ||\r
+     (Tcb->State == TCP_CLOSED)\r
     )\r
     );\r
 \r
@@ -458,17 +450,14 @@ TcpInsertTcb (
 \r
     if (TCP_PEER_EQUAL (&Tcb->LocalEnd, &Node->LocalEnd, Tcb->Sk->IpVersion) &&\r
         TCP_PEER_EQUAL (&Tcb->RemoteEnd, &Node->RemoteEnd, Tcb->Sk->IpVersion)\r
-          ) {\r
-\r
+        )\r
+    {\r
       return -1;\r
     }\r
   }\r
 \r
   InsertHeadList (Head, &Tcb->List);\r
 \r
-  TcpProto = (TCP_PROTO_DATA *) Tcb->Sk->ProtoReserved;\r
-  TcpSetVariableData (TcpProto->TcpService);\r
-\r
   return 0;\r
 }\r
 \r
@@ -482,10 +471,10 @@ TcpInsertTcb (
 **/\r
 TCP_CB *\r
 TcpCloneTcb (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
-  TCP_CB             *Clone;\r
+  TCP_CB  *Clone;\r
 \r
   Clone = AllocateZeroPool (sizeof (TCP_CB));\r
 \r
@@ -506,12 +495,12 @@ TcpCloneTcb (
 \r
   Clone->Sk = SockClone (Tcb->Sk);\r
   if (Clone->Sk == NULL) {\r
-    DEBUG ((EFI_D_ERROR, "TcpCloneTcb: failed to clone a sock\n"));\r
+    DEBUG ((DEBUG_ERROR, "TcpCloneTcb: failed to clone a sock\n"));\r
     FreePool (Clone);\r
     return NULL;\r
   }\r
 \r
-  ((TCP_PROTO_DATA *) (Clone->Sk->ProtoReserved))->TcpPcb = Clone;\r
+  ((TCP_PROTO_DATA *)(Clone->Sk->ProtoReserved))->TcpPcb = Clone;\r
 \r
   return Clone;\r
 }\r
@@ -544,31 +533,55 @@ TcpGetRcvMss (
   IN SOCKET  *Sock\r
   )\r
 {\r
-  EFI_IP4_MODE_DATA      Ip4Mode;\r
-  EFI_IP6_MODE_DATA      Ip6Mode;\r
-  EFI_IP4_PROTOCOL       *Ip4;\r
-  EFI_IP6_PROTOCOL       *Ip6;\r
-  TCP_PROTO_DATA         *TcpProto;\r
+  EFI_IP4_MODE_DATA  Ip4Mode;\r
+  EFI_IP6_MODE_DATA  Ip6Mode;\r
+  EFI_IP4_PROTOCOL   *Ip4;\r
+  EFI_IP6_PROTOCOL   *Ip6;\r
+  TCP_PROTO_DATA     *TcpProto;\r
 \r
   ASSERT (Sock != NULL);\r
 \r
   ZeroMem (&Ip4Mode, sizeof (EFI_IP4_MODE_DATA));\r
   ZeroMem (&Ip6Mode, sizeof (EFI_IP6_MODE_DATA));\r
 \r
-  TcpProto = (TCP_PROTO_DATA *) Sock->ProtoReserved;\r
+  TcpProto = (TCP_PROTO_DATA *)Sock->ProtoReserved;\r
 \r
   if (Sock->IpVersion == IP_VERSION_4) {\r
     Ip4 = TcpProto->TcpService->IpIo->Ip.Ip4;\r
     ASSERT (Ip4 != NULL);\r
     Ip4->GetModeData (Ip4, &Ip4Mode, NULL, NULL);\r
 \r
-    return (UINT16) (Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD));\r
+    return (UINT16)(Ip4Mode.MaxPacketSize - sizeof (TCP_HEAD));\r
   } else {\r
     Ip6 = TcpProto->TcpService->IpIo->Ip.Ip6;\r
     ASSERT (Ip6 != NULL);\r
-    Ip6->GetModeData (Ip6, &Ip6Mode, NULL, NULL);\r
+    if (!EFI_ERROR (Ip6->GetModeData (Ip6, &Ip6Mode, NULL, NULL))) {\r
+      if (Ip6Mode.AddressList != NULL) {\r
+        FreePool (Ip6Mode.AddressList);\r
+      }\r
+\r
+      if (Ip6Mode.GroupTable != NULL) {\r
+        FreePool (Ip6Mode.GroupTable);\r
+      }\r
 \r
-    return (UINT16) (Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD));\r
+      if (Ip6Mode.RouteTable != NULL) {\r
+        FreePool (Ip6Mode.RouteTable);\r
+      }\r
+\r
+      if (Ip6Mode.NeighborCache != NULL) {\r
+        FreePool (Ip6Mode.NeighborCache);\r
+      }\r
+\r
+      if (Ip6Mode.PrefixTable != NULL) {\r
+        FreePool (Ip6Mode.PrefixTable);\r
+      }\r
+\r
+      if (Ip6Mode.IcmpTypeList != NULL) {\r
+        FreePool (Ip6Mode.IcmpTypeList);\r
+      }\r
+    }\r
+\r
+    return (UINT16)(Ip6Mode.MaxPacketSize - sizeof (TCP_HEAD));\r
   }\r
 }\r
 \r
@@ -581,45 +594,45 @@ TcpGetRcvMss (
 **/\r
 VOID\r
 TcpSetState (\r
-  IN TCP_CB *Tcb,\r
-  IN UINT8  State\r
+  IN TCP_CB  *Tcb,\r
+  IN UINT8   State\r
   )\r
 {\r
   ASSERT (Tcb->State < (sizeof (mTcpStateName) / sizeof (CHAR16 *)));\r
   ASSERT (State < (sizeof (mTcpStateName) / sizeof (CHAR16 *)));\r
 \r
   DEBUG (\r
-    (EFI_D_INFO,\r
-    "Tcb (%p) state %s --> %s\n",\r
-    Tcb,\r
-    mTcpStateName[Tcb->State],\r
-    mTcpStateName[State])\r
+    (DEBUG_NET,\r
+     "Tcb (%p) state %s --> %s\n",\r
+     Tcb,\r
+     mTcpStateName[Tcb->State],\r
+     mTcpStateName[State])\r
     );\r
 \r
   Tcb->State = State;\r
 \r
   switch (State) {\r
-  case TCP_ESTABLISHED:\r
+    case TCP_ESTABLISHED:\r
 \r
-    SockConnEstablished (Tcb->Sk);\r
+      SockConnEstablished (Tcb->Sk);\r
 \r
-    if (Tcb->Parent != NULL) {\r
-      //\r
-      // A new connection is accepted by a listening socket. Install\r
-      // the device path.\r
-      //\r
-      TcpInstallDevicePath (Tcb->Sk);\r
-    }\r
+      if (Tcb->Parent != NULL) {\r
+        //\r
+        // A new connection is accepted by a listening socket. Install\r
+        // the device path.\r
+        //\r
+        TcpInstallDevicePath (Tcb->Sk);\r
+      }\r
 \r
-    break;\r
+      break;\r
 \r
-  case TCP_CLOSED:\r
+    case TCP_CLOSED:\r
 \r
-    SockConnClosed (Tcb->Sk);\r
+      SockConnClosed (Tcb->Sk);\r
 \r
-    break;\r
-  default:\r
-    break;\r
+      break;\r
+    default:\r
+      break;\r
   }\r
 }\r
 \r
@@ -634,21 +647,21 @@ TcpSetState (
 **/\r
 UINT16\r
 TcpChecksum (\r
-  IN NET_BUF *Nbuf,\r
-  IN UINT16  HeadSum\r
+  IN NET_BUF  *Nbuf,\r
+  IN UINT16   HeadSum\r
   )\r
 {\r
   UINT16  Checksum;\r
 \r
-  Checksum  = NetbufChecksum (Nbuf);\r
-  Checksum  = NetAddChecksum (Checksum, HeadSum);\r
+  Checksum = NetbufChecksum (Nbuf);\r
+  Checksum = NetAddChecksum (Checksum, HeadSum);\r
 \r
   Checksum = NetAddChecksum (\r
-              Checksum,\r
-              HTONS ((UINT16) Nbuf->TotalSize)\r
-              );\r
+               Checksum,\r
+               HTONS ((UINT16)Nbuf->TotalSize)\r
+               );\r
 \r
-  return (UINT16) (~Checksum);\r
+  return (UINT16)(~Checksum);\r
 }\r
 \r
 /**\r
@@ -663,22 +676,22 @@ TcpChecksum (
 **/\r
 TCP_SEG *\r
 TcpFormatNetbuf (\r
-  IN     TCP_CB  *Tcb,\r
-  IN OUT NET_BUF *Nbuf\r
+  IN     TCP_CB   *Tcb,\r
+  IN OUT NET_BUF  *Nbuf\r
   )\r
 {\r
   TCP_SEG   *Seg;\r
   TCP_HEAD  *Head;\r
 \r
-  Seg       = TCPSEG_NETBUF (Nbuf);\r
-  Head      = (TCP_HEAD *) NetbufGetByte (Nbuf, 0, NULL);\r
+  Seg  = TCPSEG_NETBUF (Nbuf);\r
+  Head = (TCP_HEAD *)NetbufGetByte (Nbuf, 0, NULL);\r
   ASSERT (Head != NULL);\r
 \r
   Nbuf->Tcp = Head;\r
 \r
-  Seg->Seq  = NTOHL (Head->Seq);\r
-  Seg->Ack  = NTOHL (Head->Ack);\r
-  Seg->End  = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2));\r
+  Seg->Seq = NTOHL (Head->Seq);\r
+  Seg->Ack = NTOHL (Head->Ack);\r
+  Seg->End = Seg->Seq + (Nbuf->TotalSize - (Head->HeadLen << 2));\r
 \r
   Seg->Urg  = NTOHS (Head->Urg);\r
   Seg->Wnd  = (NTOHS (Head->Wnd) << Tcb->SndWndScale);\r
@@ -730,17 +743,16 @@ TcpOnAppConnect (
 **/\r
 VOID\r
 TcpOnAppClose (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
   ASSERT (Tcb != NULL);\r
 \r
-  if (!IsListEmpty (&Tcb->RcvQue) || GET_RCV_DATASIZE (Tcb->Sk) != 0) {\r
-\r
+  if (!IsListEmpty (&Tcb->RcvQue) || (GET_RCV_DATASIZE (Tcb->Sk) != 0)) {\r
     DEBUG (\r
-      (EFI_D_WARN,\r
-      "TcpOnAppClose: connection reset because data is lost for TCB %p\n",\r
-      Tcb)\r
+      (DEBUG_WARN,\r
+       "TcpOnAppClose: connection reset because data is lost for TCB %p\n",\r
+       Tcb)\r
       );\r
 \r
     TcpResetConnection (Tcb);\r
@@ -749,22 +761,22 @@ TcpOnAppClose (
   }\r
 \r
   switch (Tcb->State) {\r
-  case TCP_CLOSED:\r
-  case TCP_LISTEN:\r
-  case TCP_SYN_SENT:\r
-    TcpSetState (Tcb, TCP_CLOSED);\r
-    break;\r
-\r
-  case TCP_SYN_RCVD:\r
-  case TCP_ESTABLISHED:\r
-    TcpSetState (Tcb, TCP_FIN_WAIT_1);\r
-    break;\r
-\r
-  case TCP_CLOSE_WAIT:\r
-    TcpSetState (Tcb, TCP_LAST_ACK);\r
-    break;\r
-  default:\r
-    break;\r
+    case TCP_CLOSED:\r
+    case TCP_LISTEN:\r
+    case TCP_SYN_SENT:\r
+      TcpSetState (Tcb, TCP_CLOSED);\r
+      break;\r
+\r
+    case TCP_SYN_RCVD:\r
+    case TCP_ESTABLISHED:\r
+      TcpSetState (Tcb, TCP_FIN_WAIT_1);\r
+      break;\r
+\r
+    case TCP_CLOSE_WAIT:\r
+      TcpSetState (Tcb, TCP_LAST_ACK);\r
+      break;\r
+    default:\r
+      break;\r
   }\r
 \r
   TcpToSendData (Tcb, 1);\r
@@ -782,35 +794,34 @@ TcpOnAppClose (
 **/\r
 INTN\r
 TcpOnAppSend (\r
-  IN OUT TCP_CB *Tcb\r
+  IN OUT TCP_CB  *Tcb\r
   )\r
 {\r
-\r
   switch (Tcb->State) {\r
-  case TCP_CLOSED:\r
-    return -1;\r
+    case TCP_CLOSED:\r
+      return -1;\r
 \r
-  case TCP_LISTEN:\r
-    return -1;\r
+    case TCP_LISTEN:\r
+      return -1;\r
 \r
-  case TCP_SYN_SENT:\r
-  case TCP_SYN_RCVD:\r
-    return 0;\r
+    case TCP_SYN_SENT:\r
+    case TCP_SYN_RCVD:\r
+      return 0;\r
 \r
-  case TCP_ESTABLISHED:\r
-  case TCP_CLOSE_WAIT:\r
-    TcpToSendData (Tcb, 0);\r
-    return 0;\r
+    case TCP_ESTABLISHED:\r
+    case TCP_CLOSE_WAIT:\r
+      TcpToSendData (Tcb, 0);\r
+      return 0;\r
 \r
-  case TCP_FIN_WAIT_1:\r
-  case TCP_FIN_WAIT_2:\r
-  case TCP_CLOSING:\r
-  case TCP_LAST_ACK:\r
-  case TCP_TIME_WAIT:\r
-    return -1;\r
+    case TCP_FIN_WAIT_1:\r
+    case TCP_FIN_WAIT_2:\r
+    case TCP_CLOSING:\r
+    case TCP_LAST_ACK:\r
+    case TCP_TIME_WAIT:\r
+      return -1;\r
 \r
-  default:\r
-    break;\r
+    default:\r
+      break;\r
   }\r
 \r
   return 0;\r
@@ -825,41 +836,38 @@ TcpOnAppSend (
 **/\r
 VOID\r
 TcpOnAppConsume (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
-  UINT32 TcpOld;\r
+  UINT32  TcpOld;\r
 \r
   switch (Tcb->State) {\r
-  case TCP_ESTABLISHED:\r
-    TcpOld = TcpRcvWinOld (Tcb);\r
-    if (TcpRcvWinNow (Tcb) > TcpOld) {\r
-\r
-      if (TcpOld < Tcb->RcvMss) {\r
-\r
-        DEBUG (\r
-          (EFI_D_INFO,\r
-          "TcpOnAppConsume: send a window update for a window closed Tcb %p\n",\r
-          Tcb)\r
-          );\r
-\r
-        TcpSendAck (Tcb);\r
-      } else if (Tcb->DelayedAck == 0) {\r
-\r
-        DEBUG (\r
-          (EFI_D_INFO,\r
-          "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n",\r
-          Tcb)\r
-          );\r
-\r
-        Tcb->DelayedAck = 1;\r
+    case TCP_ESTABLISHED:\r
+      TcpOld = TcpRcvWinOld (Tcb);\r
+      if (TcpRcvWinNow (Tcb) > TcpOld) {\r
+        if (TcpOld < Tcb->RcvMss) {\r
+          DEBUG (\r
+            (DEBUG_NET,\r
+             "TcpOnAppConsume: send a window update for a window closed Tcb %p\n",\r
+             Tcb)\r
+            );\r
+\r
+          TcpSendAck (Tcb);\r
+        } else if (Tcb->DelayedAck == 0) {\r
+          DEBUG (\r
+            (DEBUG_NET,\r
+             "TcpOnAppConsume: scheduled a delayed ACK to update window for Tcb %p\n",\r
+             Tcb)\r
+            );\r
+\r
+          Tcb->DelayedAck = 1;\r
+        }\r
       }\r
-    }\r
 \r
-    break;\r
+      break;\r
 \r
-  default:\r
-    break;\r
+    default:\r
+      break;\r
   }\r
 }\r
 \r
@@ -872,25 +880,25 @@ TcpOnAppConsume (
 **/\r
 VOID\r
 TcpOnAppAbort (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
   DEBUG (\r
-    (EFI_D_WARN,\r
-    "TcpOnAppAbort: connection reset issued by application for TCB %p\n",\r
-    Tcb)\r
+    (DEBUG_WARN,\r
+     "TcpOnAppAbort: connection reset issued by application for TCB %p\n",\r
+     Tcb)\r
     );\r
 \r
   switch (Tcb->State) {\r
-  case TCP_SYN_RCVD:\r
-  case TCP_ESTABLISHED:\r
-  case TCP_FIN_WAIT_1:\r
-  case TCP_FIN_WAIT_2:\r
-  case TCP_CLOSE_WAIT:\r
-    TcpResetConnection (Tcb);\r
-    break;\r
-  default:\r
-    break;\r
+    case TCP_SYN_RCVD:\r
+    case TCP_ESTABLISHED:\r
+    case TCP_FIN_WAIT_1:\r
+    case TCP_FIN_WAIT_2:\r
+    case TCP_CLOSE_WAIT:\r
+      TcpResetConnection (Tcb);\r
+      break;\r
+    default:\r
+      break;\r
   }\r
 \r
   TcpSetState (Tcb, TCP_CLOSED);\r
@@ -904,7 +912,7 @@ TcpOnAppAbort (
 **/\r
 VOID\r
 TcpResetConnection (\r
-  IN TCP_CB *Tcb\r
+  IN TCP_CB  *Tcb\r
   )\r
 {\r
   NET_BUF   *Nbuf;\r
@@ -913,10 +921,10 @@ TcpResetConnection (
   Nbuf = NetbufAlloc (TCP_MAX_HEAD);\r
 \r
   if (Nbuf == NULL) {\r
-    return ;\r
+    return;\r
   }\r
 \r
-  Nhead = (TCP_HEAD *) NetbufAllocSpace (\r
+  Nhead = (TCP_HEAD *)NetbufAllocSpace (\r
                         Nbuf,\r
                         sizeof (TCP_HEAD),\r
                         NET_BUF_TAIL\r
@@ -924,14 +932,14 @@ TcpResetConnection (
 \r
   ASSERT (Nhead != NULL);\r
 \r
-  Nbuf->Tcp       = Nhead;\r
+  Nbuf->Tcp = Nhead;\r
 \r
   Nhead->Flag     = TCP_FLG_RST;\r
   Nhead->Seq      = HTONL (Tcb->SndNxt);\r
   Nhead->Ack      = HTONL (Tcb->RcvNxt);\r
   Nhead->SrcPort  = Tcb->LocalEnd.Port;\r
   Nhead->DstPort  = Tcb->RemoteEnd.Port;\r
-  Nhead->HeadLen  = (UINT8) (sizeof (TCP_HEAD) >> 2);\r
+  Nhead->HeadLen  = (UINT8)(sizeof (TCP_HEAD) >> 2);\r
   Nhead->Res      = 0;\r
   Nhead->Wnd      = HTONS (0xFFFF);\r
   Nhead->Checksum = 0;\r
@@ -943,266 +951,6 @@ TcpResetConnection (
   NetbufFree (Nbuf);\r
 }\r
 \r
-/**\r
-  Set the Tcp variable data.\r
-\r
-  @param[in]  TcpService        Tcp service data.\r
-\r
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resources to set the variable.\r
-  @retval other                 Set variable failed.\r
-\r
-**/\r
-EFI_STATUS\r
-TcpSetVariableData (\r
-  IN TCP_SERVICE_DATA  *TcpService\r
-  )\r
-{\r
-  EFI_GUID                *ServiceBindingGuid;\r
-  UINT32                  NumConfiguredInstance;\r
-  LIST_ENTRY              *Entry;\r
-  TCP_CB                  *TcpPcb;\r
-  TCP_PROTO_DATA          *TcpProto;\r
-  UINTN                   VariableDataSize;\r
-  EFI_TCP4_VARIABLE_DATA  *Tcp4VariableData;\r
-  EFI_TCP4_SERVICE_POINT  *Tcp4ServicePoint;\r
-  EFI_TCP6_VARIABLE_DATA  *Tcp6VariableData;\r
-  EFI_TCP6_SERVICE_POINT  *Tcp6ServicePoint;\r
-  VOID                    *VariableData;\r
-  CHAR16                  *NewMacString;\r
-  EFI_STATUS              Status;\r
-\r
-  if (TcpService->IpVersion == IP_VERSION_4) {\r
-    ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid;\r
-  } else {\r
-    ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid;\r
-  }\r
-\r
-  NumConfiguredInstance = 0;\r
-  Tcp4VariableData      = NULL;\r
-  Tcp6VariableData      = NULL;\r
-\r
-  //\r
-  // Go through the running queue to count the instances.\r
-  //\r
-  NET_LIST_FOR_EACH (Entry, &mTcpRunQue) {\r
-    TcpPcb    = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
-\r
-    TcpProto  = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;\r
-\r
-    if (TcpProto->TcpService == TcpService) {\r
-      //\r
-      // This tcp instance belongs to the TcpService.\r
-      //\r
-      NumConfiguredInstance++;\r
-    }\r
-  }\r
-\r
-  //\r
-  // Go through the listening queue to count the instances.\r
-  //\r
-  NET_LIST_FOR_EACH (Entry, &mTcpListenQue) {\r
-    TcpPcb    = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
-\r
-    TcpProto  = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;\r
-\r
-    if (TcpProto->TcpService == TcpService) {\r
-      //\r
-      // This tcp instance belongs to the TcpService.\r
-      //\r
-      NumConfiguredInstance++;\r
-    }\r
-  }\r
-\r
-  Tcp4ServicePoint = NULL;\r
-  Tcp6ServicePoint = NULL;\r
-\r
-  //\r
-  // Calculate the size of the Tcp4VariableData. As there may be no Tcp4 child,\r
-  // we should add extra buffers for the service points only if the number of configured\r
-  // children is more than one.\r
-  //\r
-  if (TcpService->IpVersion == IP_VERSION_4) {\r
-    VariableDataSize = sizeof (EFI_TCP4_VARIABLE_DATA);\r
-\r
-    if (NumConfiguredInstance > 1) {\r
-      VariableDataSize += sizeof (EFI_TCP4_SERVICE_POINT) * (NumConfiguredInstance - 1);\r
-    }\r
-\r
-    Tcp4VariableData = AllocateZeroPool (VariableDataSize);\r
-    if (Tcp4VariableData == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-\r
-    Tcp4VariableData->DriverHandle  = TcpService->DriverBindingHandle;\r
-    Tcp4VariableData->ServiceCount  = NumConfiguredInstance;\r
-\r
-    Tcp4ServicePoint                = &Tcp4VariableData->Services[0];\r
-    VariableData                    = Tcp4VariableData;\r
-  } else {\r
-    VariableDataSize = sizeof (EFI_TCP6_VARIABLE_DATA);\r
-\r
-    if (NumConfiguredInstance > 1) {\r
-      VariableDataSize += sizeof (EFI_TCP6_SERVICE_POINT) * (NumConfiguredInstance - 1);\r
-    }\r
-\r
-    Tcp6VariableData = AllocateZeroPool (VariableDataSize);\r
-    if (Tcp6VariableData == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-\r
-    Tcp6VariableData->DriverHandle  = TcpService->DriverBindingHandle;\r
-    Tcp6VariableData->ServiceCount  = NumConfiguredInstance;\r
-\r
-    Tcp6ServicePoint                = &Tcp6VariableData->Services[0];\r
-    VariableData                    = Tcp6VariableData;\r
-  }\r
-\r
-  //\r
-  // Go through the running queue to fill the service points.\r
-  //\r
-  NET_LIST_FOR_EACH (Entry, &mTcpRunQue) {\r
-    TcpPcb    = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
-\r
-    TcpProto  = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;\r
-\r
-    if (TcpProto->TcpService == TcpService) {\r
-      //\r
-      // This tcp instance belongs to the TcpService.\r
-      //\r
-      if (TcpService->IpVersion == IP_VERSION_4) {\r
-        Tcp4ServicePoint->InstanceHandle          = TcpPcb->Sk->SockHandle;\r
-        CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
-        Tcp4ServicePoint->LocalPort               = NTOHS (TcpPcb->LocalEnd.Port);\r
-        CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
-        Tcp4ServicePoint->RemotePort              = NTOHS (TcpPcb->RemoteEnd.Port);\r
-\r
-        Tcp4ServicePoint++;\r
-      } else {\r
-        Tcp6ServicePoint->InstanceHandle          = TcpPcb->Sk->SockHandle;\r
-        IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip);\r
-        Tcp6ServicePoint->LocalPort               = NTOHS (TcpPcb->LocalEnd.Port);\r
-        IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip);\r
-        Tcp6ServicePoint->RemotePort              = NTOHS (TcpPcb->RemoteEnd.Port);\r
-\r
-        Tcp6ServicePoint++;\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // Go through the listening queue to fill the service points.\r
-  //\r
-  NET_LIST_FOR_EACH (Entry, &mTcpListenQue) {\r
-    TcpPcb    = NET_LIST_USER_STRUCT (Entry, TCP_CB, List);\r
-\r
-    TcpProto  = (TCP_PROTO_DATA *) TcpPcb->Sk->ProtoReserved;\r
-\r
-    if (TcpProto->TcpService == TcpService) {\r
-      //\r
-      // This tcp instance belongs to the TcpService.\r
-      //\r
-      if (TcpService->IpVersion == IP_VERSION_4) {\r
-        Tcp4ServicePoint->InstanceHandle          = TcpPcb->Sk->SockHandle;\r
-        CopyMem (&Tcp4ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
-        Tcp4ServicePoint->LocalPort               = NTOHS (TcpPcb->LocalEnd.Port);\r
-        CopyMem (&Tcp4ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip, sizeof (EFI_IPv4_ADDRESS));\r
-        Tcp4ServicePoint->RemotePort              = NTOHS (TcpPcb->RemoteEnd.Port);\r
-\r
-        Tcp4ServicePoint++;\r
-      } else {\r
-        Tcp6ServicePoint->InstanceHandle          = TcpPcb->Sk->SockHandle;\r
-        IP6_COPY_ADDRESS (&Tcp6ServicePoint->LocalAddress, &TcpPcb->LocalEnd.Ip);\r
-        Tcp6ServicePoint->LocalPort               = NTOHS (TcpPcb->LocalEnd.Port);\r
-        IP6_COPY_ADDRESS (&Tcp6ServicePoint->RemoteAddress, &TcpPcb->RemoteEnd.Ip);\r
-        Tcp6ServicePoint->RemotePort              = NTOHS (TcpPcb->RemoteEnd.Port);\r
-\r
-        Tcp6ServicePoint++;\r
-      }\r
-    }\r
-  }\r
-\r
-  //\r
-  // Get the mac string.\r
-  //\r
-  Status = NetLibGetMacString (\r
-             TcpService->ControllerHandle,\r
-             TcpService->DriverBindingHandle,\r
-             &NewMacString\r
-             );\r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  if (TcpService->MacString != NULL) {\r
-    //\r
-    // The variable is set already. We're going to update it.\r
-    //\r
-    if (StrCmp (TcpService->MacString, NewMacString) != 0) {\r
-      //\r
-      // The mac address is changed. Delete the previous variable first.\r
-      //\r
-      gRT->SetVariable (\r
-             TcpService->MacString,\r
-             ServiceBindingGuid,\r
-             EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
-             0,\r
-             NULL\r
-             );\r
-    }\r
-\r
-    FreePool (TcpService->MacString);\r
-  }\r
-\r
-  TcpService->MacString = NewMacString;\r
-\r
-  Status = gRT->SetVariable (\r
-                  TcpService->MacString,\r
-                  ServiceBindingGuid,\r
-                  EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
-                  VariableDataSize,\r
-                  VariableData\r
-                  );\r
-\r
-ON_ERROR:\r
-\r
-  FreePool (VariableData);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Clear the variable and free the resource.\r
-\r
-  @param[in]  TcpService            Tcp service data.\r
-\r
-**/\r
-VOID\r
-TcpClearVariableData (\r
-  IN TCP_SERVICE_DATA  *TcpService\r
-  )\r
-{\r
-  EFI_GUID  *ServiceBindingGuid;\r
-\r
-  ASSERT (TcpService->MacString != NULL);\r
-\r
-  if (TcpService->IpVersion == IP_VERSION_4) {\r
-    ServiceBindingGuid = &gEfiTcp4ServiceBindingProtocolGuid;\r
-  } else {\r
-    ServiceBindingGuid = &gEfiTcp6ServiceBindingProtocolGuid;\r
-  }\r
-\r
-  gRT->SetVariable (\r
-         TcpService->MacString,\r
-         ServiceBindingGuid,\r
-         EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
-         0,\r
-         NULL\r
-         );\r
-\r
-  FreePool (TcpService->MacString);\r
-  TcpService->MacString = NULL;\r
-}\r
-\r
 /**\r
   Install the device path protocol on the TCP instance.\r
 \r
@@ -1214,24 +962,24 @@ TcpClearVariableData (
 **/\r
 EFI_STATUS\r
 TcpInstallDevicePath (\r
-  IN SOCKET *Sock\r
+  IN SOCKET  *Sock\r
   )\r
 {\r
-  TCP_PROTO_DATA           *TcpProto;\r
-  TCP_SERVICE_DATA         *TcpService;\r
-  TCP_CB                   *Tcb;\r
-  IPv4_DEVICE_PATH         Ip4DPathNode;\r
-  IPv6_DEVICE_PATH         Ip6DPathNode;\r
-  EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
-  EFI_STATUS               Status;\r
-  TCP_PORTNO               LocalPort;\r
-  TCP_PORTNO               RemotePort;\r
-\r
-  TcpProto   = (TCP_PROTO_DATA *) Sock->ProtoReserved;\r
+  TCP_PROTO_DATA            *TcpProto;\r
+  TCP_SERVICE_DATA          *TcpService;\r
+  TCP_CB                    *Tcb;\r
+  IPv4_DEVICE_PATH          Ip4DPathNode;\r
+  IPv6_DEVICE_PATH          Ip6DPathNode;\r
+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;\r
+  EFI_STATUS                Status;\r
+  TCP_PORTNO                LocalPort;\r
+  TCP_PORTNO                RemotePort;\r
+\r
+  TcpProto   = (TCP_PROTO_DATA *)Sock->ProtoReserved;\r
   TcpService = TcpProto->TcpService;\r
   Tcb        = TcpProto->TcpPcb;\r
 \r
-  LocalPort = NTOHS (Tcb->LocalEnd.Port);\r
+  LocalPort  = NTOHS (Tcb->LocalEnd.Port);\r
   RemotePort = NTOHS (Tcb->RemoteEnd.Port);\r
   if (Sock->IpVersion == IP_VERSION_4) {\r
     NetLibCreateIPv4DPathNode (\r
@@ -1245,7 +993,9 @@ TcpInstallDevicePath (
       Tcb->UseDefaultAddr\r
       );\r
 \r
-    DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip4DPathNode;\r
+    IP4_COPY_ADDRESS (&Ip4DPathNode.SubnetMask, &Tcb->SubnetMask);\r
+\r
+    DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip4DPathNode;\r
   } else {\r
     NetLibCreateIPv6DPathNode (\r
       &Ip6DPathNode,\r
@@ -1257,7 +1007,7 @@ TcpInstallDevicePath (
       EFI_IP_PROTO_TCP\r
       );\r
 \r
-    DevicePath = (EFI_DEVICE_PATH_PROTOCOL *) &Ip6DPathNode;\r
+    DevicePath = (EFI_DEVICE_PATH_PROTOCOL *)&Ip6DPathNode;\r
   }\r
 \r
   Sock->DevicePath = AppendDevicePathNode (Sock->ParentDevicePath, DevicePath);\r
@@ -1278,4 +1028,3 @@ TcpInstallDevicePath (
 \r
   return Status;\r
 }\r
-\r