Sha256: c3c087b8de7ffae3d00b59434a6b5e669a606084117732a6d6d21680e560ba33

Contents?: true

Size: 1.18 KB

Versions: 7

Compression:

Stored size: 1.18 KB

Contents

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

require 'lib/dhcp/options/option'

module Lib
  module DHCP
    class Option2 < Option
      # Time Offset length is 4 octets

      def_delegators :@payload, :to_s

      def initialize(time_offset)
        super TIME_OFFSET, time_offset.to_i
      end

      def time_offset=(time_offset)
        raise ArgumentError, "TIME OFFSET out of range - #{time_offset}" if time_offset.to_i > 0xffffffff
        @payload = time_offset.to_i
      end

      def pack
        [TIME_OFFSET, 4, @payload].pack('C2N')
      end

      def len
        4
      end

      alias_method :time_offset, :payload
      alias_method :payload=, :time_offset=

      private

      def self.unpack(oid, len, payload)
        raise ArgumentError, "OID Mismatch for TIME OFFSET Option - #{oid}" unless oid.to_i == TIME_OFFSET
        raise ArgumentError, "Wrong TIME OFFSET Option length - #{len}" unless len == 4
        time_offset = payload.to_s.unpack('N').first
        raise ArgumentError, "TIME OFFSET out of range - #{time_offset}" if time_offset.to_i > 0xffffffff
        self.new time_offset
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lib-dhcp-0.2.0 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.8 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.4 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.3 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.2 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.1 lib/lib/dhcp/options/option2.rb
lib-dhcp-0.1.0 lib/lib/dhcp/options/option2.rb