class Blondy::DHCPD::Reply
Public Class Methods
new(data, reply_type)
click to toggle source
# File lib/blondy/dhcpd/reply.rb, line 8 def initialize(data, reply_type) @result = OpenStruct.new @result.data = OpenStruct.new @data = data @reply_type = reply_type @result.data.fname = data['fname'].unpack('C128').map {|x| x ? x : 0} @result.data.yiaddr = IPAddr.new(data['yiaddr']).to_i @result.data.options = [ DHCP::MessageTypeOption.new({payload: [@reply_type]}), DHCP::ServerIdentifierOption.new({payload: array_from(Blondy::DHCPD::CONFIG['server_ip'])}), DHCP::DomainNameOption.new({payload: data['domain'].unpack('C*')}), DHCP::DomainNameServerOption.new({payload: array_from(data['dns'])}), DHCP::IPAddressLeaseTimeOption.new({payload: [7200].pack('N').unpack('C*')}), DHCP::SubnetMaskOption.new({payload: array_from(data['netmask'])}), DHCP::RouterOption.new({payload: array_from(data['gw'])}), DHCP::HostNameOption.new({payload: "#{data['hostname']}.#{data['domain']}".unpack('C*')}}) ] @result.reply_addr = IPAddr.new("#{data['yiaddr']}/#{data['netmask']}").to_range.last.to_s end
Public Instance Methods
get()
click to toggle source
# File lib/blondy/dhcpd/reply.rb, line 28 def get @result end
Private Instance Methods
array_from(ip)
click to toggle source
# File lib/blondy/dhcpd/reply.rb, line 34 def array_from(ip) ip.split('.').map {|octet| octet.to_i} if IPAddr.new(ip) end