1. Enabled SetIpFilter() in UefiPxeBcDxe module.

2. Ported Arp() in UefiPxeBcDxe module.
3. Sync tracker: enabled unload() for PxeBcDxe module.


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4813 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
vanjeff
2008-03-10 06:55:15 +00:00
parent 9e77c2c3b7
commit 8d285ec0ce
8 changed files with 377 additions and 25 deletions

View File

@@ -141,6 +141,7 @@ PxeBcDriverBindingStart (
UINTN Index;
EFI_STATUS Status;
CpuDeadLoop ();
Private = AllocateZeroPool (sizeof (PXEBC_PRIVATE_DATA));
if (Private == NULL) {
return EFI_OUT_OF_RESOURCES;
@@ -176,6 +177,28 @@ PxeBcDriverBindingStart (
goto ON_ERROR;
}
Status = NetLibCreateServiceChild (
ControllerHandle,
This->DriverBindingHandle,
&gEfiArpServiceBindingProtocolGuid,
&Private->ArpChild
);
if (EFI_ERROR (Status)) {
goto ON_ERROR;
}
Status = gBS->OpenProtocol (
Private->ArpChild,
&gEfiArpProtocolGuid,
(VOID **) &Private->Arp,
This->DriverBindingHandle,
ControllerHandle,
EFI_OPEN_PROTOCOL_BY_DRIVER
);
if (EFI_ERROR (Status)) {
goto ON_ERROR;
}
Status = NetLibCreateServiceChild (
ControllerHandle,
This->DriverBindingHandle,
@@ -247,7 +270,7 @@ PxeBcDriverBindingStart (
}
ZeroMem (&Private->Udp4CfgData, sizeof (EFI_UDP4_CONFIG_DATA));
Private->Udp4CfgData.AcceptBroadcast = TRUE;
Private->Udp4CfgData.AcceptBroadcast = FALSE;
Private->Udp4CfgData.AcceptPromiscuous = FALSE;
Private->Udp4CfgData.AcceptAnyPort = FALSE;
Private->Udp4CfgData.AllowDuplicatePort = TRUE;
@@ -322,6 +345,22 @@ ON_ERROR:
);
}
if (Private->ArpChild != NULL) {
gBS->CloseProtocol (
Private->ArpChild,
&gEfiArpProtocolGuid,
This->DriverBindingHandle,
ControllerHandle
);
NetLibDestroyServiceChild (
ControllerHandle,
This->DriverBindingHandle,
&gEfiArpServiceBindingProtocolGuid,
Private->ArpChild
);
}
gBS->FreePool (Private);
return Status;
@@ -433,6 +472,19 @@ PxeBcDriverBindingStop (
Private->Mtftp4Child
);
gBS->CloseProtocol (
Private->ArpChild,
&gEfiArpProtocolGuid,
This->DriverBindingHandle,
NicHandle
);
NetLibDestroyServiceChild (
NicHandle,
This->DriverBindingHandle,
&gEfiArpServiceBindingProtocolGuid,
Private->ArpChild
);
gBS->FreePool (Private);
}