/* Create an empty assemble entry for the packet identified by (Dst, Src, Id, Protocol). The default life for the packet is 120 seconds. */
IP4_ASSEMBLE_ENTRY* Ip4CreateAssembleEntry(IN IP4_ADDR Dst, IN IP4_ADDR Src, IN UINT16 Id, IN UINT8 Protocol)
/* Create an empty assemble entry for the packet identified by (Dst, Src, Id, Protocol). The default life for the packet is 120 seconds. */
IP4_ASSEMBLE_ENTRY* Ip4CreateAssembleEntry(IN IP4_ADDR Dst, IN IP4_ADDR Src, IN UINT16 Id, IN UINT8 Protocol)
{
  IP4_ASSEMBLE_ENTRY  *Assemble;
  Assemble = AllocatePool (sizeof (IP4_ASSEMBLE_ENTRY));
  if (Assemble == NULL) {
    return NULL;
  }
  InitializeListHead (&Assemble->Link);
  InitializeListHead (&Assemble->Fragments);
  Assemble->Dst      = Dst;
  Assemble->Src      = Src;
  Assemble->Id       = Id;
  Assemble->Protocol = Protocol;
  Assemble->TotalLen = 0;
  Assemble->CurLen   = 0;
  Assemble->Head     = NULL;
  Assemble->Info     = NULL;
  Assemble->Life     = IP4_FRAGMENT_LIFE;
  return Assemble;
}