UINTN Index;\r
EFI_STATUS Status;\r
\r
- Private = NetAllocateZeroPool (sizeof (PXEBC_PRIVATE_DATA));\r
+ Private = AllocateZeroPool (sizeof (PXEBC_PRIVATE_DATA));\r
if (Private == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
goto ON_ERROR;\r
}\r
\r
+ Status = NetLibCreateServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiArpServiceBindingProtocolGuid,\r
+ &Private->ArpChild\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol (\r
+ Private->ArpChild,\r
+ &gEfiArpProtocolGuid,\r
+ (VOID **) &Private->Arp,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_BY_DRIVER\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
+\r
Status = NetLibCreateServiceChild (\r
ControllerHandle,\r
This->DriverBindingHandle,\r
goto ON_ERROR;\r
}\r
\r
- NetZeroMem (&Private->Udp4CfgData, sizeof (EFI_UDP4_CONFIG_DATA));\r
- Private->Udp4CfgData.AcceptBroadcast = TRUE;\r
+ ZeroMem (&Private->Udp4CfgData, sizeof (EFI_UDP4_CONFIG_DATA));\r
+ Private->Udp4CfgData.AcceptBroadcast = FALSE;\r
Private->Udp4CfgData.AcceptPromiscuous = FALSE;\r
Private->Udp4CfgData.AcceptAnyPort = FALSE;\r
Private->Udp4CfgData.AllowDuplicatePort = TRUE;\r
);\r
}\r
\r
- NetFreePool (Private);\r
+ if (Private->ArpChild != NULL) {\r
+ gBS->CloseProtocol (\r
+ Private->ArpChild,\r
+ &gEfiArpProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+\r
+ NetLibDestroyServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiArpServiceBindingProtocolGuid,\r
+ Private->ArpChild\r
+ );\r
+ }\r
+\r
+ gBS->FreePool (Private);\r
\r
return Status;\r
}\r
EFI_HANDLE NicHandle;\r
EFI_STATUS Status;\r
\r
- NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiDhcp4ProtocolGuid);\r
+ NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiArpProtocolGuid);\r
\r
if (NicHandle == NULL) {\r
\r
- NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiMtftp4ProtocolGuid);\r
+ NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiDhcp4ProtocolGuid);\r
\r
if (NicHandle == NULL) {\r
\r
- return EFI_DEVICE_ERROR;\r
+ NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiMtftp4ProtocolGuid);\r
+\r
+ if (NicHandle == NULL) {\r
+\r
+ return EFI_DEVICE_ERROR;\r
+\r
+ }\r
}\r
}\r
\r
Private->Mtftp4Child\r
);\r
\r
- NetFreePool (Private);\r
+ gBS->CloseProtocol (\r
+ Private->ArpChild,\r
+ &gEfiArpProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ NicHandle\r
+ );\r
+ NetLibDestroyServiceChild (\r
+ NicHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiArpServiceBindingProtocolGuid,\r
+ Private->ArpChild\r
+ );\r
+\r
+ gBS->FreePool (Private);\r
}\r
\r
return Status;\r