}
}
# sort by mask size
function cmp_subnets($a, $b)
{
    if ($a['subnet_dec'] == $b['subnet_dec']) {
        return 0;
    }
    return $a['subnet_dec'] < $b['subnet_dec'] ? -1 : 1;
}
usort($subnets_all, "cmp_subnets");
# recompute parents
foreach ($subnets_all as $k => $s) {
    foreach ($subnets_all as $sb) {
        if ($sb['subnet_dec'] !== $s['subnet_dec'] && $sb['mask'] !== $s['mask']) {
            if ($Subnets->is_subnet_inside_subnet($s['subnet'], $sb['subnet'])) {
                $subnets_all[$k]['master'] = $sb['subnet'];
            }
        }
    }
}
# import each
if (isset($subnets_all)) {
    foreach ($subnets_all as $s) {
        # set new POST
        $_POST = $s;
        # create csrf token
        $_POST['csrf_cookie'] = $User->csrf_cookie("create", "subnet");
        # permissions
        $subnet['permissions'] = $section->permissions;
        # check for master
 print "</tr>";
 print "<tbody id=device-{$deviceid}>";
 foreach ($query_result as $ip) {
     //get bitmask
     foreach ($masks as $k => $n) {
         if ($n->netmask == $ip['mask']) {
             $ip['bitmask'] = $k;
             break;
         }
     }
     $overlap = false;
     // check for overlapping
     if (isset($subnet)) {
         if ($subnet->isFolder != "1") {
             // check
             if ($Subnets->is_subnet_inside_subnet("{$ip['subnet']}/{$ip['bitmask']}", $Subnets->transform_address($subnet->subnet, "dotted") . "/" . $subnet->mask) === false) {
                 $overlap = true;
             }
             // same mask
             if ($ip['subnet'] == $Subnets->transform_address($subnet->subnet, "dotted") && $ip['bitmask'] == $subnet->mask) {
                 $overlap = true;
             }
         }
     }
     // check overlapping
     if ($overlap === false) {
         $dc++;
         print "<tr id='tr-{$m}'>";
         //ip
         print "<td>{$ip['subnet']}/{$ip['bitmask']}</td>";
         //section, description, hidden