def to_s
retval = "";
if (@answerfrom != nil && @answerfrom != "")
retval = retval + ";; Answer received from #{@answerfrom} (#{@answersize} bytes)\n;;\n";
end
retval = retval + ";; Security Level : #{@security_level.string}\n"
retval = retval + ";; HEADER SECTION\n"
opt = get_opt
if (!opt)
retval = retval + @header.to_s
else
retval = retval + @header.to_s_with_rcode(rcode())
end
retval = retval + "\n"
if (opt)
retval = retval + opt.to_s
retval = retval + "\n"
end
section = (@header.opcode == OpCode.UPDATE) ? "ZONE" : "QUESTION";
retval = retval + ";; #{section} SECTION (#{@header.qdcount} record#{@header.qdcount == 1 ? '' : 's'})\n";
each_question { |qr|
retval = retval + ";; #{qr.to_s}\n";
}
if (@answer.size > 0)
retval = retval + "\n";
section = (@header.opcode == OpCode.UPDATE) ? "PREREQUISITE" : "ANSWER";
retval = retval + ";; #{section} SECTION (#{@header.ancount} record#{@header.ancount == 1 ? '' : 's'})\n";
each_answer { |rr|
retval = retval + rr.to_s + "\n";
}
end
if (@authority.size > 0)
retval = retval + "\n";
section = (@header.opcode == OpCode.UPDATE) ? "UPDATE" : "AUTHORITY";
retval = retval + ";; #{section} SECTION (#{@header.nscount} record#{@header.nscount == 1 ? '' : 's'})\n";
each_authority { |rr|
retval = retval + rr.to_s + "\n";
}
end
if ((@additional.size > 0 && !opt) || (@additional.size > 1))
retval = retval + "\n";
retval = retval + ";; ADDITIONAL SECTION (#{@header.arcount} record#{@header.arcount == 1 ? '' : 's'})\n";
each_additional { |rr|
if (rr.type != Types::OPT)
retval = retval + rr.to_s+ "\n"
end
}
end
return retval;
end