/** * @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; }
/** * @return bool */ public function valid() { return strcmp($this->firstIP->next($this->position)->inAddr(), $this->lastIP->inAddr()) <= 0; }