]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Impl.c
NetLib:
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Udp4Dxe / Udp4Impl.c
index 8d392eee1c4f16f869c9158b6c63c84fdd6d6126..b0bc0ae43df9f550747f4ff21d5937f8dc472132 100644 (file)
@@ -270,8 +270,9 @@ Udp4CreateService (
   IN     EFI_HANDLE         ControllerHandle\r
   )\r
 {\r
-  EFI_STATUS       Status;\r
-  IP_IO_OPEN_DATA  OpenData;\r
+  EFI_STATUS          Status;\r
+  IP_IO_OPEN_DATA     OpenData;\r
+  EFI_IP4_CONFIG_DATA *Ip4ConfigData;\r
 \r
   ZeroMem (Udp4Service, sizeof (UDP4_SERVICE_DATA));\r
 \r
@@ -286,7 +287,7 @@ Udp4CreateService (
   //\r
   // Create the IpIo for this service context.\r
   //\r
-  Udp4Service->IpIo = IpIoCreate (ImageHandle, ControllerHandle);\r
+  Udp4Service->IpIo = IpIoCreate (ImageHandle, ControllerHandle, IP_VERSION_4);\r
   if (Udp4Service->IpIo == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -294,12 +295,13 @@ Udp4CreateService (
   //\r
   // Set the OpenData used to open the IpIo.\r
   //\r
-  CopyMem (&OpenData.IpConfigData, &mIpIoDefaultIpConfigData, sizeof (OpenData.IpConfigData));\r
-  OpenData.IpConfigData.AcceptBroadcast = TRUE;\r
-  OpenData.RcvdContext                  = (VOID *) Udp4Service;\r
-  OpenData.SndContext                   = NULL;\r
-  OpenData.PktRcvdNotify                = Udp4DgramRcvd;\r
-  OpenData.PktSentNotify                = Udp4DgramSent;\r
+  Ip4ConfigData = &OpenData.IpConfigData.Ip4CfgData;\r
+  CopyMem (Ip4ConfigData, &mIp4IoDefaultIpConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
+  Ip4ConfigData->AcceptBroadcast = TRUE;\r
+  OpenData.RcvdContext           = (VOID *) Udp4Service;\r
+  OpenData.SndContext            = NULL;\r
+  OpenData.PktRcvdNotify         = Udp4DgramRcvd;\r
+  OpenData.PktSentNotify         = Udp4DgramSent;\r
 \r
   //\r
   // Configure and start the IpIo.\r
@@ -731,7 +733,7 @@ Udp4BuildIp4ConfigData (
   IN OUT EFI_IP4_CONFIG_DATA   *Ip4ConfigData\r
   )\r
 {\r
-  CopyMem (Ip4ConfigData, &mIpIoDefaultIpConfigData, sizeof (*Ip4ConfigData));\r
+  CopyMem (Ip4ConfigData, &mIp4IoDefaultIpConfigData, sizeof (*Ip4ConfigData));\r
 \r
   Ip4ConfigData->DefaultProtocol   = EFI_IP_PROTO_UDP;\r
   Ip4ConfigData->AcceptBroadcast   = Udp4ConfigData->AcceptBroadcast;\r
@@ -1592,7 +1594,7 @@ Udp4Demultiplex (
   IN NET_BUF               *Packet\r
   )\r
 {\r
-  EFI_UDP4_HEADER        *Udp4Header;\r
+  EFI_UDP_HEADER        *Udp4Header;\r
   UINT16                 HeadSum;\r
   EFI_UDP4_RECEIVE_DATA  RxData;\r
   EFI_UDP4_SESSION_DATA  *Udp4Session;\r
@@ -1601,15 +1603,15 @@ Udp4Demultiplex (
   //\r
   // Get the datagram header from the packet buffer.\r
   //\r
-  Udp4Header = (EFI_UDP4_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
+  Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
 \r
   if (Udp4Header->Checksum != 0) {\r
     //\r
     // check the checksum.\r
     //\r
     HeadSum = NetPseudoHeadChecksum (\r
-                NetSession->Source,\r
-                NetSession->Dest,\r
+                NetSession->Source.Addr[0],\r
+                NetSession->Dest.Addr[0],\r
                 EFI_IP_PROTO_UDP,\r
                 0\r
                 );\r
@@ -1689,7 +1691,7 @@ Udp4SendPortUnreach (
   IP_IO_OVERRIDE       Override;\r
   IP_IO_IP_INFO        *IpSender;\r
 \r
-  IpSender = IpIoFindSender (&IpIo, NetSession->Dest);\r
+  IpSender = IpIoFindSender (&IpIo, NetSession->IpVersion, &NetSession->Dest);\r
   if (IpSender == NULL) {\r
     //\r
     // No apropriate sender, since we cannot send out the ICMP message through\r
@@ -1698,7 +1700,7 @@ Udp4SendPortUnreach (
     return;\r
   }\r
 \r
-  IpHdr = NetSession->IpHdr;\r
+  IpHdr = NetSession->IpHdr.Ip4Hdr;\r
 \r
   //\r
   // Calculate the requried length of the icmp error message.\r
@@ -1747,18 +1749,18 @@ Udp4SendPortUnreach (
   //\r
   // Fill the override data.\r
   //\r
-  Override.DoNotFragment = FALSE;\r
-  Override.TypeOfService = 0;\r
-  Override.TimeToLive    = 255;\r
-  Override.Protocol      = EFI_IP_PROTO_ICMP;\r
+  Override.Ip4OverrideData.DoNotFragment = FALSE;\r
+  Override.Ip4OverrideData.TypeOfService = 0;\r
+  Override.Ip4OverrideData.TimeToLive    = 255;\r
+  Override.Ip4OverrideData.Protocol      = EFI_IP_PROTO_ICMP;\r
 \r
-  CopyMem (&Override.SourceAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
-  ZeroMem (&Override.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
+  CopyMem (&Override.Ip4OverrideData.SourceAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
+  ZeroMem (&Override.Ip4OverrideData.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
 \r
   //\r
   // Send out this icmp packet.\r
   //\r
-  IpIoSend (IpIo, Packet, IpSender, NULL, NULL, NetSession->Source, &Override);\r
+  IpIoSend (IpIo, Packet, IpSender, NULL, NULL, &NetSession->Source, &Override);\r
 \r
   NetbufFree (Packet);\r
 }\r
@@ -1783,12 +1785,12 @@ Udp4IcmpHandler (
   IN NET_BUF               *Packet\r
   )\r
 {\r
-  EFI_UDP4_HEADER        *Udp4Header;\r
+  EFI_UDP_HEADER        *Udp4Header;\r
   EFI_UDP4_SESSION_DATA  Udp4Session;\r
   LIST_ENTRY             *Entry;\r
   UDP4_INSTANCE_DATA     *Instance;\r
 \r
-  Udp4Header = (EFI_UDP4_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
+  Udp4Header = (EFI_UDP_HEADER *) NetbufGetByte (Packet, 0, NULL);\r
 \r
   CopyMem (&Udp4Session.SourceAddress, &NetSession->Source, sizeof (EFI_IPv4_ADDRESS));\r
   CopyMem (&Udp4Session.DestinationAddress, &NetSession->Dest, sizeof (EFI_IPv4_ADDRESS));\r
@@ -1819,7 +1821,7 @@ Udp4IcmpHandler (
       //\r
       // Translate the Icmp Error code according to the udp spec.\r
       //\r
-      Instance->IcmpError = IpIoGetIcmpErrStatus (IcmpError, NULL, NULL);\r
+      Instance->IcmpError = IpIoGetIcmpErrStatus (IcmpError, IP_VERSION_4, NULL, NULL);\r
 \r
       if (IcmpError > ICMP_ERR_UNREACH_PORT) {\r
         Instance->IcmpError = EFI_ICMP_ERROR;\r