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,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetVlanPriority
2
+ Feature: SetVlanPriority
3
3
 
4
4
  Scenario: new(1)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::SetVlanPriority.new(1)
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 2 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::SetVlanVid
2
+ Feature: SetVlanVid
3
3
 
4
4
  Scenario: new(1)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::SetVlanVid.new(1)
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 1 |
13
12
  | action_length | 8 |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::OpenFlow10::StripVlanHeader
2
+ Feature: StripVlanHeader
3
3
 
4
4
  Scenario: new
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
7
  Pio::OpenFlow10::StripVlanHeader.new
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type | 3 |
13
12
  | action_length | 8 |
@@ -1,31 +1,29 @@
1
1
  @open_flow10
2
- Feature: Pio::TableStats::Request
2
+ Feature: TableStats::Request
3
+
4
+ Information about tables is requested with a Table Stats Request
5
+ 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::TableStats::Request.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 | 16 |
13
- | message_length | 12 |
14
+ | version | 1 |
14
15
  | transaction_id | 0 |
15
16
  | xid | 0 |
16
17
  | stats_type | :table |
17
18
 
18
19
  Scenario: new(transaction_id: 123)
19
- When I try to create an OpenFlow message with:
20
+ When I create an OpenFlow message with:
20
21
  """
21
22
  Pio::TableStats::Request.new(transaction_id: 123)
22
23
  """
23
- Then it should finish successfully
24
- And the message has the following fields and values:
24
+ Then the message has the following fields and values:
25
25
  | field | value |
26
- | ofp_version | 1 |
27
- | message_type | 16 |
28
- | message_length | 12 |
26
+ | version | 1 |
29
27
  | transaction_id | 123 |
30
28
  | xid | 123 |
31
29
  | stats_type | :table |
@@ -1,13 +1,12 @@
1
1
  @open_flow10
2
- Feature: Pio::VendorAction
2
+ Feature: VendorAction
3
3
 
4
4
  Scenario: new(1)
5
- When I try to create an OpenFlow action with:
5
+ When I create an OpenFlow action with:
6
6
  """
7
- Pio::VendorAction.new(1)
7
+ Pio::OpenFlow10::VendorAction.new(1)
8
8
  """
9
- Then it should finish successfully
10
- And the action has the following fields and values:
9
+ Then the action has the following fields and values:
11
10
  | field | value |
12
11
  | action_type.to_hex | 0xffff |
13
12
  | length | 8 |
@@ -1,27 +1,25 @@
1
1
  @open_flow13
2
- Feature: Apply-Actions instruction.
2
+ Feature: Apply
3
3
  Scenario: new()
4
- When I try to create an OpenFlow instruction with:
4
+ When I create an OpenFlow instruction with:
5
5
  """
6
6
  Pio::Apply.new
7
7
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
10
- | field | value |
11
- | class | Pio::Apply |
12
- | instruction_type | 4 |
13
- | instruction_length | 8 |
14
- | actions | [] |
8
+ Then the message has the following fields and values:
9
+ | field | value |
10
+ | class | Pio::OpenFlow13::Apply |
11
+ | instruction_type | 4 |
12
+ | instruction_length | 8 |
13
+ | actions | [] |
15
14
 
16
15
  Scenario: new(SendOutPort.new(1))
17
- When I try to create an OpenFlow instruction with:
16
+ When I create an OpenFlow instruction with:
18
17
  """
