pio 0.30.0 → 0.30.1

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 (442) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -0
  3. data/README.md +6 -49
  4. data/Rakefile +4 -4
  5. data/features/{arp.feature → arp/arp.feature} +14 -30
  6. data/features/arp/arp_reply.feature +69 -0
  7. data/features/arp/arp_request.feature +67 -0
  8. data/features/dhcp.feature +157 -162
  9. data/features/ethernet_header.feature +149 -0
  10. data/features/icmp/icmp.feature +47 -0
  11. data/features/icmp/icmp_reply.feature +93 -0
  12. data/features/icmp/icmp_request.feature +89 -0
  13. data/features/ipv4_header.feature +89 -0
  14. data/features/lldp.feature +5 -8
  15. data/features/open_flow/header.feature +13 -0
  16. data/features/open_flow/nicira_resubmit.feature +4 -22
  17. data/features/open_flow/nicira_resubmit_table.feature +6 -16
  18. data/features/open_flow10/aggregate_stats_reply.feature +5 -7
  19. data/features/open_flow10/aggregate_stats_request.feature +12 -14
  20. data/features/open_flow10/bad_request.feature +7 -24
  21. data/features/open_flow10/barrier_reply.feature +14 -25
  22. data/features/open_flow10/barrier_request.feature +12 -25
  23. data/features/open_flow10/description_stats_reply.feature +9 -7
  24. data/features/open_flow10/description_stats_request.feature +12 -25
  25. data/features/open_flow10/echo_reply.feature +14 -35
  26. data/features/open_flow10/echo_request.feature +16 -39
  27. data/features/open_flow10/enqueue.feature +3 -4
  28. data/features/open_flow10/exact_match.feature +5 -5
  29. data/features/open_flow10/features_reply.feature +28 -73
  30. data/features/open_flow10/features_request.feature +10 -28
  31. data/features/open_flow10/flow_mod.feature +4 -188
  32. data/features/open_flow10/flow_removed.feature +28 -30
  33. data/features/open_flow10/flow_stats_reply.feature +5 -89
  34. data/features/open_flow10/flow_stats_request.feature +12 -42
  35. data/features/open_flow10/hello.feature +10 -32
  36. data/features/open_flow10/hello_failed.feature +7 -57
  37. data/features/open_flow10/packet_in.feature +130 -49
  38. data/features/open_flow10/packet_out.feature +29 -18
  39. data/features/open_flow10/port_stats_request.feature +8 -29
  40. data/features/open_flow10/port_status.feature +22 -21
  41. data/features/open_flow10/queue_stats_request.feature +12 -30
  42. data/features/open_flow10/send_out_port.feature +17 -25
  43. data/features/open_flow10/set_destination_mac_address.feature +3 -4
  44. data/features/open_flow10/set_ip_destination_address.feature +3 -4
  45. data/features/open_flow10/set_source_ip_address.feature +3 -4
  46. data/features/open_flow10/set_source_mac_address.feature +3 -4
  47. data/features/open_flow10/set_tos.feature +3 -4
  48. data/features/open_flow10/set_transport_destination_port.feature +3 -4
  49. data/features/open_flow10/set_transport_source_port.feature +3 -4
  50. data/features/open_flow10/set_vlan_priority.feature +3 -4
  51. data/features/open_flow10/set_vlan_vid.feature +3 -4
  52. data/features/open_flow10/strip_vlan_header.feature +3 -4
  53. data/features/open_flow10/table_stats_request.feature +11 -13
  54. data/features/open_flow10/vendor_action.feature +4 -5
  55. data/features/open_flow13/apply_actions.feature +15 -18
  56. data/features/open_flow13/bad_request.feature +7 -13
  57. data/features/open_flow13/copy_ttl_inwards.feature +13 -0
  58. data/features/open_flow13/copy_ttl_outwards.feature +13 -0
  59. data/features/open_flow13/decrement_ip_ttl.feature +11 -0
  60. data/features/open_flow13/echo_reply.feature +16 -42
  61. data/features/open_flow13/echo_request.feature +16 -42
  62. data/features/open_flow13/features_reply.feature +4 -25
  63. data/features/open_flow13/features_request.feature +7 -36
  64. data/features/open_flow13/flow_mod.feature +16 -76
  65. data/features/open_flow13/goto_table.feature +18 -20
  66. data/features/open_flow13/hello.feature +7 -37
  67. data/features/open_flow13/hello_failed.feature +7 -30
  68. data/features/open_flow13/match.feature +239 -248
  69. data/features/open_flow13/meter.feature +18 -20
  70. data/features/open_flow13/nicira_conjunction.feature +15 -0
  71. data/features/open_flow13/nicira_reg_load.feature +27 -42
  72. data/features/open_flow13/nicira_reg_move.feature +41 -35
  73. data/features/open_flow13/nicira_send_out_port.feature +21 -13
  74. data/features/open_flow13/nicira_stack_pop.feature +26 -0
  75. data/features/open_flow13/nicira_stack_push.feature +26 -0
  76. data/features/open_flow13/packet_in.feature +7 -34
  77. data/features/open_flow13/packet_out.feature +7 -45
  78. data/features/open_flow13/send_out_port.feature +19 -28
  79. data/features/open_flow13/set_arp_operation.feature +4 -5
  80. data/features/open_flow13/set_arp_sender_hardware_address.feature +3 -4
  81. data/features/open_flow13/set_arp_sender_protocol_address.feature +3 -4
  82. data/features/open_flow13/set_destination_mac_address.feature +3 -4
  83. data/features/open_flow13/set_ip_ttl.feature +12 -0
  84. data/features/open_flow13/set_metadata.feature +3 -4
  85. data/features/open_flow13/set_source_mac_address.feature +3 -4
  86. data/features/open_flow13/stats_request.feature +4 -7
  87. data/features/open_flow13/write_metadata.feature +20 -22
  88. data/features/open_flow_read.feature +24 -5
  89. data/features/open_flow_version.feature +1 -1
  90. data/features/parser.feature +8 -9
  91. data/features/step_definitions/open_flow_steps.rb +11 -16
  92. data/features/step_definitions/packet_data_steps.rb +16 -32
  93. data/features/step_definitions/ruby_steps.rb +7 -0
  94. data/features/step_definitions/show_stats_steps.rb +3 -3
  95. data/features/support/env.rb +1 -0
  96. data/features/support/hooks.rb +2 -2
  97. data/features/udp.feature +26 -27
  98. data/lib/pio.rb +1 -1
  99. data/lib/pio/arp.rb +9 -6
  100. data/lib/pio/arp/format.rb +3 -7
  101. data/lib/pio/arp/message.rb +8 -4
  102. data/lib/pio/arp/reply.rb +9 -32
  103. data/lib/pio/arp/request.rb +9 -33
  104. data/lib/pio/class_inspector.rb +18 -0
  105. data/lib/pio/dhcp.rb +2 -2
  106. data/lib/pio/dhcp/frame.rb +4 -4
  107. data/lib/pio/dhcp/optional_tlv.rb +3 -3
  108. data/lib/pio/ethernet_frame.rb +20 -0
  109. data/lib/pio/ethernet_header.rb +35 -13
  110. data/lib/pio/icmp.rb +8 -5
  111. data/lib/pio/icmp/format.rb +19 -22
  112. data/lib/pio/icmp/message.rb +18 -4
  113. data/lib/pio/icmp/reply.rb +8 -34
  114. data/lib/pio/icmp/request.rb +8 -43
  115. data/lib/pio/instance_inspector.rb +14 -0
  116. data/lib/pio/ipv4_address.rb +11 -11
  117. data/lib/pio/ipv4_header.rb +24 -2
  118. data/lib/pio/lldp/frame.rb +2 -2
  119. data/lib/pio/lldp/optional_tlv.rb +2 -2
  120. data/lib/pio/mac.rb +7 -3
  121. data/lib/pio/message.rb +50 -0
  122. data/lib/pio/monkey_patch/bindata_record.rb +6 -0
  123. data/lib/pio/monkey_patch/bindata_string.rb +10 -0
  124. data/lib/pio/monkey_patch/integer/base_conversions.rb +1 -1
  125. data/lib/pio/monkey_patch/uint.rb +9 -0
  126. data/lib/pio/monkey_patch/uint/base_conversions.rb +14 -0
  127. data/lib/pio/open_flow.rb +38 -52
  128. data/lib/pio/open_flow/action.rb +8 -4
  129. data/lib/pio/open_flow/buffer_id.rb +19 -0
  130. data/lib/pio/open_flow/datapath_id.rb +3 -3
  131. data/lib/pio/open_flow/error_message.rb +32 -0
  132. data/lib/pio/open_flow/flags.rb +15 -6
  133. data/lib/pio/open_flow/flow_match.rb +10 -0
  134. data/lib/pio/open_flow/header.rb +26 -0
  135. data/lib/pio/open_flow/hello_failed_code.rb +1 -1
  136. data/lib/pio/open_flow/instruction.rb +10 -0
  137. data/lib/pio/open_flow/message.rb +49 -14
  138. data/lib/pio/open_flow/nicira_resubmit.rb +13 -11
  139. data/lib/pio/open_flow/nicira_resubmit_table.rb +17 -10
  140. data/lib/pio/open_flow/parser.rb +19 -0
  141. data/lib/pio/open_flow/port.rb +2 -2
  142. data/lib/pio/open_flow/transaction_id.rb +2 -2
  143. data/lib/pio/open_flow/version.rb +22 -0
  144. data/lib/pio/open_flow10/actions.rb +16 -16
  145. data/lib/pio/open_flow10/aggregate_stats/reply.rb +2 -1
  146. data/lib/pio/open_flow10/aggregate_stats/request.rb +1 -3
  147. data/lib/pio/open_flow10/barrier/reply.rb +1 -1
  148. data/lib/pio/open_flow10/barrier/request.rb +1 -1
  149. data/lib/pio/open_flow10/description_stats/reply.rb +1 -1
  150. data/lib/pio/open_flow10/description_stats/request.rb +1 -3
  151. data/lib/pio/open_flow10/echo/reply.rb +3 -3
  152. data/lib/pio/open_flow10/echo/request.rb +3 -3
  153. data/lib/pio/open_flow10/enqueue.rb +3 -3
  154. data/lib/pio/open_flow10/error.rb +3 -13
  155. data/lib/pio/open_flow10/error/bad_request.rb +5 -29
  156. data/lib/pio/open_flow10/error/bad_request/bad_request_code.rb +35 -0
  157. data/lib/pio/open_flow10/error/error_type10.rb +1 -1
  158. data/lib/pio/open_flow10/error/hello_failed.rb +6 -4
  159. data/lib/pio/open_flow10/exact_match.rb +12 -10
  160. data/lib/pio/open_flow10/features/reply.rb +16 -31
  161. data/lib/pio/open_flow10/features/request.rb +1 -4
  162. data/lib/pio/open_flow10/flow_mod.rb +8 -33
  163. data/lib/pio/open_flow10/flow_mod/command.rb +28 -0
  164. data/lib/pio/open_flow10/flow_removed.rb +2 -17
  165. data/lib/pio/open_flow10/flow_removed/reason.rb +22 -0
  166. data/lib/pio/open_flow10/flow_stats/reply.rb +3 -4
  167. data/lib/pio/open_flow10/flow_stats/request.rb +1 -3
  168. data/lib/pio/open_flow10/hello.rb +1 -4
  169. data/lib/pio/open_flow10/match.rb +13 -12
  170. data/lib/pio/open_flow10/packet_in.rb +32 -28
  171. data/lib/pio/open_flow10/packet_in/reason.rb +25 -0
  172. data/lib/pio/open_flow10/packet_out.rb +5 -6
  173. data/lib/pio/open_flow10/phy_port16.rb +36 -58
  174. data/lib/pio/open_flow10/port_stats/request.rb +1 -3
  175. data/lib/pio/open_flow10/port_status.rb +23 -30
  176. data/lib/pio/open_flow10/port_status/reason.rb +21 -0
  177. data/lib/pio/open_flow10/queue_stats/request.rb +1 -3
  178. data/lib/pio/open_flow10/send_out_port.rb +2 -2
  179. data/lib/pio/open_flow10/set_tos.rb +2 -2
  180. data/lib/pio/open_flow10/set_transport_port.rb +4 -2
  181. data/lib/pio/open_flow10/set_vlan_priority.rb +1 -1
  182. data/lib/pio/open_flow10/set_vlan_vid.rb +1 -1
  183. data/lib/pio/open_flow10/stats_reply.rb +7 -10
  184. data/lib/pio/open_flow10/stats_request.rb +16 -15
  185. data/lib/pio/open_flow10/stats_type.rb +1 -1
  186. data/lib/pio/open_flow10/table_stats/request.rb +1 -3
  187. data/lib/pio/open_flow10/vendor_action.rb +22 -20
  188. data/lib/pio/open_flow13.rb +7 -0
  189. data/lib/pio/open_flow13/actions.rb +34 -32
  190. data/lib/pio/open_flow13/apply.rb +25 -22
  191. data/lib/pio/open_flow13/copy_ttl_inwards.rb +15 -0
  192. data/lib/pio/open_flow13/copy_ttl_outwards.rb +15 -0
  193. data/lib/pio/open_flow13/decrement_ip_ttl.rb +15 -0
  194. data/lib/pio/open_flow13/echo/reply.rb +3 -3
  195. data/lib/pio/open_flow13/echo/request.rb +3 -3
  196. data/lib/pio/open_flow13/error.rb +7 -18
  197. data/lib/pio/open_flow13/error/bad_request.rb +4 -3
  198. data/lib/pio/open_flow13/error/error_type13.rb +1 -1
  199. data/lib/pio/open_flow13/error/hello_failed.rb +3 -2
  200. data/lib/pio/open_flow13/features/reply.rb +9 -16
  201. data/lib/pio/open_flow13/features/request.rb +1 -1
  202. data/lib/pio/open_flow13/flow_mod.rb +14 -19
  203. data/lib/pio/open_flow13/goto_table.rb +26 -24
  204. data/lib/pio/open_flow13/hello.rb +3 -4
  205. data/lib/pio/open_flow13/match.rb +173 -9
  206. data/lib/pio/open_flow13/meter.rb +23 -20
  207. data/lib/pio/open_flow13/nicira_conjunction.rb +26 -0
  208. data/lib/pio/open_flow13/nicira_reg_load.rb +44 -24
  209. data/lib/pio/open_flow13/nicira_reg_move.rb +77 -35
  210. data/lib/pio/open_flow13/nicira_send_out_port.rb +37 -21
  211. data/lib/pio/open_flow13/nicira_stack_pop.rb +49 -0
  212. data/lib/pio/open_flow13/nicira_stack_push.rb +49 -0
  213. data/lib/pio/open_flow13/packet_in.rb +11 -8
  214. data/lib/pio/open_flow13/packet_out.rb +9 -8
  215. data/lib/pio/open_flow13/set_ip_ttl.rb +16 -0
  216. data/lib/pio/open_flow13/stats_request.rb +2 -4
  217. data/lib/pio/open_flow13/write_metadata.rb +40 -38
  218. data/lib/pio/options.rb +8 -3
  219. data/lib/pio/parser.rb +7 -16
  220. data/lib/pio/ruby_dumper.rb +69 -0
  221. data/lib/pio/type/ether_type.rb +31 -0
  222. data/lib/pio/type/ip_address.rb +8 -0
  223. data/lib/pio/type/mac_address.rb +10 -0
  224. data/lib/pio/udp.rb +3 -3
  225. data/lib/pio/udp_header.rb +1 -1
  226. data/lib/pio/version.rb +1 -1
  227. data/pio.gemspec +5 -38
  228. data/spec/pio/arp/reply_spec.rb +0 -4
  229. data/spec/pio/arp/request_spec.rb +0 -4
  230. data/spec/pio/arp_spec.rb +0 -4
  231. data/spec/pio/icmp/reply_spec.rb +4 -8
  232. data/spec/pio/icmp/request_spec.rb +6 -10
  233. data/spec/pio/icmp_spec.rb +8 -12
  234. data/spec/pio/monkey_patch/integer_spec.rb +23 -0
  235. data/spec/pio/open_flow/nicira_resubmit_spec.rb +19 -0
  236. data/spec/pio/open_flow/nicira_resubmit_table_spec.rb +20 -0
  237. data/spec/pio/open_flow10/error/hello_failed_spec.rb +2 -2
  238. data/spec/pio/open_flow10/flow_mod_spec.rb +24 -24
  239. data/spec/pio/open_flow10/flow_stats_request_spec.rb +3 -3
  240. data/spec/pio/open_flow10/hello_spec.rb +0 -2
  241. data/spec/pio/open_flow10/match_spec.rb +38 -38
  242. data/spec/pio/open_flow10/packet_out_spec.rb +0 -349
  243. data/spec/pio/open_flow10/phy_port16_spec.rb +5 -5
  244. data/spec/pio/open_flow13/error/hello_failed_spec.rb +2 -2
  245. data/spec/pio/open_flow13/goto_table_spec.rb +2 -2
  246. data/spec/pio/open_flow13/hello_spec.rb +15 -15
  247. data/spec/pio/open_flow13/match_spec.rb +29 -29
  248. data/spec/pio/open_flow13/meter_spec.rb +2 -2
  249. data/spec/pio/open_flow13/nicira_reg_load_spec.rb +71 -0
  250. data/spec/pio/open_flow13/nicira_reg_move_spec.rb +40 -0
  251. data/spec/pio/open_flow13/nicira_send_out_port_spec.rb +29 -0
  252. data/spec/pio/open_flow13/write_metadata_spec.rb +3 -3
  253. data/spec/pio/open_flow_spec.rb +6 -6
  254. data/spec/spec_helper.rb +1 -1
  255. data/spec/support/shared_examples_for_openflow_messages.rb +5 -13
  256. metadata +191 -790
  257. data/LICENSE +0 -674
  258. data/bin/_guard-core +0 -16
  259. data/bin/byebug +0 -16
  260. data/bin/cc-tddium-post-worker +0 -16
  261. data/bin/cdiff +0 -16
  262. data/bin/coderay +0 -16
  263. data/bin/colortab +0 -16
  264. data/bin/coveralls +0 -16
  265. data/bin/cucumber +0 -16
  266. data/bin/decolor +0 -16
  267. data/bin/flay +0 -16
  268. data/bin/flog +0 -16
  269. data/bin/guard +0 -16
  270. data/bin/htmldiff +0 -16
  271. data/bin/inch +0 -16
  272. data/bin/ldiff +0 -16
  273. data/bin/listen +0 -16
  274. data/bin/minitar +0 -16
  275. data/bin/pry +0 -16
  276. data/bin/rake +0 -16
  277. data/bin/reek +0 -16
  278. data/bin/relish +0 -16
  279. data/bin/restclient +0 -16
  280. data/bin/rspec +0 -16
  281. data/bin/rubocop +0 -16
  282. data/bin/ruby-parse +0 -16
  283. data/bin/ruby-rewrite +0 -16
  284. data/bin/ruby_parse +0 -16
  285. data/bin/ruby_parse_extract_error +0 -16
  286. data/bin/sparkr +0 -16
  287. data/bin/term_display +0 -16
  288. data/bin/term_mandel +0 -16
  289. data/bin/terminal-notifier +0 -16
  290. data/bin/thor +0 -16
  291. data/bin/unparser +0 -16
  292. data/bin/yard +0 -16
  293. data/bin/yardoc +0 -16
  294. data/bin/yri +0 -16
  295. data/features/arp-storm.pcap +0 -0
  296. data/features/arp.pcap +0 -0
  297. data/features/dhcp.pcap +0 -0
  298. data/features/icmp.feature +0 -130
  299. data/features/icmp.pcap +0 -0
  300. data/features/icmpv6.pcap +0 -0
  301. data/features/lldp.detailed.pcap +0 -0
  302. data/features/lldp.minimal.pcap +0 -0
  303. data/features/open_flow10/aggregate_stats_reply.raw +0 -0
  304. data/features/open_flow10/aggregate_stats_request.raw +0 -0
  305. data/features/open_flow10/bad_request.raw +0 -0
  306. data/features/open_flow10/barrier_reply.raw +0 -0
  307. data/features/open_flow10/barrier_request.raw +0 -0
  308. data/features/open_flow10/description_stats_reply.raw +0 -0
  309. data/features/open_flow10/description_stats_request.raw +0 -0
  310. data/features/open_flow10/echo_reply.raw +0 -0
  311. data/features/open_flow10/echo_request.raw +0 -0
  312. data/features/open_flow10/error.raw +0 -0
  313. data/features/open_flow10/features_reply.raw +0 -0
  314. data/features/open_flow10/features_request.raw +0 -0
  315. data/features/open_flow10/flow_mod_add.raw +0 -0
  316. data/features/open_flow10/flow_mod_delete.raw +0 -0
  317. data/features/open_flow10/flow_mod_delete_strict.raw +0 -0
  318. data/features/open_flow10/flow_mod_modify.raw +0 -0
  319. data/features/open_flow10/flow_mod_modify_strict.raw +0 -0
  320. data/features/open_flow10/flow_removed.raw +0 -0
  321. data/features/open_flow10/flow_stats_reply.raw +0 -0
  322. data/features/open_flow10/flow_stats_request.raw +0 -0
  323. data/features/open_flow10/get_config_reply.raw +0 -0
  324. data/features/open_flow10/get_config_request.raw +0 -0
  325. data/features/open_flow10/hello.raw +0 -0
  326. data/features/open_flow10/hello_failed.raw +0 -0
  327. data/features/open_flow10/nx_flow_mod_add.raw +0 -0
  328. data/features/open_flow10/nx_flow_mod_delete.raw +0 -0
  329. data/features/open_flow10/nx_flow_mod_delete_strict.raw +0 -0
  330. data/features/open_flow10/nx_flow_mod_modify.raw +0 -0
  331. data/features/open_flow10/nx_flow_mod_modify_strict.raw +0 -0
  332. data/features/open_flow10/nxast_learn.raw +0 -0
  333. data/features/open_flow10/packet_in.raw +0 -0
  334. data/features/open_flow10/packet_in_arp_reply.raw +0 -0
  335. data/features/open_flow10/packet_in_arp_request.raw +0 -0
  336. data/features/open_flow10/packet_in_cbench.raw +0 -0
  337. data/features/open_flow10/packet_out.raw +0 -0
  338. data/features/open_flow10/port_mod.raw +0 -0
  339. data/features/open_flow10/port_stats_reply.raw +0 -0
  340. data/features/open_flow10/port_stats_request.raw +0 -0
  341. data/features/open_flow10/port_status.raw +0 -0
  342. data/features/open_flow10/queue_get_config_reply.raw +0 -0
  343. data/features/open_flow10/queue_get_config_request.raw +0 -0
  344. data/features/open_flow10/queue_stats_request.raw +0 -0
  345. data/features/open_flow10/set_config.raw +0 -0
  346. data/features/open_flow10/table_stats_reply.raw +0 -0
  347. data/features/open_flow10/table_stats_request.raw +0 -0
  348. data/features/open_flow10/vendor.raw +0 -0
  349. data/features/open_flow10/vendor_stats_request.raw +0 -0
  350. data/features/open_flow13/action_copy_ttl_in.raw +0 -0
  351. data/features/open_flow13/action_copy_ttl_out.raw +0 -0
  352. data/features/open_flow13/action_dec_mpls_ttl.raw +0 -0
  353. data/features/open_flow13/action_dec_nw_ttl.raw +0 -0
  354. data/features/open_flow13/action_group.raw +0 -0
  355. data/features/open_flow13/action_pop_mpls.raw +0 -0
  356. data/features/open_flow13/action_pop_pbb.raw +0 -0
  357. data/features/open_flow13/action_pop_vlan.raw +0 -0
  358. data/features/open_flow13/action_push_mpls.raw +0 -0
  359. data/features/open_flow13/action_push_pbb.raw +0 -0
  360. data/features/open_flow13/action_push_vlan.raw +0 -0
  361. data/features/open_flow13/action_set_field.raw +0 -0
  362. data/features/open_flow13/action_set_mpls_ttl.raw +0 -0
  363. data/features/open_flow13/action_set_nw_ttl.raw +0 -0
  364. data/features/open_flow13/action_set_queue.raw +0 -0
  365. data/features/open_flow13/apply_actions.raw +0 -0
  366. data/features/open_flow13/bad_request.raw +0 -0
  367. data/features/open_flow13/echo_reply_body.raw +0 -0
  368. data/features/open_flow13/echo_reply_no_body.raw +0 -0
  369. data/features/open_flow13/echo_request_body.raw +0 -0
  370. data/features/open_flow13/echo_request_no_body.raw +0 -0
  371. data/features/open_flow13/features_reply.raw +0 -0
  372. data/features/open_flow13/features_request.raw +0 -0
  373. data/features/open_flow13/flow_add_apply_no_match.raw +0 -0
  374. data/features/open_flow13/flow_mod_add_apply_no_match.raw +0 -0
  375. data/features/open_flow13/flow_mod_no_match_or_instructions.raw +0 -0
  376. data/features/open_flow13/hello_failed.raw +0 -0
  377. data/features/open_flow13/hello_no_version_bitmap.raw +0 -0
  378. data/features/open_flow13/hello_version_bitmap.raw +0 -0
  379. data/features/open_flow13/instruction_clear_actions.raw +0 -0
  380. data/features/open_flow13/instruction_goto_table.raw +0 -0
  381. data/features/open_flow13/instruction_meter.raw +0 -0
  382. data/features/open_flow13/instruction_write_actions.raw +0 -0
  383. data/features/open_flow13/instruction_write_metadata.raw +0 -0
  384. data/features/open_flow13/oxm_arp_op_field.raw +0 -0
  385. data/features/open_flow13/oxm_arp_sha_field.raw +0 -0
  386. data/features/open_flow13/oxm_arp_spa_field.raw +0 -0
  387. data/features/open_flow13/oxm_arp_tha_field.raw +0 -0
  388. data/features/open_flow13/oxm_arp_tpa_field.raw +0 -0
  389. data/features/open_flow13/oxm_ether_destination_field.raw +0 -0
  390. data/features/open_flow13/oxm_ether_source_field.raw +0 -0
  391. data/features/open_flow13/oxm_ether_type_field.raw +0 -0
  392. data/features/open_flow13/oxm_experimenter_stratos_basic_dot11.raw +0 -0
  393. data/features/open_flow13/oxm_icmpv4_code_field.raw +0 -0
  394. data/features/open_flow13/oxm_icmpv4_type_field.raw +0 -0
  395. data/features/open_flow13/oxm_in_phy_port_field.raw +0 -0
  396. data/features/open_flow13/oxm_in_port_field.raw +0 -0
  397. data/features/open_flow13/oxm_invalid_field.raw +0 -0
  398. data/features/open_flow13/oxm_ip_dscp_field.raw +0 -0
  399. data/features/open_flow13/oxm_ip_ecn_field.raw +0 -0
  400. data/features/open_flow13/oxm_ipv4_destination_field.raw +0 -0
  401. data/features/open_flow13/oxm_ipv4_source_field.raw +0 -0
  402. data/features/open_flow13/oxm_ipv6_destination_field.raw +0 -0
  403. data/features/open_flow13/oxm_ipv6_source_field.raw +0 -0
  404. data/features/open_flow13/oxm_masked_arp_sha_field.raw +0 -0
  405. data/features/open_flow13/oxm_masked_arp_spa_field.raw +0 -0
  406. data/features/open_flow13/oxm_masked_arp_tha_field.raw +0 -0
  407. data/features/open_flow13/oxm_masked_arp_tpa_field.raw +0 -0
  408. data/features/open_flow13/oxm_masked_ether_destination_field.raw +0 -0
  409. data/features/open_flow13/oxm_masked_ether_source_field.raw +0 -0
  410. data/features/open_flow13/oxm_masked_ipv4_destination_field.raw +0 -0
  411. data/features/open_flow13/oxm_masked_ipv4_source_field.raw +0 -0
  412. data/features/open_flow13/oxm_masked_ipv6_destination_field.raw +0 -0
  413. data/features/open_flow13/oxm_masked_ipv6_source_field.raw +0 -0
  414. data/features/open_flow13/oxm_masked_tunnel_id_field.raw +0 -0
  415. data/features/open_flow13/oxm_metadata_field.raw +0 -0
  416. data/features/open_flow13/oxm_metadata_masked_field.raw +0 -0
  417. data/features/open_flow13/oxm_no_fields.raw +0 -0
  418. data/features/open_flow13/oxm_sctp_destination_field.raw +0 -0
  419. data/features/open_flow13/oxm_sctp_source_field.raw +0 -0
  420. data/features/open_flow13/oxm_tcp_destination_field.raw +0 -0
  421. data/features/open_flow13/oxm_tcp_field.raw +0 -0
  422. data/features/open_flow13/oxm_tcp_source_field.raw +0 -0
  423. data/features/open_flow13/oxm_tunnel_id_field.raw +0 -0
  424. data/features/open_flow13/oxm_udp_destination_field.raw +0 -0
  425. data/features/open_flow13/oxm_udp_field.raw +0 -0
  426. data/features/open_flow13/oxm_udp_source_field.raw +0 -0
  427. data/features/open_flow13/oxm_vlan_pcp_field.raw +0 -0
  428. data/features/open_flow13/oxm_vlan_vid_field.raw +0 -0
  429. data/features/open_flow13/packet_in.raw +0 -0
  430. data/features/open_flow13/packet_out.raw +0 -0
  431. data/features/open_flow13/send_out_port.raw +0 -0
  432. data/features/open_flow13/table_stats_reply.raw +0 -0
  433. data/features/open_flow13/table_stats_request.raw +0 -0
  434. data/features/step_definitions/LICENSE +0 -675
  435. data/features/udp_no_payload.raw +0 -0
  436. data/features/udp_with_payload.raw +0 -0
  437. data/lib/pio/icmp/options.rb +0 -21
  438. data/lib/pio/open_flow/error.rb +0 -19
  439. data/lib/pio/open_flow/open_flow_header.rb +0 -31
  440. data/lib/pio/open_flow13/buffer_id.rb +0 -17
  441. data/spec/pio/arp/reply/options_spec.rb +0 -143
  442. data/spec/pio/arp/request/options_spec.rb +0 -113
