[SCM] Debian packaging of AllKnowingDNS CPAN distribution branch, master, updated. 71a54a6e11ef5324e7aceb027ac73b7fc1030484

Michael Stapelberg michael at stapelberg.de
Mon Mar 12 09:23:33 UTC 2012


The following commit has been merged in the master branch:
commit 805748959858e95afea118df9b3bb2e0ccf763da
Author: Michael Stapelberg <michael at stapelberg.de>
Date:   Mon Mar 12 09:50:10 2012 +0100

    Imported Upstream version 1.2

diff --git a/Changes b/Changes
new file mode 100644
index 0000000..8e2abf1
--- /dev/null
+++ b/Changes
@@ -0,0 +1,16 @@
+History file for AllKnowingDNS
+
+1.2 2012-03-12
+
+- Fix documentation (provide proper NAME sections)
+- Provide a Changes file
+
+1.1 2012-03-11
+
+- Fix compatibility with Perl < 5.14 by dereferencing an arrayref explicitly
+- Add documentation for all-knowing-dns(1)
+- Remove .upstream suffix when relaying DNS answers
+
+1.0 2012-03-08
+
+- Initial release
diff --git a/MANIFEST b/MANIFEST
index 6247cef..286b6d5 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,5 @@
 all-knowing-dns.conf
+Changes
 inc/Module/Install.pm
 inc/Module/Install/Base.pm
 inc/Module/Install/Can.pm
diff --git a/META.yml b/META.yml
index c41ea96..d2a616d 100644
--- a/META.yml
+++ b/META.yml
@@ -1,13 +1,14 @@
 ---
-abstract: 'Tiny DNS server for IPv6 Reverse DNS'
+abstract: ~
 author:
   - 'Michael Stapelberg, C<< <michael at stapelberg.de> >>'
 build_requires:
-  ExtUtils::MakeMaker: 6.42
+  ExtUtils::MakeMaker: 6.62
 configure_requires:
-  ExtUtils::MakeMaker: 6.42
+  ExtUtils::MakeMaker: 6.62
 distribution_type: module
-generated_by: 'Module::Install version 1.01'
+dynamic_config: 1
+generated_by: 'Module::Install version 1.04'
 license: bsd
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -26,4 +27,4 @@ requires:
   perl: 5.10.0
 resources:
   license: http://opensource.org/licenses/bsd-license.php
-version: 1.0
+version: 1.2
diff --git a/Makefile.PL b/Makefile.PL
index c2bcd72..0d2adc7 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -5,7 +5,7 @@ use warnings;
 use inc::Module::Install;
 
 name     'AllKnowingDNS';
-all_from 'lib/App/AllKnowingDNS/Handler.pm';
+all_from 'script/all-knowing-dns';
 
 requires 'Net::DNS';
 requires 'Privileges::Drop';
diff --git a/all-knowing-dns.conf b/all-knowing-dns.conf
index 8871e18..2d0e819 100644
--- a/all-knowing-dns.conf
+++ b/all-knowing-dns.conf
@@ -1,4 +1,4 @@
-# Configuration file for AllKnowingDNS v1.0
+# Configuration file for AllKnowingDNS v1.2
 
 # RaumZeitLabor
 network 2001:4d88:100e:ccc0::/64
diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
index 74caf9c..c685ca4 100644
--- a/inc/Module/Install.pm
+++ b/inc/Module/Install.pm
@@ -31,7 +31,7 @@ BEGIN {
 	# This is not enforced yet, but will be some time in the next few
 	# releases once we can make sure it won't clash with custom
 	# Module::Install extensions.
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 
 	# Storage for the pseudo-singleton
 	$MAIN    = undef;
@@ -451,7 +451,7 @@ sub _version ($) {
 }
 
 sub _cmp ($$) {
-	_version($_[0]) <=> _version($_[1]);
+	_version($_[1]) <=> _version($_[2]);
 }
 
 # Cloned from Params::Util::_CLASS
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
index d3662c9..b520616 100644
--- a/inc/Module/Install/Base.pm
+++ b/inc/Module/Install/Base.pm
@@ -4,7 +4,7 @@ package Module::Install::Base;
 use strict 'vars';
 use vars qw{$VERSION};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 }
 
 # Suspend handler for "redefined" warnings
