summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm')
-rw-r--r--chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm967
1 files changed, 0 insertions, 967 deletions
diff --git a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm b/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm
deleted file mode 100644
index d8162e93d39..00000000000
--- a/chromium/third_party/cygwin/lib/perl5/vendor_perl/5.10/i686-cygwin/Net/DNS.pm
+++ /dev/null
@@ -1,967 +0,0 @@
-
-package Net::DNS;
-#
-# $Id: DNS.pm 710 2008-02-08 15:22:21Z olaf $
-#
-use strict;
-
-
-BEGIN {
- eval { require bytes; }
-}
-
-
-
-use vars qw(
- $HAVE_XS
- $VERSION
- $SVNVERSION
- $DNSSEC
- $DN_EXPAND_ESCAPES
- @ISA
- @EXPORT
- @EXPORT_OK
- %typesbyname
- %typesbyval
- %qtypesbyname
- %qtypesbyval
- %metatypesbyname
- %metatypesbyval
- %classesbyname
- %classesbyval
- %opcodesbyname
- %opcodesbyval
- %rcodesbyname
- %rcodesbyval
-);
-
-
-
-BEGIN {
- require DynaLoader;
- require Exporter;
- @ISA = qw(Exporter DynaLoader);
-
-
- $VERSION = '0.63';
- $SVNVERSION = (qw$LastChangedRevision: 710 $)[1];
-
- $HAVE_XS = eval {
- local $SIG{'__DIE__'} = 'DEFAULT';
- __PACKAGE__->bootstrap(); 1
- } ? 1 : 0;
-
-}
-
-
-
-BEGIN {
-
- $DNSSEC = eval {
- local $SIG{'__DIE__'} = 'DEFAULT';
- require Net::DNS::SEC;
- 1
- } ? 1 : 0;
-
-
-}
-
-
-use Net::DNS::Resolver;
-use Net::DNS::Packet;
-use Net::DNS::Update;
-use Net::DNS::Header;
-use Net::DNS::Question;
-use Net::DNS::RR; # use only after $Net::DNS::DNSSEC has been evaluated
-use Carp;
-
-@EXPORT = qw(mx yxrrset nxrrset yxdomain nxdomain rr_add rr_del);
-@EXPORT_OK= qw(name2labels wire2presentation rrsort);
-
-
-#
-# If you implement an RR record make sure you also add it to
-# %Net::DNS::RR::RR hash otherwise it will be treated as unknown type.
-#
-
-# Do not use these tybesby hashes directly. Use the interface
-# functions, see below.
-
-%typesbyname = (
- 'SIGZERO' => 0, # RFC2931 consider this a pseudo type
- 'A' => 1, # RFC 1035, Section 3.4.1
- 'NS' => 2, # RFC 1035, Section 3.3.11
- 'MD' => 3, # RFC 1035, Section 3.3.4 (obsolete)
- 'MF' => 4, # RFC 1035, Section 3.3.5 (obsolete)
- 'CNAME' => 5, # RFC 1035, Section 3.3.1
- 'SOA' => 6, # RFC 1035, Section 3.3.13
- 'MB' => 7, # RFC 1035, Section 3.3.3
- 'MG' => 8, # RFC 1035, Section 3.3.6
- 'MR' => 9, # RFC 1035, Section 3.3.8
- 'NULL' => 10, # RFC 1035, Section 3.3.10
- 'WKS' => 11, # RFC 1035, Section 3.4.2 (deprecated)
- 'PTR' => 12, # RFC 1035, Section 3.3.12
- 'HINFO' => 13, # RFC 1035, Section 3.3.2
- 'MINFO' => 14, # RFC 1035, Section 3.3.7
- 'MX' => 15, # RFC 1035, Section 3.3.9
- 'TXT' => 16, # RFC 1035, Section 3.3.14
- 'RP' => 17, # RFC 1183, Section 2.2
- 'AFSDB' => 18, # RFC 1183, Section 1
- 'X25' => 19, # RFC 1183, Section 3.1
- 'ISDN' => 20, # RFC 1183, Section 3.2
- 'RT' => 21, # RFC 1183, Section 3.3
- 'NSAP' => 22, # RFC 1706, Section 5
- 'NSAP_PTR' => 23, # RFC 1348 (obsolete)
- # The following 2 RRs are impemented in Net::DNS::SEC
- 'SIG' => 24, # RFC 2535, Section 4.1
- 'KEY' => 25, # RFC 2535, Section 3.1
- 'PX' => 26, # RFC 2163,
- 'GPOS' => 27, # RFC 1712 (obsolete)
- 'AAAA' => 28, # RFC 1886, Section 2.1
- 'LOC' => 29, # RFC 1876
- # The following RR is impemented in Net::DNS::SEC
- 'NXT' => 30, # RFC 2535, Section 5.2 obsoleted by RFC3755
- 'EID' => 31, # draft-ietf-nimrod-dns-xx.txt
- 'NIMLOC' => 32, # draft-ietf-nimrod-dns-xx.txt
- 'SRV' => 33, # RFC 2052
- 'ATMA' => 34, # ???
- 'NAPTR' => 35, # RFC 2168
- 'KX' => 36, # RFC 2230
- 'CERT' => 37, # RFC 2538
- 'DNAME' => 39, # RFC 2672
- 'OPT' => 41, # RFC 2671
- 'DS' => 43, # RFC 4034 # in Net::DNS::SEC
- 'SSHFP' => 44, # draft-ietf-secsh-dns (No RFC # yet at time of coding)
- 'IPSECKEY' => 45, # RFC 4025
- 'RRSIG' => 46, # RFC 4034 in Net::DNS::SEC
- 'NSEC' => 47, # RFC 4034 in Net::DNS::SEC
- 'DNSKEY' => 48, # RFC 4034 in Net::DNS::SEC
- 'NSEC3' => 50, # draft-ietf-dnsext-nsec3-10 (assignment made at time of code release)
- 'NSEC3PARAM' => 51, # draft-ietf-dnsext-nsec3-10 (assignment made at time of code release)
-
- 'SPF' => 99, # RFC 4408
- 'UINFO' => 100, # non-standard
- 'UID' => 101, # non-standard
- 'GID' => 102, # non-standard
- 'UNSPEC' => 103, # non-standard
- 'TKEY' => 249, # RFC 2930
- 'TSIG' => 250, # RFC 2931
- 'IXFR' => 251, # RFC 1995
- 'AXFR' => 252, # RFC 1035
- 'MAILB' => 253, # RFC 1035 (MB, MG, MR)
- 'MAILA' => 254, # RFC 1035 (obsolete - see MX)
- 'ANY' => 255, # RFC 1035
- 'DLV' => 32769 # RFC 4431 in Net::DNS::SEC
-);
-%typesbyval = reverse %typesbyname;
-
-
-#
-# typesbyval and typesbyname functions are wrappers around the similarly named
-# hashes. They are used for 'unknown' DNS RR types (RFC3597)
-
-# typesbyname returns they TYPEcode as a function of the TYPE
-# mnemonic. If the TYPE mapping is not specified the generic mnemonic
-# TYPE### is returned.
-
-
-# typesbyval returns they TYPE mnemonic as a function of the TYPE
-# code. If the TYPE mapping is not specified the generic mnemonic
-# TYPE### is returned.
-#
-
-sub typesbyname {
- my $name = uc shift;
-
- return $typesbyname{$name} if defined $typesbyname{$name};
-
- confess "Net::DNS::typesbyname() argument ($name) is not TYPE###" unless
- $name =~ m/^\s*TYPE(\d+)\s*$/o;
-
- my $val = $1;
-
- confess 'Net::DNS::typesbyname() argument larger than ' . 0xffff if $val > 0xffff;
-
- return $val;
-}
-
-
-
-sub typesbyval {
- my $val = shift;
- confess "Net::DNS::typesbyval() argument is not defined" unless defined $val;
- confess "Net::DNS::typesbyval() argument ($val) is not numeric" unless
- $val =~ s/^\s*0*(\d+)\s*$/$1/o;
-
-
-
- return $typesbyval{$val} if $typesbyval{$val};
-
- confess 'Net::DNS::typesbyval() argument larger than '. 0xffff if
- $val > 0xffff;
-
- return "TYPE$val";
-}
-
-
-
-#
-# Do not use these classesby hashes directly. See below.
-#
-
-%classesbyname = (
- 'IN' => 1, # RFC 1035
- 'CH' => 3, # RFC 1035
- 'HS' => 4, # RFC 1035
- 'NONE' => 254, # RFC 2136
- 'ANY' => 255, # RFC 1035
-);
-%classesbyval = reverse %classesbyname;
-
-
-
-# classesbyval and classesbyname functions are wrappers around the
-# similarly named hashes. They are used for 'unknown' DNS RR classess
-# (RFC3597)
-
-# See typesbyval and typesbyname, these beasts have the same functionality
-
-sub classesbyname {
- my $name = uc shift;
- return $classesbyname{$name} if $classesbyname{$name};
-
- confess "Net::DNS::classesbyval() argument is not CLASS### ($name)" unless
- $name =~ m/^\s*CLASS(\d+)\s*$/o;
-
- my $val = $1;
-
- confess 'Net::DNS::classesbyval() argument larger than '. 0xffff if $val > 0xffff;
-
- return $val;
-}
-
-
-
-sub classesbyval {
- my $val = shift;
-
- confess "Net::DNS::classesbyname() argument is not numeric ($val)" unless
- $val =~ s/^\s*0*([0-9]+)\s*$/$1/o;
-
- return $classesbyval{$val} if $classesbyval{$val};
-
- confess 'Net::DNS::classesbyname() argument larger than ' . 0xffff if $val > 0xffff;
-
- return "CLASS$val";
-}
-
-
-
-# The qtypesbyval and metatypesbyval specify special typecodes
-# See rfc2929 and the relevant IANA registry
-# http://www.iana.org/assignments/dns-parameters
-
-
-%qtypesbyname = (
- 'IXFR' => 251, # incremental transfer [RFC1995]
- 'AXFR' => 252, # transfer of an entire zone [RFC1035]
- 'MAILB' => 253, # mailbox-related RRs (MB, MG or MR) [RFC1035]
- 'MAILA' => 254, # mail agent RRs (Obsolete - see MX) [RFC1035]
- 'ANY' => 255, # all records [RFC1035]
-);
-%qtypesbyval = reverse %qtypesbyname;
-
-
-%metatypesbyname = (
- 'TKEY' => 249, # Transaction Key [RFC2930]
- 'TSIG' => 250, # Transaction Signature [RFC2845]
- 'OPT' => 41, # RFC 2671
-);
-%metatypesbyval = reverse %metatypesbyname;
-
-
-%opcodesbyname = (
- 'QUERY' => 0, # RFC 1035
- 'IQUERY' => 1, # RFC 1035
- 'STATUS' => 2, # RFC 1035
- 'NS_NOTIFY_OP' => 4, # RFC 1996
- 'UPDATE' => 5, # RFC 2136
-);
-%opcodesbyval = reverse %opcodesbyname;
-
-
-%rcodesbyname = (
- 'NOERROR' => 0, # RFC 1035
- 'FORMERR' => 1, # RFC 1035
- 'SERVFAIL' => 2, # RFC 1035
- 'NXDOMAIN' => 3, # RFC 1035
- 'NOTIMP' => 4, # RFC 1035
- 'REFUSED' => 5, # RFC 1035
- 'YXDOMAIN' => 6, # RFC 2136
- 'YXRRSET' => 7, # RFC 2136
- 'NXRRSET' => 8, # RFC 2136
- 'NOTAUTH' => 9, # RFC 2136
- 'NOTZONE' => 10, # RFC 2136
-);
-%rcodesbyval = reverse %rcodesbyname;
-
-
-sub version { $VERSION; }
-sub PACKETSZ () { 512; }
-sub HFIXEDSZ () { 12; }
-sub QFIXEDSZ () { 4; }
-sub RRFIXEDSZ () { 10; }
-sub INT32SZ () { 4; }
-sub INT16SZ () { 2; }
-
-
-
-# mx()
-#
-# Usage:
-# my @mxes = mx('example.com', 'IN');
-#
-sub mx {
- my $res = ref $_[0] ? shift : Net::DNS::Resolver->new;
-
- my ($name, $class) = @_;
- $class ||= 'IN';
-
- my $ans = $res->query($name, 'MX', $class) || return;
-
- # This construct is best read backwords.
- #
- # First we take the answer secion of the packet.
- # Then we take just the MX records from that list
- # Then we sort the list by preference
- # Then we return it.
- # We do this into an array to force list context.
- my @ret = sort { $a->preference <=> $b->preference }
- grep { $_->type eq 'MX'} $ans->answer;
-
-
- return @ret;
-}
-
-sub yxrrset {
- return Net::DNS::RR->new_from_string(shift, 'yxrrset');
-}
-
-sub nxrrset {
- return Net::DNS::RR->new_from_string(shift, 'nxrrset');
-}
-
-sub yxdomain {
- return Net::DNS::RR->new_from_string(shift, 'yxdomain');
-}
-
-sub nxdomain {
- return Net::DNS::RR->new_from_string(shift, 'nxdomain');
-}
-
-sub rr_add {
- return Net::DNS::RR->new_from_string(shift, 'rr_add');
-}
-
-sub rr_del {
- return Net::DNS::RR->new_from_string(shift, 'rr_del');
-}
-
-
-
-# Utility function
-#
-# name2labels to translate names from presentation format into an
-# array of "wire-format" labels.
-
-
-# in: $dname a string with a domain name in presentation format (1035
-# sect 5.1)
-# out: an array of labels in wire format.
-
-
-sub name2labels {
- my $dname=shift;
- my @names;
- my $j=0;
- while ($dname){
- ($names[$j],$dname)=presentation2wire($dname);
- $j++;
- }
-
- return @names;
-}
-
-
-
-
-sub wire2presentation {
- my $wire=shift;
- my $presentation="";
- my $length=length($wire);
- # There must be a nice regexp to do this.. but since I failed to
- # find one I scan the name string until I find a '\', at that time
- # I start looking forward and do the magic.
-
- my $i=0;
-
- while ($i < $length ){
- my $char=unpack("x".$i."C1",$wire);
- if ( $char < 33 || $char > 126 ){
- $presentation.= sprintf ("\\%03u" ,$char);
- }elsif ( $char == ord( "\"" )) {
- $presentation.= "\\\"";
- }elsif ( $char == ord( "\$" )) {
- $presentation.= "\\\$";
- }elsif ( $char == ord( "(" )) {
- $presentation.= "\\(";
- }elsif ( $char == ord( ")" )) {
- $presentation.= "\\)";
- }elsif ( $char == ord( ";" )) {
- $presentation.= "\\;";
- }elsif ( $char == ord( "@" )) {
- $presentation.= "\\@";
- }elsif ( $char == ord( "\\" )) {
- $presentation.= "\\\\" ;
- }elsif ( $char==ord (".") ){
- $presentation.= "\\." ;
- }else{
- $presentation.=chr($char) ;
- }
- $i++;
- }
-
- return $presentation;
-
-}
-
-
-
-# ($wire,$leftover)=presentation2wire($leftover);
-
-# Will parse the input presentation format and return everything before
-# the first non-escaped "." in the first element of the return array and
-# all that has not been parsed yet in the 2nd argument.
-
-
-sub presentation2wire {
- my $presentation=shift;
- my $wire="";
- my $length=length($presentation);
-
- my $i=0;
-
- while ($i < $length ){
- my $char=unpack("x".$i."C1",$presentation);
- if ( $char == ord ('.')){
- return ($wire,substr($presentation,$i+1));
- }
- if ( $char == ord ('\\')){
- #backslash found
- pos($presentation)=$i+1;
- if ($presentation=~/\G(\d\d\d)/){
- $wire.=pack("C",$1);
- $i+=3;
- }elsif($presentation=~/\Gx([0..9a..fA..F][0..9a..fA..F])/){
- $wire.=pack("H*",$1);
- $i+=3;
- }elsif($presentation=~/\G\./){
- $wire.="\.";
- $i+=1;
- }elsif($presentation=~/\G@/){
- $wire.="@";
- $i+=1;
- }elsif($presentation=~/\G\(/){
- $wire.="(";
- $i+=1;
- }elsif($presentation=~/\G\)/){
- $wire.=")";
- $i+=1;
- }elsif($presentation=~/\G\\/){
- $wire.="\\";
- $i+=1;
- }
- }else{
- $wire .= pack("C",$char);
- }
- $i++;
- }
-
- return $wire;
-}
-
-
-
-
-
-sub rrsort {
- my ($rrtype,$attribute,@rr_array)=@_;
- unless (exists($Net::DNS::typesbyname{uc($rrtype)})){
- # unvalid error type
- return();
- }
- unless (defined($attribute)){
- # no second argument... hence no array.
- return();
- }
-
- # attribute is empty or not specified.
-
- if( ref($attribute)=~/^Net::DNS::RR::.*/){
- # push the attribute back on the array.
- push @rr_array,$attribute;
- undef($attribute);
-
- }
-
- my @extracted_rr;
- foreach my $rr (@rr_array){
- push( @extracted_rr, $rr )if (uc($rr->type) eq uc($rrtype));
- }
- return () unless @extracted_rr;
- my $func=("Net::DNS::RR::".$rrtype)->get_rrsort_func($attribute);
- my @sorted=sort $func @extracted_rr;
- return @sorted;
-
-}
-
-
-
-
-
-
-
-
-
-1;
-__END__
-
-=head1 NAME
-
-Net::DNS - Perl interface to the DNS resolver
-
-=head1 SYNOPSIS
-
-C<use Net::DNS;>
-
-=head1 DESCRIPTION
-
-Net::DNS is a collection of Perl modules that act as a Domain
-Name System (DNS) resolver. It allows the programmer to perform
-DNS queries that are beyond the capabilities of C<gethostbyname>
-and C<gethostbyaddr>.
-
-The programmer should be somewhat familiar with the format of
-a DNS packet and its various sections. See RFC 1035 or
-I<DNS and BIND> (Albitz & Liu) for details.
-
-=head2 Resolver Objects
-
-A resolver object is an instance of the
-L<Net::DNS::Resolver|Net::DNS::Resolver> class. A program can have
-multiple resolver objects, each maintaining its own state information
-such as the nameservers to be queried, whether recursion is desired,
-etc.
-
-=head2 Packet Objects
-
-L<Net::DNS::Resolver|Net::DNS::Resolver> queries return
-L<Net::DNS::Packet|Net::DNS::Packet> objects. Packet objects have five
-sections:
-
-=over 3
-
-=item *
-
-The header section, a L<Net::DNS::Header|Net::DNS::Header> object.
-
-=item *
-
-The question section, a list of L<Net::DNS::Question|Net::DNS::Question>
-objects.
-
-=item *
-
-The answer section, a list of L<Net::DNS::RR|Net::DNS::RR> objects.
-
-=item *
-
-The authority section, a list of L<Net::DNS::RR|Net::DNS::RR> objects.
-
-=item *
-
-The additional section, a list of L<Net::DNS::RR|Net::DNS::RR> objects.
-
-=back
-
-=head2 Update Objects
-
-The L<Net::DNS::Update|Net::DNS::Update> package is a subclass of
-L<Net::DNS::Packet|Net::DNS::Packet> for creating packet objects to be
-used in dynamic updates.
-
-=head2 Header Objects
-
-L<Net::DNS::Header|Net::DNS::Header> objects represent the header
-section of a DNS packet.
-
-=head2 Question Objects
-
-L<Net::DNS::Question|Net::DNS::Question> objects represent the question
-section of a DNS packet.
-
-=head2 RR Objects
-
-L<Net::DNS::RR|Net::DNS::RR> is the base class for DNS resource record
-(RR) objects in the answer, authority, and additional sections of a DNS
-packet.
-
-Don't assume that RR objects will be of the type you requested -- always
-check an RR object's type before calling any of its methods.
-
-=head1 METHODS
-
-See the manual pages listed above for other class-specific methods.
-
-=head2 version
-
- print Net::DNS->version, "\n";
-
-Returns the version of Net::DNS.
-
-=head2 mx
-
- # Use a default resolver -- can't get an error string this way.
- use Net::DNS;
- my @mx = mx("example.com");
-
- # Use your own resolver object.
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- my @mx = mx($res, "example.com");
-
-Returns a list of L<Net::DNS::RR::MX|Net::DNS::RR::MX> objects
-representing the MX records for the specified name; the list will be
-sorted by preference. Returns an empty list if the query failed or no MX
-records were found.
-
-This method does not look up A records -- it only performs MX queries.
-
-See L</EXAMPLES> for a more complete example.
-
-=head2 yxrrset
-
-Use this method to add an "RRset exists" prerequisite to a dynamic
-update packet. There are two forms, value-independent and
-value-dependent:
-
- # RRset exists (value-independent)
- $update->push(pre => yxrrset("host.example.com A"));
-
-Meaning: At least one RR with the specified name and type must
-exist.
-
- # RRset exists (value-dependent)
- $packet->push(pre => yxrrset("host.example.com A 10.1.2.3"));
-
-Meaning: At least one RR with the specified name and type must
-exist and must have matching data.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-=head2 nxrrset
-
-Use this method to add an "RRset does not exist" prerequisite to
-a dynamic update packet.
-
- $packet->push(pre => nxrrset("host.example.com A"));
-
-Meaning: No RRs with the specified name and type can exist.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-=head2 yxdomain
-
-Use this method to add a "name is in use" prerequisite to a dynamic
-update packet.
-
- $packet->push(pre => yxdomain("host.example.com"));
-
-Meaning: At least one RR with the specified name must exist.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-=head2 nxdomain
-
-Use this method to add a "name is not in use" prerequisite to a
-dynamic update packet.
-
- $packet->push(pre => nxdomain("host.example.com"));
-
-Meaning: No RR with the specified name can exist.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-=head2 rr_add
-
-Use this method to add RRs to a zone.
-
- $packet->push(update => rr_add("host.example.com A 10.1.2.3"));
-
-Meaning: Add this RR to the zone.
-
-RR objects created by this method should be added to the "update"
-section of a dynamic update packet. The TTL defaults to 86400
-seconds (24 hours) if not specified.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-=head2 rr_del
-
-Use this method to delete RRs from a zone. There are three forms:
-delete an RRset, delete all RRsets, and delete an RR.
-
- # Delete an RRset.
- $packet->push(update => rr_del("host.example.com A"));
-
-Meaning: Delete all RRs having the specified name and type.
-
- # Delete all RRsets.
- $packet->push(update => rr_del("host.example.com"));
-
-Meaning: Delete all RRs having the specified name.
-
- # Delete an RR.
- $packet->push(update => rr_del("host.example.com A 10.1.2.3"));
-
-Meaning: Delete all RRs having the specified name, type, and data.
-
-RR objects created by this method should be added to the "update"
-section of a dynamic update packet.
-
-Returns a C<Net::DNS::RR> object or C<undef> if the object couldn't
-be created.
-
-
-=head2 Sorting of RR arrays
-
-As of version 0.55 there is functionality to help you sort RR
-arrays. 'rrsort()' is the function that is available to do the
-sorting. In most cases rrsort will give you the answer that you
-want but you can specify your own sorting method by using the
-Net::DNS::RR::FOO->set_rrsort_func() class method. See L<Net::DNS::RR>
-for details.
-
-=head3 rrsort()
-
- use Net::DNS qw(rrsort);
-
- my @prioritysorted=rrsort("SRV","priority",@rr_array);
-
-
-rrsort() selects all RRs from the input array that are of the type
-that are defined in the first argument. Those RRs are sorted based on
-the attribute that is specified as second argument.
-
-There are a number of RRs for which the sorting function is
-specifically defined for certain attributes. If such sorting function
-is defined in the code (it can be set or overwritten using the
-set_rrsort_func() class method) that function is used.
-
-For instance:
- my @prioritysorted=rrsort("SRV","priority",@rr_array);
-returns the SRV records sorted from lowest to heighest priority and
-for equal priorities from heighes to lowes weight.
-
-If the function does not exist then a numerical sort on the attribute
-value is performed.
- my @portsorted=rrsort("SRV","port",@rr_array);
-
-If the attribute does not exist for a certain RR than the RRs are
-sorted on string comparrisson of the rdata.
-
-If the attribute is not defined than either the default_sort function
-will be defined or "Canonical sorting" (as defined by DNSSEC) will be
-used.
-
-rrsort() returns a sorted array with only elements of the specified
-RR type or undef.
-
-rrsort() returns undef when arguments are incorrect.
-
-
-
-=head1 EXAMPLES
-
-The following examples show how to use the C<Net::DNS> modules.
-See the other manual pages and the demo scripts included with the
-source code for additional examples.
-
-See the C<Net::DNS::Update> manual page for an example of performing
-dynamic updates.
-
-=head2 Look up a host's addresses.
-
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- my $query = $res->search("host.example.com");
-
- if ($query) {
- foreach my $rr ($query->answer) {
- next unless $rr->type eq "A";
- print $rr->address, "\n";
- }
- } else {
- warn "query failed: ", $res->errorstring, "\n";
- }
-
-=head2 Find the nameservers for a domain.
-
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- my $query = $res->query("example.com", "NS");
-
- if ($query) {
- foreach $rr (grep { $_->type eq 'NS' } $query->answer) {
- print $rr->nsdname, "\n";
- }
- }
- else {
- warn "query failed: ", $res->errorstring, "\n";
- }
-
-=head2 Find the MX records for a domain.
-
- use Net::DNS;
- my $name = "example.com";
- my $res = Net::DNS::Resolver->new;
- my @mx = mx($res, $name);
-
- if (@mx) {
- foreach $rr (@mx) {
- print $rr->preference, " ", $rr->exchange, "\n";
- }
- } else {
- warn "Can't find MX records for $name: ", $res->errorstring, "\n";
- }
-
-
-=head2 Print a domain's SOA record in zone file format.
-
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- my $query = $res->query("example.com", "SOA");
-
- if ($query) {
- ($query->answer)[0]->print;
- } else {
- print "query failed: ", $res->errorstring, "\n";
- }
-
-=head2 Perform a zone transfer and print all the records.
-
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- $res->nameservers("ns.example.com");
-
- my @zone = $res->axfr("example.com");
-
- foreach $rr (@zone) {
- $rr->print;
- }
-
-=head2 Perform a background query and do some other work while waiting
-for the answer.
-
- use Net::DNS;
- my $res = Net::DNS::Resolver->new;
- my $socket = $res->bgsend("host.example.com");
-
- until ($res->bgisready($socket)) {
- # do some work here while waiting for the answer
- # ...and some more here
- }
-
- my $packet = $res->bgread($socket);
- $packet->print;
-
-
-=head2 Send a background query and use select to determine when the answer
-has arrived.
-
- use Net::DNS;
- use IO::Select;
-
- my $timeout = 5;
- my $res = Net::DNS::Resolver->new;
- my $bgsock = $res->bgsend("host.example.com");
- my $sel = IO::Select->new($bgsock);
-
- # Add more sockets to $sel if desired.
- my @ready = $sel->can_read($timeout);
- if (@ready) {
- foreach my $sock (@ready) {
- if ($sock == $bgsock) {
- my $packet = $res->bgread($bgsock);
- $packet->print;
- $bgsock = undef;
- }
- # Check for the other sockets.
- $sel->remove($sock);
- $sock = undef;
- }
- } else {
- warn "timed out after $timeout seconds\n";
- }
-
-=head1 BUGS
-
-C<Net::DNS> is slow.
-
-For other items to be fixed, please see the TODO file included with
-the source distribution.
-
-=head1 COPYRIGHT
-
-Copyright (c) 1997-2002 Michael Fuhr.
-Portions Copyright (c) 2002-2004 Chris Reinhardt.
-Portions Copyright (c) 2005 Olaf Kolkman (RIPE NCC)
-Portions Copyright (c) 2006 Olaf Kolkman (NLnet Labs)
-
-All rights reserved. This program is free software; you may redistribute
-it and/or modify it under the same terms as Perl itself.
-
-=head1 AUTHOR INFORMATION
-
-Net::DNS is currently maintained at NLnet Labs (www.nlnetlabs.nl) by:
- Olaf Kolkman
- olaf@net-dns.org
-
-Between 2002 and 2004 Net::DNS was maintained by:
- Chris Reinhardt
-
-
-Net::DNS was created by:
- Michael Fuhr
- mike@fuhr.org
-
-
-
-For more information see:
- http://www.net-dns.org/
-
-Stay tuned and syncicate:
- http://www.net-dns.org/blog/
-
-=head1 SEE ALSO
-
-L<perl(1)>, L<Net::DNS::Resolver>, L<Net::DNS::Packet>, L<Net::DNS::Update>,
-L<Net::DNS::Header>, L<Net::DNS::Question>, L<Net::DNS::RR>, RFC 1035,
-I<DNS and BIND> by Paul Albitz & Cricket Liu
-
-=cut