/* Remove a group address from the array of group addresses. Although the function doesn't assume the byte order of the both Groups and Addr, the network byte order is used by the caller. */
INTN Ip4RemoveGroupAddr(IN OUT IP4_ADDR *Groups, IN UINT32 Count, IN IP4_ADDR Addr)
/* Remove a group address from the array of group addresses. Although the function doesn't assume the byte order of the both Groups and Addr, the network byte order is used by the caller. */
INTN Ip4RemoveGroupAddr(IN OUT IP4_ADDR *Groups, IN UINT32 Count, IN IP4_ADDR Addr)
{
  UINT32  Index;
  for (Index = 0; Index < Count; Index++) {
    if (Groups[Index] == Addr) {
      break;
    }
  }
  while (Index < Count - 1) {
    Groups[Index] = Groups[Index + 1];
    Index++;
  }
  return Index;
}