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

use Dbase::Help qw(Do DoFn);
use Loader qw(edit_ipaddrs log_update add_zone);
use Fehler qw(problem);
use Dbase::IP;

sub set_domain_nserver($;$) {
	my($idi,$kn) = @_;
	my($kk,$ons) = DoFn("select kunde,nserver from domainkunde where id = $idi");
	if($ons) {
		my $bits;
		($ons,$bits) = DoFn("select ip6,bits from ipkunde where id=$ons");
		$ons = Dbase::IP->new_db($ons,$bits)->str;
	} else {
		$ons="-";
	}

	my $ns = edit_ipaddrs($kk,1+2+4,$kn);
	return undef unless defined($ns);
	return 0 if $ns eq $ons;

	if ( $ns eq '-' ) { $ns = 'NULL' }
	else {
		my($ip,$bits) = DoFn("select ip6,bits from ipkunde where id=$ns");
		$ip = Dbase::IP->new_db($ip,$bits);
		return problem "IPv6-Nameserveradressen funktionieren (noch) nicht"
			if not $ip->is_v4;
	}

	log_update("domainkunde","id",$idi,undef,"nserver",undef,$ons);
	Do("update domainkunde set nserver=$ns where id=$idi");

	# Effekt: führe einen Zonen-Update aus, wenn das Flag schon gesetzt ist,
	# aber ein NS soeben entfernt wurde (weil nur dann müssen wir hier was tun)
	add_zone( $idi, 1 | 2 | 4, $kk ) if $ons ne '-';
	$ns;
}

1;
