Net::DNS man page on BSDOS

Man page or keyword search:  
man Server   6284 pages
apropos Keyword Search (all sections)
Output format
BSDOS logo
[printable version]



lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

NAME
       Net::DNS - Perl interface to the DNS resolver

SYNOPSIS
       use Net::DNS;

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 gethostbyname and gethostbyaddr.

       The programmer should be somewhat familiar with the format
       of a DNS packet and its various sections.  See RFC 1035 or
       DNS and BIND (Albitz & Liu) for details.

       Resolver Objects

       A resolver object is an instance of the 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.

       Packet Objects

       Net::DNS::Resolver queries return Net::DNS::Packet
       objects.	 Packet objects have five sections:

       o  The header section, a Net::DNS::Header object.

       o  The question section, a list of Net::DNS::Question
	  objects.

       o  The answer section, a list of Net::DNS::RR objects.

       o  The authority section, a list of Net::DNS::RR objects.

       o  The additional section, a list of Net::DNS::RR objects.

       The Net::DNS::Update package is a front-end to
       Net::DNS::Packet for creating packet objects to be used in
       dynamic updates.

       Header Objects

       Net::DNS::Header objects represent the header section of a
       DNS packet.

       Question Objects

       Net::DNS::Question objects represent the question section
       of a DNS packet.

24/Aug/1997	       perl 5.005, patch 03			1

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

       RR Objects

       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.

METHODS
       See the manual pages listed above for other class-specific
       methods.

       version

	   print Net::DNS->version, "\n";

       Returns the version of Net::DNS.

       mx

	   # Use a default resolver -- can't get an error string this way.
	   use Net::DNS;
	   @mx = mx("foo.com");

	   # Use your own resolver object.
	   use Net::DNS;
	   $res = new Net::DNS::Resolver;
	   @mx = mx($res, "foo.com");

       Returns a list of 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 the EXAMPLES entry elsewhere in this documentfor a
       more complete example.

       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)
	   $packet->push("pre", yxrrset("foo.bar.com A"));

       Meaning:	 At least one RR with the specified name and type

