pio 0.18.2 → 0.19.0

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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +40 -344
  4. data/Rakefile +32 -0
  5. data/bin/_guard-core +16 -0
  6. data/bin/byebug +16 -0
  7. data/bin/cc-tddium-post-worker +16 -0
  8. data/bin/cdiff +16 -0
  9. data/bin/coderay +16 -0
  10. data/bin/colortab +16 -0
  11. data/bin/coveralls +16 -0
  12. data/bin/cucumber +16 -0
  13. data/bin/decolor +16 -0
  14. data/bin/flay +16 -0
  15. data/bin/flog +16 -0
  16. data/bin/guard +16 -0
  17. data/bin/htmldiff +16 -0
  18. data/bin/inch +16 -0
  19. data/bin/ldiff +16 -0
  20. data/bin/listen +16 -0
  21. data/bin/minitar +16 -0
  22. data/bin/pry +16 -0
  23. data/bin/rake +16 -0
  24. data/bin/reek +16 -0
  25. data/bin/relish +16 -0
  26. data/bin/restclient +16 -0
  27. data/bin/rspec +16 -0
  28. data/bin/rubocop +16 -0
  29. data/bin/ruby-parse +16 -0
  30. data/bin/ruby-rewrite +16 -0
  31. data/bin/ruby_parse +16 -0
  32. data/bin/ruby_parse_extract_error +16 -0
  33. data/bin/sparkr +16 -0
  34. data/bin/term_display +16 -0
  35. data/bin/term_mandel +16 -0
  36. data/bin/thor +16 -0
  37. data/bin/unparser +16 -0
  38. data/bin/yard +16 -0
  39. data/bin/yardoc +16 -0
  40. data/bin/yri +16 -0
  41. data/features/arp.feature +61 -0
  42. data/features/dhcp.feature +4 -0
  43. data/features/icmp.feature +130 -0
  44. data/features/lldp.feature +47 -0
  45. data/features/open_flow10/echo_reply.feature +95 -0
  46. data/features/open_flow10/echo_request.feature +95 -0
  47. data/features/open_flow10/exact_match.feature +36 -0
  48. data/features/{features_read.feature → open_flow10/features_reply.feature} +54 -17
  49. data/features/open_flow10/features_request.feature +79 -0
  50. data/features/{flow_mod_read.feature → open_flow10/flow_mod.feature} +16 -21
  51. data/features/open_flow10/hello.feature +79 -0
  52. data/features/open_flow10/packet_in.feature +58 -0
  53. data/features/{packet_out_read.feature → open_flow10/packet_out.feature} +4 -5
  54. data/features/open_flow10/port_status.feature +23 -0
  55. data/features/open_flow13/echo_reply.feature +115 -0
  56. data/features/open_flow13/echo_request.feature +115 -0
  57. data/features/open_flow13/hello.feature +74 -0
  58. data/features/packet_data/echo13_reply_body.raw +0 -0
  59. data/features/packet_data/echo13_reply_no_body.raw +0 -0
  60. data/features/packet_data/echo13_request_body.raw +0 -0
  61. data/features/packet_data/echo13_request_no_body.raw +0 -0
  62. data/features/packet_data/hello13_no_version_bitmap.raw +0 -0
  63. data/features/packet_data/hello13_version_bitmap.raw +0 -0
  64. data/features/packet_data/udp_no_payload.raw +0 -0
  65. data/features/packet_data/udp_with_payload.raw +0 -0
  66. data/features/step_definitions/packet_data_steps.rb +49 -29
  67. data/features/support/env.rb +3 -0
  68. data/features/{udp_read.feature → udp.feature} +3 -4
  69. data/lib/pio.rb +1 -0
  70. data/lib/pio/echo.rb +67 -0
  71. data/lib/pio/hello13.rb +111 -0
  72. data/lib/pio/open_flow/message.rb +2 -1
  73. data/lib/pio/open_flow/open_flow_header.rb +21 -38
  74. data/lib/pio/open_flow/transaction_id.rb +25 -0
  75. data/lib/pio/version.rb +1 -1
  76. data/pio.gemspec +9 -14
  77. data/spec/pio/flow_mod_spec.rb +1 -1
  78. data/spec/pio/hello13_spec.rb +114 -0
  79. metadata +182 -138
  80. data/examples/arp_new.rb +0 -16
  81. data/examples/arp_read.rb +0 -4
  82. data/examples/dhcp_new.rb +0 -34
  83. data/examples/dhcp_read.rb +0 -4
  84. data/examples/echo_new.rb +0 -9
  85. data/examples/echo_read.rb +0 -4
  86. data/examples/features_new.rb +0 -28
  87. data/examples/features_read.rb +0 -4
  88. data/examples/flow_mod_new.rb +0 -13
  89. data/examples/flow_mod_read.rb +0 -6
  90. data/examples/hello_new.rb +0 -4
  91. data/examples/hello_read.rb +0 -4
  92. data/examples/icmp_new.rb +0 -21
  93. data/examples/icmp_read.rb +0 -4
  94. data/examples/lldp_new.rb +0 -4
  95. data/examples/lldp_read.rb +0 -4
  96. data/examples/packet_in_new.rb +0 -17
  97. data/examples/packet_in_read.rb +0 -5
  98. data/examples/packet_out_new.rb +0 -18
  99. data/examples/packet_out_read.rb +0 -6
  100. data/features/arp_read.feature +0 -10
  101. data/features/dhcp_read.feature +0 -6
  102. data/features/echo_read.feature +0 -29
  103. data/features/exact_match.feature +0 -38
  104. data/features/hello_read.feature +0 -14
  105. data/features/icmp_read.feature +0 -55
  106. data/features/lldp_read.feature +0 -26
  107. data/features/packet_in_read.feature +0 -22
  108. data/features/port_status_read.feature +0 -24
  109. data/features/step_definitions/pending_steps.rb +0 -3
  110. data/spec/pio/echo/reply_spec.rb +0 -135
  111. data/spec/pio/echo/request_spec.rb +0 -137
  112. data/spec/pio/features/reply_spec.rb +0 -137
  113. data/spec/pio/features/request_spec.rb +0 -112
  114. data/spec/pio/hello_spec.rb +0 -106
  115. data/spec/pio/lldp_spec.rb +0 -244
  116. data/spec/pio/packet_in_spec.rb +0 -146
