]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/Dhcp4.h
Update comments for Protocol definitions to match UEFI spec.
[mirror_edk2.git] / MdePkg / Include / Protocol / Dhcp4.h
index b02918d7c4e22b657446a88a5dc825f6504335db..9178e69bbba3c2859e49cf689030cf96e6c9243e 100644 (file)
@@ -33,41 +33,69 @@ typedef struct _EFI_DHCP4_PROTOCOL EFI_DHCP4_PROTOCOL;
 \r
 #pragma pack(1)\r
 typedef struct {\r
+  ///\r
+  /// DHCP option code.\r
+  ///\r
   UINT8               OpCode;\r
+  ///\r
+  /// Length of the DHCP option data. Not present if OpCode is 0 or 255.\r
+  ///\r
   UINT8               Length;\r
+  ///\r
+  /// Start of the DHCP option data. Not present if OpCode is 0 or 255 or if Length is zero.\r
+  ///\r
   UINT8               Data[1];\r
 } EFI_DHCP4_PACKET_OPTION;\r
 #pragma pack()\r
 \r
 \r
 #pragma pack(1)\r
+///\r
+/// EFI_DHCP4_PACKET defines the format of DHCPv4 packets. See RFC 2131 for more information.\r
+///\r
 typedef struct {\r
-    UINT8             OpCode;\r
-    UINT8             HwType;\r
-    UINT8             HwAddrLen;\r
-    UINT8             Hops;\r
-    UINT32            Xid;\r
-    UINT16            Seconds;\r
-    UINT16            Reserved;\r
-    EFI_IPv4_ADDRESS  ClientAddr;       ///< Client IP address from client\r
-    EFI_IPv4_ADDRESS  YourAddr;         ///< Client IP address from server\r
-    EFI_IPv4_ADDRESS  ServerAddr;       ///< IP address of next server in bootstrap\r
-    EFI_IPv4_ADDRESS  GatewayAddr;      ///< Relay agent IP address\r
-    UINT8             ClientHwAddr[16]; ///< Client hardware address\r
-    CHAR8             ServerName[64];\r
-    CHAR8             BootFileName[128];\r
+  UINT8             OpCode;\r
+  UINT8             HwType;\r
+  UINT8             HwAddrLen;\r
+  UINT8             Hops;\r
+  UINT32            Xid;\r
+  UINT16            Seconds;\r
+  UINT16            Reserved;\r
+  EFI_IPv4_ADDRESS  ClientAddr;       ///< Client IP address from client\r
+  EFI_IPv4_ADDRESS  YourAddr;         ///< Client IP address from server\r
+  EFI_IPv4_ADDRESS  ServerAddr;       ///< IP address of next server in bootstrap\r
+  EFI_IPv4_ADDRESS  GatewayAddr;      ///< Relay agent IP address\r
+  UINT8             ClientHwAddr[16]; ///< Client hardware address\r
+  CHAR8             ServerName[64];\r
+  CHAR8             BootFileName[128];\r
 }EFI_DHCP4_HEADER;\r
 #pragma pack()\r
 \r
 \r
 #pragma pack(1)\r
 typedef struct {\r
+  ///\r
+  /// Size of the EFI_DHCP4_PACKET buffer.\r
+  ///\r
   UINT32              Size;\r
+  ///\r
+  /// Length of the EFI_DHCP4_PACKET from the first byte of the Header field \r
+  /// to the last byte of the Option[] field.\r
+  ///\r
   UINT32              Length;\r
 \r
   struct {\r
+    ///\r
+    /// DHCP packet header.\r
+    ///\r
     EFI_DHCP4_HEADER  Header;\r
+    ///\r
+    /// DHCP magik cookie in network byte order.\r
+    ///\r
     UINT32            Magik;\r
+    ///\r
+    /// Start of the DHCP packed option data.\r
+    ///\r
     UINT8             Option[1];\r
   } Dhcp4;\r
 } EFI_DHCP4_PACKET;\r
