Class: Lib::DHCP::Message::LeaseQuery

Inherits:
Lib::DHCP::Message show all
Defined in:
lib/lib/dhcp/messages/lease_query.rb

Constant Summary

Constants inherited from Lib::DHCP::Message

ACKNOWLEDGE, BOOTREPLY, BOOTREQUEST, DECLINE, DISCOVER, INFORM, LEASE_ACTIVE, LEASE_QUERY, LEASE_UNASSIGNED, LEASE_UNKNOWN, NAME, NOT_ACKNOWLEDGE, OFFER, RELEASE, REQUEST

Constants inherited from Packet

Packet::MAGICK_COOKIE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Lib::DHCP::Message

#name

Methods inherited from Packet

#option0, #option255, #options, #to_s

Constructor Details

#initialize(htype: 1, hlen: 6, hops: 0, xid: nil, secs: 0, flags: 0, ciaddr: 0, yiaddr: 0, siaddr: 0, giaddr: 0, chaddr:, sname: '.', file: '.', options: nil) ⇒ LeaseQuery

Returns a new instance of LeaseQuery.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/lib/dhcp/messages/lease_query.rb', line 12

def initialize(htype: 1, hlen: 6, hops: 0, xid: nil, secs: 0, flags: 0, ciaddr: 0, yiaddr: 0, siaddr: 0, giaddr: 0, chaddr: , sname: '.', file: '.', options: nil)
  super(
      :op => BOOTREQUEST,
      :htype => htype,
      :hlen => hlen,
      :hops => hops,
      :xid => xid,
      :secs => secs,
      :flags => flags,
      :ciaddr => ciaddr,
      :yiaddr => yiaddr,
      :siaddr => siaddr,
      :giaddr => giaddr,
      :chaddr => chaddr,
      :sname => sname,
      :file => file
  )
  if options.is_a? Array or options.is_a? Lib::DHCP::Options
    options.each { |option| self.options.add option unless option.oid.to_i == Option::MESSAGE_TYPE }
  elsif options.is_a? Lib::DHCP::Option
    self.options.add options
  elsif !options.nil?
    raise TypeError, "Can't convert #{options.class.name} to Lib::DHCP::Option"
  end
  self.options.add Lib::DHCP::Option53.new(LEASE_QUERY)

end

Class Method Details

.unpack(packet) ⇒ Object

Raises:

  • (TypeError)


48
49
50
51
52
# File 'lib/lib/dhcp/messages/lease_query.rb', line 48

def self.unpack(packet)
  res = super(packet)
  raise TypeError, "No implicit conversion of #{res.class.name} into #{self.class.name}" unless res.is_a? self.class
  res
end

Instance Method Details

#packObject



40
41
42
43
44
45
46
# File 'lib/lib/dhcp/messages/lease_query.rb', line 40

def pack
  # noinspection RubyResolve
  self.option53 = LEASE_QUERY
  self.op = BOOTREQUEST
  sanity_check
  super
end

#query_by_client_id?Boolean

Returns:

  • (Boolean)


62
63
64
# File 'lib/lib/dhcp/messages/lease_query.rb', line 62

def query_by_client_id?
  option61.nil? ? false : true
end

#query_by_ip?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/lib/dhcp/messages/lease_query.rb', line 54

def query_by_ip?
  (ciaddr != 0) ? true : false
end

#query_by_mac?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'lib/lib/dhcp/messages/lease_query.rb', line 58

def query_by_mac?
  (htype != 0 and hlen != 0 and chaddr != 0) ? true : false
end