data/pio.gemspec CHANGED
@@ -22,13 +22,7 @@ Gem::Specification.new do |gem|
22
22
 
23
23
  gem.require_paths = ['lib']
24
24
 
25
- gem.extra_rdoc_files =
26
- [
27
- 'README.md',
28
- 'CHANGELOG.md',
29
- 'LICENSE',
30
- 'CONTRIBUTING.md'
31
- ]
25
+ gem.extra_rdoc_files = %w(README.md CHANGELOG.md LICENSE CONTRIBUTING.md)
32
26
  gem.test_files = Dir.glob('spec/**/*')
33
27
  gem.test_files += Dir.glob('features/**/*')
34
28
 
@@ -37,13 +31,13 @@ Gem::Specification.new do |gem|
37
31
  gem.add_dependency 'bindata', '~> 2.1.0'
38
32
 
39
33
  gem.add_development_dependency 'rake'
40
- gem.add_development_dependency 'bundler', '~> 1.8.4'
34
+ gem.add_development_dependency 'bundler', '~> 1.9.2'
41
35
  gem.add_development_dependency 'pry', '~> 0.10.1'
42
36
 
43
37
  # Guard
44
- gem.add_development_dependency 'guard', '~> 2.12.4'
38
+ gem.add_development_dependency 'guard', '~> 2.12.5'
45
39
  gem.add_development_dependency 'guard-bundler', '~> 2.1.0'
46
- gem.add_development_dependency 'guard-cucumber', '~> 1.5.4'
40
+ gem.add_development_dependency 'guard-cucumber', '~> 1.6.0'
47
41
  gem.add_development_dependency 'guard-rspec', '~> 4.5.0'
48
42
  gem.add_development_dependency 'guard-rubocop', '~> 1.2.0'
49
43
  gem.add_development_dependency 'rb-fchange', '~> 0.0.6'
@@ -53,16 +47,17 @@ Gem::Specification.new do |gem|
53
47
 
54
48
  # Docs
55
49
  gem.add_development_dependency 'inch', '~> 0.5.10'
50
+ gem.add_development_dependency 'relish', '~> 0.7.1'
56
51
  gem.add_development_dependency 'yard', '~> 0.8.7.6'
