pio 0.24.2 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +2 -0
  4. data/bin/byebug +16 -0
  5. data/features/arp.feature +2 -2
  6. data/features/dhcp.feature +4 -4
  7. data/features/icmp.feature +2 -2
  8. data/features/lldp.feature +1 -1
  9. data/features/open_flow10/barrier_reply.feature +4 -4
  10. data/features/open_flow10/barrier_request.feature +4 -4
  11. data/features/open_flow10/echo_reply.feature +6 -6
  12. data/features/open_flow10/echo_request.feature +6 -6
  13. data/features/open_flow10/exact_match.feature +2 -2
  14. data/features/open_flow10/features_reply.feature +2 -2
  15. data/features/open_flow10/features_request.feature +4 -4
  16. data/features/open_flow10/flow_mod.feature +6 -6
  17. data/features/open_flow10/flow_stats_reply.feature +105 -0
  18. data/features/open_flow10/flow_stats_request.feature +90 -0
  19. data/features/open_flow10/hello.feature +4 -4
  20. data/features/open_flow10/packet_in.feature +2 -2
  21. data/features/open_flow10/packet_out.feature +1 -1
  22. data/features/open_flow10/port_status.feature +1 -1
  23. data/features/open_flow13/apply_actions.feature +3 -3
  24. data/features/open_flow13/echo_reply.feature +7 -7
  25. data/features/open_flow13/echo_request.feature +7 -7
  26. data/features/open_flow13/features_reply.feature +2 -2
  27. data/features/open_flow13/features_request.feature +4 -4
  28. data/features/open_flow13/flow_mod.feature +5 -5
  29. data/features/open_flow13/goto_table.feature +2 -2
  30. data/features/open_flow13/hello.feature +5 -5
  31. data/features/open_flow13/match.feature +81 -81
  32. data/features/open_flow13/meter.feature +2 -2
  33. data/features/open_flow13/packet_in.feature +3 -3
  34. data/features/open_flow13/packet_out.feature +3 -3
  35. data/features/open_flow13/send_out_port.feature +2 -2
  36. data/features/open_flow13/write_metadata.feature +2 -2
  37. data/features/open_flow_read.feature +12 -10
  38. data/features/step_definitions/packet_data_steps.rb +3 -3
  39. data/lib/pio/open_flow.rb +4 -1
  40. data/lib/pio/open_flow/message.rb +3 -0
  41. data/lib/pio/open_flow10.rb +2 -0
  42. data/lib/pio/open_flow10/flow_mod.rb +1 -16
  43. data/lib/pio/open_flow10/flow_stats_reply.rb +59 -0
  44. data/lib/pio/open_flow10/flow_stats_request.rb +64 -0
  45. data/lib/pio/open_flow10/match.rb +17 -0
  46. data/lib/pio/open_flow10/stats_type.rb +27 -0
  47. data/lib/pio/version.rb +1 -1
  48. data/pio.gemspec +2 -2
  49. data/spec/pio/open_flow10/flow_stats_reply_spec.rb +39 -0
  50. data/spec/pio/open_flow10/flow_stats_request_spec.rb +38 -0
  51. metadata +185 -173
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d25e470a4443ef4ba0a44d6221ecf050a07c0dd7
4
- data.tar.gz: 0517d69386f0c41461972a38595568c47008bff8
3
+ metadata.gz: 41786852c14579687e22106e6e20821d9fe84e03
4
+ data.tar.gz: eb8c1aff56d304773f7043648002cb52367fe651
5
5
  SHA512:
6
- metadata.gz: dc580a7a68608c3785887da4412f35a38d526eb7cd9f256bb31511884f22e05a876165f679a8d7f2bf184e07c97dcad8c550564d8964b38c7a35cdf644a5260e
7
- data.tar.gz: 82804fa39e8f8ce0934475c6cca8ea1bd93b9543548e2296e2b841cb9c8dfcd98eb941f3c5cb858a8f7863415efe3c03410571ff952d17e67e9c4faeedf00b32
6
+ metadata.gz: bd60d4cf128ac6cfd18dd02d8ca8a4370e14be9025efcd103fd1c27d8206ed142f58d7171372594377ab6e37f9edda5f4c638709cf81b92b4c6c034c28212ba0
7
+ data.tar.gz: 349b05ac02ec3a0b366a2090724fdc6d307c2c5b2036aa8fff81805a9e592a17c46406d6c6fdfe073c72e14da0eb2db0f670e77d0b8bb20dd7a9a22fabb8ae6f
@@ -3,6 +3,11 @@
3
3
  ## develop (unreleased)
