/** * @param int $prefixLength * @return array * @throws \Exception */ public function moveTo($prefixLength) { $maxPrefixLength = $this->ip->getMaxPrefixLength(); if ($prefixLength <= $this->getPrefixLength() || $prefixLength > $maxPrefixLength) { throw new \Exception('Invalid prefix length '); } $netmask = self::prefix2netmask($prefixLength, $this->ip->getVersion()); $networks = array(); $subnet = clone $this; $subnet->setPrefixLength($prefixLength); while ($subnet->ip->inAddr() <= $this->getLastIP()->inAddr()) { $networks[] = $subnet; $subnet = new self($subnet->getLastIP()->next(), $netmask); } return $networks; }