]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Main.c
MdeModulePkg: Fix the wrong Timer event check
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Udp4Dxe / Udp4Main.c
index f6f32585a551e3cb5ca2d449a371c881e69cf423..bdb79b3abde33a52b1c38aa7c6479b5dc70126ff 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
 \r
-Copyright (c) 2006 - 2009, Intel Corporation.<BR>\r
-All rights reserved. This program and the accompanying materials\r
+(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
+Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>\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
@@ -79,7 +80,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
@@ -170,9 +171,9 @@ Udp4Configure (
 \r
 \r
     if (!UdpConfigData->UseDefaultAddress &&\r
-      (!IP4_IS_VALID_NETMASK (SubnetMask) ||\r
-      !((StationAddress == 0) || NetIp4IsUnicast (StationAddress, SubnetMask)) ||\r
-      !((RemoteAddress  == 0) || NetIp4IsUnicast (RemoteAddress, 0)))) {\r
+        (!IP4_IS_VALID_NETMASK (SubnetMask) ||\r
+         !((StationAddress == 0) || NetIp4IsUnicast (StationAddress, SubnetMask)) ||\r
+         IP4_IS_LOCAL_BROADCAST (RemoteAddress))) {\r
       //\r
       // Don't use default address, and subnet mask is invalid or StationAddress is not\r
       // a valid unicast IPv4 address or RemoteAddress is not a valid unicast IPv4 address\r
@@ -227,8 +228,8 @@ Udp4Configure (
       // Save the configuration data.\r
       //\r
       CopyMem (&Instance->ConfigData, UdpConfigData, sizeof (Instance->ConfigData));\r
-      Instance->ConfigData.StationAddress = Ip4ConfigData.StationAddress;\r
-      Instance->ConfigData.SubnetMask     = Ip4ConfigData.SubnetMask;\r
+      IP4_COPY_ADDRESS (&Instance->ConfigData.StationAddress, &Ip4ConfigData.StationAddress);\r
+      IP4_COPY_ADDRESS (&Instance->ConfigData.SubnetMask, &Ip4ConfigData.SubnetMask);\r
 \r
       //\r
       // Try to allocate the required port resource.\r
@@ -280,9 +281,7 @@ Udp4Configure (
 \r
     ASSERT (IsListEmpty (&Instance->DeliveredDgramQue));\r
   }\r
-\r
-  Udp4SetVariableData (Instance->Udp4Service);\r
-\r
\r
 ON_EXIT:\r
 \r
   gBS->RestoreTPL (OldTpl);\r
@@ -357,7 +356,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 +456,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
@@ -586,11 +585,11 @@ Udp4Transmit (
   //\r
   Udp4Header->SrcPort      = HTONS (ConfigData->StationPort);\r
   Udp4Header->DstPort      = HTONS (ConfigData->RemotePort);\r
-  Udp4Header->Length       = HTONS (Packet->TotalSize);\r
+  Udp4Header->Length       = HTONS ((UINT16) Packet->TotalSize);\r
   Udp4Header->Checksum     = 0;\r
 \r
   UdpSessionData = TxData->UdpSessionData;\r
-  Override.Ip4OverrideData.SourceAddress = ConfigData->StationAddress;\r
+  IP4_COPY_ADDRESS (&Override.Ip4OverrideData.SourceAddress, &ConfigData->StationAddress);\r
 \r
   if (UdpSessionData != NULL) {\r
     //\r
@@ -598,7 +597,7 @@ Udp4Transmit (
     // UdpSessionData.\r
     //\r
     if (!EFI_IP4_EQUAL (&UdpSessionData->SourceAddress, &mZeroIp4Addr)) {\r
-      CopyMem (&Override.Ip4OverrideData.SourceAddress, &UdpSessionData->SourceAddress, sizeof (EFI_IPv4_ADDRESS));\r
+      IP4_COPY_ADDRESS (&Override.Ip4OverrideData.SourceAddress, &UdpSessionData->SourceAddress);\r
     }\r
 \r
     if (UdpSessionData->SourcePort != 0) {\r
@@ -645,7 +644,7 @@ Udp4Transmit (
   // Fill the IpIo Override data.\r
   //\r
   if (TxData->GatewayAddress != NULL) {\r
-    CopyMem (&Override.Ip4OverrideData.GatewayAddress, TxData->GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
+    IP4_COPY_ADDRESS (&Override.Ip4OverrideData.GatewayAddress, TxData->GatewayAddress);\r
   } else {\r
     ZeroMem (&Override.Ip4OverrideData.GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
   }\r
@@ -900,7 +899,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