/* If the address is a multicast address has binary 0xFF at the start, it is not a valid unicast address. If the address is unspecified ::, it is not a valid unicast address to be assigned to any node. If the address is loopback address ::1, it is also not a valid unicast address to be assigned to any physical interface. */
BOOLEAN EFIAPI NetIp6IsValidUnicast(IN EFI_IPv6_ADDRESS *Ip6)
/* If the address is a multicast address has binary 0xFF at the start, it is not a valid unicast address. If the address is unspecified ::, it is not a valid unicast address to be assigned to any node. If the address is loopback address ::1, it is also not a valid unicast address to be assigned to any physical interface. */
BOOLEAN EFIAPI NetIp6IsValidUnicast(IN EFI_IPv6_ADDRESS *Ip6)
{
  UINT8  Byte;
  UINT8  Index;
  ASSERT (Ip6 != NULL);
  if (Ip6->Addr[0] == 0xFF) {
    return FALSE;
  }
  for (Index = 0; Index < 15; Index++) {
    if (Ip6->Addr[Index] != 0) {
      return TRUE;
    }
  }
  Byte = Ip6->Addr[Index];
  if ((Byte == 0x0) || (Byte == 0x1)) {
    return FALSE;
  }
  return TRUE;
}