]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Network/PxeBc/Dxe/pxe_bc_dhcp.c
Add some definitions for efi event in Uefi/UefiSpec.h to follow spec.
[mirror_edk2.git] / EdkModulePkg / Universal / Network / PxeBc / Dxe / pxe_bc_dhcp.c
index 101c030bc84ba468afd4d0cd7d5cf91942d75589..b557f4cae3abc1c3edd2f90f7b41999727785454 100644 (file)
@@ -1,6 +1,6 @@
 /*++\r
 \r
-Copyright (c) 2006, Intel Corporation\r
+Copyright (c) 2006 - 2007, Intel Corporation\r
 All rights reserved. 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
@@ -587,8 +587,8 @@ SetStationIP (
   }\r
 \r
   EfiStatus = gBS->CreateEvent (\r
-                    EFI_EVENT_TIMER,\r
-                    EFI_TPL_CALLBACK,\r
+                    EVT_TIMER,\r
+                    TPL_CALLBACK,\r
                     NULL,\r
                     NULL,\r
                     &Private->Igmpv1TimeoutEvent\r
@@ -621,8 +621,6 @@ AddRouters (
   DHCP_RECEIVE_BUFFER *RxBufPtr\r
   )\r
 {\r
-  Ip4AddRouter (Private, &RxBufPtr->u.Dhcpv4.giaddr);\r
-\r
   Ip4AddRouterList (\r
     Private,\r
     (DHCPV4_OP_IP_LIST *) RxBufPtr->OpAdds.PktOptAdds[OP_ROUTER_LIST_IX - 1]\r
@@ -1285,8 +1283,8 @@ GetOffers (
   //\r
   Private->GotProxy[DHCP_ONLY_IX] = 1;\r
   StatCode = gBS->CreateEvent (\r
-                    EFI_EVENT_TIMER,\r
-                    EFI_TPL_CALLBACK,\r
+                    EVT_TIMER,\r
+                    TPL_CALLBACK,\r
                     NULL,\r
                     NULL,\r
                     &TimeoutEvent\r
@@ -1524,8 +1522,8 @@ GetBINLAck (
   //\r
   //\r
   StatCode = gBS->CreateEvent (\r
-                    EFI_EVENT_TIMER,\r
-                    EFI_TPL_CALLBACK,\r
+                    EVT_TIMER,\r
+                    TPL_CALLBACK,\r
                     NULL,\r
                     NULL,\r
                     &TimeoutEvent\r
@@ -1609,14 +1607,19 @@ TryBINL (
   DhcpRxBuf = &RxBuf[OfferIx];\r
 \r
   //\r
-  // send DHCP request\r
-  // if fail return false\r
+  // use next server address first.\r
   //\r
-  CopyMem (\r
-    ((EFI_IPv4_ADDRESS *) &ServerIp),\r
-    &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
-    sizeof (EFI_IPv4_ADDRESS)\r
-    );\r
+  ServerIp.Addr[0] = DhcpRxBuf->u.Dhcpv4.siaddr;\r
+  if (ServerIp.Addr[0] == 0) {\r
+    //\r
+    // next server address is NULL, use option 54.\r
+    //\r
+    CopyMem (\r
+      ((EFI_IPv4_ADDRESS *) &ServerIp),\r
+      &((DHCPV4_OP_SERVER_IP *) DhcpRxBuf->OpAdds.PktOptAdds[OP_DHCP_SERVER_IP_IX - 1])->Ip,\r
+      sizeof (EFI_IPv4_ADDRESS)\r
+      );\r
+  }\r
 \r
   //\r
   // client IP address - filled in by client if it knows it\r
@@ -1767,8 +1770,8 @@ TryFinishDORA (
   //\r
   //\r
   StatCode = gBS->CreateEvent (\r
-                    EFI_EVENT_TIMER,\r
-                    EFI_TPL_CALLBACK,\r
+                    EVT_TIMER,\r
+                    TPL_CALLBACK,\r
                     NULL,\r
                     NULL,\r
                     &TimeoutEvent\r
@@ -2225,12 +2228,12 @@ FreeMem (
   )\r
 {\r
   if (Private->TransmitBuffer != NULL) {\r
-    gBS->FreePool (Private->TransmitBuffer);\r
+    FreePool (Private->TransmitBuffer);\r
     Private->TransmitBuffer = NULL;\r
   }\r
 \r
   if (Private->ReceiveBuffers != NULL) {\r
-    gBS->FreePool (Private->ReceiveBuffers);\r
+    FreePool (Private->ReceiveBuffers);\r
     Private->ReceiveBuffers = NULL;\r
   }\r
 }\r
@@ -2242,48 +2245,29 @@ GetMem (
   PXE_BASECODE_DEVICE *Private\r
   )\r
 {\r
-  EFI_STATUS  Status;\r
 \r
   if (Private->DhcpPacketBuffer == NULL) {\r
-    Status = gBS->AllocatePool (\r
-                    EfiBootServicesData,\r
-                    sizeof (DHCP_RECEIVE_BUFFER) * (PXE_BIS_INDEX + 1),\r
-                    &Private->DhcpPacketBuffer\r
-                    );\r
-\r
-    if (EFI_ERROR (Status) || Private->DhcpPacketBuffer == NULL) {\r
-      Private->DhcpPacketBuffer = NULL;\r
+    Private->DhcpPacketBuffer = AllocatePool (sizeof (DHCP_RECEIVE_BUFFER) * (PXE_BIS_INDEX + 1));\r
+    if (Private->DhcpPacketBuffer == NULL) {\r
       FreeMem (Private);\r
       return FALSE;\r
     }\r
   }\r
 \r
-  Status = gBS->AllocatePool (\r
-                  EfiBootServicesData,\r
-                  sizeof (EFI_PXE_BASE_CODE_PACKET),\r
-                  &Private->TransmitBuffer\r
-                  );\r
-\r
-  if (EFI_ERROR (Status) || Private->TransmitBuffer == NULL) {\r
-    gBS->FreePool (Private->DhcpPacketBuffer);\r
+  Private->TransmitBuffer = AllocatePool (sizeof (EFI_PXE_BASE_CODE_PACKET));\r
+  if (Private->TransmitBuffer == NULL) {\r
+    FreePool (Private->DhcpPacketBuffer);\r
     Private->DhcpPacketBuffer = NULL;\r
-    Private->TransmitBuffer   = NULL;\r
     FreeMem (Private);\r
     return FALSE;\r
   }\r
 \r
-  Status = gBS->AllocatePool (\r
-                  EfiBootServicesData,\r
-                  sizeof (DHCP_RECEIVE_BUFFER) * (MAX_OFFERS),\r
-                  &Private->ReceiveBuffers\r
-                  );\r
-\r
-  if (EFI_ERROR (Status) || Private->ReceiveBuffers == NULL) {\r
-    gBS->FreePool (Private->TransmitBuffer);\r
-    gBS->FreePool (Private->DhcpPacketBuffer);\r
+  Private->ReceiveBuffers = AllocatePool (sizeof (DHCP_RECEIVE_BUFFER) * (MAX_OFFERS));\r
+  if (Private->ReceiveBuffers == NULL) {\r
+    FreePool (Private->TransmitBuffer);\r
+    FreePool (Private->DhcpPacketBuffer);\r
     Private->DhcpPacketBuffer = NULL;\r
     Private->TransmitBuffer   = NULL;\r
-    Private->ReceiveBuffers   = NULL;\r
     FreeMem (Private);\r
     return FALSE;\r
   }\r
@@ -2615,8 +2599,8 @@ Returns:
     //\r
     //\r
     StatCode = gBS->CreateEvent (\r
-                      EFI_EVENT_TIMER,\r
-                      EFI_TPL_CALLBACK,\r
+                      EVT_TIMER,\r
+                      TPL_CALLBACK,\r
                       NULL,\r
                       NULL,\r
                       &TimeoutEvent\r
@@ -2922,7 +2906,6 @@ Returns:
   PXE_SERVER_LISTS                DefaultSrvList;\r
   PXE_SERVER_LISTS                *ServerListPtr;\r
   PXE_SERVER_LISTS                *McastServerListPtr;\r
-  EFI_STATUS                      Status;\r
   UNION_PTR                       LocalPtr;\r
   UINTN                           Index;\r
   UINTN                           Index2;\r
@@ -3122,14 +3105,11 @@ Returns:
     }\r
 \r
     if (ServerListPtr == NULL) {\r
-      Status = gBS->AllocatePool (\r
-                      EfiBootServicesData,\r
-                      sizeof (PXEV4_SERVER_LIST) + (Index2 - 1) * sizeof (EFI_IPv4_ADDRESS),\r
-                      (VOID **) &ServerListPtr\r
+      ServerListPtr = AllocatePool (\r
+                        sizeof (PXEV4_SERVER_LIST) + (Index2 - 1) * sizeof (EFI_IPv4_ADDRESS)\r
                       );\r
 \r
-      if (EFI_ERROR (Status) || ServerListPtr == NULL) {\r
-        ServerListPtr = NULL;\r
+      if (ServerListPtr == NULL) {\r
         EfiReleaseLock (&Private->Lock);\r
         return EFI_OUT_OF_RESOURCES;\r
       }\r
@@ -3175,7 +3155,7 @@ Returns:
               );\r
 \r
   if (AcquiredSrvList) {\r
-    gBS->FreePool (ServerListPtr);\r
+    FreePool (ServerListPtr);\r
   }\r
 \r
   FreeMem (Private);\r
@@ -3221,7 +3201,6 @@ Returns:
 --*/\r
 {\r
   EFI_PXE_BASE_CODE_MODE  *PxebcMode;\r
-  EFI_STATUS              Status;\r
   PXE_BASECODE_DEVICE     *Private;\r
 \r
   //\r
@@ -3251,14 +3230,8 @@ Returns:
   PxebcMode = Private->EfiBc.Mode;\r
 \r
   if (Private->DhcpPacketBuffer == NULL) {\r
-    Status = gBS->AllocatePool (\r
-                    EfiBootServicesData,\r
-                    sizeof (DHCP_RECEIVE_BUFFER) * (PXE_BIS_INDEX + 1),\r
-                    &Private->DhcpPacketBuffer\r
-                    );\r
-\r
-    if (EFI_ERROR (Status) || Private->DhcpPacketBuffer == NULL) {\r
-      Private->DhcpPacketBuffer = NULL;\r
+    Private->DhcpPacketBuffer = AllocatePool (sizeof (DHCP_RECEIVE_BUFFER) * (PXE_BIS_INDEX + 1));\r
+    if (Private->DhcpPacketBuffer == NULL) {\r
       EfiReleaseLock (&Private->Lock);\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r