19
- Pio::Apply.new(SendOutPort.new(1))
18
+ Pio::Apply.new(Pio::SendOutPort.new(1))
20
19
  """
21
- Then it should finish successfully
22
- And the message has the following fields and values:
20
+ Then the message has the following fields and values:
23
21
  | field | value |
24
- | class | Pio::Apply |
22
+ | class | Pio::OpenFlow13::Apply |
25
23
  | instruction_type | 4 |
26
24
  | instruction_length | 24 |
27
25
  | actions.size | 1 |
@@ -29,11 +27,10 @@ Feature: Apply-Actions instruction.
29
27
  | actions.at(0).port | 1 |
30
28
 
31
29
  Scenario: read
32
- When I try to parse a file named "open_flow13/apply_actions.raw" with "Pio::Apply" class
33
- Then it should finish successfully
34
- And the message has the following fields and values:
30
+ When I parse a file named "open_flow13/apply_actions.raw" with "Pio::Apply" class
31
+ Then the message has the following fields and values:
35
32
  | field | value |
36
- | class | Pio::Apply |
33
+ | class | Pio::OpenFlow13::Apply |
37
34
  | instruction_type | 4 |
38
35
  | instruction_length | 24 |
39
36
  | actions.size | 1 |
@@ -1,19 +1,16 @@
1
1
  @open_flow13
2
- Feature: Pio::Error::BadRequest
2
+ Feature: Error::BadRequest
3
3
 
4
4
  Request was not understood error.
5
5
 
6
6
  Scenario: new (raw_data = Echo request 1.0)
7
- When I try to create an OpenFlow message with:
7
+ When I create an OpenFlow message with:
8
8
  """
9
9
  Pio::Error::BadRequest.new(raw_data: Pio::OpenFlow10::Echo::Request.new.to_binary)
10
10
  """
11
- Then it should finish successfully
12
- And the message has the following fields and values:
11
+ Then the message has the following fields and values:
13
12
  | field | value |
14
- | ofp_version | 4 |
15
- | message_type | 1 |
16
- | message_length | 20 |
13
+ | version | 4 |
17
14
  | transaction_id | 0 |
18
15
  | xid | 0 |
19
16
  | error_type | :bad_request |
@@ -21,13 +18,10 @@ Feature: Pio::Error::BadRequest
21
18
  | raw_data.length | 8 |
22
19
 
23
20
  Scenario: read
24
- When I try to parse a file named "open_flow13/bad_request.raw" with "Pio::Error::BadRequest" class
25
- Then it should finish successfully
26
- And the message has the following fields and values:
21
+ When I parse a file named "open_flow13/bad_request.raw" with "Pio::Error::BadRequest" class
22
+ Then the message has the following fields and values:
27
23
  | field | value |
28
- | ofp_version | 4 |
29
- | message_type | 1 |
30
- | message_length | 20 |
24
+ | version | 4 |
31
25
  | transaction_id | 0 |
32
26
  | xid | 0 |
33
27
  | error_type | :bad_request |
@@ -0,0 +1,13 @@
1
+ @open_flow13
2
+ Feature: CopyTtlInwards
3
+
4
+ Copies TTL "inwards" -- from outermost to next-to-outermost
5
+
6
+ Scenario: new
7
+ When I create an OpenFlow action with:
8
+ """
9
+ Pio::CopyTtlInwards.new
10
+ """
11
+ Then the action has the following fields and values:
12
+ | field | value |
13
+ | action_type | 12 |
@@ -0,0 +1,13 @@
1
+ @open_flow13
2
+ Feature: CopyTtlOutwards
3
+
4
+ Copies TTL "outwards" -- from next-to-outermost to outermost
5
+
6
+ Scenario: new
7
+ When I create an OpenFlow action with:
8
+ """
9
+ Pio::CopyTtlOutwards.new
10
+ """
11
+ Then the action has the following fields and values:
12
+ | field | value |
13
+ | action_type | 11 |
@@ -0,0 +1,11 @@
1
+ @open_flow13
2
+ Feature: DecrementIpTtl
3
+
4
+ Scenario: new
5
+ When I create an OpenFlow action with:
6
+ """
7
+ Pio::DecrementIpTtl.new
8
+ """
9
+ Then the action has the following fields and values:
10
+ | field | value |
11
+ | action_type | 24 |
@@ -1,86 +1,60 @@
1
1
  @open_flow13
2
- Feature: Pio::Echo::Reply
2
+ Feature: Echo::Reply
3
3
  Scenario: new
4
- When I try to create an OpenFlow message with:
4
+ When I create an OpenFlow message with:
5
5
  """
