]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Rrq.c
Sync the latest version from R8.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Mtftp4Dxe / Mtftp4Rrq.c
index 665114c7f8a3e2b415dfb9377fd900cab88d8a32..7c2114e7172a49fbc5003d1547853d059b64640c 100644 (file)
@@ -172,7 +172,7 @@ Mtftp4RrqSaveBlock (
       Mtftp4SendError (\r
         Instance,\r
         EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,\r
-        "User aborted download"\r
+        (UINT8 *) "User aborted download"\r
         );\r
 \r
       return EFI_ABORTED;\r
@@ -203,7 +203,7 @@ Mtftp4RrqSaveBlock (
       Mtftp4SendError (\r
         Instance,\r
         EFI_MTFTP4_ERRORCODE_DISK_FULL,\r
-        "User provided memory block is too small"\r
+        (UINT8 *) "User provided memory block is too small"\r
         );\r
 \r
       return EFI_BUFFER_TOO_SMALL;\r
@@ -412,6 +412,18 @@ Mtftp4RrqConfigMcastPort (
     return Status;\r
   }\r
 \r
+  if (!Config->UseDefaultSetting && !EFI_IP4_EQUAL (&mZeroIp4Addr, &Config->GatewayIp)) {\r
+    //\r
+    // The station IP address is manually configured and the Gateway IP is not 0.\r
+    // Add the default route for this UDP instance.\r
+    //\r
+    Status = McastIo->Udp->Routes (McastIo->Udp, FALSE, &mZeroIp4Addr, &mZeroIp4Addr, &Config->GatewayIp);\r
+    if (EFI_ERROR (Status)) {\r
+      McastIo->Udp->Configure (McastIo->Udp, NULL);\r
+      return Status;\r
+    }\r
+  }\r
+\r
   //\r
   // join the multicast group\r
   //\r
@@ -480,7 +492,7 @@ Mtftp4RrqHandleOack (
       Mtftp4SendError (\r
         Instance,\r
         EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,\r
-        "Mal-formated OACK packet"\r
+        (UINT8 *) "Mal-formated OACK packet"\r
         );\r
     }\r
 \r
@@ -501,7 +513,7 @@ Mtftp4RrqHandleOack (
         Mtftp4SendError (\r
           Instance,\r
           EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,\r
-          "Illegal multicast setting"\r
+          (UINT8 *) "Illegal multicast setting"\r
           );\r
 \r
         return EFI_TFTP_ERROR;\r
@@ -529,27 +541,27 @@ Mtftp4RrqHandleOack (
         Mtftp4SendError (\r
           Instance,\r
           EFI_MTFTP4_ERRORCODE_ACCESS_VIOLATION,\r
-          "Failed to create socket to receive multicast packet"\r
+          (UINT8 *) "Failed to create socket to receive multicast packet"\r
           );\r
 \r
         return Status;\r
       }\r
-\r
+    \r
       //\r
       // Update the parameters used.\r
       //\r
       if (Reply.BlkSize != 0) {\r
         Instance->BlkSize = Reply.BlkSize;\r
       }\r
-\r
+      \r
       if (Reply.Timeout != 0) {\r
         Instance->Timeout = Reply.Timeout;\r
-      }\r
-    }\r
-\r
+      }  \r
+    }    \r
+    \r
   } else {\r
     Instance->Master = TRUE;\r
-\r
+    \r
     if (Reply.BlkSize != 0) {\r
       Instance->BlkSize = Reply.BlkSize;\r
     }\r
@@ -558,7 +570,7 @@ Mtftp4RrqHandleOack (
       Instance->Timeout = Reply.Timeout;\r
     }\r
   }\r
-\r
+  \r
   //\r
   // Send an ACK to (Expected - 1) which is 0 for unicast download,\r
   // or tell the server we want to receive the Expected block.\r
@@ -675,7 +687,7 @@ Mtftp4RrqInput (
         Mtftp4SendError (\r
           Instance,\r
           EFI_MTFTP4_ERRORCODE_REQUEST_DENIED,\r
-          "User aborted the transfer"\r
+          (UINT8 *) "User aborted the transfer"\r
           );\r
       }\r
 \r