24/Aug/1997	       perl 5.005, patch 03			2

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

       must exist.

	   # RRset exists (value-dependent)
	   $packet->push("pre", yxrrset("foo.bar.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 Net::DNS::RR object or undef if the object
       couldn't be created.

       nxrrset

       Use this method to add an "RRset does not exist"
       prerequisite to a dynamic update packet.

	   $packet->push("pre", nxrrset("foo.bar.com A"));

       Meaning:	 No RRs with the specified name and type can
       exist.

       Returns a Net::DNS::RR object or undef if the object
       couldn't be created.

       yxdomain

       Use this method to add a "name is in use" prerequisite to
       a dynamic update packet.

	   $packet->push("pre", yxdomain("foo.bar.com"));

       Meaning:	 At least one RR with the specified name must
       exist.

       Returns a Net::DNS::RR object or undef if the object
       couldn't be created.

       nxdomain

       Use this method to add a "name is not in use" prerequisite
       to a dynamic update packet.

	   $packet->push("pre", nxdomain("foo.bar.com"));

       Meaning:	 No RR with the specified name can exist.

       Returns a Net::DNS::RR object or undef if the object
       couldn't be created.

       rr_add

       Use this method to add RRs to a zone.

	   $packet->push("update", rr_add("foo.bar.com A 10.1.2.3"));

24/Aug/1997	       perl 5.005, patch 03			3

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(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 Net::DNS::RR object or undef if the object
       couldn't be created.

       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("foo.bar.com A"));

       Meaning:	 Delete all RRs having the specified name and
       type.

	   # Delete all RRsets.
	   $packet->push("update", rr_del("foo.bar.com"));

       Meaning:	 Delete all RRs having the specified name.

	   # Delete an RR.
	   $packet->push("update", rr_del("foo.bar.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 Net::DNS::RR object or undef if the object
       couldn't be created.

EXAMPLES
       The following examples show how to use the Net::DNS
       modules.	 See the other manual pages and the demo scripts
       included with the source code for additional examples.

       See the Net::DNS::Update manual page for an example of
       performing dynamic updates.

       Look up a host's addresses.

24/Aug/1997	       perl 5.005, patch 03			4

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $query = $res->search("foo.bar.com");
	 if ($query) {
	     foreach $rr ($query->answer) {
		 next unless $rr->type eq "A";
		 print $rr->address, "\n";
	     }
	 }
	 else {
	     print "query failed: ", $res->errorstring, "\n";
	 }

       Find the nameservers for a domain.

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $query = $res->query("foo.com", "NS");
	 if ($query) {
	     foreach $rr ($query->answer) {
		 next unless $rr->type eq "NS";
		 print $rr->nsdname, "\n";
	     }
	 }
	 else {
	     print "query failed: ", $res->errorstring, "\n";
	 }

       Find the MX records for a domain.

	 use Net::DNS;
	 $name = "foo.com";
	 $res = new Net::DNS::Resolver;
	 @mx = mx($res, $name);
	 if (@mx) {
	     foreach $rr (@mx) {
		 print $rr->preference, " ", $rr->exchange, "\n";
	     }
	 }
	 else {
	     print "can't find MX records for $name: ", $res->errorstring, "\n";
	 }

       Print a domain's SOA record in zone file format.

24/Aug/1997	       perl 5.005, patch 03			5

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $query = $res->query("foo.com", "SOA");
	 if ($query) {
	     ($query->answer)[0]->print;
	 }
	 else {
	     print "query failed: ", $res->errorstring, "\n";
	 }

       Perform a zone transfer and print all the records.

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $res->nameservers("ns.foo.com");
	 @zone = $res->axfr("foo.com");
	 foreach $rr (@zone) {
	     $rr->print;
	 }

       Perform a background query and do some other work while
       waiting for the answer.

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $socket = $res->bgsend("foo.bar.com");
	 until ($res->bgisready($socket)) {
	     # do some work here while waiting for the answer
	     # ...and some more here
	 }
	 $packet = $res->bgread($socket);
	 $packet->print;

       Send a background query and use select to determine when
       the answer has arrived.

24/Aug/1997	       perl 5.005, patch 03			6

lib::Net::DNS(3User Contributed Perl Documentatiolib::Net::DNS(3)

	 use Net::DNS;
	 $res = new Net::DNS::Resolver;
	 $socket = $res->bgsend("foo.bar.com");
	 $rin = "";
	 vec($rin, $socket->fileno, 1) = 1;
	 # Add more descriptors to $rin if desired.
	 $timeout = 5;
	 $nfound = select($rout=$rin, undef, undef, $timeout);
	 if ($nfound < 1) {
	     print "timed out after $timeout seconds\n";
	 }
	 elsif (vec($rout, $socket->fileno, 1) == 1) {
	     $packet = $res->bgread($socket);
	     $packet->print;
	 }
	 else {
	     # Check for the other descriptors.
	 }

BUGS
       Net::DNS is slow.  Real slow.

       For other items to be fixed, please see the TODO file
       included with the source distribution.

COPYRIGHT
       Copyright (c) 1997 Michael Fuhr.	 All rights reserved.
       This program is free software; you can redistribute it
       and/or modify it under the same terms as Perl itself.

AUTHOR INFORMATION
       Michael Fuhr <mfuhr@dimensional.com>
       http://www.dimensional.com/~mfuhr/perldns/

SEE ALSO   the perl(1) manpage, the Net::DNS::Resolver manpage,
       the Net::DNS::Packet manpage, the Net::DNS::Update
       manpage, the Net::DNS::Header manpage, the
       Net::DNS::Question manpage, the Net::DNS::RR manpage, RFC
       1035, DNS and BIND by Paul Albitz & Cricket Liu

24/Aug/1997	       perl 5.005, patch 03			7

[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server BSDOS

List of man pages available for BSDOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net