@@ -1,11 +1,10 @@
1
- Feature: Pio::Lldp
1
+ Feature: Lldp
2
2
  Scenario: create
3
- When I try to create an OpenFlow message with:
3
+ When I create an OpenFlow message with:
4
4
  """
5
5
  Pio::Lldp.new(dpid: 0x123, port_number: 12, source_mac: '11:22:33:44:55:66')
6
6
  """
7
- Then it should finish successfully
8
- And the message has the following fields and values:
7
+ Then the message has the following fields and values:
9
8
  | field | value |
10
9
  | class | Pio::Lldp |
11
10
  | destination_mac | 01:80:c2:00:00:0e |
@@ -23,8 +22,7 @@ Feature: Pio::Lldp
23
22
  | organizationally_specific | |
24
23
 
25
24
  Scenario: parse lldp.minimal.pcap
26
- When I try to parse a file named "lldp.minimal.pcap" with "Pio::Lldp" class
27
- Then it should finish successfully
25
+ When I parse a file named "lldp.minimal.pcap" with "Pio::Lldp" class
28
26
  Then the message #1 have the following fields and values:
29
27
  | field | value |
30
28
  | class | Pio::Lldp |
@@ -43,5 +41,4 @@ Feature: Pio::Lldp
43
41
  | organizationally_specific | |