4
4
 
5
5
 
6
+ ## 0.25.0 (8/6/2015)
7
+ ### New features
8
+ * [#211](https://github.com/trema/pio/pull/211): Add new classes `Pio::FlowStats::Request` and `Pio::FlowStats::Reply`.
9
+
10
+
6
11
  ## 0.24.2 (8/4/2015)
7
12
  ### Bugs fixed
8
13
  * [#209](https://github.com/trema/pio/issues/209): `Pio::OpenFlow.read` cannot parse Barrier messages.
data/README.md CHANGED
@@ -31,6 +31,8 @@ supports the following packet formats:
31
31
  - [Exact Match](https://relishapp.com/trema/pio/docs/open-flow10/pio-exactmatch)
32
32
  - [Barrier Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-barrier-request)
33
33
  - [Barrier Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-barrier-reply)
34
+ - [Flow Stats Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-flowstats-request)
35
+ - [Flow Stats Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-flowstats-reply)
34
36
  - OpenFlow 1.3
35
37
  - [Hello](https://relishapp.com/trema/pio/docs/open-flow13/pio-hello)
36
38
  - [Echo Request](https://relishapp.com/trema/pio/docs/open-flow13/pio-echo-request)
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'byebug' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('byebug', 'byebug')
@@ -9,7 +9,7 @@ Feature: Pio::Arp
9
9
  )
10
10
  """
11
11
  Then it should finish successfully
12
- And the packet have the following fields and values:
12
+ And the packet has the following fields and values:
13
13
  | field | value |
14
14
  | class | Pio::Arp::Request |
15
15
  | destination_mac | ff:ff:ff:ff:ff:ff |
@@ -36,7 +36,7 @@ Feature: Pio::Arp
36
36
  )
37
37
  """
38
38
  Then it should finish successfully
39
- And the packet have the following fields and values:
39
+ And the packet has the following fields and values:
40
40
  | field | value |
41
41
  | class | Pio::Arp::Reply |
42
42
  | destination_mac | 00:26:82:eb:ea:d1 |
@@ -15,7 +15,7 @@ Feature: Pio::Dhcp
15
15
  )
16
16
  """
17
17
  Then it should finish successfully
18
- And the packet have the following fields and values:
18
+ And the packet has the following fields and values:
19
19
  | field | value |
20
20
  | class | Pio::Dhcp::Ack |
21
21
  | destination_mac | 11:22:33:44:55:66 |
@@ -64,7 +64,7 @@ Feature: Pio::Dhcp
64
64
  )
65
65
  """
66
66
  Then it should finish successfully
67
- And the packet have the following fields and values:
67
+ And the packet has the following fields and values:
68
68
  | field | value |
69
69
  | class | Pio::Dhcp::Discover |
70
70
  | destination_mac | ff:ff:ff:ff:ff:ff |
@@ -112,7 +112,7 @@ Feature: Pio::Dhcp
112
112
  )
113
113
  """
114
114
  Then it should finish successfully
115
- And the packet have the following fields and values:
115
+ And the packet has the following fields and values:
116
116
  | field | value |
117
117
  | class | Pio::Dhcp::Request |
118
118
  | destination_mac | ff:ff:ff:ff:ff:ff |
@@ -166,7 +166,7 @@ Feature: Pio::Dhcp
166
166
  )
167
167
  """
168
168
  Then it should finish successfully
169
- And the packet have the following fields and values:
169
+ And the packet has the following fields and values:
170
170
  | field | value |
171
171
  | class | Pio::Dhcp::Offer |
172
172
  | destination_mac | 11:22:33:44:55:66 |
@@ -10,7 +10,7 @@ Feature: Pio::Icmp
10
10
  )
11
11
  """
12
12
  Then it should finish successfully
13
- And the packet have the following fields and values:
13
+ And the packet has the following fields and values:
14
14
  | field | value |
15
15
  | class | Pio::Icmp::Request |
16
16
  | destination_mac | 00:26:82:eb:ea:d1 |
@@ -49,7 +49,7 @@ Feature: Pio::Icmp
49
49
  )
50
50
  """
51
51
  Then it should finish successfully
52
- And the packet have the following fields and values:
52
+ And the packet has the following fields and values:
53
53
  | field | value |
54
54
  | class | Pio::Icmp::Reply |
55
55
  | destination_mac | 00:16:9d:1d:9c:c4 |
@@ -5,7 +5,7 @@ Feature: Pio::Lldp
5
5
  Pio::Lldp.new(dpid: 0x123, port_number: 12, source_mac: '11:22:33:44:55:66')
6
6
  """
7
7
  Then it should finish successfully
8
- And the message have the following fields and values:
8
+ And the message has the following fields and values:
9
9
  | field | value |
10
10
  | class | Pio::Lldp |
11
11
  | destination_mac | 01:80:c2:00:00:0e |
@@ -6,7 +6,7 @@ Feature: Pio::Barrier::Reply
6
6
  Pio::Barrier::Reply.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | ofp_version | 1 |
12
12
  | message_type | 19 |
@@ -21,7 +21,7 @@ Feature: Pio::Barrier::Reply
21
21
  Pio::Barrier::Reply.new(transaction_id: 123)
22
22
  """
23
23
  Then it should finish successfully
24
- And the message have the following fields and values:
24
+ And the message has the following fields and values:
25
25
  | field | value |
26
26
  | ofp_version | 1 |
27
27
  | message_type | 19 |
@@ -36,7 +36,7 @@ Feature: Pio::Barrier::Reply
36
36
  Pio::Barrier::Reply.new(xid: 123)
37
37
  """
38
38
  Then it should finish successfully
39
- And the message have the following fields and values:
39
+ And the message has the following fields and values:
40
40
  | field | value |
41
41
  | ofp_version | 1 |
42
42
  | message_type | 19 |
@@ -48,7 +48,7 @@ Feature: Pio::Barrier::Reply
48
48
  Scenario: read
49
49
  When I try to parse a file named "open_flow10/barrier_reply.raw" with "Barrier::Reply" class
50
50
  Then it should finish successfully
51
- And the message have the following fields and values:
51
+ And the message has the following fields and values:
52
52
  | field | value |
53
53
  | ofp_version | 1 |
54
54
  | message_type | 19 |
@@ -6,7 +6,7 @@ Feature: Pio::Barrier::Request
6
6
  Pio::Barrier::Request.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | ofp_version | 1 |
12
12
  | message_type | 18 |
@@ -21,7 +21,7 @@ Feature: Pio::Barrier::Request
21
21
  Pio::Barrier::Request.new(transaction_id: 123)
22
22
  """
23
23
  Then it should finish successfully
24
- And the message have the following fields and values:
24
+ And the message has the following fields and values:
25
25
  | field | value |
26
26
  | ofp_version | 1 |
27
27
  | message_type | 18 |
@@ -36,7 +36,7 @@ Feature: Pio::Barrier::Request
36
36
  Pio::Barrier::Request.new(xid: 123)
37
37
  """
38
38
  Then it should finish successfully
39
- And the message have the following fields and values:
39
+ And the message has the following fields and values:
40
40
  | field | value |
41
41
  | ofp_version | 1 |
42
42
  | message_type | 18 |
@@ -48,7 +48,7 @@ Feature: Pio::Barrier::Request
48
48
  Scenario: read
49
49
  When I try to parse a file named "open_flow10/barrier_request.raw" with "Barrier::Request" class
50
50
  Then it should finish successfully
51
- And the message have the following fields and values:
51
+ And the message has the following fields and values:
52
52
  | field | value |
53
53
  | ofp_version | 1 |
54
54
  | message_type | 18 |
@@ -6,7 +6,7 @@ Feature: Pio::Echo::Reply
6
6
  Pio::Echo::Reply.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | ofp_version | 1 |
12
12
  | message_type | 3 |
@@ -22,7 +22,7 @@ Feature: Pio::Echo::Reply
22
22
  Pio::Echo::Reply.new(transaction_id: 123)
23
23
  """
24
24
  Then it should finish successfully
25
- And the message have the following fields and values:
25
+ And the message has the following fields and values:
26
26
  | field | value |
27
27
  | ofp_version | 1 |
28
28
  | message_type | 3 |
@@ -38,7 +38,7 @@ Feature: Pio::Echo::Reply
38
38
  Pio::Echo::Reply.new(xid: 123)
39
39
  """
40
40
  Then it should finish successfully
41
- And the message have the following fields and values:
41
+ And the message has the following fields and values:
42
42
  | field | value |
43
43
  | ofp_version | 1 |
44
44
  | message_type | 3 |
@@ -61,7 +61,7 @@ Feature: Pio::Echo::Reply
61
61
  Pio::Echo::Reply.new(body: 'echo reply body')
62
62
  """
63
63
  Then it should finish successfully
64
- And the message have the following fields and values:
64
+ And the message has the following fields and values:
65
65
  | field | value |
66
66
  | ofp_version | 1 |
67
67
  | message_type | 3 |
@@ -77,7 +77,7 @@ Feature: Pio::Echo::Reply
77
77
  Pio::Echo::Reply.new(user_data: 'echo reply body')
78
78
  """
79
79
  Then it should finish successfully
80
- And the message have the following fields and values:
80
+ And the message has the following fields and values:
81
81
  | field | value |
82
82
  | ofp_version | 1 |
83
83
  | message_type | 3 |
@@ -90,7 +90,7 @@ Feature: Pio::Echo::Reply
90
90
  Scenario: read (no message body)
91
91
  When I try to parse a file named "open_flow10/echo_reply.raw" with "Pio::Echo::Reply" class
92
92
  Then it should finish successfully
93
- And the message have the following fields and values:
93
+ And the message has the following fields and values:
94
94
  | field | value |
95
95
  | ofp_version | 1 |
96
96
  | message_type | 3 |
@@ -6,7 +6,7 @@ Feature: Pio::Echo::Request
6
6
  Pio::Echo::Request.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | ofp_version | 1 |
12
12
  | message_type | 2 |
@@ -22,7 +22,7 @@ Feature: Pio::Echo::Request
22
22
  Pio::Echo::Request.new(transaction_id: 123)
23
23
  """
24
24
  Then it should finish successfully
25
- And the message have the following fields and values:
25
+ And the message has the following fields and values:
26
26
  | field | value |
27
27
  | ofp_version | 1 |
28
28
  | message_type | 2 |
@@ -38,7 +38,7 @@ Feature: Pio::Echo::Request
38
38
  Pio::Echo::Request.new(xid: 123)
39
39
  """
40
40
  Then it should finish successfully
41
- And the message have the following fields and values:
41
+ And the message has the following fields and values:
42
42
  | field | value |
43
43
  | ofp_version | 1 |
44
44
  | message_type | 2 |
@@ -54,7 +54,7 @@ Feature: Pio::Echo::Request
54
54
  Pio::Echo::Request.new(body: 'echo request body')
55
55
  """
56
56
  Then it should finish successfully
57
- And the message have the following fields and values:
57
+ And the message has the following fields and values:
58
58
  | field | value |
59
59
  | ofp_version | 1 |
60
60
  | message_type | 2 |
@@ -70,7 +70,7 @@ Feature: Pio::Echo::Request
70
70
  Pio::Echo::Request.new(user_data: 'echo request body')
71
71
  """
72
72
  Then it should finish successfully
73
- And the message have the following fields and values:
73
+ And the message has the following fields and values:
74
74
  | field | value |
75
75
  | ofp_version | 1 |
76
76
  | message_type | 2 |
@@ -83,7 +83,7 @@ Feature: Pio::Echo::Request
83
83
  Scenario: read (no message body)
84
84
  When I try to parse a file named "open_flow10/echo_request.raw" with "Pio::Echo::Request" class
85
85
  Then it should finish successfully
86
- And the message have the following fields and values:
86
+ And the message has the following fields and values:
87
87
  | field | value |
88
88
  | ofp_version | 1 |
89
89
  | message_type | 2 |
@@ -1,7 +1,7 @@
1
1
  Feature: Pio::ExactMatch
2
2
  Scenario: new (from ARP request Packet In)
3
3
  When I create an exact match from "open_flow10/packet_in_arp_request.raw"
4
- And the message have the following fields and values:
4
+ And the message has the following fields and values:
5
5
  | field | value |
6
6
  | wildcards | {} |
7
7
  | in_port | 1 |
@@ -19,7 +19,7 @@ Feature: Pio::ExactMatch
19
19
 
20
20
  Scenario: new (from Cbench Packet In)
21
21
  When I create an exact match from "open_flow10/packet_in_cbench.raw"
22
- And the message have the following fields and values:
22
+ And the message has the following fields and values:
23
23
  | field | value |
24
24
  | wildcards | {} |
25
25
  | in_port | 1 |
@@ -21,7 +21,7 @@ Feature: Pio::Features::Reply
21
21
  )
22
22
  """
23
23
  Then it should finish successfully
24
- And the message have the following fields and values:
24
+ And the message has the following fields and values:
25
25
  | field | value |
26
26
  | ofp_version | 1 |
27
27
  | message_type | 6 |
@@ -50,7 +50,7 @@ Feature: Pio::Features::Reply
50
50
  Scenario: read
51
51
  When I try to parse a file named "open_flow10/features_reply.raw" with "Features::Reply" class
52
52
  Then it should finish successfully
53
- And the message have the following fields and values:
53
+ And the message has the following fields and values:
54
54
  | field | value |
55
55
  | ofp_version | 1 |
56
56
  | message_type | 6 |
@@ -6,7 +6,7 @@ Feature: Pio::Features::Request
6
6
  Pio::Features::Request.new
7
7
  """
8
8
  Then it should finish successfully
9
- And the message have the following fields and values:
9
+ And the message has the following fields and values:
10
10
  | field | value |
11
11
  | ofp_version | 1 |
12
12
  | message_type | 5 |
@@ -21,7 +21,7 @@ Feature: Pio::Features::Request
21
21
  Pio::Features::Request.new(transaction_id: 123)
22
22
  """
23
23
  Then it should finish successfully
24
- And the message have the following fields and values:
24
+ And the message has the following fields and values:
25
25
  | field | value |
26
26
  | ofp_version | 1 |
27
27
  | message_type | 5 |
@@ -36,7 +36,7 @@ Feature: Pio::Features::Request
36
36
  Pio::Features::Request.new(xid: 123)
37
37
  """
38
38
  Then it should finish successfully
39
- And the message have the following fields and values:
39
+ And the message has the following fields and values:
40
40
  | field | value |
41
41
  | ofp_version | 1 |
42
42
  | message_type | 5 |
@@ -48,7 +48,7 @@ Feature: Pio::Features::Request
48
48
  Scenario: read
49
49
  When I try to parse a file named "open_flow10/features_request.raw" with "Pio::Features::Request" class
50
50
  Then it should finish successfully
51
- And the message have the following fields and values:
51
+ And the message has the following fields and values:
52
52
  | field | value |
53
53
  | ofp_version | 1 |
54
54
  | message_type | 5 |
@@ -16,7 +16,7 @@ Feature: Pio::FlowMod
16
16
  )
17
17
  """
18
18
  Then it should finish successfully
19
- And the message have the following fields and values:
19
+ And the message has the following fields and values:
20
20
  | field | value |
21
21
  | ofp_version | 1 |
22
22
  | message_type | 14 |
@@ -45,7 +45,7 @@ Feature: Pio::FlowMod
45
45
  Scenario: read (Flow Mod Add)
46
46
  When I try to parse a file named "open_flow10/flow_mod_add.raw" with "Pio::FlowMod" class
47
47
  Then it should finish successfully
48
- And the message have the following fields and values:
48
+ And the message has the following fields and values:
49
49
  | field | value |
50
50
  | ofp_version | 1 |
51
51
  | message_type | 14 |
@@ -82,7 +82,7 @@ Feature: Pio::FlowMod
82
82
  Scenario: read (Flow Mod Modify)
83
83
  When I try to parse a file named "open_flow10/flow_mod_modify.raw" with "Pio::FlowMod" class
84
84
  Then it should finish successfully
85
- And the message have the following fields and values:
85
+ And the message has the following fields and values:
86
86
  | field | value |
87
87
  | ofp_version | 1 |
88
88
  | message_type | 14 |
@@ -119,7 +119,7 @@ Feature: Pio::FlowMod
119
119
  Scenario: read (Flow Mod Modify Strict)
120
120
  When I try to parse a file named "open_flow10/flow_mod_modify_strict.raw" with "Pio::FlowMod" class
121
121
  Then it should finish successfully
122
- And the message have the following fields and values:
122
+ And the message has the following fields and values:
123
123
  | field | value |
124
124
  | ofp_version | 1 |
125
125
  | message_type | 14 |
@@ -156,7 +156,7 @@ Feature: Pio::FlowMod
156
156
  Scenario: read (Flow Mod Delete)
157
157
  When I try to parse a file named "open_flow10/flow_mod_delete.raw" with "Pio::FlowMod" class
158
158
  Then it should finish successfully
159
- And the message have the following fields and values:
159
+ And the message has the following fields and values:
160
160
  | field | value |
161
161
  | ofp_version | 1 |
162
162
  | message_type | 14 |
@@ -191,7 +191,7 @@ Feature: Pio::FlowMod
191
191
  Scenario: read (Flow Mod Delete Strict)
192
192
  When I try to parse a file named "open_flow10/flow_mod_delete_strict.raw" with "Pio::FlowMod" class
193
193
  Then it should finish successfully
194
- And the message have the following fields and values:
194
+ And the message has the following fields and values:
195
195
  | field | value |
196
196
  | ofp_version | 1 |
197
197
  | message_type | 14 |
@@ -0,0 +1,105 @@
1
+ @open_flow10
2
+ Feature: Pio::FlowStats::Reply
3
+ Scenario: new
4
+ When I try to create an OpenFlow message with:
5
+ """
6
+ Pio::FlowStats::Reply.new
7
+ """
8
+ Then it should finish successfully
9
+ And the message has the following fields and values:
10
+ | field | value |
11
+ | ofp_version | 1 |
12
+ | message_type | 17 |
13
+ | message_length | 12 |
14
+ | transaction_id | 0 |
15
+ | xid | 0 |
16
+ | stats_type | :flow |
17
+ | stats.size | 0 |
18
+
19
+ @wip
20
+ Scenario: new(more options)
21
+ When I try to create an OpenFlow message with:
22
+ """
23
+ Pio::FlowStats::Reply.new(more options)
24
+ """
25
+ Then it should finish successfully
26
+
27
+ Scenario: read
28
+ When I try to parse a file named "open_flow10/flow_stats_reply.raw" with "FlowStats::Reply" class
29
+ Then it should finish successfully
30
+ And the message has the following fields and values:
31
+ | field | value |
32
+ | ofp_version | 1 |
33
+ | message_type | 17 |
34
+ | message_length | 228 |
35
+ | transaction_id | 6 |
36
+ | xid | 6 |
37
+ | stats_type | :flow |
38
+ | stats.size | 2 |
39
+ | stats[0].entry_length | 104 |
40
+ | stats[0].table_id | 3 |
41
+ | stats[0].match.wildcards.keys.size | 14 |
42
+ | stats[0].match.wildcards.fetch(:ether_destination_address) | true |
43
+ | stats[0].match.wildcards.fetch(:ether_source_address) | true |
44
+ | stats[0].match.wildcards.fetch(:ether_type) | true |
45
+ | stats[0].match.wildcards.fetch(:in_port) | true |
46
+ | stats[0].match.wildcards.fetch(:ip_destination_address) | 31 |
47
+ | stats[0].match.wildcards.fetch(:ip_destination_address_all) | true |
48
+ | stats[0].match.wildcards.fetch(:ip_protocol) | true |
49
+ | stats[0].match.wildcards.fetch(:ip_source_address) | 31 |
50
+ | stats[0].match.wildcards.fetch(:ip_source_address_all) | true |
51
+ | stats[0].match.wildcards.fetch(:ip_tos) | true |
52
+ | stats[0].match.wildcards.fetch(:transport_destination_port) | true |
53
+ | stats[0].match.wildcards.fetch(:transport_source_port) | true |
54
+ | stats[0].match.wildcards.fetch(:vlan_priority) | true |
55
+ | stats[0].match.wildcards.fetch(:vlan_vid) | true |
56
+ | stats[0].duration_sec | 1 |
57
+ | stats[0].duration_nsec | 2 |
58
+ | stats[0].priority | 100 |
59
+ | stats[0].idle_timeout | 5 |
60
+ | stats[0].hard_timeout | 10 |
61
+ | stats[0].cookie.to_hex | 0x123456789abcdef |
62
+ | stats[0].packet_count | 10 |
63
+ | stats[0].byte_count | 1000 |
64
+ | stats[0].actions.length | 2 |
65
+ | stats[0].actions[0].class | Pio::OpenFlow10::SendOutPort |
66
+ | stats[0].actions[0].port_number | 1 |
67
+ | stats[0].actions[0].max_len | 0 |
68
+ | stats[0].actions[1].class | Pio::OpenFlow10::SendOutPort |
69
+ | stats[0].actions[1].port_number | 2 |
70
+ | stats[0].actions[1].max_len | 0 |
71
+ | stats[1].entry_length | 112 |
72
+ | stats[1].table_id | 4 |
73
+ | stats[1].match.wildcards.keys.size | 14 |
74
+ | stats[1].match.wildcards.fetch(:ether_destination_address) | true |
75
+ | stats[1].match.wildcards.fetch(:ether_source_address) | true |
76
+ | stats[1].match.wildcards.fetch(:ether_type) | true |
77
+ | stats[1].match.wildcards.fetch(:in_port) | true |
78
+ | stats[1].match.wildcards.fetch(:ip_destination_address) | 31 |
79
+ | stats[1].match.wildcards.fetch(:ip_destination_address_all) | true |
80
+ | stats[1].match.wildcards.fetch(:ip_protocol) | true |
81
+ | stats[1].match.wildcards.fetch(:ip_source_address) | 31 |
82
+ | stats[1].match.wildcards.fetch(:ip_source_address_all) | true |
83
+ | stats[1].match.wildcards.fetch(:ip_tos) | true |
84
+ | stats[1].match.wildcards.fetch(:transport_destination_port) | true |
85
+ | stats[1].match.wildcards.fetch(:transport_source_port) | true |
86
+ | stats[1].match.wildcards.fetch(:vlan_priority) | true |
87
+ | stats[1].match.wildcards.fetch(:vlan_vid) | true |
88
+ | stats[1].duration_sec | 1 |
89
+ | stats[1].duration_nsec | 2 |
90
+ | stats[1].priority | 100 |
91
+ | stats[1].idle_timeout | 5 |
92
+ | stats[1].hard_timeout | 10 |
93
+ | stats[1].cookie.to_hex | 0x123456789abcdef |
94
+ | stats[1].packet_count | 10 |
95
+ | stats[1].byte_count | 1000 |
96
+ | stats[1].actions.length | 3 |
97
+ | stats[1].actions[0].class | Pio::OpenFlow10::SendOutPort |
98
+ | stats[1].actions[0].port_number | 1 |
99
+ | stats[1].actions[0].max_len | 0 |
100
+ | stats[1].actions[1].class | Pio::OpenFlow10::SendOutPort |
101
+ | stats[1].actions[1].port_number | 2 |
102
+ | stats[1].actions[1].max_len | 0 |
103
+ | stats[1].actions[2].class | Pio::OpenFlow10::SendOutPort |
104
+ | stats[1].actions[2].port_number | 3 |
105
+ | stats[1].actions[2].max_len | 0 |