class OpenFlow::Protocol::Match::Wildcards

Constants

ALL_FLAGS
FLAGS

Public Instance Methods

get() click to toggle source
# File lib/openflow-protocol/structs/match.rb, line 41
def get
  FLAGS.each_with_object(Hash.new(0)) do |(key, bit), memo|
    next if flags & bit == 0
    if /^(ip_source|ip_destination)(\d)/ =~ key
      memo[$LAST_MATCH_INFO[1].to_sym] |= 1 << $LAST_MATCH_INFO[2].to_i
    else
      memo[key] = true
    end
  end
end
set(value) click to toggle source
# File lib/openflow-protocol/structs/match.rb, line 52
def set(value)
  value = Hash[value.map { |v| [v, true] }] if value.is_a?(Array)
  self.flags = value.inject(0) do |memo, (key, val)|
    memo |
      case key
      when :ip_source, :ip_destination
        (val & 31) << (key == :ip_source ? 8 : 14)
      else
        val ? FLAGS.fetch(key) : 0
      end
  end
end