57
52
 
58
53
  # Test
59
54
  gem.add_development_dependency 'codeclimate-test-reporter', '~> 0.4.7'
60
- gem.add_development_dependency 'coveralls', '~> 0.7.11'
61
- gem.add_development_dependency 'cucumber', '~> 1.3.19'
55
+ gem.add_development_dependency 'coveralls', '~> 0.8.0'
56
+ gem.add_development_dependency 'cucumber', '~> 2.0.0'
62
57
  gem.add_development_dependency 'flay', '~> 2.6.1'
63
58
  gem.add_development_dependency 'flog', '~> 4.3.2'
64
- gem.add_development_dependency 'reek', '~> 2.0.1'
59
+ gem.add_development_dependency 'reek', '~> 2.0.4'
65
60
  gem.add_development_dependency 'rspec', '~> 3.2.0'
66
61
  gem.add_development_dependency 'rspec-given', '~> 3.7.0'
67
- gem.add_development_dependency 'rubocop', '~> 0.29.1'
62
+ gem.add_development_dependency 'rubocop', '~> 0.30.0'
68
63
  end
@@ -91,7 +91,7 @@ describe Pio::FlowMod do
91
91
  out_port: 2,
92
92
  flags: [:send_flow_rem, :check_overwrap],
93
93
  actions: Pio::SendOutPort.new(2)
94
- )
94
+ )
95
95
  end
96
96
 
97
97
  Then { flow_mod.class == Pio::FlowMod }
@@ -0,0 +1,114 @@
1
+ require 'pio/hello13'
2
+
3
+ describe Pio::Hello13 do
4
+ describe '.read' do
5
+ When(:result) { Pio::Hello13.read(binary) }
6
+
7
+ context 'with a hello message (no version bitmap)' do
8
+ Given(:binary) { [4, 0, 0, 8, 0, 0, 0, 0].pack('C*') }
9
+
10
+ Then { result.class == Pio::Hello13 }
11
+ Then { result.ofp_version == 4 }
12
+ Then { result.message_type == 0 }
13
+ Then { result.message_length == 8 }
14
+ Then { result.transaction_id == 0 }
15
+ Then { result.xid == 0 }
16
+ Then { result.supported_versions.empty? }
17
+ end
18
+
19
+ context 'with a hello message' do
20
+ Given(:binary) do
21
+ [4, 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 18].pack('C*')
22
+ end
23
+
24
+ Then { result.class == Pio::Hello13 }
25
+ Then { result.ofp_version == 4 }
26
+ Then { result.message_type == 0 }
27
+ Then { result.message_length == 16 }
28
+ Then { result.transaction_id == 0 }
29
+ Then { result.xid == 0 }
30
+ Then { result.supported_versions == [:open_flow10, :open_flow13] }
31
+ end
32
+
33
+ context 'with a hello message (OpenFlow 1.0)' do
34
+ Given(:binary) { [1, 0, 0, 8, 0, 0, 0, 0].pack('C*') }
35
+
36
+ Then { result == Failure(Pio::ParseError, 'Invalid Hello 1.3 message.') }
37
+ end
38
+ end
39
+
40
+ describe '.new' do
41
+ context 'with no arguments' do
42
+ When(:result) { Pio::Hello13.new }
43
+
44
+ Then { result.ofp_version == 4 }
45
+ Then { result.message_type == 0 }
46
+ Then { result.message_length == 16 }
47
+ Then { result.transaction_id == 0 }
48
+ Then { result.xid == 0 }
49
+ Then { result.supported_versions == [:open_flow13] }
50
+ Then do
51
+ result.to_binary ==
52
+ [4, 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 8, 0, 0, 0, 16].pack('C*')
53
+ end
54
+ end
55
+
56
+ context 'with transaction_id: 123' do
57
+ When(:result) { Pio::Hello13.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::Hello13.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::Hello13.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::Hello13.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::Hello13.new(invalid_keyword: :foo) }
108
+
109
+ Then do
110
+ result == Failure(RuntimeError, 'Unknown keyword: invalid_keyword')
111
+ end
112
+ end
113
+ end
114
+ 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.18.2
4
+ version: 0.19.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-03-12 00:00:00.000000000 Z
11
+ date: 2015-04-09 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.8.4
47
+ version: 1.9.2
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.8.4
54
+ version: 1.9.2
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.4
75
+ version: 2.12.5
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.4
82
+ version: 2.12.5
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: guard-bundler
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: 1.5.4
103
+ version: 1.6.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: 1.5.4
110
+ version: 1.6.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: guard-rspec
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +206,20 @@ dependencies:
206
206
  - - ~>
