예제 #1
0
파일: Network.php 프로젝트: olragon/iptools
 /**
  * @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);
 }
예제 #2
0
 /**
  * @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);
 }
예제 #3
0
 /**
  * @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;
 }