]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/NetLib.h
NetLib:
[mirror_edk2.git] / MdeModulePkg / Include / Library / NetLib.h
index 16c45cd749d7fda623c605bd75b5934e5d6a0b84..61102a788b750c048868e09c22bb83a13ea6a61d 100644 (file)
@@ -16,6 +16,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _NET_LIB_H_\r
 #define _NET_LIB_H_\r
 \r
+#include <Protocol/Ip6.h>\r
+\r
 typedef UINT32          IP4_ADDR;\r
 typedef UINT32          TCP_SEQNO;\r
 typedef UINT16          TCP_PORTNO;\r
@@ -40,6 +42,15 @@ typedef enum {
   IP4_MASK_NUM          = 33\r
 } IP4_CLASS_TYPE;\r
 \r
+typedef enum {\r
+  IP6_HOP_BY_HOP        = 0,\r
+  IP6_DESTINATION       = 60,\r
+  IP6_FRAGMENT          = 44,\r
+  IP6_AH                = 51,\r
+  IP6_ESP               = 50,\r
+  IP6_NO_NEXT_HEADER    = 59\r
+} IP6_EXTENSION_HEADER_TYPE;\r
+\r
 #pragma pack(1)\r
 \r
 //\r
@@ -95,6 +106,22 @@ typedef struct {
   UINT16                Seq;\r
 } IP4_ICMP_QUERY_HEAD;\r
 \r
+typedef struct {\r
+  UINT8                 Type;\r
+  UINT8                 Code;\r
+  UINT16                Checksum;\r
+} IP6_ICMP_HEAD;\r
+\r
+typedef struct {\r
+  IP6_ICMP_HEAD         Head;\r
+  UINT32                Fourth;\r
+  EFI_IP6_HEADER        IpHead;\r
+} IP6_ICMP_ERROR_HEAD;\r
+\r
+typedef struct {\r
+  IP6_ICMP_HEAD         Head;\r
+  UINT32                Fourth;\r
+} IP6_ICMP_INFORMATION_HEAD;\r
 \r
 //\r
 // UDP header definition\r
@@ -104,8 +131,7 @@ typedef struct {
   UINT16                DstPort;\r
   UINT16                Length;\r
   UINT16                Checksum;\r
-} EFI_UDP4_HEADER;\r
-\r
+} EFI_UDP_HEADER;\r
 \r
 //\r
 // TCP header definition\r
@@ -160,6 +186,9 @@ typedef struct {
 #define EFI_NTOHL(EfiIp)         (NTOHL (EFI_IP4 ((EfiIp))))\r
 #define EFI_IP4_EQUAL(Ip1, Ip2)  (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv4_ADDRESS)) == 0)\r
 \r
+#define EFI_IP6_EQUAL(Ip1, Ip2)  (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv6_ADDRESS)) == 0)\r
+\r
+\r
 /**\r
   Return the length of the mask. \r
   \r
@@ -227,6 +256,25 @@ Ip4IsUnicast (
   IN IP4_ADDR               NetMask\r
   );\r
 \r
+/**\r
+  Check whether the incoming IPv6 address is a valid unicast address.\r
+\r
+  If the address is a multicast address has binary 0xFF at the start, it is not\r
+  a valid unicast address. If the address is unspecified ::, it is not a valid\r
+  unicast address to be assigned to any node. If the address is loopback address\r
+  ::1, it is also not a valid unicast address to be assigned to any physical\r
+  interface. \r
+\r
+  @param[in]  Ip6                   The IPv6 address to check against.\r
+\r
+  @return TRUE if Ip6 is a valid unicast address on the network, otherwise FALSE.\r
+\r
+**/ \r
+BOOLEAN\r
+Ip6IsValidUnicast (\r
+  IN EFI_IPv6_ADDRESS       *Ip6\r
+  );\r
+\r
 extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM];\r
 \r
 \r