]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/PxeBcDxe/Bc.c
remove clean console control protocol.
[mirror_edk2.git] / MdeModulePkg / Universal / Network / PxeBcDxe / Bc.c
index a520349135f1e4bda998adb86ef3d3b330976e81..41d06f6e376dbe9a4fa7abfa2bb8418c6d7cb3c3 100644 (file)
@@ -345,7 +345,6 @@ UpdateChecksum (
   @retval 1                    Callbacks are not active on the handle\r
 \r
 **/\r
-STATIC\r
 BOOLEAN\r
 SetMakeCallback (\r
   IN PXE_BASECODE_DEVICE *Private\r
@@ -1146,9 +1145,6 @@ PxebcBisDetect (
   return TRUE;\r
 }\r
 \r
-static VOID *BCNotifyReg;\r
-\r
-\r
 /**\r
   Start and initialize the BaseCode protocol, Simple Network protocol and UNDI.\r
 \r
@@ -1204,7 +1200,6 @@ BcStart (
     return EFI_ALREADY_STARTED;\r
   }\r
 \r
-#if !SUPPORT_IPV6\r
   //\r
   // Fail if IPv6 is requested and not supported.\r
   //\r
@@ -1213,7 +1208,6 @@ BcStart (
     EfiReleaseLock (&Private->Lock);\r
     return EFI_UNSUPPORTED;\r
   }\r
-#endif\r
   //\r
   // Setup shortcuts to SNP protocol and data structure.\r
   //\r
@@ -1559,7 +1553,7 @@ BcStop (
   return StatCode;\r
 }\r
 \r
-const IPV4_ADDR AllSystemsGroup = { 224, 0, 0, 1 };\r
+const IPV4_ADDR AllSystemsGroup = {{224, 0, 0, 1}};\r
 \r
 \r
 /**\r
@@ -1665,7 +1659,7 @@ IpFilter (
       Enable = EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST;\r
 \r
       for (Index = 0; Index < Filter->IpCnt; ++Index) {\r
-        PxebcMode->IpFilter.IpList[Index] = Filter->IpList[Index];\r
+        CopyMem (&PxebcMode->IpFilter.IpList[Index], &Filter->IpList[Index], sizeof (EFI_IP_ADDRESS));\r
 \r
         if (IS_MULTICAST (&Filter->IpList[Index])) {\r
           EFI_IP_ADDRESS  *TmpIp;\r
@@ -1677,7 +1671,7 @@ IpFilter (
           //\r
           if (!Index2)\r
           {\r
-              TmpIp = (EFI_IP_ADDRESS *) &AllSystemsGroup;\r
+            TmpIp = (EFI_IP_ADDRESS *) &AllSystemsGroup;\r
             --Index;\r
           } else {\r
             TmpIp = (EFI_IP_ADDRESS *) &Filter->IpList[Index];\r
@@ -2012,8 +2006,8 @@ BcSetStationIP (
     goto RELEASE_LOCK;\r
   }\r
 \r
-  PxebcMode->StationIp   = *StationIpPtr;\r
-  PxebcMode->SubnetMask  = *SubnetMaskPtr;\r
+  CopyMem (&PxebcMode->StationIp, StationIpPtr, sizeof (EFI_IP_ADDRESS));\r
+  CopyMem (&PxebcMode->SubnetMask, SubnetMaskPtr, sizeof (EFI_IP_ADDRESS));\r
   Private->GoodStationIp = TRUE;\r
 \r
 RELEASE_LOCK:\r
@@ -2175,19 +2169,9 @@ PxeBcDriverStart (
                   );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    Status = gBS->OpenProtocol (\r
-                    Controller,\r
-                    &gEfiNetworkInterfaceIdentifierProtocolGuid,\r
-                    (VOID **) &Private->NiiPtr,\r
-                    This->DriverBindingHandle,\r
-                    Controller,\r
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                    );\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      goto PxeBcError;\r
-    }\r
+    goto PxeBcError;\r
   }\r
+\r
   //\r
   // Get the Snp interface\r
   //\r
@@ -2236,12 +2220,8 @@ PxeBcDriverStart (
   // implementation supports IPv6.\r
   //\r
   Private->EfiBc.Mode->Ipv6Supported = SUPPORT_IPV6;\r
-\r
-#if SUPPORT_IPV6\r
-  Private->EfiBc.Mode->Ipv6Available = Private->NiiPtr->Ipv6Supported;\r
-#else\r
   Private->EfiBc.Mode->Ipv6Available = FALSE;\r
-#endif\r
+\r
   //\r
   // Set to TRUE by the BC constructor if this BC\r
   // implementation supports BIS.\r
@@ -2363,6 +2343,41 @@ PxeBcDriverStop (
   return Status;\r
 }\r
 \r
+EFI_STATUS\r
+EFIAPI\r
+PxeBcUnload (\r
+  IN EFI_HANDLE  ImageHandle\r
+  )\r
+{\r
+  EFI_STATUS  Status;\r
+  UINTN       DeviceHandleCount;\r
+  EFI_HANDLE  *DeviceHandleBuffer;\r
+  UINTN       Index;\r
+\r
+  Status = gBS->LocateHandleBuffer (\r
+                  AllHandles,\r
+                  NULL,\r
+                  NULL,\r
+                  &DeviceHandleCount,\r
+                  &DeviceHandleBuffer\r
+                  );\r
+  if (!EFI_ERROR (Status)) {\r
+    for (Index = 0; Index < DeviceHandleCount; Index++) {\r
+      Status = gBS->DisconnectController (\r
+                      DeviceHandleBuffer[Index],\r
+                      mPxeBcDriverBinding.DriverBindingHandle,\r
+                      NULL\r
+                      );\r
+    }\r
+\r
+    if (DeviceHandleBuffer != NULL) {\r
+      gBS->FreePool (DeviceHandleBuffer);\r
+    }\r
+  }\r
+\r
+  return Status;\r
+}\r
+\r
 \r
 /**\r
   Initialize the base code drivers and install the driver binding\r
@@ -2379,20 +2394,31 @@ InitializeBCDriver (
   IN EFI_SYSTEM_TABLE *SystemTable\r
   )\r
 {\r
-  EFI_STATUS  Status;\r
+  EFI_STATUS                 Status;\r
+  EFI_LOADED_IMAGE_PROTOCOL  *LoadedImage;\r
 \r
   //\r
   // Initialize EFI library\r
   //\r
-  Status = EfiLibInstallAllDriverProtocols (\r
-            ImageHandle,\r
-            SystemTable,\r
-            &mPxeBcDriverBinding,\r
-            NULL,\r
-            COMPONENT_NAME,\r
-            NULL,\r
-            NULL\r
-            );\r
+  Status = EfiLibInstallDriverBindingComponentName2 (\r
+             ImageHandle,\r
+             SystemTable,\r
+             &mPxeBcDriverBinding,\r
+             NULL,\r
+             &gPxeBcComponentName,\r
+             &gPxeBcComponentName2\r
+             );\r
+\r
+  Status = gBS->HandleProtocol (\r
+                  ImageHandle,\r
+                  &gEfiLoadedImageProtocolGuid,\r
+                  (VOID **) &LoadedImage\r
+                  );\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  } else {\r
+    LoadedImage->Unload = PxeBcUnload;\r
+  }\r
 \r
   InitArpHeader ();\r
   OptionsStrucInit ();\r