@@ -75,30 +103,103 @@ typedef struct {
 \r
 \r
 typedef enum {\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver is stopped\r
+  ///\r
   Dhcp4Stopped        = 0x0,\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver is inactive\r
+  ///\r
   Dhcp4Init           = 0x1,\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver is collecting DHCP offer packets from DHCP servers.\r
+  ///\r
   Dhcp4Selecting      = 0x2,\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver has sent the request to the DHCP server and is waiting for a response.\r
+  ///\r
   Dhcp4Requesting     = 0x3,\r
+  ///\r
+  /// The DHCP configuration has completed.\r
+  ///\r
   Dhcp4Bound          = 0x4,\r
+  ///\r
+  /// The DHCP configuration is being renewed and another request has\r
+  /// been sent out, but it has not received a response from the server yet.\r
+  ///\r
   Dhcp4Renewing       = 0x5,\r
+  ///\r
+  /// The DHCP configuration has timed out and the EFI DHCPv4\r
+  /// Protocol driver is trying to extend the lease time.\r
+  ///\r
   Dhcp4Rebinding      = 0x6,\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver is initialized with a previously\r
+  /// allocated or known IP address.\r
+  ///\r
   Dhcp4InitReboot     = 0x7,\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver is seeking to reuse the previously\r
+  /// allocated IP address by sending a request to the DHCP server.\r
+  ///\r
   Dhcp4Rebooting      = 0x8\r
 } EFI_DHCP4_STATE;\r
 \r
 \r
 typedef enum{\r
+  ///\r
+  /// A DHCPDISCOVER packet is about to be sent.\r
+  ///\r
   Dhcp4SendDiscover   = 0x01,\r
+  ///\r
+  /// A DHCPOFFER packet was just received.\r
+  ///\r
   Dhcp4RcvdOffer      = 0x02,\r
+  ///\r
+  /// It is time for Dhcp4Callback to select an offer.\r
+  ///\r
   Dhcp4SelectOffer    = 0x03,\r
+  ///\r
+  /// A request packet is about to be sent.\r
+  ///\r
   Dhcp4SendRequest    = 0x04,\r
+  ///\r
+  /// A DHCPACK packet was received and will be passed to Dhcp4Callback.\r
+  ///\r
   Dhcp4RcvdAck        = 0x05,\r
+  ///\r
+  /// A DHCPNAK packet was received and will be passed to Dhcp4Callback.\r
+  ///\r
   Dhcp4RcvdNak        = 0x06,\r
+  ///\r
+  /// A decline packet is about to be sent.\r
+  ///\r
   Dhcp4SendDecline    = 0x07,\r
+  ///\r
+  /// The DHCP configuration process has completed. No packet is associated with this event.\r
+  ///\r
   Dhcp4BoundCompleted = 0x08,\r
+  ///\r
+  /// It is time to enter the Dhcp4Renewing state and to contact the server \r
+  /// that originally issued the network address. No packet is associated with this event.\r
+  ///\r
   Dhcp4EnterRenewing  = 0x09,\r
+  ///\r
+  /// It is time to enter the Dhcp4Rebinding state and to contact any server. \r
+  /// No packet is associated with this event.\r
+  ///\r
   Dhcp4EnterRebinding = 0x0a,\r
+  ///\r
+  /// The configured IP address was lost either because the lease has expired, \r
+  /// the user released the configuration, or a DHCPNAK packet was received in \r
+  /// the Dhcp4Renewing or Dhcp4Rebinding state. No packet is associated with this event.\r
+  ///\r
   Dhcp4AddressLost    = 0x0b,\r
+  ///\r
+  /// The DHCP process failed because a DHCPNAK packet was received or the user \r
+  /// aborted the DHCP process at a time when the configuration was not available yet. \r
+  /// No packet is associated with this event.\r
+  ///\r
   Dhcp4Fail           = 0x0c\r
 } EFI_DHCP4_EVENT;\r
 \r
@@ -142,51 +243,165 @@ EFI_STATUS
   OUT EFI_DHCP4_PACKET           **NewPacket OPTIONAL\r
   );\r
 \r
