public function getSubnets() { $new = array(); foreach ($this->subnets as $key=>&$s) { while ($s[0] <= $s[1]) { $length = $s[1] - $s[0] + 1; for ($i = (32 - floor(log($length, 2))); $i <= 32; $i++) { $test_ip = long2ip($s[0]) . '/' . $i; $test = new IP($test_ip); if ($test->getNetwork(true) == $s[0] && $test->getBroadcast(true) <= $s[1]) { $s[0] = $test->getBroadcast(true) + 1; $new[$test->getIP(true)] = $test->getIP() . "/" . $test->getCIDR(); break; } } } } ksort($new); return $new; }
/** * Returns true if the IP address of this class is in the given network. * * @param IP $network * @return bool */ public function inNetwork(IP $network) { return (($this->getIP(true) >= $network->getNetwork(true)) && ($this->getIP(true) <= $network->getBroadcast(true))); }