]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/IpIoLib.h
1. Update the UdpIo to a combined UdpIo to support both v4 and v6 stack.
[mirror_edk2.git] / MdeModulePkg / Include / Library / IpIoLib.h
index 2f6f1e8f53900679b596c629ab808d56ae0b22dd..14f6884d1530cd145c66f3fcb08def14b9f9adf4 100644 (file)
@@ -81,41 +81,36 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 extern EFI_IP4_CONFIG_DATA  mIp4IoDefaultIpConfigData;\r
 extern EFI_IP6_CONFIG_DATA  mIp6IoDefaultIpConfigData;\r
 \r
-typedef enum {\r
-  IP_VERSION_4 = 4,\r
-  IP_VERSION_6 = 6\r
-} IP_VERSION;\r
+#define IP_VERSION_4 4\r
+#define IP_VERSION_6 6\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
-  ICMP_ERR_UNREACH_PROTOCOL,\r
-  ICMP_ERR_UNREACH_PORT,\r
-  ICMP_ERR_MSGSIZE,\r
-  ICMP_ERR_UNREACH_SRCFAIL,\r
-  ICMP_ERR_TIMXCEED_INTRANS,\r
-  ICMP_ERR_TIMXCEED_REASS,\r
-  ICMP_ERR_QUENCH,\r
-  ICMP_ERR_PARAMPROB\r
-} ICMP_ERROR;\r
-\r
-typedef enum {\r
-  ICMP6_ERR_UNREACH_NET      = 0,\r
-  ICMP6_ERR_UNREACH_HOST,\r
-  ICMP6_ERR_UNREACH_PROTOCOL,\r
-  ICMP6_ERR_UNREACH_PORT,\r
-  ICMP6_ERR_PACKAGE_TOOBIG,\r
-  ICMP6_ERR_TIMXCEED_HOPLIMIT,\r
-  ICMP6_ERR_TIMXCEED_REASS,\r
-  ICMP6_ERR_PARAMPROB_HEADER,\r
-  ICMP6_ERR_PARAMPROB_NEXHEADER,\r
-  ICMP6_ERR_PARAMPROB_IPV6OPTION\r
-} ICMP6_ERROR;\r
+\r
+#define  ICMP_ERR_UNREACH_NET           0\r
+#define  ICMP_ERR_UNREACH_HOST          1\r
+#define  ICMP_ERR_UNREACH_PROTOCOL      2\r
+#define  ICMP_ERR_UNREACH_PORT          3\r
+#define  ICMP_ERR_MSGSIZE               4\r
+#define  ICMP_ERR_UNREACH_SRCFAIL       5\r
+#define  ICMP_ERR_TIMXCEED_INTRANS      6\r
+#define  ICMP_ERR_TIMXCEED_REASS        7\r
+#define  ICMP_ERR_QUENCH                8\r
+#define  ICMP_ERR_PARAMPROB             9\r
+\r
+#define  ICMP6_ERR_UNREACH_NET          0\r
+#define  ICMP6_ERR_UNREACH_HOST         1\r
+#define  ICMP6_ERR_UNREACH_PROTOCOL     2\r
+#define  ICMP6_ERR_UNREACH_PORT         3\r
+#define  ICMP6_ERR_PACKAGE_TOOBIG       4\r
+#define  ICMP6_ERR_TIMXCEED_HOPLIMIT    5\r
+#define  ICMP6_ERR_TIMXCEED_REASS       6\r
+#define  ICMP6_ERR_PARAMPROB_HEADER     7\r
+#define  ICMP6_ERR_PARAMPROB_NEXHEADER  8\r
+#define  ICMP6_ERR_PARAMPROB_IPV6OPTION 9\r
 \r
 ///\r
 /// The helper struct for IpIoGetIcmpErrStatus(). It is for internal use only.\r
@@ -150,17 +145,24 @@ typedef union {
   EFI_IP6_CONFIG_DATA       Ip6CfgData;\r
 } IP_IO_IP_CONFIG_DATA;\r
 \r
