Sha256: b4e84959cf0e949c25b04ea0a7fc0a794211e639b08cb81d60ab54a7e1888c3b

Contents?: true

Size: 1.41 KB

Versions: 12

Compression:

Stored size: 1.41 KB

Contents

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


require_relative 'option'

module Lib
  module DHCP
    class Option57 < Option
      # Maximum DHCP Message Size. The code for this option is 57, and its length is 2.
      # The minimum legal value is 576 octets.

      def_delegators :@payload, :to_s

      def initialize(message_size)
        # raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576
        super MAX_MESSAGE_SIZE, message_size.to_i
      end

      def pack
        [@oid, 2, @payload.to_i].pack('C2n')
      end

      def len
        2
      end

      def payload=(message_size)
        # raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576
        @payload = message_size.to_i
      end

      alias_method :max_message_size, :payload
      alias_method :max_message_size=, :payload=

      private

      def self.unpack(oid, len, payload)
        raise ArgumentError, "OID Mismatch for #{NAME[oid]} - #{oid}" unless oid.to_i == MAX_MESSAGE_SIZE
        raise ArgumentError, "Wrong #{NAME[oid]} length - #{len}" unless len == 2

        message_size = payload.unpack('n').first.to_i

        #raise ArgumentError, "Minimal message size is 576. #{message_size} given" unless message_size.to_i >= 576

        self.new message_size

      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/option57.rb
lib-dhcp-0.2.4 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.2.3 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.2.2 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.2.1 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.2.0 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.8 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.4 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.3 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.2 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.1 lib/lib/dhcp/options/option57.rb
lib-dhcp-0.1.0 lib/lib/dhcp/options/option57.rb