module Lib::DHCP::Option::Type::SubOption
Public Class Methods
included(base)
click to toggle source
# File lib/lib/dhcp/options/type/sub_option.rb, line 15 def self.included(base) base.extend ClassMethods end
new(*sub_option)
click to toggle source
Calls superclass method
# File lib/lib/dhcp/options/type/sub_option.rb, line 19 def initialize(*sub_option) oid = self.class.name.split('::').last.sub(/Option/, '').to_i sub_options = [] sub_option.each do |sub| if sub.is_a? Lib::DHCP::SubOption opt = sub elsif sub.is_a? Array opt = Lib::DHCP::SubOption.new(sub[0], sub[1]) else raise ArgumentError, 'Unknown SubOption parameter type' end sub_options << opt define_singleton_method("option#{opt.oid.to_i}".to_sym) { opt } #define_singleton_method(:option1) {opt} end super oid, sub_options end
Public Instance Methods
len()
click to toggle source
# File lib/lib/dhcp/options/type/sub_option.rb, line 45 def len l = 0 @payload.each do |sub_option| l += (sub_option.len.to_i + 2).to_i end l end
pack()
click to toggle source
# File lib/lib/dhcp/options/type/sub_option.rb, line 53 def pack option_pack = '' sub_len = 2 @payload.each do |sub_option| sub_len += sub_option.len option_pack += sub_option.pack end [@oid, self.len, option_pack].pack('C2a*') end
to_s()
click to toggle source
# File lib/lib/dhcp/options/type/sub_option.rb, line 37 def to_s s ='' @payload.each do |sub_option| s += "Option #{sub_option.oid}, LEN #{sub_option.len}, Value #{@payload.to_s} \n\r" end s end