Sha256: b45bc2457d888121fc02c81ae73d71735fd4892b762152023d8d8e23768cc678
Contents?: true
Size: 1.98 KB
Versions: 5
Compression:
Stored size: 1.98 KB
Contents
# This file is part of PacketGen # See https://github.com/sdaubert/packetgen for more informations # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net> # This program is published under MIT license. module PacketGen module PcapNG # {UnknownBlock} is used to handle unsupported blocks of a pcapng file. # @author Sylvain Daubert class UnknownBlock < Block # Minimum Iblock size MIN_SIZE = 12 # @return [:little, :big] attr_accessor :endian # @return [SHB] attr_accessor :section # @!attribute body # @return [Types::String] define_field_before :block_len2, :body, Types::String # @option options [:little, :big] :endian set block endianness # @option options [Integer] :type # @option options [Integer] :block_len block total length # @option options [::String] :body # @option options [Integer] :block_len2 block total length def initialize(options={}) super set_endianness(options[:endian] || :little) recalc_block_len end # Has this block option? # @return [false] def has_options? false end # Reads a String or a IO to populate the object # @param [::String,IO] str_or_io # @return [self] def read(str_or_io) if str_or_io.respond_to? :read io = str_or_io else io = StringIO.new(force_binary(str_or_io.to_s)) end return self if io.eof? self[:type].read io.read(4) self[:block_len].read io.read(4) self[:body].read io.read(self[:block_len].to_i - MIN_SIZE) self[:block_len2].read io.read(4) unless self[:block_len].to_i == self[:block_len2].to_i raise InvalidFileError, 'Incoherency in Header Block' end self end # Return the object as a String # @return [String] def to_s pad_field :body recalc_block_len super end end end end
Version data entries
5 entries across 5 versions & 1 rubygems