Sha256: 45ae9efeb63262191012dd2c45d5312e68e18ef028a7402590efd9f004fd5262

Contents?: true

Size: 1.05 KB

Versions: 5

Compression:

Stored size: 1.05 KB

Contents

require 'pio/type/ip_address'

module Pio
  module Type
    # IP Version 4 Header Format
    module IPv4Header
      # This method smells of :reek:TooManyStatements
      # rubocop:disable MethodLength
      # rubocop:disable AbcSize
      def ipv4_header(options)
        class_eval do
          bit4 :ip_version, initial_value: 0x4
          bit4 :ip_header_length, initial_value: 0x5
          uint8 :ip_type_of_service, initial_value: 0
          uint16be :ip_total_length,
                   initial_value: options[:ip_total_length]
          uint16be :ip_identifier, initial_value: 0
          bit3 :ip_flag, initial_value: 0
          bit13 :ip_fragment, initial_value: 0
          uint8 :ip_ttl, initial_value: 128
          uint8 :ip_protocol, value: options[:ip_protocol]
          uint16be :ip_header_checksum,
                   initial_value: options[:ip_header_checksum]
          ip_address :ip_source_address
          ip_address :ip_destination_address
        end
      end
      # rubocop:enable AbcSize
      # rubocop:enable MethodLength
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
pio-0.11.2 lib/pio/type/ipv4_header.rb
pio-0.11.1 lib/pio/type/ipv4_header.rb
pio-0.11.0 lib/pio/type/ipv4_header.rb
pio-0.10.1 lib/pio/type/ipv4_header.rb
pio-0.10.0 lib/pio/type/ipv4_header.rb