48 if (NicHandle ==
NULL) {
50 if (NicHandle ==
NULL) {
52 if (NicHandle ==
NULL) {
54 if (NicHandle ==
NULL) {
56 if (NicHandle ==
NULL) {
83 if (NicHandle ==
NULL) {
85 if (NicHandle ==
NULL) {
87 if (NicHandle ==
NULL) {
89 if (NicHandle ==
NULL) {
112 ASSERT (Private !=
NULL);
114 if (Private->ArpChild !=
NULL) {
120 &gEfiArpProtocolGuid,
121 This->DriverBindingHandle,
127 This->DriverBindingHandle,
128 &gEfiArpServiceBindingProtocolGuid,
133 if (Private->Ip4Child !=
NULL) {
139 &gEfiIp4ProtocolGuid,
140 This->DriverBindingHandle,
146 This->DriverBindingHandle,
147 &gEfiIp4ServiceBindingProtocolGuid,
152 if (Private->Udp4WriteChild !=
NULL) {
157 Private->Udp4WriteChild,
158 &gEfiUdp4ProtocolGuid,
159 This->DriverBindingHandle,
165 This->DriverBindingHandle,
166 &gEfiUdp4ServiceBindingProtocolGuid,
167 Private->Udp4WriteChild
171 if (Private->Udp4ReadChild !=
NULL) {
176 Private->Udp4ReadChild,
177 &gEfiUdp4ProtocolGuid,
178 This->DriverBindingHandle,
184 This->DriverBindingHandle,
185 &gEfiUdp4ServiceBindingProtocolGuid,
186 Private->Udp4ReadChild
190 if (Private->Mtftp4Child !=
NULL) {
195 Private->Mtftp4Child,
196 &gEfiMtftp4ProtocolGuid,
197 This->DriverBindingHandle,
203 This->DriverBindingHandle,
204 &gEfiMtftp4ServiceBindingProtocolGuid,
209 if (Private->Dhcp4Child !=
NULL) {
215 &gEfiDhcp4ProtocolGuid,
216 This->DriverBindingHandle,
222 This->DriverBindingHandle,
223 &gEfiDhcp4ServiceBindingProtocolGuid,
228 if (Private->Ip4Nic !=
NULL) {
235 This->DriverBindingHandle,
236 Private->Ip4Nic->Controller
239 gBS->UninstallMultipleProtocolInterfaces (
240 Private->Ip4Nic->Controller,
241 &gEfiDevicePathProtocolGuid,
242 Private->Ip4Nic->DevicePath,
243 &gEfiLoadFileProtocolGuid,
244 &Private->Ip4Nic->LoadFile,
245 &gEfiPxeBaseCodeProtocolGuid,
249 FreePool (Private->Ip4Nic->DevicePath);
251 if (Private->Snp !=
NULL) {
256 Private->Ip4Nic->Controller,
257 &gEfiSimpleNetworkProtocolGuid,
258 This->DriverBindingHandle,
259 Private->Ip4Nic->Controller
262 gBS->UninstallProtocolInterface (
263 Private->Ip4Nic->Controller,
264 &gEfiSimpleNetworkProtocolGuid,
272 Private->ArpChild =
NULL;
273 Private->Ip4Child =
NULL;
274 Private->Udp4WriteChild =
NULL;
275 Private->Udp4ReadChild =
NULL;
276 Private->Mtftp4Child =
NULL;
277 Private->Dhcp4Child =
NULL;
278 Private->Ip4Nic =
NULL;
294 ASSERT (Private !=
NULL);
296 if (Private->Ip6Child !=
NULL) {
302 &gEfiIp6ProtocolGuid,
303 This->DriverBindingHandle,
309 This->DriverBindingHandle,
310 &gEfiIp6ServiceBindingProtocolGuid,
315 if (Private->Udp6WriteChild !=
NULL) {
320 Private->Udp6WriteChild,
321 &gEfiUdp6ProtocolGuid,
322 This->DriverBindingHandle,
327 This->DriverBindingHandle,
328 &gEfiUdp6ServiceBindingProtocolGuid,
329 Private->Udp6WriteChild
333 if (Private->Udp6ReadChild !=
NULL) {
338 Private->Udp6ReadChild,
339 &gEfiUdp6ProtocolGuid,
340 This->DriverBindingHandle,
345 This->DriverBindingHandle,
346 &gEfiUdp6ServiceBindingProtocolGuid,
347 Private->Udp6ReadChild
351 if (Private->Mtftp6Child !=
NULL) {
356 Private->Mtftp6Child,
357 &gEfiMtftp6ProtocolGuid,
358 This->DriverBindingHandle,
364 This->DriverBindingHandle,
365 &gEfiMtftp6ServiceBindingProtocolGuid,
370 if (Private->Dhcp6Child !=
NULL) {
376 &gEfiDhcp6ProtocolGuid,
377 This->DriverBindingHandle,
383 This->DriverBindingHandle,
384 &gEfiDhcp6ServiceBindingProtocolGuid,
389 if (Private->Ip6Nic !=
NULL) {
396 This->DriverBindingHandle,
397 Private->Ip6Nic->Controller
400 gBS->UninstallMultipleProtocolInterfaces (
401 Private->Ip6Nic->Controller,
402 &gEfiDevicePathProtocolGuid,
403 Private->Ip6Nic->DevicePath,
404 &gEfiLoadFileProtocolGuid,
405 &Private->Ip6Nic->LoadFile,
406 &gEfiPxeBaseCodeProtocolGuid,
410 FreePool (Private->Ip6Nic->DevicePath);
412 if (Private->Snp !=
NULL) {
417 Private->Ip6Nic->Controller,
418 &gEfiSimpleNetworkProtocolGuid,
419 This->DriverBindingHandle,
420 Private->Ip6Nic->Controller
422 gBS->UninstallProtocolInterface (
423 Private->Ip6Nic->Controller,
424 &gEfiSimpleNetworkProtocolGuid,
432 Private->Ip6Child =
NULL;
433 Private->Udp6WriteChild =
NULL;
434 Private->Udp6ReadChild =
NULL;
435 Private->Mtftp6Child =
NULL;
436 Private->Dhcp6Child =
NULL;
437 Private->Ip6Nic =
NULL;
438 Private->Mode.Ipv6Available =
FALSE;
456 OUT BOOLEAN *Ipv6Support
463 UINTN InfoTypeBufferCount;
469 ASSERT (Private !=
NULL && Ipv6Support !=
NULL);
474 if (Private->Nii !=
NULL) {
475 *Ipv6Support = Private->Nii->Ipv6Supported;
487 if (Handle ==
NULL) {
488 return EFI_NOT_FOUND;
492 Status =
gBS->HandleProtocol (
494 &gEfiAdapterInformationProtocolGuid,
497 if (EFI_ERROR (Status) || (Aip ==
NULL)) {
498 return EFI_NOT_FOUND;
501 InfoTypesBuffer =
NULL;
502 InfoTypeBufferCount = 0;
503 Status = Aip->GetSupportedTypes (Aip, &InfoTypesBuffer, &InfoTypeBufferCount);
504 if (EFI_ERROR (Status) || (InfoTypesBuffer ==
NULL)) {
506 return EFI_NOT_FOUND;
510 for (TypeIndex = 0; TypeIndex < InfoTypeBufferCount; TypeIndex++) {
511 if (
CompareGuid (&InfoTypesBuffer[TypeIndex], &gEfiAdapterInfoUndiIpv6SupportGuid)) {
519 return EFI_NOT_FOUND;
527 Status = Aip->GetInformation (Aip, &gEfiAdapterInfoUndiIpv6SupportGuid, &InfoBlock, &InfoBlockSize);
528 if (EFI_ERROR (Status) || (InfoBlock ==
NULL)) {
530 return EFI_NOT_FOUND;
565 if (Private->Ip4Nic !=
NULL) {
577 This->DriverBindingHandle,
578 &gEfiDhcp4ServiceBindingProtocolGuid,
581 if (EFI_ERROR (Status)) {
585 Status =
gBS->OpenProtocol (
587 &gEfiDhcp4ProtocolGuid,
588 (VOID **)&Private->Dhcp4,
589 This->DriverBindingHandle,
591 EFI_OPEN_PROTOCOL_BY_DRIVER
593 if (EFI_ERROR (Status)) {
602 This->DriverBindingHandle,
603 &gEfiMtftp4ServiceBindingProtocolGuid,
604 &Private->Mtftp4Child
606 if (EFI_ERROR (Status)) {
610 Status =
gBS->OpenProtocol (
611 Private->Mtftp4Child,
612 &gEfiMtftp4ProtocolGuid,
613 (VOID **)&Private->Mtftp4,
614 This->DriverBindingHandle,
616 EFI_OPEN_PROTOCOL_BY_DRIVER
618 if (EFI_ERROR (Status)) {
627 This->DriverBindingHandle,
628 &gEfiUdp4ServiceBindingProtocolGuid,
629 &Private->Udp4ReadChild
631 if (EFI_ERROR (Status)) {
635 Status =
gBS->OpenProtocol (
636 Private->Udp4ReadChild,
637 &gEfiUdp4ProtocolGuid,
638 (VOID **)&Private->Udp4Read,
639 This->DriverBindingHandle,
641 EFI_OPEN_PROTOCOL_BY_DRIVER
643 if (EFI_ERROR (Status)) {
652 This->DriverBindingHandle,
653 &gEfiUdp4ServiceBindingProtocolGuid,
654 &Private->Udp4WriteChild
656 if (EFI_ERROR (Status)) {
660 Status =
gBS->OpenProtocol (
661 Private->Udp4WriteChild,
662 &gEfiUdp4ProtocolGuid,
663 (VOID **)&Private->Udp4Write,
664 This->DriverBindingHandle,
666 EFI_OPEN_PROTOCOL_BY_DRIVER
668 if (EFI_ERROR (Status)) {
677 This->DriverBindingHandle,
678 &gEfiArpServiceBindingProtocolGuid,
681 if (EFI_ERROR (Status)) {
685 Status =
gBS->OpenProtocol (
687 &gEfiArpProtocolGuid,
688 (VOID **)&Private->Arp,
689 This->DriverBindingHandle,
691 EFI_OPEN_PROTOCOL_BY_DRIVER
693 if (EFI_ERROR (Status)) {
702 This->DriverBindingHandle,
703 &gEfiIp4ServiceBindingProtocolGuid,
706 if (EFI_ERROR (Status)) {
710 Status =
gBS->OpenProtocol (
712 &gEfiIp4ProtocolGuid,
713 (VOID **)&Private->Ip4,
714 This->DriverBindingHandle,
716 EFI_OPEN_PROTOCOL_BY_DRIVER
718 if (EFI_ERROR (Status)) {
725 Status = Private->Ip4->GetModeData (Private->Ip4, &Ip4ModeData,
NULL,
NULL);
726 if (EFI_ERROR (Status)) {
733 if (Private->Ip4Nic ==
NULL) {
734 return EFI_OUT_OF_RESOURCES;
737 Private->Ip4Nic->Private = Private;
738 Private->Ip4Nic->Signature = PXEBC_VIRTUAL_NIC_SIGNATURE;
743 Status =
gBS->HandleProtocol (
745 &gEfiIp4Config2ProtocolGuid,
746 (VOID **)&Private->Ip4Config2
748 if (EFI_ERROR (Status)) {
764 if (Private->Ip4Nic->DevicePath ==
NULL) {
765 Status = EFI_OUT_OF_RESOURCES;
770 &Private->Ip4Nic->LoadFile,
771 &gLoadFileProtocolTemplate,
779 Status =
gBS->InstallMultipleProtocolInterfaces (
780 &Private->Ip4Nic->Controller,
781 &gEfiDevicePathProtocolGuid,
782 Private->Ip4Nic->DevicePath,
783 &gEfiLoadFileProtocolGuid,
784 &Private->Ip4Nic->LoadFile,
785 &gEfiPxeBaseCodeProtocolGuid,
789 if (EFI_ERROR (Status)) {
793 if (Private->Snp !=
NULL) {
798 Status =
gBS->InstallProtocolInterface (
799 &Private->Ip4Nic->Controller,
800 &gEfiSimpleNetworkProtocolGuid,
804 if (EFI_ERROR (Status)) {
812 Status =
gBS->OpenProtocol (
813 Private->Ip4Nic->Controller,
814 &gEfiSimpleNetworkProtocolGuid,
816 This->DriverBindingHandle,
817 Private->Ip4Nic->Controller,
818 EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE
820 if (EFI_ERROR (Status)) {
829 Status =
gBS->OpenProtocol (
833 This->DriverBindingHandle,
834 Private->Ip4Nic->Controller,
835 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
837 if (EFI_ERROR (Status)) {
844 Mode = Private->PxeBc.Mode;
845 Udp4CfgData = &Private->Udp4CfgData;
846 Ip4CfgData = &Private->Ip4CfgData;
848 Udp4CfgData->AcceptBroadcast =
FALSE;
849 Udp4CfgData->AcceptAnyPort =
TRUE;
850 Udp4CfgData->AllowDuplicatePort =
TRUE;
851 Udp4CfgData->TypeOfService = Mode->ToS;
852 Udp4CfgData->TimeToLive = Mode->TTL;
853 Udp4CfgData->ReceiveTimeout = PXEBC_DEFAULT_LIFETIME;
854 Udp4CfgData->TransmitTimeout = PXEBC_DEFAULT_LIFETIME;
899 if (EFI_ERROR (Status)) {
900 DEBUG ((DEBUG_ERROR,
"Failed to generate random number using EFI_RNG_PROTOCOL: %r\n", Status));
904 if (Private->Ip6Nic !=
NULL) {
913 if (Private->Ip6Nic ==
NULL) {
914 return EFI_OUT_OF_RESOURCES;
917 Private->Ip6Nic->Private = Private;
918 Private->Ip6Nic->Signature = PXEBC_VIRTUAL_NIC_SIGNATURE;
925 This->DriverBindingHandle,
926 &gEfiDhcp6ServiceBindingProtocolGuid,
929 if (EFI_ERROR (Status)) {
933 Status =
gBS->OpenProtocol (
935 &gEfiDhcp6ProtocolGuid,
936 (VOID **)&Private->Dhcp6,
937 This->DriverBindingHandle,
939 EFI_OPEN_PROTOCOL_BY_DRIVER
941 if (EFI_ERROR (Status)) {
948 Private->IaId = Random;
949 if (Private->Snp !=
NULL) {
950 for (Index = 0; Index < Private->Snp->Mode->HwAddressSize; Index++) {
951 Private->IaId |= (Private->Snp->Mode->CurrentAddress.Addr[Index] << ((Index << 3) & 31));
960 This->DriverBindingHandle,
961 &gEfiMtftp6ServiceBindingProtocolGuid,
962 &Private->Mtftp6Child
964 if (EFI_ERROR (Status)) {
968 Status =
gBS->OpenProtocol (
969 Private->Mtftp6Child,
970 &gEfiMtftp6ProtocolGuid,
971 (VOID **)&Private->Mtftp6,
972 This->DriverBindingHandle,
974 EFI_OPEN_PROTOCOL_BY_DRIVER
976 if (EFI_ERROR (Status)) {
985 This->DriverBindingHandle,
986 &gEfiUdp6ServiceBindingProtocolGuid,
987 &Private->Udp6ReadChild
989 if (EFI_ERROR (Status)) {
993 Status =
gBS->OpenProtocol (
994 Private->Udp6ReadChild,
995 &gEfiUdp6ProtocolGuid,
996 (VOID **)&Private->Udp6Read,
997 This->DriverBindingHandle,
999 EFI_OPEN_PROTOCOL_BY_DRIVER
1001 if (EFI_ERROR (Status)) {
1010 This->DriverBindingHandle,
1011 &gEfiUdp6ServiceBindingProtocolGuid,
1012 &Private->Udp6WriteChild
1014 if (EFI_ERROR (Status)) {
1018 Status =
gBS->OpenProtocol (
1019 Private->Udp6WriteChild,
1020 &gEfiUdp6ProtocolGuid,
1021 (VOID **)&Private->Udp6Write,
1022 This->DriverBindingHandle,
1024 EFI_OPEN_PROTOCOL_BY_DRIVER
1026 if (EFI_ERROR (Status)) {
1035 This->DriverBindingHandle,
1036 &gEfiIp6ServiceBindingProtocolGuid,
1039 if (EFI_ERROR (Status)) {
1043 Status =
gBS->OpenProtocol (
1045 &gEfiIp6ProtocolGuid,
1046 (VOID **)&Private->Ip6,
1047 This->DriverBindingHandle,
1049 EFI_OPEN_PROTOCOL_BY_DRIVER
1051 if (EFI_ERROR (Status)) {
1058 Status = Private->Ip6->GetModeData (Private->Ip6, &Ip6ModeData,
NULL,
NULL);
1059 if (EFI_ERROR (Status)) {
1092 Status =
gBS->HandleProtocol (
1094 &gEfiIp6ConfigProtocolGuid,
1095 (VOID **)&Private->Ip6Cfg
1097 if (EFI_ERROR (Status)) {
1113 if (Private->Ip6Nic->DevicePath ==
NULL) {
1114 Status = EFI_OUT_OF_RESOURCES;
1119 &Private->Ip6Nic->LoadFile,
1120 &gLoadFileProtocolTemplate,
1128 Status =
gBS->InstallMultipleProtocolInterfaces (
1129 &Private->Ip6Nic->Controller,
1130 &gEfiDevicePathProtocolGuid,
1131 Private->Ip6Nic->DevicePath,
1132 &gEfiLoadFileProtocolGuid,
1133 &Private->Ip6Nic->LoadFile,
1134 &gEfiPxeBaseCodeProtocolGuid,
1138 if (EFI_ERROR (Status)) {
1142 if (Private->Snp !=
NULL) {
1147 Status =
gBS->InstallProtocolInterface (
1148 &Private->Ip6Nic->Controller,
1149 &gEfiSimpleNetworkProtocolGuid,
1153 if (EFI_ERROR (Status)) {
1161 Status =
gBS->OpenProtocol (
1162 Private->Ip6Nic->Controller,
1163 &gEfiSimpleNetworkProtocolGuid,
1165 This->DriverBindingHandle,
1166 Private->Ip6Nic->Controller,
1167 EFI_OPEN_PROTOCOL_BY_DRIVER|EFI_OPEN_PROTOCOL_EXCLUSIVE
1169 if (EFI_ERROR (Status)) {
1178 Status =
gBS->OpenProtocol (
1182 This->DriverBindingHandle,
1183 Private->Ip6Nic->Controller,
1184 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
1186 if (EFI_ERROR (Status)) {
1195 if (EFI_ERROR (Status)) {
1199 Private->Mode.Ipv6Available =
TRUE;
1202 if (!Private->Mode.Ipv6Available) {
1206 Udp6CfgData = &Private->Udp6CfgData;
1207 Ip6CfgData = &Private->Ip6CfgData;
1211 Udp6CfgData->
HopLimit = PXEBC_DEFAULT_HOPLIMIT;
1217 Ip6CfgData->
HopLimit = PXEBC_DEFAULT_HOPLIMIT;
1248 if ((
PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) && (
PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED)) {
1249 return EFI_UNSUPPORTED;
1255 &gPxeBcIp4DriverBinding,
1257 &gPxeBcComponentName,
1258 &gPxeBcComponentName2
1260 if (EFI_ERROR (Status)) {
1267 &gPxeBcIp6DriverBinding,
1269 &gPxeBcComponentName,
1270 &gPxeBcComponentName2
1272 if (EFI_ERROR (Status)) {
1274 &gPxeBcIp4DriverBinding,
1275 &gPxeBcComponentName,
1276 &gPxeBcComponentName2
1310 if (IpVersion == IP_VERSION_4) {
1311 if (
PcdGet8 (PcdIPv4PXESupport) == PXE_DISABLED) {
1312 return EFI_UNSUPPORTED;
1315 DhcpServiceBindingGuid = &gEfiDhcp4ServiceBindingProtocolGuid;
1316 MtftpServiceBindingGuid = &gEfiMtftp4ServiceBindingProtocolGuid;
1318 if (
PcdGet8 (PcdIPv6PXESupport) == PXE_DISABLED) {
1319 return EFI_UNSUPPORTED;
1322 DhcpServiceBindingGuid = &gEfiDhcp6ServiceBindingProtocolGuid;
1323 MtftpServiceBindingGuid = &gEfiMtftp6ServiceBindingProtocolGuid;
1329 Status =
gBS->OpenProtocol (
1331 DhcpServiceBindingGuid,
1333 This->DriverBindingHandle,
1335 EFI_OPEN_PROTOCOL_TEST_PROTOCOL
1337 if (!EFI_ERROR (Status)) {
1338 Status =
gBS->OpenProtocol (
1340 MtftpServiceBindingGuid,
1342 This->DriverBindingHandle,
1344 EFI_OPEN_PROTOCOL_TEST_PROTOCOL
1351 if (EFI_ERROR (Status)) {
1352 return EFI_UNSUPPORTED;
1389 Status =
gBS->OpenProtocol (
1393 This->DriverBindingHandle,
1395 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1397 if (!EFI_ERROR (Status)) {
1401 Private = PXEBC_PRIVATE_DATA_FROM_ID (Id);
1408 if (Private ==
NULL) {
1409 return EFI_OUT_OF_RESOURCES;
1414 &gPxeBcProtocolTemplate,
1418 Private->Signature = PXEBC_PRIVATE_DATA_SIGNATURE;
1419 Private->Controller = ControllerHandle;
1420 Private->Image = This->ImageHandle;
1421 Private->PxeBc.
Mode = &Private->Mode;
1422 Private->Mode.Ipv6Supported =
TRUE;
1423 Private->Mode.AutoArp =
TRUE;
1425 Private->Mode.ToS = DEFAULT_ToS;
1430 Status =
gBS->OpenProtocol (
1432 &gEfiDevicePathProtocolGuid,
1433 (VOID **)&Private->DevicePath,
1434 This->DriverBindingHandle,
1436 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1439 if (EFI_ERROR (Status)) {
1446 Status =
gBS->OpenProtocol (
1448 &gEfiNetworkInterfaceIdentifierProtocolGuid_31,
1449 (VOID **)&Private->Nii,
1450 This->DriverBindingHandle,
1452 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1454 if (EFI_ERROR (Status)) {
1455 Private->Nii =
NULL;
1464 Status =
gBS->InstallProtocolInterface (
1470 if (EFI_ERROR (Status)) {
1480 if (IpVersion == IP_VERSION_4) {
1492 if (EFI_ERROR (Status)) {
1496 Status = EFI_DEVICE_ERROR;
1504 gBS->UninstallProtocolInterface (
1511 if (IpVersion == IP_VERSION_4) {
1517 if (FirstStart && (Private !=
NULL)) {
1563 Status =
gBS->OpenProtocol (
1565 &gEfiLoadFileProtocolGuid,
1567 This->DriverBindingHandle,
1569 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1571 if (EFI_ERROR (Status)) {
1575 if (IpVersion == IP_VERSION_4) {
1581 if (NicHandle ==
NULL) {
1588 Status =
gBS->OpenProtocol (
1592 This->DriverBindingHandle,
1594 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1596 if (EFI_ERROR (Status)) {
1600 Private = PXEBC_PRIVATE_DATA_FROM_ID (Id);
1605 Status =
gBS->OpenProtocol (
1607 &gEfiLoadFileProtocolGuid,
1609 This->DriverBindingHandle,
1611 EFI_OPEN_PROTOCOL_GET_PROTOCOL
1613 if (EFI_ERROR (Status)) {
1617 VirtualNic = PXEBC_VIRTUAL_NIC_FROM_LOADFILE (LoadFile);
1618 Private = VirtualNic->Private;
1619 NicHandle = Private->Controller;
1625 Status = Private->PxeBc.Stop (&Private->PxeBc);
1626 if ((Status !=
EFI_SUCCESS) && (Status != EFI_NOT_STARTED)) {
1630 if ((Private->Ip4Nic !=
NULL) && (IpVersion == IP_VERSION_4)) {
1634 if ((Private->Ip6Nic !=
NULL) && (IpVersion == IP_VERSION_6)) {
1638 if ((Private->Ip4Nic ==
NULL) && (Private->Ip6Nic ==
NULL)) {
1639 gBS->UninstallProtocolInterface (
1678 RemainingDevicePath,
1712 RemainingDevicePath,
1782 RemainingDevicePath,
1816 RemainingDevicePath,
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
BOOLEAN EFIAPI CompareGuid(IN CONST GUID *Guid1, IN CONST GUID *Guid2)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
#define MESSAGING_DEVICE_PATH
UINT16 EFIAPI SetDevicePathNodeLength(IN OUT VOID *Node, IN UINTN Length)
EFI_DEVICE_PATH_PROTOCOL *EFIAPI AppendDevicePathNode(IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath OPTIONAL, IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathNode OPTIONAL)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
#define DEBUG(Expression)
EFI_STATUS EFIAPI NetLibCreateServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN OUT EFI_HANDLE *ChildHandle)
EFI_STATUS EFIAPI NetLibDestroyServiceChild(IN EFI_HANDLE Controller, IN EFI_HANDLE Image, IN EFI_GUID *ServiceBindingGuid, IN EFI_HANDLE ChildHandle)
EFI_HANDLE EFIAPI NetLibGetSnpHandle(IN EFI_HANDLE ServiceHandle, OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL)
EFI_STATUS EFIAPI PseudoRandomU32(OUT UINT32 *Output)
EFI_HANDLE EFIAPI NetLibGetNicHandle(IN EFI_HANDLE Controller, IN EFI_GUID *ProtocolGuid)
#define PcdGet8(TokenName)
EFI_STATUS EFIAPI PxeBcStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, IN UINT8 IpVersion)
EFI_STATUS EFIAPI PxeBcDriverEntryPoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI PxeBcIp6DriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_STATUS EFIAPI PxeBcIp4DriverBindingStart(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_STATUS EFIAPI PxeBcIp4DriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS PxeBcCreateIp6Children(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN PXEBC_PRIVATE_DATA *Private)
VOID PxeBcDestroyIp4Children(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN PXEBC_PRIVATE_DATA *Private)
EFI_STATUS EFIAPI PxeBcIp6DriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_STATUS EFIAPI PxeBcIp4DriverBindingSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL)
EFI_STATUS EFIAPI PxeBcIp6DriverBindingStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS PxeBcCheckIpv6Support(IN EFI_HANDLE ControllerHandle, IN PXEBC_PRIVATE_DATA *Private, OUT BOOLEAN *Ipv6Support)
VOID PxeBcDestroyIp6Children(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN PXEBC_PRIVATE_DATA *Private)
EFI_STATUS PxeBcCreateIp4Children(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN PXEBC_PRIVATE_DATA *Private)
EFI_STATUS EFIAPI PxeBcSupported(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, IN UINT8 IpVersion)
EFI_HANDLE PxeBcGetNicByIp6Children(IN EFI_HANDLE ControllerHandle)
EFI_STATUS EFIAPI PxeBcStop(IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer, IN UINT8 IpVersion)
EFI_HANDLE PxeBcGetNicByIp4Children(IN EFI_HANDLE ControllerHandle)
EFI_STATUS EFIAPI EfiLibUninstallDriverBindingComponentName2(IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
EFI_STATUS EFIAPI EfiLibInstallDriverBindingComponentName2(IN CONST EFI_HANDLE ImageHandle, IN CONST EFI_SYSTEM_TABLE *SystemTable, IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, IN EFI_HANDLE DriverBindingHandle, IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL, IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
EFI_PXE_BASE_CODE_MODE * Mode
EFI_IP6_NEIGHBOR_CACHE * NeighborCache
EFI_IP6_ICMP_TYPE * IcmpTypeList
EFI_IP6_ADDRESS_INFO * AddressList
EFI_IP6_ROUTE_TABLE * RouteTable
EFI_IPv6_ADDRESS * GroupTable
EFI_IP6_ADDRESS_INFO * PrefixTable
BOOLEAN AllowDuplicatePort