Sha256: c9be4f744c9afefda2c1230a6b2d8ef1472942b3980912d26ed0231c895fabee

Contents?: true

Size: 791 Bytes

Versions: 1

Compression:

Stored size: 791 Bytes

Contents

# frozen_string_literal: true

require 'pio/monkey_patch/integer'
require 'pio/open_flow/action'

module Pio
  module OpenFlow10
    # An action to modify the IP ToS/DSCP field of a packet.
    class SetTos < OpenFlow::Action
      action_header action_type: 8, action_length: 8
      uint8 :type_of_service
      string :padding, length: 3
      hide :padding

      def initialize(type_of_service)
        # tos (IP ToS) value consists of 8 bits, of which only the
        # 6 high-order bits belong to DSCP, the 2 low-order bits must
        # be zero.
        unless type_of_service.unsigned_8bit? && (type_of_service % 4).zero?
          raise ArgumentError, 'Invalid type_of_service (ToS) value.'
        end
        super(type_of_service: type_of_service)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pio-0.30.2 lib/pio/open_flow10/set_tos.rb