1package Net::DNS::RR::RT; 2# 3# $Id: RT.pm 632 2007-03-12 13:24:21Z olaf $ 4# 5use strict; 6BEGIN { 7 eval { require bytes; } 8} 9use vars qw(@ISA $VERSION); 10 11@ISA = qw(Net::DNS::RR); 12$VERSION = (qw$LastChangedRevision: 632 $)[1]; 13 14# Highest preference sorted first. 15__PACKAGE__->set_rrsort_func("preference", 16 sub { 17 my ($a,$b)=($Net::DNS::a,$Net::DNS::b); 18 $a->{'preference'} <=> $b->{'preference'} 19} 20); 21 22 23__PACKAGE__->set_rrsort_func("default_sort", 24 __PACKAGE__->get_rrsort_func("preference") 25 26 ); 27 28 29sub new { 30 my ($class, $self, $data, $offset) = @_; 31 32 if ($self->{"rdlength"} > 0) { 33 ($self->{"preference"}) = unpack("\@$offset n", $$data); 34 $offset += Net::DNS::INT16SZ(); 35 36 ($self->{"intermediate"}) = Net::DNS::Packet::dn_expand($data, $offset); 37 } 38 39 return bless $self, $class; 40} 41 42sub new_from_string { 43 my ($class, $self, $string) = @_; 44 45 if ($string && ($string =~ /^(\d+)\s+(\S+)$/)) { 46 $self->{"preference"} = $1; 47 $self->{"intermediate"} = $2; 48 $self->{"intermediate"} =~ s/\.+$//; 49 } 50 51 return bless $self, $class; 52} 53 54sub rdatastr { 55 my $self = shift; 56 57 return $self->{"preference"} 58 ? "$self->{preference} $self->{intermediate}." 59 : ''; 60} 61 62sub rr_rdata { 63 my ($self, $packet, $offset) = @_; 64 my $rdata = ""; 65 66 if (exists $self->{"preference"}) { 67 $rdata .= pack("n", $self->{"preference"}); 68 $rdata .= $packet->dn_comp($self->{"intermediate"}, 69 $offset + length $rdata); 70 } 71 72 return $rdata; 73} 74 75sub _canonicalRdata { 76 my ($self, $packet, $offset) = @_; 77 my $rdata = ""; 78 79 if (exists $self->{"preference"}) { 80 $rdata .= pack("n", $self->{"preference"}); 81 $rdata .= $self->_name2wire(lc($self->{"intermediate"})); 82 } 83 84 return $rdata; 85} 86 87 881; 89__END__ 90 91=head1 NAME 92 93Net::DNS::RR::RT - DNS RT resource record 94 95=head1 SYNOPSIS 96 97C<use Net::DNS::RR>; 98 99=head1 DESCRIPTION 100 101Class for DNS Route Through (RT) resource records. 102 103=head1 METHODS 104 105=head2 preference 106 107 print "preference = ", $rr->preference, "\n"; 108 109Returns the preference for this route. 110 111=head2 intermediate 112 113 print "intermediate = ", $rr->intermediate, "\n"; 114 115Returns the domain name of the intermediate host. 116 117=head1 COPYRIGHT 118 119Copyright (c) 1997-2002 Michael Fuhr. 120 121Portions Copyright (c) 2002-2004 Chris Reinhardt. 122Portions Copyright (c) 2005 Olaf Kolkman NLnet Labs. 123 124All rights reserved. This program is free software; you may redistribute 125it and/or modify it under the same terms as Perl itself. 126 127=head1 SEE ALSO 128 129L<perl(1)>, L<Net::DNS>, L<Net::DNS::Resolver>, L<Net::DNS::Packet>, 130L<Net::DNS::Header>, L<Net::DNS::Question>, L<Net::DNS::RR>, 131RFC 1183 Section 3.3 132 133=cut 134