diff --git a/inc/Module/Install/Can.pm b/inc/Module/Install/Can.pm
index 276409a..a162ad4 100644
--- a/inc/Module/Install/Can.pm
+++ b/inc/Module/Install/Can.pm
@@ -9,7 +9,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Fetch.pm b/inc/Module/Install/Fetch.pm
index 093cb7a..a412576 100644
--- a/inc/Module/Install/Fetch.pm
+++ b/inc/Module/Install/Fetch.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Makefile.pm b/inc/Module/Install/Makefile.pm
index 4c71003..035cef2 100644
--- a/inc/Module/Install/Makefile.pm
+++ b/inc/Module/Install/Makefile.pm
@@ -8,7 +8,7 @@ use Fcntl qw/:flock :seek/;
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -219,14 +219,14 @@ sub write {
 		# an underscore, even though its own version may contain one!
 		# Hence the funny regexp to get rid of it.  See RT #35800
 		# for details.
-		my $v = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/;
+		my ($v) = $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/;
 		$self->build_requires(     'ExtUtils::MakeMaker' => $v );
 		$self->configure_requires( 'ExtUtils::MakeMaker' => $v );
 	} else {
 		# Allow legacy-compatibility with 5.005 by depending on the
 		# most recent EU:MM that supported 5.005.
-		$self->build_requires(     'ExtUtils::MakeMaker' => 6.42 );
-		$self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 );
+		$self->build_requires(     'ExtUtils::MakeMaker' => 6.36 );
+		$self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 );
 	}
 
 	# Generate the MakeMaker params
@@ -241,7 +241,6 @@ in a module, and provide its file path via 'version_from' (or
 'all_from' if you prefer) in Makefile.PL.
 EOT
 