207
207
  - !ruby/object:Gem::Version
208
208
  version: 0.5.10
209
+ - !ruby/object:Gem::Dependency
210
+ name: relish
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ~>
214
+ - !ruby/object:Gem::Version
215
+ version: 0.7.1
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ~>
221
+ - !ruby/object:Gem::Version
222
+ version: 0.7.1
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: yard
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -240,28 +254,28 @@ dependencies:
240
254
  requirements:
241
255
  - - ~>
242
256
  - !ruby/object:Gem::Version
243
- version: 0.7.11
257
+ version: 0.8.0
244
258
  type: :development
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
262
  - - ~>
249
263
  - !ruby/object:Gem::Version
250
- version: 0.7.11
264
+ version: 0.8.0
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: cucumber
253
267
  requirement: !ruby/object:Gem::Requirement
254
268
  requirements:
255
269
  - - ~>
256
270
  - !ruby/object:Gem::Version
257
- version: 1.3.19
271
+ version: 2.0.0
258
272
  type: :development
259
273
  prerelease: false
260
274
  version_requirements: !ruby/object:Gem::Requirement
261
275
  requirements:
262
276
  - - ~>
263
277
  - !ruby/object:Gem::Version
264
- version: 1.3.19
278
+ version: 2.0.0
265
279
  - !ruby/object:Gem::Dependency
266
280
  name: flay
267
281
  requirement: !ruby/object:Gem::Requirement
@@ -296,14 +310,14 @@ dependencies:
296
310
  requirements:
297
311
  - - ~>
298
312
  - !ruby/object:Gem::Version
299
- version: 2.0.1
313
+ version: 2.0.4
300
314
  type: :development
301
315
  prerelease: false
302
316
  version_requirements: !ruby/object:Gem::Requirement
303
317
  requirements:
304
318
  - - ~>
305
319
  - !ruby/object:Gem::Version
306
- version: 2.0.1
320
+ version: 2.0.4
307
321
  - !ruby/object:Gem::Dependency
308
322
  name: rspec
309
323
  requirement: !ruby/object:Gem::Requirement
@@ -338,14 +352,14 @@ dependencies:
338
352
  requirements:
339
353
  - - ~>
340
354
  - !ruby/object:Gem::Version
341
- version: 0.29.1
355
+ version: 0.30.0
342
356
  type: :development
343
357
  prerelease: false
344
358
  version_requirements: !ruby/object:Gem::Requirement
345
359
  requirements:
346
360
  - - ~>
347
361
  - !ruby/object:Gem::Version
348
- version: 0.29.1
362
+ version: 0.30.0
349
363
  description: Pure ruby packet parser and generator.
350
364
  email:
351
365
  - yasuhito@gmail.com
@@ -362,35 +376,59 @@ files:
362
376
  - LICENSE
363
377
  - README.md
364
378
  - Rakefile
