class Pio::OpenFlow13::Match::Oxm

OXM format

Public Instance Methods

length() click to toggle source
# File lib/pio/open_flow13/match.rb, line 1223
def length
  match_length + padding_length
end
method_missing(method, *args, &block) click to toggle source

rubocop:disable AbcSize rubocop:disable Next rubocop:disable LineLength

# File lib/pio/open_flow13/match.rb, line 1230
def method_missing(method, *args, &block)
  match_fields.each do |each|
    if each.oxm_class == OpenFlowBasicValue::OXM_CLASS || each.oxm_class == NiciraMatchExtensionValue::OXM_CLASS || each.oxm_class == PacketRegistersValue::OXM_CLASS
      next unless each.class_payload.tlv_value.respond_to?(method)
      return each.class_payload.tlv_value.__send__(
        method, *args, &block
      )
    end
  end
  raise NoMethodError, method.to_s
end

Private Instance Methods

padding_length() click to toggle source
# File lib/pio/open_flow13/match.rb, line 1259
def padding_length
  (match_length + 7) / 8 * 8 - match_length
end
tlv_length_left() click to toggle source

rubocop:enable AbcSize rubocop:enable Next rubocop:enable LineLength

# File lib/pio/open_flow13/match.rb, line 1247
def tlv_length_left
  match_length - tlv_total_length
end
tlv_total_length() click to toggle source
# File lib/pio/open_flow13/match.rb, line 1251
def tlv_total_length
  if !match_fields.empty?
    match_fields.map(&:length).inject(&:+)
  else
    0
  end
end