+typedef union {\r
+  EFI_IP4_HEADER            *Ip4Hdr;\r
+  EFI_IP6_HEADER            *Ip6Hdr;\r
+} IP_IO_IP_HEADER;\r
+\r
+typedef union {\r
+  IP4_ADDR                  SubnetMask;\r
+  UINT8                     PrefixLength;\r
+} IP_IO_IP_MASK;\r
+\r
 ///\r
 /// The IP session for an IP receive packet.\r
 ///\r
 typedef struct _EFI_NET_SESSION_DATA {\r
   EFI_IP_ADDRESS        Source;     ///< Source IP of the received packet\r
   EFI_IP_ADDRESS        Dest;       ///< Destination IP of the received packet\r
-  union {\r
-    EFI_IP4_HEADER      *Ip4Hdr;    ///< IP4 header of the received packet\r
-    EFI_IP6_HEADER      *Ip6Hdr;    ///< IP6 header of the received packet\r
-  } IpHdr;\r
-  IP_VERSION            IpVersion;  ///< The IP version of the received packet\r
+  IP_IO_IP_HEADER       IpHdr;      ///< IP header of the received packet\r
+  UINT8                 IpVersion;  ///< The IP version of the received packet\r
 } EFI_NET_SESSION_DATA;\r
 \r
 /**\r
@@ -178,7 +180,7 @@ typedef
 VOID\r
 (*PKT_RCVD_NOTIFY) (\r
   IN EFI_STATUS           Status, \r
-  IN ICMP_ERROR           IcmpErr,\r
+  IN UINT8                IcmpErr,\r
   IN EFI_NET_SESSION_DATA *NetSession,\r
   IN NET_BUF              *Pkt,\r
   IN VOID                 *Context\r
@@ -249,10 +251,7 @@ typedef struct _IP_IO {
   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
-  //\r
-  // Ip Version \r
-  //\r
-  IP_VERSION                    IpVersion;\r
+  UINT8                         IpVersion;\r
 } IP_IO;\r
 \r
 ///\r
@@ -289,16 +288,13 @@ typedef struct _IP_IO_SEND_ENTRY {
 ///\r
 typedef struct _IP_IO_IP_INFO {\r
   EFI_IP_ADDRESS            Addr;\r
-  union {\r
-   IP4_ADDR                 SubnetMask;\r
-   UINT8                    PrefixLength;\r
-  } PreMask;\r
+  IP_IO_IP_MASK             PreMask;\r
   LIST_ENTRY                Entry;\r
   EFI_HANDLE                ChildHandle;\r
   VOID                      *Ip;\r
   IP_IO_IP_COMPLETION_TOKEN DummyRcvToken;\r
   INTN                      RefCnt;\r
-  IP_VERSION                IpVersion;\r
+  UINT8                     IpVersion;\r
 } IP_IO_IP_INFO;\r
 \r
 /**\r
@@ -322,7 +318,7 @@ EFIAPI
 IpIoCreate (\r
   IN EFI_HANDLE Image,\r
   IN EFI_HANDLE Controller,\r
-  IN IP_VERSION IpVersion\r
+  IN UINT8      IpVersion\r
   );\r
 \r
 /**\r
@@ -518,7 +514,7 @@ IP_IO_IP_INFO *
 EFIAPI\r
 IpIoFindSender (\r
   IN OUT IP_IO           **IpIo,\r
-  IN     IP_VERSION      IpVersion,\r
+  IN     UINT8           IpVersion,\r
   IN     EFI_IP_ADDRESS  *Src\r
   );\r
 \r
@@ -541,8 +537,8 @@ IpIoFindSender (
 EFI_STATUS\r
 EFIAPI\r
 IpIoGetIcmpErrStatus (\r
-  IN  ICMP_ERROR  IcmpError,\r
-  IN  IP_VERSION  IpVersion,\r
+  IN  UINT8       IcmpError,\r
+  IN  UINT8       IpVersion,\r
   OUT BOOLEAN     *IsHard  OPTIONAL,\r
   OUT BOOLEAN     *Notify  OPTIONAL\r
   );\r