$subnetPerm = checkSubnetPermission($_REQUEST['subnetId']); if ($subnetPerm < 3) { die('<div class="alert alert-danger">' . _('You do not have permissions to resize subnet') . '!</div>'); } /* verify post */ CheckReferrer(); # get old subnet details $subnetOld = getSubnetDetailsById($_POST['subnetId']); # get all site settings $settings = getAllSettings(); /* get section details */ $section = getSectionDetailsById($subnetOld['sectionId']); /* * now we need to check each host against new subnet */ $ipaddresses = getIpAddressesBySubnetIdSort($_POST['subnetId'], "ip_addr", "asc"); # get all IP addresses foreach ($ipaddresses as $ip) { # check against new subnet $error = VerifyIpAddress(transform2long($ip['ip_addr']), transform2long($subnetOld['subnet']) . "/" . $_POST['newMask']); if (!$error) { } else { $errors[] = $error; } } /* ask must be > 8 */ if ($_POST['newMask'] < 8) { die('<div class="alert alert-danger">' . _('New mask must be at least /8') . '!</div>'); } /* * if strict mode is enabled check that is is still inside master subnet!
# create array of new subnets based on number of subnets (number) for ($m = 0; $m < $subNum; $m++) { $newsubnets[$m] = $subnetOld; $newsubnets[$m]['id'] = $m; $newsubnets[$m]['mask'] = $mask; # if group is selected rewrite the masterSubnetId! if ($_POST['group'] == "yes") { $newsubnets[$m]['masterSubnetId'] = $subnetOld['id']; } # recalculate subnet if ($m > 0) { $newsubnets[$m]['subnet'] = gmp_strval(gmp_add($newsubnets[$m - 1]['subnet'], $maxHosts)); } } # recalculate old hosts to put it to right subnet $ipaddresses = getIpAddressesBySubnetIdSort($subnetOld['id'], "ip_addr", "asc"); # get all IP addresses $subSize = sizeof($newsubnets); # how many times to check $n = 0; # ip address count foreach ($ipaddresses as $ip) { # check to which it belongs for ($m = 0; $m < $subSize; $m++) { # check if between this and next - strict if ($_POST['strict'] == "yes") { # check if last if ($m + 1 == $subSize) { if ($ip['ip_addr'] > $newsubnets[$m]['subnet']) { $ipaddresses[$n]['subnetId'] = $newsubnets[$m]['id']; }
*/ $SubnetParsed = parseIpAddress(transform2long($SubnetDetails['subnet']), $SubnetDetails['mask']); } /* verify that user is authenticated! */ isUserAuthenticated(); /* get all selected fields for IP print */ $setFields = getSelectedIPaddrFields(); /* format them to array! */ $setFields = explode(";", $setFields); /** * Get all ip addresses in subnet and subnet details! */ $title = _("IP addresses in subnet "); # prefix for multiple subnets if (sizeof($slaves) == 0) { $ipaddresses = getIpAddressesBySubnetIdSort($subnetId, $sort['field'], $sort['direction']); $slavePing = false; } else { $ipaddresses = getIpAddressesBySubnetIdSlavesSort($subnetId, $sort['field'], $sort['direction']); $title = _("All IP addresses belonging to ALL nested subnets"); $slavePing = true; } $SubnetDetails = getSubnetDetailsById($subnetId); /* die if empty! */ if (sizeof($SubnetDetails) == 0) { die('<div class="alert alert-danger">' . _('Subnet does not exist') . '!</div>'); } /* get all selected fields */ $myFields = getCustomFields('ipaddresses'); $myFieldsSize = sizeof($myFields); /* set size of selected fields */
* Parse IP addresses * * We provide subnet and mask, all other is calculated based on it (subnet, broadcast,...) */ $SubnetParsed = parseIpAddress(transform2long($SubnetDetails['subnet']), $SubnetDetails['mask']); } /* verify that user is authenticated! */ isUserAuthenticated(); /* get all selected fields for IP print */ $setFieldsTemp = getSelectedIPaddrFields(); /* format them to array! */ $setFields = explode(";", $setFieldsTemp); /** * Get all ip addresses in subnet and subnet details! */ $ipaddresses = getIpAddressesBySubnetIdSort($subnetId, "ip_addr", "asc"); $SubnetDetails = getSubnetDetailsById($subnetId); /* die if empty! */ if (sizeof($SubnetDetails) == 0) { die('<div class="alert alert-danger">' . _('Subnet does not exist') . '!</div>'); } /* get all selected fields */ $myFields = getCustomFields('ipaddresses'); $myFieldsSize = sizeof($myFields); /* set colspan */ $colspan['unused'] = sizeof($setFields) + $myFieldsSize + 1; $colspan['ipaddr'] = sizeof($setFields) + $myFieldsSize + 4; /* remove myFields if all empty! */ foreach ($myFields as $field) { $sizeMyFields[$field['name']] = 0; # default value