pio 0.23.1 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +2 -0
  4. data/Rakefile +1 -1
  5. data/features/open_flow10/barrier_reply.feature +58 -0
  6. data/features/open_flow10/barrier_request.feature +58 -0
  7. data/features/open_flow10/echo_reply.feature +50 -40
  8. data/features/open_flow10/echo_request.feature +54 -51
  9. data/features/open_flow10/features_reply.feature +62 -63
  10. data/features/open_flow10/features_request.feature +2 -19
  11. data/features/open_flow10/flow_mod.feature +1 -0
  12. data/features/open_flow10/hello.feature +38 -44
  13. data/features/open_flow10/packet_in.feature +1 -2
  14. data/features/open_flow10/packet_in.raw +0 -0
  15. data/features/open_flow10/packet_out.feature +14 -14
  16. data/features/open_flow10/port_status.feature +17 -17
  17. data/features/open_flow13/apply_actions.feature +15 -17
  18. data/features/open_flow13/echo_reply.feature +58 -58
  19. data/features/open_flow13/echo_request.feature +58 -58
  20. data/features/open_flow13/features_reply.feature +2 -6
  21. data/features/open_flow13/features_request.feature +3 -23
  22. data/features/open_flow13/flow_mod.feature +86 -93
  23. data/features/open_flow13/goto_table.feature +4 -4
  24. data/features/open_flow13/hello.feature +8 -15
  25. data/features/open_flow13/match.feature +14 -3
  26. data/features/open_flow13/meter.feature +3 -3
  27. data/features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw +0 -0
  28. data/features/open_flow13/oxm_invalid_field.raw +0 -0
  29. data/features/open_flow13/packet_in.feature +15 -20
  30. data/features/open_flow13/packet_out.feature +39 -42
  31. data/features/open_flow13/send_out_port.feature +1 -5
  32. data/features/open_flow13/write_metadata.feature +3 -3
  33. data/features/open_flow_read.feature +43 -0
  34. data/features/open_flow_version.feature +10 -0
  35. data/features/step_definitions/open_flow_steps.rb +10 -2
  36. data/features/step_definitions/packet_data_steps.rb +4 -0
  37. data/features/support/hooks.rb +7 -0
  38. data/lib/pio.rb +1 -1
  39. data/lib/pio/monkey_patch/integer/ranges.rb +4 -0
  40. data/lib/pio/open_flow.rb +54 -16
  41. data/lib/pio/open_flow/datapath_id.rb +26 -0
  42. data/lib/pio/open_flow/echo.rb +44 -0
  43. data/lib/pio/open_flow/format.rb +45 -0
  44. data/lib/pio/open_flow/message.rb +88 -0
  45. data/lib/pio/open_flow/open_flow_header.rb +0 -14
  46. data/lib/pio/open_flow10.rb +3 -8
  47. data/lib/pio/open_flow10/actions.rb +1 -1
  48. data/lib/pio/open_flow10/barrier_reply.rb +21 -0
  49. data/lib/pio/open_flow10/barrier_request.rb +22 -0
  50. data/lib/pio/open_flow10/echo.rb +15 -11
  51. data/lib/pio/open_flow10/features.rb +99 -71
  52. data/lib/pio/open_flow10/flow_mod.rb +73 -66
  53. data/lib/pio/open_flow10/hello.rb +19 -4
  54. data/lib/pio/open_flow10/match.rb +133 -131
  55. data/lib/pio/open_flow10/packet_in.rb +55 -49
  56. data/lib/pio/open_flow10/packet_out.rb +31 -24
  57. data/lib/pio/open_flow10/port_status.rb +54 -27
  58. data/lib/pio/open_flow10/send_out_port.rb +66 -64
  59. data/lib/pio/open_flow13.rb +0 -15
  60. data/lib/pio/open_flow13/echo.rb +11 -68
  61. data/lib/pio/open_flow13/features_reply.rb +48 -77
  62. data/lib/pio/open_flow13/features_request.rb +16 -45
  63. data/lib/pio/open_flow13/flow_mod.rb +125 -148
  64. data/lib/pio/open_flow13/goto_table.rb +1 -0
  65. data/lib/pio/open_flow13/hello.rb +54 -84
  66. data/lib/pio/open_flow13/match.rb +69 -11
  67. data/lib/pio/open_flow13/meter.rb +1 -0
  68. data/lib/pio/open_flow13/packet_in.rb +38 -50
  69. data/lib/pio/open_flow13/packet_out.rb +50 -75
  70. data/lib/pio/open_flow13/send_out_port.rb +34 -34
  71. data/lib/pio/open_flow13/write_metadata.rb +1 -0
  72. data/lib/pio/parser.rb +3 -0
  73. data/lib/pio/version.rb +1 -1
  74. data/pio.gemspec +6 -6
  75. data/spec/pio/open_flow10/echo_reply_spec.rb +7 -0
  76. data/spec/pio/open_flow10/echo_request_spec.rb +7 -0
  77. data/spec/pio/open_flow10/features_reply_spec.rb +8 -0
  78. data/spec/pio/open_flow10/features_request_spec.rb +13 -0
  79. data/spec/pio/open_flow10/flow_mod_spec.rb +17 -16
  80. data/spec/pio/open_flow10/hello_spec.rb +7 -0
  81. data/spec/pio/open_flow10/match_spec.rb +8 -6
  82. data/spec/pio/open_flow10/packet_in_spec.rb +14 -0
  83. data/spec/pio/open_flow10/packet_out_spec.rb +21 -14
  84. data/spec/pio/open_flow10/send_out_port_spec.rb +4 -4
  85. data/spec/pio/open_flow10/wildcards_spec.rb +2 -2
  86. data/spec/pio/open_flow13/echo_reply_spec.rb +7 -0
  87. data/spec/pio/open_flow13/echo_request_spec.rb +7 -0
  88. data/spec/pio/open_flow13/features_reply_spec.rb +8 -0
  89. data/spec/pio/open_flow13/features_request_spec.rb +13 -0
  90. data/spec/pio/open_flow13/hello_spec.rb +14 -59
  91. data/spec/pio/open_flow13/packet_in_spec.rb +14 -0
  92. data/spec/pio/open_flow13/packet_out_spec.rb +7 -0
  93. data/spec/pio/open_flow_spec.rb +34 -0
  94. data/spec/spec_helper.rb +1 -0
  95. data/spec/support/shared_examples_for_openflow_messages.rb +75 -0
  96. metadata +215 -170
  97. data/bin/byebug +0 -16
  98. data/bin/terminal-notifier +0 -16
  99. data/lib/pio/open_flow10/message.rb +0 -78
  100. data/spec/pio/open_flow/type_spec.rb +0 -5