365
- - examples/arp_new.rb
366
- - examples/arp_read.rb
367
- - examples/dhcp_new.rb
368
- - examples/dhcp_read.rb
369
- - examples/echo_new.rb
370
- - examples/echo_read.rb
371
- - examples/features_new.rb
372
- - examples/features_read.rb
373
- - examples/flow_mod_new.rb
374
- - examples/flow_mod_read.rb
375
- - examples/hello_new.rb
376
- - examples/hello_read.rb
377
- - examples/icmp_new.rb
378
- - examples/icmp_read.rb
379
- - examples/lldp_new.rb
380
- - examples/lldp_read.rb
381
- - examples/packet_in_new.rb
382
- - examples/packet_in_read.rb
383
- - examples/packet_out_new.rb
384
- - examples/packet_out_read.rb
385
- - features/arp_read.feature
386
- - features/dhcp_read.feature
387
- - features/echo_read.feature
388
- - features/exact_match.feature
389
- - features/features_read.feature
390
- - features/flow_mod_read.feature
391
- - features/hello_read.feature
392
- - features/icmp_read.feature
393
- - features/lldp_read.feature
379
+ - bin/_guard-core
380
+ - bin/byebug
381
+ - bin/cc-tddium-post-worker
382
+ - bin/cdiff
383
+ - bin/coderay
384
+ - bin/colortab
385
+ - bin/coveralls
386
+ - bin/cucumber
387
+ - bin/decolor
388
+ - bin/flay
389
+ - bin/flog
390
+ - bin/guard
391
+ - bin/htmldiff
392
+ - bin/inch
393
+ - bin/ldiff
394
+ - bin/listen
395
+ - bin/minitar
396
+ - bin/pry
397
+ - bin/rake
398
+ - bin/reek
399
+ - bin/relish
400
+ - bin/restclient
401
+ - bin/rspec
402
+ - bin/rubocop
403
+ - bin/ruby-parse
404
+ - bin/ruby-rewrite
405
+ - bin/ruby_parse
406
+ - bin/ruby_parse_extract_error
407
+ - bin/sparkr
408
+ - bin/term_display
409
+ - bin/term_mandel
410
+ - bin/thor
411
+ - bin/unparser
412
+ - bin/yard
413
+ - bin/yardoc
414
+ - bin/yri
415
+ - features/arp.feature
416
+ - features/dhcp.feature
417
+ - features/icmp.feature
418
+ - features/lldp.feature
419
+ - features/open_flow10/echo_reply.feature
420
+ - features/open_flow10/echo_request.feature
421
+ - features/open_flow10/exact_match.feature
422
+ - features/open_flow10/features_reply.feature
423
+ - features/open_flow10/features_request.feature
424
+ - features/open_flow10/flow_mod.feature
425
+ - features/open_flow10/hello.feature
426
+ - features/open_flow10/packet_in.feature
427
+ - features/open_flow10/packet_out.feature
428
+ - features/open_flow10/port_status.feature
429
+ - features/open_flow13/echo_reply.feature
430
+ - features/open_flow13/echo_request.feature
431
+ - features/open_flow13/hello.feature
394
432
  - features/packet_data/aggregate_stats_reply.raw
395
433
  - features/packet_data/aggregate_stats_request.raw
396
434
  - features/packet_data/arp-storm.pcap
@@ -400,6 +438,10 @@ files:
400
438
  - features/packet_data/desc_stats_reply.raw
401
439
  - features/packet_data/desc_stats_request.raw
402
440
  - features/packet_data/dhcp.pcap
441
+ - features/packet_data/echo13_reply_body.raw
442
+ - features/packet_data/echo13_reply_no_body.raw
443
+ - features/packet_data/echo13_request_body.raw
444
+ - features/packet_data/echo13_request_no_body.raw
403
445
  - features/packet_data/echo_reply.raw
404
446
  - features/packet_data/echo_request.raw
405
447
  - features/packet_data/error.raw
@@ -416,6 +458,8 @@ files:
416
458
  - features/packet_data/get_config_reply.raw
417
459
  - features/packet_data/get_config_request.raw
418
460
  - features/packet_data/hello.raw
461
+ - features/packet_data/hello13_no_version_bitmap.raw
462
+ - features/packet_data/hello13_version_bitmap.raw
419
463
  - features/packet_data/icmp.pcap
420
464
  - features/packet_data/lldp.detailed.pcap
421
465
  - features/packet_data/lldp.minimal.pcap
@@ -431,15 +475,13 @@ files:
431
475
  - features/packet_data/set_config.raw
432
476
  - features/packet_data/table_stats_reply.raw
433
477
  - features/packet_data/table_stats_request.raw
478
+ - features/packet_data/udp_no_payload.raw
479
+ - features/packet_data/udp_with_payload.raw
434
480
  - features/packet_data/vendor.raw
435
481
  - features/packet_data/vendor_stats_request.raw
436
- - features/packet_in_read.feature
437
- - features/packet_out_read.feature
438
- - features/port_status_read.feature
439
482
  - features/step_definitions/packet_data_steps.rb
440
- - features/step_definitions/pending_steps.rb
441
483
  - features/support/env.rb
442
- - features/udp_read.feature
484
+ - features/udp.feature
443
485
  - lib/pio.rb
444
486
  - lib/pio/arp.rb
445
487
  - lib/pio/arp/format.rb
@@ -471,6 +513,7 @@ files:
471
513
  - lib/pio/features.rb