-	$DB::single = 1;
 	if ( $self->tests ) {
 		my @tests = split ' ', $self->tests;
 		my %seen;
@@ -412,4 +411,4 @@ sub postamble {
 
 __END__
 
-#line 541
+#line 540
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
index 3b01e09..31c953e 100644
--- a/inc/Module/Install/Metadata.pm
+++ b/inc/Module/Install/Metadata.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
@@ -151,15 +151,21 @@ sub install_as_site   { $_[0]->installdirs('site')   }
 sub install_as_vendor { $_[0]->installdirs('vendor') }
 
 sub dynamic_config {
-	my $self = shift;
-	unless ( @_ ) {
-		warn "You MUST provide an explicit true/false value to dynamic_config\n";
-		return $self;
+	my $self  = shift;
+	my $value = @_ ? shift : 1;
+	if ( $self->{values}->{dynamic_config} ) {
+		# Once dynamic we never change to static, for safety
+		return 0;
 	}
-	$self->{values}->{dynamic_config} = $_[0] ? 1 : 0;
+	$self->{values}->{dynamic_config} = $value ? 1 : 0;
 	return 1;
 }
 
+# Convenience command
+sub static_config {
+	shift->dynamic_config(0);
+}
+
 sub perl_version {
 	my $self = shift;
 	return $self->{values}->{perl_version} unless @_;
@@ -170,7 +176,7 @@ sub perl_version {
 	# Normalize the version
 	$version = $self->_perl_version($version);
 
-	# We don't support the reall old versions
+	# We don't support the really old versions
 	unless ( $version >= 5.005 ) {
 		die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n";
 	}
@@ -582,7 +588,7 @@ sub bugtracker_from {
 sub requires_from {
 	my $self     = shift;
 	my $content  = Module::Install::_readperl($_[0]);
-	my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
+	my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg;
 	while ( @requires ) {
 		my $module  = shift @requires;
 		my $version = shift @requires;
diff --git a/inc/Module/Install/Scripts.pm b/inc/Module/Install/Scripts.pm
index e9510f8..12f5a1b 100644
--- a/inc/Module/Install/Scripts.pm
+++ b/inc/Module/Install/Scripts.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/Win32.pm b/inc/Module/Install/Win32.pm
index 3139a63..99d9631 100644
--- a/inc/Module/Install/Win32.pm
+++ b/inc/Module/Install/Win32.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = 'Module::Install::Base';
 	$ISCORE  = 1;
 }
diff --git a/inc/Module/Install/WriteAll.pm b/inc/Module/Install/WriteAll.pm
index 1f724a7..86bb25e 100644
--- a/inc/Module/Install/WriteAll.pm
+++ b/inc/Module/Install/WriteAll.pm
@@ -6,7 +6,7 @@ use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-	$VERSION = '1.01';
+	$VERSION = '1.04';
 	@ISA     = qw{Module::Install::Base};
 	$ISCORE  = 1;
 }
diff --git a/lib/App/AllKnowingDNS/Config.pm b/lib/App/AllKnowingDNS/Config.pm
index fba3375..1b14d32 100644
--- a/lib/App/AllKnowingDNS/Config.pm
+++ b/lib/App/AllKnowingDNS/Config.pm
@@ -6,6 +6,21 @@ use App::AllKnowingDNS::Zone;
 use App::AllKnowingDNS::Util;
 use Data::Dumper;
 
+=head1 NAME
+
+App::AllKnowingDNS::Config - configuration object
+
+=head1 DESCRIPTION
+
+Note: User documentation is in L<all-knowing-dns>(1).
+
+This module defines an object which holds the parsed version of the
+AllKnowingDNS configuration file.
+
+=head1 FUNCTIONS
+
+=cut
+
 has 'listen_addresses' => (
     traits => [ 'Array' ],
     is => 'ro',
@@ -39,7 +54,7 @@ sub add_zone {
 
     $zone->ptrzone(App::AllKnowingDNS::Util::netmask_to_ptrzone($zone->network));
 
-    push $self->zones, $zone;
+    push @{$self->zones}, $zone;
 }
 
 =head2 zone_for_ptr($zone)
@@ -48,6 +63,7 @@ Returns the appropriate zone for the given PTR query or undef if there is no
 appropriate zone.
 
 Example:
+
     my $query = '7.c.e.2.3.4.e.f.f.f.b.d.9.1.2.0.' .
                 '0.c.c.c.e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa';
     my $zone = $config->zone_for_ptr($query);
@@ -55,6 +71,7 @@ Example:
     ...
 
 =cut
+
 sub zone_for_ptr {
     my ($self, $query) = @_;
 
@@ -72,12 +89,14 @@ Returns the appropriate zone for the given AAAA query or undef if there is no
 appropriate zone.
 
 Example:
+
     my $query = 'ipv6-foo.nutzer.raumzeitlabor.de';
     my $zone = $config->zone_for_aaaa($query);
     return 'NXDOMAIN' unless defined($zone);
     ...
 
 =cut
+
 sub zone_for_aaaa {
     my ($self, $query) = @_;
 
@@ -92,3 +111,22 @@ sub zone_for_aaaa {
 __PACKAGE__->meta->make_immutable();
 
 1
+
+__END__
+
+=head1 VERSION
+
+Version 1.2
+
+=head1 AUTHOR
+
+Michael Stapelberg, C<< <michael at stapelberg.de> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2012 Michael Stapelberg.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the BSD license.
+
+=cut
diff --git a/lib/App/AllKnowingDNS/Handler.pm b/lib/App/AllKnowingDNS/Handler.pm
index 0844c57..f4aca4e 100644
--- a/lib/App/AllKnowingDNS/Handler.pm
+++ b/lib/App/AllKnowingDNS/Handler.pm
@@ -11,9 +11,21 @@ use App::AllKnowingDNS::Zone;
 use POSIX qw(strftime);
 use v5.10;
 
-our @EXPORT = qw(reply_handler);
+=head1 NAME
+
+App::AllKnowingDNS::Handler - main code of AllKnowingDNS
+
+=head1 DESCRIPTION
+
+Note: User documentation is in L<all-knowing-dns>(1).
 
-our $VERSION = '1.0';
+This module contains the C<Net::DNS::Nameserver> handler function.
+
+=head1 FUNCTIONS
+
+=cut
+
+our @EXPORT = qw(reply_handler);
 
 sub handle_ptr_query {
     my ($querylog, $zone, $qname, $qclass, $qtype) = @_;
@@ -33,6 +45,12 @@ sub handle_ptr_query {
             if ($querylog) {
                 say strftime('%x %X %z', localtime) . " - Relaying upstream answer for $qname";
             }
+            my @answer = $result->answer;
+            for my $answer (@answer) {
+                my $name = $answer->name;
+                $name =~ s/\.upstream$//;
+                $answer->name($name);
+            }
             return ('NOERROR', [ $result->answer ], [], [], { aa => 1 });
         }
     }
@@ -83,6 +101,7 @@ Returns DNS RRs for PTR and AAAA queries of zones which are configured in
 C<$config>.
 
 =cut
+
 sub reply_handler {
     my ($config, $querylog, $qname, $qclass, $qtype, $peerhost) = @_;
 
@@ -107,29 +126,9 @@ sub reply_handler {
 
 __END__
 
-=head1 NAME
-
-AllKnowingDNS - Tiny DNS server for IPv6 Reverse DNS
-
-=head1 DESCRIPTION
-
-AllKnowingDNS provides reverse DNS for IPv6 networks which use SLAAC
-(autoconf), e.g. for a /64 network.
-
-The problem with IPv6 reverse DNS and traditional nameservers is that the
-nameserver requires you to provide a zone file. Assuming you want to provide
-RDNS for a /64 network, you have 2**64 = 18446744073709551616 different usable
-IP addresses (a little less if you are using SLAAC). Providing a zone file for
-that, even in a very terse notation, would consume a huge amount of disk space
-and could not possibly be held in the memory of the computers we have nowadays.
-
-AllKnowingDNS instead generates PTR and AAAA records on the fly. You only
-configure which network you want to serve and what your entries should look
-like.
-
 =head1 VERSION
 
-Version 1.0
+Version 1.2
 
 =head1 AUTHOR
 
diff --git a/lib/App/AllKnowingDNS/Util.pm b/lib/App/AllKnowingDNS/Util.pm
index 7cb49e9..cb7af5b 100644
--- a/lib/App/AllKnowingDNS/Util.pm
+++ b/lib/App/AllKnowingDNS/Util.pm
@@ -9,6 +9,18 @@ use App::AllKnowingDNS::Zone;
 use NetAddr::IP::Util qw(ipv6_aton);
 use v5.10;
 
+=head1 NAME
+
+App::AllKnowingDNS::Util - utility functions
+
+=head1 DESCRIPTION
+
+Note: User documentation is in L<all-knowing-dns>(1).
+
+=head1 FUNCTIONS
+
+=cut
+
 our @EXPORT = qw(parse_config netmask_to_ptrzone);
 
 =head2 parse_config($lines)
@@ -18,6 +30,7 @@ Parses a block of text as configfile.
 Returns a corresponding App::AllKnowingDNS::Config object.
 
 =cut
+
 sub parse_config {
     my ($input) = @_;
     my $config = App::AllKnowingDNS::Config->new;
@@ -79,10 +92,12 @@ sub parse_config {
 Converts the given netmask to a PTR zone.
 
 Example:
+
     my $ptrzone = netmask_to_ptrzone('2001:4d88:100e:ccc0::/64');
     say $ptrzone; # 0.c.c.c.e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa
 
 =cut
+
 sub netmask_to_ptrzone {
     my ($netmask) = @_;
 
diff --git a/script/all-knowing-dns b/script/all-knowing-dns
index 04e8b12..7e6e124 100755
--- a/script/all-knowing-dns
+++ b/script/all-knowing-dns
@@ -15,6 +15,8 @@ use Net::DNS::Nameserver;
 use Privileges::Drop;
 use v5.10;
 
+our $VERSION = '1.2';
+
 my $configfile = '/etc/all-knowing-dns.conf';
 my $querylog = 0;
 
@@ -22,7 +24,7 @@ GetOptions(
     'configfile=s' => \$configfile,
     'querylog!' => \$querylog,
     'version' => sub {
-        say "AllKnowingDNS v$App::AllKnowingDNS::Handler::VERSION " .
+        say "AllKnowingDNS v$VERSION " .
             "© 2012 Michael Stapelberg and contributors";
         exit 0;
     },
@@ -38,7 +40,7 @@ GetOptions(
 );
 
 openlog('all-knowing-dns', 'pid', 'daemon');
-syslog('info', "AllKnowingDNS v$App::AllKnowingDNS::Handler::VERSION starting");
+syslog('info', "AllKnowingDNS v$VERSION starting");
 
 my $input;
 my $fh;
@@ -71,3 +73,177 @@ my $ns = Net::DNS::Nameserver->new(
 drop_privileges('nobody');
 
 $ns->main_loop;
+
+__END__
+
+=head1 NAME
+
+all-knowing-dns - Tiny DNS server for IPv6 Reverse DNS
+
+=head1 SYNOPSIS
+
+    all-knowing-dns [--configfile <path>] [--querylog]
+
+=head1 DESCRIPTION
+
+AllKnowingDNS provides reverse DNS for IPv6 networks which use SLAAC
+(autoconf), e.g. for a /64 network.
+
+The problem with IPv6 reverse DNS and traditional nameservers is that the
+nameserver requires you to provide a zone file. Assuming you want to provide
+RDNS for a /64 network, you have 2**64 = 18446744073709551616 different usable
+IP addresses (a little less if you are using SLAAC). Providing a zone file for
+that, even in a very terse notation, would consume a huge amount of disk space
+and could not possibly be held in the memory of the computers we have nowadays.
+
+AllKnowingDNS instead generates PTR and AAAA records on the fly. You only
+configure which network you want to serve and what your entries should look
+like.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<--configfile=I<path>>
+
+Use I<path> instead of /etc/all-knowing-dns.conf as configuration file.
+
+=item B<--querylog>
+
+Enable logging every query to stdout (for debugging).
+
+=back
+
+=head1 CONFIGURATION FILE (/etc/all-knowing-dns.conf)
+
+The configuration file is wonderfully simple:
+
+    # Configuration file for AllKnowingDNS v1.2
+
+    listen 79.140.39.197
+    listen 2001:4d88:100e:1::3
+    
+    # RaumZeitLabor
+    network 2001:4d88:100e:ccc0::/64
+        resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de
+        with upstream 2001:4d88:100e:1::2
+    
+    # Chaostreff
+    network 2001:4d88:100e:cd1::/64
+        resolves to ipv6-%DIGITS%.treff.noname-ev.de
+
+This example contains all configuration directives. Let's go over them one by
+one:
+
+=over 4
+
+=item B<listen I<address>>
+
+Listens on the given I<address> (IPv4 and IPv6 is supported) on port 53.
+
+=item B<network I<network>>
+
+Specifies that queries for PTR records within the given network should be
+answered (any query for an unconfigured network will be answered with
+NXDOMAIN). You need to specify at least the B<resolves to> directive
+afterwards.
+
+=item B<resolves to I<address>>
+
+Specifies the address to which PTR records should resolve. The address needs to
+contain %DIGITS% exactly once. When answering AAAA queries, %DIGITS% will be
+parsed and converted back to an IPv6 address.
+
+Example:
+
+    network 2001:4d88:100e:ccc0::/64
+        resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de
+
+Example query:
+
+    The PTR query 2001:4d88:100e:ccc0:216:eaff:fecb:826 will resolve to
+    ipv6-0216eafffecb0826.nutzer.raumzeitlabor.de
+
+=item B<with upstream I<address>>
+
+Before answering a PTR query for this network, AllKnowingDNS will ask the DNS
+server at I<address> first, appending .upstream to the query.
+
+Example:
+
+    network 2001:4d88:100e:ccc0::/64
+        resolves to ipv6-%DIGITS%.nutzer.raumzeitlabor.de
+        with upstream 2001:4d88:100e:1::2
+
+Example query:
+
+    The PTR query 2001:4d88:100e:ccc0:219:dbff:fe43:2ec5 will make
+    AllKnowingDNS ask for
+    5.c.e.2.3.4.e.f.f.f.b.d.9.1.2.0.0.c.c.c.e.0.0.1. \
+    8.8.d.4.1.0.0.2.ip6.arpa.upstream. at 2001:4d88:100e:1::2
+    and relay the answer, if any.
+
+=back
+
+=head1 DELEGATING ZONES
+
+This section shows you how to delegate a zone in BIND9 or any DNS server with a
+compatible zone file syntax. To use AllKnowingDNS, you need to delegate the
+appropriate .ip6.arpa zone for your network and one regular domain.
+
+=head2 REVERSE DELEGATION (.ip6.arpa)
+
+
+    $ORIGIN .
+    $TTL 604800     ; 1 week
+    e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa IN SOA infra.in.zekjur.net. \
+                                          hostmaster.zekjur.net. (
+                                    20         ; serial
+                                    604800     ; refresh (1 week)
+                                    86400      ; retry (1 day)
+                                    2419200    ; expire (4 weeks)
+                                    604800     ; minimum (1 week)
+                                    )
+                            NS      libri.sur5r.net.
+                            NS      infra.in.zekjur.net.
+
+    ; net for RaumZeitLabor
+    0.c.c.c.e.0.0.1.8.8.d.4.1.0.0.2.ip6.arpa. IN  NS        ipv6-rdns.zekjur.net.
+
+=head2 FORWARD DELEGATION (.nutzer.raumzeitlabor.de)
+
+
+    $TTL    6h
+    raumzeitlabor.de    IN  SOA ns1.jpru.de.    hostmaster.jpru.de. (
+                            2012030701
+                            3h
+                            30m
+                            7d
+                            1d )
+        IN  NS  ns1.jpru.de.
+        IN  NS  ns2.jpru.de.
+        IN  A   195.49.138.121
+        IN  MX  10  rzl.uugrn.org.
+        IN  MX  20  up.uugrn.org.
+        IN  MX  50  mail.uugrn.org.
+        IN  MX  100 rzl.uugrn.org.
+
+    nutzer.raumzeitlabor.de. IN NS ipv6-rdns.zekjur.net.
+
+
+=head1 VERSION
+
+Version 1.2
+
+=head1 AUTHOR
+
+Michael Stapelberg, C<< <michael at stapelberg.de> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2012 Michael Stapelberg.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the BSD license.
+
+=cut

-- 
Debian packaging of AllKnowingDNS CPAN distribution



More information about the Pkg-perl-cvs-commits mailing list