Subject: | Bind9 compatibility |
Hi,
Ivan Kohler (Debian Perl group) has written the joined patch to extend
your lib to bind 9.
Cheers,
Xavier
Subject: | bind9-compatibility.patch |
Description: Bind 9 compatibility
Author: Ivan Kohler <ivan@debian.org>
Forwarded: no
Reviewed-By: Xavier Guimard <x.guimard@free.fr>
Last-Update: 2012-12-22
--- a/README
+++ b/README
@@ -3,12 +3,12 @@
DESCRIPTION
This module allows a script to understand the contents of a BIND
- version 8 named.conf file. Why would you want to parse your
- /etc/named.conf file? Well, let's say you're a sysadmin and you've
- gotten tired of mismatches between your DNS forward and reverse
- zones, and you want a tool that'll check your zone files for
- inconsistencies and typos. How's that tool going to get the
- complete list of zone files? Tah da, enter this module, stage
+ version 8 (and sometimes version 9) named.conf file. Why would you
+ want to parse your /etc/named.conf file? Well, let's say you're a
+ sysadmin and you've gotten tired of mismatches between your DNS
+ forward and reverse zones, and you want a tool that'll check your
+ zone files for inconsistencies and typos. How's that tool going to
+ get the complete list of zone files? Tah da, enter this module, stage
right! The verify_zones script included with this module does
exactly the above, and may even work at your site.
@@ -19,7 +19,9 @@
The name of this module is perhaps not the best. Suggestions
are welcome.
- This revision matches BIND version 8.2.2.
+ This revision matches BIND version 8.2.2. Some capability to not
+ throw fatal exceptions when parsing version 9 configuration files
+ has been added, but it is far from complete.
THANKS
The design of this module was inspired by Gisle Aas's HTML::Parser
@@ -56,5 +58,7 @@
ftp://ftp.gac.edu/pub/guenther/BIND-Conf_Parser-0.95.tar.gz
AUTHOR
- BIND-Conf_Parser was created by Philip Guenther <guenther@gac.edu>
+ BIND-Conf_Parser was created by Philip Guenther <guenther@gac.edu>.
+ Some very preliminary changes were made to parse a few version 9
+ configuration files by Ivan Kohler <ivan-bind-confparser@420.am>.
--- a/lib/BIND/Conf_Parser.pm
+++ b/lib/BIND/Conf_Parser.pm
@@ -427,6 +427,20 @@
$self->expect(';', "to finish logging declaration");
}
+sub parse_listen_on($$) {
+ my($self, $mess) = @_;
+ $self->expect([ [ 'port' ], '{' ], $mess);
+ my($port);
+ if ($self->{_token} eq WORD) {
+ $self->expect(NUMBER, "following `port'");
+ $port = 0 + $self->{_data};
+ $self->expect('{', $mess);
+ } else {
+ $port = 53;
+ }
+ return [$port, $self->parse_addrmatchlist($mess, 1)];
+}
+
my(%opt_table) = (
"version" => STRING,
"directory" => STRING,
@@ -470,19 +484,8 @@
"allow-transfer" => \&parse_addrmatchlist,
"allow-recursion" => \&parse_addrmatchlist,
"blackhole" => \&parse_addrmatchlist,
- "listen-on" => sub {
- my($self, $mess) = @_;
- $self->expect([ [ 'port' ], '{' ], $mess);
- my($port);
- if ($self->{_token} eq WORD) {
- $self->expect(NUMBER, "following `port'");
- $port = 0 + $self->{_data};
- $self->expect('{', $mess);
- } else {
- $port = 53;
- }
- return [$port, $self->parse_addrmatchlist($mess, 1)];
- },
+ "listen-on" => \&parse_listen_on,
+ "listen-on-v6" => \&parse_listen_on,
"query-source" => sub {
my($self, $mess) = @_;
my($port, $address) = (0, 0);
@@ -935,10 +938,10 @@
=head1 DESCRIPTION
C<BIND::Conf_Parser> implements a virtual base class for parsing BIND
-(Berkeley Internet Name Domain) server version 8 configuration files
-("named.conf"). The parsing methods shown in the synopsis perform
-syntactic analysis only. As each meaningful semantic 'chunk' is
-parsed, a callback method is invoked with the parsed information.
+(Berkeley Internet Name Domain) server version 8 (and sometimes version 9)
+configuration files ("named.conf"). The parsing methods shown in the
+synopsis perform syntactic analysis only. As each meaningful semantic
+'chunk' is parsed, a callback method is invoked with the parsed information.
The following methods are the public entry points for the base class:
=over 4
@@ -1065,7 +1068,9 @@
and understands the statements, options, and forms of that version.
Since the BIND developers have only made upward compatible changes to
the syntax, C<BIND::Conf_Parser> will correctly parse valid config files
-for previous versions of BIND.
+for previous versions of BIND. Some support for simple version 9
+configuration files has been added, but there are probably new statements
+that are not yet recognized.
A C<BIND::Conf_Parser> object is a blessed anonymous hash. In an
attempt to prevent modules trampling on each other I propose that any