예제 #1
0
파일: Range.php 프로젝트: olragon/iptools
 /**
  * @return array
  */
 public function getNetworks()
 {
     $span = $this->getSpanNetwork();
     $networks = array();
     if ($span->getFirstIP()->inAddr() === $this->firstIP->inAddr() && $span->getLastIP()->inAddr() === $this->lastIP->inAddr()) {
         $networks = array($span);
     } else {
         if ($span->getFirstIP()->inAddr() !== $this->firstIP->inAddr()) {
             $excluded = $span->exclude($this->firstIP->prev());
             /**
              * @var Network $network
              */
             foreach ($excluded as $network) {
                 if ($network->getFirstIP()->inAddr() >= $this->firstIP->inAddr()) {
                     $networks[] = $network;
                 }
             }
         }
         if ($span->getLastIP()->inAddr() !== $this->lastIP->inAddr()) {
             if (!$networks) {
                 $excluded = $span->exclude($this->lastIP->next());
             } else {
                 $excluded = array_pop($networks);
                 $excluded = $excluded->exclude($this->lastIP->next());
             }
             foreach ($excluded as $network) {
                 $networks[] = $network;
                 if ($network->getLastIP()->inAddr() === $this->lastIP->inAddr()) {
                     break;
                 }
             }
         }
     }
     return $networks;
 }
예제 #2
0
파일: Range.php 프로젝트: s1lentium/iptools
 /**
  * @return bool
  */
 public function valid()
 {
     return strcmp($this->firstIP->next($this->position)->inAddr(), $this->lastIP->inAddr()) <= 0;
 }