Add a UNION definition (IP_IO_IP_PROTOOCL) for EFI_IP4/6_PROTOCOL and change IP_IO...
authorqianouyang <qianouyang@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 13 Jun 2010 08:18:10 +0000 (08:18 +0000)
committerqianouyang <qianouyang@6f19259b-4bc3-4df7-8a09-765794883524>
Sun, 13 Jun 2010 08:18:10 +0000 (08:18 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10578 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Include/Library/IpIoLib.h
MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.c
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dispatcher.c
MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Misc.c
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Impl.c
MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Main.c

index df29c04..37cba07 100644 (file)
@@ -153,6 +153,11 @@ typedef union {
   UINT8                     PrefixLength;\r
 } IP_IO_IP_MASK;\r
 \r
+typedef union {\r
+  EFI_IP4_PROTOCOL  *Ip4;\r
+  EFI_IP6_PROTOCOL  *Ip6;\r
+} IP_IO_IP_PROTOCOL;\r
+\r
 ///\r
 /// The IP session for an IP receive packet.\r
 ///\r
@@ -195,17 +200,18 @@ VOID
   @param[in] Status        Result of the IP packet being sent.\r
   @param[in] Context       The data provided by user for the received packet when\r
                            the callback is registered in IP_IO_OPEN_DATA::SndContext.\r
-  @param[in] Sender        A pointer to EFI_IP4_PROTOCOL or EFI_IP6_PROTOCOL.\r
+  @param[in] Sender        A Union type to specify a pointer of EFI_IP4_PROTOCOL \r
+                           or EFI_IP6_PROTOCOL.\r
   @param[in] NotifyData    The Context data specified when calling IpIoSend()\r
   \r
 **/\r
 typedef\r
 VOID\r
 (EFIAPI *PKT_SENT_NOTIFY) (\r
-  IN EFI_STATUS  Status,\r
-  IN VOID        *Context,\r
-  IN VOID        *Sender,\r
-  IN VOID        *NotifyData\r
+  IN EFI_STATUS        Status,\r
+  IN VOID              *Context,\r
+  IN IP_IO_IP_PROTOCOL Sender,\r
+  IN VOID              *NotifyData\r
   );\r
 \r
 ///\r
@@ -229,7 +235,7 @@ typedef struct _IP_IO {
   //\r
   // The IP instance consumed by this IP_IO\r
   //\r
-  VOID                          *Ip;\r
+  IP_IO_IP_PROTOCOL             Ip;\r
   BOOLEAN                       IsConfigured;\r
 \r
   ///\r
@@ -280,7 +286,7 @@ typedef struct _IP_IO_SEND_ENTRY {
   IP_IO                     *IpIo;\r
   VOID                      *Context;\r
   VOID                      *NotifyData;\r
-  VOID                      *Ip;\r
+  IP_IO_IP_PROTOCOL         Ip;\r
   NET_BUF                   *Pkt;\r
   IP_IO_IP_COMPLETION_TOKEN SndToken;\r
 } IP_IO_SEND_ENTRY;\r
@@ -294,7 +300,7 @@ typedef struct _IP_IO_IP_INFO {
   IP_IO_IP_MASK             PreMask;\r
   LIST_ENTRY                Entry;\r
   EFI_HANDLE                ChildHandle;\r
-  VOID                      *Ip;\r
+  IP_IO_IP_PROTOCOL         Ip;\r
   IP_IO_IP_COMPLETION_TOKEN DummyRcvToken;\r
   INTN                      RefCnt;\r
   UINT8                     IpVersion;\r
index 5b63734..837a1db 100644 (file)
@@ -616,7 +616,7 @@ IP_IO_SEND_ENTRY *
 IpIoCreateSndEntry (\r
   IN OUT IP_IO             *IpIo,\r
   IN OUT NET_BUF           *Pkt,\r
-  IN     VOID              *Sender,\r
+  IN     IP_IO_IP_PROTOCOL Sender,\r
   IN     VOID              *Context    OPTIONAL,\r
   IN     VOID              *NotifyData OPTIONAL,\r
   IN     EFI_IP_ADDRESS    *Dest       OPTIONAL,\r
@@ -941,15 +941,15 @@ IpIoDummyHandlerDpc (
   // Continue the receive.\r
   //\r
   if (IpInfo->IpVersion == IP_VERSION_4) {\r
-    ((EFI_IP4_PROTOCOL *) (IpInfo->Ip))->Receive (\r
-                                           (EFI_IP4_PROTOCOL *) (IpInfo->Ip),\r
-                                           &IpInfo->DummyRcvToken.Ip4Token\r
-                                           );\r
+    IpInfo->Ip.Ip4->Receive (\r
+                      IpInfo->Ip.Ip4,\r
+                      &IpInfo->DummyRcvToken.Ip4Token\r
+                      );\r
   } else {\r
-    ((EFI_IP6_PROTOCOL *) (IpInfo->Ip))->Receive (\r
-                                           (EFI_IP6_PROTOCOL *) (IpInfo->Ip),\r
-                                           &IpInfo->DummyRcvToken.Ip6Token\r
-                                           );\r
+    IpInfo->Ip.Ip6->Receive (\r
+                      IpInfo->Ip.Ip6,\r
+                      &IpInfo->DummyRcvToken.Ip6Token\r
+                      );\r
   }\r
 }\r
 \r
@@ -991,12 +991,10 @@ IpIoListenHandlerDpc (
   IP_IO                 *IpIo;\r
   EFI_STATUS            Status;\r
   IP_IO_IP_RX_DATA      *RxData;\r
-  VOID                  *Ip;\r
   EFI_NET_SESSION_DATA  Session;\r
   NET_BUF               *Pkt;\r
 \r
   IpIo = (IP_IO *) Context;\r
-  Ip   = IpIo->Ip;\r
 \r
   if (IpIo->IpVersion == IP_VERSION_4) {\r
     Status = IpIo->RcvToken.Ip4Token.Status;\r
@@ -1125,9 +1123,9 @@ CleanUp:
 Resume:\r
 \r
   if (IpIo->IpVersion == IP_VERSION_4){\r
-    ((EFI_IP4_PROTOCOL *) Ip)->Receive (Ip, &(IpIo->RcvToken.Ip4Token));\r
+    IpIo->Ip.Ip4->Receive (IpIo->Ip.Ip4, &(IpIo->RcvToken.Ip4Token));\r
   } else {\r
-    ((EFI_IP6_PROTOCOL *) Ip)->Receive (Ip, &(IpIo->RcvToken.Ip6Token));\r
+    IpIo->Ip.Ip6->Receive (IpIo->Ip.Ip6, &(IpIo->RcvToken.Ip6Token));\r
   }\r
 }\r
 \r
@@ -1266,7 +1264,6 @@ IpIoOpen (
   )\r
 {\r
   EFI_STATUS        Status;\r
-  VOID              *Ip;\r
   UINT8             IpVersion;\r
 \r
   if (IpIo->IsConfigured) {\r
@@ -1277,22 +1274,20 @@ IpIoOpen (
 \r
   ASSERT ((IpVersion == IP_VERSION_4) || (IpVersion == IP_VERSION_6));\r
 \r
-  Ip = IpIo->Ip;\r
-\r
   //\r
   // configure ip\r
   //\r
   if (IpVersion == IP_VERSION_4){\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Configure (\r
-                                          (EFI_IP4_PROTOCOL *) Ip,\r
-                                          &OpenData->IpConfigData.Ip4CfgData\r
-                                          );\r
+    Status = IpIo->Ip.Ip4->Configure (\r
+                             IpIo->Ip.Ip4,\r
+                             &OpenData->IpConfigData.Ip4CfgData\r
+                             );\r
   } else {\r
 \r
-    Status = ((EFI_IP6_PROTOCOL *) Ip)->Configure (\r
-                                          (EFI_IP6_PROTOCOL *) Ip\r
-                                          &OpenData->IpConfigData.Ip6CfgData\r
-                                          );\r
+    Status = IpIo->Ip.Ip6->Configure (\r
+                             IpIo->Ip.Ip6\r
+                             &OpenData->IpConfigData.Ip6CfgData\r
+                             );\r
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
@@ -1305,13 +1300,13 @@ IpIoOpen (
   // @bug its code\r
   //\r
   if (IpVersion == IP_VERSION_4){\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Routes (\r
-                                          (EFI_IP4_PROTOCOL *) Ip,\r
-                                          TRUE,\r
-                                          &mZeroIp4Addr,\r
-                                          &mZeroIp4Addr,\r
-                                          &mZeroIp4Addr\r
-                                          );\r
+    Status = IpIo->Ip.Ip4->Routes (\r
+                             IpIo->Ip.Ip4,\r
+                             TRUE,\r
+                             &mZeroIp4Addr,\r
+                             &mZeroIp4Addr,\r
+                             &mZeroIp4Addr\r
+                             );\r
 \r
     if (EFI_ERROR (Status) && (EFI_NOT_FOUND != Status)) {\r
       return Status;\r
@@ -1330,24 +1325,24 @@ IpIoOpen (
     //\r
     // start to listen incoming packet\r
     //\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Receive (\r
-                                          (EFI_IP4_PROTOCOL *) Ip,\r
-                                          &(IpIo->RcvToken.Ip4Token)\r
-                                          );\r
+    Status = IpIo->Ip.Ip4->Receive (\r
+                             IpIo->Ip.Ip4,\r
+                             &(IpIo->RcvToken.Ip4Token)\r
+                             );\r
     if (EFI_ERROR (Status)) {\r
-      ((EFI_IP4_PROTOCOL *) Ip)->Configure ((EFI_IP4_PROTOCOL *) Ip, NULL);\r
+      IpIo->Ip.Ip4->Configure (IpIo->Ip.Ip4, NULL);\r
       goto ErrorExit;\r
     }\r
 \r
   } else {\r
 \r
     IpIo->Protocol = OpenData->IpConfigData.Ip6CfgData.DefaultProtocol;\r
-    Status = ((EFI_IP6_PROTOCOL *) Ip)->Receive (\r
-                                          (EFI_IP6_PROTOCOL *) Ip,\r
-                                          &(IpIo->RcvToken.Ip6Token)\r
-                                          );\r
+    Status = IpIo->Ip.Ip6->Receive (\r
+                             IpIo->Ip.Ip6,\r
+                             &(IpIo->RcvToken.Ip6Token)\r
+                             );\r
     if (EFI_ERROR (Status)) {\r
-      ((EFI_IP6_PROTOCOL *) Ip)->Configure ((EFI_IP6_PROTOCOL *) Ip, NULL);\r
+      IpIo->Ip.Ip6->Configure (IpIo->Ip.Ip6, NULL);\r
       goto ErrorExit;\r
     }\r
   }\r
@@ -1380,7 +1375,6 @@ IpIoStop (
   )\r
 {\r
   EFI_STATUS        Status;\r
-  VOID              *Ip;\r
   IP_IO_IP_INFO     *IpInfo;\r
   UINT8             IpVersion;\r
 \r
@@ -1397,15 +1391,13 @@ IpIoStop (
   //\r
   RemoveEntryList (&IpIo->Entry);\r
 \r
-  Ip = IpIo->Ip;\r
-\r
   //\r
   // Configure NULL Ip\r
   //\r
   if (IpVersion == IP_VERSION_4) {\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Configure ((EFI_IP4_PROTOCOL *) Ip, NULL);\r
+    Status = IpIo->Ip.Ip4->Configure (IpIo->Ip.Ip4, NULL);\r
   } else {\r
-    Status = ((EFI_IP6_PROTOCOL *) Ip)->Configure ((EFI_IP6_PROTOCOL *) Ip, NULL);\r
+    Status = IpIo->Ip.Ip6->Configure (IpIo->Ip.Ip6, NULL);\r
   }\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
@@ -1517,7 +1509,7 @@ IpIoSend (
   )\r
 {\r
   EFI_STATUS        Status;\r
-  VOID              *Ip;\r
+  IP_IO_IP_PROTOCOL Ip;\r
   IP_IO_SEND_ENTRY  *SndEntry;\r
 \r
   ASSERT ((IpIo->IpVersion != IP_VERSION_4) || (Dest != NULL));\r
@@ -1540,15 +1532,15 @@ IpIoSend (
   // Send this Packet\r
   //\r
   if (IpIo->IpVersion == IP_VERSION_4){\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Transmit (\r
-                                          (EFI_IP4_PROTOCOL *) Ip,\r
-                                          &SndEntry->SndToken.Ip4Token\r
-                                          );\r
+    Status = Ip.Ip4->Transmit (\r
+                       Ip.Ip4,\r
+                       &SndEntry->SndToken.Ip4Token\r
+                       );\r
   } else {\r
-    Status = ((EFI_IP6_PROTOCOL *) Ip)->Transmit (\r
-                                          (EFI_IP6_PROTOCOL *) Ip,\r
-                                          &SndEntry->SndToken.Ip6Token\r
-                                          );\r
+    Status = Ip.Ip6->Transmit (\r
+                       Ip.Ip6,\r
+                       &SndEntry->SndToken.Ip6Token\r
+                       );\r
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
@@ -1575,7 +1567,7 @@ IpIoCancelTxToken (
 {\r
   LIST_ENTRY        *Node;\r
   IP_IO_SEND_ENTRY  *SndEntry;\r
-  VOID              *Ip;\r
+  IP_IO_IP_PROTOCOL Ip;\r
 \r
   ASSERT ((IpIo != NULL) && (Packet != NULL));\r
 \r
@@ -1588,15 +1580,15 @@ IpIoCancelTxToken (
       Ip = SndEntry->Ip;\r
 \r
       if (IpIo->IpVersion == IP_VERSION_4) {\r
-        ((EFI_IP4_PROTOCOL *) Ip)->Cancel (\r
-                                     (EFI_IP4_PROTOCOL *) Ip,\r
-                                     &SndEntry->SndToken.Ip4Token\r
-                                     );\r
+        Ip.Ip4->Cancel (\r
+                  Ip.Ip4,\r
+                  &SndEntry->SndToken.Ip4Token\r
+                  );\r
       } else {\r
-        ((EFI_IP6_PROTOCOL *) Ip)->Cancel (\r
-                                     (EFI_IP6_PROTOCOL *) Ip,\r
-                                     &SndEntry->SndToken.Ip6Token\r
-                                     );\r
+        Ip.Ip6->Cancel (\r
+                  Ip.Ip6,\r
+                  &SndEntry->SndToken.Ip6Token\r
+                  );\r
       }\r
 \r
       break;\r
@@ -1730,7 +1722,7 @@ IpIoConfigIp (
   )\r
 {\r
   EFI_STATUS         Status;\r
-  VOID               *Ip;\r
+  IP_IO_IP_PROTOCOL  Ip;\r
   UINT8              IpVersion;\r
   EFI_IP4_MODE_DATA  Ip4ModeData;\r
   EFI_IP6_MODE_DATA  Ip6ModeData;\r
@@ -1753,9 +1745,9 @@ IpIoConfigIp (
   Ip = IpInfo->Ip;\r
 \r
   if (IpInfo->IpVersion == IP_VERSION_4) {\r
-    Status = ((EFI_IP4_PROTOCOL *) Ip)->Configure ((EFI_IP4_PROTOCOL *) Ip, IpConfigData);\r
+    Status = Ip.Ip4->Configure (Ip.Ip4, IpConfigData);\r
   } else {\r
-    Status = ((EFI_IP6_PROTOCOL *) Ip)->Configure ((EFI_IP6_PROTOCOL *) Ip, IpConfigData);\r
+    Status = Ip.Ip6->Configure (Ip.Ip6, IpConfigData);\r
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
@@ -1766,12 +1758,12 @@ IpIoConfigIp (
     if (IpInfo->IpVersion == IP_VERSION_4){\r
 \r
       if (((EFI_IP4_CONFIG_DATA *) IpConfigData)->UseDefaultAddress) {\r
-        ((EFI_IP4_PROTOCOL *) Ip)->GetModeData (\r
-                                     (EFI_IP4_PROTOCOL *) Ip\r
-                                     &Ip4ModeData, \r
-                                     NULL, \r
-                                     NULL\r
-                                     );\r
+        Ip.Ip4->GetModeData (\r
+                  Ip.Ip4\r
+                  &Ip4ModeData, \r
+                  NULL, \r
+                  NULL\r
+                  );\r
 \r
         ((EFI_IP4_CONFIG_DATA*) IpConfigData)->StationAddress = Ip4ModeData.ConfigData.StationAddress;\r
         ((EFI_IP4_CONFIG_DATA*) IpConfigData)->SubnetMask     = Ip4ModeData.ConfigData.SubnetMask;\r
@@ -1788,21 +1780,20 @@ IpIoConfigIp (
         sizeof (IP4_ADDR)\r
         );\r
 \r
-      Status = ((EFI_IP4_PROTOCOL *) Ip)->Receive (\r
-                                            (EFI_IP4_PROTOCOL *) Ip,\r
-                                            &IpInfo->DummyRcvToken.Ip4Token\r
-                                            );\r
+      Status = Ip.Ip4->Receive (\r
+                         Ip.Ip4,\r
+                         &IpInfo->DummyRcvToken.Ip4Token\r
+                         );\r
     if (EFI_ERROR (Status)) {\r
-        ((EFI_IP4_PROTOCOL*)Ip)->Configure (Ip, NULL);\r
+      Ip.Ip4->Configure (Ip.Ip4, NULL);\r
     }\r
   } else {\r
-\r
-      ((EFI_IP6_PROTOCOL *) Ip)->GetModeData (\r
-                                   (EFI_IP6_PROTOCOL *) Ip,\r
-                                   &Ip6ModeData,\r
-                                   NULL,\r
-                                   NULL\r
-                                   );\r
+    Ip.Ip6->GetModeData (\r
+              Ip.Ip6,\r
+              &Ip6ModeData,\r
+              NULL,\r
+              NULL\r
+              );\r
 \r
       if (Ip6ModeData.IsConfigured) {\r
         CopyMem (\r
@@ -1846,12 +1837,12 @@ IpIoConfigIp (
         sizeof (EFI_IPv6_ADDRESS)\r
         );\r
 \r
-      Status = ((EFI_IP6_PROTOCOL *) Ip)->Receive (\r
-                                            (EFI_IP6_PROTOCOL *) Ip,\r
-                                            &IpInfo->DummyRcvToken.Ip6Token\r
-                                            );\r
+      Status = Ip.Ip6->Receive (\r
+                         Ip.Ip6,\r
+                         &IpInfo->DummyRcvToken.Ip6Token\r
+                         );\r
       if (EFI_ERROR (Status)) {\r
-        ((EFI_IP6_PROTOCOL *) Ip)->Configure ((EFI_IP6_PROTOCOL *) Ip, NULL);\r
+        Ip.Ip6->Configure (Ip.Ip6, NULL);\r
       }\r
     }  \r
   } else {\r
@@ -1906,10 +1897,10 @@ IpIoRemoveIp (
   RemoveEntryList (&IpInfo->Entry);\r
 \r
   if (IpVersion == IP_VERSION_4){\r
-    ((EFI_IP4_PROTOCOL *) (IpInfo->Ip))->Configure (\r
-                                           (EFI_IP4_PROTOCOL *) (IpInfo->Ip),\r
-                                           NULL\r
-                                           );\r
+    IpInfo->Ip.Ip4->Configure (\r
+                      IpInfo->Ip.Ip4,\r
+                      NULL\r
+                      );\r
     IpIoCloseProtocolDestroyIpChild (\r
       IpIo->Controller,\r
       IpIo->Image,\r
@@ -1921,10 +1912,10 @@ IpIoRemoveIp (
 \r
   } else {\r
 \r
-    ((EFI_IP6_PROTOCOL *) (IpInfo->Ip))->Configure (\r
-                                           (EFI_IP6_PROTOCOL *) (IpInfo->Ip),\r
-                                           NULL\r
-                                           );\r
+    IpInfo->Ip.Ip6->Configure (\r
+                      IpInfo->Ip.Ip6,\r
+                      NULL\r
+                      );\r
 \r
     IpIoCloseProtocolDestroyIpChild (\r
       IpIo->Controller,\r
@@ -2151,7 +2142,7 @@ IpIoRefreshNeighbor (
     return EFI_NOT_STARTED;\r
   }\r
 \r
-  Ip = (EFI_IP6_PROTOCOL *) (IpIo->Ip);\r
+  Ip = IpIo->Ip.Ip6;\r
 \r
   return Ip->Neighbors (Ip, FALSE, &Neighbor->v6, NULL, Timeout, TRUE);\r
 }\r
index 2e2a664..536a16a 100644 (file)
@@ -39,14 +39,14 @@ Tcp4Route (
   IN TCP4_ROUTE_INFO  *RouteInfo\r
   )\r
 {\r
-  EFI_IP4_PROTOCOL  *Ip;\r
+  EFI_IP4_PROTOCOL  *Ip4;\r
 \r
-  Ip = Tcb->IpInfo->Ip;\r
+  Ip4 = Tcb->IpInfo->Ip.Ip4;\r
 \r
-  ASSERT (Ip != NULL);\r
+  ASSERT (Ip4 != NULL);\r
 \r
-  return Ip->Routes (\r
-              Ip,\r
+  return Ip4->Routes (\r
+              Ip4,\r
               RouteInfo->DeleteRoute,\r
               RouteInfo->SubnetAddress,\r
               RouteInfo->SubnetMask,\r
@@ -131,7 +131,7 @@ Tcp4GetMode (
     }\r
   }\r
 \r
-  Ip = Tcb->IpInfo->Ip;\r
+  Ip = Tcb->IpInfo->Ip.Ip4;\r
   ASSERT (Ip != NULL);\r
 \r
   return Ip->GetModeData (Ip, Mode->Ip4ModeData, Mode->MnpConfigData, Mode->SnpModeData);\r
@@ -607,7 +607,7 @@ Tcp4Dispatcher (
 \r
   switch (Request) {\r
   case SOCK_POLL:\r
-    Ip = (EFI_IP4_PROTOCOL *) (ProtoData->TcpService->IpIo->Ip);\r
+    Ip = ProtoData->TcpService->IpIo->Ip.Ip4;\r
     Ip->Poll (Ip);\r
     break;\r
 \r
index 245da86..afcaba4 100644 (file)
@@ -478,7 +478,7 @@ TcpGetRcvMss (
   ASSERT (Sock != NULL);\r
 \r
   TcpProto = (TCP4_PROTO_DATA *) Sock->ProtoReserved;\r
-  Ip       = (EFI_IP4_PROTOCOL *) (TcpProto->TcpService->IpIo->Ip);\r
+  Ip       = TcpProto->TcpService->IpIo->Ip.Ip4;\r
   ASSERT (Ip != NULL);\r
 \r
   Ip->GetModeData (Ip, &Ip4Mode, NULL, NULL);\r
index 2751cdc..bc07c18 100644 (file)
@@ -59,17 +59,17 @@ Udp4FindInstanceByPort (
 \r
   @param[in]  Status                 The completion status of the output udp datagram.\r
   @param[in]  Context                Pointer to the context data.\r
-  @param[in]  Sender                 Pointer to the Ip sender of the udp datagram.\r
+  @param[in]  Sender                 Specify a pointer of EFI_IP4_PROTOCOL for sending.\r
   @param[in]  NotifyData             Pointer to the notify data.\r
 \r
 **/\r
 VOID\r
 EFIAPI\r
 Udp4DgramSent (\r
-  IN EFI_STATUS  Status,\r
-  IN VOID        *Context,\r
-  IN VOID        *Sender,\r
-  IN VOID        *NotifyData\r
+  IN EFI_STATUS        Status,\r
+  IN VOID              *Context,\r
+  IN IP_IO_IP_PROTOCOL Sender,\r
+  IN VOID              *NotifyData\r
   );\r
 \r
 /**\r
@@ -989,17 +989,17 @@ Udp4RemoveToken (
 \r
   @param[in]  Status                 The completion status of the output udp datagram.\r
   @param[in]  Context                Pointer to the context data.\r
-  @param[in]  Sender                 Pointer to the Ip sender of the udp datagram.\r
+  @param[in]  Sender                 Specify a pointer of EFI_IP4_PROTOCOL for sending.\r
   @param[in]  NotifyData             Pointer to the notify data.\r
 \r
 **/\r
 VOID\r
 EFIAPI\r
 Udp4DgramSent (\r
-  IN EFI_STATUS  Status,\r
-  IN VOID        *Context,\r
-  IN VOID        *Sender,\r
-  IN VOID        *NotifyData\r
+  IN EFI_STATUS        Status,\r
+  IN VOID              *Context,\r
+  IN IP_IO_IP_PROTOCOL Sender,\r
+  IN VOID              *NotifyData\r
   )\r
 {\r
   UDP4_INSTANCE_DATA         *Instance;\r
index ed997e1..db1c4fd 100644 (file)
@@ -79,7 +79,7 @@ Udp4GetModeData (
     CopyMem (Udp4ConfigData, &Instance->ConfigData, sizeof (*Udp4ConfigData));\r
   }\r
 \r
-  Ip = Instance->IpInfo->Ip;\r
+  Ip = Instance->IpInfo->Ip.Ip4;\r
 \r
   //\r
   // Get the underlying Ip4ModeData, MnpConfigData and SnpModeData.\r
@@ -357,7 +357,7 @@ Udp4Groups (
     return EFI_NOT_STARTED;\r
   }\r
 \r
-  Ip = Instance->IpInfo->Ip;\r
+  Ip = Instance->IpInfo->Ip.Ip4;\r
 \r
   OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
 \r
@@ -457,7 +457,7 @@ Udp4Routes (
     return EFI_NOT_STARTED;\r
   }\r
 \r
-  Ip = Instance->IpInfo->Ip;\r
+  Ip = Instance->IpInfo->Ip.Ip4;\r
 \r
   //\r
   // Invoke the Ip instance the Udp4 instance consumes to do the actual operation.\r
@@ -900,7 +900,7 @@ Udp4Poll (
   }\r
 \r
   Instance = UDP4_INSTANCE_DATA_FROM_THIS (This);\r
-  Ip       = Instance->IpInfo->Ip;\r
+  Ip       = Instance->IpInfo->Ip.Ip4;\r
 \r
   //\r
   // Invode the Ip instance consumed by the udp instance to do the poll operation.\r