Sha256: 08cc9ff0851df8b1261482d65b3baf13f02af22d52de4e53b12638816554e2c9

Contents?: true

Size: 1.31 KB

Versions: 12

Compression:

Stored size: 1.31 KB

Contents

#Author: Piotr Wojcieszonek
#e-mail: piotr@wojcieszonek.pl
# Copyright 21.03.2016 by Piotr Wojcieszonek


require 'net/address'

module Lib
  module DHCP
    class Option
      module Type
        module Netmask
          def self.included(base)
            base.send :include, InstanceMethods
            base.extend ClassMethods
          end

          def initialize(netmask)
            oid = self.class.name.split('::').last.sub(/Option/, '').to_i
            payload = (netmask.is_a?(Net::Address::Mask)) ? netmask : Net::Address::Mask.new(netmask)
            super oid, payload
          end

          module InstanceMethods
            def pack
              [@oid, 4, @payload.to_i].pack('C2N')
            end

            def len
              4
            end

            def to_s
              @payload.to_s
            end

            def payload=(netmask)
              (netmask.is_a? Net::Address::Mask) ? @payload = netmask : @payload = Net::Address::Mask.new(netmask)
            end

          end

          module ClassMethods

            private
            def unpack(oid, len, payload)
              raise ArgumentError, "Wrong #{Lib::DHCP::Option::NAME[oid]} Option length - #{len}" unless len == 4
              self.new *payload.unpack('N*')
            end

          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lib-dhcp-0.2.5 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.2.4 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.2.3 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.2.2 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.2.1 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.2.0 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.8 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.4 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.3 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.2 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.1 lib/lib/dhcp/options/type/netmask.rb
lib-dhcp-0.1.0 lib/lib/dhcp/options/type/netmask.rb