44
42
 
45
43
  Scenario: parse lldp.detailed.pcap
46
- When I try to parse a file named "lldp.detailed.pcap" with "Pio::Lldp" class
47
- Then it should finish successfully
44
+ Then I parse a file named "lldp.detailed.pcap" with "Pio::Lldp" class
@@ -0,0 +1,13 @@
1
+ Feature: OpenFlow::Header
2
+
3
+ Scenario: OpenFlow::Header#to_hex
4
+ When I create an OpenFlow message with:
5
+ """
6
+ Pio::OpenFlow::Header.new(version: :OpenFlow10,
7
+ type: 10,
8
+ message_length: 18,
9
+ transaction_id: 0xff)
10
+ """
11
+ Then the message has the following fields and values:
12
+ | field | value |
13
+ | to_bytes | 0x01, 0x0a, 0x00, 0x12, 0x00, 0x00, 0x00, 0xff |
@@ -1,29 +1,11 @@
1
- Feature: Pio::NiciraResubmit
1
+ @open_flow13
2
+ Feature: NiciraResubmit
2
3
 
3
4
  Scenario: new(1)
4
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
5
6
  """
6
7
  Pio::NiciraResubmit.new(1)
7
8
  """
8
- Then it should finish successfully
9
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
10
10
  | field | value |
