use utf8;
use warnings; no warnings "redefine";
use strict;

use Fehler qw(problem);
use Loader qw(line_printer);
use Dbase::Help qw(DoSelect isotime DoFn);
use Dbase::Globals qw(name_kunde def_or_minus);
use Dbase::IP;

sub list_ipregion($;$) {
	my($idi,$kn) = @_;
	line_printer;

	DoSelect {
		my($timestamp,$name,$info,$kunde,$alloc,$ipkunde,$ipkinfo) = @_;
		my($uip,$ubit);
		($uip,$ubit) = DoFn("select ip6,bits from ipkunde where id=$ipkunde") if $ipkunde;
		$uip = Dbase::IP->new_db($uip,$ubit);
		if($alloc) {
			$alloc = (((defined $uip) ? $uip->is_v4rf : ($alloc<32)) ? 32 : 128) -$alloc;
		}
		my $hdr;
		print $Db::pr_fh "ID      : $idi\n";
		print $Db::pr_fh "Timestamp: ".isotime($timestamp)."\n";
		print $Db::pr_fh "Name    : $name\n" if $name;
		print $Db::pr_fh "Infotext: $info\n" if $info;
		$ipkinfo = "???" unless defined $ipkinfo;
		print $Db::pr_fh "Kunde   : #$kunde:".name_kunde($kunde)."\n" if $kunde;
		print $Db::pr_fh "neuVon  : #$ipkunde:$ipkinfo\n" if $ipkunde and $alloc;
		print $Db::pr_fh "neuVon  : (#$ipkunde:$ipkinfo)\n" if $ipkunde and not $alloc;
		print $Db::pr_fh "neuBlock: /$alloc\n" if $alloc and $ipkunde;
		print $Db::pr_fh "neuBlock: (/$alloc)\n" if $alloc and not $ipkunde;
		DoSelect {
			my($iid,$ipadr,$bit,$inf) = @_;
			$ipadr = Dbase::IP->new_db($ipadr,$bit);
			print $Db::pr_fh <<END unless $hdr++;

Netze   :
   ID Adresse                   Name
END
			printf $Db::pr_fh "%5d %-25s %s\n",$iid,$ipadr->str(4),def_or_minus($inf);
		} "select id,ip6,bits,name from ipkunde where ipregion = $idi and (ende is NULL or ende > UNIX_TIMESTAMP(NOW()))";
	} "select ipregion.timestamp,ipregion.zone,ipregion.infotext,ipregion.kunde,ipregion.alloc,ipregion.ipkunde,ipkunde.name from ipregion left join ipkunde on ipkunde.id = ipregion.ipkunde where ipregion.id = $idi"
		or problem "Region '$idi' unbekannt.";
}
1;