@@ -1,7 +1,7 @@
1
1
  require 'bindata'
2
2
  require 'pio/open_flow10/match'
3
3
 
4
- describe Pio::Match::Wildcards do
4
+ describe Pio::OpenFlow10::Match::Wildcards do
5
5
  # This class has wildcards field.
6
6
  class WildcardTest < BinData::Record
7
7
  wildcards :wildcards
@@ -62,7 +62,7 @@ describe Pio::Match::Wildcards do
62
62
  end
63
63
 
64
64
  describe '.read' do
65
- When(:wildcards) { Pio::Match::Wildcards.read(binary) }
65
+ When(:wildcards) { Pio::OpenFlow10::Match::Wildcards.read(binary) }
66
66
 
67
67
  context 'with all 0' do
68
68
  Given(:binary) { ['00000000000000000000000000000000'].pack('B*') }
@@ -0,0 +1,7 @@
1
+ require 'pio/open_flow13/echo'
2
+
3
+ describe Pio::OpenFlow13::Echo::Reply do
4
+ describe '.new' do
5
+ it_should_behave_like('an OpenFlow message', Pio::OpenFlow13::Echo::Reply)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'pio/open_flow13/echo'
2
+
3
+ describe Pio::OpenFlow13::Echo::Request do
4
+ describe '.new' do
5
+ it_should_behave_like('an OpenFlow message', Pio::OpenFlow13::Echo::Request)
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ require 'pio/open_flow13/features_reply'
2
+
3
+ describe Pio::OpenFlow13::Features::Reply do
4
+ describe '.new' do
5
+ it_should_behave_like('an OpenFlow message with Datapath ID',
6
+ Pio::OpenFlow13::Features::Reply)
7
+ end
8
+ end
@@ -0,0 +1,13 @@
1
+ require 'pio/open_flow13/features_request'
2
+
3
+ describe Pio::OpenFlow13::Features::Request do
4
+ describe '.new' do
5
+ it_should_behave_like('an OpenFlow message',
6
+ Pio::OpenFlow13::Features::Request)
7
+
8
+ context "with body: 'abcde'" do
9
+ When(:message) { Pio::OpenFlow13::Features::Request.new(body: 'abcde') }
10
+ Then { message == Failure(RuntimeError, 'Unknown option: body') }
11
+ end
12
+ end
13
+ end
@@ -1,13 +1,14 @@
1
1
  require 'pio/open_flow13/hello'
2
+ require 'pio/parse_error'
2
3
 
3
- describe Pio::Hello do
4
+ describe Pio::OpenFlow13::Hello do
4
5
  describe '.read' do
5
- When(:result) { Pio::Hello.read(binary) }
6
+ When(:result) { Pio::OpenFlow13::Hello.read(binary) }
6
7
 
7
8
  context 'with a hello message (no version bitmap)' do
8
9
  Given(:binary) { [4, 0, 0, 8, 0, 0, 0, 0].pack('C*') }
9
10
 
10
- Then { result.class == Pio::Hello }
11
+ Then { result.class == Pio::OpenFlow13::Hello }
11
12
  Then { result.ofp_version == 4 }
12
13
  Then { result.message_type == 0 }
13
14
  Then { result.message_length == 8 }
@@ -21,7 +22,7 @@ describe Pio::Hello do
21
22
  [4, 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 18].pack('C*')
22
23
  end
23
24
 
24
- Then { result.class == Pio::Hello }
25
+ Then { result.class == Pio::OpenFlow13::Hello }
25
26
  Then { result.ofp_version == 4 }
26
27
  Then { result.message_type == 0 }
27
28
  Then { result.message_length == 16 }
@@ -33,13 +34,17 @@ describe Pio::Hello do
33
34
  context 'with a hello message (OpenFlow 1.0)' do
34
35
  Given(:binary) { [1, 0, 0, 8, 0, 0, 0, 0].pack('C*') }
35
36
 
36
- Then { result == Failure(Pio::ParseError, 'Invalid Hello 1.3 message.') }
37
+ Then do
38
+ result == Failure(Pio::ParseError, 'Invalid OpenFlow13 Hello message.')
39
+ end
37
40
  end
38
41
  end
39
42
 
40
43
  describe '.new' do
44
+ it_should_behave_like('an OpenFlow message', Pio::OpenFlow13::Hello)
45
+
41
46
  context 'with no arguments' do
42
- When(:result) { Pio::Hello.new }
47
+ When(:result) { Pio::OpenFlow13::Hello.new }
43
48
 
44
49
  Then { result.ofp_version == 4 }
45
50
  Then { result.message_type == 0 }
@@ -53,61 +58,11 @@ describe Pio::Hello do
53
58
  end
54
59
  end
55
60
 
56
- context 'with transaction_id: 123' do
57
- When(:result) { Pio::Hello.new(transaction_id: 123) }
58
-
59
- Then { result.ofp_version == 4 }
60
- Then { result.message_type == 0 }
61
- Then { result.message_length == 16 }
62
- Then { result.transaction_id == 123 }
63
- Then { result.xid == 123 }
64
- Then { result.supported_versions == [:open_flow13] }
65
- Then do
66
- result.to_binary ==
67
- [4, 0, 0, 16, 0, 0, 0, 123, 0, 1, 0, 8, 0, 0, 0, 16].pack('C*')
68
- end
69
- end
70
-
71
- context 'with xid: 123' do
72
- When(:result) { Pio::Hello.new(xid: 123) }
73
-
74
- Then { result.ofp_version == 4 }
75
- Then { result.message_type == 0 }
76
- Then { result.message_length == 16 }
77
- Then { result.transaction_id == 123 }
78
- Then { result.xid == 123 }
79
- Then { result.supported_versions == [:open_flow13] }
80
- Then do
81
- result.to_binary ==
82
- [4, 0, 0, 16, 0, 0, 0, 123, 0, 1, 0, 8, 0, 0, 0, 16].pack('C*')
83
- end
84
- end
85
-
86
- context 'with xid: -1' do
87
- When(:result) { Pio::Hello.new(xid: -1) }
88
-
89
- Then do
90
- result ==
91
- Failure(ArgumentError,
92
- 'Transaction ID should be an unsigned 32-bit integer.')
93
- end
94
- end
95
-
96
- context 'with xid: 2**32' do
97
- When(:result) { Pio::Hello.new(xid: 2**32) }
98
-
99
- Then do
100
- result ==
101
- Failure(ArgumentError,
102
- 'Transaction ID should be an unsigned 32-bit integer.')
103
- end
104
- end
105
-
106
- context 'with invalid_keyword: :foo' do
107
- When(:result) { Pio::Hello.new(invalid_keyword: :foo) }
61
+ context 'with invalid_option: :foo' do
62
+ When(:result) { Pio::OpenFlow13::Hello.new(invalid_option: :foo) }
108
63
 
