/** * @return array */ public function provide_valid_parse() { $validNetmasks = array('255.255.255.255', '255.255.255.254', '255.255.255.252', '255.255.255.248', '255.255.255.240', '255.255.255.224', '255.255.255.192', '255.255.255.128', '255.255.255.0', '255.255.254.0', '255.255.252.0', '255.255.248.0', '255.255.240.0', '255.255.224.0', '255.255.192.0', '255.255.128.0', '255.255.0.0', '255.254.0.0', '255.252.0.0', '255.248.0.0', '255.240.0.0', '255.224.0.0', '255.192.0.0', '255.128.0.0', '255.0.0.0', '254.0.0.0', '252.0.0.0', '248.0.0.0', '240.0.0.0', '224.0.0.0', '192.0.0.0', '128.0.0.0', '0.0.0.0'); return array_map(function ($netmask) { $ip = ip2long('10.0.0.1' . (rand(0, 1) ? '' : '28')); $bits = Cidr::countSetBits(ip2long($netmask)); $bitmask = $bits == 0 ? 0 : ~0 << 32 - $bits; $start = $ip & $bitmask; $end = $ip | ~$bitmask & 0xffffffff; return array(long2ip($ip) . '/' . $netmask, $start, $end); }, $validNetmasks); }