Sha256: c9def947f5f031b78f06bb83c4cdecacc2dfab5b957dba7305cb1b4403fcfae6

Contents?: true

Size: 995 Bytes

Versions: 3

Compression:

Stored size: 995 Bytes

Contents

# This file is part of packetgen-plugin-smb.
# See https://github.com/sdaubert/packetgen-plugin-smb for more informations
# Copyright (C) 2018 Sylvain Daubert <sylvain.daubert@laposte.net>
# This program is published under MIT license.

# frozen_string_literal: true

require_relative 'guid'

module PacketGen::Plugin
  class SMB2
    # Helper class to ease definition of SMB2 classes
    # @author Sylvain Daubert
    class Base < PacketGen::Header::Base
      # Helper to define pad fields used to align next field on 8-byte
      # offset
      # @param [Symbol] name name of padding field
      # @return [void]
      def self.define_smb2_pad_field(name)
        prev_field = self.fields.last
        lf = lambda do |hdr|
          (8 - (hdr.offset_of(prev_field) + hdr[prev_field].sz) % 8) % 8
        end
        define_field name, PacketGen::Types::String, default: SMB2::MAX_PADDING,
                     builder: ->(h, t) { t.new(length_from: -> { lf[h] }) }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
packetgen-plugin-smb-0.6.1 lib/packetgen/plugin/smb2/base.rb
packetgen-plugin-smb-0.6.0 lib/packetgen/plugin/smb2/base.rb
packetgen-plugin-smb-0.5.0 lib/packetgen/plugin/smb2/base.rb