Sha256: d537a3b2c0702e5b0ae1c1a93adc7db260ebbbeb45e0995cfb7dd62324724dbc

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

# encoding: utf-8

require 'pio/icmp/format'
require 'forwardable'

module Pio
  class Icmp
    # Base class of Request, Reply, TTL Exceeded and destination unreachable.
    class Message
      extend Forwardable

      def_delegators :@frame, :destination_mac
      def_delegators :@frame, :source_mac
      def_delegators :@frame, :ether_type
      def_delegators :@frame, :ip_version
      def_delegators :@frame, :ip_header_length
      def_delegators :@frame, :ip_type_of_service
      def_delegators :@frame, :ip_total_length
      def_delegators :@frame, :ip_identifier
      def_delegators :@frame, :ip_flag
      def_delegators :@frame, :ip_fragment
      def_delegators :@frame, :ip_ttl
      def_delegators :@frame, :ip_protocol
      def_delegators :@frame, :ip_header_checksum
      def_delegators :@frame, :ip_source_address
      def_delegators :@frame, :ip_destination_address
      def_delegators :@frame, :icmp_type
      def_delegators :@frame, :icmp_code
      def_delegators :@frame, :icmp_checksum
      def_delegators :@frame, :icmp_identifier
      def_delegators :@frame, :icmp_sequence_number
      def_delegators :@frame, :echo_data
      def_delegators :@frame, :to_binary

      def self.create_from(frame)
        message = allocate
        message.instance_variable_set :@frame, frame
        message
      end

      private_class_method :new

      def initialize(user_options)
        options = self.class.const_get(:Options).new(user_options)
        @frame = Icmp::Format.new(options.to_hash)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pio-0.8.1 lib/pio/icmp/message.rb
pio-0.8.0 lib/pio/icmp/message.rb
pio-0.7.0 lib/pio/icmp/message.rb