use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(serve_ipnr log_update serve_ipnr_free_range);
use Dbase::Help qw(Do DoFn DoSelect);
use Dbase::Globals qw( aufzaehlung );
use Dbase::IP;
use Fehler qw(problem);

sub delete_ipnr($;$) {
	my($idi,$kn) = @_;
	{
		my @ids;
		DoSelect { push @ids, shift } "SELECT id FROM hardware WHERE ip = $idi";
		return problem 'Dieses Objekt kann nicht gelöscht werden, da es bei '
		  . ( @ids == 1 ? "Hardware-Objekt #@ids\n" : "den Hardware-Objekten\n" . aufzaehlung @ids )
		  . 'als primäre IP-Adresse angegeben ist.'
		  if @ids;
	}
	serve_ipnr($idi,0,$kn);

	my($kid,$adr,$bit) = DoFn("select kunde,ip6,bits from ipkunde where id=$idi");
	$adr = Dbase::IP->new_db($adr,$bit);
	
	serve_ipnr_free_range($adr,$kid);

	my($id,$ipnr,$bits) = DoFn("select kunde,ip6,bits from ipkunde where id = $idi");
	log_update("ipkunde","kunde",$id,undef,"id","ip","-",undef,$idi,Dbase::IP->new_db($ipnr,$bits)->str);
	if($id > 0) {
		log_update("kunde","id",$id,undef,"ipkunde","-",undef,$idi);
		Do("update kunde set geaendert=UNIX_TIMESTAMP(NOW()) where id = $id");
	}
	Do("update person set uremip = NULL where uremip = $idi");
	Do("update domainkunde set nserver = NULL where nserver = $idi");
	Do("update ipregion set ipkunde = NULL where ipkunde = $idi");
	Do("delete from iptree where parent = $idi");
	Do("delete from iptree where child = $idi");
	Do("delete from ipmap where ipkunde = $idi");
	Do("delete from ipkunde where id = $idi");
}

1;
