/** * @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 (strcmp($network->getFirstIP()->inAddr(), $this->firstIP->inAddr()) >= 0) { $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; }