# File lib/geoip.rb, line 676
    def asn(hostname)
        ip = hostname
        if ip.kind_of?(String) && ip !~ /^[0-9.]*$/
            # Lookup IP address, we were given a name
            ip = IPSocket.getaddress(hostname)
            ip = '0.0.0.0' if ip == '::1'
        end

        # Convert numeric IP address to an integer
        ipnum = iptonum(ip)
        if (@databaseType != GEOIP_ASNUM_EDITION)
            throw "Invalid GeoIP database type, can't look up ASN by IP"
        end
        pos = seek_record(ipnum);
        off = pos + (2*@record_length-1) * @databaseSegments[0]
        record = atomic_read(MAX_ASN_RECORD_LENGTH, off)
        record = record.sub(/\000.*/n, '')
        
        if record =~ /^(AS\d+)\s(.*)$/
          # AS####, Description 
          return [$1, $2]
        end
    end