pio 0.27.1 → 0.27.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Rakefile +1 -1
- data/bin/{terminal-notifier → code_metrics} +2 -2
- data/bin/code_metrics-profile +16 -0
- data/features/icmpv6.pcap +0 -0
- data/features/open_flow10/aggregate_stats_reply.feature +1 -1
- data/features/open_flow10/aggregate_stats_request.feature +2 -2
- data/features/open_flow10/bad_request.feature +2 -2
- data/features/open_flow10/barrier_reply.feature +3 -18
- data/features/open_flow10/barrier_request.feature +3 -18
- data/features/open_flow10/description_stats_reply.feature +1 -1
- data/features/open_flow10/description_stats_request.feature +3 -3
- data/features/open_flow10/echo_reply.feature +4 -47
- data/features/open_flow10/echo_request.feature +4 -36
- data/features/open_flow10/exact_match.feature +20 -2
- data/features/open_flow10/features_reply.feature +65 -72
- data/features/open_flow10/features_request.feature +3 -22
- data/features/open_flow10/flow_mod.feature +5 -5
- data/features/open_flow10/flow_stats_reply.feature +2 -2
- data/features/open_flow10/flow_stats_request.feature +3 -4
- data/features/open_flow10/hello.feature +4 -20
- data/features/open_flow10/hello_failed.feature +4 -4
- data/features/open_flow10/packet_in.feature +2 -2
- data/features/open_flow10/packet_in_arp_reply.raw +0 -0
- data/features/open_flow10/packet_out.feature +1 -1
- data/features/open_flow10/port_status.feature +1 -1
- data/features/open_flow13/bad_request.feature +2 -2
- data/features/open_flow13/echo_reply.feature +5 -37
- data/features/open_flow13/echo_request.feature +5 -37
- data/features/open_flow13/features_reply.feature +3 -7
- data/features/open_flow13/features_request.feature +3 -18
- data/features/open_flow13/flow_mod.feature +5 -5
- data/features/open_flow13/hello.feature +4 -19
- data/features/open_flow13/hello_failed.feature +4 -4
- data/features/open_flow13/match.feature +4 -4
- data/features/open_flow13/packet_in.feature +3 -3
- data/features/open_flow13/packet_out.feature +3 -3
- data/features/parser.feature +10 -0
- data/lib/pio/arp/format.rb +20 -0
- data/lib/pio/ipv4_header.rb +20 -0
- data/lib/pio/open_flow.rb +0 -1
- data/lib/pio/open_flow/message.rb +51 -57
- data/lib/pio/open_flow/open_flow_header.rb +6 -10
- data/lib/pio/open_flow10.rb +20 -15
- data/lib/pio/open_flow10/aggregate_stats/reply.rb +20 -0
- data/lib/pio/open_flow10/aggregate_stats/request.rb +25 -0
- data/lib/pio/open_flow10/barrier/reply.rb +14 -0
- data/lib/pio/open_flow10/barrier/request.rb +14 -0
- data/lib/pio/open_flow10/description_stats/reply.rb +21 -0
- data/lib/pio/open_flow10/description_stats/request.rb +19 -0
- data/lib/pio/open_flow10/echo/reply.rb +16 -0
- data/lib/pio/open_flow10/echo/request.rb +16 -0
- data/lib/pio/open_flow10/error/bad_request.rb +27 -49
- data/lib/pio/open_flow10/error/hello_failed.rb +6 -28
- data/lib/pio/open_flow10/exact_match.rb +4 -39
- data/lib/pio/open_flow10/features/reply.rb +48 -72
- data/lib/pio/open_flow10/features/request.rb +4 -11
- data/lib/pio/open_flow10/flow_mod.rb +21 -51
- data/lib/pio/open_flow10/{flow_stats_reply.rb → flow_stats/reply.rb} +7 -23
- data/lib/pio/open_flow10/flow_stats/request.rb +25 -0
- data/lib/pio/open_flow10/hello.rb +3 -13
- data/lib/pio/open_flow10/match.rb +0 -18
- data/lib/pio/open_flow10/match10.rb +22 -0
- data/lib/pio/open_flow10/packet_in.rb +18 -42
- data/lib/pio/open_flow10/packet_out.rb +8 -31
- data/lib/pio/open_flow10/port_status.rb +11 -39
- data/lib/pio/open_flow10/stats_reply.rb +11 -8
- data/lib/pio/open_flow10/stats_request.rb +8 -8
- data/lib/pio/open_flow13.rb +13 -6
- data/lib/pio/open_flow13/echo/reply.rb +15 -0
- data/lib/pio/open_flow13/echo/request.rb +15 -0
- data/lib/pio/open_flow13/error/bad_request.rb +32 -49
- data/lib/pio/open_flow13/error/hello_failed.rb +7 -30
- data/lib/pio/open_flow13/features/reply.rb +27 -51
- data/lib/pio/open_flow13/features/request.rb +3 -10
- data/lib/pio/open_flow13/flow_mod.rb +29 -52
- data/lib/pio/open_flow13/hello.rb +18 -22
- data/lib/pio/open_flow13/packet_in.rb +26 -44
- data/lib/pio/open_flow13/packet_out.rb +16 -35
- data/lib/pio/open_flow13/stats_request.rb +5 -21
- data/lib/pio/parser.rb +5 -4
- data/lib/pio/version.rb +1 -1
- data/pio.gemspec +6 -6
- data/spec/pio/open_flow10/{echo_reply_spec.rb → echo/reply_spec.rb} +1 -1
- data/spec/pio/open_flow10/{echo_request_spec.rb → echo/request_spec.rb} +1 -1
- data/spec/pio/open_flow10/error/hello_failed_spec.rb +2 -2
- data/spec/pio/open_flow10/features/request_spec.rb +0 -5
- data/spec/pio/open_flow10/flow_mod_spec.rb +2 -4
- data/spec/pio/open_flow10/flow_stats_reply_spec.rb +1 -1
- data/spec/pio/open_flow10/flow_stats_request_spec.rb +2 -2
- data/spec/pio/open_flow10/packet_out_spec.rb +15 -18
- data/spec/pio/open_flow13/echo_reply_spec.rb +1 -1
- data/spec/pio/open_flow13/echo_request_spec.rb +1 -1
- data/spec/pio/open_flow13/error/hello_failed_spec.rb +2 -2
- data/spec/pio/open_flow13/features/request_spec.rb +5 -3
- data/spec/pio/open_flow13/hello_spec.rb +3 -3
- data/spec/support/shared_examples_for_openflow_messages.rb +5 -12
- metadata +92 -85
- data/lib/pio/open_flow/echo.rb +0 -44
- data/lib/pio/open_flow/format.rb +0 -46
- data/lib/pio/open_flow10/aggregate_stats_reply.rb +0 -38
- data/lib/pio/open_flow10/aggregate_stats_request.rb +0 -42
- data/lib/pio/open_flow10/barrier_reply.rb +0 -21
- data/lib/pio/open_flow10/barrier_request.rb +0 -22
- data/lib/pio/open_flow10/description_stats_reply.rb +0 -35
- data/lib/pio/open_flow10/description_stats_request.rb +0 -36
- data/lib/pio/open_flow10/echo.rb +0 -20
- data/lib/pio/open_flow10/flow_stats_request.rb +0 -64
- data/lib/pio/open_flow13/echo.rb +0 -20
- data/lib/pio/open_flow13/features.rb +0 -2
data/lib/pio/open_flow/echo.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/format'
|
2
|
-
require 'pio/open_flow/message'
|
3
|
-
|
4
|
-
module Pio
|
5
|
-
module OpenFlow
|
6
|
-
# Base class of Echo Request and Reply.
|
7
|
-
class Echo < OpenFlow::Message
|
8
|
-
# rubocop:disable MethodLength
|
9
|
-
def self.inherited(child)
|
10
|
-
child.module_eval <<-EOS
|
11
|
-
class Format < BinData::Record
|
12
|
-
extend OpenFlow::Format
|
13
|
-
|
14
|
-
header version: :of_version,
|
15
|
-
message_type: :of_message_type
|
16
|
-
string :body, read_length: -> { length - header_length }
|
17
|
-
|
18
|
-
def user_data
|
19
|
-
body
|
20
|
-
end
|
21
|
-
end
|
22
|
-
EOS
|
23
|
-
end
|
24
|
-
# rubocop:enable MethodLength
|
25
|
-
|
26
|
-
def self.version(version)
|
27
|
-
const_get(:Format).tap do |klass|
|
28
|
-
klass.__send__(:define_method, :of_version) { version }
|
29
|
-
klass.class_eval { private :of_version }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def self.message_type(message_type)
|
34
|
-
const_get(:Format).tap do |klass|
|
35
|
-
klass.__send__(:define_method, :of_message_type) { message_type }
|
36
|
-
klass.class_eval { private :of_message_type }
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
body_option :body
|
41
|
-
body_option :user_data
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/lib/pio/open_flow/format.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/open_flow_header'
|
2
|
-
|
3
|
-
module Pio
|
4
|
-
module OpenFlow
|
5
|
-
# OpenFlow message definition macros.
|
6
|
-
module Format
|
7
|
-
include Forwardable
|
8
|
-
|
9
|
-
# rubocop:disable NestedMethodDefinition
|
10
|
-
def self.extended(base)
|
11
|
-
base.module_eval do
|
12
|
-
def header_length
|
13
|
-
8
|
14
|
-
end
|
15
|
-
|
16
|
-
def method_missing(method, *args, &block)
|
17
|
-
body.__send__ method, *args, &block
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
# rubocop:enable NestedMethodDefinition
|
22
|
-
|
23
|
-
# rubocop:disable MethodLength
|
24
|
-
def header(options)
|
25
|
-
module_eval do
|
26
|
-
endian :big
|
27
|
-
|
28
|
-
open_flow_header :header,
|
29
|
-
ofp_version_value: options.fetch(:version),
|
30
|
-
message_type_value: options.fetch(:message_type)
|
31
|
-
|
32
|
-
def_delegators :header, :snapshot
|
33
|
-
def_delegators :snapshot, :ofp_version
|
34
|
-
def_delegators :snapshot, :message_type
|
35
|
-
def_delegators :snapshot, :_length
|
36
|
-
def_delegators :snapshot, :transaction_id
|
37
|
-
def_delegator :snapshot, :transaction_id, :xid
|
38
|
-
|
39
|
-
alias_method :length, :_length
|
40
|
-
alias_method :to_binary, :to_binary_s
|
41
|
-
end
|
42
|
-
end
|
43
|
-
# rubocop:enable MethodLength
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
require 'pio/open_flow10/stats_type'
|
2
|
-
|
3
|
-
# Base module.
|
4
|
-
module Pio
|
5
|
-
# OpenFlow 1.0 messages
|
6
|
-
module OpenFlow10
|
7
|
-
# Aggregate Stats messages
|
8
|
-
module AggregateStats
|
9
|
-
# Aggregate Stats Reply message
|
10
|
-
class Reply < OpenFlow::Message
|
11
|
-
# Message body of Flow Stats Request.
|
12
|
-
class Body < BinData::Record
|
13
|
-
endian :big
|
14
|
-
|
15
|
-
stats_type :stats_type, value: -> { :aggregate }
|
16
|
-
uint16 :flags
|
17
|
-
uint64 :packet_count
|
18
|
-
uint64 :byte_count
|
19
|
-
uint32 :flow_count
|
20
|
-
string :padding, length: 4
|
21
|
-
hide :padding
|
22
|
-
|
23
|
-
def length
|
24
|
-
24
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Aggregate Stats Reply message format.
|
29
|
-
class Format < BinData::Record
|
30
|
-
extend OpenFlow::Format
|
31
|
-
|
32
|
-
header version: 1, message_type: 17
|
33
|
-
body :body
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'pio/open_flow10/match'
|
2
|
-
require 'pio/open_flow10/port16'
|
3
|
-
require 'pio/open_flow10/stats_type'
|
4
|
-
|
5
|
-
# Base module.
|
6
|
-
module Pio
|
7
|
-
# OpenFlow 1.0 messages
|
8
|
-
module OpenFlow10
|
9
|
-
# OpenFlow 1.0 Aggregate Stats messages
|
10
|
-
module AggregateStats
|
11
|
-
# OpenFlow 1.0 Aggregate Stats Request message
|
12
|
-
class Request < OpenFlow::Message
|
13
|
-
# Message body of Flow Stats Request.
|
14
|
-
class Body < BinData::Record
|
15
|
-
endian :big
|
16
|
-
|
17
|
-
stats_type :stats_type, value: -> { :aggregate }
|
18
|
-
uint16 :flags
|
19
|
-
match10 :match
|
20
|
-
uint8 :table_id, initial_value: 0xff
|
21
|
-
string :padding, length: 1
|
22
|
-
hide :padding
|
23
|
-
port16 :out_port, initial_value: -> { :none }
|
24
|
-
|
25
|
-
def length
|
26
|
-
48
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
# OpenFlow 1.0 Aggregate Stats Request message format.
|
31
|
-
class Format < BinData::Record
|
32
|
-
extend OpenFlow::Format
|
33
|
-
|
34
|
-
header version: 1, message_type: 16
|
35
|
-
body :body
|
36
|
-
end
|
37
|
-
|
38
|
-
body_option :match
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/format'
|
2
|
-
require 'pio/open_flow/message'
|
3
|
-
|
4
|
-
module Pio
|
5
|
-
# OpenFlow 1.0 messages
|
6
|
-
module OpenFlow10
|
7
|
-
# OpenFlow 1.0 Barrier messages
|
8
|
-
module Barrier
|
9
|
-
# OpenFlow 1.0 Barrier Request message
|
10
|
-
class Reply < OpenFlow::Message
|
11
|
-
# OpenFlow 1.0 Barrier Request message format
|
12
|
-
class Format < BinData::Record
|
13
|
-
extend OpenFlow::Format
|
14
|
-
|
15
|
-
header version: 1, message_type: 19
|
16
|
-
string :body, value: ''
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/format'
|
2
|
-
require 'pio/open_flow/message'
|
3
|
-
|
4
|
-
# Base module.
|
5
|
-
module Pio
|
6
|
-
# OpenFlow 1.0 messages
|
7
|
-
module OpenFlow10
|
8
|
-
# OpenFlow 1.0 Barrier messages
|
9
|
-
module Barrier
|
10
|
-
# OpenFlow 1.0 Barrier Request message
|
11
|
-
class Request < OpenFlow::Message
|
12
|
-
# OpenFlow 1.0 Barrier Request message format
|
13
|
-
class Format < BinData::Record
|
14
|
-
extend OpenFlow::Format
|
15
|
-
|
16
|
-
header version: 1, message_type: 18
|
17
|
-
string :body, value: ''
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
require 'pio/open_flow10/stats_type'
|
2
|
-
|
3
|
-
# Base module.
|
4
|
-
module Pio
|
5
|
-
# OpenFlow 1.0 messages
|
6
|
-
module OpenFlow10
|
7
|
-
# OpenFlow 1.0 Description Stats messages
|
8
|
-
module DescriptionStats
|
9
|
-
# OpenFlow 1.0 Description Stats Reply message
|
10
|
-
class Reply < OpenFlow::Message
|
11
|
-
# Message body of Flow Stats Reply.
|
12
|
-
class Body < BinData::Record
|
13
|
-
endian :big
|
14
|
-
|
15
|
-
stats_type :stats_type, value: -> { :description }
|
16
|
-
uint16 :flags
|
17
|
-
|
18
|
-
stringz :manufacturer, length: 256
|
19
|
-
stringz :hardware, length: 256
|
20
|
-
stringz :software, length: 256
|
21
|
-
stringz :serial_number, length: 32
|
22
|
-
stringz :datapath, length: 256
|
23
|
-
end
|
24
|
-
|
25
|
-
# OpenFlow 1.0 Description Stats Reply message format.
|
26
|
-
class Format < BinData::Record
|
27
|
-
extend OpenFlow::Format
|
28
|
-
|
29
|
-
header version: 1, message_type: 17
|
30
|
-
body :body
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'pio/open_flow10/stats_type'
|
2
|
-
require 'pio/open_flow/format'
|
3
|
-
require 'pio/open_flow/message'
|
4
|
-
|
5
|
-
# Base module.
|
6
|
-
module Pio
|
7
|
-
# OpenFlow 1.0 messages
|
8
|
-
module OpenFlow10
|
9
|
-
# OpenFlow 1.0 Description Stats messages
|
10
|
-
module DescriptionStats
|
11
|
-
# OpenFlow 1.0 Description Stats Request message
|
12
|
-
class Request < OpenFlow::Message
|
13
|
-
# Message body of Flow Stats Request.
|
14
|
-
class Body < BinData::Record
|
15
|
-
endian :big
|
16
|
-
|
17
|
-
stats_type :stats_type, value: -> { :description }
|
18
|
-
uint16 :flags
|
19
|
-
string :body, value: ''
|
20
|
-
|
21
|
-
def length
|
22
|
-
4
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# OpenFlow 1.0 Description Stats Request message format.
|
27
|
-
class Format < BinData::Record
|
28
|
-
extend OpenFlow::Format
|
29
|
-
|
30
|
-
header version: 1, message_type: 16
|
31
|
-
body :body
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/pio/open_flow10/echo.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/echo'
|
2
|
-
|
3
|
-
module Pio
|
4
|
-
module OpenFlow10
|
5
|
-
# OpenFlow 1.0 Echo Request and Reply message.
|
6
|
-
module Echo
|
7
|
-
# OpenFlow 1.0 Echo Request message.
|
8
|
-
class Request < OpenFlow::Echo
|
9
|
-
version 1
|
10
|
-
message_type 2
|
11
|
-
end
|
12
|
-
|
13
|
-
# OpenFlow 1.0 Echo Reply message.
|
14
|
-
class Reply < OpenFlow::Echo
|
15
|
-
version 1
|
16
|
-
message_type 3
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'pio/open_flow10/match'
|
2
|
-
require 'pio/open_flow10/stats_type'
|
3
|
-
require 'pio/open_flow/format'
|
4
|
-
require 'pio/open_flow/message'
|
5
|
-
|
6
|
-
# Base module.
|
7
|
-
module Pio
|
8
|
-
# OpenFlow 1.0 messages
|
9
|
-
module OpenFlow10
|
10
|
-
# OpenFlow 1.0 FlowStats messages
|
11
|
-
module FlowStats
|
12
|
-
# OpenFlow 1.0 Flow Stats Request message
|
13
|
-
class Request < OpenFlow::Message
|
14
|
-
# Body for Stats Request of type :flow
|
15
|
-
class FlowStatsRequestBody < BinData::Record
|
16
|
-
endian :big
|
17
|
-
|
18
|
-
match10 :match
|
19
|
-
uint8 :table_id, initial_value: 0xff
|
20
|
-
string :padding, length: 1
|
21
|
-
hide :padding
|
22
|
-
port16 :out_port, initial_value: -> { :none }
|
23
|
-
end
|
24
|
-
|
25
|
-
# Message body of Flow Stats Request.
|
26
|
-
class Body < BinData::Record
|
27
|
-
endian :big
|
28
|
-
|
29
|
-
stats_type :stats_type, value: -> { :flow }
|
30
|
-
uint16 :flags
|
31
|
-
choice :stats_request_body, selection: -> { stats_type.to_s } do
|
32
|
-
flow_stats_request_body 'flow'
|
33
|
-
string :default
|
34
|
-
end
|
35
|
-
|
36
|
-
def length
|
37
|
-
48
|
38
|
-
end
|
39
|
-
|
40
|
-
def method_missing(method, *args, &block)
|
41
|
-
stats_request_body.__send__(method, *args, &block)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# OpenFlow 1.0 Flow Stats Request message format.
|
46
|
-
class Format < BinData::Record
|
47
|
-
extend OpenFlow::Format
|
48
|
-
|
49
|
-
header version: 1, message_type: 16
|
50
|
-
body :body
|
51
|
-
end
|
52
|
-
|
53
|
-
body_option :match
|
54
|
-
|
55
|
-
def initialize(user_options = {})
|
56
|
-
validate_user_options user_options
|
57
|
-
header_options = parse_header_options(user_options)
|
58
|
-
@format = Format.new(header: header_options,
|
59
|
-
body: { stats_request_body: user_options })
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
data/lib/pio/open_flow13/echo.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'pio/open_flow/echo'
|
2
|
-
|
3
|
-
# Base module.
|
4
|
-
module Pio
|
5
|
-
module OpenFlow13
|
6
|
-
module Echo
|
7
|
-
# OpenFlow 1.3 Echo Request message.
|
8
|
-
class Request < OpenFlow::Echo
|
9
|
-
version 4
|
10
|
-
message_type 2
|
11
|
-
end
|
12
|
-
|
13
|
-
# OpenFlow 1.3 Echo Reply message.
|
14
|
-
class Reply < OpenFlow::Echo
|
15
|
-
version 4
|
16
|
-
message_type 3
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|