109
64
  Then do
110
- result == Failure(RuntimeError, 'Unknown keyword: invalid_keyword')
65
+ result == Failure(RuntimeError, 'Unknown option: invalid_option')
111
66
  end
112
67
  end
113
68
  end
@@ -0,0 +1,14 @@
1
+ require 'pio/open_flow13/packet_in'
2
+
3
+ describe Pio::OpenFlow13::PacketIn do
4
+ Given(:packet_in) { Pio::OpenFlow13::PacketIn.new }
5
+
6
+ describe '.new' do
7
+ it_should_behave_like('an OpenFlow message', Pio::OpenFlow13::PacketIn)
8
+ end
9
+
10
+ describe 'datapath_id=' do
11
+ When { packet_in.datapath_id = 1 }
12
+ Then { packet_in.datapath_id == 1 }
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ require 'pio/open_flow13/packet_out'
2
+
3
+ describe Pio::OpenFlow13::PacketOut do
4
+ describe '.new' do
5
+ it_should_behave_like('an OpenFlow message', Pio::OpenFlow13::PacketOut)
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ require 'pio/open_flow'
2
+
3
+ describe Pio::OpenFlow do
4
+ describe 'switch_version' do
5
+ When(:error) { Pio::OpenFlow.switch_version(version) }
6
+
7
+ context 'with :OpenFlow10' do
8
+ Given(:version) { :OpenFlow10 }
9
+ Then { Pio::OpenFlow.version == 'OpenFlow10' }
10
+ end
11
+
12
+ context 'with "OpenFlow10"' do
13
+ Given(:version) { 'OpenFlow10' }
14
+ Then { Pio::OpenFlow.version == 'OpenFlow10' }
15
+ end
16
+
17
+ context 'with :OpenFlow13' do
18
+ Given(:version) { :OpenFlow13 }
19
+ Then { Pio::OpenFlow.version == 'OpenFlow13' }
20
+ end
21
+
22
+ context 'with "OpenFlow13"' do
23
+ Given(:version) { 'OpenFlow13' }
24
+ Then { Pio::OpenFlow.version == 'OpenFlow13' }
25
+ end
26
+
27
+ context 'with :OpenFlow100' do
28
+ Given(:version) { :OpenFlow100 }
29
+ Then do
30
+ error == Failure(RuntimeError, 'OpenFlow100 is not supported yet.')
31
+ end
32
+ end
33
+ end
34
+ end
@@ -12,3 +12,4 @@ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[*formatters]
12
12
  SimpleCov.start { add_filter '/vendor/' }
13
13
 
14
14
  require 'rspec/given'
15
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
@@ -0,0 +1,75 @@
1
+ shared_examples 'an OpenFlow message' do |klass|
2
+ When(:message) { klass.new(options) }
3
+
4
+ context 'with transaction_id: 123' do
5
+ Given(:options) { { transaction_id: 123 } }
6
+
7
+ Then { message.transaction_id == 123 }
8
+ Then { message.xid == 123 }
9
+ end
10
+
11
+ context 'with xid: 123' do
12
+ When(:options) { { xid: 123 } }
13
+
14
+ Then { message.transaction_id == 123 }
15
+ Then { message.xid == 123 }
16
+ end
17
+
18
+ context 'with xid: -1' do
19
+ When(:options) { { xid: -1 } }
20
+
21
+ Then do
22
+ message ==
23
+ Failure(ArgumentError,
24
+ 'Transaction ID should be an unsigned 32-bit integer.')
25
+ end
26
+ end
27
+
28
+ context 'with xid: 2**32' do
29
+ When(:options) { { xid: 2**32 } }
30
+
31
+ Then do
32
+ message ==
33
+ Failure(ArgumentError,
34
+ 'Transaction ID should be an unsigned 32-bit integer.')
35
+ end
36
+ end
37
+
38
+ context 'with UNKNOWN_OPTION: :UNKNOWN_VALUE' do
39
+ When(:options) { { UNKNOWN_OPTION: :UNKNOWN_VALUE } }
40
+
41
+ Then do
42
+ message == Failure(RuntimeError, 'Unknown option: UNKNOWN_OPTION')
43
+ end
44
+ end
45
+ end
46
+
47
+ shared_examples 'an OpenFlow message with Datapath ID' do |klass|
48
+ When(:message) { klass.new(options) }
49
+
50
+ context 'with { datapath_id: -1 }' do
51
+ Given(:options) { { datapath_id: -1 } }
52
+ Then do
53
+ message == Failure(ArgumentError,
54
+ 'Datapath ID should be an unsigned 64-bit integer.')
55
+ end
56
+ end
57
+
58
+ context 'with { datapath_id: 0 }' do
59
+ Given(:options) { { datapath_id: 0 } }
60
+ Then { message.datapath_id == 0 }
61
+ end
62
+
63
+ context 'with { datapath_id: 2**64 - 1 }' do
64
+ Given(:options) { { datapath_id: 2**64 - 1 } }
65
+ Then { message.datapath_id == 2**64 - 1 }
66
+ end
67
+
68
+ context 'with { datapath_id: 2**64 }' do
69
+ Given(:options) { { datapath_id: 2**64 } }
70
+ Then do
71
+ message == Failure(ArgumentError,
72
+ 'Datapath ID should be an unsigned 64-bit integer.')
73
+ end
74
+ end
75
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.1
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yasuhito Takamiya
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-30 00:00:00.000000000 Z
11
+ date: 2015-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 1.10.5
47
+ version: 1.10.6
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 1.10.5
54
+ version: 1.10.6
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: 2.12.6
75
+ version: 2.13.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: 2.12.6
82
+ version: 2.13.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-bundler
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 4.5.2
117
+ version: 4.6.3
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: 4.5.2
124
+ version: 4.6.3
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: guard-rubocop
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -268,14 +268,14 @@ dependencies:
268
268
  requirements:
269
269
  - - ~>
270
270
  - !ruby/object:Gem::Version
271
- version: 2.0.0
271
+ version: 2.0.2
272
272
  type: :development
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - ~>
277
277
  - !ruby/object:Gem::Version
278
- version: 2.0.0
278
+ version: 2.0.2
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: flay
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -310,14 +310,14 @@ dependencies:
310
310
  requirements:
311
311
  - - ~>
312
312
  - !ruby/object:Gem::Version
313
- version: 2.2.1
313
+ version: '3.1'
314
314
  type: :development
315
315
  prerelease: false
316
316
  version_requirements: !ruby/object:Gem::Requirement
317
317
  requirements:
318
318
  - - ~>
319
319
  - !ruby/object:Gem::Version
320
- version: 2.2.1
320
+ version: '3.1'
321
321
  - !ruby/object:Gem::Dependency
322
322
  name: rspec
323
323
  requirement: !ruby/object:Gem::Requirement
@@ -338,14 +338,14 @@ dependencies:
338
338
  requirements:
339
339
  - - ~>
340
340
  - !ruby/object:Gem::Version
341
- version: 3.7.0
341
+ version: 3.7.1
342
342
  type: :development
343
343
  prerelease: false
344
344
  version_requirements: !ruby/object:Gem::Requirement
345
345
  requirements:
346
346
  - - ~>
347
347
  - !ruby/object:Gem::Version
348
- version: 3.7.0
348
+ version: 3.7.1
349
349
  - !ruby/object:Gem::Dependency
350
350
  name: rubocop
351
351
  requirement: !ruby/object:Gem::Requirement
@@ -377,7 +377,6 @@ files:
377
377
  - README.md
378
378
  - Rakefile
379
379
  - bin/_guard-core
380
- - bin/byebug
381
380
  - bin/cc-tddium-post-worker
382
381
  - bin/cdiff
383
382
  - bin/coderay
@@ -407,7 +406,6 @@ files:
407
406
  - bin/sparkr
408
407
  - bin/term_display
409
408
  - bin/term_mandel
410
- - bin/terminal-notifier
411
409
  - bin/thor
412
410
  - bin/unparser
413
411
  - bin/yard
@@ -425,7 +423,9 @@ files:
425
423
  - features/lldp.minimal.pcap
426
424
  - features/open_flow10/aggregate_stats_reply.raw
427
425
  - features/open_flow10/aggregate_stats_request.raw
426
+ - features/open_flow10/barrier_reply.feature
428
427
  - features/open_flow10/barrier_reply.raw
428
+ - features/open_flow10/barrier_request.feature
429
429
  - features/open_flow10/barrier_request.raw
430
430
  - features/open_flow10/desc_stats_reply.raw
431
431
  - features/open_flow10/desc_stats_request.raw
@@ -453,6 +453,7 @@ files:
453
453
  - features/open_flow10/hello.feature
454
454
  - features/open_flow10/hello.raw
455
455
  - features/open_flow10/packet_in.feature
456
+ - features/open_flow10/packet_in.raw
456
457
  - features/open_flow10/packet_in_arp_request.raw
457
458
  - features/open_flow10/packet_in_cbench.raw
458
459
  - features/open_flow10/packet_out.feature
@@ -519,10 +520,12 @@ files:
519
520
  - features/open_flow13/oxm_ether_destination_field.raw
520
521
  - features/open_flow13/oxm_ether_source_field.raw
521
522
  - features/open_flow13/oxm_ether_type_field.raw
523
+ - features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw
522
524
  - features/open_flow13/oxm_icmpv4_code_field.raw
523
525
  - features/open_flow13/oxm_icmpv4_type_field.raw
524
526
  - features/open_flow13/oxm_in_phy_port_field.raw
525
527
  - features/open_flow13/oxm_in_port_field.raw
528
+ - features/open_flow13/oxm_invalid_field.raw
526
529
  - features/open_flow13/oxm_ip_dscp_field.raw
527
530
  - features/open_flow13/oxm_ip_ecn_field.raw
528
531
  - features/open_flow13/oxm_ipv4_destination_field.raw
@@ -561,9 +564,12 @@ files:
561
564
  - features/open_flow13/send_out_port.feature
562
565
  - features/open_flow13/send_out_port.raw
563
566
  - features/open_flow13/write_metadata.feature
567
+ - features/open_flow_read.feature
568
+ - features/open_flow_version.feature
564
569
  - features/step_definitions/open_flow_steps.rb
565
570
  - features/step_definitions/packet_data_steps.rb
566
571
  - features/support/env.rb
572
+ - features/support/hooks.rb
567
573
  - features/udp.feature
568
574
  - features/udp_no_payload.raw
569
575
  - features/udp_with_payload.raw
@@ -620,13 +626,19 @@ files:
620
626
  - lib/pio/monkey_patch/integer/base_conversions.rb
621
627
  - lib/pio/monkey_patch/integer/ranges.rb
622
628
  - lib/pio/open_flow.rb
629
+ - lib/pio/open_flow/datapath_id.rb
630
+ - lib/pio/open_flow/echo.rb
623
631
  - lib/pio/open_flow/flags.rb
632
+ - lib/pio/open_flow/format.rb
633
+ - lib/pio/open_flow/message.rb
624
634
  - lib/pio/open_flow/open_flow_header.rb
625
635
  - lib/pio/open_flow/phy_port.rb
626
636
  - lib/pio/open_flow/port_number.rb
627
637
  - lib/pio/open_flow/transaction_id.rb
628
638
  - lib/pio/open_flow10.rb
629
639
  - lib/pio/open_flow10/actions.rb
640
+ - lib/pio/open_flow10/barrier_reply.rb
641
+ - lib/pio/open_flow10/barrier_request.rb
630
642
  - lib/pio/open_flow10/echo.rb
631
643
  - lib/pio/open_flow10/enqueue.rb
632
644
  - lib/pio/open_flow10/exact_match.rb
@@ -634,7 +646,6 @@ files:
634
646
  - lib/pio/open_flow10/flow_mod.rb