472
514
  - lib/pio/flow_mod.rb
473
515
  - lib/pio/hello.rb
516
+ - lib/pio/hello13.rb
474
517
  - lib/pio/icmp.rb
475
518
  - lib/pio/icmp/format.rb
476
519
  - lib/pio/icmp/message.rb
@@ -505,6 +548,7 @@ files:
505
548
  - lib/pio/open_flow/open_flow_header.rb
506
549
  - lib/pio/open_flow/phy_port.rb
507
550
  - lib/pio/open_flow/port_number.rb
551
+ - lib/pio/open_flow/transaction_id.rb
508
552
  - lib/pio/options.rb
509
553
  - lib/pio/packet_in.rb
510
554
  - lib/pio/packet_out.rb
@@ -537,24 +581,18 @@ files:
537
581
  - spec/pio/dhcp/offer_spec.rb
538
582
  - spec/pio/dhcp/request_spec.rb
539
583
  - spec/pio/dhcp_spec.rb
540
- - spec/pio/echo/reply_spec.rb
541
- - spec/pio/echo/request_spec.rb
542
584
  - spec/pio/enqueue_spec.rb
543
- - spec/pio/features/reply_spec.rb
544
- - spec/pio/features/request_spec.rb
545
585
  - spec/pio/flow_mod_spec.rb
546
- - spec/pio/hello_spec.rb
586
+ - spec/pio/hello13_spec.rb
547
587
  - spec/pio/icmp/reply_spec.rb
548
588
  - spec/pio/icmp/request_spec.rb
549
589
  - spec/pio/icmp_spec.rb
550
590
  - spec/pio/ipv4_address_spec.rb
551
591
  - spec/pio/lldp/options_spec.rb
552
- - spec/pio/lldp_spec.rb
553
592
  - spec/pio/mac_spec.rb
554
593
  - spec/pio/match_spec.rb
555
594
  - spec/pio/open_flow/phy_port_spec.rb
556
595
  - spec/pio/open_flow/type_spec.rb
557
- - spec/pio/packet_in_spec.rb
558
596
  - spec/pio/packet_out_spec.rb
559
597
  - spec/pio/send_out_port_spec.rb
560
598
  - spec/pio/set_eth_dst_addr_spec.rb
@@ -589,109 +627,115 @@ required_rubygems_version: !ruby/object:Gem::Requirement
589
627
  version: '0'
590
628
  requirements: []
591
629
  rubyforge_project:
592
- rubygems_version: 2.4.3
630
+ rubygems_version: 2.4.5
593
631
  signing_key:
594
632
  specification_version: 4
595
633
  summary: Packet parser and generator.
596
634
  test_files:
597
- - spec/pio/set_eth_src_addr_spec.rb
598
- - spec/pio/features/request_spec.rb
599
- - spec/pio/features/reply_spec.rb
600
- - spec/pio/set_vlan_vid_spec.rb
601
- - spec/pio/set_transport_dst_port_spec.rb
602
- - spec/pio/strip_vlan_header_spec.rb
603
- - spec/pio/ipv4_address_spec.rb
604
- - spec/pio/open_flow/type_spec.rb
605
- - spec/pio/open_flow/phy_port_spec.rb
606
- - spec/pio/enqueue_spec.rb
607
- - spec/pio/hello_spec.rb
608
- - spec/pio/set_ip_src_addr_spec.rb
609
- - spec/pio/dhcp/request_spec.rb
610
- - spec/pio/dhcp/offer_spec.rb
611
- - spec/pio/dhcp/ack_spec.rb
612
- - spec/pio/dhcp/discover_spec.rb
613
- - spec/pio/set_transport_src_port_spec.rb
614
- - spec/pio/arp/request_spec.rb
615
635
  - spec/pio/arp/reply/options_spec.rb
616
- - spec/pio/arp/request/options_spec.rb
617
636
  - spec/pio/arp/reply_spec.rb
637
+ - spec/pio/arp/request/options_spec.rb
638
+ - spec/pio/arp/request_spec.rb
639
+ - spec/pio/arp_spec.rb
640
+ - spec/pio/dhcp/ack_spec.rb
641
+ - spec/pio/dhcp/discover_spec.rb
642
+ - spec/pio/dhcp/offer_spec.rb
643
+ - spec/pio/dhcp/request_spec.rb
644
+ - spec/pio/dhcp_spec.rb
645
+ - spec/pio/enqueue_spec.rb
618
646
  - spec/pio/flow_mod_spec.rb
