# -*- coding: binary -*- ## # # Net::DNS::RR::HINFO # # $Id: HINFO.rb,v 1.4 2006/07/28 07:33:36 bluemonk Exp $ # ## module Net module DNS class RR #------------------------------------------------------------ # RR type HINFO #------------------------------------------------------------ class HINFO < RR attr_reader :cpu, :os private def check_hinfo(str) if str.strip =~ /^["'](.*?)["']\s+["'](.*?)["']$/ return $1,$2 else raise RRArgumentError, "HINFO section not valid: #{str.inspect}" end end def build_pack @hinfo_pack = [@cpu.size].pack("C") + @cpu @hinfo_pack += [@os.size].pack("C") + @os @rdlength = @hinfo_pack.size end def set_type @type = Net::DNS::RR::Types.new("HINFO") end def get_data @hinfo_pack end def get_inspect "#@cpu #@os" end def subclass_new_from_hash(args) if args.has_key? :cpu and args.has_key? :os @cpu = args[:cpu] @os = args[:os] else raise RRArgumentError, ":cpu and :os fields are mandatory but missing" end end def subclass_new_from_string(str) @cpu,@os = check_hinfo(str) end def subclass_new_from_binary(data,offset) len = data.unpack("@#{offset} C")[0] @cpu = data[offset+1..offset+1+len] offset += len+1 len = @data.unpack("@#{offset} C")[0] @os = data[offset+1..offset+1+len] return offset += len+1 end end # class HINFO end # class RR end # module DNS end # module Net