use utf8;
use warnings; no warnings "redefine";
use strict;
use Cf qw($VRF_PREFIX);
use Loader qw(edit_ipaddr get_free_ipaddr line_in);
use Dbase::Help qw(DoSelect Do DoFn DoT qquote DoTime);
use Dbase::Globals qw(find_dienst oberkunden 
	get_descr addr_from_block content);
use Dbase::IP;
use Fehler qw(problem fehler warnung);

# Flag&1: liefert die Adresse zurück, ohne einen Datensatz dafür anzulegen

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

	my $nr = line_in "VRF-Nr.: ";
	return unless content $nr;
	return problem "Nicht numerisch!" if $nr !~ /^\d+$/;
	return problem "Nicht in 16 Bits darstellbar!" if $nr > 65535;

	my $ip = Dbase::IP->new($VRF_PREFIX)->bitmask(32) + $nr;
	{
		my($idi,$knd) = DoFn "select id,kunde from ipkunde where ${\$ip->dbs}";
		return problem "Gibt es schon! (#$idi, Kunde #$knd:${\name_kunde $knd})"
			if defined $idi;
	}

	content( my $name = line_in "VRF-Name: " ) or return;
	return problem('Das ist kein gültiger VRF-Name.')
	  if $name !~ /^$Dbase::IP::RE_VRFname\z/;

	{
		my($idi,$knd) = DoFn "select id,kunde from ipkunde where vrf=${\qquote $name}";
		return problem "Gibt es schon! (#$idi, Kunde #$knd:${\name_kunde $knd})"
			if defined $idi;
	}

	my $idi = get_free_ipaddr($ip,$id);
	return unless $idi;
	Do "update ipkunde set vrf=${\qquote $name} where id=$idi";
	edit_ipaddr($idi,$id,$kn) if defined $idi;
}

1;
