pio 0.27.1 → 0.27.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|