/** * @param bool $largeNumber * @return number|string */ public function getBlockSize($largeNumber = false) { $maxPrefixLength = $this->ip->getMaxPrefixLength(); $prefixLength = $this->getPrefixLength(); if ($largeNumber) { return bcpow('2', (string) ($maxPrefixLength - $prefixLength)); } return pow(2, $maxPrefixLength - $prefixLength); }
/** * @param bool $largeNumber * @return number|string */ public function getBlockSize() { $maxPrefixLength = $this->ip->getMaxPrefixLength(); $prefixLength = $this->getPrefixLength(); if ($this->ip->getVersion() === IP::IP_V6) { return bcpow('2', (string) ($maxPrefixLength - $prefixLength)); } return pow(2, $maxPrefixLength - $prefixLength); }
/** * @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; }