home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC-Online 1996 May
/
PCOnline_05_1996.bin
/
linux
/
source
/
n
/
bind
/
bind-4.001
/
bind-4~
/
bind-4.9.3-BETA9
/
contrib
/
dnsparse
/
dnsmkptr
< prev
next >
Wrap
Text File
|
1990-09-11
|
2KB
|
46 lines
#!/usr/bin/perl
#
# $Id: dnsmkptr,v 2.0 90/09/11 11:07:34 hakanson Rel $
#
# Convert DNS master (RFC-1035) file A records to PTR records.
# Marion Hakanson (hakanson@cse.ogi.edu)
# Oregon Graduate Institute of Science and Technology
#
# Copyright (c) 1990, Marion Hakanson.
#
# You may distribute under the terms of the GNU General Public License
# as specified in the README file that comes with the dnsparse kit.
#
# Read the master files, and produce PTR records based on the A records
# contained in them. Note that if multiple names are found mapping to
# a single address, we print out only the first mapping encountered.
#
# This is quite rudimentary, sorts the output by number, and does not
# attempt to split the file by net or subnet number. Hence it lumps
# multiple domain zones into a single PTR zone file, and thus may be
# less useful than it could be.
do "dnsparse.pl"; die "$@, aborted" if $@;
do dns_init(@ARGV);
open(OFILE, '| sort -n -t. +3 -4 +2 -3 +1 -2 +0 -1')
|| die "Cannot start 'sort', aborted";
# bug -- can we guarantee this goes out first after being sorted?
print OFILE "\$ORIGIN IN-ADDR.ARPA.\n"; # in case we get fed to a nameserver
rr: while ( (@rr = do dns_getrr()) && @rr ) {
($domain, $ttl, $class, $type, @data) = @rr;
next rr if ( $class ne 'IN' || $type ne 'A' );
# only print out the first one
next rr if ( defined($addr{$data[0]}) );
$addr{$data[0]} = 1;
$revaddr = join('.',reverse(split(/\./, $data[0])));
print OFILE "$revaddr\tIN\tPTR\t$domain.\n";
}