619
- - spec/pio/lldp/options_spec.rb
620
- - spec/pio/set_vlan_priority_spec.rb
621
- - spec/pio/set_ip_dst_addr_spec.rb
622
- - spec/pio/mac_spec.rb
623
- - spec/pio/icmp/request_spec.rb
647
+ - spec/pio/hello13_spec.rb
624
648
  - spec/pio/icmp/reply_spec.rb
649
+ - spec/pio/icmp/request_spec.rb
625
650
  - spec/pio/icmp_spec.rb
626
- - spec/pio/wildcards_spec.rb
627
- - spec/pio/dhcp_spec.rb
628
- - spec/pio/set_ip_tos_spec.rb
629
- - spec/pio/send_out_port_spec.rb
630
- - spec/pio/packet_in_spec.rb
631
- - spec/pio/lldp_spec.rb
632
- - spec/pio/arp_spec.rb
633
- - spec/pio/echo/request_spec.rb
634
- - spec/pio/echo/reply_spec.rb
635
- - spec/pio/set_eth_dst_addr_spec.rb
651
+ - spec/pio/ipv4_address_spec.rb
652
+ - spec/pio/lldp/options_spec.rb
653
+ - spec/pio/mac_spec.rb
636
654
  - spec/pio/match_spec.rb
655
+ - spec/pio/open_flow/phy_port_spec.rb
656
+ - spec/pio/open_flow/type_spec.rb
637
657
  - spec/pio/packet_out_spec.rb
658
+ - spec/pio/send_out_port_spec.rb
659
+ - spec/pio/set_eth_dst_addr_spec.rb
660
+ - spec/pio/set_eth_src_addr_spec.rb
661
+ - spec/pio/set_ip_dst_addr_spec.rb
662
+ - spec/pio/set_ip_src_addr_spec.rb
663
+ - spec/pio/set_ip_tos_spec.rb
664
+ - spec/pio/set_transport_dst_port_spec.rb
665
+ - spec/pio/set_transport_src_port_spec.rb
666
+ - spec/pio/set_vlan_priority_spec.rb
667
+ - spec/pio/set_vlan_vid_spec.rb
668
+ - spec/pio/strip_vlan_header_spec.rb
669
+ - spec/pio/wildcards_spec.rb
638
670
  - spec/spec_helper.rb
639
- - features/hello_read.feature
640
- - features/support/env.rb
641
- - features/udp_read.feature
671
+ - features/arp.feature
672
+ - features/dhcp.feature
673
+ - features/icmp.feature
674
+ - features/lldp.feature
675
+ - features/open_flow10/echo_reply.feature
676
+ - features/open_flow10/echo_request.feature
677
+ - features/open_flow10/exact_match.feature
678
+ - features/open_flow10/features_reply.feature
679
+ - features/open_flow10/features_request.feature
680
+ - features/open_flow10/flow_mod.feature
681
+ - features/open_flow10/hello.feature
682
+ - features/open_flow10/packet_in.feature
683
+ - features/open_flow10/packet_out.feature
684
+ - features/open_flow10/port_status.feature
685
+ - features/open_flow13/echo_reply.feature
686
+ - features/open_flow13/echo_request.feature
687
+ - features/open_flow13/hello.feature
688
+ - features/packet_data/aggregate_stats_reply.raw
689
+ - features/packet_data/aggregate_stats_request.raw
690
+ - features/packet_data/arp-storm.pcap
691
+ - features/packet_data/arp.pcap
692
+ - features/packet_data/barrier_reply.raw
693
+ - features/packet_data/barrier_request.raw
642
694
  - features/packet_data/desc_stats_reply.raw
695
+ - features/packet_data/desc_stats_request.raw
643
696
  - features/packet_data/dhcp.pcap
697
+ - features/packet_data/echo13_reply_body.raw
698
+ - features/packet_data/echo13_reply_no_body.raw
699
+ - features/packet_data/echo13_request_body.raw
700
+ - features/packet_data/echo13_request_no_body.raw
644
701
  - features/packet_data/echo_reply.raw
