Parent

Class Index [+]

Quicksearch

Dnsruby::Message::Section

Public Class Methods

new(msg = nil) click to toggle source
    # File lib/Dnsruby/message.rb, line 91
91:       def initialize(msg = nil)
92:         @msg = msg
93:         super(0)
94:       end

Public Instance Methods

==(other) click to toggle source
     # File lib/Dnsruby/message.rb, line 152
152:       def ==(other)
153:         return false unless (other.instance_of?Message::Section)
154:         return false if (other.rrsets(nil, true).length != self.rrsets(nil, true).length)
155:         otherrrsets = other.rrsets(nil, true)
156:         self.rrsets(nil, true).each {|rrset|
157:           return false unless otherrrsets.include?rrset
158:         }
159:         return true
160:       end
remove_rrset(name, type) click to toggle source
     # File lib/Dnsruby/message.rb, line 162
162:       def remove_rrset(name, type)
163:         # Remove all RRs with the name and type from the section.
164:         # Need to worry about header counts here - can we get Message to
165:         # update the counts itself, rather than the section worrying about it?
166:         rrs_to_delete = []
167:         each do |rr|
168:           next if rr.rr_type == Types::OPT
169:           if ((rr.name.to_s.downcase == name.to_s.downcase) &&
170:                 ((rr.type == type) ||
171:                   ((rr.type == Types::RRSIG) && (rr.type_covered == type)) ))
172:             rrs_to_delete.push(rr)
173:           end
174:         end
175:         rrs_to_delete.each {|rr|
176:           delete(rr)
177:         }
178:         @msg.update_counts if @msg
179:       end
rrset(name, type=Types.A, klass=Classes::IN) click to toggle source

Return the rrset of the specified type in this section

     # File lib/Dnsruby/message.rb, line 96
 96:       def rrset(name, type=Types.A, klass=Classes::IN)
 97:         rrs = select{|rr| 
 98:           type_ok = (rr.type==type)
 99:           if (rr.type == Types::RRSIG)
100:             type_ok = (rr.type_covered == type)
101:           end
102:           if (!(/\.\z/ =~ name.to_s))
103:             name = name.to_s + "."
104:           end
105:           type_ok && (rr.klass == klass) && (rr.name.to_s(true).downcase == name.to_s().downcase)
106:         }
107:         rrset = RRSet.new()
108:         rrs.each do |rr|
109:           rrset.add(rr)
110:         end
111:         return rrset
112:       end
rrsets(type = nil, include_opt = false) click to toggle source

Return an array of all the rrsets in the section

     # File lib/Dnsruby/message.rb, line 115
115:       def rrsets(type = nil, include_opt = false)
116:         if (type && !(Types === type))
117:           type = Types.new(type)
118:         end
119:         ret = []
120:         each do |rr|
121:           next if (!include_opt && (rr.type == Types::OPT))
122:           #          if (type)
123:           #            next if ((rr.type == Types.RRSIG) && (type != Types.RRSIG) && (rr.type_covered != type))
124:           #            next if (rr.type != type)
125:           #          end
126:           if (type)
127:             # if this is an rrsig type, then :
128:             #    only include it if the type_covered is the type requested,
129:             #    OR if the type requested is an RRSIG
130:             if (rr.type == Types::RRSIG)
131:               if ((rr.type_covered == type) || (type == Types::RRSIG))
132:               else
133:                 next
134:               end
135:               #              next if ((rr.type_covered != type) || (type != Types.RRSIG))
136:             elsif (rr.type != type)
137:               next
138:             end
139:           end
140: 
141:           found_rrset = false
142:           ret.each do |rrset|
143:             found_rrset = rrset.add(rr)
144:             break if found_rrset
145:           end
146:           if (!found_rrset)
147:             ret.push(RRSet.new(rr))
148:           end
149:         end
150:         return ret        
151:       end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.