635
647
  - lib/pio/open_flow10/hello.rb
636
648
  - lib/pio/open_flow10/match.rb
637
- - lib/pio/open_flow10/message.rb
638
649
  - lib/pio/open_flow10/packet_in.rb
639
650
  - lib/pio/open_flow10/packet_out.rb
640
651
  - lib/pio/open_flow10/port_status.rb
@@ -692,10 +703,15 @@ files:
692
703
  - spec/pio/lldp/options_spec.rb
693
704
  - spec/pio/mac_spec.rb
694
705
  - spec/pio/open_flow/phy_port_spec.rb
695
- - spec/pio/open_flow/type_spec.rb
706
+ - spec/pio/open_flow10/echo_reply_spec.rb
707
+ - spec/pio/open_flow10/echo_request_spec.rb
696
708
  - spec/pio/open_flow10/enqueue_spec.rb
709
+ - spec/pio/open_flow10/features_reply_spec.rb
710
+ - spec/pio/open_flow10/features_request_spec.rb
697
711
  - spec/pio/open_flow10/flow_mod_spec.rb
712
+ - spec/pio/open_flow10/hello_spec.rb
698
713
  - spec/pio/open_flow10/match_spec.rb
714
+ - spec/pio/open_flow10/packet_in_spec.rb
699
715
  - spec/pio/open_flow10/packet_out_spec.rb
700
716
  - spec/pio/open_flow10/send_out_port_spec.rb
701
717
  - spec/pio/open_flow10/set_ether_destination_address_spec.rb
@@ -709,12 +725,20 @@ files:
709
725
  - spec/pio/open_flow10/set_vlan_vid_spec.rb
710
726
  - spec/pio/open_flow10/strip_vlan_header_spec.rb
711
727
  - spec/pio/open_flow10/wildcards_spec.rb
728
+ - spec/pio/open_flow13/echo_reply_spec.rb
729
+ - spec/pio/open_flow13/echo_request_spec.rb
730
+ - spec/pio/open_flow13/features_reply_spec.rb
731
+ - spec/pio/open_flow13/features_request_spec.rb
712
732
  - spec/pio/open_flow13/goto_table_spec.rb
713
733
  - spec/pio/open_flow13/hello_spec.rb
714
734
  - spec/pio/open_flow13/match_spec.rb
715
735
  - spec/pio/open_flow13/meter_spec.rb
736
+ - spec/pio/open_flow13/packet_in_spec.rb
737
+ - spec/pio/open_flow13/packet_out_spec.rb
716
738
  - spec/pio/open_flow13/write_metadata_spec.rb
739
+ - spec/pio/open_flow_spec.rb
717
740
  - spec/spec_helper.rb
741
+ - spec/support/shared_examples_for_openflow_messages.rb
718
742
  homepage: http://github.com/trema/pio
719
743
  licenses:
720
744
  - GPL3
@@ -735,203 +759,224 @@ required_rubygems_version: !ruby/object:Gem::Requirement
735
759
  version: '0'
736
760
  requirements: []
737
761
  rubyforge_project:
738
- rubygems_version: 2.4.6
762
+ rubygems_version: 2.4.7
739
763
  signing_key:
740
764
  specification_version: 4
741
765
  summary: Packet parser and generator.
742
766
  test_files:
743
- - spec/pio/arp/reply/options_spec.rb
744
- - spec/pio/arp/reply_spec.rb
745
- - spec/pio/arp/request/options_spec.rb
746
- - spec/pio/arp/request_spec.rb
747
- - spec/pio/arp_spec.rb
748
- - spec/pio/dhcp/ack_spec.rb
749
- - spec/pio/dhcp/discover_spec.rb
750
- - spec/pio/dhcp/offer_spec.rb
751
- - spec/pio/dhcp/request_spec.rb
752
- - spec/pio/dhcp_spec.rb
753
- - spec/pio/icmp/reply_spec.rb
754
- - spec/pio/icmp/request_spec.rb
755
- - spec/pio/icmp_spec.rb
767
+ - spec/support/shared_examples_for_openflow_messages.rb
756
768
  - spec/pio/ipv4_address_spec.rb
757
- - spec/pio/lldp/options_spec.rb
758
- - spec/pio/mac_spec.rb
759
769
  - spec/pio/open_flow/phy_port_spec.rb
760
- - spec/pio/open_flow/type_spec.rb
770
+ - spec/pio/dhcp/request_spec.rb
771
+ - spec/pio/dhcp/offer_spec.rb
772
+ - spec/pio/dhcp/ack_spec.rb
773
+ - spec/pio/dhcp/discover_spec.rb
774
+ - spec/pio/open_flow10/set_vlan_vid_spec.rb
775
+ - spec/pio/open_flow10/features_request_spec.rb
776
+ - spec/pio/open_flow10/echo_request_spec.rb
777
+ - spec/pio/open_flow10/strip_vlan_header_spec.rb
778
+ - spec/pio/open_flow10/set_transport_destination_port_spec.rb
779
+ - spec/pio/open_flow10/features_reply_spec.rb
780
+ - spec/pio/open_flow10/echo_reply_spec.rb
761
781
  - spec/pio/open_flow10/enqueue_spec.rb
782
+ - spec/pio/open_flow10/hello_spec.rb
783
+ - spec/pio/open_flow10/set_ether_destination_address_spec.rb
762
784
  - spec/pio/open_flow10/flow_mod_spec.rb
763
- - spec/pio/open_flow10/match_spec.rb
764
- - spec/pio/open_flow10/packet_out_spec.rb
785
+ - spec/pio/open_flow10/set_vlan_priority_spec.rb
786
+ - spec/pio/open_flow10/wildcards_spec.rb
787
+ - spec/pio/open_flow10/set_ip_tos_spec.rb
765
788
  - spec/pio/open_flow10/send_out_port_spec.rb
766
- - spec/pio/open_flow10/set_ether_destination_address_spec.rb
767
789
  - spec/pio/open_flow10/set_ether_source_address_spec.rb
768
790
  - spec/pio/open_flow10/set_ip_destination_address_spec.rb
769
- - spec/pio/open_flow10/set_ip_source_address_spec.rb
770
- - spec/pio/open_flow10/set_ip_tos_spec.rb
771
- - spec/pio/open_flow10/set_transport_destination_port_spec.rb
791
+ - spec/pio/open_flow10/packet_in_spec.rb
772
792
  - spec/pio/open_flow10/set_transport_source_port_spec.rb
