]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Reconfigure the UdpRead instance if an error occurred in Dhcp, Discover and Mtftp...
authorsfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 16 Dec 2011 09:00:47 +0000 (09:00 +0000)
committersfu5 <sfu5@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 16 Dec 2011 09:00:47 +0000 (09:00 +0000)
Signed-off-by: sfu5
Reviewed-by: qianouyang
Reviewed-by: tye
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12884 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Network/UefiPxeBcDxe/PxeBcImpl.c
NetworkPkg/UefiPxeBcDxe/PxeBcDhcp6.c
NetworkPkg/UefiPxeBcDxe/PxeBcImpl.c

index 6f6d7f92ae58a797e1a181f2357b4190f9a60782..511e064873a246ce93d6a52bcc299e3b818fe458 100644 (file)
@@ -727,7 +727,7 @@ ON_EXIT:
     }\r
   }\r
 \r
-  Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+  Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
 \r
   //\r
   // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
@@ -1024,7 +1024,7 @@ EfiPxeBcDiscover (
     } else {\r
       Status = EFI_DEVICE_ERROR;\r
     }\r
-    return Status;\r
+    goto ON_EXIT;\r
   } else {\r
     PxeBcParseCachedDhcpPacket (&Private->PxeReply);\r
   }\r
@@ -1043,7 +1043,7 @@ EfiPxeBcDiscover (
 \r
 ON_EXIT:\r
 \r
-  Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+  Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
   \r
   //\r
   // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
@@ -1280,10 +1280,11 @@ EfiPxeBcMtftp (
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ON_EXIT;\r
   }\r
 \r
-  Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+ON_EXIT:\r
+  Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
   //\r
   // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP \r
   // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r
index 3e59f3f233441a51aa3fb0370ab6d6eff1434dc1..8715675472076534956f2945572545d7384aef2c 100644 (file)
@@ -1626,6 +1626,14 @@ PxeBcDhcp6Discover (
   }\r
   ReadSize = (UINTN) Reply->Size;\r
 \r
+  //\r
+  // Start Udp6Read instance\r
+  //\r
+  Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  \r
   Status = PxeBc->UdpRead (\r
                     PxeBc,\r
                     OpFlags,\r
@@ -1638,6 +1646,10 @@ PxeBcDhcp6Discover (
                     &ReadSize,\r
                     (VOID *) &Reply->Dhcp6\r
                     );\r
+  //\r
+  // Stop Udp6Read instance\r
+  //\r
+  Private->Udp6Read->Configure (Private->Udp6Read, NULL);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
index 00f1e4d39515f8aaf6206e5a148b91ebe3dc6d14..67abd48f4cc2aef9c532ad007bfaa3e066ac84c3 100644 (file)
@@ -430,13 +430,8 @@ EfiPxeBcDhcp (
     Status = PxeBcDhcp6Sarr (Private, Private->Dhcp6);\r
 \r
     if (EFI_ERROR (Status)) {\r
-      return Status;\r
+      goto ON_EXIT;\r
     }\r
-\r
-    //\r
-    // Configure Udp6Read instance\r
-    //\r
-    Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);    \r
   } else {\r
 \r
     //\r
@@ -450,15 +445,16 @@ EfiPxeBcDhcp (
     Status = PxeBcDhcp4Dora (Private, Private->Dhcp4);\r
 \r
     if (EFI_ERROR (Status)) {\r
-      return Status;\r
+      goto ON_EXIT;\r
     }\r
-\r
-    //\r
-    // Configure Udp4Read instance\r
-    //\r
-    Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
   }\r
-\r
+  \r
+ON_EXIT:\r
+  if (Mode->UsingIpv6) {\r
+    Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
+  } else {\r
+    Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
+  }\r
   //\r
   // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP\r
   // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r
@@ -692,7 +688,7 @@ EfiPxeBcDiscover (
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
-    return Status;    \r
+    goto ON_EXIT;\r
   } else {\r
     //\r
     // Parse the cached PXE reply packet, and store it into mode data if valid.\r
@@ -725,9 +721,9 @@ EfiPxeBcDiscover (
 ON_EXIT:\r
 \r
   if (Mode->UsingIpv6) {\r
-    Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);    \r
+    Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
   } else {\r
-    Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);    \r
+    Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
   }\r
   \r
   //\r
@@ -962,15 +958,15 @@ EfiPxeBcMtftp (
   }\r
 \r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto ON_EXIT;\r
   }\r
-\r
+  \r
+ON_EXIT:\r
   if (Mode->UsingIpv6) {\r
-    Status = Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);    \r
+    Private->Udp6Read->Configure (Private->Udp6Read, &Private->Udp6CfgData);\r
   } else {\r
-    Status = Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);    \r
+    Private->Udp4Read->Configure (Private->Udp4Read, &Private->Udp4CfgData);\r
   }\r
-\r
   //\r
   // Dhcp(), Discover(), and Mtftp() set the IP filter, and return with the IP\r
   // receive filter list emptied and the filter set to EFI_PXE_BASE_CODE_IP_FILTER_STATION_IP.\r