-\r
 typedef struct {\r
+  ///\r
+  /// Number of times to try sending DHCPDISCOVER packets and \r
+  /// waiting for DHCPOFFER packets before accepting failure.\r
+  /// Set to zero to use the default try counts and timeout values.\r
+  ///\r
   UINT32                      DiscoverTryCount;\r
+  ///\r
+  /// Maximum amount of time (in seconds) to wait for DHCPOFFER packets in each \r
+  /// of the retries. Timeout values of zero will default to a timeout value \r
+  /// of one second. Set to NULL to use default timeout values.\r
+  ///\r
   UINT32                      *DiscoverTimeout;\r
+  ///\r
+  /// Number of times to try sending DHCPREQUEST packets and waiting for DHCPACK \r
+  /// packets before accepting failure. Set to zero to use the default try counts and timeout values.\r
+  ///\r
   UINT32                      RequestTryCount;\r
+  ///\r
+  /// Maximum amount of time (in seconds) to wait for DHCPACK packets in each of the retries. \r
+  /// Timeout values of zero will default to a timeout value of one second. \r
+  /// Set to NULL to use default timeout values.\r
+  ///\r
   UINT32                      *RequestTimeout;\r
+  ///\r
+  /// Setting this parameter to the previously allocated IP address will cause \r
+  /// the EFI DHCPv4 Protocol driver to enter the Dhcp4InitReboot state. \r
+  /// Set this field to 0.0.0.0 to enter the Dhcp4Init state.\r
+  ///\r
   EFI_IPv4_ADDRESS            ClientAddress;\r
+  ///\r
+  /// The callback function to intercept various events that occurred in \r
+  /// the DHCP configuration process. Set to NULL to ignore all those events.\r
+  ///\r
   EFI_DHCP4_CALLBACK          Dhcp4Callback;\r
-  void                        *CallbackContext;\r
+  ///\r
+  /// Pointer to the context that will be passed to Dhcp4Callback when it is called.\r
+  ///\r
+  VOID                        *CallbackContext;\r
+  ///\r
+  /// Number of DHCP options in the OptionList.\r
+  ///\r
   UINT32                      OptionCount;\r
+  ///\r
+  /// List of DHCP options to be included in every DHCPDISCOVER packet and \r
+  /// subsequent DHCPREQUEST packet that is generated from DHCPOFFER packets.\r
+  ///\r
   EFI_DHCP4_PACKET_OPTION     **OptionList;\r
 } EFI_DHCP4_CONFIG_DATA;\r
 \r
 \r
 typedef struct {\r
+  ///\r
+  /// The EFI DHCPv4 Protocol driver operating state. \r
+  ///\r
   EFI_DHCP4_STATE             State;\r
+  ///\r
+  /// The configuration data of the current EFI DHCPv4 Protocol driver instance.\r
+  ///\r
   EFI_DHCP4_CONFIG_DATA       ConfigData;\r
+  ///\r
+  /// The client IP address that was acquired from the DHCP server. If it is zero,\r
+  /// the DHCP acquisition has not completed yet and the following fields in this structure are undefined.\r
+  ///\r
   EFI_IPv4_ADDRESS            ClientAddress;\r
+  ///\r
+  /// The local hardware address.\r
+  ///\r
   EFI_MAC_ADDRESS             ClientMacAddress;\r
+  ///\r
+  /// The server IP address that is providing the DHCP service to this client.\r
+  ///\r
   EFI_IPv4_ADDRESS            ServerAddress;\r
+  ///\r
+  /// The router IP address that was acquired from the DHCP server. \r
+  /// May be zero if the server does not offer this address.\r
+  ///\r
   EFI_IPv4_ADDRESS            RouterAddress;\r
+  ///\r
+  /// The subnet mask of the connected network that was acquired from the DHCP server.\r
+  ///\r
   EFI_IPv4_ADDRESS            SubnetMask;\r
+  ///\r
+  /// The lease time (in 1-second units) of the configured IP address. \r
+  /// The value 0xFFFFFFFF means that the lease time is infinite. \r
+  /// A default lease of 7 days is used if the DHCP server does not provide a value.\r
+  ///\r
   UINT32                      LeaseTime;\r
+  ///\r
+  /// The cached latest DHCPACK or DHCPNAK or BOOTP REPLY packet. May be NULL if no packet is cached.\r
+  ///\r
   EFI_DHCP4_PACKET            *ReplyPacket;\r
 } EFI_DHCP4_MODE_DATA;\r
 \r
 \r
 typedef struct {\r
+  ///\r
+  /// Alternate listening address. It can be a unicast, multicast, or broadcast address.\r
+  ///\r
   EFI_IPv4_ADDRESS            ListenAddress;\r
+  ///\r
+  /// The subnet mask of above listening unicast/broadcast IP address. \r
+  /// Ignored if ListenAddress is a multicast address.\r
+  ///\r
   EFI_IPv4_ADDRESS            SubnetMask;\r
+  ///\r
+  /// Alternate station source (or listening) port number. \r
+  /// If zero, then the default station port number (68) will be used.\r
+  ///\r
   UINT16                      ListenPort;\r
 } EFI_DHCP4_LISTEN_POINT;\r
 \r
 \r
 typedef struct {\r
+  ///\r
+  /// The completion status of transmitting and receiving.\r
+  ///\r
   EFI_STATUS              Status;\r
+  ///\r
+  /// If not NULL, the event that will be signaled when the collection process \r
+  /// completes. If NULL, this function will busy-wait until the collection process competes.\r
+  ///\r
   EFI_EVENT               CompletionEvent;\r
+  ///\r
+  /// Pointer to the server IP address. This address may be a unicast, multicast, or broadcast address.\r
+  ///\r
   EFI_IPv4_ADDRESS        RemoteAddress;\r
+  ///\r
+  /// Server listening port number. If zero, the default server listening port number (67) will be used.\r
+  ///\r
   UINT16                  RemotePort;\r
+  ///\r
+  /// Pointer to the gateway address to override the existing setting.\r
+  ///\r
   EFI_IPv4_ADDRESS        GatewayAddress;\r
+  ///\r
+  /// The number of entries in ListenPoints. If zero, the default station address and port number 68 are used.\r
+  ///\r
   UINT32                  ListenPointCount;\r
+  ///\r
+  /// An array of station address and port number pairs that are used as receiving filters. \r
+  /// The first entry is also used as the source address and source port of the outgoing packet.\r
+  ///\r
   EFI_DHCP4_LISTEN_POINT  *ListenPoints;\r
+  ///\r
+  /// Number of seconds to collect responses. Zero is invalid.\r
+  ///\r
   UINT32                  TimeoutValue;\r
+  ///\r
+  /// Pointer to the packet to be transmitted.\r
+  ///\r
   EFI_DHCP4_PACKET        *Packet;\r
+  ///\r
+  /// Number of received packets.\r
+  ///\r
   UINT32                  ResponseCount;\r
+  ///\r
+  /// Pointer to the allocated list of received packets.\r
+  ///\r
   EFI_DHCP4_PACKET        *ResponseList;\r
 } EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN;\r
 \r
@@ -248,7 +463,12 @@ EFI_STATUS
                                 Dhcp4Stopped, Dhcp4Init, Dhcp4InitReboot, or Dhcp4Bound state;\r
                                 Or onother instance of this EFI DHCPv4 Protocol driver is already\r
                                 in a valid configured state.\r
-  @retval EFI_INVALID_PARAMETER Some parameter is NULL.\r
+  @retval EFI_INVALID_PARAMETER One or more following conditions are TRUE:\r
+                                This is NULL.\r
+                                DiscoverTryCount > 0 and DiscoverTimeout is NULL\r
+                                RequestTryCount > 0 and RequestTimeout is NULL.\r
+                                OptionCount >0 and OptionList is NULL.\r
+                                ClientAddress is not a valid unicast address.\r
   @retval EFI_OUT_OF_RESOURCES  Required system resources could not be allocated.\r
   @retval EFI_DEVICE_ERROR      An unexpected system or network error occurred.\r
 \r
@@ -426,7 +646,15 @@ EFI_STATUS
 \r
   @retval EFI_SUCCESS           The new packet was built.\r
   @retval EFI_OUT_OF_RESOURCES  Storage for the new packet could not be allocated.\r
-  @retval EFI_INVALID_PARAMETER Some parameter is NULL.\r
+  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+                                This is NULL.\r
+                                SeedPacket is NULL.\r
+                                SeedPacket is not a well-formed DHCP packet.\r
+                                AppendCount is not zero and AppendList is NULL.\r
+                                DeleteCount is not zero and DeleteList is NULL.\r
+                                NewPacket is NULL\r
+                                Both DeleteCount and AppendCount are zero and\r
+                                NewPacket is not NULL.\r
 \r
 **/\r
 typedef\r
@@ -453,11 +681,17 @@ EFI_STATUS
   @param  Token   Pointer to the EFI_DHCP4_TRANSMIT_RECEIVE_TOKEN structure.\r
 \r
   @retval EFI_SUCCESS           The packet was successfully queued for transmission.\r
-  @retval EFI_INVALID_PARAMETER Some parameter is NULL.\r
+  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+                                This is NULL.\r
+                                Token.RemoteAddress is zero.\r
+                                Token.Packet is NULL.\r
+                                Token.Packet is not a well-formed DHCP packet.\r
+                                The transaction ID in Token.Packet is in use by another DHCP process.\r
   @retval EFI_NOT_READY         The previous call to this function has not finished yet. Try to call\r
                                 this function after collection process completes.\r
   @retval EFI_NO_MAPPING        The default station address is not available yet.\r
   @retval EFI_OUT_OF_RESOURCES  Required system resources could not be allocated.\r
+  @retval EFI_UNSUPPORTED       The implementation doesn’t support this function\r
   @retval Others                Some other unexpected error occurred.\r
 \r
 **/\r
@@ -489,11 +723,16 @@ EFI_STATUS
                            options are not included.\r
 \r
   @retval EFI_SUCCESS           The packet was successfully parsed.\r
-  @retval EFI_INVALID_PARAMETER Some parameter is NULL.\r
+  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+                                This is NULL.\r
+                                Packet is NULL.\r
+                                Packet is not a well-formed DHCP packet.\r
+                                OptionCount is NULL.\r
   @retval EFI_BUFFER_TOO_SMALL  One or more of the following conditions is TRUE:\r
                                 1) *OptionCount is smaller than the number of options that\r
                                 were found in the Packet.\r
                                 2) PacketOptionList is NULL.\r
+  @retval EFI_OUT_OF_RESOURCE   The packet is failed to parse because of resource shortage.\r
 \r
 **/\r
 typedef\r