pio 0.20.1 → 0.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +1 -0
  4. data/Rakefile +5 -8
  5. data/bin/byebug +16 -0
  6. data/bin/terminal-notifier +16 -0
  7. data/features/open_flow10/flow_mod.feature +5 -5
  8. data/features/open_flow10/packet_in.feature +2 -2
  9. data/features/open_flow10/port_status.feature +1 -1
  10. data/features/open_flow13/action_copy_ttl_in.raw +0 -0
  11. data/features/open_flow13/action_copy_ttl_out.raw +0 -0
  12. data/features/open_flow13/action_dec_mpls_ttl.raw +0 -0
  13. data/features/open_flow13/action_dec_nw_ttl.raw +0 -0
  14. data/features/open_flow13/action_group.raw +0 -0
  15. data/features/open_flow13/action_pop_mpls.raw +0 -0
  16. data/features/open_flow13/action_pop_pbb.raw +0 -0
  17. data/features/open_flow13/action_pop_vlan.raw +0 -0
  18. data/features/open_flow13/action_push_mpls.raw +0 -0
  19. data/features/open_flow13/action_push_pbb.raw +0 -0
  20. data/features/open_flow13/action_push_vlan.raw +0 -0
  21. data/features/open_flow13/action_set_field.raw +0 -0
  22. data/features/open_flow13/action_set_mpls_ttl.raw +0 -0
  23. data/features/open_flow13/action_set_nw_ttl.raw +0 -0
  24. data/features/open_flow13/action_set_queue.raw +0 -0
  25. data/features/open_flow13/apply_actions.feature +43 -0
  26. data/features/open_flow13/apply_actions.raw +0 -0
  27. data/features/open_flow13/flow_add_apply_no_match.raw +0 -0
  28. data/features/open_flow13/flow_mod.feature +146 -0
  29. data/features/open_flow13/flow_mod_add_apply_no_match.raw +0 -0
  30. data/features/open_flow13/flow_mod_no_match_or_instructions.raw +0 -0
  31. data/features/open_flow13/goto_table.feature +26 -0
  32. data/features/open_flow13/instruction_clear_actions.raw +0 -0
  33. data/features/open_flow13/instruction_goto_table.raw +0 -0
  34. data/features/open_flow13/instruction_meter.raw +0 -0
  35. data/features/open_flow13/instruction_write_actions.raw +0 -0
  36. data/features/open_flow13/instruction_write_metadata.raw +0 -0
  37. data/features/open_flow13/match.feature +36 -0
  38. data/features/open_flow13/meter.feature +26 -0
  39. data/features/open_flow13/send_out_port.feature +28 -0
  40. data/features/open_flow13/send_out_port.raw +0 -0
  41. data/features/open_flow13/write_metadata.feature +28 -0
  42. data/features/step_definitions/open_flow_steps.rb +20 -0
  43. data/features/step_definitions/packet_data_steps.rb +5 -15
  44. data/lib/pio/monkey_patch/integer.rb +2 -0
  45. data/lib/pio/monkey_patch/integer/base_conversions.rb +10 -0
  46. data/lib/pio/open_flow.rb +0 -2
  47. data/lib/pio/open_flow10.rb +1 -0
  48. data/lib/pio/{open_flow → open_flow10}/actions.rb +1 -1
  49. data/lib/pio/open_flow10/echo.rb +1 -0
  50. data/lib/pio/{open_flow → open_flow10}/message.rb +1 -0
  51. data/lib/pio/{send_out_port.rb → open_flow10/send_out_port.rb} +0 -0
  52. data/lib/pio/open_flow13.rb +6 -0
  53. data/lib/pio/open_flow13/apply.rb +74 -0
  54. data/lib/pio/open_flow13/flow_mod.rb +195 -0
  55. data/lib/pio/open_flow13/goto_table.rb +33 -0
  56. data/lib/pio/open_flow13/hello.rb +1 -2
  57. data/lib/pio/open_flow13/match.rb +38 -5
  58. data/lib/pio/open_flow13/meter.rb +32 -0
  59. data/lib/pio/open_flow13/send_out_port.rb +48 -0
  60. data/lib/pio/open_flow13/write_metadata.rb +51 -0
  61. data/lib/pio/version.rb +1 -1
  62. data/spec/pio/{send_out_port_spec.rb → open_flow10/send_out_port_spec.rb} +1 -1
  63. data/spec/pio/open_flow13/goto_table_spec.rb +12 -0
  64. data/spec/pio/open_flow13/match_spec.rb +45 -0
  65. data/spec/pio/open_flow13/meter_spec.rb +12 -0
  66. data/spec/pio/open_flow13/write_metadata_spec.rb +28 -0
  67. metadata +185 -108
@@ -0,0 +1,33 @@
1
+ require 'forwardable'
2
+
3
+ # Base module.
4
+ module Pio
5
+ # Resubmit to the table_id
6
+ class GotoTable
7
+ # OpenFlow 1.3.4 OFPIT_GOTO_TABLE instruction format
8
+ class Format < BinData::Record
9
+ endian :big
10
+
11
+ uint16 :instruction_type, value: 1
12
+ uint16 :instruction_length, value: 8
13
+ uint8 :table_id
14
+ bit24 :padding
15
+ end
16
+
17
+ def self.read(raw_data)
18
+ allocate.tap do |goto_table|
19
+ goto_table.instance_variable_set :@format, Format.read(raw_data)
20
+ end
21
+ end
22
+
23
+ extend Forwardable
24
+
25
+ def_delegators :@format, :instruction_type
26
+ def_delegators :@format, :instruction_length
27
+ def_delegators :@format, :table_id
28
+
29
+ def initialize(table_id)
30
+ @format = Format.new(table_id: table_id)
31
+ end
32
+ end
33
+ end
@@ -103,8 +103,7 @@ module Pio
103
103
  body_attrs = { elements: [{ element_type: 1,
104
104
  element_length: 8,
105
105
  element_value: 16 }] }
