class GeoIP

Public Instance Methods

filename() click to toggle source
# File lib/geoip_multi.rb, line 54
def filename
  @file.path
end
netmask(ip) click to toggle source
# File lib/geoip_multi.rb, line 49
def netmask (ip)
  seek_netmask(iptonum(ip))
  @last_netmask
end
range_by_ip(ip) click to toggle source
# File lib/geoip_multi.rb, line 58
def range_by_ip(ip)
  ipnum = iptonum(ip)
  record=seek_netmask(ipnum)
  mask = 0xffffffff << 32 - @last_netmask
  left_seek_num = ipnum & mask
  right_seek_num = left_seek_num + ( 0xffffffff & ~mask )
  while (left_seek_num !=0 and record == seek_netmask(left_seek_num - 1))
    leftmask = 0xffffffff << 32 - @last_netmask
    left_seek_num = (left_seek_num - 1) & leftmask
  end
  while (right_seek_num != 0xffffffff and record == seek_netmask(right_seek_num + 1))
    rightmask = 0xffffffff << 32 - @last_netmask
    right_seek_num = ( right_seek_num + 1 ) & rightmask
    right_seek_num += (0xffffffff & ~rightmask)
  end
  [numtoip(left_seek_num), numtoip(right_seek_num)]
end