goto ON_ERROR;\r
}\r
\r
+ Status = NetLibCreateServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiIp4ServiceBindingProtocolGuid,\r
+ &Private->Ip4Child\r
+ );\r
+ if (EFI_ERROR (Status)) {\r
+ goto ON_ERROR;\r
+ }\r
+\r
+ Status = gBS->OpenProtocol (\r
+ Private->Ip4Child,\r
+ &gEfiIp4ProtocolGuid,\r
+ (VOID **) &Private->Ip4,\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
Private->Udp4CfgData.UseDefaultAddress = FALSE;\r
\r
PxeBcInitSeedPacket (&Private->SeedPacket, Private->Udp4);\r
+ Private->MacLen = Private->SeedPacket.Dhcp4.Header.HwAddrLen;\r
+ CopyMem (&Private->Mac, &Private->SeedPacket.Dhcp4.Header.ClientHwAddr[0], Private->MacLen);\r
+\r
+\r
+ ZeroMem (&Private->Ip4ConfigData, sizeof (EFI_IP4_CONFIG_DATA));\r
+ Private->Ip4ConfigData.DefaultProtocol = EFI_IP_PROTO_ICMP;\r
+ Private->Ip4ConfigData.AcceptIcmpErrors = TRUE;\r
+ Private->Ip4ConfigData.TypeOfService = DEFAULT_ToS;\r
+ Private->Ip4ConfigData.TimeToLive = DEFAULT_TTL;\r
+ Private->Ip4ConfigData.DoNotFragment = FALSE;\r
+ Private->Ip4ConfigData.RawData = FALSE;\r
\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&ControllerHandle,\r
);\r
}\r
\r
+ if (Private->Ip4Child != NULL) {\r
+ gBS->CloseProtocol (\r
+ Private->Ip4Child,\r
+ &gEfiIp4ProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+\r
+ NetLibDestroyServiceChild (\r
+ ControllerHandle,\r
+ This->DriverBindingHandle,\r
+ &gEfiIp4ServiceBindingProtocolGuid,\r
+ Private->Ip4Child\r
+ );\r
+ }\r
+\r
if (Private->Dhcp4Child != NULL) {\r
gBS->CloseProtocol (\r
Private->Dhcp4Child,\r