6
6
  Pio::Echo::Reply.new
7
7
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
8
+ Then the message has the following fields and values:
10
9
  | field | value |
11
- | ofp_version | 4 |
12
- | message_type | 3 |
13
- | message_length | 8 |
10
+ | version | 4 |
14
11
  | transaction_id | 0 |
15
12
  | xid | 0 |
16
13
  | body | |
17
14
  | user_data | |
18
15
 
19
16
  Scenario: new(transaction_id: 123)
20
- When I try to create an OpenFlow message with:
17
+ When I create an OpenFlow message with:
21
18
  """
22
19
  Pio::Echo::Reply.new(transaction_id: 123)
23
20
  """
24
- Then it should finish successfully
25
- And the message has the following fields and values:
21
+ Then the message has the following fields and values:
26
22
  | field | value |
27
- | ofp_version | 4 |
28
- | message_type | 3 |
29
- | message_length | 8 |
23
+ | version | 4 |
30
24
  | transaction_id | 123 |
31
25
  | xid | 123 |
32
26
  | body | |
33
27
  | user_data | |
34
28
 
35
29
  Scenario: new(body: 'echo reply body')
36
- When I try to create an OpenFlow message with:
30
+ When I create an OpenFlow message with:
37
31
  """
38
32
  Pio::Echo::Reply.new(body: 'echo reply body')
39
33
  """
40
- Then it should finish successfully
41
- And the message has the following fields and values:
34
+ Then the message has the following fields and values:
42
35
  | field | value |
43
- | ofp_version | 4 |
44
- | message_type | 3 |
45
- | message_length | 23 |
36
+ | version | 4 |
46
37
  | transaction_id | 0 |
47
38
  | xid | 0 |
48
39
  | body | echo reply body |
49
40
  | user_data | echo reply body |
50
41
 
51
- Scenario: new(unknown_attr: 'foo') and error
52
- When I try to create an OpenFlow message with:
53
- """
54
- Pio::Echo::Reply.new(unknown_attr: 'foo')
55
- """
56
- Then it should fail with "RuntimeError", "Unknown option: unknown_attr"
57
-
58
42
  Scenario: read (no message body)
59
- When I try to parse a file named "open_flow13/echo_reply_no_body.raw" with "Pio::Echo::Reply" class
60
- Then it should finish successfully
61
- And the message has the following fields and values:
43
+ When I parse a file named "open_flow13/echo_reply_no_body.raw" with "Pio::Echo::Reply" class
44
+ Then the message has the following fields and values:
62
45
  | field | value |
63
- | ofp_version | 4 |
64
- | message_type | 3 |
65
- | message_length | 8 |
46
+ | version | 4 |
66
47
  | transaction_id | 0 |
67
48
  | xid | 0 |
68
49
  | body | |
69
50
  | user_data | |
70
51
 
71
52
  Scenario: read
72
- When I try to parse a file named "open_flow13/echo_reply_body.raw" with "Pio::Echo::Reply" class
73
- Then it should finish successfully
74
- And the message has the following fields and values:
53
+ When I parse a file named "open_flow13/echo_reply_body.raw" with "Pio::Echo::Reply" class
54
+ Then the message has the following fields and values:
75
55
  | field | value |
76
- | ofp_version | 4 |
77
- | message_type | 3 |
78
- | message_length | 28 |
56
+ | version | 4 |
79
57
  | transaction_id | 0 |
80
58
  | xid | 0 |
81
59
  | body | hogehogehogehogehoge |
82
60
  | user_data | hogehogehogehogehoge |
83
-
84
- Scenario: parse error
85
- When I try to parse a file named "open_flow10/features_request.raw" with "Pio::Echo::Reply" class
86
- Then it should fail with "Pio::ParseError", "Invalid OpenFlow13 Echo Reply message."
@@ -1,86 +1,60 @@
1
1
  @open_flow13
2
- Feature: Pio::Echo::Request
2
+ Feature: Echo::Request
3
3
  Scenario: new