645
- - features/packet_data/flow_mod_modify_strict.raw
646
- - features/packet_data/flow_mod_add.raw
702
+ - features/packet_data/echo_request.raw
703
+ - features/packet_data/error.raw
647
704
  - features/packet_data/features_reply.raw
648
- - features/packet_data/aggregate_stats_reply.raw
649
- - features/packet_data/queue_get_config_reply.raw
650
- - features/packet_data/arp.pcap
651
705
  - features/packet_data/features_request.raw
652
- - features/packet_data/flow_stats_request.raw
653
- - features/packet_data/packet_in_arp_request.raw
654
- - features/packet_data/port_stats_request.raw
706
+ - features/packet_data/flow_mod_add.raw
707
+ - features/packet_data/flow_mod_delete.raw
655
708
  - features/packet_data/flow_mod_delete_strict.raw
656
- - features/packet_data/barrier_reply.raw
657
- - features/packet_data/get_config_request.raw
658
- - features/packet_data/vendor.raw
659
- - features/packet_data/port_mod.raw
709
+ - features/packet_data/flow_mod_modify.raw
710
+ - features/packet_data/flow_mod_modify_strict.raw
711
+ - features/packet_data/flow_removed.raw
712
+ - features/packet_data/flow_stats_reply.raw
713
+ - features/packet_data/flow_stats_request.raw
660
714
  - features/packet_data/get_config_reply.raw
661
- - features/packet_data/lldp.minimal.pcap
715
+ - features/packet_data/get_config_request.raw
662
716
  - features/packet_data/hello.raw
663
- - features/packet_data/flow_removed.raw
664
- - features/packet_data/set_config.raw
665
- - features/packet_data/port_stats_reply.raw
666
- - features/packet_data/packet_out.raw
667
- - features/packet_data/table_stats_reply.raw
717
+ - features/packet_data/hello13_no_version_bitmap.raw
718
+ - features/packet_data/hello13_version_bitmap.raw
719
+ - features/packet_data/icmp.pcap
720
+ - features/packet_data/lldp.detailed.pcap
721
+ - features/packet_data/lldp.minimal.pcap
722
+ - features/packet_data/packet_in_arp_request.raw
668
723
  - features/packet_data/packet_in_cbench.raw
724
+ - features/packet_data/packet_out.raw
725
+ - features/packet_data/port_mod.raw
726
+ - features/packet_data/port_stats_reply.raw
727
+ - features/packet_data/port_stats_request.raw
728
+ - features/packet_data/port_status.raw
729
+ - features/packet_data/queue_get_config_reply.raw
669
730
  - features/packet_data/queue_get_config_request.raw
670
- - features/packet_data/error.raw
671
- - features/packet_data/vendor_stats_request.raw
672
- - features/packet_data/icmp.pcap
673
- - features/packet_data/arp-storm.pcap
674
- - features/packet_data/flow_stats_reply.raw
675
- - features/packet_data/desc_stats_request.raw
676
- - features/packet_data/barrier_request.raw
731
+ - features/packet_data/set_config.raw
732
+ - features/packet_data/table_stats_reply.raw
677
733
  - features/packet_data/table_stats_request.raw
678
- - features/packet_data/port_status.raw
679
- - features/packet_data/flow_mod_modify.raw
680
- - features/packet_data/flow_mod_delete.raw
681
- - features/packet_data/lldp.detailed.pcap
682
- - features/packet_data/aggregate_stats_request.raw
683
- - features/packet_data/echo_request.raw
684
- - features/exact_match.feature
685
- - features/icmp_read.feature
686
- - features/port_status_read.feature
687
- - features/arp_read.feature
688
- - features/step_definitions/pending_steps.rb
734
+ - features/packet_data/udp_no_payload.raw
735
+ - features/packet_data/udp_with_payload.raw
736
+ - features/packet_data/vendor.raw
737
+ - features/packet_data/vendor_stats_request.raw
689
738
  - features/step_definitions/packet_data_steps.rb
690
- - features/flow_mod_read.feature
691
- - features/lldp_read.feature
692
- - features/dhcp_read.feature
693
- - features/features_read.feature
694
- - features/packet_out_read.feature
695
- - features/packet_in_read.feature
696
- - features/echo_read.feature
739
+ - features/support/env.rb
740
+ - features/udp.feature
697
741
  has_rdoc: