pio 0.19.0 → 0.20.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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +20 -18
  4. data/features/{packet_data/arp-storm.pcap → arp-storm.pcap} +0 -0
  5. data/features/arp.feature +1 -1
  6. data/features/{packet_data/arp.pcap → arp.pcap} +0 -0
  7. data/features/dhcp.feature +210 -3
  8. data/features/{packet_data/dhcp.pcap → dhcp.pcap} +0 -0
  9. data/features/icmp.feature +1 -1
  10. data/features/{packet_data/icmp.pcap → icmp.pcap} +0 -0
  11. data/features/{packet_data/lldp.detailed.pcap → lldp.detailed.pcap} +0 -0
  12. data/features/lldp.feature +5 -5
  13. data/features/{packet_data/lldp.minimal.pcap → lldp.minimal.pcap} +0 -0
  14. data/features/{packet_data → open_flow10}/aggregate_stats_reply.raw +0 -0
  15. data/features/{packet_data → open_flow10}/aggregate_stats_request.raw +0 -0
  16. data/features/{packet_data → open_flow10}/barrier_reply.raw +0 -0
  17. data/features/{packet_data → open_flow10}/barrier_request.raw +0 -0
  18. data/features/{packet_data → open_flow10}/desc_stats_reply.raw +0 -0
  19. data/features/{packet_data → open_flow10}/desc_stats_request.raw +0 -0
  20. data/features/open_flow10/echo_reply.feature +10 -10
  21. data/features/{packet_data → open_flow10}/echo_reply.raw +0 -0
  22. data/features/open_flow10/echo_request.feature +10 -10
  23. data/features/{packet_data → open_flow10}/echo_request.raw +0 -0
  24. data/features/{packet_data → open_flow10}/error.raw +0 -0
  25. data/features/open_flow10/exact_match.feature +33 -33
  26. data/features/open_flow10/features_reply.feature +71 -71
  27. data/features/{packet_data → open_flow10}/features_reply.raw +0 -0
  28. data/features/open_flow10/features_request.feature +9 -9
  29. data/features/{packet_data → open_flow10}/features_request.raw +0 -0
  30. data/features/open_flow10/flow_mod.feature +167 -167
  31. data/features/{packet_data → open_flow10}/flow_mod_add.raw +0 -0
  32. data/features/{packet_data → open_flow10}/flow_mod_delete.raw +0 -0
  33. data/features/{packet_data → open_flow10}/flow_mod_delete_strict.raw +0 -0
  34. data/features/{packet_data → open_flow10}/flow_mod_modify.raw +0 -0
  35. data/features/{packet_data → open_flow10}/flow_mod_modify_strict.raw +0 -0
  36. data/features/{packet_data → open_flow10}/flow_removed.raw +0 -0
  37. data/features/{packet_data → open_flow10}/flow_stats_reply.raw +0 -0
  38. data/features/{packet_data → open_flow10}/flow_stats_request.raw +0 -0
  39. data/features/{packet_data → open_flow10}/get_config_reply.raw +0 -0
  40. data/features/{packet_data → open_flow10}/get_config_request.raw +0 -0
  41. data/features/open_flow10/hello.feature +9 -9
  42. data/features/{packet_data → open_flow10}/hello.raw +0 -0
  43. data/features/open_flow10/packet_in.feature +4 -4
  44. data/features/{packet_data → open_flow10}/packet_in_arp_request.raw +0 -0
  45. data/features/{packet_data → open_flow10}/packet_in_cbench.raw +0 -0
  46. data/features/open_flow10/packet_out.feature +3 -3
  47. data/features/{packet_data → open_flow10}/packet_out.raw +0 -0
  48. data/features/{packet_data → open_flow10}/port_mod.raw +0 -0
  49. data/features/{packet_data → open_flow10}/port_stats_reply.raw +0 -0
  50. data/features/{packet_data → open_flow10}/port_stats_request.raw +0 -0
  51. data/features/open_flow10/port_status.feature +3 -3
  52. data/features/{packet_data → open_flow10}/port_status.raw +0 -0
  53. data/features/{packet_data → open_flow10}/queue_get_config_reply.raw +0 -0
  54. data/features/{packet_data → open_flow10}/queue_get_config_request.raw +0 -0
  55. data/features/{packet_data → open_flow10}/set_config.raw +0 -0
  56. data/features/{packet_data → open_flow10}/table_stats_reply.raw +0 -0
  57. data/features/{packet_data → open_flow10}/table_stats_request.raw +0 -0
  58. data/features/{packet_data → open_flow10}/vendor.raw +0 -0
  59. data/features/{packet_data → open_flow10}/vendor_stats_request.raw +0 -0
  60. data/features/open_flow13/echo_reply.feature +64 -61
  61. data/features/{packet_data/echo13_reply_body.raw → open_flow13/echo_reply_body.raw} +0 -0
  62. data/features/{packet_data/echo13_reply_no_body.raw → open_flow13/echo_reply_no_body.raw} +0 -0
  63. data/features/open_flow13/echo_request.feature +64 -61
  64. data/features/{packet_data/echo13_request_body.raw → open_flow13/echo_request_body.raw} +0 -0
  65. data/features/{packet_data/echo13_request_no_body.raw → open_flow13/echo_request_no_body.raw} +0 -0
  66. data/features/open_flow13/features_reply.feature +53 -0
  67. data/features/open_flow13/features_reply.raw +0 -0
  68. data/features/open_flow13/features_request.feature +89 -0
  69. data/features/open_flow13/features_request.raw +0 -0
  70. data/features/open_flow13/hello.feature +26 -23
  71. data/features/{packet_data/hello13_no_version_bitmap.raw → open_flow13/hello_no_version_bitmap.raw} +0 -0
  72. data/features/{packet_data/hello13_version_bitmap.raw → open_flow13/hello_version_bitmap.raw} +0 -0
  73. data/features/step_definitions/open_flow_steps.rb +3 -0
  74. data/features/step_definitions/packet_data_steps.rb +9 -9
  75. data/features/udp.feature +3 -3
  76. data/features/{packet_data/udp_no_payload.raw → udp_no_payload.raw} +0 -0
  77. data/features/{packet_data/udp_with_payload.raw → udp_with_payload.raw} +0 -0
  78. data/lib/pio.rb +1 -9
  79. data/lib/pio/open_flow/actions.rb +8 -8
  80. data/lib/pio/open_flow/open_flow_header.rb +10 -0
  81. data/lib/pio/open_flow10.rb +15 -0
  82. data/lib/pio/open_flow10/echo.rb +15 -0
  83. data/lib/pio/open_flow10/exact_match.rb +51 -0
  84. data/lib/pio/{features.rb → open_flow10/features.rb} +8 -7
  85. data/lib/pio/{flow_mod.rb → open_flow10/flow_mod.rb} +1 -1
  86. data/lib/pio/{hello.rb → open_flow10/hello.rb} +0 -0
  87. data/lib/pio/{match.rb → open_flow10/match.rb} +46 -43
  88. data/lib/pio/{packet_in.rb → open_flow10/packet_in.rb} +0 -0
  89. data/lib/pio/{packet_out.rb → open_flow10/packet_out.rb} +0 -0
  90. data/lib/pio/{port_status.rb → open_flow10/port_status.rb} +0 -0
  91. data/lib/pio/open_flow13.rb +12 -0
  92. data/lib/pio/{echo.rb → open_flow13/echo.rb} +9 -13
  93. data/lib/pio/open_flow13/features_reply.rb +91 -0
  94. data/lib/pio/open_flow13/features_request.rb +54 -0
  95. data/lib/pio/{hello13.rb → open_flow13/hello.rb} +4 -1
  96. data/lib/pio/{set_eth_addr.rb → set_ether_address.rb} +7 -7
  97. data/lib/pio/{set_ip_addr.rb → set_ip_address.rb} +7 -7
  98. data/lib/pio/set_ip_tos.rb +1 -1
  99. data/lib/pio/set_transport_port.rb +2 -2
  100. data/lib/pio/version.rb +1 -1
  101. data/pio.gemspec +2 -2
  102. data/spec/pio/flow_mod_spec.rb +45 -45
  103. data/spec/pio/match_spec.rb +122 -120
  104. data/spec/pio/{hello13_spec.rb → open_flow13/hello_spec.rb} +11 -11
  105. data/spec/pio/packet_out_spec.rb +19 -19
  106. data/spec/pio/set_ether_destination_address_spec.rb +28 -0
  107. data/spec/pio/set_ether_source_address_spec.rb +28 -0
  108. data/spec/pio/set_ip_destination_address_spec.rb +27 -0
  109. data/spec/pio/set_ip_source_address_spec.rb +25 -0
  110. data/spec/pio/set_transport_destination_port_spec.rb +44 -0
  111. data/spec/pio/set_transport_source_port_spec.rb +44 -0
  112. data/spec/pio/wildcards_spec.rb +23 -21
  113. metadata +179 -165
  114. data/bin/byebug +0 -16
  115. data/lib/pio/exact_match.rb +0 -51
  116. data/spec/pio/set_eth_dst_addr_spec.rb +0 -28
  117. data/spec/pio/set_eth_src_addr_spec.rb +0 -28
  118. data/spec/pio/set_ip_dst_addr_spec.rb +0 -25
  119. data/spec/pio/set_ip_src_addr_spec.rb +0 -25
  120. data/spec/pio/set_transport_dst_port_spec.rb +0 -42
  121. data/spec/pio/set_transport_src_port_spec.rb +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d398d469faa1ab4517f72921247962e703371504
4
- data.tar.gz: 2861613dfbf72b3a32a7eab8020f1120ecdbfd9e
3
+ metadata.gz: 15195571fe7c141395cd1572b998234034efa9bc
4
+ data.tar.gz: 4ba2b471920192bf57fab208e55bd1d478e43396
5
5
  SHA512:
6
- metadata.gz: 2510e49704a383db42c738e2b34e41b19b232ace5392a5f3f2e107b917abde8280eb892e001a7e0e3e7aad4ece7d4440f55b1edf68f7ac1bd544854a9d3285f0
7
- data.tar.gz: ae229fe4badbb4a0fc24bb8cf58ead7e1e667632a47f031f5d42c09de0d60309ce10df5cf50b15bfc43049ab0d0b65a565889a7e7e3768bb3282373bdb55673b
6
+ metadata.gz: d2c6f163e175af2b1606101f7d2e7eab097d5c4ad2c120791f6ef64ea3dd36c11ff62814b4de7a24c2e6d416d5040b83c3d5bfb388e09c9dbcfa3f9853f42225
7
+ data.tar.gz: 397513caef878bfb1480b17f90f10e62f04c7b6932af1d23c78308f70059f4427ee6410169f929cbe0fac94515407f30979e603343bf5b096a807a2f70d3be8f
data/CHANGELOG.md CHANGED
@@ -1,6 +1,15 @@
1
1
  # Changelog