4
- When I try to create an OpenFlow message with:
4
+ When I create an OpenFlow message with:
5
5
  """
6
6
  Pio::Echo::Request.new
7
7
  """
8
- Then it should finish successfully
9
- And the message has the following fields and values:
8
+ Then the message has the following fields and values:
10
9
  | field | value |
11
- | ofp_version | 4 |
12
- | message_type | 2 |
13
- | message_length | 8 |
10
+ | version | 4 |
14
11
  | transaction_id | 0 |
15
12
  | xid | 0 |
16
13
  | body | |
17
14
  | user_data | |
18
15
 
19
16
  Scenario: new(transaction_id: 123)
20
- When I try to create an OpenFlow message with:
17
+ When I create an OpenFlow message with:
21
18
  """
22
19
  Pio::Echo::Request.new(transaction_id: 123)
23
20
  """
24
- Then it should finish successfully
25
- And the message has the following fields and values:
21
+ Then the message has the following fields and values:
26
22
  | field | value |
27
- | ofp_version | 4 |
28
- | message_type | 2 |
29
- | message_length | 8 |
23
+ | version | 4 |
30
24
  | transaction_id | 123 |
31
25
  | xid | 123 |
32
26
  | body | |
33
27
  | user_data | |
34
28
 
35
29
  Scenario: new(body: 'echo request body')
36
- When I try to create an OpenFlow message with:
30
+ When I create an OpenFlow message with:
37
31
  """
38
32
  Pio::Echo::Request.new(body: 'echo request body')
39
33
  """
40
- Then it should finish successfully
41
- And the message has the following fields and values:
34
+ Then the message has the following fields and values:
42
35
  | field | value |
43
- | ofp_version | 4 |
44
- | message_type | 2 |
45
- | message_length | 25 |
36
+ | version | 4 |
46
37
  | transaction_id | 0 |
47
38
  | xid | 0 |
48
39
  | body | echo request body |
49
40
  | user_data | echo request body |
50
41
 
51
- Scenario: new(unknown_attr: 'foo') and error
52
- When I try to create an OpenFlow message with:
53
- """
54
- Pio::Echo::Request.new(unknown_attr: 'foo')
55
- """
56
- Then it should fail with "RuntimeError", "Unknown option: unknown_attr"
57
-
58
42
  Scenario: read (no message body)
59
- When I try to parse a file named "open_flow13/echo_request_no_body.raw" with "Pio::Echo::Request" class
60
- Then it should finish successfully
61
- And the message has the following fields and values:
43
+ When I parse a file named "open_flow13/echo_request_no_body.raw" with "Pio::Echo::Request" class
44
+ Then the message has the following fields and values:
62
45
  | field | value |
63
- | ofp_version | 4 |
64
- | message_type | 2 |
65
- | message_length | 8 |
46
+ | version | 4 |
66
47
  | transaction_id | 0 |
67
48
  | xid | 0 |
68
49
  | body | |
69
50
  | user_data | |
70
51
 
71
52
  Scenario: read
72
- When I try to parse a file named "open_flow13/echo_request_body.raw" with "Pio::Echo::Request" class
73
- Then it should finish successfully
74
- And the message has the following fields and values:
53
+ When I parse a file named "open_flow13/echo_request_body.raw" with "Pio::Echo::Request" class
54
+ Then the message has the following fields and values:
75
55
  | field | value |
76
- | ofp_version | 4 |
77
- | message_type | 2 |
78
- | message_length | 28 |
56
+ | version | 4 |
79
57
  | transaction_id | 0 |
80
58
  | xid | 0 |
81
59
  | body | hogehogehogehogehoge |
82
60
  | user_data | hogehogehogehogehoge |
83
-
84
- Scenario: parse error
85
- When I try to parse a file named "open_flow10/features_request.raw" with "Pio::Echo::Request" class
86
- Then it should fail with "Pio::ParseError", "Invalid OpenFlow13 Echo Request message."