]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c
MdeModulePkg: Remove Ip4ConfigDxe and related guid definition
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4ConfigDxe / Ip4ConfigDriver.c
diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c
deleted file mode 100644 (file)
index 56cce6e..0000000
+++ /dev/null
@@ -1,505 +0,0 @@
-/** @file\r
-  The driver binding for IP4 CONFIG protocol.\r
-\r
-Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at<BR>\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-\r
-#include "Ip4Config.h"\r
-#include "Ip4ConfigNv.h"\r
-#include "NicIp4Variable.h"\r
-\r
-EFI_DRIVER_BINDING_PROTOCOL gIp4ConfigDriverBinding = {\r
-  Ip4ConfigDriverBindingSupported,\r
-  Ip4ConfigDriverBindingStart,\r
-  Ip4ConfigDriverBindingStop,\r
-  0xa,\r
-  NULL,\r
-  NULL\r
-};\r
-\r
-//\r
-// The intance of template of IP4 Config private data\r
-//\r
-IP4_CONFIG_INSTANCE        mIp4ConfigTemplate = {\r
-  IP4_CONFIG_INSTANCE_SIGNATURE,\r
-  NULL,\r
-  NULL,\r
-  (EFI_DEVICE_PATH_PROTOCOL *) NULL,\r
-  {\r
-    NULL,\r
-    NULL,\r
-    NULL\r
-  },\r
-  {\r
-    NULL,\r
-    NULL,\r
-    NULL\r
-  },\r
-  NULL,\r
-  (EFI_DEVICE_PATH_PROTOCOL *) NULL,\r
-  NULL,\r
-  {\r
-    FALSE,\r
-    FALSE,\r
-    {\r
-      {\r
-        0\r
-      }\r
-    },\r
-    {\r
-      {\r
-        0\r
-      }\r
-    },\r
-    {\r
-      {\r
-        0\r
-      }\r
-    }\r
-  },\r
-  0,\r
-  (EFI_MANAGED_NETWORK_PROTOCOL *) NULL,\r
-  NULL,\r
-  NULL,\r
-  NULL,\r
-  0,\r
-  {\r
-    0,\r
-    0,\r
-    {\r
-      {\r
-        0\r
-      }\r
-    }\r
-  },\r
-  (CHAR16 *) NULL,\r
-  (NIC_IP4_CONFIG_INFO *) NULL,\r
-  (EFI_DHCP4_PROTOCOL *) NULL,\r
-  NULL,\r
-  NULL,\r
-  NULL,\r
-  TRUE,\r
-  FALSE\r
-};\r
-\r
-/**\r
-  The entry point for IP4 config driver which install the driver\r
-  binding and component name protocol on its image.\r
-\r
-  @param  ImageHandle            The image handle of the driver.\r
-  @param  SystemTable            The system table.\r
-\r
-  @retval EFI_SUCCES             All the related protocols are installed on the driver.\r
-  @retval Others                 Failed to install protocols.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ip4ConfigDriverEntryPoint (\r
-  IN EFI_HANDLE             ImageHandle,\r
-  IN EFI_SYSTEM_TABLE       *SystemTable\r
-  )\r
-{\r
-  mIp4ConfigTemplate.Result = EFI_NOT_READY;\r
-\r
-  return EfiLibInstallDriverBindingComponentName2 (\r
-           ImageHandle,\r
-           SystemTable,\r
-           &gIp4ConfigDriverBinding,\r
-           ImageHandle,\r
-           &gIp4ConfigComponentName,\r
-           &gIp4ConfigComponentName2\r
-           );\r
-}\r
-\r
-\r
-/**\r
-  Test to see if this driver supports ControllerHandle.\r
-\r
-  @param  This                 Protocol instance pointer.\r
-  @param  ControllerHandle     Handle of device to test\r
-  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
-                               device to start.\r
-\r
-  @retval EFI_SUCCES           This driver supports this device\r
-  @retval EFI_ALREADY_STARTED  This driver is already running on this device\r
-  @retval other                This driver does not support this device\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ip4ConfigDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                   ControllerHandle,\r
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath  OPTIONAL\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiManagedNetworkServiceBindingProtocolGuid,\r
-                  NULL,\r
-                  This->DriverBindingHandle,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_TEST_PROTOCOL\r
-                  );\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Start this driver on ControllerHandle.\r
-\r
-  @param  This                 Protocol instance pointer.\r
-  @param  ControllerHandle     Handle of device to bind driver to\r
-  @param  RemainingDevicePath  Optional parameter use to pick a specific child\r
-                               device to start.\r
-\r
-  @retval EFI_SUCCES           This driver is added to ControllerHandle\r
-  @retval EFI_ALREADY_STARTED  This driver is already running on ControllerHandle\r
-  @retval other                This driver does not support this device\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ip4ConfigDriverBindingStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                   ControllerHandle,\r
-  IN EFI_DEVICE_PATH_PROTOCOL     *RemainingDevicePath OPTIONAL\r
-  )\r
-{\r
-  EFI_IP4_CONFIG_PROTOCOL       *Ip4Config;\r
-  EFI_MANAGED_NETWORK_PROTOCOL  *Mnp;\r
-  EFI_HANDLE                    MnpHandle;\r
-  IP4_CONFIG_INSTANCE           *Instance;\r
-  EFI_SIMPLE_NETWORK_MODE       SnpMode;\r
-  NIC_IP4_CONFIG_INFO           *NicConfig;\r
-  EFI_STATUS                    Status;\r
-  EFI_DEVICE_PATH_PROTOCOL      *ParentDevicePath;\r
-\r
-  Status = gBS->HandleProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiDevicePathProtocolGuid,\r
-                  (VOID **) &ParentDevicePath\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Check for multiple start.\r
-  //\r
-  Status = gBS->OpenProtocol (\r
-                  ControllerHandle,\r
-                  &gEfiIp4ConfigProtocolGuid,\r
-                  (VOID **) &Ip4Config,\r
-                  This->DriverBindingHandle,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
-\r
-  if (!EFI_ERROR (Status)) {\r
-    return EFI_ALREADY_STARTED;\r
-  }\r
-\r
-  //\r
-  // Create a MNP child\r
-  //\r
-  Mnp       = NULL;\r
-  MnpHandle = NULL;\r
-  Instance  = NULL;\r
-\r
-  Status    = NetLibCreateServiceChild (\r
-                ControllerHandle,\r
-                This->DriverBindingHandle,\r
-                &gEfiManagedNetworkServiceBindingProtocolGuid,\r
-                &MnpHandle\r
-                );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Status = gBS->OpenProtocol (\r
-                  MnpHandle,\r
-                  &gEfiManagedNetworkProtocolGuid,\r
-                  (VOID **) &Mnp,\r
-                  This->DriverBindingHandle,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_BY_DRIVER\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  //\r
-  // Allocate an instance then initialize it\r
-  //\r
-  Instance = AllocateCopyPool (sizeof (IP4_CONFIG_INSTANCE), &mIp4ConfigTemplate);\r
-\r
-  if (Instance == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  Instance->Controller        = ControllerHandle;\r
-  Instance->Image             = This->DriverBindingHandle;\r
-  Instance->ParentDevicePath  = ParentDevicePath;\r
-\r
-  CopyMem (&Instance->Ip4ConfigProtocol, &mIp4ConfigProtocolTemplate, sizeof (mIp4ConfigProtocolTemplate));\r
-\r
-  Instance->State             = IP4_CONFIG_STATE_IDLE;\r
-  Instance->Mnp               = Mnp;\r
-  Instance->MnpHandle         = MnpHandle;\r
-\r
-  Status = Mnp->GetModeData (Mnp, NULL, &SnpMode);\r
-\r
-  if (EFI_ERROR (Status) && (Status != EFI_NOT_STARTED)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  Instance->NicAddr.Type    = (UINT16) SnpMode.IfType;\r
-  Instance->NicAddr.Len     = (UINT8) SnpMode.HwAddressSize;\r
-  CopyMem (&Instance->NicAddr.MacAddr, &SnpMode.CurrentAddress, Instance->NicAddr.Len);\r
-\r
-  //\r
-  // Add it to the global list, and compose the name\r
-  //\r
-  Status = NetLibGetMacString (Instance->Controller, Instance->Image, &Instance->MacString);\r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  Status = Ip4ConfigDeviceInit (Instance);\r
-\r
-  //\r
-  // Install the IP4_CONFIG protocols\r
-  //\r
-  Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &ControllerHandle,\r
-                  &gEfiIp4ConfigProtocolGuid,\r
-                  &Instance->Ip4ConfigProtocol,\r
-                  NULL\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  //\r
-  // A dedicated timer is used to poll underlying media status.\r
-  //\r
-  Status = gBS->CreateEvent (\r
-                  EVT_NOTIFY_SIGNAL | EVT_TIMER,\r
-                  TPL_CALLBACK,\r
-                  MediaChangeDetect,\r
-                  Instance,\r
-                  &Instance->Timer\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    goto ON_ERROR;\r
-  }\r
-\r
-  //\r
-  // Get the previous configure parameters. If an error happend here,\r
-  // just ignore it because the driver should be able to operate.\r
-  //\r
-  NicConfig = Ip4ConfigReadVariable (Instance);\r
-  if (NicConfig != NULL) {\r
-    if (!NicConfig->Permanent) {\r
-      //\r
-      // Delete the non-permanent configuration.\r
-      //\r
-      Ip4ConfigWriteVariable (Instance, NULL);\r
-    }\r
-\r
-    FreePool (NicConfig);\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-\r
-ON_ERROR:\r
-  if (Instance != NULL) {\r
-    FreePool (Instance);\r
-  }\r
-\r
-  if (Mnp != NULL) {\r
-    gBS->CloseProtocol (\r
-          MnpHandle,\r
-          &gEfiManagedNetworkProtocolGuid,\r
-          This->DriverBindingHandle,\r
-          ControllerHandle\r
-          );\r
-  }\r
-\r
-  NetLibDestroyServiceChild (\r
-    ControllerHandle,\r
-    This->DriverBindingHandle,\r
-    &gEfiManagedNetworkServiceBindingProtocolGuid,\r
-    MnpHandle\r
-    );\r
-\r
-  return Status;\r
-}\r
-\r
-\r
-/**\r
-  Stop this driver on ControllerHandle.\r
-\r
-  @param  This                 Protocol instance pointer.\r
-  @param  ControllerHandle     Handle of device to stop driver on\r
-  @param  NumberOfChildren     Number of Handles in ChildHandleBuffer. If number of\r
-                                children is zero stop the entire bus driver.\r
-  @param  ChildHandleBuffer    List of Child Handles to Stop.\r
-\r
-  @retval EFI_SUCCES           This driver is removed ControllerHandle\r
-  @retval other                This driver was not removed from this device\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-Ip4ConfigDriverBindingStop (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL  *This,\r
-  IN EFI_HANDLE                   ControllerHandle,\r
-  IN UINTN                        NumberOfChildren,\r
-  IN EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-{\r
-  IP4_CONFIG_INSTANCE       *Instance;\r
-  EFI_IP4_CONFIG_PROTOCOL   *Ip4Config;\r
-  EFI_HANDLE                NicHandle;\r
-  EFI_STATUS                Status;\r
-\r
-  //\r
-  // IP4_CONFIG instance opens an MNP child. It may also create and open\r
-  // a DHCP child. If this is the DHCP handle, stop the DHCP process. If\r
-  // it is the MNP child, stop the whole driver.\r
-  //\r
-  //\r
-  NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiDhcp4ProtocolGuid);\r
-\r
-  if (NicHandle != NULL) {\r
-    //\r
-    // Get our context back then clean the DHCP up. Notify the user if necessary.\r
-    //\r
-    Status = gBS->OpenProtocol (\r
-                    NicHandle,\r
-                    &gEfiIp4ConfigProtocolGuid,\r
-                    (VOID **) &Ip4Config,\r
-                    This->DriverBindingHandle,\r
-                    ControllerHandle,\r
-                    EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                    );\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
-    Instance = IP4_CONFIG_INSTANCE_FROM_IP4CONFIG (Ip4Config);\r
-    ASSERT (ControllerHandle == Instance->Dhcp4Handle);\r
-\r
-    Ip4ConfigCleanDhcp4 (Instance);\r
-\r
-    Instance->State   = IP4_CONFIG_STATE_CONFIGURED;\r
-    Instance->Result  = EFI_DEVICE_ERROR;\r
-\r
-    if (Instance->DoneEvent != NULL) {\r
-      gBS->SignalEvent (Instance->DoneEvent);\r
-    }\r
-\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  //\r
-  // This is a MNP handle, stop the whole driver\r
-  //\r
-  NicHandle = NetLibGetNicHandle (ControllerHandle, &gEfiManagedNetworkProtocolGuid);\r
-\r
-  if (NicHandle == NULL) {\r
-    return EFI_SUCCESS;\r
-  }\r
-\r
-  //\r
-  // Get our context back.\r
-  //\r
-  Status = gBS->OpenProtocol (\r
-                  NicHandle,\r
-                  &gEfiIp4ConfigProtocolGuid,\r
-                  (VOID **) &Ip4Config,\r
-                  This->DriverBindingHandle,\r
-                  ControllerHandle,\r
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Instance = IP4_CONFIG_INSTANCE_FROM_IP4CONFIG (Ip4Config);\r
-\r
-  Ip4ConfigDeviceUnload (Instance);\r
-\r
-  //\r
-  // Unload the protocols first to inform the top drivers\r
-  //\r
-  Status = gBS->UninstallMultipleProtocolInterfaces (\r
-                  NicHandle,\r
-                  &gEfiIp4ConfigProtocolGuid,\r
-                  &Instance->Ip4ConfigProtocol,\r
-                  NULL\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Release all the resources\r
-  //\r
-  if (Instance->MnpHandle != NULL) {\r
-    gBS->CloseProtocol (\r
-          Instance->MnpHandle,\r
-          &gEfiManagedNetworkProtocolGuid,\r
-          This->DriverBindingHandle,\r
-          NicHandle\r
-          );\r
-\r
-    NetLibDestroyServiceChild (\r
-      NicHandle,\r
-      Instance->Image,\r
-      &gEfiManagedNetworkServiceBindingProtocolGuid,\r
-      Instance->MnpHandle\r
-      );\r
-\r
-    Instance->Mnp       = NULL;\r
-    Instance->MnpHandle = NULL;\r
-  }\r
-\r
-  if (Instance->MacString != NULL) {\r
-    FreePool (Instance->MacString);\r
-  }\r
-\r
-  if (Instance->Timer != NULL) {\r
-    gBS->SetTimer (Instance->Timer, TimerCancel, 0);\r
-    gBS->CloseEvent (Instance->Timer);\r
-    Instance->Timer = NULL;\r
-  }\r
-  \r
-  Ip4ConfigCleanConfig (Instance);\r
-  FreePool (Instance);\r
-\r
-  return EFI_SUCCESS;\r
-}\r