]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeNetLib/NetBuffer.c
[Change summary]:
[mirror_edk2.git] / MdeModulePkg / Library / DxeNetLib / NetBuffer.c
index 907bdfd3ead76326f0c5de3838754d8bf94ee9a3..42e308a5a32ae9175a5d02d926585ca2290ed9d5 100644 (file)
@@ -1803,3 +1803,41 @@ NetPseudoHeadChecksum (
 \r
   return NetblockChecksum ((UINT8 *) &Hdr, sizeof (Hdr));\r
 }\r
+\r
+/**\r
+  Compute the checksum for TCP6/UDP6 pseudo header. \r
+   \r
+  Src and Dst are in network byte order, and Len is in host byte order.\r
+\r
+  @param[in]   Src                   The source address of the packet.\r
+  @param[in]   Dst                   The destination address of the packet.\r
+  @param[in]   NextHeader            The protocol type of the packet.\r
+  @param[in]   Len                   The length of the packet.\r
+\r
+  @return   The computed checksum.\r
+\r
+**/\r
+UINT16\r
+NetIp6PseudoHeadChecksum (\r
+  IN EFI_IPv6_ADDRESS       *Src,\r
+  IN EFI_IPv6_ADDRESS       *Dst,\r
+  IN UINT8                  NextHeader,\r
+  IN UINT32                 Len\r
+  )\r
+{\r
+  NET_IP6_PSEUDO_HDR        Hdr;\r
+\r
+  //\r
+  // Zero the memory to relieve align problems\r
+  //\r
+  ZeroMem (&Hdr, sizeof (Hdr));\r
+\r
+  IP6_COPY_ADDRESS (&Hdr.SrcIp, Src);\r
+  IP6_COPY_ADDRESS (&Hdr.DstIp, Dst);\r
+\r
+  Hdr.NextHeader = NextHeader;\r
+  Hdr.Len        = HTONL (Len); \r
+\r
+  return NetblockChecksum ((UINT8 *) &Hdr, sizeof (Hdr));\r
+}\r
+\r