2
2
 
3
3
  ## develop (unreleased)
4
+
5
+
6
+ ## 0.20.0 (4/22/2015)
7
+ ### New features
8
+ * [#138](https://github.com/trema/pio/pull/138): Add new class `Pio::Features::Request`.
9
+ * [#153](https://github.com/trema/pio/pull/153): Add new class `Pio::Features::Reply`.
10
+
11
+
12
+ ## 0.19.0 (4/9/2015)
4
13
  ### New features
5
14
  * [#132](https://github.com/trema/pio/pull/132): Add new class `Pio::Hello13`.
6
15
  * [#136](https://github.com/trema/pio/pull/136): Add new class `Pio::Echo13::Request` and `Pio::Echo13::Reply`.
data/README.md CHANGED
@@ -13,26 +13,28 @@
13
13
  Pio is a ruby gem to easily parse and generate network packets. It
14
14
  supports the following packet formats:
15
15
 
16
- - [ICMP](https://relishapp.com/trema/pio/docs/misc/icmp)
17
- - [ARP](https://relishapp.com/trema/pio/docs/misc/arp)
18
- - [LLDP](https://relishapp.com/trema/pio/docs/misc/lldp)
19
- - [DHCP](https://relishapp.com/trema/pio/docs/misc/dhcp)
20
- - [UDP](https://relishapp.com/trema/pio/docs/misc/udp)
16
+ - [ICMP](https://relishapp.com/trema/pio/docs/pio-icmp)
17
+ - [ARP](https://relishapp.com/trema/pio/docs/pio-arp)
18
+ - [LLDP](https://relishapp.com/trema/pio/docs/pio-lldp)
19
+ - [DHCP](https://relishapp.com/trema/pio/docs/pio-dhcp)
20
+ - [UDP](https://relishapp.com/trema/pio/docs/pio-udp)
21
21
  - OpenFlow 1.0
22
- - [Hello](https://relishapp.com/trema/pio/docs/open-flow10/hello)
23
- - [Echo Request](https://relishapp.com/trema/pio/docs/open-flow10/echo-request)
24
- - [Echo Reply](https://relishapp.com/trema/pio/docs/open-flow10/echo-reply)
25
- - [Features Request](https://relishapp.com/trema/pio/docs/open-flow10/features-request)
26
- - [Features Reply](https://relishapp.com/trema/pio/docs/open-flow10/features-reply)
27
- - [Packet In](https://relishapp.com/trema/pio/docs/open-flow10/packet-in)
28
- - [Packet Out](https://relishapp.com/trema/pio/docs/open-flow10/packet-out)
29
- - [Flow Mod](https://relishapp.com/trema/pio/docs/open-flow10/flow-mod)
30
- - [Port Status](https://relishapp.com/trema/pio/docs/open-flow10/port-status)
31
- - [Exact Match](https://relishapp.com/trema/pio/docs/open-flow10/exact-match)
22
+ - [Hello](https://relishapp.com/trema/pio/docs/open-flow10/pio-hello)
23
+ - [Echo Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-echo-request)
24
+ - [Echo Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-echo-reply)
25
+ - [Features Request](https://relishapp.com/trema/pio/docs/open-flow10/pio-features-request)
26
+ - [Features Reply](https://relishapp.com/trema/pio/docs/open-flow10/pio-features-reply)
27
+ - [Packet In](https://relishapp.com/trema/pio/docs/open-flow10/pio-packetin)
28
+ - [Packet Out](https://relishapp.com/trema/pio/docs/open-flow10/pio-packetout)
29
+ - [Flow Mod](https://relishapp.com/trema/pio/docs/open-flow10/pio-flowmod)
30
+ - [Port Status](https://relishapp.com/trema/pio/docs/open-flow10/pio-portstatus)
31
+ - [Exact Match](https://relishapp.com/trema/pio/docs/open-flow10/pio-exactmatch)
32
32
  - OpenFlow 1.3
33
- - [Hello](https://relishapp.com/trema/pio/docs/open-flow13/hello)
34
- - [Echo Request](https://relishapp.com/trema/pio/docs/open-flow13/echo-request)
35
- - [Echo Reply](https://relishapp.com/trema/pio/docs/open-flow13/echo-reply)
33
+ - [Hello](https://relishapp.com/trema/pio/docs/open-flow13/pio-hello)
34
+ - [Echo Request](https://relishapp.com/trema/pio/docs/open-flow13/pio-echo-request)
35
+ - [Echo Reply](https://relishapp.com/trema/pio/docs/open-flow13/pio-echo-reply)
36
+ - [Features Request](https://relishapp.com/trema/pio/docs/open-flow13/pio-features-request)
37
+ - [Features Reply](https://relishapp.com/trema/pio/docs/open-flow13/pio-features-reply)
36
38
 
37
39
  ## Features Overview
38
40
 
data/features/arp.feature CHANGED
@@ -1,4 +1,4 @@
1
- Feature: ARP
1
+ Feature: Pio::Arp
2
2
  Scenario: create an ARP request
3
3
  When I try to create a packet with:
4
4
  """
File without changes
@@ -1,4 +1,211 @@
1
- Feature: DHCP
2
- Scenario: dhcp.pcap
3
- When I try to parse a file named "dhcp.pcap" with "Dhcp" class
1
+ Feature: Pio::Dhcp
2
+ Scenario: create a DHCP Ack
3
+ When I try to create a packet with:
4
+ """
5
+ Pio::Dhcp::Ack.new(
6
+ source_mac: 'aa:bb:cc:dd:ee:ff',
7
+ destination_mac: '11:22:33:44:55:66',
8
+ ip_source_address: '192.168.0.10',
9
+ ip_destination_address: '192.168.0.1',
10
+ transaction_id: 0xdeadbeef,
11
+ renewal_time_value: 0xdeadbeef,
12
+ rebinding_time_value: 0xdeadbeef,
13
+ ip_address_lease_time: 0xdeadbeef,
14
+ subnet_mask: '255.255.255.0'
15
+ )
16
+ """
17
+ Then it should finish successfully
18
+ And the packet have the following fields and values:
19
+ | field | value |
20
+ | class | Pio::Dhcp::Ack |
21
+ | destination_mac | 11:22:33:44:55:66 |
22
+ | source_mac | aa:bb:cc:dd:ee:ff |
23
+ | ether_type | 2048 |
24
+ | ip_version | 4 |
25
+ | ip_header_length | 5 |
26
+ | ip_type_of_service | 0 |
27
+ | ip_total_length | 328 |
28
+ | ip_identifier | 0 |
29
+ | ip_flag | 0 |
30
+ | ip_fragment | 0 |
31
+ | ip_ttl | 128 |
32
+ | ip_protocol | 17 |
33
+ | ip_header_checksum | 47177 |
34
+ | ip_source_address | 192.168.0.10 |
35
+ | ip_destination_address | 192.168.0.1 |
36
+ | udp_source_port | 67 |
37
+ | udp_destination_port | 68 |
38
+ | udp_length | 308 |
39
+ | udp_checksum | 7012 |
40
+ | message_type | 5 |
41
+ | hw_addr_type | 1 |
42
+ | hw_addr_len | 6 |
43
+ | hops | 0 |
44
+ | transaction_id | 3735928559 |
45
+ | seconds | 0 |
46
+ | bootp_flags | 0 |
47
+ | client_ip_address | 0.0.0.0 |
48
+ | your_ip_address | 192.168.0.1 |
49
+ | next_server_ip_address | 0.0.0.0 |
50
+ | relay_agent_ip_address | 0.0.0.0 |
51
+ | client_mac_address | aa:bb:cc:dd:ee:ff |
52
+ | subnet_mask | 255.255.255.0 |
53
+ | server_identifier | 192.168.0.10 |
54
+ | renewal_time_value | 3735928559 |
55
+ | rebinding_time_value | 3735928559 |
56
+ | ip_address_lease_time | 3735928559 |
57
+
58
+ Scenario: create a DHCP Discover
59
+ When I try to create a packet with:
60
+ """
61
+ Pio::Dhcp::Discover.new(
62
+ source_mac: '24:db:ac:41:e5:5b',
63
+ transaction_id: 0xdeadbeef
64
+ )
65
+ """
66
+ Then it should finish successfully
67
+ And the packet have the following fields and values:
68
+ | field | value |
69
+ | class | Pio::Dhcp::Discover |
70
+ | destination_mac | ff:ff:ff:ff:ff:ff |
71
+ | source_mac | 24:db:ac:41:e5:5b |
72
+ | ether_type | 2048 |
73
+ | ip_version | 4 |
74
+ | ip_header_length | 5 |
75
+ | ip_type_of_service | 0 |
76
+ | ip_total_length | 328 |
77
+ | ip_identifier | 0 |
78
+ | ip_flag | 0 |
79
+ | ip_fragment | 0 |
80
+ | ip_ttl | 128 |
81
+ | ip_protocol | 17 |
82
+ | ip_header_checksum | 14758 |
83
+ | ip_source_address | 0.0.0.0 |
84
+ | ip_destination_address | 255.255.255.255 |
85
+ | udp_source_port | 68 |
86
+ | udp_destination_port | 67 |
87
+ | udp_length | 308 |
88
+ | udp_checksum | 34836 |
89
+ | message_type | 1 |
90
+ | hw_addr_type | 1 |
91
+ | hw_addr_len | 6 |
92
+ | hops | 0 |
93
+ | transaction_id | 3735928559 |
94
+ | seconds | 0 |
95
+ | bootp_flags | 0 |
96
+ | client_ip_address | 0.0.0.0 |
97
+ | your_ip_address | 0.0.0.0 |
98
+ | next_server_ip_address | 0.0.0.0 |
99
+ | relay_agent_ip_address | 0.0.0.0 |
100
+ | client_mac_address | 24:db:ac:41:e5:5b |
101
+ | parameters_list | [1, 3, 6, 42] |
102
+ | client_identifier | 24:db:ac:41:e5:5b |
103
+
104
+ Scenario: create a DHCP Request
105
+ When I try to create a packet with:
106
+ """
107
+ Pio::Dhcp::Request.new(
108
+ source_mac: '24:db:ac:41:e5:5b',
109
+ transaction_id: 0xdeadbeef,
110
+ server_identifier: '192.168.0.1',
111
+ requested_ip_address: '192.168.0.10'
112
+ )
113
+ """
114
+ Then it should finish successfully
115
+ And the packet have the following fields and values:
116
+ | field | value |
117
+ | class | Pio::Dhcp::Request |
118
+ | destination_mac | ff:ff:ff:ff:ff:ff |
119
+ | source_mac | 24:db:ac:41:e5:5b |
120
+ | ether_type | 2048 |
121
+ | ip_version | 4 |
122
+ | ip_header_length | 5 |
123
+ | ip_type_of_service | 0 |
124
+ | ip_total_length | 328 |
125
+ | ip_identifier | 0 |
126
+ | ip_flag | 0 |
127
+ | ip_fragment | 0 |
128
+ | ip_ttl | 128 |
129
+ | ip_protocol | 17 |
130
+ | ip_header_checksum | 14758 |
131
+ | ip_source_address | 0.0.0.0 |
132
+ | ip_destination_address | 255.255.255.255 |
133
+ | udp_source_port | 68 |
134
+ | udp_destination_port | 67 |
135
+ | udp_length | 308 |
136
+ | udp_checksum | 52915 |
137
+ | message_type | 3 |
138
+ | hw_addr_type | 1 |
139
+ | hw_addr_len | 6 |
140
+ | hops | 0 |
141
+ | transaction_id | 3735928559 |
142
+ | seconds | 0 |
143
+ | bootp_flags | 0 |
144
+ | client_ip_address | 0.0.0.0 |
145
+ | your_ip_address | 0.0.0.0 |
146
+ | next_server_ip_address | 0.0.0.0 |
147
+ | relay_agent_ip_address | 0.0.0.0 |
148
+ | client_mac_address | 24:db:ac:41:e5:5b |
149
+ | parameters_list | [1, 3, 6, 42] |
150
+ | client_identifier | 24:db:ac:41:e5:5b |
151
+ | requested_ip_address | 192.168.0.10 |
152
+
153
+ Scenario: create a DHCP Offer
154
+ When I try to create a packet with:
155
+ """
156
+ Pio::Dhcp::Offer.new(
157
+ source_mac: 'aa:bb:cc:dd:ee:ff',
158
+ destination_mac: '11:22:33:44:55:66',
159
+ ip_source_address: '192.168.0.10',
160
+ ip_destination_address: '192.168.0.1',
161
+ transaction_id: 0xdeadbeef,
162
+ renewal_time_value: 0xdeadbeef,
163
+ rebinding_time_value: 0xdeadbeef,
164
+ ip_address_lease_time: 0xdeadbeef,
165
+ subnet_mask: '255.255.255.0'
166
+ )
167
+ """
168
+ Then it should finish successfully
169
+ And the packet have the following fields and values:
170
+ | field | value |
171
+ | class | Pio::Dhcp::Offer |
172
+ | destination_mac | 11:22:33:44:55:66 |
173
+ | source_mac | aa:bb:cc:dd:ee:ff |
174
+ | ether_type | 2048 |
175
+ | ip_version | 4 |
176
+ | ip_header_length | 5 |
177
+ | ip_type_of_service | 0 |
178
+ | ip_total_length | 328 |
179
+ | ip_identifier | 0 |
180
+ | ip_flag | 0 |
181
+ | ip_fragment | 0 |
182
+ | ip_ttl | 128 |
183
+ | ip_protocol | 17 |
184
+ | ip_header_checksum | 47177 |
185
+ | ip_source_address | 192.168.0.10 |
186
+ | ip_destination_address | 192.168.0.1 |
187
+ | udp_source_port | 67 |
188
+ | udp_destination_port | 68 |
189
+ | udp_length | 308 |
190
+ | udp_checksum | 7780 |
191
+ | message_type | 2 |
192
+ | hw_addr_type | 1 |
193
+ | hw_addr_len | 6 |
194
+ | hops | 0 |
195
+ | transaction_id | 3735928559 |
196
+ | seconds | 0 |
197
+ | bootp_flags | 0 |
198
+ | client_ip_address | 0.0.0.0 |
199
+ | your_ip_address | 192.168.0.1 |
200
+ | next_server_ip_address | 0.0.0.0 |
201
+ | relay_agent_ip_address | 0.0.0.0 |
202
+ | client_mac_address | aa:bb:cc:dd:ee:ff |
203
+ | subnet_mask | 255.255.255.0 |
204
+ | server_identifier | 192.168.0.10 |
205
+ | renewal_time_value | 3735928559 |
206
+ | rebinding_time_value | 3735928559 |
207
+ | ip_address_lease_time | 3735928559 |
208
+
209
+ Scenario: parse dhcp.pcap
210
+ When I try to parse a file named "dhcp.pcap" with "Pio::Dhcp" class
4
211
  Then it should finish successfully
File without changes
@@ -1,4 +1,4 @@
1
- Feature: ICMP
1
+ Feature: Pio::Icmp
2
2
  Scenario: create an ICMP request
3
3
  When I try to create a packet with:
4
4
  """
File without changes
@@ -1,4 +1,4 @@
1
- Feature: LLDP
1
+ Feature: Pio::Lldp
2
2
  Scenario: create
3
3
  When I try to create an OpenFlow message with:
4
4
  """
@@ -22,8 +22,8 @@ Feature: LLDP
22
22
  | management_address | |
23
23
  | organizationally_specific | |
24
24
 
25
- Scenario: parse
26
- When I try to parse a file named "lldp.minimal.pcap" with "Lldp" class
25
+ Scenario: parse lldp.minimal.pcap
26
+ When I try to parse a file named "lldp.minimal.pcap" with "Pio::Lldp" class
27
27
  Then it should finish successfully
28
28
  Then the message #1 have the following fields and values:
29
29
  | field | value |
@@ -42,6 +42,6 @@ Feature: LLDP
42
42
  | management_address | |
43
43
  | organizationally_specific | |
44
44
 
45
- Scenario: parse 2
46
- When I try to parse a file named "lldp.detailed.pcap" with "Lldp" class
45
+ Scenario: parse lldp.detailed.pcap
46
+ When I try to parse a file named "lldp.detailed.pcap" with "Pio::Lldp" class
47
47
  Then it should finish successfully
@@ -1,5 +1,5 @@
1
- Feature: Echo Reply
2
- Scenario: create
1
+ Feature: Pio::Echo::Reply
2
+ Scenario: new
3
3
  When I try to create an OpenFlow message with:
4
4
  """
5
5
  Pio::Echo::Reply.new
@@ -15,7 +15,7 @@ Feature: Echo Reply
15
15
  | xid | 0 |
16
16
  | user_data | |
17
17
 
18
- Scenario: create (transaction_id: 123)
18
+ Scenario: new(transaction_id: 123)
19
19
  When I try to create an OpenFlow message with:
20
20
  """
21
21
  Pio::Echo::Reply.new(transaction_id: 123)
@@ -31,7 +31,7 @@ Feature: Echo Reply
31
31
  | xid | 123 |
32
32
  | user_data | |
33
33
 
34
- Scenario: create (xid: 123)
34
+ Scenario: new(xid: 123)
35
35
  When I try to create an OpenFlow message with:
36
36
  """
37
37
  Pio::Echo::Reply.new(xid: 123)
@@ -47,21 +47,21 @@ Feature: Echo Reply
47
47
  | xid | 123 |
48
48
  | user_data | |
49
49
 
50
- Scenario: create (xid: -1) and error
50
+ Scenario: new(xid: -1) and error
51
51
  When I try to create an OpenFlow message with:
52
52
  """
53
53
  Pio::Echo::Reply.new(xid: -1)
54
54
  """
55
55
  Then it should fail with "ArgumentError", "Transaction ID should be an unsigned 32-bit integer."
56
56
 
57
- Scenario: create (xid: 2**32) and error
57
+ Scenario: new(xid: 2**32) and error
58
58
  When I try to create an OpenFlow message with:
59
59
  """
60
60
  Pio::Echo::Reply.new(xid: 2**32)
61
61
  """
62
62
  Then it should fail with "ArgumentError", "Transaction ID should be an unsigned 32-bit integer."
63
63
 
64
- Scenario: create (user_data: 'echo reply body')
64
+ Scenario: new(user_data: 'echo reply body')
65
65
  When I try to create an OpenFlow message with:
66
66
  """
67
67
  Pio::Echo::Reply.new(user_data: 'echo reply body')
@@ -77,8 +77,8 @@ Feature: Echo Reply
77
77
  | xid | 0 |
78
78
  | user_data | echo reply body |
79
79
 
80
- Scenario: parse (no message body)
81
- When I try to parse a file named "echo_reply.raw" with "Pio::Echo::Reply" class
80
+ Scenario: read (no message body)
81
+ When I try to parse a file named "open_flow10/echo_reply.raw" with "Pio::Echo::Reply" class
82
82
  Then it should finish successfully
83
83
  And the message have the following fields and values:
84
84
  | field | value |
@@ -91,5 +91,5 @@ Feature: Echo Reply
91
91
  | user_data | |
92
92
 
93
93
  Scenario: parse error
94
- When I try to parse a file named "features_reply.raw" with "Pio::Echo::Reply" class
94
+ When I try to parse a file named "open_flow10/features_reply.raw" with "Pio::Echo::Reply" class
95
95
  Then it should fail with "Pio::ParseError", "Invalid Echo Reply message."
@@ -1,5 +1,5 @@
1
- Feature: Echo Request
2
- Scenario: create
1
+ Feature: Pio::Echo::Request
2
+ Scenario: new
3
3
  When I try to create an OpenFlow message with:
4
4
  """
5
5
  Pio::Echo::Request.new
@@ -15,7 +15,7 @@ Feature: Echo Request
15
15
  | xid | 0 |
16
16
  | user_data | |
17
17
 
18
- Scenario: create (transaction_id: 123)
18
+ Scenario: new(transaction_id: 123)
19
19
  When I try to create an OpenFlow message with:
20
20
  """
21
21
  Pio::Echo::Request.new(transaction_id: 123)
@@ -31,7 +31,7 @@ Feature: Echo Request
31
31
  | xid | 123 |
32
32
  | user_data | |
33
33
 
34
- Scenario: create (xid: 123)
34
+ Scenario: new(xid: 123)
35
35
  When I try to create an OpenFlow message with:
36
36
  """
37
37
  Pio::Echo::Request.new(xid: 123)
@@ -47,21 +47,21 @@ Feature: Echo Request
47
47
  | xid | 123 |
48
48
  | user_data | |
49
49
 
50
- Scenario: create (xid: -1) and error
50
+ Scenario: new(xid: -1) and error
51
51
  When I try to create an OpenFlow message with:
52
52
  """
53
53
  Pio::Echo::Request.new(xid: -1)
54
54
  """
55
55
  Then it should fail with "ArgumentError", "Transaction ID should be an unsigned 32-bit integer."
56
56
 
57
- Scenario: create (xid: 2**32) and error
57
+ Scenario: new(xid: 2**32) and error
58
58
  When I try to create an OpenFlow message with:
59
59
  """
60
60
  Pio::Echo::Request.new(xid: 2**32)
61
61
  """
62
62
  Then it should fail with "ArgumentError", "Transaction ID should be an unsigned 32-bit integer."
63
63
 
64
- Scenario: create (user_data: 'echo request body')
64
+ Scenario: new(user_data: 'echo request body')
65
65
  When I try to create an OpenFlow message with:
66
66
  """
67
67
  Pio::Echo::Request.new(user_data: 'echo request body')
@@ -77,8 +77,8 @@ Feature: Echo Request
77
77
  | xid | 0 |
78
78
  | user_data | echo request body |
79
79
 
80
- Scenario: parse (no message body)
81
- When I try to parse a file named "echo_request.raw" with "Pio::Echo::Request" class
80
+ Scenario: read (no message body)
81
+ When I try to parse a file named "open_flow10/echo_request.raw" with "Pio::Echo::Request" class
82
82
  Then it should finish successfully
83
83
  And the message have the following fields and values:
84
84
  | field | value |
@@ -91,5 +91,5 @@ Feature: Echo Request
91
91
  | user_data | |
92
92
 
93
93
  Scenario: parse error
94
- When I try to parse a file named "features_request.raw" with "Pio::Echo::Request" class
94
+ When I try to parse a file named "open_flow10/features_request.raw" with "Pio::Echo::Request" class
95
95
  Then it should fail with "Pio::ParseError", "Invalid Echo Request message."