Sha256: f97b0a00980f8beba9be2f07d2220ea1ba4de4b6187981590539bfee2b49a732

Contents?: true

Size: 927 Bytes

Versions: 12

Compression:

Stored size: 927 Bytes

Contents

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


require_relative 'option'

module Lib
  module DHCP
    class Option61 < Option
      # Client-identifier The code for this option is 61, and its minimum length is 2.

      def_delegators :@payload, :to_s

      def initialize(client_id)
        id =  client_id.to_s.gsub(/(:|-|\.|,)/,'').to_s#.pack('H*').unpack('C*')
        super 61, id
      end

      def len
        @payload.size / 2
      end

      def pack
        op61 = [@payload.to_s.gsub(/(:|-|\.|,)/,'').to_s].pack('H*').unpack('C*')
        [61, len, op61.map{|item| item.to_s(16).rjust(2,'0')}.join('')].pack('C2H*')
      end

      private

      def self.unpack(oid, len, payload)
        raise ArgumentError, "Wrong CLIENT-IDENTIFIER Option length - #{len}" unless len > 0
        self.new payload.unpack('H*').first.to_s
      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/option61.rb
lib-dhcp-0.2.4 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.2.3 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.2.2 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.2.1 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.2.0 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.8 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.4 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.3 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.2 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.1 lib/lib/dhcp/options/option61.rb
lib-dhcp-0.1.0 lib/lib/dhcp/options/option61.rb