/*++\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
}\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
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
//\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
//\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
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
//\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
)\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
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
//\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
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
}\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
);\r
\r
if (AcquiredSrvList) {\r
- gBS->FreePool (ServerListPtr);\r
+ FreePool (ServerListPtr);\r
}\r
\r
FreeMem (Private);\r
--*/\r
{\r
EFI_PXE_BASE_CODE_MODE *PxebcMode;\r
- EFI_STATUS Status;\r
PXE_BASECODE_DEVICE *Private;\r
\r
//\r
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