I have a request in regards to ip segments.
Example: I have an ip segment : 10.10.10.0/8
I would like to get an array of /24's in the above range (entered ip segment with cidr) I tried with something like below:
$c_segment = explode("/", $segment);
$c_mask = ipv4::CIDRtoMask($c_segment[1]);
$input = new stdClass();
$input->ip = $c_segment[0];
$input->netmask = $c_mask;
$input->ip_int = ip2long($input->ip);
$input->netmask_int = ip2long($input->netmask);
// Network is a logical AND between the address and netmask
$input->network_int = $input->ip_int & $input->netmask_int;
$input->network = long2ip($input->network_int);
// Broadcast is a logical OR between the address and the NOT netmask
$input->broadcast_int = $input->ip_int | (~ $input->netmask_int);
$input->broadcast = long2ip($input->broadcast_int);
$ranges = ipv4::rangeToCIDRList($input->ip,$input->broadcast);
natsort($ranges);
$start_seg = ip2long($input->network);
$end_seg = $ranges[sizeof($ranges)-1];
$end_seg = explode("/",$end_seg);
$end_seg = ip2long($end_seg[0]);
$iterations = round(log($end_seg));
where $iterations should be number of /24's.. But I am not sure if it is the right way to do it (or if the above is the best way to do it..)
My end result should assist me printing ip addresses per /24 per page (with an option to paginate. (I know in the above example it would be a huge number of pages..)
Best
Lars