--- lib/PXElator/dnsd.pm 2009/08/03 08:57:59 122 +++ lib/PXElator/dnsd.pm 2009/08/03 15:06:23 125 @@ -4,8 +4,18 @@ use strict; use Net::DNS::Nameserver; +use Net::DNS::Resolver; use Data::Dump qw/dump/; +use server; +our $debug = server::debug; + +my $res = Net::DNS::Resolver->new( +# nameserver => [ '10.60.0.1' ], + recurse => 1, + debug => $debug, +); + sub reply_handler { my ($qname, $qclass, $qtype, $peerhost,$query,$conn) = @_; my ($rcode, @ans, @auth, @add); @@ -13,16 +23,22 @@ print "Received query from $peerhost to ". $conn->{"sockhost"}. "\n"; $query->print; - - if ($qtype eq "A" && $qname eq "foo.example.com" ) { - my ($ttl, $rdata) = (3600, "10.1.2.3"); + if ( $qtype eq "A" && $qname eq "pxelator" ) { + my ($ttl, $rdata) = (3600, "172.16.10.1"); push @ans, Net::DNS::RR->new("$qname $ttl $qclass $qtype $rdata"); $rcode = "NOERROR"; - }elsif( $qname eq "foo.example.com" ) { + } elsif ( $qname eq "foo.example.com" ) { + $rcode = "NOERROR"; + + } elsif ( my $packet = $res->query( $qname, $qtype ) ) { + + $packet->print; + push @ans, $_ foreach $packet->answer; $rcode = "NOERROR"; - }else{ - $rcode = "NXDOMAIN"; + } else { + # not found + $rcode = "NXDOMAIN"; } # mark the answer as authoritive (by setting the 'aa' flag @@ -33,11 +49,9 @@ my $ns = Net::DNS::Nameserver->new( LocalPort => 53, ReplyHandler => \&reply_handler, - Verbose => 1, + Verbose => $debug, ) || die "couldn't create nameserver object\n"; - warn dump( $ns ); - $ns->main_loop; }