Module: Lib::DHCP::Option::Type::SubOption
- Defined in:
- lib/lib/dhcp/options/type/sub_option.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
15 16 17 |
# File 'lib/lib/dhcp/options/type/sub_option.rb', line 15 def self.included(base) base.extend ClassMethods end |
Instance Method Details
#initialize(*sub_option) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# 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_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 << opt define_singleton_method("option#{opt.oid.to_i}".to_sym) { opt } #define_singleton_method(:option1) {opt} end super oid, end |
#len ⇒ Object
45 46 47 48 49 50 51 |
# 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 ⇒ Object
53 54 55 56 57 58 59 60 61 |
# 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 ⇒ Object
37 38 39 40 41 42 43 |
# 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 |