11
- | action_type.to_hex | 0xffff |
12
- | action_length | 16 |
13
- | vendor.to_hex | 0x2320 |
14
- | subtype | 1 |
15
11
  | in_port | 1 |
16
-
17
- Scenario: new(:in_port)
18
- When I try to create an OpenFlow action with:
19
- """
20
- Pio::NiciraResubmit.new(:in_port)
21
- """
22
- Then it should finish successfully
23
- And the action has the following fields and values:
24
- | field | value |
25
- | action_type.to_hex | 0xffff |
26
- | action_length | 16 |
27
- | vendor.to_hex | 0x2320 |
28
- | subtype | 1 |
29
- | in_port | :in_port |
@@ -1,31 +1,21 @@
1
- Feature: Pio::NiciraResubmitTable
1
+ Feature: NiciraResubmitTable
2
2
 
3
3
  Scenario: new(in_port: 1, table: 1)
4
- When I try to create an OpenFlow action with:
4
+ When I create an OpenFlow action with:
5
5
  """
6
6
  Pio::NiciraResubmitTable.new(in_port: 1, table: 1)
7
7
  """
8
- Then it should finish successfully
9
- And the action has the following fields and values:
8
+ Then the action has the following fields and values:
10
9
  | field | value |
11
- | action_type.to_hex | 0xffff |
12
- | action_length | 16 |
13
- | vendor.to_hex | 0x2320 |
14
- | subtype | 14 |
15
10
  | in_port | 1 |
