]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Enhance function header
authorjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 30 Dec 2008 12:12:46 +0000 (12:12 +0000)
committerjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 30 Dec 2008 12:12:46 +0000 (12:12 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7156 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Include/Library/IpIoLib.h

index 0ef93ed9e57279f20044d04f09d10fd330fdb563..1f983c9be214c8d4e5eb72c3964ff6a79013b257 100644 (file)
@@ -42,11 +42,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define ICMP_CODE_UNREACH_TOSNET       11\r
 #define ICMP_CODE_UNREACH_TOSHOST      12\r
 \r
-//\r
-// this error will be delivered to the\r
-// listening transportation layer protocol\r
-// consuming IpIO\r
-//\r
+///\r
+/// This error will be delivered to the\r
+/// listening transportation layer protocol\r
+/// that consumes IpIO.\r
+///\r
 typedef enum {\r
   ICMP_ERR_UNREACH_NET      = 0,\r
   ICMP_ERR_UNREACH_HOST,\r
@@ -60,93 +60,140 @@ typedef enum {
   ICMP_ERR_PARAMPROB\r
 } ICMP_ERROR;\r
 \r
+///\r
+/// The helper struct for IpIoGetIcmpErrStatus(). It is internal-use only.\r
+///\r
 typedef struct _ICMP_ERROR_INFO {\r
   BOOLEAN     IsHard;\r
   BOOLEAN     Notify;\r
 } ICMP_ERROR_INFO;\r
 \r
+/**\r
+  Get the IP header length from EFI_IP4_HEADER struct.\r
+  \r
+  @param HdrPtr   A pointer to EFI_IP4_HEADER\r
+  \r
+  @return The IP header length\r
+**/\r
 #define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2)\r
 \r
 extern EFI_IP4_CONFIG_DATA  mIpIoDefaultIpConfigData;\r
 \r
+///\r
+/// The IP session for an IP receive packet.\r
+///\r
 typedef struct _EFI_NET_SESSION_DATA {\r
-  IP4_ADDR        Source;\r
-  IP4_ADDR        Dest;\r
-  EFI_IP4_HEADER  *IpHdr;\r
+  IP4_ADDR        Source;     ///< Source IP of the received packet\r
+  IP4_ADDR        Dest;       ///< Destination IP of the received packet\r
+  EFI_IP4_HEADER  *IpHdr;     ///< IP4 header of the received packet\r
 } EFI_NET_SESSION_DATA;\r
 \r
+/**\r
+  The prototype is called back when an IP packet is received.\r
+  \r
+  @param Status        Result of the receive request\r
+  @param IcmpErr       Valid when Status is EFI_ICMP_ERROR\r
+  @param NetSession    The IP session for the received packet\r
+  @param Pkt           Packet received\r
+  @param Context       The data provided by user for the received packet when\r
+                       the callback is registered in IP_IO_OPEN_DATA::RcvdContext.\r
+  \r
+**/\r
 typedef\r
 VOID\r
 (*PKT_RCVD_NOTIFY) (\r
-  IN EFI_STATUS           Status,  // rcvd pkt result\r
-  IN ICMP_ERROR           IcmpErr, // if Status == EFI_ICMP_ERROR, this\r
-                                  // field is valid for user\r
-  IN EFI_NET_SESSION_DATA *NetSession, // the communication point\r
-  IN NET_BUF              *Pkt,    // packet received\r
-  IN VOID                 *Context // the Context provided by user for receive data\r
+  IN EFI_STATUS           Status, \r
+  IN ICMP_ERROR           IcmpErr,\r
+  IN EFI_NET_SESSION_DATA *NetSession,\r
+  IN NET_BUF              *Pkt,\r
+  IN VOID                 *Context\r
   );\r
 \r
+/**\r
+  The prototype is called back when an IP packet is sent.\r
+  \r
+  @param Status        Result of the sending\r
+  @param Context       The data provided by user for the received packet when\r
+                       the callback is registered in IP_IO_OPEN_DATA::SndContext.\r
+  @param Sender        A pointer to EFI_IP4_PROTOCOL for sender\r
+  @param NotifyData    Context data specified when calling IpIoSend()\r
+  \r
+**/\r
 typedef\r
 VOID\r
 (*PKT_SENT_NOTIFY) (\r
-  IN EFI_STATUS  Status,      // sent pkt result\r
-  IN VOID        *Context,    // the context provided by user for sending data\r
-  IN VOID        *Sender,     // the sender to be notified\r
-  IN VOID        *NotifyData  // sent pkt related data to notify\r
+  IN EFI_STATUS  Status,\r
+  IN VOID        *Context,\r
+  IN VOID        *Sender,\r
+  IN VOID        *NotifyData\r
   );\r
 \r
+///\r
+/// The data structure wraps Ip4 instance. It is used by IpIo Library to do all\r
+/// Ip4 operations.\r
+///\r
 typedef struct _IP_IO {\r
-\r
-  //\r
-  // the node used to link this IpIo to the active IpIo list.\r
-  //\r
+  ///\r
+  /// The node used to link this IpIo to the active IpIo list.\r
+  ///\r
   LIST_ENTRY                    Entry;\r
 \r
-  // the list used to maintain the IP instance for different sending purpose.\r
-  //\r
+  ///\r
+  /// The list used to maintain the IP instance for different sending purpose.\r
+  ///\r
   LIST_ENTRY                    IpList;\r
-\r
-  //\r
-  // the ip instance consumed by this IP IO\r
-  //\r
+  \r
   EFI_HANDLE                    Controller;\r
   EFI_HANDLE                    Image;\r
   EFI_HANDLE                    ChildHandle;\r
+  //\r
+  // The IP instance consumed by this IP_IO\r
+  //\r
   EFI_IP4_PROTOCOL              *Ip;\r
   BOOLEAN                       IsConfigured;\r
 \r
-  //\r
-  // some ip config data can be changed\r
-  //\r
+  ///\r
+  /// some ip config data can be changed\r
+  ///\r
   UINT8                         Protocol;\r
 \r
-  //\r
-  // token and event used to get data from IP\r
-  //\r
+  ///\r
+  /// Token and event used to get data from IP\r
+  ///\r
   EFI_IP4_COMPLETION_TOKEN      RcvToken;\r
 \r
-  //\r
-  // list entry used to link the token passed to IP_IO\r
-  //\r
+  ///\r
+  /// List entry used to link the token passed to IP_IO\r
+  ///\r
   LIST_ENTRY                    PendingSndList;\r
 \r
   //\r
   // User interface used to get notify from IP_IO\r
   //\r
-  VOID                          *RcvdContext;\r
-  VOID                          *SndContext;\r
-  PKT_RCVD_NOTIFY               PktRcvdNotify;\r
-  PKT_SENT_NOTIFY               PktSentNotify;\r
+  VOID                          *RcvdContext;    ///< See IP_IO_OPEN_DATA::RcvdContext\r
+  VOID                          *SndContext;     ///< See IP_IO_OPEN_DATA::SndContext\r
+  PKT_RCVD_NOTIFY               PktRcvdNotify;   ///< See IP_IO_OPEN_DATA::PktRcvdNotify\r
+  PKT_SENT_NOTIFY               PktSentNotify;   ///< See IP_IO_OPEN_DATA::PktSentNotify\r
 } IP_IO;\r
 \r
+///\r
+/// The struct is used for user to pass IP configuration and callbacks to IP_IO.\r
+/// It is used by IpIoOpen().\r
+///\r
 typedef struct _IP_IO_OPEN_DATA {\r
-  EFI_IP4_CONFIG_DATA IpConfigData;\r
-  VOID                *RcvdContext;\r
-  VOID                *SndContext;\r
-  PKT_RCVD_NOTIFY     PktRcvdNotify;\r
-  PKT_SENT_NOTIFY     PktSentNotify;\r
+  EFI_IP4_CONFIG_DATA IpConfigData;    ///< Configuration of the IP instance\r
+  VOID                *RcvdContext;    ///< Context data used by receive callback\r
+  VOID                *SndContext;     ///< Context data used by send callback\r
+  PKT_RCVD_NOTIFY     PktRcvdNotify;   ///< Receive callback\r
+  PKT_SENT_NOTIFY     PktSentNotify;   ///< Send callback\r
 } IP_IO_OPEN_DATA;\r
 \r
+///\r
+/// Internal struct book-keeping send request of IP_IO.\r
+///\r
+/// An IP_IO_SEND_ENTRY will be created each time a send request is issued to\r
+/// IP_IO via IpIoSend().\r
+///\r
 typedef struct _IP_IO_SEND_ENTRY {\r
   LIST_ENTRY                Entry;\r
   IP_IO                     *IpIo;\r
@@ -159,6 +206,10 @@ typedef struct _IP_IO_SEND_ENTRY {
 \r
 typedef EFI_IP4_OVERRIDE_DATA IP_IO_OVERRIDE;\r
 \r
+///\r
+/// The IP_IO_IP_INFO is used in IpIoSend() to override the default IP instance\r
+/// in IP_IO.\r
+///\r
 typedef struct _IP_IO_IP_INFO {\r
   IP4_ADDR                  Addr;\r
   IP4_ADDR                  SubnetMask;\r
@@ -171,12 +222,16 @@ typedef struct _IP_IO_IP_INFO {
 \r
 /**\r
   Create a new IP_IO instance.\r
+  \r
+  This function uses IP4 service binding protocol in Controller to create an IP4\r
+  child (aka IP4 instance).\r
 \r
-  @param  Image                 The image handle of an IP_IO consumer protocol.\r
-  @param  Controller            The controller handle of an IP_IO consumer protocol\r
-                                installed on.\r
+  @param  Image                 The image handle of the driver or application that\r
+                                consumes IP_IO.\r
+  @param  Controller            The controller handle that has IP4 service binding\r
+                                protocol installed.\r
 \r
-  @return Pointer to a newly created IP_IO instance.\r
+  @return Pointer to a newly created IP_IO instance, or NULL if failed.\r
 \r
 **/\r
 IP_IO *\r
@@ -188,12 +243,15 @@ IpIoCreate (
 \r
 /**\r
   Destroy an IP_IO instance.\r
+  \r
+  This function is paired with IpIoCreate(). The IP_IO will be closed first.\r
+  Resource will be freed afterwards. See IpIoClose().\r
 \r
-  @param  IpIo                  Pointer to the IP_IO instance that needs to\r
-                                destroy.\r
+  @param  IpIo                  Pointer to the IP_IO instance that needs to be\r
+                                destroyed.\r
 \r
   @retval EFI_SUCCESS           The IP_IO instance destroyed successfully.\r
-  @retval other                 Error condition occurred.\r
+  @retval Other                 Error condition occurred.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -204,11 +262,14 @@ IpIoDestroy (
 \r
 /**\r
   Stop an IP_IO instance.\r
+  \r
+  This function is paired with IpIoOpen(). The IP_IO will be unconfigured and all\r
+  the pending send/receive tokens will be canceled.\r
 \r
   @param  IpIo                  Pointer to the IP_IO instance that needs to stop.\r
 \r
   @retval EFI_SUCCESS           The IP_IO instance stopped successfully.\r
-  @retval other                 Error condition occurred.\r
+  @retval Other                 Error condition occurred.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -219,16 +280,22 @@ IpIoStop (
 \r
 /**\r
   Open an IP_IO instance for use.\r
+  \r
+  This function is called after IpIoCreate(). It is used for configuring the IP\r
+  instance and register the callbacks and their context data for sending and\r
+  receiving IP packets.\r
 \r
   @param  IpIo                  Pointer to an IP_IO instance that needs to open.\r
-  @param  OpenData              The configuration data for the IP_IO instance.\r
+  @param  OpenData              The configuration data and callbacks for the IP_IO\r
+                                instance.\r
 \r
   @retval EFI_SUCCESS           The IP_IO instance opened with OpenData\r
                                 successfully.\r
-  @retval other                 Error condition occurred.\r
+  @retval Other                 Error condition occurred.\r
 \r
 **/\r
 EFI_STATUS\r
+EFIAPI\r
 IpIoOpen (\r
   IN IP_IO           *IpIo,\r
   IN IP_IO_OPEN_DATA *OpenData\r
@@ -236,13 +303,18 @@ IpIoOpen (
 \r
 /**\r
   Send out an IP packet.\r
+  \r
+  This function is called after IpIoOpen(). The data to be sent are wrapped in\r
+  Pkt. The IP instance wrapped in IpIo is used for sending by default but can be\r
+  overriden by Sender. Other sending configs, like source address and gateway\r
+  address etc., are specified in OverrideData.\r
 \r
   @param  IpIo                  Pointer to an IP_IO instance used for sending IP\r
                                 packet.\r
   @param  Pkt                   Pointer to the IP packet to be sent.\r
   @param  Sender                The IP protocol instance used for sending.\r
-  @param  Context               \r
-  @param  NotifyData            \r
+  @param  Context               Optional context data\r
+  @param  NotifyData            Optional notify data\r
   @param  Dest                  The destination IP address to send this packet to.\r
   @param  OverrideData          The data to override some configuration of the IP\r
                                 instance used for sending.\r
@@ -257,18 +329,18 @@ EFIAPI
 IpIoSend (\r
   IN IP_IO           *IpIo,\r
   IN NET_BUF         *Pkt,\r
-  IN IP_IO_IP_INFO   *Sender,\r
-  IN VOID            *Context    OPTIONAL,\r
-  IN VOID            *NotifyData OPTIONAL,\r
+  IN IP_IO_IP_INFO   *Sender        OPTIONAL,\r
+  IN VOID            *Context       OPTIONAL,\r
+  IN VOID            *NotifyData    OPTIONAL,\r
   IN IP4_ADDR        Dest,\r
-  IN IP_IO_OVERRIDE  *OverrideData\r
+  IN IP_IO_OVERRIDE  *OverrideData  OPTIONAL\r
   );\r
 \r
 /**\r
   Cancel the IP transmit token which wraps this Packet.\r
 \r
   @param  IpIo                  Pointer to the IP_IO instance.\r
-  @param  Packet                Pointer to the packet to cancel.\r
+  @param  Packet                Pointer to the packet of NET_BUF to cancel.\r
 \r
 **/\r
 VOID\r
@@ -280,11 +352,15 @@ IpIoCancelTxToken (
 \r
 /**\r
   Add a new IP instance for sending data.\r
+  \r
+  The function is used to add the IP_IO to the IP_IO sending list. The caller\r
+  can later use IpIoFindSender() to get the IP_IO and call IpIoSend() to send\r
+  data.\r
 \r
   @param  IpIo                  Pointer to a IP_IO instance to add a new IP\r
                                 instance for sending purpose.\r
 \r
-  @return Pointer to the created IP_IO_IP_INFO structure, NULL is failed.\r
+  @return Pointer to the created IP_IO_IP_INFO structure, NULL if failed.\r
 \r
 **/\r
 IP_IO_IP_INFO *\r
@@ -298,14 +374,15 @@ IpIoAddIp (
   is not NULL.\r
 \r
   @param  IpInfo                Pointer to the IP_IO_IP_INFO instance.\r
-  @param  Ip4ConfigData         The IP4 configure data used to configure the ip\r
-                                instance, if NULL the ip instance is reseted. If\r
+  @param  Ip4ConfigData         The IP4 configure data used to configure the IP\r
+                                instance, if NULL the IP instance is reset. If\r
                                 UseDefaultAddress is set to TRUE, and the configure\r
                                 operation succeeds, the default address information\r
                                 is written back in this Ip4ConfigData.\r
 \r
   @retval EFI_STATUS            The status returned by IP4->Configure or\r
                                 IP4->Receive.\r
+  @retval Other                 Configuration fails.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -318,12 +395,14 @@ IpIoConfigIp (
 /**\r
   Destroy an IP instance maintained in IpIo->IpList for\r
   sending purpose.\r
+  \r
+  This function pairs with IpIoAddIp(). The IpInfo is previously created by\r
+  IpIoAddIp(). The IP_IO_IP_INFO::RefCnt is decremented and the IP instance\r
+  will be dstroyed if the RefCnt is zero.\r
 \r
   @param  IpIo                  Pointer to the IP_IO instance.\r
   @param  IpInfo                Pointer to the IpInfo to be removed.\r
 \r
-  @return None.\r
-\r
 **/\r
 VOID\r
 EFIAPI\r
@@ -335,12 +414,15 @@ IpIoRemoveIp (
 /**\r
   Find the first IP protocol maintained in IpIo whose local\r
   address is the same with Src.\r
+  \r
+  This function is called when the caller needs the IpIo to send data to the\r
+  specified Src. The IpIo was added previously by IpIoAddIp().\r
 \r
   @param  IpIo                  Pointer to the pointer of the IP_IO instance.\r
   @param  Src                   The local IP address.\r
 \r
   @return Pointer to the IP protocol can be used for sending purpose and its local\r
-  @return address is the same with Src.\r
+          address is the same with Src.\r
 \r
 **/\r
 IP_IO_IP_INFO *\r
@@ -351,10 +433,10 @@ IpIoFindSender (
   );\r
 \r
 /**\r
-  Get the ICMP error map information, the ErrorStatus will be returned.\r
-  The IsHard and Notify are optional. If they are not NULL, this rouine will\r
-  fill them.\r
-  We move IcmpErrMap[] to local variable to enable EBC build.\r
+  Get the ICMP error map information.\r
+  \r
+  The ErrorStatus will be returned. The IsHard and Notify are optional. If they\r
+  are not NULL, this routine will fill them.\r
 \r
   @param  IcmpError             IcmpError Type\r
   @param  IsHard                Whether it is a hard error\r
@@ -367,8 +449,8 @@ EFI_STATUS
 EFIAPI\r
 IpIoGetIcmpErrStatus (\r
   IN  ICMP_ERROR  IcmpError,\r
-  OUT BOOLEAN     *IsHard, OPTIONAL\r
-  OUT BOOLEAN     *Notify OPTIONAL\r
+  OUT BOOLEAN     *IsHard  OPTIONAL,\r
+  OUT BOOLEAN     *Notify  OPTIONAL\r
   );\r
 \r
 #endif\r