Class: Pio::PortNumber

Inherits:
BinData::Primitive
  • Object
show all
Defined in:
lib/pio/open_flow/port_number.rb

Overview

Port numbering.

Constant Summary collapse

NUMBERS =
{
  in_port: 0xfff8,
  table: 0xfff9,
  normal: 0xfffa,
  flood: 0xfffb,
  all: 0xfffc,
  controller: 0xfffd,
  local: 0xfffe,
  none: 0xffff
}
MAX =
0xff00

Instance Method Summary collapse

Instance Method Details

#getObject



20
21
22
23
24
# File 'lib/pio/open_flow/port_number.rb', line 20

def get
  NUMBERS.invert.fetch(port_number)
rescue KeyError
  port_number
end

#set(value) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/pio/open_flow/port_number.rb', line 26

def set(value)
  if NUMBERS.key?(value)
    self.port_number = NUMBERS.fetch(value)
  else
    port_number = value.to_i
    fail ArgumentError, 'The port_number should be > 0' if port_number < 1
    if port_number >= MAX
      fail ArgumentError, 'The port_number should be < 0xff00'
    end
    self.port_number = port_number
  end
end