]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Impl.c
MdeModulePkg: Refine casting expression result to bigger size
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Udp4Dxe / Udp4Impl.c
index df95077aac9ead1c40614a0b427fc0ec69d3f0c4..df41433a1a8dd30b1305d60096315d78f170b687 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   The implementation of the Udp4 protocol.\r
   \r
-Copyright (c) 2006 - 2016 Intel Corporation. All rights reserved.<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
@@ -200,10 +200,10 @@ Udp4DeliverDgram (
   );\r
 \r
 /**\r
-  This function demultiplexes the received udp datagram to the apropriate instances.\r
+  This function demultiplexes the received udp datagram to the appropriate instances.\r
 \r
   @param[in]  Udp4Service            Pointer to the udp service context data.\r
-  @param[in]  NetSession             Pointer to the EFI_NET_SESSION_DATA abstrated from\r
+  @param[in]  NetSession             Pointer to the EFI_NET_SESSION_DATA abstracted from\r
                                      the received datagram.\r
   @param[in]  Packet                 Pointer to the buffer containing the received udp\r
                                      datagram.\r
@@ -827,7 +827,9 @@ Udp4ValidateTxToken (
   if (TxData->GatewayAddress != NULL) {\r
     CopyMem (&GatewayAddress, TxData->GatewayAddress, sizeof (IP4_ADDR));\r
 \r
-    if (!NetIp4IsUnicast (NTOHL (GatewayAddress), 0)) {\r
+    if (!Instance->ConfigData.UseDefaultAddress &&\r
+        (EFI_NTOHL(Instance->ConfigData.SubnetMask) != 0) &&\r
+        !NetIp4IsUnicast (NTOHL (GatewayAddress), EFI_NTOHL(Instance->ConfigData.SubnetMask))) {\r
       //\r
       // The specified GatewayAddress is not a unicast IPv4 address while it's not 0.\r
       //\r
@@ -842,7 +844,10 @@ Udp4ValidateTxToken (
 \r
     CopyMem (&SourceAddress, &UdpSessionData->SourceAddress, sizeof (IP4_ADDR));\r
 \r
-    if ((SourceAddress != 0) && !NetIp4IsUnicast (HTONL (SourceAddress), 0)) {\r
+    if ((SourceAddress != 0) && \r
+        !Instance->ConfigData.UseDefaultAddress &&\r
+        (EFI_NTOHL(Instance->ConfigData.SubnetMask) != 0) &&\r
+        !NetIp4IsUnicast (HTONL (SourceAddress), EFI_NTOHL(Instance->ConfigData.SubnetMask))) {\r
       //\r
       // Check whether SourceAddress is a valid IPv4 address in case it's not zero.\r
       // The configured station address is used if SourceAddress is zero.\r
@@ -1586,10 +1591,10 @@ Udp4DeliverDgram (
 \r
 \r
 /**\r
-  This function demultiplexes the received udp datagram to the apropriate instances.\r
+  This function demultiplexes the received udp datagram to the appropriate instances.\r
 \r
   @param[in]  Udp4Service            Pointer to the udp service context data.\r
-  @param[in]  NetSession             Pointer to the EFI_NET_SESSION_DATA abstrated from\r
+  @param[in]  NetSession             Pointer to the EFI_NET_SESSION_DATA abstracted from\r
                                      the received datagram.\r
   @param[in]  Packet                 Pointer to the buffer containing the received udp\r
                                      datagram.\r
@@ -1707,7 +1712,7 @@ Udp4SendPortUnreach (
   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
+    // No appropriate sender, since we cannot send out the ICMP message through\r
     // the default zero station address IP instance, abort.\r
     //\r
     return;\r
@@ -1716,7 +1721,7 @@ Udp4SendPortUnreach (
   IpHdr = NetSession->IpHdr.Ip4Hdr;\r
 \r
   //\r
-  // Calculate the requried length of the icmp error message.\r
+  // Calculate the required length of the icmp error message.\r
   //\r
   Len = sizeof (IP4_ICMP_ERROR_HEAD) + (EFI_IP4_HEADER_LEN (IpHdr) -\r
         sizeof (IP4_HEAD)) + ICMP_ERROR_PACKET_LENGTH;\r