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