Sha256: 8ce6761732d0777d1b0f65a60a18f8da082011640615f3abb2e56af4c3165712

Contents?: true

Size: 1023 Bytes

Versions: 2

Compression:

Stored size: 1023 Bytes

Contents

require 'pio/type/ip_address'

module Pio
  module Type
    # IP Version 4 Header Format
    module IPv4Header
      # 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

2 entries across 2 versions & 1 rubygems

Version Path
pio-0.9.0 lib/pio/type/ipv4_header.rb
pio-0.8.2 lib/pio/type/ipv4_header.rb