# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 10 def initialize(connection, managed_subnets) @connection = connection @managed_subnets = managed_subnets super('device42', managed_subnets, nil) end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 85 def add_record(options) @connection.add_host(options) end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 49 def all_hosts(network_address) records = @connection.get_hosts(network_address) return [] if records.empty? reservs = [] records.each do |record| reserv = build_reservation(record) reservs.push(reserv) if !reserv.nil? end reservs end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 60 def all_leases(network_address) [] # device42 doesn't support leases end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 21 def build_reservation(record) return nil if record.empty? return nil if record['name'].nil? || record['name'].empty? return nil if record['hwaddress'].nil? || record['hwaddress'].empty? mac = record['hwaddress'] mac = mac.gsub(/(.{2})/, '\1:')[0...-1] opts = {:hostname => record['name']} subnet = ::Proxy::DHCP::Subnet.new(record['network'], cidr_to_ip_mask(record['mask_bits'].to_i)) Proxy::DHCP::Reservation.new(record['name'], record['ip_address'], mac, subnet, opts) end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 16 def cidr_to_ip_mask(prefix_length) bitmask = 0xFFFFFFFF ^ (2 ** (32-prefix_length) - 1) (0..3).map {|i| (bitmask >> i*8) & 0xFF}.reverse.join('.') end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 89 def del_record(record) @connection.remove_host(record.name) end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 79 def find_record_by_mac(subnet_address, mac_address) record = @connection.get_host_by_mac(mac_address) return nil if record.empty? build_reservation(record[0]) end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 68 def find_records_by_ip(subnet_address, ip) records = @connection.get_hosts_by_ip(ip) return [] if records.empty? reservs = [] records.each do |record| reserv = build_reservation(record) reservs.push(reserv) if !reserv.nil? end reservs end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 33 def subnets difined_subnets = [] @connection.get_subnets().each do |subnet| address = subnet['network'] if !['::'].include? address if subnet['mask_bits'].to_i <= 32 netmask = cidr_to_ip_mask(subnet['mask_bits'].to_i) if managed_subnet?("#{address}/#{netmask}") difined_subnets.push(Proxy::DHCP::Subnet.new(address, netmask, {})) end end end end.compact difined_subnets end
# File lib/smart_proxy_dhcp_device42/dhcp_device42_main.rb, line 64 def unused_ip(subnet, _, from_ip_address, to_ip_address) @connection.get_next_ip(subnet, from_ip_address, to_ip_address) end