106
- @format = Format.new(open_flow_header: header_attrs,
107
- body: body_attrs)
106
+ @format = Format.new(open_flow_header: header_attrs, body: body_attrs)
108
107
  end
109
108
 
110
109
  def method_missing(method, *args, &block)
@@ -27,6 +27,31 @@ module Pio
27
27
  end
28
28
  end
29
29
 
30
+ # The value of OXM_OF_METADATA match field
31
+ class Metadata < BinData::Record
32
+ OXM_FIELD = 2
33
+
34
+ endian :big
35
+
36
+ uint64 :metadata
37
+
38
+ def length
39
+ 8
40
+ end
41
+ end
42
+
43
+ # Masked OXM_OF_METADATA match field
44
+ class MaskedMetadata < BinData::Record
45
+ endian :big
46
+
47
+ uint64 :metadata
48
+ uint64 :metadata_mask
49
+
50
+ def length
51
+ 16
52
+ end
53
+ end
54
+
30
55
  # The value of OXM_OF_ETH_DST match field.
31
56
  class EtherDestinationAddress < BinData::Record
32
57
  OXM_FIELD = 3
@@ -262,7 +287,7 @@ module Pio
262
287
  end
263
288
 
264
289
  # OXM format
265
- class Format < BinData::Record
290
+ class Oxm < BinData::Record
266
291
  # OXM match field.
267
292
  class MatchField < BinData::Record
268
293
  endian :big
@@ -275,6 +300,8 @@ module Pio
275
300
  read_length: :oxm_length,
276
301
  selection: :choose_tlv_value do
277
302
  in_port InPort
303
+ metadata Metadata
304
+ masked_metadata MaskedMetadata
278
305
  ether_destination_address EtherDestinationAddress
279
306
  masked_ether_destination_address MaskedEtherDestinationAddress
280
307
  ether_source_address EtherSourceAddress
@@ -317,6 +344,8 @@ module Pio
317
344
  case oxm_field
318
345
  when InPort::OXM_FIELD
319
346
  InPort
347
+ when Metadata::OXM_FIELD
348
+ masked? ? MaskedMetadata : Metadata
320
349
  when EtherDestinationAddress::OXM_FIELD
321
350
  masked? ? MaskedEtherDestinationAddress : EtherDestinationAddress
322
351
  when EtherSourceAddress::OXM_FIELD
@@ -362,6 +391,10 @@ module Pio
362
391
  string :padding, length: :padding_length
363
392
  hide :padding
364
393
 
394
+ def length
395
+ match_length + padding_length
396
+ end
397
+
365
398
  def method_missing(method, *args, &block)
366
399
  match_fields.each do |each|
367
400
  next unless each.tlv_value.respond_to?(method)
@@ -405,7 +438,7 @@ module Pio
405
438
  tlv_value: { each => user_attrs.fetch(each) } }
406
439
  end
407
440
 