773
- - spec/pio/open_flow10/set_vlan_priority_spec.rb
774
- - spec/pio/open_flow10/set_vlan_vid_spec.rb
775
- - spec/pio/open_flow10/strip_vlan_header_spec.rb
776
- - spec/pio/open_flow10/wildcards_spec.rb
777
- - spec/pio/open_flow13/goto_table_spec.rb
793
+ - spec/pio/open_flow10/set_ip_source_address_spec.rb
794
+ - spec/pio/open_flow10/match_spec.rb
795
+ - spec/pio/open_flow10/packet_out_spec.rb
796
+ - spec/pio/arp/request_spec.rb
797
+ - spec/pio/arp/reply/options_spec.rb
798
+ - spec/pio/arp/request/options_spec.rb
799
+ - spec/pio/arp/reply_spec.rb
800
+ - spec/pio/lldp/options_spec.rb
801
+ - spec/pio/open_flow13/features_request_spec.rb
802
+ - spec/pio/open_flow13/echo_request_spec.rb
803
+ - spec/pio/open_flow13/features_reply_spec.rb
804
+ - spec/pio/open_flow13/echo_reply_spec.rb
778
805
  - spec/pio/open_flow13/hello_spec.rb
779
- - spec/pio/open_flow13/match_spec.rb
780
806
  - spec/pio/open_flow13/meter_spec.rb
781
807
  - spec/pio/open_flow13/write_metadata_spec.rb
808
+ - spec/pio/open_flow13/goto_table_spec.rb
809
+ - spec/pio/open_flow13/packet_in_spec.rb
810
+ - spec/pio/open_flow13/match_spec.rb
811
+ - spec/pio/open_flow13/packet_out_spec.rb
812
+ - spec/pio/mac_spec.rb
813
+ - spec/pio/icmp/request_spec.rb
814
+ - spec/pio/icmp/reply_spec.rb
815
+ - spec/pio/icmp_spec.rb
816
+ - spec/pio/open_flow_spec.rb
817
+ - spec/pio/dhcp_spec.rb
818
+ - spec/pio/arp_spec.rb
782
819
  - spec/spec_helper.rb
783
- - features/arp-storm.pcap
784
- - features/arp.feature
785
- - features/arp.pcap
786
- - features/dhcp.feature
787
820
  - features/dhcp.pcap
788
- - features/icmp.feature
789
- - features/icmp.pcap
790
- - features/lldp.detailed.pcap
821
+ - features/udp_with_payload.raw
822
+ - features/dhcp.feature
791
823
  - features/lldp.feature
792
- - features/lldp.minimal.pcap
793
- - features/open_flow10/aggregate_stats_reply.raw
794
- - features/open_flow10/aggregate_stats_request.raw
795
- - features/open_flow10/barrier_reply.raw
796
- - features/open_flow10/barrier_request.raw
824
+ - features/arp.feature
825
+ - features/udp.feature
826
+ - features/support/hooks.rb
827
+ - features/support/env.rb
828
+ - features/arp.pcap
797
829
  - features/open_flow10/desc_stats_reply.raw
798
- - features/open_flow10/desc_stats_request.raw
799
- - features/open_flow10/echo_reply.feature
800
830
  - features/open_flow10/echo_reply.raw
801
- - features/open_flow10/echo_request.feature
802
- - features/open_flow10/echo_request.raw
803
- - features/open_flow10/error.raw
804
- - features/open_flow10/exact_match.feature
805
- - features/open_flow10/features_reply.feature
831
+ - features/open_flow10/packet_in.feature
832
+ - features/open_flow10/flow_mod_modify_strict.raw
833
+ - features/open_flow10/flow_mod_add.raw
806
834
  - features/open_flow10/features_reply.raw
807
835
  - features/open_flow10/features_request.feature
836
+ - features/open_flow10/packet_in.raw
837
+ - features/open_flow10/aggregate_stats_reply.raw
838
+ - features/open_flow10/queue_get_config_reply.raw
839
+ - features/open_flow10/echo_request.feature
808
840
  - features/open_flow10/features_request.raw
809
- - features/open_flow10/flow_mod.feature
810
- - features/open_flow10/flow_mod_add.raw
811
- - features/open_flow10/flow_mod_delete.raw
812
- - features/open_flow10/flow_mod_delete_strict.raw
813
- - features/open_flow10/flow_mod_modify.raw
814
- - features/open_flow10/flow_mod_modify_strict.raw
815
- - features/open_flow10/flow_removed.raw
816
- - features/open_flow10/flow_stats_reply.raw
841
+ - features/open_flow10/barrier_reply.feature
817
842
  - features/open_flow10/flow_stats_request.raw
818
- - features/open_flow10/get_config_reply.raw
819
- - features/open_flow10/get_config_request.raw
820
- - features/open_flow10/hello.feature
821
- - features/open_flow10/hello.raw
822
- - features/open_flow10/packet_in.feature
823
843
  - features/open_flow10/packet_in_arp_request.raw
824
- - features/open_flow10/packet_in_cbench.raw
825
- - features/open_flow10/packet_out.feature
826
- - features/open_flow10/packet_out.raw
844
+ - features/open_flow10/port_stats_request.raw
845
+ - features/open_flow10/flow_mod_delete_strict.raw
846
+ - features/open_flow10/barrier_reply.raw
847
+ - features/open_flow10/get_config_request.raw
848
+ - features/open_flow10/vendor.raw
827
849
  - features/open_flow10/port_mod.raw
850
+ - features/open_flow10/get_config_reply.raw
851
+ - features/open_flow10/exact_match.feature
852
+ - features/open_flow10/features_reply.feature
853
+ - features/open_flow10/hello.raw
854
+ - features/open_flow10/flow_removed.raw
855
+ - features/open_flow10/set_config.raw
828
856
  - features/open_flow10/port_stats_reply.raw
829
- - features/open_flow10/port_stats_request.raw
857
+ - features/open_flow10/packet_out.raw
858
+ - features/open_flow10/table_stats_reply.raw
830
859
  - features/open_flow10/port_status.feature
831
- - features/open_flow10/port_status.raw
832
- - features/open_flow10/queue_get_config_reply.raw
860
+ - features/open_flow10/barrier_request.feature
861
+ - features/open_flow10/packet_in_cbench.raw
833
862
  - features/open_flow10/queue_get_config_request.raw
834
- - features/open_flow10/set_config.raw
835
- - features/open_flow10/table_stats_reply.raw
836
- - features/open_flow10/table_stats_request.raw
837
- - features/open_flow10/vendor.raw
863
+ - features/open_flow10/error.raw
838
864
  - features/open_flow10/vendor_stats_request.raw
839
- - features/open_flow13/action_copy_ttl_in.raw
840
- - features/open_flow13/action_copy_ttl_out.raw
865
+ - features/open_flow10/flow_mod.feature
866
+ - features/open_flow10/packet_out.feature
867
+ - features/open_flow10/echo_reply.feature
868
+ - features/open_flow10/flow_stats_reply.raw
869
+ - features/open_flow10/desc_stats_request.raw
870
+ - features/open_flow10/hello.feature
871
+ - features/open_flow10/barrier_request.raw
872
+ - features/open_flow10/table_stats_request.raw
873
+ - features/open_flow10/port_status.raw
874
+ - features/open_flow10/flow_mod_modify.raw
875
+ - features/open_flow10/flow_mod_delete.raw
876
+ - features/open_flow10/aggregate_stats_request.raw
877
+ - features/open_flow10/echo_request.raw
878
+ - features/lldp.minimal.pcap
879
+ - features/open_flow_read.feature
841
880
  - features/open_flow13/action_dec_mpls_ttl.raw
842
- - features/open_flow13/action_dec_nw_ttl.raw
843
- - features/open_flow13/action_group.raw
844
- - features/open_flow13/action_pop_mpls.raw
845
- - features/open_flow13/action_pop_pbb.raw
846
- - features/open_flow13/action_pop_vlan.raw
847
- - features/open_flow13/action_push_mpls.raw
848
- - features/open_flow13/action_push_pbb.raw
849
- - features/open_flow13/action_push_vlan.raw
850
- - features/open_flow13/action_set_field.raw
851
- - features/open_flow13/action_set_mpls_ttl.raw
852
- - features/open_flow13/action_set_nw_ttl.raw
853
- - features/open_flow13/action_set_queue.raw
854
- - features/open_flow13/apply_actions.feature
855
- - features/open_flow13/apply_actions.raw
856
- - features/open_flow13/echo_reply.feature
857
- - features/open_flow13/echo_reply_body.raw
858
- - features/open_flow13/echo_reply_no_body.raw
859
- - features/open_flow13/echo_request.feature
881
+ - features/open_flow13/oxm_sctp_destination_field.raw
860
882
  - features/open_flow13/echo_request_body.raw
861
- - features/open_flow13/echo_request_no_body.raw
862
- - features/open_flow13/features_reply.feature
863
- - features/open_flow13/features_reply.raw
864
- - features/open_flow13/features_request.feature
865
- - features/open_flow13/features_request.raw
866
- - features/open_flow13/flow_add_apply_no_match.raw
867
- - features/open_flow13/flow_mod.feature
868
- - features/open_flow13/flow_mod_add_apply_no_match.raw
869
- - features/open_flow13/flow_mod_no_match_or_instructions.raw
883
+ - features/open_flow13/oxm_tunnel_id_field.raw
884
+ - features/open_flow13/send_out_port.raw
885
+ - features/open_flow13/oxm_ip_ecn_field.raw
886
+ - features/open_flow13/packet_in.feature
887
+ - features/open_flow13/oxm_no_fields.raw
870
888
  - features/open_flow13/goto_table.feature
871
- - features/open_flow13/hello.feature
872
- - features/open_flow13/hello_no_version_bitmap.raw
889
+ - features/open_flow13/oxm_ipv4_source_field.raw
890
+ - features/open_flow13/send_out_port.feature
873
891
  - features/open_flow13/hello_version_bitmap.raw
874
- - features/open_flow13/instruction_clear_actions.raw
875
- - features/open_flow13/instruction_goto_table.raw
876
- - features/open_flow13/instruction_meter.raw
877
- - features/open_flow13/instruction_write_actions.raw
892
+ - features/open_flow13/flow_mod_no_match_or_instructions.raw
893
+ - features/open_flow13/echo_reply_body.raw
894
+ - features/open_flow13/features_reply.raw
895
+ - features/open_flow13/features_request.feature
896
+ - features/open_flow13/action_pop_pbb.raw
897
+ - features/open_flow13/action_copy_ttl_in.raw
898
+ - features/open_flow13/packet_in.raw
899
+ - features/open_flow13/oxm_masked_ether_destination_field.raw
900
+ - features/open_flow13/oxm_vlan_pcp_field.raw
878
901
  - features/open_flow13/instruction_write_metadata.raw
879
- - features/open_flow13/match.feature
902
+ - features/open_flow13/oxm_masked_arp_tha_field.raw
880
903
  - features/open_flow13/meter.feature
881
- - features/open_flow13/oxm_arp_op_field.raw
882
- - features/open_flow13/oxm_arp_sha_field.raw
883
- - features/open_flow13/oxm_arp_spa_field.raw
904
+ - features/open_flow13/oxm_tcp_source_field.raw
905
+ - features/open_flow13/oxm_ipv6_destination_field.raw
906
+ - features/open_flow13/action_set_field.raw
907
+ - features/open_flow13/action_push_mpls.raw
908
+ - features/open_flow13/oxm_masked_tunnel_id_field.raw
909
+ - features/open_flow13/instruction_goto_table.raw
910
+ - features/open_flow13/echo_request.feature
911
+ - features/open_flow13/features_request.raw
912
+ - features/open_flow13/oxm_masked_ipv6_destination_field.raw
913
+ - features/open_flow13/apply_actions.raw
914
+ - features/open_flow13/action_set_queue.raw
884
915
  - features/open_flow13/oxm_arp_tha_field.raw
885
- - features/open_flow13/oxm_arp_tpa_field.raw
886
- - features/open_flow13/oxm_ether_destination_field.raw
887
- - features/open_flow13/oxm_ether_source_field.raw
888
- - features/open_flow13/oxm_ether_type_field.raw
889
- - features/open_flow13/oxm_icmpv4_code_field.raw
890
- - features/open_flow13/oxm_icmpv4_type_field.raw
891
- - features/open_flow13/oxm_in_phy_port_field.raw
892
- - features/open_flow13/oxm_in_port_field.raw
916
+ - features/open_flow13/oxm_udp_field.raw
917
+ - features/open_flow13/flow_add_apply_no_match.raw
918
+ - features/open_flow13/action_push_vlan.raw
893
919
  - features/open_flow13/oxm_ip_dscp_field.raw