16
11
  | table | 1 |
17
12
 
18
- Scenario: new(:in_port)
19
- When I try to create an OpenFlow action with:
13
+ Scenario: new(in_port: 1)
14
+ When I create an OpenFlow action with:
20
15
  """
21
16
  Pio::NiciraResubmitTable.new(in_port: 1)
22
17
  """
23
- Then it should finish successfully
24
- And the action has the following fields and values:
18
+ Then the action has the following fields and values:
25
19
  | field | value |
26
- | action_type.to_hex | 0xffff |
27
- | action_length | 16 |
28
- | vendor.to_hex | 0x2320 |
29
- | subtype | 14 |
30
20
  | in_port | 1 |
31
21
  | table.to_hex | 0xff |
@@ -1,13 +1,11 @@
1
1
  @open_flow10
2
- Feature: Pio::AggregateStats::Reply
2
+ Feature: AggregateStats::Reply
3
+
3
4
  Scenario: read
4
- When I try to parse a file named "open_flow10/aggregate_stats_reply.raw" with "AggregateStats::Reply" class
5
- Then it should finish successfully
6
- And the message has the following fields and values:
5
+ When I parse a file named "open_flow10/aggregate_stats_reply.raw" with "AggregateStats::Reply" class
6
+ Then the message has the following fields and values:
7
7
  | field | value |
8
- | ofp_version | 1 |
9
- | message_type | 17 |
10
- | message_length | 36 |
8
+ | version | 1 |
11
9
  | transaction_id | 15 |
12
10
  | xid | 15 |
13
11
  | stats_type | :aggregate |
@@ -1,16 +1,17 @@
1
1
  @open_flow10
2
- Feature: Pio::AggregateStats::Request
2
+ Feature: AggregateStats::Request
3
+
4
+ Aggregate information about multiple flows is requested with the
5
+ Aggregate Stats Request message
6
+
3
7
  Scenario: new
4
- When I try to create an OpenFlow message with:
8
+ When I create an OpenFlow message with:
5
9
  """
6
- Pio::AggregateStats::Request.new(match: Match.new(in_port: 1))
10
+ Pio::AggregateStats::Request.new(match: Pio::Match.new(in_port: 1))
7
11
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
12
+ Then the message has the following fields and values:
10
13
  | field | value |
11
- | ofp_version | 1 |
12
- | message_type | 16 |
13
- | message_length | 56 |
14
+ | version | 1 |
14
15
  | transaction_id | 0 |
15
16
  | xid | 0 |
16
17
  | stats_type | :aggregate |
@@ -32,13 +33,10 @@ Feature: Pio::AggregateStats::Request
32
33
 
33
34
 
34
35
  Scenario: read
35
- When I try to parse a file named "open_flow10/aggregate_stats_request.raw" with "AggregateStats::Request" class
36
- Then it should finish successfully
37
- And the message has the following fields and values:
36
+ When I parse a file named "open_flow10/aggregate_stats_request.raw" with "Pio::AggregateStats::Request" class
37
+ Then the message has the following fields and values:
38
38
  | field | value |
39
- | ofp_version | 1 |
40
- | message_type | 16 |
41
- | message_length | 56 |
39
+ | version | 1 |
42
40
  | transaction_id | 14 |
43
41
  | xid | 14 |
44
42
  | stats_type | :aggregate |
@@ -1,33 +1,16 @@
1
1
  @open_flow10
2
- Feature: Pio::Error::BadRequest
2
+ Feature: Error::BadRequest
3
3
 
4
- Request was not understood error.
4
+ Request was not understood error
5
5
 
6
- Scenario: new (raw_data = Echo request 1.3)
7
- When I try to create an OpenFlow message with:
6
+ Scenario: new (error_code: :bad_version, raw_data: EchoRequest 1.3)
7
+ When I create an OpenFlow message with:
8
8
  """