408
- [:ether_destination_address, :ether_source_address,
441
+ [:metadata, :ether_destination_address, :ether_source_address,
409
442
  :ipv4_source_address, :ipv4_destination_address,
410
443
  :ipv6_source_address, :ipv6_destination_address].each do |each|
411
444
  next unless user_attrs.key?(each)
@@ -428,15 +461,15 @@ module Pio
428
461
 
429
462
  def self.read(raw_data)
430
463
  allocate.tap do |message|
431
- message.instance_variable_set(:@format, Format.read(raw_data))
464
+ message.instance_variable_set(:@format, Oxm.read(raw_data))
432
465
  end
433
466
  end
434
467
 
435
468
  def initialize(user_attrs = {})
436
469
  @format = if user_attrs.empty?
437
- Format.new
470
+ Oxm.new
438
471
  else
439
- Format.new(Options.new(user_attrs).to_hash)
472
+ Oxm.new(Options.new(user_attrs).to_hash)
440
473
  end
441
474
  end
442
475
 
@@ -0,0 +1,32 @@
1
+ require 'forwardable'
2
+
3
+ # Base module.
4
+ module Pio
5
+ # Metering
6
+ class Meter
7
+ # OpenFlow 1.3.4 OFPIT_METER instruction format
8
+ class Format < BinData::Record
9
+ endian :big
10
+
11
+ uint16 :instruction_type, value: 6
12
+ uint16 :instruction_length, value: 8
13
+ uint32 :meter_id
14
+ end
15
+
16
+ def self.read(raw_data)
17
+ allocate.tap do |meter|
18
+ meter.instance_variable_set :@format, Format.read(raw_data)
19
+ end
20
+ end
21
+
22
+ extend Forwardable
23
+
24
+ def_delegators :@format, :instruction_type
25
+ def_delegators :@format, :instruction_length
26
+ def_delegators :@format, :meter_id
27
+
28
+ def initialize(meter_id)
29
+ @format = Format.new(meter_id: meter_id)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,48 @@
1
+ require 'forwardable'
2
+
3
+ # Base module.
4
+ module Pio
5
+ remove_const :SendOutPort if const_defined?(:SendOutPort)
6
+
7
+ # Output to switch port.
8
+ class SendOutPort
9
+ # OpenFlow 1.3.4 OFPAT_OUTPUT action format.
10
+ class Format < BinData::Record
11
+ NO_BUFFER = 0xffff
12
+
13
+ endian :big
14
+
15
+ uint16 :action_type, value: 0
16
+ uint16 :action_length, value: 16
17
+ uint32 :port
18
+ uint16 :max_length, initial_value: NO_BUFFER
19
+ uint48 :padding
20
+ end
21
+
22
+ def self.read(raw_data)
23
+ allocate.tap do |send_out_port|
24
+ send_out_port.instance_variable_set :@format, Format.read(raw_data)
25
+ end
26
+ end
27
+
28
+ extend Forwardable
29
+
30
+ def_delegators :@format, :action_type
31
+ def_delegators :@format, :action_length
32
+ def_delegators :@format, :port
33
+ def_delegator :@format, :to_binary_s, :to_binary
34
+
35
+ def initialize(port)
36
+ @format = Format.new(port: port)
37
+ end
38
+
39
+ def max_length
40
+ case @format.max_length
41
+ when Format::NO_BUFFER
42
+ :no_buffer
43
+ else
44
+ @format.max_length
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,51 @@
1
+ require 'forwardable'
2
+
3
+ # Base module.
4
+ module Pio
5
+ # Write metadata
6
+ class WriteMetadata
7
+ # OpenFlow 1.3.4 OFPIT_WRITE_METADATA instruction format
8
+ class Format < BinData::Record
9
+ endian :big
10
+
11
+ uint16 :instruction_type, value: 2
12
+ uint16 :instruction_length, value: 24
13
+ uint32 :padding
14
+ uint64 :metadata
15
+ uint64 :metadata_mask
16
+ end
17
+
18
+ def self.read(raw_data)
19
+ allocate.tap do |write_metadata|
20
+ write_metadata.instance_variable_set :@format, Format.read(raw_data)
21
+ end
22
+ end
23
+
24
+ extend Forwardable
25
+
26
+ def_delegators :@format, :instruction_type
27
+ def_delegators :@format, :instruction_length
28
+ def_delegators :@format, :metadata
29
+ def_delegators :@format, :metadata_mask
30
+
31
+ def initialize(user_options)
32
+ @options = user_options
33
+ @format = Format.new(options)
34
+ end
35
+
36
+ def options
37
+ {
38
+ metadata: metadata_option,
39
+ metadata_mask: metadata_mask_option
40
+ }
41
+ end
42
+
43
+ def metadata_option
44
+ @options[:metadata]
45
+ end
46
+
47
+ def metadata_mask_option
48
+ @options[:metadata_mask]
49
+ end
50
+ end
51
+ end
data/lib/pio/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # Base module.
2
2
  module Pio
3
3
  # gem version.
4
- VERSION = '0.20.1'.freeze
4
+ VERSION = '0.21.0'.freeze
5
5
  end
@@ -1,4 +1,4 @@
1
- require 'pio/send_out_port'
1
+ require 'pio/open_flow10/send_out_port'
2
2
 
3
3
  describe Pio::SendOutPort do
4
4
  describe '.new' do
@@ -0,0 +1,12 @@
1
+ require 'pio/open_flow13/goto_table'
2
+
3
+ describe Pio::GotoTable do
4
+ describe '.new' do
5
+ When(:goto_table) { Pio::GotoTable.new(options) }
6
+
7
+ context 'with 1' do
8
+ Given(:options) { 1 }
9
+ Then { goto_table.table_id == 1 }
10
+ end
11
+ end
12
+ end
@@ -52,6 +52,51 @@ describe Pio::OpenFlow13::Match do
52
52
  And { match.match_fields[0].oxm_length == 6 }
53
53
  end
54
54
 
55
+ context 'with metadata: 1' do
56
+ When(:match) do
57
+ Pio::OpenFlow13::Match.new(metadata: 1)
58
+ end
59
+ Then { match.metadata == 1 }
60
+ And { match.class == Pio::OpenFlow13::Match }
61
+ And { match.length == 16 }
62
+ And { match.match_type == Pio::OpenFlow13::MATCH_TYPE_OXM }
63
+ And { match.match_length == 16 }
64
+ And { match.match_fields.size == 1 }
65
+ And do
66
+ match.match_fields[0].oxm_class ==
67
+ Pio::OpenFlow13::Match::OXM_CLASS_OPENFLOW_BASIC
68
+ end
69
+ And do
70
+ match.match_fields[0].oxm_field ==
71
+ Pio::OpenFlow13::Match::Metadata::OXM_FIELD
72
+ end
73
+ And { match.match_fields[0].masked? == false }
74
+ And { match.match_fields[0].oxm_length == 8 }
75
+ end
76
+
77
+ context 'with metadata: 1, metadata_mask: 1' do
78
+ When(:match) do
79
+ Pio::OpenFlow13::Match.new(metadata: 1, metadata_mask: 1)
80
+ end
81
+ Then { match.metadata == 1 }
82
+ Then { match.metadata_mask == 1 }
83
+ And { match.class == Pio::OpenFlow13::Match }
84
+ And { match.length == 24 }
85
+ And { match.match_type == Pio::OpenFlow13::MATCH_TYPE_OXM }
86
+ And { match.match_length == 24 }
87
+ And { match.match_fields.size == 1 }
88
+ And do
89
+ match.match_fields[0].oxm_class ==
90
+ Pio::OpenFlow13::Match::OXM_CLASS_OPENFLOW_BASIC
91
+ end
92
+ And do
93
+ match.match_fields[0].oxm_field ==
94
+ Pio::OpenFlow13::Match::Metadata::OXM_FIELD
95
+ end
96
+ And { match.match_fields[0].masked? == true }
97
+ And { match.match_fields[0].oxm_length == 16 }
98
+ end
99
+
55
100
  context "with ether_source_address: '01:02:03:04:05:06', ether_source_address_mask: 'ff:ff:ff:00:00:00'" do
56
101
  When(:match) do
57
102
  Pio::OpenFlow13::Match.new(ether_source_address: '01:02:03:04:05:06',
@@ -0,0 +1,12 @@
1
+ require 'pio/open_flow13/meter'
2
+
3
+ describe Pio::Meter do
4
+ describe '.new' do
5
+ When(:meter) { Pio::Meter.new(options) }
6
+
7
+ context 'with 1' do
8
+ Given(:options) { 1 }
9
+ Then { meter.meter_id == 1 }
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,28 @@
1
+ require 'pio/open_flow13/write_metadata'
2
+
3
+ describe Pio::WriteMetadata do
4
+ describe '.new' do
5
+ When(:write_metadata) { Pio::WriteMetadata.new(options) }
6
+
7
+ context 'with metadata: 1' do
8
+ Given(:options) do
9
+ {
10
+ metadata: 0x1
11
+ }
12
+ end
13
+ Then { write_metadata.metadata == 1 }
14
+ Then { write_metadata.metadata_mask == 0 }
15
+ end
16
+
17
+ context 'with metadata: 1, metadata_mask: 1' do
18
+ Given(:options) do
19
+ {
20
+ metadata: 0x1,
21
+ metadata_mask: 0x1
22
+ }
23
+ end
24
+ Then { write_metadata.metadata == 1 }
25
+ Then { write_metadata.metadata_mask == 1 }
26
+ end
27
+ end
28
+ 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.20.1
4
+ version: 0.21.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-10 00:00:00.000000000 Z
11
+ date: 2015-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bindata
@@ -377,6 +377,7 @@ files:
377
377
  - README.md
378
378
  - Rakefile
379
379
  - bin/_guard-core
380
+ - bin/byebug
380
381
  - bin/cc-tddium-post-worker
381
382
  - bin/cdiff
382
383
  - bin/coderay
@@ -406,6 +407,7 @@ files:
406
407
  - bin/sparkr
407
408
  - bin/term_display
408
409
  - bin/term_mandel
410
+ - bin/terminal-notifier
409
411
  - bin/thor
410
412
  - bin/unparser
411
413
  - bin/yard
@@ -467,6 +469,23 @@ files:
467
469
  - features/open_flow10/table_stats_request.raw
468
470
  - features/open_flow10/vendor.raw
469
471
  - features/open_flow10/vendor_stats_request.raw
472
+ - features/open_flow13/action_copy_ttl_in.raw
473
+ - features/open_flow13/action_copy_ttl_out.raw
474
+ - features/open_flow13/action_dec_mpls_ttl.raw
475
+ - features/open_flow13/action_dec_nw_ttl.raw
476
+ - features/open_flow13/action_group.raw
477
+ - features/open_flow13/action_pop_mpls.raw
478
+ - features/open_flow13/action_pop_pbb.raw
479
+ - features/open_flow13/action_pop_vlan.raw
480
+ - features/open_flow13/action_push_mpls.raw
481
+ - features/open_flow13/action_push_pbb.raw
482
+ - features/open_flow13/action_push_vlan.raw
483
+ - features/open_flow13/action_set_field.raw
484
+ - features/open_flow13/action_set_mpls_ttl.raw
485
+ - features/open_flow13/action_set_nw_ttl.raw
486
+ - features/open_flow13/action_set_queue.raw
487
+ - features/open_flow13/apply_actions.feature
488
+ - features/open_flow13/apply_actions.raw
470
489
  - features/open_flow13/echo_reply.feature
471
490
  - features/open_flow13/echo_reply_body.raw
472
491
  - features/open_flow13/echo_reply_no_body.raw
@@ -477,10 +496,21 @@ files:
477
496
  - features/open_flow13/features_reply.raw
478
497
  - features/open_flow13/features_request.feature
479
498
  - features/open_flow13/features_request.raw
499
+ - features/open_flow13/flow_add_apply_no_match.raw
500
+ - features/open_flow13/flow_mod.feature
501
+ - features/open_flow13/flow_mod_add_apply_no_match.raw
502
+ - features/open_flow13/flow_mod_no_match_or_instructions.raw
503
+ - features/open_flow13/goto_table.feature
480
504
  - features/open_flow13/hello.feature
481
505
  - features/open_flow13/hello_no_version_bitmap.raw
482
506
  - features/open_flow13/hello_version_bitmap.raw
507
+ - features/open_flow13/instruction_clear_actions.raw
508
+ - features/open_flow13/instruction_goto_table.raw
509
+ - features/open_flow13/instruction_meter.raw
510
+ - features/open_flow13/instruction_write_actions.raw
511
+ - features/open_flow13/instruction_write_metadata.raw
483
512
  - features/open_flow13/match.feature
513
+ - features/open_flow13/meter.feature
484
514
  - features/open_flow13/oxm_ether_destination_field.raw
485
515
  - features/open_flow13/oxm_ether_source_field.raw
486
516
  - features/open_flow13/oxm_ether_type_field.raw
@@ -505,6 +535,9 @@ files:
505
535
  - features/open_flow13/oxm_udp_destination_field.raw
506
536
  - features/open_flow13/oxm_udp_field.raw
507
537
  - features/open_flow13/oxm_udp_source_field.raw
538
+ - features/open_flow13/send_out_port.feature
539
+ - features/open_flow13/send_out_port.raw
540
+ - features/open_flow13/write_metadata.feature
508
541
  - features/step_definitions/open_flow_steps.rb
509
542
  - features/step_definitions/packet_data_steps.rb
510
543
  - features/support/env.rb
@@ -562,36 +595,43 @@ files:
562
595
  - lib/pio/mac.rb
563
596
  - lib/pio/message_type_selector.rb
564
597
  - lib/pio/monkey_patch/integer.rb
598
+ - lib/pio/monkey_patch/integer/base_conversions.rb
565
599
  - lib/pio/monkey_patch/integer/ranges.rb
566
600
  - lib/pio/open_flow.rb
567
- - lib/pio/open_flow/actions.rb
568
601
  - lib/pio/open_flow/flags.rb
569
- - lib/pio/open_flow/message.rb
570
602
  - lib/pio/open_flow/open_flow_header.rb
571
603
  - lib/pio/open_flow/phy_port.rb
572
604
  - lib/pio/open_flow/port_number.rb
573
605
  - lib/pio/open_flow/transaction_id.rb
574
606
  - lib/pio/open_flow10.rb
607
+ - lib/pio/open_flow10/actions.rb
575
608
  - lib/pio/open_flow10/echo.rb
576
609
  - lib/pio/open_flow10/exact_match.rb
577
610
  - lib/pio/open_flow10/features.rb
578
611
  - lib/pio/open_flow10/flow_mod.rb
579
612
  - lib/pio/open_flow10/hello.rb
580
613
  - lib/pio/open_flow10/match.rb
614
+ - lib/pio/open_flow10/message.rb
581
615
  - lib/pio/open_flow10/packet_in.rb
582
616
  - lib/pio/open_flow10/packet_out.rb
583
617
  - lib/pio/open_flow10/port_status.rb
618
+ - lib/pio/open_flow10/send_out_port.rb
584
619
  - lib/pio/open_flow13.rb
620
+ - lib/pio/open_flow13/apply.rb
585
621
  - lib/pio/open_flow13/echo.rb
586
622
  - lib/pio/open_flow13/features_reply.rb
587
623
  - lib/pio/open_flow13/features_request.rb
624
+ - lib/pio/open_flow13/flow_mod.rb
625
+ - lib/pio/open_flow13/goto_table.rb
588
626
  - lib/pio/open_flow13/hello.rb
589
627
  - lib/pio/open_flow13/match.rb
628
+ - lib/pio/open_flow13/meter.rb
629
+ - lib/pio/open_flow13/send_out_port.rb
630
+ - lib/pio/open_flow13/write_metadata.rb
590
631
  - lib/pio/options.rb
591
632
  - lib/pio/parse_error.rb
592
633
  - lib/pio/payload.rb
593
634
  - lib/pio/pcap.rb
594
- - lib/pio/send_out_port.rb
595
635
  - lib/pio/set_ether_address.rb
596
636
  - lib/pio/set_ip_address.rb
597
637
  - lib/pio/set_ip_tos.rb
@@ -628,10 +668,13 @@ files:
628
668
  - spec/pio/match_spec.rb
629
669
  - spec/pio/open_flow/phy_port_spec.rb
630
670
  - spec/pio/open_flow/type_spec.rb
671
+ - spec/pio/open_flow10/send_out_port_spec.rb
672
+ - spec/pio/open_flow13/goto_table_spec.rb
631
673
  - spec/pio/open_flow13/hello_spec.rb
632
674
  - spec/pio/open_flow13/match_spec.rb
675
+ - spec/pio/open_flow13/meter_spec.rb
676
+ - spec/pio/open_flow13/write_metadata_spec.rb
633
677
  - spec/pio/packet_out_spec.rb
634
- - spec/pio/send_out_port_spec.rb
635
678
  - spec/pio/set_ether_destination_address_spec.rb
636
679
  - spec/pio/set_ether_source_address_spec.rb
637
680
  - spec/pio/set_ip_destination_address_spec.rb
@@ -664,146 +707,180 @@ required_rubygems_version: !ruby/object:Gem::Requirement
664
707
  version: '0'
665
708
  requirements: []
666
709
  rubyforge_project:
667
- rubygems_version: 2.4.7
710
+ rubygems_version: 2.4.6
668
711
  signing_key:
669
712
  specification_version: 4
670
713
  summary: Packet parser and generator.
671
714
  test_files:
672
- - spec/pio/set_vlan_vid_spec.rb
673
- - spec/pio/strip_vlan_header_spec.rb
674
- - spec/pio/set_transport_destination_port_spec.rb
675
- - spec/pio/ipv4_address_spec.rb
676
- - spec/pio/open_flow/type_spec.rb
677
- - spec/pio/open_flow/phy_port_spec.rb
678
- - spec/pio/enqueue_spec.rb
679
- - spec/pio/dhcp/request_spec.rb
680
- - spec/pio/dhcp/offer_spec.rb
681
- - spec/pio/dhcp/ack_spec.rb
682
- - spec/pio/dhcp/discover_spec.rb
683
- - spec/pio/arp/request_spec.rb
684
715
  - spec/pio/arp/reply/options_spec.rb
685
- - spec/pio/arp/request/options_spec.rb
686
716
  - spec/pio/arp/reply_spec.rb
687
- - spec/pio/set_ether_destination_address_spec.rb
717
+ - spec/pio/arp/request/options_spec.rb
718
+ - spec/pio/arp/request_spec.rb
719
+ - spec/pio/arp_spec.rb
720
+ - spec/pio/dhcp/ack_spec.rb
721
+ - spec/pio/dhcp/discover_spec.rb
722
+ - spec/pio/dhcp/offer_spec.rb
723
+ - spec/pio/dhcp/request_spec.rb
724
+ - spec/pio/dhcp_spec.rb
725
+ - spec/pio/enqueue_spec.rb
688
726
  - spec/pio/flow_mod_spec.rb
727
+ - spec/pio/icmp/reply_spec.rb
728
+ - spec/pio/icmp/request_spec.rb
729
+ - spec/pio/icmp_spec.rb
730
+ - spec/pio/ipv4_address_spec.rb
689
731
  - spec/pio/lldp/options_spec.rb
690
- - spec/pio/set_vlan_priority_spec.rb
732
+ - spec/pio/mac_spec.rb
733
+ - spec/pio/match_spec.rb
734
+ - spec/pio/open_flow/phy_port_spec.rb
735
+ - spec/pio/open_flow/type_spec.rb
736
+ - spec/pio/open_flow10/send_out_port_spec.rb
737
+ - spec/pio/open_flow13/goto_table_spec.rb
691
738
  - spec/pio/open_flow13/hello_spec.rb
692
739
  - spec/pio/open_flow13/match_spec.rb
693
- - spec/pio/mac_spec.rb
694
- - spec/pio/icmp/request_spec.rb
695
- - spec/pio/icmp/reply_spec.rb
696
- - spec/pio/icmp_spec.rb
697
- - spec/pio/wildcards_spec.rb
698
- - spec/pio/dhcp_spec.rb
699
- - spec/pio/set_ip_tos_spec.rb
700
- - spec/pio/send_out_port_spec.rb
740
+ - spec/pio/open_flow13/meter_spec.rb
741
+ - spec/pio/open_flow13/write_metadata_spec.rb
742
+ - spec/pio/packet_out_spec.rb
743
+ - spec/pio/set_ether_destination_address_spec.rb
701
744
  - spec/pio/set_ether_source_address_spec.rb
702
745
  - spec/pio/set_ip_destination_address_spec.rb
703
- - spec/pio/set_transport_source_port_spec.rb
704
- - spec/pio/arp_spec.rb
705
746
  - spec/pio/set_ip_source_address_spec.rb
706
- - spec/pio/match_spec.rb
707
- - spec/pio/packet_out_spec.rb
747
+ - spec/pio/set_ip_tos_spec.rb
748
+ - spec/pio/set_transport_destination_port_spec.rb
749
+ - spec/pio/set_transport_source_port_spec.rb
750
+ - spec/pio/set_vlan_priority_spec.rb
751
+ - spec/pio/set_vlan_vid_spec.rb
752
+ - spec/pio/strip_vlan_header_spec.rb
753
+ - spec/pio/wildcards_spec.rb
708
754
  - spec/spec_helper.rb
709
- - features/dhcp.pcap
710
- - features/udp_with_payload.raw
711
- - features/dhcp.feature
712
- - features/lldp.feature
755
+ - features/arp-storm.pcap
713
756
  - features/arp.feature
714
- - features/udp.feature
715
- - features/support/env.rb
716
757
  - features/arp.pcap
758
+ - features/dhcp.feature
759
+ - features/dhcp.pcap
760
+ - features/icmp.feature
761
+ - features/icmp.pcap
762
+ - features/lldp.detailed.pcap
763
+ - features/lldp.feature
764
+ - features/lldp.minimal.pcap
765
+ - features/open_flow10/aggregate_stats_reply.raw
766
+ - features/open_flow10/aggregate_stats_request.raw
767
+ - features/open_flow10/barrier_reply.raw
768
+ - features/open_flow10/barrier_request.raw
717
769
  - features/open_flow10/desc_stats_reply.raw
770
+ - features/open_flow10/desc_stats_request.raw
771
+ - features/open_flow10/echo_reply.feature
718
772
  - features/open_flow10/echo_reply.raw
719
- - features/open_flow10/packet_in.feature
720
- - features/open_flow10/flow_mod_modify_strict.raw
721
- - features/open_flow10/flow_mod_add.raw
773
+ - features/open_flow10/echo_request.feature
774
+ - features/open_flow10/echo_request.raw
775
+ - features/open_flow10/error.raw
776
+ - features/open_flow10/exact_match.feature
777
+ - features/open_flow10/features_reply.feature
722
778
  - features/open_flow10/features_reply.raw
723
779
  - features/open_flow10/features_request.feature
724
- - features/open_flow10/aggregate_stats_reply.raw
725
- - features/open_flow10/queue_get_config_reply.raw
726
- - features/open_flow10/echo_request.feature
727
780
  - features/open_flow10/features_request.raw
728
- - features/open_flow10/flow_stats_request.raw
729
- - features/open_flow10/packet_in_arp_request.raw
730
- - features/open_flow10/port_stats_request.raw
781
+ - features/open_flow10/flow_mod.feature
782
+ - features/open_flow10/flow_mod_add.raw
783
+ - features/open_flow10/flow_mod_delete.raw
731
784
  - features/open_flow10/flow_mod_delete_strict.raw
732
- - features/open_flow10/barrier_reply.raw
733
- - features/open_flow10/get_config_request.raw
734
- - features/open_flow10/vendor.raw
735
- - features/open_flow10/port_mod.raw
785
+ - features/open_flow10/flow_mod_modify.raw
786
+ - features/open_flow10/flow_mod_modify_strict.raw
787
+ - features/open_flow10/flow_removed.raw
788
+ - features/open_flow10/flow_stats_reply.raw
789
+ - features/open_flow10/flow_stats_request.raw
736
790
  - features/open_flow10/get_config_reply.raw
737
- - features/open_flow10/exact_match.feature
738
- - features/open_flow10/features_reply.feature
791
+ - features/open_flow10/get_config_request.raw
792
+ - features/open_flow10/hello.feature
739
793
  - features/open_flow10/hello.raw
740
- - features/open_flow10/flow_removed.raw
741
- - features/open_flow10/set_config.raw
742
- - features/open_flow10/port_stats_reply.raw
794
+ - features/open_flow10/packet_in.feature
795
+ - features/open_flow10/packet_in_arp_request.raw
796
+ - features/open_flow10/packet_in_cbench.raw
797
+ - features/open_flow10/packet_out.feature
743
798
  - features/open_flow10/packet_out.raw
744
- - features/open_flow10/table_stats_reply.raw
799
+ - features/open_flow10/port_mod.raw
800
+ - features/open_flow10/port_stats_reply.raw
801
+ - features/open_flow10/port_stats_request.raw
745
802
  - features/open_flow10/port_status.feature
746
- - features/open_flow10/packet_in_cbench.raw
803
+ - features/open_flow10/port_status.raw
804
+ - features/open_flow10/queue_get_config_reply.raw
747
805
  - features/open_flow10/queue_get_config_request.raw
748
- - features/open_flow10/error.raw
749
- - features/open_flow10/vendor_stats_request.raw
750
- - features/open_flow10/flow_mod.feature
751
- - features/open_flow10/packet_out.feature
752
- - features/open_flow10/echo_reply.feature
753
- - features/open_flow10/flow_stats_reply.raw
754
- - features/open_flow10/desc_stats_request.raw
755
- - features/open_flow10/hello.feature
756
- - features/open_flow10/barrier_request.raw
806
+ - features/open_flow10/set_config.raw
807
+ - features/open_flow10/table_stats_reply.raw
757
808
  - features/open_flow10/table_stats_request.raw
758
- - features/open_flow10/port_status.raw
759
- - features/open_flow10/flow_mod_modify.raw
760
- - features/open_flow10/flow_mod_delete.raw
761
- - features/open_flow10/aggregate_stats_request.raw
762
- - features/open_flow10/echo_request.raw
763
- - features/lldp.minimal.pcap
764
- - features/open_flow13/echo_request_body.raw
765
- - features/open_flow13/oxm_no_fields.raw
766
- - features/open_flow13/oxm_ipv4_source_field.raw
767
- - features/open_flow13/hello_version_bitmap.raw
809
+ - features/open_flow10/vendor.raw
810
+ - features/open_flow10/vendor_stats_request.raw
811
+ - features/open_flow13/action_copy_ttl_in.raw
812
+ - features/open_flow13/action_copy_ttl_out.raw
813
+ - features/open_flow13/action_dec_mpls_ttl.raw
814
+ - features/open_flow13/action_dec_nw_ttl.raw
815
+ - features/open_flow13/action_group.raw
816
+ - features/open_flow13/action_pop_mpls.raw
817
+ - features/open_flow13/action_pop_pbb.raw
818
+ - features/open_flow13/action_pop_vlan.raw
819
+ - features/open_flow13/action_push_mpls.raw
820
+ - features/open_flow13/action_push_pbb.raw
821
+ - features/open_flow13/action_push_vlan.raw
822
+ - features/open_flow13/action_set_field.raw
823
+ - features/open_flow13/action_set_mpls_ttl.raw
824
+ - features/open_flow13/action_set_nw_ttl.raw
825
+ - features/open_flow13/action_set_queue.raw
826
+ - features/open_flow13/apply_actions.feature
827
+ - features/open_flow13/apply_actions.raw
828
+ - features/open_flow13/echo_reply.feature
768
829
  - features/open_flow13/echo_reply_body.raw
830
+ - features/open_flow13/echo_reply_no_body.raw
831
+ - features/open_flow13/echo_request.feature
832
+ - features/open_flow13/echo_request_body.raw
833
+ - features/open_flow13/echo_request_no_body.raw
834
+ - features/open_flow13/features_reply.feature
769
835
  - features/open_flow13/features_reply.raw
770
836
  - features/open_flow13/features_request.feature
771
- - features/open_flow13/oxm_masked_ether_destination_field.raw
772
- - features/open_flow13/oxm_tcp_source_field.raw
773
- - features/open_flow13/oxm_ipv6_destination_field.raw
774
- - features/open_flow13/echo_request.feature
775
837
  - features/open_flow13/features_request.raw
776
- - features/open_flow13/oxm_masked_ipv6_destination_field.raw
777
- - features/open_flow13/oxm_udp_field.raw
778
- - features/open_flow13/features_reply.feature
779
- - features/open_flow13/oxm_masked_ether_source_field.raw
780
- - features/open_flow13/oxm_in_port_field.raw
781
- - features/open_flow13/oxm_tcp_field.raw
782
- - features/open_flow13/oxm_in_phy_port_field.raw
783
- - features/open_flow13/oxm_ether_type_field.raw
784
- - features/open_flow13/echo_reply_no_body.raw
785
- - features/open_flow13/oxm_tcp_destination_field.raw
786
- - features/open_flow13/oxm_masked_ipv4_source_field.raw
838
+ - features/open_flow13/flow_add_apply_no_match.raw
839
+ - features/open_flow13/flow_mod.feature
840
+ - features/open_flow13/flow_mod_add_apply_no_match.raw
841
+ - features/open_flow13/flow_mod_no_match_or_instructions.raw
842
+ - features/open_flow13/goto_table.feature
843
+ - features/open_flow13/hello.feature
844
+ - features/open_flow13/hello_no_version_bitmap.raw
845
+ - features/open_flow13/hello_version_bitmap.raw
846
+ - features/open_flow13/instruction_clear_actions.raw
847
+ - features/open_flow13/instruction_goto_table.raw
848
+ - features/open_flow13/instruction_meter.raw
849
+ - features/open_flow13/instruction_write_actions.raw
850
+ - features/open_flow13/instruction_write_metadata.raw
787
851
  - features/open_flow13/match.feature
788
- - features/open_flow13/oxm_udp_source_field.raw
789
- - features/open_flow13/echo_request_no_body.raw
790
- - features/open_flow13/oxm_masked_ipv6_source_field.raw
852
+ - features/open_flow13/meter.feature
853
+ - features/open_flow13/oxm_ether_destination_field.raw
854
+ - features/open_flow13/oxm_ether_source_field.raw
855
+ - features/open_flow13/oxm_ether_type_field.raw
856
+ - features/open_flow13/oxm_in_phy_port_field.raw
857
+ - features/open_flow13/oxm_in_port_field.raw
858
+ - features/open_flow13/oxm_ipv4_destination_field.raw
859
+ - features/open_flow13/oxm_ipv4_source_field.raw
860
+ - features/open_flow13/oxm_ipv6_destination_field.raw
791
861
  - features/open_flow13/oxm_ipv6_source_field.raw
862
+ - features/open_flow13/oxm_masked_ether_destination_field.raw
863
+ - features/open_flow13/oxm_masked_ether_source_field.raw
792
864
  - features/open_flow13/oxm_masked_ipv4_destination_field.raw
793
- - features/open_flow13/echo_reply.feature
865
+ - features/open_flow13/oxm_masked_ipv4_source_field.raw
866
+ - features/open_flow13/oxm_masked_ipv6_destination_field.raw
867
+ - features/open_flow13/oxm_masked_ipv6_source_field.raw
794
868
  - features/open_flow13/oxm_metadata_field.raw
795
869
  - features/open_flow13/oxm_metadata_masked_field.raw
796
- - features/open_flow13/oxm_ipv4_destination_field.raw
870
+ - features/open_flow13/oxm_no_fields.raw
871
+ - features/open_flow13/oxm_tcp_destination_field.raw
872
+ - features/open_flow13/oxm_tcp_field.raw
873
+ - features/open_flow13/oxm_tcp_source_field.raw
797
874
  - features/open_flow13/oxm_udp_destination_field.raw
798
- - features/open_flow13/hello.feature
799
- - features/open_flow13/oxm_ether_source_field.raw
800
- - features/open_flow13/hello_no_version_bitmap.raw
801
- - features/open_flow13/oxm_ether_destination_field.raw
802
- - features/step_definitions/packet_data_steps.rb
875
+ - features/open_flow13/oxm_udp_field.raw
876
+ - features/open_flow13/oxm_udp_source_field.raw
877
+ - features/open_flow13/send_out_port.feature
878
+ - features/open_flow13/send_out_port.raw
879
+ - features/open_flow13/write_metadata.feature
803
880
  - features/step_definitions/open_flow_steps.rb
804
- - features/icmp.pcap
805
- - features/arp-storm.pcap
881
+ - features/step_definitions/packet_data_steps.rb
882
+ - features/support/env.rb
883
+ - features/udp.feature
806
884
  - features/udp_no_payload.raw
807
- - features/icmp.feature
808
- - features/lldp.detailed.pcap
885
+ - features/udp_with_payload.raw
809
886
  has_rdoc: