Revision b215329a
Added by Ohad Levy over 13 years ago
- ID b215329aa29f1943727379af52a407cc778ecacb
lib/proxy/dhcp/subnet.rb | ||
---|---|---|
module Proxy::DHCP
|
||
# Represents a DHCP Subnet
|
||
class Subnet
|
||
attr_reader :network, :netmask, :server, :leases
|
||
attr_reader :network, :netmask, :server, :leases, :timestamp
|
||
attr_accessor :options
|
||
|
||
include Proxy::DHCP
|
||
... | ... | |
include Proxy::Validations
|
||
|
||
def initialize server, network, netmask
|
||
@server = validate_server server
|
||
@network = validate_ip network
|
||
@netmask = validate_ip netmask
|
||
@options = {}
|
||
@records = {}
|
||
@loaded = false
|
||
raise Proxy::DHCP::Error, "unable to Add Subnet" unless @server.add_subnet(self)
|
||
@server = validate_server server
|
||
@network = validate_ip network
|
||
@netmask = validate_ip netmask
|
||
@options = {}
|
||
@records = {}
|
||
@timestamp = Time.now
|
||
@loaded = false
|
||
raise Proxy::DHCP::Error, "Unable to Add Subnet" unless @server.add_subnet(self)
|
||
end
|
||
|
||
def include? ip
|
||
... | ... | |
return false if loaded?
|
||
@loaded = true
|
||
server.loadSubnetData self
|
||
logger.debug "lazy loaded #{to_s} records"
|
||
logger.debug "Lazy loaded #{to_s} records"
|
||
end
|
||
|
||
def reload
|
||
... | ... | |
end
|
||
|
||
def [] record
|
||
self.load if not loaded?
|
||
begin
|
||
return has_mac?(record) if validate_mac(record)
|
||
rescue
|
||
... | ... | |
# TODO: check for a more faster / portable way
|
||
`ping -q -c 1 #{ip} >/dev/null`
|
||
if $? == 0 or Ping.pingecho(ip,1)
|
||
logger.info "found a pingable IP(#{ip}) address which don't have a Proxy::DHCP record"
|
||
logger.info "Found a pingable IP(#{ip}) address which does not have a Proxy::DHCP record"
|
||
else
|
||
logger.debug "found free ip #{ip} out of a total of #{free_ips.size} free ips"
|
||
logger.debug "Found free ip #{ip} out of a total of #{free_ips.size} free ips"
|
||
return ip
|
||
end
|
||
end
|
Also available in: Unified diff
Added timestamps to subnets data
based on pikelly patches