9
- Pio::Error::BadRequest.new(raw_data: Pio::OpenFlow13::Echo::Request.new.to_binary)
9
+ Pio::Error::BadRequest.new(error_code: :bad_version,
10
+ raw_data: Pio::OpenFlow13::Echo::Request.new.to_binary)
10
11
  """
11
- Then it should finish successfully
12
- And the message has the following fields and values:
12
+ Then the message has the following fields and values:
13
13
  | field | value |
14
- | ofp_version | 1 |
15
- | message_type | 1 |
16
- | message_length | 20 |
17
- | transaction_id | 0 |
18
- | xid | 0 |
19
- | error_type | :bad_request |
20
- | error_code | :bad_version |
21
- | raw_data.length | 8 |
22
-
23
- Scenario: read
24
- When I try to parse a file named "open_flow10/bad_request.raw" with "Pio::Error::BadRequest" class
25
- Then it should finish successfully
26
- And the message has the following fields and values:
27
- | field | value |
28
- | ofp_version | 1 |
29
- | message_type | 1 |
30
- | message_length | 20 |
31
14
  | transaction_id | 0 |
32
15
  | xid | 0 |
33
16
  | error_type | :bad_request |
@@ -1,43 +1,32 @@
1
1
  @open_flow10
2
- Feature: Pio::Barrier::Reply
2
+ Feature: Barrier::Reply
3
+
4
+ When the switch received a Barrier Request message, the switch must
5
+ finish processing all previously-received messages before executing
6
+ any messages beyond the Barrier Request. When such processing is
7
+ complete, the switch must send an Barrier Reply message with the xid
8
+ of the original request.
9
+
3
10
  Scenario: new
4
- When I try to create an OpenFlow message with:
11
+ When I create an OpenFlow message with:
5
12
  """
6
13
  Pio::Barrier::Reply.new
7
14
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
15
+ Then the message has the following fields and values:
10
16
  | field | value |
11
- | ofp_version | 1 |
12
- | message_type | 19 |
13
- | message_length | 8 |
17
+ | version | 1 |
14
18
  | transaction_id | 0 |
15
19
  | xid | 0 |
16
20
  | body | |
17
21
 
18
22
  Scenario: new(transaction_id: 123)
19
- When I try to create an OpenFlow message with:
23
+ When I create an OpenFlow message with:
20
24
  """
21
25
  Pio::Barrier::Reply.new(transaction_id: 123)
22
26
  """
23
- Then it should finish successfully
24
- And the message has the following fields and values:
27
+ Then the message has the following fields and values:
25
28
  | field | value |
26
- | ofp_version | 1 |
27
- | message_type | 19 |
28
- | message_length | 8 |
29
+ | version | 1 |
29
30
  | transaction_id | 123 |
30
31
  | xid | 123 |
31
32
  | body | |
32
-
33
- Scenario: read
34
- When I try to parse a file named "open_flow10/barrier_reply.raw" with "Barrier::Reply" class
35
- Then it should finish successfully
36
- And the message has the following fields and values:
37
- | field | value |
38
- | ofp_version | 1 |
39
- | message_type | 19 |
40
- | message_length | 8 |
41
- | transaction_id | 0 |
42
- | xid | 0 |
43
- | body | |
@@ -1,43 +1,30 @@
1
1
  @open_flow10
2
- Feature: Pio::Barrier::Request
2
+ Feature: Barrier::Request
3
+
4
+ When the controller wants to ensure message dependencies have been
5
+ met or wants to receive notifications for completed operations, it
6
+ may use an Barrier Request message. This message has no body.
7
+
3
8
  Scenario: new
4
- When I try to create an OpenFlow message with:
9
+ When I create an OpenFlow message with:
5
10
  """
6
11
  Pio::Barrier::Request.new
7
12
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
13
+ Then the message has the following fields and values:
10
14
  | field | value |
11
- | ofp_version | 1 |
12
- | message_type | 18 |
13
- | message_length | 8 |
15
+ | version | 1 |
14
16
  | transaction_id | 0 |
15
17
  | xid | 0 |
16
18
  | body | |
17
19
 
18
20
  Scenario: new(transaction_id: 123)
19
- When I try to create an OpenFlow message with:
21
+ When I create an OpenFlow message with:
20
22
  """
21
23
  Pio::Barrier::Request.new(transaction_id: 123)
22
24
  """
23
- Then it should finish successfully
24
- And the message has the following fields and values:
25
+ Then the message has the following fields and values:
25
26
  | field | value |
26
- | ofp_version | 1 |
27
- | message_type | 18 |
28
- | message_length | 8 |
27
+ | version | 1 |
29
28
  | transaction_id | 123 |
30
29
  | xid | 123 |
31
30
  | body | |
32
-
33
- Scenario: read
34
- When I try to parse a file named "open_flow10/barrier_request.raw" with "Barrier::Request" class
35
- Then it should finish successfully
36
- And the message has the following fields and values:
37
- | field | value |
38
- | ofp_version | 1 |
39
- | message_type | 18 |
40
- | message_length | 8 |
41
- | transaction_id | 0 |
42
- | xid | 0 |
43
- | body | |
@@ -1,13 +1,15 @@
1
1
  @open_flow10
2
- Feature: Pio::DescriptionStats::Reply
2
+ Feature: DescriptionStats::Reply
3
+
4
+ Information about the switch manufacturer, hardware revision,
5
+ software revision, serial number, and a description field is
6
+ available from a Description Stats Reply.
7
+
3
8
  Scenario: read
4
- When I try to parse a file named "open_flow10/description_stats_reply.raw" with "DescriptionStats::Reply" class
5
- Then it should finish successfully
6
- And the message has the following fields and values:
9
+ When I parse a file named "open_flow10/description_stats_reply.raw" with "DescriptionStats::Reply" class
10
+ Then the message has the following fields and values:
7
11
  | field | value |
8
- | ofp_version | 1 |
9
- | message_type | 17 |
10
- | message_length | 1068 |
12
+ | version | 1 |
11
13
  | transaction_id | 12 |
12
14
  | xid | 12 |
13
15
  | stats_type | :description |
@@ -1,43 +1,30 @@
1
1
  @open_flow10
2
- Feature: Pio::DescriptionStats::Request
2
+ Feature: DescriptionStats::Request
3
+
4
+ Information about the switch manufacturer, hardware revision,
5
+ software revision, serial number, and a description field is
6
+ available by sending a Description Stats Request.
7
+
3
8
  Scenario: new
4
- When I try to create an OpenFlow message with:
9
+ When I create an OpenFlow message with:
5
10
  """
6
11
  Pio::DescriptionStats::Request.new
7
12
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
13
+ Then the message has the following fields and values:
10
14
  | field | value |
11
- | ofp_version | 1 |
12
- | message_type | 16 |
13
- | message_length | 12 |
15
+ | version | 1 |
14
16
  | transaction_id | 0 |
15
17
  | xid | 0 |
16
18
  | stats_type | :description |
17
19
 
18
20
  Scenario: new(transaction_id: 123)
19
- When I try to create an OpenFlow message with:
21
+ When I create an OpenFlow message with:
20
22
  """
21
23
  Pio::DescriptionStats::Request.new(transaction_id: 123)
22
24
  """
23
- Then it should finish successfully
24
- And the message has the following fields and values:
25
+ Then the message has the following fields and values:
25
26
  | field | value |
26
- | ofp_version | 1 |
27
- | message_type | 16 |
28
- | message_length | 12 |
27
+ | version | 1 |
29
28
  | transaction_id | 123 |
30
29
  | xid | 123 |
31
30
  | stats_type | :description |
32
-
33
- Scenario: read
34
- When I try to parse a file named "open_flow10/description_stats_request.raw" with "DescriptionStats::Request" class
35
- Then it should finish successfully
36
- And the message has the following fields and values:
37
- | field | value |
38
- | ofp_version | 1 |
39
- | message_type | 16 |
40
- | message_length | 12 |
41
- | transaction_id | 12 |
42
- | xid | 12 |
43
- | stats_type | :description |
@@ -1,62 +1,41 @@
1
1
  @open_flow10
2
- Feature: Pio::Echo::Reply
2
+ Feature: Echo::Reply
3
+
4
+ An Echo Reply message consists of an OpenFlow header plus the
5
+ unmodified data field of an echo request message.
6
+
3
7
  Scenario: new
4
- When I try to create an OpenFlow message with:
8
+ When I create an OpenFlow message with:
5
9
  """
6
10
  Pio::Echo::Reply.new
7
11
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
12
+ Then the message has the following fields and values:
10
13
  | field | value |
11
- | ofp_version | 1 |
12
- | message_type | 3 |
13
- | message_length | 8 |
14
14
  | transaction_id | 0 |
15
15
  | xid | 0 |
16
16
  | body | |
17
17
  | user_data | |
18
18
 
19
19
  Scenario: new(transaction_id: 123)
20
- When I try to create an OpenFlow message with:
20
+ When I create an OpenFlow message with:
21
21
  """
22
22
  Pio::Echo::Reply.new(transaction_id: 123)
23
23
  """
24
- Then it should finish successfully
25
- And the message has the following fields and values:
24
+ Then the message has the following fields and values:
26
25
  | field | value |
27
- | ofp_version | 1 |
28
- | message_type | 3 |
29
- | message_length | 8 |
30
26
  | transaction_id | 123 |
31
27
  | xid | 123 |
32
28
  | body | |
33
29
  | user_data | |
34
30
 
35
31
  Scenario: new(body: 'echo reply body')
36
- When I try to create an OpenFlow message with:
32
+ When I create an OpenFlow message with:
37
33
  """
38
34
  Pio::Echo::Reply.new(body: 'echo reply body')
39
35
  """
40
- Then it should finish successfully
41
- And the message has the following fields and values:
42
- | field | value |
43
- | ofp_version | 1 |
44
- | message_type | 3 |
45
- | message_length | 23 |
46
- | transaction_id | 0 |
47
- | xid | 0 |
36
+ Then the message has the following fields and values:
37
+ | field | value |
38
+ | transaction_id | 0 |
39
+ | xid | 0 |
48
40
  | body | echo reply body |
49
41
  | user_data | echo reply body |
50
-
51
- Scenario: read (no message body)
52
- When I try to parse a file named "open_flow10/echo_reply.raw" with "Pio::Echo::Reply" class
53
- Then it should finish successfully
54
- And the message has the following fields and values:
55
- | field | value |
56
- | ofp_version | 1 |
57
- | message_type | 3 |
58
- | message_length | 8 |
59
- | transaction_id | 6 |
60
- | xid | 6 |
61
- | body | |
62
- | user_data | |