894
- - features/open_flow13/oxm_ip_ecn_field.raw
895
- - features/open_flow13/oxm_ipv4_destination_field.raw
896
- - features/open_flow13/oxm_ipv4_source_field.raw
897
- - features/open_flow13/oxm_ipv6_destination_field.raw
898
- - features/open_flow13/oxm_ipv6_source_field.raw
899
- - features/open_flow13/oxm_masked_arp_sha_field.raw
900
- - features/open_flow13/oxm_masked_arp_spa_field.raw
901
- - features/open_flow13/oxm_masked_arp_tha_field.raw
902
- - features/open_flow13/oxm_masked_arp_tpa_field.raw
903
- - features/open_flow13/oxm_masked_ether_destination_field.raw
920
+ - features/open_flow13/oxm_sctp_source_field.raw
921
+ - features/open_flow13/features_reply.feature
922
+ - features/open_flow13/instruction_write_actions.raw
923
+ - features/open_flow13/instruction_meter.raw
904
924
  - features/open_flow13/oxm_masked_ether_source_field.raw
905
- - features/open_flow13/oxm_masked_ipv4_destination_field.raw
925
+ - features/open_flow13/action_set_mpls_ttl.raw
926
+ - features/open_flow13/oxm_in_port_field.raw
927
+ - features/open_flow13/write_metadata.feature
928
+ - features/open_flow13/oxm_tcp_field.raw
929
+ - features/open_flow13/action_pop_vlan.raw
930
+ - features/open_flow13/action_dec_nw_ttl.raw
931
+ - features/open_flow13/flow_mod_add_apply_no_match.raw
932
+ - features/open_flow13/oxm_arp_spa_field.raw
933
+ - features/open_flow13/oxm_in_phy_port_field.raw
934
+ - features/open_flow13/oxm_icmpv4_type_field.raw
935
+ - features/open_flow13/oxm_ether_type_field.raw
936
+ - features/open_flow13/echo_reply_no_body.raw
937
+ - features/open_flow13/oxm_tcp_destination_field.raw
938
+ - features/open_flow13/packet_out.raw
906
939
  - features/open_flow13/oxm_masked_ipv4_source_field.raw
907
- - features/open_flow13/oxm_masked_ipv6_destination_field.raw
940
+ - features/open_flow13/oxm_arp_sha_field.raw
941
+ - features/open_flow13/match.feature
942
+ - features/open_flow13/oxm_udp_source_field.raw
943
+ - features/open_flow13/echo_request_no_body.raw
908
944
  - features/open_flow13/oxm_masked_ipv6_source_field.raw
909
- - features/open_flow13/oxm_masked_tunnel_id_field.raw
945
+ - features/open_flow13/action_group.raw
946
+ - features/open_flow13/oxm_ipv6_source_field.raw
947
+ - features/open_flow13/action_set_nw_ttl.raw
948
+ - features/open_flow13/action_copy_ttl_out.raw
949
+ - features/open_flow13/instruction_clear_actions.raw
950
+ - features/open_flow13/oxm_masked_ipv4_destination_field.raw
951
+ - features/open_flow13/flow_mod.feature
952
+ - features/open_flow13/packet_out.feature
953
+ - features/open_flow13/echo_reply.feature
910
954
  - features/open_flow13/oxm_metadata_field.raw
955
+ - features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw
956
+ - features/open_flow13/oxm_arp_tpa_field.raw
957
+ - features/open_flow13/oxm_masked_arp_tpa_field.raw
958
+ - features/open_flow13/oxm_masked_arp_spa_field.raw
911
959
  - features/open_flow13/oxm_metadata_masked_field.raw
912
- - features/open_flow13/oxm_no_fields.raw
913
- - features/open_flow13/oxm_sctp_destination_field.raw
914
- - features/open_flow13/oxm_sctp_source_field.raw
915
- - features/open_flow13/oxm_tcp_destination_field.raw
916
- - features/open_flow13/oxm_tcp_field.raw
917
- - features/open_flow13/oxm_tcp_source_field.raw
918
- - features/open_flow13/oxm_tunnel_id_field.raw
960
+ - features/open_flow13/apply_actions.feature
961
+ - features/open_flow13/oxm_ipv4_destination_field.raw
919
962
  - features/open_flow13/oxm_udp_destination_field.raw
920
- - features/open_flow13/oxm_udp_field.raw
921
- - features/open_flow13/oxm_udp_source_field.raw
922
- - features/open_flow13/oxm_vlan_pcp_field.raw
963
+ - features/open_flow13/hello.feature
964
+ - features/open_flow13/action_pop_mpls.raw
965
+ - features/open_flow13/oxm_ether_source_field.raw
966
+ - features/open_flow13/hello_no_version_bitmap.raw
967
+ - features/open_flow13/oxm_ether_destination_field.raw
968
+ - features/open_flow13/oxm_invalid_field.raw
969
+ - features/open_flow13/oxm_arp_op_field.raw
970
+ - features/open_flow13/oxm_masked_arp_sha_field.raw
971
+ - features/open_flow13/oxm_icmpv4_code_field.raw
923
972
  - features/open_flow13/oxm_vlan_vid_field.raw
924
- - features/open_flow13/packet_in.feature
925
- - features/open_flow13/packet_in.raw
926
- - features/open_flow13/packet_out.feature
927
- - features/open_flow13/packet_out.raw
928
- - features/open_flow13/send_out_port.feature
929
- - features/open_flow13/send_out_port.raw
930
- - features/open_flow13/write_metadata.feature
931
- - features/step_definitions/open_flow_steps.rb
973
+ - features/open_flow13/action_push_pbb.raw
974
+ - features/open_flow_version.feature
932
975
  - features/step_definitions/packet_data_steps.rb
933
- - features/support/env.rb
934
- - features/udp.feature
976
+ - features/step_definitions/open_flow_steps.rb
977
+ - features/icmp.pcap
978
+ - features/arp-storm.pcap
935
979
  - features/udp_no_payload.raw
936
- - features/udp_with_payload.raw
980
+ - features/icmp.feature
981
+ - features/lldp.detailed.pcap
937
982
  has_rdoc: