From 402fa70fc9e1fb5e07149eb3985d42eadfcca71e Mon Sep 17 00:00:00 2001 From: jgong5 Date: Tue, 23 Dec 2008 08:23:43 +0000 Subject: [PATCH] Scrubbed some code for Ip4ConfigDxe. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7100 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Network/Ip4ConfigDxe/ComponentName.c | 11 +- .../Network/Ip4ConfigDxe/Ip4Config.c | 113 ++++++++++----- .../Network/Ip4ConfigDxe/Ip4Config.h | 18 +-- .../Network/Ip4ConfigDxe/Ip4ConfigDriver.c | 14 +- .../Network/Ip4ConfigDxe/NicIp4Variable.c | 23 +-- .../Network/Ip4ConfigDxe/NicIp4Variable.h | 25 ++-- MdePkg/Include/Protocol/Ip4Config.h | 137 ++++++++++++------ 7 files changed, 203 insertions(+), 138 deletions(-) diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/ComponentName.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/ComponentName.c index 8e26bf5948..9d6fe0f407 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/ComponentName.c +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/ComponentName.c @@ -1,21 +1,14 @@ /** @file -Copyright (c) 2006 - 2007, Intel Corporation +Copyright (c) 2006 - 2007, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - ComponentName.c - -Abstract: - - **/ diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.c index 736299bec0..4c72a54045 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.c +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.c @@ -1,23 +1,15 @@ /** @file + This code implements the IP4Config and NicIp4Config protocols. -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - Ip4Config.c - -Abstract: - - This code implements the IP4Config and NicIp4Config protocols. - - **/ #include "Ip4Config.h" @@ -290,15 +282,49 @@ EfiNicIp4ConfigSetInfo ( /** - Start the auto configuration process. - - @param This The IP4 configure protocol - @param DoneEvent The event to signal when auto configure is done - @param ReconfigEvent The event to signal when reconfigure is necessary. - - @retval EFI_INVALID_PARAMETER One of the function parameters is NULL. - @retval EFI_ALREADY_STARTED The auto configuration has already started. - @retval EFI_SUCCESS The auto configure is successfully started. + Starts running the configuration policy for the EFI IPv4 Protocol driver. + + The Start() function is called to determine and to begin the platform + configuration policy by the EFI IPv4 Protocol driver. This determination may + be as simple as returning EFI_UNSUPPORTED if there is no EFI IPv4 Protocol + driver configuration policy. It may be as involved as loading some defaults + from nonvolatile storage, downloading dynamic data from a DHCP server, and + checking permissions with a site policy server. + Starting the configuration policy is just the beginning. It may finish almost + instantly or it may take several minutes before it fails to retrieve configuration + information from one or more servers. Once the policy is started, drivers + should use the DoneEvent parameter to determine when the configuration policy + has completed. EFI_IP4_CONFIG_PROTOCOL.GetData() must then be called to + determine if the configuration succeeded or failed. + Until the configuration completes successfully, EFI IPv4 Protocol driver instances + that are attempting to use default configurations must return EFI_NO_MAPPING. + Once the configuration is complete, the EFI IPv4 Configuration Protocol driver + signals DoneEvent. The configuration may need to be updated in the future, + however; in this case, the EFI IPv4 Configuration Protocol driver must signal + ReconfigEvent, and all EFI IPv4 Protocol driver instances that are using default + configurations must return EFI_NO_MAPPING until the configuration policy has + been rerun. + + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + @param DoneEvent Event that will be signaled when the EFI IPv4 + Protocol driver configuration policy completes + execution. This event must be of type EVT_NOTIFY_SIGNAL. + @param ReconfigEvent Event that will be signaled when the EFI IPv4 + Protocol driver configuration needs to be updated. + This event must be of type EVT_NOTIFY_SIGNAL. + + @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol + driver is now running. + @retval EFI_INVALID_PARAMETER One or more of the following parameters is NULL: + This + DoneEvent + ReconfigEvent + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_ALREADY_STARTED The configuration policy for the EFI IPv4 Protocol + driver was already started. + @retval EFI_DEVICE_ERROR An unexpected system error or network error occurred. + @retval EFI_UNSUPPORTED This interface does not support the EFI IPv4 Protocol + driver configuration. **/ EFI_STATUS @@ -460,14 +486,19 @@ ON_EXIT: /** - Stop the current auto configuration + Stops running the configuration policy for the EFI IPv4 Protocol driver. + + The Stop() function stops the configuration policy for the EFI IPv4 Protocol driver. + All configuration data will be lost after calling Stop(). - @param This The IP4 CONFIG protocol + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol + driver has been stopped. @retval EFI_INVALID_PARAMETER This is NULL. - @retval EFI_NOT_STARTED The auto configuration hasn't been started. - @retval EFI_SUCCESS The auto configuration has been stopped. - + @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol + driver was not started. + **/ EFI_STATUS EFIAPI @@ -508,16 +539,28 @@ ON_EXIT: /** - Get the current outcome of the auto configuration process - - @param This The IP4 CONFIG protocol - @param ConfigDataSize The size of the configure data - @param ConfigData The buffer to save the configure data - - @retval EFI_INVALID_PARAMETER This or ConfigDataSize is NULL - @retval EFI_BUFFER_TOO_SMALL The buffer is too small. The needed size is - returned in the ConfigDataSize. - @retval EFI_SUCCESS The configure data is put in the buffer + Returns the default configuration data (if any) for the EFI IPv4 Protocol driver. + + The GetData() function returns the current configuration data for the EFI IPv4 + Protocol driver after the configuration policy has completed. + + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + @param ConfigDataSize On input, the size of the ConfigData buffer. + On output, the count of bytes that were written + into the ConfigData buffer. + @param ConfigData Pointer to the EFI IPv4 Configuration Protocol + driver configuration data structure. + Type EFI_IP4_IPCONFIG_DATA is defined in + "Related Definitions" below. + + @retval EFI_SUCCESS The EFI IPv4 Protocol driver configuration has been returned. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol + driver is not running. + @retval EFI_NOT_READY EFI IPv4 Protocol driver configuration is still running. + @retval EFI_ABORTED EFI IPv4 Protocol driver configuration could not complete. + @retval EFI_BUFFER_TOO_SMALL *ConfigDataSize is smaller than the configuration + data buffer or ConfigData is NULL. **/ EFI_STATUS diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h index 0213aa2dcc..c6c7caa1cc 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4Config.h @@ -1,27 +1,19 @@ /** @file + Header file for IP4Config driver. -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - Ip4Config.h - -Abstract: - - Header file for IP4Config driver. - - **/ -#ifndef __EFI_IP4CONFIG_H__ -#define __EFI_IP4CONFIG_H__ +#ifndef _EFI_IP4CONFIG_H_ +#define _EFI_IP4CONFIG_H_ #include diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c index 34dc96f0ca..d913857e30 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDriver.c @@ -1,23 +1,15 @@ /** @file + The driver binding for IP4 CONFIG protocol. -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - Ip4ConfigDriver.c - -Abstract: - - The driver binding for IP4 CONFIG protocol. - - **/ diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.c b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.c index f97c34f484..f213dfa8cd 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.c +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.c @@ -1,23 +1,15 @@ /** @file + Routines used to operate the Ip4 configure variable -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - NicIp4Variable.c - -Abstract: - - Routines used to operate the Ip4 configure variable - - **/ #include @@ -384,6 +376,15 @@ Ip4ConfigModifyVariable ( return NewVar; } +/** + Fix the RouteTable pointer in an EFI_IP4_IPCONFIG_DATA structure. + + The pointer is set to be immediately follow the ConfigData if there're entries + in the RouteTable. Otherwise it is set to NULL. + + @param ConfigData The IP4 IP configure data. + +**/ VOID Ip4ConfigFixRouteTablePointer ( IN EFI_IP4_IPCONFIG_DATA *ConfigData diff --git a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.h b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.h index 4b14627423..635ffdb7c3 100644 --- a/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.h +++ b/MdeModulePkg/Universal/Network/Ip4ConfigDxe/NicIp4Variable.h @@ -1,23 +1,15 @@ /** @file + Routines used to operate the Ip4 configure variable -Copyright (c) 2006 - 2008, Intel Corporation +Copyright (c) 2006 - 2008, Intel Corporation.
All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at +which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -Module Name: - - NicIp4Variable.h - -Abstract: - - Routines used to operate the Ip4 configure variable - - **/ #ifndef _NIC_IP4_VARIABLE_H_ @@ -96,7 +88,7 @@ Ip4ConfigWriteVariable ( @param NicAddr The interface address to check @return The point to the NIC's IP4 configure info if it is found - @return in the IP4 variable, otherwise NULL. + in the IP4 variable, otherwise NULL. **/ NIC_IP4_CONFIG_INFO * @@ -127,6 +119,15 @@ Ip4ConfigModifyVariable ( IN NIC_IP4_CONFIG_INFO *Config OPTIONAL ); +/** + Fix the RouteTable pointer in an EFI_IP4_IPCONFIG_DATA structure. + + The pointer is set to be immediately follow the ConfigData if there're entries + in the RouteTable. Otherwise it is set to NULL. + + @param ConfigData The IP4 IP configure data. + +**/ VOID Ip4ConfigFixRouteTablePointer ( IN EFI_IP4_IPCONFIG_DATA *ConfigData diff --git a/MdePkg/Include/Protocol/Ip4Config.h b/MdePkg/Include/Protocol/Ip4Config.h index d195ba7e66..ac04db3fc2 100644 --- a/MdePkg/Include/Protocol/Ip4Config.h +++ b/MdePkg/Include/Protocol/Ip4Config.h @@ -1,16 +1,15 @@ /** @file - This file provides a definition of the EFI IPv4 Configuration Protocol. - Copyright (c) 2006 - 2008, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef __EFI_IP4CONFIG_PROTOCOL_H__ @@ -29,6 +28,14 @@ typedef struct _EFI_IP4_CONFIG_PROTOCOL EFI_IP4_CONFIG_PROTOCOL; (EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | \ EFI_VARIABLE_RUNTIME_ACCESS) +/// +/// EFI_IP4_IPCONFIG_DATA contains the minimum IPv4 configuration data +/// that is needed to start basic network communication. The StationAddress +/// and SubnetMask must be a valid unicast IP address and subnet mask. +/// If RouteTableSize is not zero, then RouteTable contains a properly +/// formatted routing table for the StationAddress/SubnetMask, with the +/// last entry in the table being the default route. +/// typedef struct { /// /// Default station IP address, stored in network byte order. @@ -44,6 +51,7 @@ typedef struct { UINT32 RouteTableSize; /// /// Default routing table data (stored in network byte order). + /// Ignored if RouteTableSize is zero. /// EFI_IP4_ROUTE_TABLE *RouteTable; } EFI_IP4_IPCONFIG_DATA; @@ -51,24 +59,48 @@ typedef struct { /** Starts running the configuration policy for the EFI IPv4 Protocol driver. - - @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. - @param DoneEvent Event that will be signaled when the EFI IPv4 Protocol driver - configuration policy completes execution. This event must be of - type EVT_NOTIFY_SIGNAL. - @param ReconfigEvent Event that will be signaled when the EFI IPv4 Protocol driver - configuration needs to be updated. This event must be of type - EVT_NOTIFY_SIGNAL. - - @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol driver is now - running. - @retval EFI_INVALID_PARAMETER This, DoneEvent, or ReconfigEvent is NULL. - @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. - @retval EFI_ALREADY_STARTED The configuration policy for the EFI IPv4 Protocol driver was - already started. - @retval EFI_DEVICE_ERROR An unexpected system error or network error occurred. - @retval EFI_UNSUPPORTED This interface does not support the EFI IPv4 Protocol driver - configuration. + + The Start() function is called to determine and to begin the platform + configuration policy by the EFI IPv4 Protocol driver. This determination may + be as simple as returning EFI_UNSUPPORTED if there is no EFI IPv4 Protocol + driver configuration policy. It may be as involved as loading some defaults + from nonvolatile storage, downloading dynamic data from a DHCP server, and + checking permissions with a site policy server. + Starting the configuration policy is just the beginning. It may finish almost + instantly or it may take several minutes before it fails to retrieve configuration + information from one or more servers. Once the policy is started, drivers + should use the DoneEvent parameter to determine when the configuration policy + has completed. EFI_IP4_CONFIG_PROTOCOL.GetData() must then be called to + determine if the configuration succeeded or failed. + Until the configuration completes successfully, EFI IPv4 Protocol driver instances + that are attempting to use default configurations must return EFI_NO_MAPPING. + Once the configuration is complete, the EFI IPv4 Configuration Protocol driver + signals DoneEvent. The configuration may need to be updated in the future, + however; in this case, the EFI IPv4 Configuration Protocol driver must signal + ReconfigEvent, and all EFI IPv4 Protocol driver instances that are using default + configurations must return EFI_NO_MAPPING until the configuration policy has + been rerun. + + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + @param DoneEvent Event that will be signaled when the EFI IPv4 + Protocol driver configuration policy completes + execution. This event must be of type EVT_NOTIFY_SIGNAL. + @param ReconfigEvent Event that will be signaled when the EFI IPv4 + Protocol driver configuration needs to be updated. + This event must be of type EVT_NOTIFY_SIGNAL. + + @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol + driver is now running. + @retval EFI_INVALID_PARAMETER One or more of the following parameters is NULL: + This + DoneEvent + ReconfigEvent + @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. + @retval EFI_ALREADY_STARTED The configuration policy for the EFI IPv4 Protocol + driver was already started. + @retval EFI_DEVICE_ERROR An unexpected system error or network error occurred. + @retval EFI_UNSUPPORTED This interface does not support the EFI IPv4 Protocol + driver configuration. **/ typedef @@ -81,13 +113,18 @@ EFI_STATUS /** Stops running the configuration policy for the EFI IPv4 Protocol driver. - - @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. - - @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol driver has been stopped. - @retval EFI_INVALID_PARAMETER This is NULL. - @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol driver was not started. - + + The Stop() function stops the configuration policy for the EFI IPv4 Protocol driver. + All configuration data will be lost after calling Stop(). + + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + + @retval EFI_SUCCESS The configuration policy for the EFI IPv4 Protocol + driver has been stopped. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol + driver was not started. + **/ typedef EFI_STATUS @@ -98,20 +135,26 @@ EFI_STATUS /** Returns the default configuration data (if any) for the EFI IPv4 Protocol driver. - @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. - @param IpConfigDataSize On input, the size of the IpConfigData buffer. - On output, the count of bytes that were written into the IpConfigData buffer. - @param IpConfigData Pointer to the EFI IPv4 Configuration Protocol driver - configuration data structure. - - @retval EFI_SUCCESS The EFI IPv4 Protocol driver configuration has been returned. - @retval EFI_INVALID_PARAMETER This is NULL. - @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol driver is not - running. - @retval EFI_NOT_READY EFI IPv4 Protocol driver configuration is still running. - @retval EFI_ABORTED EFI IPv4 Protocol driver configuration could not complete. - @retval EFI_BUFFER_TOO_SMALL *IpConfigDataSize is smaller than the configuration data - buffer or IpConfigData is NULL. + The GetData() function returns the current configuration data for the EFI IPv4 + Protocol driver after the configuration policy has completed. + + @param This Pointer to the EFI_IP4_CONFIG_PROTOCOL instance. + @param IpConfigDataSize On input, the size of the IpConfigData buffer. + On output, the count of bytes that were written + into the IpConfigData buffer. + @param IpConfigData Pointer to the EFI IPv4 Configuration Protocol + driver configuration data structure. + Type EFI_IP4_IPCONFIG_DATA is defined in + "Related Definitions" below. + + @retval EFI_SUCCESS The EFI IPv4 Protocol driver configuration has been returned. + @retval EFI_INVALID_PARAMETER This is NULL. + @retval EFI_NOT_STARTED The configuration policy for the EFI IPv4 Protocol + driver is not running. + @retval EFI_NOT_READY EFI IPv4 Protocol driver configuration is still running. + @retval EFI_ABORTED EFI IPv4 Protocol driver configuration could not complete. + @retval EFI_BUFFER_TOO_SMALL *IpConfigDataSize is smaller than the configuration + data buffer or IpConfigData is NULL. **/ typedef -- 2.39.2