use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update edit_ipaddrs edit_ipregion list_ipregion);
use Dbase::Help qw(Do DoFn qquote);
use Dbase::Globals qw(content);
use Fehler qw(problem);
use Dbase::IP;

sub add_ipregion($$) {
	my($id,$kn) = @_;

	my $name = line_in "Name: "; return undef if $name eq "";
	my $idi = DoFn("select id from ipregion where zone=${\qquote $name}");
	if($idi) {
		list_ipregion($idi);
		return problem "Diese Region gibt es bereits!";
	}
	print "Welcher Adressbereich soll zum automatischen Segmentieren verwendet werden?\n";
	my $idz = edit_ipaddrs($id,1+4,"Bereich");
	return undef unless defined $idz;

	my $bits;
	if($idz eq "-") {
		$idz = "NULL";
		$bits = "NULL";
	} else {
		my ($eadr,$ebits) = DoFn("select ip6,bits from ipkunde where id=$idz");
		$eadr = Dbase::IP->new_db($eadr,$ebits);
		$bits = line_in "Bits: ";
		return undef unless content $bits;
		return problem "Zahl eingeben!" unless $bits =~ /^\d+$/;
		return problem "So viele Bits gibt es nicht!"
			if $bits > ($eadr->is_v4rf ? 32 : 128);
		return problem "Die Adressbreite muss größer sein als die des Bereichs!"
			if $bits < $eadr->masklen4;
		$bits = ($eadr->is_v4rf ? 32 : 128) - $bits;
	}
	$idi = Do("insert into ipregion set zone=${\qquote $name}, kunde=$id, ipkunde=$idz, alloc=$bits");
	log_update("ipregion","id",$idi,undef,"name","*",undef, $name);
	return edit_ipregion($idi,$id,$kn);
}
1;
