/** @file\r
\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
+Copyright (c) 2006 - 2008, 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
operation parameter.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4GetModeData (\r
}\r
\r
Instance = DHCP_INSTANCE_FROM_THIS (This);\r
- \r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
DhcpSb = Instance->Service;\r
\r
//\r
CopyMem (&Dhcp4ModeData->ClientMacAddress, &DhcpSb->Mac, sizeof (Dhcp4ModeData->ClientMacAddress));\r
\r
Ip = HTONL (DhcpSb->ClientAddr);\r
- NetCopyMem (&Dhcp4ModeData->ClientAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Dhcp4ModeData->ClientAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
\r
Ip = HTONL (DhcpSb->Netmask);\r
- NetCopyMem (&Dhcp4ModeData->SubnetMask, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Dhcp4ModeData->SubnetMask, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
\r
Ip = HTONL (DhcpSb->ServerAddr);\r
- NetCopyMem (&Dhcp4ModeData->ServerAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Dhcp4ModeData->ServerAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
\r
Para = DhcpSb->Para;\r
\r
if (Para != NULL) {\r
Ip = HTONL (Para->Router);\r
- NetCopyMem (&Dhcp4ModeData->RouterAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Dhcp4ModeData->RouterAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
Dhcp4ModeData->LeaseTime = Para->Lease;\r
} else {\r
- NetZeroMem (&Dhcp4ModeData->RouterAddress, sizeof (EFI_IPv4_ADDRESS));\r
+ ZeroMem (&Dhcp4ModeData->RouterAddress, sizeof (EFI_IPv4_ADDRESS));\r
Dhcp4ModeData->LeaseTime = 0xffffffff;\r
}\r
\r
Dhcp4ModeData->ReplyPacket = DhcpSb->Selected;\r
\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return EFI_SUCCESS;\r
}\r
\r
UINT32 Index;\r
\r
if (Config->DiscoverTimeout != NULL) {\r
- NetFreePool (Config->DiscoverTimeout);\r
+ gBS->FreePool (Config->DiscoverTimeout);\r
}\r
\r
if (Config->RequestTimeout != NULL) {\r
- NetFreePool (Config->RequestTimeout);\r
+ gBS->FreePool (Config->RequestTimeout);\r
}\r
\r
if (Config->OptionList != NULL) {\r
for (Index = 0; Index < Config->OptionCount; Index++) {\r
if (Config->OptionList[Index] != NULL) {\r
- NetFreePool (Config->OptionList[Index]);\r
+ gBS->FreePool (Config->OptionList[Index]);\r
}\r
}\r
\r
- NetFreePool (Config->OptionList);\r
+ gBS->FreePool (Config->OptionList);\r
}\r
\r
- NetZeroMem (Config, sizeof (EFI_DHCP4_CONFIG_DATA));\r
+ ZeroMem (Config, sizeof (EFI_DHCP4_CONFIG_DATA));\r
}\r
\r
\r
//\r
if (Src->DiscoverTimeout != NULL) {\r
Len = Src->DiscoverTryCount * sizeof (UINT32);\r
- Dst->DiscoverTimeout = NetAllocatePool (Len);\r
+ Dst->DiscoverTimeout = AllocatePool (Len);\r
\r
if (Dst->DiscoverTimeout == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
//\r
if (Src->RequestTimeout != NULL) {\r
Len = Src->RequestTryCount * sizeof (UINT32);\r
- Dst->RequestTimeout = NetAllocatePool (Len);\r
+ Dst->RequestTimeout = AllocatePool (Len);\r
\r
if (Dst->RequestTimeout == NULL) {\r
goto ON_ERROR;\r
//\r
if (Src->OptionList != NULL) {\r
Len = Src->OptionCount * sizeof (EFI_DHCP4_PACKET_OPTION *);\r
- Dst->OptionList = NetAllocateZeroPool (Len);\r
+ Dst->OptionList = AllocateZeroPool (Len);\r
\r
if (Dst->OptionList == NULL) {\r
goto ON_ERROR;\r
for (Index = 0; Index < Src->OptionCount; Index++) {\r
Len = sizeof (EFI_DHCP4_PACKET_OPTION) + MAX (SrcOptions[Index]->Length - 1, 0);\r
\r
- DstOptions[Index] = NetAllocatePool (Len);\r
+ DstOptions[Index] = AllocatePool (Len);\r
\r
if (DstOptions[Index] == NULL) {\r
goto ON_ERROR;\r
}\r
\r
- NetCopyMem (DstOptions[Index], SrcOptions[Index], Len);\r
+ CopyMem (DstOptions[Index], SrcOptions[Index], Len);\r
}\r
}\r
\r
DhcpSb->ActiveChild = NULL;\r
\r
if (Config->DiscoverTimeout != NULL) {\r
- NetFreePool (Config->DiscoverTimeout);\r
+ gBS->FreePool (Config->DiscoverTimeout);\r
\r
Config->DiscoverTryCount = 0;\r
Config->DiscoverTimeout = NULL;\r
}\r
\r
if (Config->RequestTimeout != NULL) {\r
- NetFreePool (Config->RequestTimeout);\r
+ gBS->FreePool (Config->RequestTimeout);\r
\r
Config->RequestTryCount = 0;\r
Config->RequestTimeout = NULL;\r
@retval EFI_SUCCESS The child is configured.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Configure (\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- NetCopyMem (&Ip, &Dhcp4CfgData->ClientAddress, sizeof (IP4_ADDR));\r
+ CopyMem (&Ip, &Dhcp4CfgData->ClientAddress, sizeof (IP4_ADDR));\r
\r
if ((Ip != 0) && !Ip4IsUnicast (NTOHL (Ip), 0)) {\r
\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
DhcpSb = Instance->Service;\r
Config = &DhcpSb->ActiveConfig;\r
}\r
\r
ON_EXIT:\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
@retval EFI_SUCCESS The DHCP process is started.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Start (\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
DhcpSb = Instance->Service;\r
\r
if (DhcpSb->DhcpState == Dhcp4Stopped) {\r
Instance->CompletionEvent = CompletionEvent;\r
\r
//\r
- // Restore the TPL now, don't call poll function at NET_TPL_LOCK.\r
+ // Restore the TPL now, don't call poll function at TPL_CALLBACK.\r
//\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
\r
if (CompletionEvent == NULL) {\r
while (DhcpSb->IoStatus == EFI_ALREADY_STARTED) {\r
return EFI_SUCCESS;\r
\r
ON_ERROR:\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
@retval EFI_SUCCESS The DHCP is renewed/rebound.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4RenewRebind (\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
DhcpSb = Instance->Service;\r
\r
if (DhcpSb->DhcpState == Dhcp4Stopped) {\r
DhcpSb->IoStatus = EFI_ALREADY_STARTED;\r
Instance->RenewRebindEvent = CompletionEvent;\r
\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
\r
if (CompletionEvent == NULL) {\r
while (DhcpSb->IoStatus == EFI_ALREADY_STARTED) {\r
return EFI_SUCCESS;\r
\r
ON_ERROR:\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
@retval EFI_SUCCESS The lease is released.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Release (\r
}\r
\r
Status = EFI_SUCCESS;\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
DhcpSb = Instance->Service;\r
\r
if ((DhcpSb->DhcpState != Dhcp4InitReboot) && (DhcpSb->DhcpState != Dhcp4Bound)) {\r
DhcpCleanLease (DhcpSb);\r
\r
ON_EXIT:\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return Status;\r
}\r
\r
@retval EFI_SUCCESS The DHCP process is stopped.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Stop (\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
DhcpSb = Instance->Service;\r
\r
DhcpCleanLease (DhcpSb);\r
DhcpSb->DhcpState = Dhcp4Stopped;\r
DhcpSb->ServiceState = DHCP_UNCONFIGED;\r
\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
return EFI_SUCCESS;\r
}\r
\r
@retval EFI_SUCCESS The packet is build.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Build (\r
);\r
}\r
\r
-STATIC\r
EFI_STATUS\r
Dhcp4InstanceConfigUdpIo (\r
IN UDP_IO_PORT *UdpIo,\r
DhcpSb = Instance->Service;\r
Token = Instance->Token;\r
\r
- NetZeroMem (&UdpConfigData, sizeof (EFI_UDP4_CONFIG_DATA));\r
+ ZeroMem (&UdpConfigData, sizeof (EFI_UDP4_CONFIG_DATA));\r
\r
UdpConfigData.AcceptBroadcast = TRUE;\r
UdpConfigData.AllowDuplicatePort = TRUE;\r
UdpConfigData.DoNotFragment = TRUE;\r
\r
Ip = HTONL (DhcpSb->ClientAddr);\r
- NetCopyMem (&UdpConfigData.StationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&UdpConfigData.StationAddress, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
\r
Ip = HTONL (DhcpSb->Netmask);\r
- NetCopyMem (&UdpConfigData.SubnetMask, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&UdpConfigData.SubnetMask, &Ip, sizeof (EFI_IPv4_ADDRESS));\r
\r
if ((Token->ListenPointCount == 0) || (Token->ListenPoints[0].ListenPort == 0)) {\r
UdpConfigData.StationPort = DHCP_CLIENT_PORT;\r
return UdpIo->Udp->Configure (UdpIo->Udp, &UdpConfigData);\r
}\r
\r
-STATIC\r
EFI_STATUS\r
Dhcp4InstanceCreateUdpIo (\r
IN DHCP_PROTOCOL *Instance\r
}\r
}\r
\r
-STATIC\r
VOID\r
DhcpDummyExtFree (\r
IN VOID *Arg\r
None\r
\r
--*/\r
-{ \r
+{\r
}\r
\r
VOID\r
}\r
\r
ASSERT (UdpPacket != NULL);\r
- \r
+\r
//\r
// Validate the packet received\r
//\r
if (UdpPacket->TotalSize < sizeof (EFI_DHCP4_HEADER)) {\r
goto RESTART;\r
}\r
- \r
+\r
//\r
// Copy the DHCP message to a continuous memory block, make the buffer size\r
// of the EFI_DHCP4_PACKET a multiple of 4-byte.\r
if (Packet->Length != UdpPacket->TotalSize) {\r
goto RESTART;\r
}\r
- \r
+\r
//\r
// Is this packet the answer to our packet?\r
//\r
if ((Head->OpCode != BOOTP_REPLY) ||\r
(Head->Xid != Token->Packet->Dhcp4.Header.Xid) ||\r
- !NET_MAC_EQUAL (&DhcpSb->Mac, Head->ClientHwAddr, DhcpSb->HwLen)) {\r
+ (CompareMem (DhcpSb->ClientAddressSendOut, Head->ClientHwAddr, Head->HwAddrLen) != 0)) {\r
goto RESTART;\r
}\r
- \r
+\r
//\r
// Validate the options and retrieve the interested options\r
//\r
\r
Token->ResponseCount = Instance->ResponseQueue.BufNum;\r
if (Token->ResponseCount != 0) {\r
- Token->ResponseList = (EFI_DHCP4_PACKET *) NetAllocatePool (Instance->ResponseQueue.BufSize);\r
+ Token->ResponseList = (EFI_DHCP4_PACKET *) AllocatePool (Instance->ResponseQueue.BufSize);\r
if (Token->ResponseList == NULL) {\r
Token->Status = EFI_OUT_OF_RESOURCES;\r
goto SIGNAL_USER;\r
\r
if (Token->CompletionEvent != NULL) {\r
gBS->SignalEvent (Token->CompletionEvent);\r
- } \r
+ }\r
}\r
\r
\r
/**\r
- Transmit and receive a packet through this DHCP service.\r
- This is unsupported.\r
+ Transmits a DHCP formatted packet and optionally waits for responses.\r
\r
- @param This The DHCP protocol instance\r
- @param Token The transmit and receive instance\r
+ @param This Pointer to the EFI_DHCP4_PROTOCOL instance.\r
+ @param Token Pointer to the EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN structure.\r
\r
- @retval EFI_UNSUPPORTED It always returns unsupported.\r
+ @retval EFI_SUCCESS The packet was successfully queued for transmission.\r
+ @retval EFI_INVALID_PARAMETER Some parameter is NULL.\r
+ @retval EFI_NOT_READY The previous call to this function has not finished yet. Try to call\r
+ this function after collection process completes.\r
+ @retval EFI_NO_MAPPING The default station address is not available yet.\r
+ @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated.\r
+ @retval Others Some other unexpected error occurred.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4TransmitReceive (\r
return EFI_NO_MAPPING;\r
}\r
\r
- OldTpl = NET_RAISE_TPL (NET_TPL_LOCK);\r
+ OldTpl = gBS->RaiseTPL (TPL_CALLBACK);\r
\r
//\r
// Save the token and the timeout value.\r
goto ON_ERROR;\r
}\r
\r
+ //\r
+ // Save the Client Address is sent out\r
+ //\r
+ CopyMem (&DhcpSb->ClientAddressSendOut[0], &Token->Packet->Dhcp4.Header.ClientHwAddr[0], Token->Packet->Dhcp4.Header.HwAddrLen);\r
+\r
//\r
// Wrap the DHCP packet into a net buffer.\r
//\r
//\r
// Set the destination address and destination port.\r
//\r
- NetCopyMem (&Ip, &Token->RemoteAddress, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Ip, &Token->RemoteAddress, sizeof (EFI_IPv4_ADDRESS));\r
EndPoint.RemoteAddr = NTOHL (Ip);\r
\r
if (Token->RemotePort == 0) {\r
SubnetMask = DhcpSb->Netmask;\r
Gateway = 0;\r
if (!IP4_NET_EQUAL (DhcpSb->ClientAddr, EndPoint.RemoteAddr, SubnetMask)) {\r
- NetCopyMem (&Gateway, &Token->GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
+ CopyMem (&Gateway, &Token->GatewayAddress, sizeof (EFI_IPv4_ADDRESS));\r
Gateway = NTOHL (Gateway);\r
}\r
\r
Instance->Token = NULL;\r
}\r
\r
- NET_RESTORE_TPL (OldTpl);\r
+ gBS->RestoreTPL (OldTpl);\r
\r
if (!EFI_ERROR (Status) && (Token->CompletionEvent == NULL)) {\r
//\r
@retval EFI_SUCCESS It always returns EFI_SUCCESS\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
Dhcp4ParseCheckOption (\r
IN UINT8 Tag,\r
@retval EFI_SUCCESS The options are parsed.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
EFIAPI\r
EfiDhcp4Parse (\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
\r
- NetZeroMem (PacketOptionList, *OptionCount * sizeof (EFI_DHCP4_PACKET_OPTION *));\r
+ ZeroMem (PacketOptionList, *OptionCount * sizeof (EFI_DHCP4_PACKET_OPTION *));\r
\r
Context.Option = PacketOptionList;\r
Context.OptionCount = *OptionCount;\r