Class: Net::DNS::RR::RT

Inherits:
Net::DNS::RR show all
Defined in:
lib/Net/DNS/RR/RT.rb

Overview

NAME

Net::DNS::RR::RT - DNS RT resource record

DESCRIPTION

Class for DNS Route Through (RT) resource records.

COPYRIGHT

Copyright © 1997-2002 Michael Fuhr.

Portions Copyright © 2002-2004 Chris Reinhardt. Portions Copyright © 2005 Olaf Kolkman NLnet Labs. Ruby version Copyright © 2006 AlexD, Nominet UK.

All rights reserved. This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Net::DNS, Net::DNS::Resolver, Net::DNS::Packet, Net::DNS::Header, Net::DNS::Question, Net::DNS::RR, RFC 1183 Section 3.3

Constant Summary

Constants inherited from Net::DNS::RR

RRS

Instance Attribute Summary collapse

Attributes inherited from Net::DNS::RR

#name, #rdata, #rdlength, #rrclass, #ttl, #type

Instance Method Summary collapse

Methods inherited from Net::DNS::RR

#_canonicaldata, _get_subclass, #_name2wire, _name2wire, build_regex, create, #create_rrsort_func, #data, #get_rrsort_func, #init, #inspect, new_from_data, new_from_hash, new_from_string, #set_rrsort_func

Instance Attribute Details

#intermediateObject

Returns the domain name of the intermediate host.

print "intermediate = ", rr.intermediate, "\n"


53
54
55
# File 'lib/Net/DNS/RR/RT.rb', line 53

def intermediate
  @intermediate
end

#preferenceObject

Returns the preference for this route.

print "preference = ", rr.preference, "\n"


48
49
50
# File 'lib/Net/DNS/RR/RT.rb', line 48

def preference
  @preference
end

Instance Method Details

#_canonicalRdata(packet, offset) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/Net/DNS/RR/RT.rb', line 102

def _canonicalRdata(packet, offset)
  rdata = "";
  
  if (defined?@preference)
    rdata += [@preference].pack("n");
    rdata += _name2wire(@intermediate);
  end
  
  return rdata;
end

#init_rrsort_funcObject



54
55
56
57
58
59
# File 'lib/Net/DNS/RR/RT.rb', line 54

def init_rrsort_func 
  # Highest preference sorted first.
  set_rrsort_func("preference", Proc.new { |a,b|  a.preference <=> b.preference } )
  
  set_rrsort_func("default_sort", get_rrsort_func("preference") );
end

#new_from_data(data, offset) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/Net/DNS/RR/RT.rb', line 61

def new_from_data(data, offset)
  if (@rdlength > 0)
    @preference  = data.unpack("\@#{offset} n")[0];
    offset += Net::DNS::INT16SZ;
    
    @intermediate = Net::DNS::Packet::dn_expand(data, offset)[0];
  end
end

#new_from_hash(values) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/Net/DNS/RR/RT.rb', line 70

def new_from_hash(values)
  if values.has_key?(:intermediate)
    @intermediate = values[:intermediate]
  end
  if values.has_key?(:preference)
    @preference = values[:preference]
  end
end

#new_from_string(string) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/Net/DNS/RR/RT.rb', line 79

def new_from_string(string)
  if (string && (string =~ /^(\d+)\s+(\S+)$/))
    @preference   = $1;
    @intermediate = $2;
    @intermediate.sub!(/\.+$/, "");
  end
end

#rdatastrObject



87
88
89
# File 'lib/Net/DNS/RR/RT.rb', line 87

def rdatastr
  return @preference ? "#{@preference} #{@intermediate}." : '';
end

#rr_rdata(packet, offset) ⇒ Object



91
92
93
94
95
96
97
98
99
100
# File 'lib/Net/DNS/RR/RT.rb', line 91

def rr_rdata(packet, offset)
  rdata = "";
  
  if (defined?@preference)
    rdata += [@preference].pack("n");
    rdata += packet.dn_comp(@intermediate, offset + rdata.length);
  end
  
  return rdata;
end